diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index 589a3be796a..00eea665972 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -592,10 +592,6 @@ } }, - "project": { - "label": "{count, plural, one {Project} other {Projects}}" - }, - "view": { "label": "{count, plural, one {View} other {Views}}", "create": { @@ -672,6 +668,10 @@ }, "workspace_projects": { + "label": "{count, plural, one {Project} other {Projects}}", + "create": { + "label": "Add Project" + }, "network": { "private": { "title": "Private", @@ -734,6 +734,9 @@ "filter": { "title": "No matching projects", "description": "No projects detected with the matching criteria. \n Create a new project instead." + }, + "search": { + "description": "No projects detected with the matching criteria.\nCreate a new project instead" } } }, diff --git a/web/ce/components/projects/mobile-header.tsx b/web/ce/components/projects/mobile-header.tsx index 3804721600e..9e51c679991 100644 --- a/web/ce/components/projects/mobile-header.tsx +++ b/web/ce/components/projects/mobile-header.tsx @@ -4,6 +4,8 @@ import { observer } from "mobx-react"; import { useParams } from "next/navigation"; // icons import { ChevronDown, ListFilter } from "lucide-react"; +// i18n +import { useTranslation } from "@plane/i18n"; // types import { TProjectFilters } from "@plane/types"; // hooks @@ -15,6 +17,8 @@ import { calculateTotalFilters } from "@/helpers/filter.helper"; import { useMember, useProjectFilter } from "@/hooks/store"; export const ProjectsListMobileHeader = observer(() => { + // i18n + const { t } = useTranslation(); // router const { workspaceSlug } = useParams(); const { @@ -63,12 +67,12 @@ export const ProjectsListMobileHeader = observer(() => {
} - title="Filters" + title={t("common.filters")} placement="bottom-end" menuButton={
- Filters + {t("common.filters")}
} diff --git a/web/core/components/project/applied-filters/root.tsx b/web/core/components/project/applied-filters/root.tsx index 385ffab7346..2069aa28bf0 100644 --- a/web/core/components/project/applied-filters/root.tsx +++ b/web/core/components/project/applied-filters/root.tsx @@ -1,6 +1,8 @@ "use client"; import { X } from "lucide-react"; +// i18n +import { useTranslation } from "@plane/i18n"; // types import { TProjectAppliedDisplayFilterKeys, TProjectFilters } from "@plane/types"; // ui @@ -30,6 +32,7 @@ const MEMBERS_FILTERS = ["lead", "members"]; const DATE_FILTERS = ["created_at"]; export const ProjectAppliedFiltersList: React.FC = (props) => { + const { t } = useTranslation(); const { appliedFilters, appliedDisplayFilters, @@ -95,7 +98,7 @@ export const ProjectAppliedFiltersList: React.FC = (props) => { {/* Applied display filters */} {appliedDisplayFilters.length > 0 && ( - Projects + {t("projects.label", { count: 2 })} = (props) => { {isEditingAllowed && ( diff --git a/web/core/components/project/card-list.tsx b/web/core/components/project/card-list.tsx index 3d0fa1fae74..06509b868fc 100644 --- a/web/core/components/project/card-list.tsx +++ b/web/core/components/project/card-list.tsx @@ -83,11 +83,11 @@ export const ProjectCardList = observer((props: TProjectCardListProps) => { className="mx-auto h-36 w-36 sm:h-48 sm:w-48" alt="No matching projects" /> -
No matching projects
+
{t("workspace_projects.empty_state.filter.title")}

{searchQuery.trim() === "" - ? "Remove the filters to see all projects" - : "No projects detected with the matching criteria.\nCreate a new project instead"} + ? t("workspace_projects.empty_state.filter.description") + : t("workspace_projects.empty_state.search.description")}

diff --git a/web/core/components/project/filters.tsx b/web/core/components/project/filters.tsx index 2465bbc3693..54ae3a75266 100644 --- a/web/core/components/project/filters.tsx +++ b/web/core/components/project/filters.tsx @@ -2,6 +2,8 @@ import { useCallback } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; import { ListFilter } from "lucide-react"; +// i18n +import { useTranslation } from "@plane/i18n"; // plane types import { TProjectFilters } from "@plane/types"; // plane utils @@ -22,6 +24,8 @@ type Props = { }; const HeaderFilters = observer(({ filterMenuButton, isMobile, classname = "", filterClassname = "" }: Props) => { + // i18n + const { t } = useTranslation(); // router const { workspaceSlug } = useParams(); const { @@ -72,7 +76,7 @@ const HeaderFilters = observer(({ filterMenuButton, isMobile, classname = "", fi
} - title="Filters" + title={t("common.filters")} placement="bottom-end" isFiltersApplied={isFiltersApplied} menuButton={filterMenuButton || null} diff --git a/web/core/components/project/header.tsx b/web/core/components/project/header.tsx index b79f68d68fc..a905576cf7d 100644 --- a/web/core/components/project/header.tsx +++ b/web/core/components/project/header.tsx @@ -3,6 +3,8 @@ import { observer } from "mobx-react"; import { usePathname } from "next/navigation"; import { Briefcase } from "lucide-react"; +// i18n +import { useTranslation } from "@plane/i18n"; // ui import { Breadcrumbs, Button, Header } from "@plane/ui"; // components @@ -16,6 +18,8 @@ import HeaderFilters from "./filters"; import { ProjectSearch } from "./search-projects"; export const ProjectsBaseHeader = observer(() => { + // i18n + const { t } = useTranslation(); // store hooks const { toggleCreateProjectModal } = useCommandPalette(); const { setTrackElement } = useEventTracker(); @@ -35,7 +39,12 @@ export const ProjectsBaseHeader = observer(() => { } />} + link={ + } + /> + } /> {isArchived && } />} @@ -54,7 +63,8 @@ export const ProjectsBaseHeader = observer(() => { }} className="items-center gap-1" > - Add Project + {t("workspace_projects.create.label")} + {t("workspace_projects.label", { count: 1 })} ) : ( <> diff --git a/web/core/components/project/project-feature-update.tsx b/web/core/components/project/project-feature-update.tsx index e94b69dd58b..a6e4536446c 100644 --- a/web/core/components/project/project-feature-update.tsx +++ b/web/core/components/project/project-feature-update.tsx @@ -35,8 +35,9 @@ export const ProjectFeatureUpdate: FC = observer((props) => {
- {t("congrats")}! {t("project.label", { count: 1 })} {" "} -

{currentProjectDetails.name}

{t("created").toLowerCase()}. + {t("congrats")}! {t("workspace_projects.label", { count: 1 })}{" "} +

{currentProjectDetails.name}

{" "} + {t("created").toLowerCase()}.