Skip to content

Commit 75af5ca

Browse files
committed
feat: add multi-language translations for task-related terms and project actions
1 parent b6cded9 commit 75af5ca

File tree

20 files changed

+199
-28
lines changed

20 files changed

+199
-28
lines changed

apps/web/app/[locale]/timesheet/[memberId]/components/AddTaskModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export function AddTaskModal({ closeModal, isOpen }: IAddTaskModalProps) {
6060
<Modal
6161
isOpen={isOpen}
6262
closeModal={closeModal}
63-
title={'+ Add Time Entry'}
63+
title={`+ ${t('common.ADD_TIME_ENTRY')}`}
6464
showCloseIcon
6565
className="bg-light--theme-light dark:bg-dark--theme-light p-5 rounded-xl w-full md:w-40 md:min-w-[32rem] justify-start h-[auto]"
6666
titleClass="font-bold flex justify-start w-full">

apps/web/app/[locale]/timesheet/[memberId]/components/TimesheetAction.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const TimesheetButton = ({ className, icon, onClick, title, disabled }: I
2727
}
2828

2929

30-
export type StatusType = "Pending" | "Approved" | "Denied";
30+
export type StatusType = "PENDING" | "APPROVED" | "Denied";
3131
export type StatusAction = "Deleted" | "Approved" | "Denied";
3232

3333

@@ -36,12 +36,12 @@ export type StatusAction = "Deleted" | "Approved" | "Denied";
3636
export const getTimesheetButtons = (status: StatusType, t: TranslationHooks, disabled: boolean, onClick: (action: StatusAction) => void) => {
3737

3838
const buttonsConfig: Record<StatusType, { icon: JSX.Element; title: string; action: StatusAction }[]> = {
39-
Pending: [
39+
PENDING: [
4040
{ icon: <FaClipboardCheck className="!text-[#2932417c] dark:!text-gray-400 rounded" />, title: t('pages.timesheet.TIMESHEET_ACTION_APPROVE_SELECTED'), action: "Approved" },
4141
{ icon: <IoClose className="!bg-[#2932417c] dark:!bg-gray-400 rounded" />, title: t('pages.timesheet.TIMESHEET_ACTION_REJECT_SELECTED'), action: "Denied" },
4242
{ icon: <RiDeleteBin6Fill className="!text-[#2932417c] dark:!text-gray-400 rounded" />, title: t('pages.timesheet.TIMESHEET_ACTION_DELETE_SELECTED'), action: "Deleted" }
4343
],
44-
Approved: [
44+
APPROVED: [
4545
{ icon: <IoClose className="!bg-[#2932417c] dark:!bg-gray-400 rounded" />, title: t('pages.timesheet.TIMESHEET_ACTION_REJECT_SELECTED'), action: "Denied" },
4646
{ icon: <RiDeleteBin6Fill className="!text-[#2932417c] dark:!text-gray-400 rounded" />, title: t('pages.timesheet.TIMESHEET_ACTION_DELETE_SELECTED'), action: "Deleted" }
4747
],

apps/web/app/[locale]/timesheet/[memberId]/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,15 @@ const TimeSheet = React.memo(function TimeSheetPage({ params }: { params: { memb
145145
<div className="flex items-center justify-between w-full gap-6 pt-4">
146146
<TimesheetCard
147147
count={statusTimesheet.PENDING.length}
148-
title="Pending Tasks"
148+
title={t('common.PENDING_TASKS')}
149149
description="Tasks waiting for your approval"
150150
icon={<GrTask className="font-bold" />}
151151
classNameIcon="bg-[#FBB650] shadow-[#fbb75095]"
152152
onClick={() => openTimesheetDetail()}
153153
/>
154154
<TimesheetCard
155155
hours={`${hours}:${minute}`}
156-
title="Men Hours"
156+
title={t('common.MEN_HOURS')}
157157
date={`${moment(dateRange.from).format('YYYY-MM-DD')} - ${moment(dateRange.to).format('YYYY-MM-DD')}`}
158158
icon={<Clock className="font-bold" />}
159159
classNameIcon="bg-[#3D5A80] shadow-[#3d5a809c] "
@@ -164,7 +164,7 @@ const TimeSheet = React.memo(function TimeSheetPage({ params }: { params: { memb
164164
.map(entry => entry.employee.id)
165165
.filter((id, index, array) => array.indexOf(id) === index)
166166
.length}
167-
title="Members Worked"
167+
title={t('common.MEMBERS_WORKED')}
168168
description="People worked since last time"
169169
icon={<User2 className="font-bold" />}
170170
classNameIcon="bg-[#30B366] shadow-[#30b3678f]"

apps/web/components/nav-projects.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export function NavProjects({
4141
const t = useTranslations();
4242
return userManagedTeams && userManagedTeams.length > 0 ? (
4343
<SidebarGroup className="group-data-[collapsible=icon]:hidden">
44-
<SidebarGroupLabel>Projects</SidebarGroupLabel>
44+
<SidebarGroupLabel>{t('sidebar.PROJECTS')}</SidebarGroupLabel>
4545
<SidebarMenu className="w-full max-w-[230px]">
4646
{projects && projects.length ? (
4747
<>
@@ -67,16 +67,16 @@ export function NavProjects({
6767
>
6868
<DropdownMenuItem>
6969
<Folder className="text-muted-foreground" />
70-
<span>View Project</span>
70+
<span>{t('common.VIEW_PROJECT')}</span>
7171
</DropdownMenuItem>
7272
<DropdownMenuItem>
7373
<Forward className="text-muted-foreground" />
74-
<span>Share Project</span>
74+
<span>{t('common.SHARE_PROJECT')}</span>
7575
</DropdownMenuItem>
7676
<DropdownMenuSeparator />
7777
<DropdownMenuItem>
7878
<Trash2 className="text-muted-foreground" />
79-
<span>Delete Project</span>
79+
<span>{t('common.DELETE_PROJECT')}</span>
8080
</DropdownMenuItem>
8181
</DropdownMenuContent>
8282
</DropdownMenu>

apps/web/components/pages/task/details-section/blocks/task-progress.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,14 @@ const TaskProgress = () => {
7575
const matchingMembers:
7676
| OT_Member[]
7777
| undefined = activeTeam?.members.filter((member) =>
78-
task?.members.some((taskMember) => taskMember.id === member.employeeId)
79-
);
78+
task?.members.some((taskMember) => taskMember.id === member.employeeId)
79+
);
8080

8181
const usersTaskArray:
8282
| ITasksTimesheet[]
8383
| undefined = matchingMembers
84-
?.flatMap((obj) => obj.totalWorkedTasks)
85-
.filter((taskObj) => taskObj?.id === task?.id);
84+
?.flatMap((obj) => obj.totalWorkedTasks)
85+
.filter((taskObj) => taskObj?.id === task?.id);
8686

8787
const usersTotalTimeInSeconds: number | undefined = usersTaskArray?.reduce(
8888
(totalDuration, item) => totalDuration + item.duration,
@@ -100,9 +100,9 @@ const TaskProgress = () => {
100100

101101
const remainingTime: number =
102102
task?.estimate === null ||
103-
task?.estimate === 0 ||
104-
task?.estimate === undefined ||
105-
usersTotalTimeInSeconds === undefined
103+
task?.estimate === 0 ||
104+
task?.estimate === undefined ||
105+
usersTotalTimeInSeconds === undefined
106106
? 0
107107
: task?.estimate - usersTotalTimeInSeconds;
108108

@@ -121,7 +121,7 @@ const TaskProgress = () => {
121121
isAuthUser={true}
122122
activeAuthTask={true}
123123
showPercents={true}
124-
// memberInfo={memberInfo}
124+
// memberInfo={memberInfo}
125125
/>
126126
</TaskRow>
127127
<TaskRow labelTitle={t('pages.taskDetails.TOTAL_TIME')}>
@@ -169,7 +169,7 @@ const TaskProgress = () => {
169169
}
170170
className="text-xs"
171171
>
172-
Show More
172+
{t('common.SHOW_MORE')}
173173
</button>
174174
</div>
175175
)}
@@ -201,8 +201,8 @@ const IndividualMembersTotalTime = ({
201201
const matchingMembers:
202202
| OT_Member[]
203203
| undefined = activeTeam?.members.filter((member) =>
204-
task?.members.some((taskMember) => taskMember.id === member.employeeId)
205-
);
204+
task?.members.some((taskMember) => taskMember.id === member.employeeId)
205+
);
206206

207207
const findUserTotalWorked = (user: OT_Member, id: string | undefined) => {
208208
return (

apps/web/components/sidebar-opt-in-form.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import { Form, FormControl, FormField, FormItem, FormMessage } from '@/component
99
import { ToastAction } from './ui/toast';
1010
import { toast } from './ui/use-toast';
1111
import { useState } from 'react';
12+
import { useTranslations } from 'next-intl';
1213

1314
export function SidebarOptInForm() {
15+
const t = useTranslations();
1416
const { state } = useSidebar();
1517
const [isLoading, setLoading] = useState(false);
1618
const subscribeFormSchema = z
@@ -73,9 +75,9 @@ export function SidebarOptInForm() {
7375
<Card className="p-1 mt-auto shadow-none">
7476
<form onSubmit={form.handleSubmit(onSubmit)}>
7577
<CardHeader className="flex flex-col gap-1 p-4 pb-0">
76-
<CardTitle className="text-sm font-medium">Subscribe to our newsletter</CardTitle>
78+
<CardTitle className="text-sm font-medium">{t('common.SUBSCRIBE_NEWSLETTER')}</CardTitle>
7779
<CardDescription className="text-xs">
78-
Opt-in to receive updates and news about Ever Teams.
80+
{t('common.OPT_IN_UPDATES')}
7981
</CardDescription>
8082
</CardHeader>
8183
<CardContent className="grid gap-2.5 p-4">

apps/web/lib/components/Kanban.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -299,13 +299,13 @@ export const EmptyKanbanDroppable = ({
299299
className="hover:font-medium p-1.5 text-sm cursor-pointer"
300300
onClick={() => toggleColumn(title, false)}
301301
>
302-
Collapse Column
302+
{t('common.COLLAPSE_COLUMN')}
303303
</div>
304304
<div
305305
className="hover:font-medium p-1.5 text-sm cursor-pointer"
306306
onClick={editOpenModal}
307307
>
308-
Edit Status
308+
{t('common.EDIT_STATUS')}
309309
</div>
310310
</PopoverContent>
311311
</Popover>
@@ -423,10 +423,10 @@ const KanbanDraggableHeader = ({
423423
className="hover:font-medium p-1.5 text-sm cursor-pointer"
424424
onClick={() => toggleColumn(title, true)}
425425
>
426-
Collapse Column
426+
{t('common.COLLAPSE_COLUMN')}
427427
</div>
428428
<div className="hover:font-medium p-1.5 text-sm cursor-pointer" onClick={openModal}>
429-
Edit Status
429+
{t('common.EDIT_STATUS')}
430430
</div>
431431
</PopoverContent>
432432
</Popover>

apps/web/locales/ar.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
{
22
"TITLE": "إيفر تيمز",
33
"common": {
4+
"PENDING_TASKS": "المهام المعلقة",
5+
"SHOW_MORE": "عرض المزيد",
6+
"TASKS": "المهام",
7+
"MEN_HOURS": "ساعات العمل",
8+
"MEMBERS_WORKED": "الأعضاء الذين عملوا",
9+
"COLLAPSE_COLUMN": "طي العمود",
10+
"EDIT_STATUS": "تعديل الحالة",
11+
"ADD_TIME_ENTRY": "إضافة إدخال وقت",
12+
"OPT_IN_UPDATES": "اشترك لتلقي التحديثات والأخبار حول Ever Teams.",
13+
"SUBSCRIBE_NEWSLETTER": "اشترك في النشرة الإخبارية",
14+
"VIEW_PROJECT": "عرض المشروع",
15+
"SHARE_PROJECT": "مشاركة المشروع",
16+
"DELETE_PROJECT": "حذف المشروع",
417
"DELETE_CONFIRMATION": "هل أنت متأكد أنك تريد الحذف؟",
518
"IRREVERSIBLE_ACTION_WARNING": "هذا الإجراء لا رجعة فيه. ستفقد جميع البيانات ذات الصلة.",
619
"SHIFT_TIMING": "توقيت العمل",

apps/web/locales/bg.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "Бюджет на проекта"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "Чакащи задачи",
23+
"SHOW_MORE": "Покажи още",
24+
"TASKS": "Задачи",
25+
"MEN_HOURS": "Човеко-часове",
26+
"MEMBERS_WORKED": "Работили членове",
27+
"COLLAPSE_COLUMN": "Свий колона",
28+
"EDIT_STATUS": "Редактирай статус",
29+
"ADD_TIME_ENTRY": "Добавяне на запис на време",
30+
"OPT_IN_UPDATES": "Абонирайте се за актуализации и новини за Ever Teams.",
31+
"SUBSCRIBE_NEWSLETTER": "Абонирайте се за нашия бюлетин",
32+
"VIEW_PROJECT": "Преглед на проекта",
33+
"SHARE_PROJECT": "Споделяне на проекта",
34+
"DELETE_PROJECT": "Изтриване на проекта",
2235
"DELETE_CONFIRMATION": "Сигурни ли сте, че искате да изтриете това?",
2336
"IRREVERSIBLE_ACTION_WARNING": "Това действие е необратимо. Всички свързани данни ще бъдат изгубени.",
2437
"SHIFT_TIMING": "Смяна на времето",

apps/web/locales/de.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "Projektbudget"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "Ausstehende Aufgaben",
23+
"SHOW_MORE": "Mehr anzeigen",
24+
"TASKS": "Aufgaben",
25+
"MEN_HOURS": "Mannstunden",
26+
"MEMBERS_WORKED": "Mitglieder gearbeitet",
27+
"COLLAPSE_COLUMN": "Spalte einklappen",
28+
"EDIT_STATUS": "Status bearbeiten",
29+
"ADD_TIME_ENTRY": "Zeiteintrag hinzufügen",
30+
"OPT_IN_UPDATES": "Abonnieren Sie Updates und Nachrichten zu Ever Teams.",
31+
"SUBSCRIBE_NEWSLETTER": "Abonnieren Sie unseren Newsletter",
32+
"VIEW_PROJECT": "Projekt anzeigen",
33+
"SHARE_PROJECT": "Projekt teilen",
34+
"DELETE_PROJECT": "Projekt löschen",
2235
"DELETE_CONFIRMATION": "Sind Sie sicher, dass Sie dies löschen möchten?",
2336
"IRREVERSIBLE_ACTION_WARNING": "Diese Aktion ist irreversibel. Alle zugehörigen Daten gehen verloren.",
2437
"SHIFT_TIMING": "Schichtzeiten",

apps/web/locales/en.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "Project Budget"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "Pending Tasks",
23+
"SHOW_MORE": "Show More",
24+
"TASKS": "Tasks",
25+
"MEN_HOURS": "Men Hours",
26+
"MEMBERS_WORKED": "Members Worked",
27+
"COLLAPSE_COLUMN": "Collapse Column",
28+
"EDIT_STATUS": "Edit Status",
29+
"ADD_TIME_ENTRY": "Add Time Entry",
30+
"OPT_IN_UPDATES": "Opt-in to receive updates and news about Ever Teams.",
31+
"SUBSCRIBE_NEWSLETTER": "Subscribe to our newsletter",
32+
"VIEW_PROJECT": "View Project",
33+
"SHARE_PROJECT": "Share Project",
34+
"DELETE_PROJECT": "Delete Project",
2235
"DELETE_CONFIRMATION": "Are you sure you want to delete this?",
2336
"IRREVERSIBLE_ACTION_WARNING": "This action is irreversible. All related data will be lost.",
2437
"SHIFT_TIMING": "Shift Timing",

apps/web/locales/es.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "Presupuesto del Proyecto"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "Tareas pendientes",
23+
"SHOW_MORE": "Mostrar más",
24+
"TASKS": "Tareas",
25+
"MEN_HOURS": "Horas Hombre",
26+
"MEMBERS_WORKED": "Miembros que trabajaron",
27+
"COLLAPSE_COLUMN": "Colapsar columna",
28+
"EDIT_STATUS": "Editar estado",
29+
"ADD_TIME_ENTRY": "Agregar entrada de tiempo",
30+
"OPT_IN_UPDATES": "Opta por recibir actualizaciones y noticias sobre Ever Teams.",
31+
"SUBSCRIBE_NEWSLETTER": "Suscríbete a nuestro boletín",
32+
"VIEW_PROJECT": "Ver proyecto",
33+
"SHARE_PROJECT": "Compartir proyecto",
34+
"DELETE_PROJECT": "Eliminar proyecto",
2235
"DELETE_CONFIRMATION": "¿Estás seguro de que deseas eliminar esto?",
2336
"IRREVERSIBLE_ACTION_WARNING": "Esta acción es irreversible. Todos los datos relacionados se perderán.",
2437
"SHIFT_TIMING": "Horario de turno",

apps/web/locales/fr.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "Budget du projet"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "Tâches en attente",
23+
"SHOW_MORE": "Voir plus",
24+
"TASKS": "Tâches",
25+
"MEN_HOURS": "Heures Homme",
26+
"MEMBERS_WORKED": "Membres ayant travaillé",
27+
"COLLAPSE_COLUMN": "Réduire la colonne",
28+
"EDIT_STATUS": "Modifier le statut",
29+
"ADD_TIME_ENTRY": "Ajouter une entrée de temps",
30+
"OPT_IN_UPDATES": "Acceptez de recevoir des mises à jour et des nouvelles sur Ever Teams.",
31+
"SUBSCRIBE_NEWSLETTER": "Abonnez-vous à notre newsletter",
32+
"VIEW_PROJECT": "Voir le projet",
33+
"SHARE_PROJECT": "Partager le projet",
34+
"DELETE_PROJECT": "Supprimer le projet",
2235
"DELETE_CONFIRMATION": "Êtes-vous sûr de vouloir supprimer cela ?",
2336
"IRREVERSIBLE_ACTION_WARNING": "Cette action est irréversible. Toutes les données associées seront perdues.",
2437
"SHIFT_TIMING": "Temps de poste",

apps/web/locales/he.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "תקציב פרויקט"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "משימות ממתינות",
23+
"SHOW_MORE": "הצג עוד",
24+
"TASKS": "משימות",
25+
"MEN_HOURS": "שעות עבודה",
26+
"MEMBERS_WORKED": "חברים שעבדו",
27+
"COLLAPSE_COLUMN": "כווץ עמודה",
28+
"EDIT_STATUS": "ערוך סטטוס",
29+
"ADD_TIME_ENTRY": "הוסף כניסת זמן",
30+
"OPT_IN_UPDATES": "בחר לקבל עדכונים וחדשות על Ever Teams.",
31+
"SUBSCRIBE_NEWSLETTER": "הירשם לניוזלטר שלנו",
32+
"VIEW_PROJECT": "צפה בפרויקט",
33+
"SHARE_PROJECT": "שתף פרויקט",
34+
"DELETE_PROJECT": "מחק פרויקט",
2235
"DELETE_CONFIRMATION": "האם אתה בטוח שברצונך למחוק?",
2336
"IRREVERSIBLE_ACTION_WARNING": "פעולה זו בלתי הפיכה. כל הנתונים הקשורים יימחקו.",
2437
"SHIFT_TIMING": "זמן משמרת",

apps/web/locales/it.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "Budget di progetto"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "Compiti in sospeso",
23+
"SHOW_MORE": "Mostra di più",
24+
"TASKS": "Compiti",
25+
"MEN_HOURS": "Ore Uomo",
26+
"MEMBERS_WORKED": "Membri che hanno lavorato",
27+
"COLLAPSE_COLUMN": "Comprimi colonna",
28+
"EDIT_STATUS": "Modifica stato",
29+
"ADD_TIME_ENTRY": "Aggiungi voce di tempo",
30+
"OPT_IN_UPDATES": "Acconsenti a ricevere aggiornamenti e notizie su Ever Teams.",
31+
"SUBSCRIBE_NEWSLETTER": "Iscriviti alla nostra newsletter",
32+
"VIEW_PROJECT": "Visualizza progetto",
33+
"SHARE_PROJECT": "Condividi progetto",
34+
"DELETE_PROJECT": "Elimina progetto",
2235
"DELETE_CONFIRMATION": "Sei sicuro di voler eliminare questo elemento?",
2336
"IRREVERSIBLE_ACTION_WARNING": "Questa azione è irreversibile. Tutti i dati correlati andranno persi.",
2437
"SHIFT_TIMING": "Orario di turno",

apps/web/locales/nl.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919
"PROJECT_BUDGET": "Projectbudget"
2020
},
2121
"common": {
22+
"PENDING_TASKS": "In afwachting Taken",
23+
"SHOW_MORE": "Meer weergeven",
24+
"TASKS": "Taken",
25+
"MEN_HOURS": "Manuren",
26+
"MEMBERS_WORKED": "Leden gewerkt",
27+
"COLLAPSE_COLUMN": "Kolom samenvouwen",
28+
"EDIT_STATUS": "Status bewerken",
29+
"ADD_TIME_ENTRY": "Tijdinvoer toevoegen",
30+
"OPT_IN_UPDATES": "Kies ervoor om updates en nieuws over Ever Teams te ontvangen.",
31+
"SUBSCRIBE_NEWSLETTER": "Abonneer je op onze nieuwsbrief",
32+
"VIEW_PROJECT": "Project bekijken",
33+
"SHARE_PROJECT": "Project delen",
34+
"DELETE_PROJECT": "Project verwijderen",
2235
"DELETE_CONFIRMATION": "Weet u zeker dat u dit wilt verwijderen?",
2336
"IRREVERSIBLE_ACTION_WARNING": "Deze actie is onomkeerbaar. Alle gerelateerde gegevens gaan verloren.",
2437
"SHIFT_TIMING": "Werkrooster",

0 commit comments

Comments
 (0)