chore(frontend): update locale dictionaries
This commit is contained in:
@@ -131,13 +131,13 @@ export const en = {
|
||||
nameLabel: "Workspace Name",
|
||||
namePlaceholder: "Enter workspace name",
|
||||
descriptionLabel: "Description",
|
||||
descriptionPlaceholder: "Enter description (optional)",
|
||||
thumbnailLabel: "Thumbnail",
|
||||
uploadImage: "Click to upload image",
|
||||
removeImage: "Remove image",
|
||||
thumbnailInvalidType: "Unsupported image type. Use JPG, PNG, or WebP.",
|
||||
thumbnailMaxSizeError: "Image size must be 2MB or less.",
|
||||
searchMemberPlaceholder: "Search exact mobile (e.g. 09123456789)",
|
||||
descriptionPlaceholder: "Enter description (optional)",
|
||||
thumbnailLabel: "Thumbnail",
|
||||
uploadImage: "Click to upload image",
|
||||
removeImage: "Remove image",
|
||||
thumbnailInvalidType: "Unsupported image type. Use JPG, PNG, or WebP.",
|
||||
thumbnailMaxSizeError: "Image size must be 2MB or less.",
|
||||
searchMemberPlaceholder: "Search exact mobile (e.g. 09123456789)",
|
||||
addMember: "Add Member",
|
||||
roleAdmin: "Admin",
|
||||
roleMember: "Member",
|
||||
@@ -154,6 +154,8 @@ export const en = {
|
||||
subtitle: "Manage your workspaces",
|
||||
noDescription: "No description",
|
||||
emptyState: "You are not a member of any workspace.",
|
||||
noWorkspaceSearch: "Try adjusting your search query.",
|
||||
noWorkspace: "No workspaces found.",
|
||||
createTitle: "Create Workspace",
|
||||
editTitle: "Edit Workspace",
|
||||
detailTitle: "Workspace Details",
|
||||
@@ -244,13 +246,13 @@ export const en = {
|
||||
editClient: "Edit Client",
|
||||
deleteConfirmTitle: "Delete Client",
|
||||
deleteConfirmMessage: (name: string) => `Are you sure you want to delete ${name}?`,
|
||||
delete: "Delete",
|
||||
saveChanges: "Save Changes",
|
||||
createSuccess: "Client created successfully.",
|
||||
updateSuccess: "Client updated successfully.",
|
||||
deleteSuccess: "Client deleted successfully.",
|
||||
errors: {
|
||||
createFailed: "Failed to create client",
|
||||
delete: "Delete",
|
||||
saveChanges: "Save Changes",
|
||||
createSuccess: "Client created successfully.",
|
||||
updateSuccess: "Client updated successfully.",
|
||||
deleteSuccess: "Client deleted successfully.",
|
||||
errors: {
|
||||
createFailed: "Failed to create client",
|
||||
fetchFailed: "Failed to fetch clients",
|
||||
updateFailed: "Failed to update client",
|
||||
deleteFailed: "Failed to delete client",
|
||||
@@ -267,13 +269,13 @@ export const en = {
|
||||
next: "Next",
|
||||
},
|
||||
|
||||
sidebar: {
|
||||
timesheet: "Timesheet",
|
||||
reports: "Reports",
|
||||
logs: "Logs",
|
||||
workspaces: 'Workspaces',
|
||||
clients: 'Clients',
|
||||
projects: "Projects",
|
||||
sidebar: {
|
||||
timesheet: "Timesheet",
|
||||
reports: "Reports",
|
||||
logs: "Logs",
|
||||
workspaces: 'Workspaces',
|
||||
clients: 'Clients',
|
||||
projects: "Projects",
|
||||
tags: "Tags",
|
||||
expand: 'Expand',
|
||||
collapse: 'Collapse',
|
||||
@@ -292,11 +294,11 @@ export const en = {
|
||||
description: (workspaceName: string) => `Manage projects for ${workspaceName}`,
|
||||
active: "Active Projects",
|
||||
archived: "Archived Projects",
|
||||
createNew: "Create New",
|
||||
searchPlaceholder: "Search projects...",
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
titlePlaceholder: "Enter title",
|
||||
descriptionPlaceholder: "Enter desription",
|
||||
createNew: "Create New",
|
||||
searchPlaceholder: "Search projects...",
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
titlePlaceholder: "Enter title",
|
||||
descriptionPlaceholder: "Enter desription",
|
||||
titleLabel: "Title",
|
||||
clientLabel: "Client",
|
||||
colorLabel: "Color",
|
||||
@@ -305,6 +307,7 @@ export const en = {
|
||||
client: "Client",
|
||||
noClient: "No client",
|
||||
emptyState: "No projects found",
|
||||
noProjectsSearch: "Try adjusting your search query.",
|
||||
deleteTitle: "Delete Project",
|
||||
deleteWarning: "To confirm deletion, please type the project name:",
|
||||
deleteSuccess: "Project deleted successfully",
|
||||
@@ -314,13 +317,13 @@ export const en = {
|
||||
createProject: "Create New Project",
|
||||
editProject: "Edit Project",
|
||||
restore: "Restore",
|
||||
archive: "Archive",
|
||||
archiveSuccess: "Project archived successfully.",
|
||||
restoreSuccess: "Project restored successfully.",
|
||||
fetchError: "Failed to fetch projects.",
|
||||
clientFetchError: "Failed to load clients.",
|
||||
filterClients: "Filter by client",
|
||||
clearClientFilters: "Clear filters",
|
||||
archive: "Archive",
|
||||
archiveSuccess: "Project archived successfully.",
|
||||
restoreSuccess: "Project restored successfully.",
|
||||
fetchError: "Failed to fetch projects.",
|
||||
clientFetchError: "Failed to load clients.",
|
||||
filterClients: "Filter by client",
|
||||
clearClientFilters: "Clear filters",
|
||||
namePlaceholder: "Project name...",
|
||||
teamMembers: "Team Members",
|
||||
creator: "Creator",
|
||||
@@ -362,6 +365,7 @@ export const en = {
|
||||
namePlaceholder: "e.g. Design",
|
||||
colorLabel: "Color",
|
||||
emptyState: "No tags found",
|
||||
noTagsSearch: "Try adjusting your search query.",
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
fetchError: "Failed to load tags",
|
||||
createSuccess: "Tag created successfully.",
|
||||
@@ -423,14 +427,14 @@ export const en = {
|
||||
optionsError: "Failed to load projects and tags.",
|
||||
descriptionLabel: "Description",
|
||||
descriptionPlaceholder: "What are you working on?",
|
||||
projectLabel: "Project",
|
||||
noProject: "No project",
|
||||
startLabel: "Start",
|
||||
endLabel: "End",
|
||||
timeLabel: "Time",
|
||||
billable: "Billable",
|
||||
noTagsHint: "Create tags first from the Tags page.",
|
||||
clearFilters: "Clear filters",
|
||||
projectLabel: "Project",
|
||||
noProject: "No project",
|
||||
startLabel: "Start",
|
||||
endLabel: "End",
|
||||
timeLabel: "Time",
|
||||
billable: "Billable",
|
||||
noTagsHint: "Create tags first from the Tags page.",
|
||||
clearFilters: "Clear filters",
|
||||
customFromLabel: "From date",
|
||||
customToLabel: "To date",
|
||||
allClientsLabel: "All clients",
|
||||
@@ -440,23 +444,23 @@ export const en = {
|
||||
hideFiltersLabel: "Hide filters",
|
||||
applyFiltersLabel: "Apply",
|
||||
clientFilterPrefix: "Client",
|
||||
projectFilterPrefix: "Project",
|
||||
tagFilterPrefix: "Tag",
|
||||
fromFilterPrefix: "From",
|
||||
toFilterPrefix: "To",
|
||||
deleteTitle: "Delete Time Entry",
|
||||
deleteConfirmMessage: "Are you sure you want to delete this time entry?",
|
||||
restartConfirmMessage: "Start a new running timer from this entry?",
|
||||
discardConfirmMessage: "Are you sure you want to discard this running timer?",
|
||||
searchTagsLabel: "Search tags...",
|
||||
noTagsFoundLabel: "No tags found.",
|
||||
searchProjectsLabel: "Search projects...",
|
||||
noProjectsFoundLabel: "No projects found.",
|
||||
deletedProjectLabel: "Deleted project",
|
||||
deletedTagLabel: "Deleted tag",
|
||||
},
|
||||
projectFilterPrefix: "Project",
|
||||
tagFilterPrefix: "Tag",
|
||||
fromFilterPrefix: "From",
|
||||
toFilterPrefix: "To",
|
||||
deleteTitle: "Delete Time Entry",
|
||||
deleteConfirmMessage: "Are you sure you want to delete this time entry?",
|
||||
restartConfirmMessage: "Start a new running timer from this entry?",
|
||||
discardConfirmMessage: "Are you sure you want to discard this running timer?",
|
||||
searchTagsLabel: "Search tags...",
|
||||
noTagsFoundLabel: "No tags found.",
|
||||
searchProjectsLabel: "Search projects...",
|
||||
noProjectsFoundLabel: "No projects found.",
|
||||
deletedProjectLabel: "Deleted project",
|
||||
deletedTagLabel: "Deleted tag",
|
||||
},
|
||||
|
||||
reports: {
|
||||
reports: {
|
||||
title: "Reports",
|
||||
description: (workspaceName: string) => `Review activity reports for ${workspaceName}`,
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
@@ -486,11 +490,11 @@ export const en = {
|
||||
name: "Name",
|
||||
clear: "Clear",
|
||||
apply: "Apply",
|
||||
totalHours: "Total hours",
|
||||
billableHours: "Billable hours",
|
||||
nonBillableHours: "Non-billable hours",
|
||||
hourlyRate: "Hourly rate",
|
||||
totalIncome: "Total income",
|
||||
totalHours: "Total hours",
|
||||
billableHours: "Billable hours",
|
||||
nonBillableHours: "Non-billable hours",
|
||||
hourlyRate: "Hourly rate",
|
||||
totalIncome: "Total income",
|
||||
chartTitle: "Activity chart",
|
||||
totalSeconds: "Total seconds",
|
||||
exportExcel: "Export Excel",
|
||||
@@ -504,120 +508,120 @@ export const en = {
|
||||
loadError: "Failed to load reports.",
|
||||
loadDayDetailsError: "Failed to load day details.",
|
||||
loadFiltersError: "Failed to load report filters.",
|
||||
exportQueued: "Export queued. You will receive a notification with the download link.",
|
||||
exportError: "Failed to queue report export.",
|
||||
},
|
||||
|
||||
logs: {
|
||||
eyebrow: "Workspace activity",
|
||||
title: "Activity logs",
|
||||
description: (workspaceName: string) => `Review what has happened inside ${workspaceName}.`,
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
unauthorized: "Only owners and admins can access workspace activity logs.",
|
||||
loading: "Loading logs...",
|
||||
loadingUsers: "Loading users...",
|
||||
loadingDetails: "Loading details...",
|
||||
loadError: "Failed to load logs.",
|
||||
loadDetailsError: "Failed to load log details.",
|
||||
loadFiltersError: "Failed to load log filters.",
|
||||
search: "Search",
|
||||
searchPlaceholder: "Search logs...",
|
||||
section: "Section",
|
||||
allSections: "All sections",
|
||||
event: "Event",
|
||||
allEvents: "All events",
|
||||
actor: "Actor",
|
||||
allActors: "All actors",
|
||||
searchActors: "Search users...",
|
||||
ordering: "Ordering",
|
||||
newestFirst: "Newest first",
|
||||
oldestFirst: "Oldest first",
|
||||
fromDate: "From date",
|
||||
toDate: "To date",
|
||||
clear: "Clear",
|
||||
apply: "Apply",
|
||||
loadMore: "Load more",
|
||||
totalLogs: "Total logs",
|
||||
activeFilters: "Active filters",
|
||||
latestActivity: "Latest activity",
|
||||
resultsCount: (count: number) => `${count} results`,
|
||||
empty: "No activity logs found",
|
||||
emptyHint: "Adjust your filters or wait for new workspace activity.",
|
||||
detailsTitle: "Activity details",
|
||||
detailsHint: "Select an activity item to inspect the exact field changes.",
|
||||
selectLogHint: "Select a log entry to see its details.",
|
||||
target: "Target",
|
||||
timestamp: "Timestamp",
|
||||
remoteAddress: "Remote address",
|
||||
previousValue: "Previous",
|
||||
currentValue: "Current",
|
||||
changesTitle: "Changes",
|
||||
noDetails: "No field-level details are available for this activity.",
|
||||
snapshot: "Serialized snapshot",
|
||||
unknownActor: "Unknown actor",
|
||||
summary: (actor: string, event: string, section: string, target: string) =>
|
||||
`${actor} ${event.toLowerCase()} ${target} in ${section.toLowerCase()}`,
|
||||
sections: {
|
||||
workspace: "Workspace",
|
||||
workspace_members: "Workspace members",
|
||||
clients: "Clients",
|
||||
projects: "Projects",
|
||||
tags: "Tags",
|
||||
time_entries: "Time entries",
|
||||
rates: "Rates",
|
||||
report_exports: "Report exports",
|
||||
},
|
||||
events: {
|
||||
create: "Created",
|
||||
update: "Updated",
|
||||
delete: "Deleted",
|
||||
restore: "Restored",
|
||||
archive: "Archived",
|
||||
unarchive: "Unarchived",
|
||||
activate: "Activated",
|
||||
deactivate: "Deactivated",
|
||||
},
|
||||
},
|
||||
|
||||
notifications: {
|
||||
title: "Notifications",
|
||||
pageDescription: "Review all notifications and export updates.",
|
||||
open: "Open notifications",
|
||||
empty: "No notifications yet.",
|
||||
emptyUnread: "No unread notifications.",
|
||||
loading: "Loading notifications...",
|
||||
loadingMore: "Loading more...",
|
||||
loadMore: "Load more",
|
||||
markAllRead: "Mark all as read",
|
||||
viewAll: "View all notifications",
|
||||
totalLabel: "Total notifications",
|
||||
unreadLabel: "Unread notifications",
|
||||
deleteLabel: "Delete notification",
|
||||
markSeenError: "Failed to update notification",
|
||||
markAllError: "Failed to update notifications",
|
||||
deleteError: "Failed to delete notification",
|
||||
loadError: "Failed to load notifications",
|
||||
openError: "Failed to open notification",
|
||||
newTitle: "New notification",
|
||||
openAction: "Open",
|
||||
summary: (total: number, unread: number) => `${total} total, ${unread} unread`,
|
||||
workspaceMembershipAddedTitle: "Added to workspace",
|
||||
workspaceMembershipAddedMessage: (actor: string, workspace: string, role: string) =>
|
||||
`${actor} added you to ${workspace} as ${role}.`,
|
||||
workspaceMembershipRoleChangedTitle: "Workspace role changed",
|
||||
workspaceMembershipRoleChangedMessage: (actor: string, workspace: string, previousRole: string, newRole: string) =>
|
||||
`${actor} changed your role in ${workspace} from ${previousRole} to ${newRole}.`,
|
||||
workspaceMembershipDeactivatedTitle: "Workspace access deactivated",
|
||||
workspaceMembershipDeactivatedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} deactivated your access to ${workspace}.`,
|
||||
workspaceMembershipRemovedTitle: "Removed from workspace",
|
||||
workspaceMembershipRemovedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} removed you from ${workspace}.`,
|
||||
reportExportReadyTitle: "Report export is ready",
|
||||
reportExportReadyMessage: (exportType: string, workspace: string, fileName?: string | null) =>
|
||||
`Your ${exportType.toUpperCase()} report for ${workspace} is ready${fileName ? `: ${fileName}` : ""}.`,
|
||||
reportExportFailedTitle: "Report export failed",
|
||||
reportExportFailedMessage: (exportType: string, workspace: string) =>
|
||||
`Your ${exportType.toUpperCase()} report for ${workspace} could not be generated.`,
|
||||
},
|
||||
}
|
||||
exportQueued: "Export queued. You will receive a notification with the download link.",
|
||||
exportError: "Failed to queue report export.",
|
||||
},
|
||||
|
||||
logs: {
|
||||
eyebrow: "Workspace activity",
|
||||
title: "Activity logs",
|
||||
description: (workspaceName: string) => `Review what has happened inside ${workspaceName}.`,
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
unauthorized: "Only owners and admins can access workspace activity logs.",
|
||||
loading: "Loading logs...",
|
||||
loadingUsers: "Loading users...",
|
||||
loadingDetails: "Loading details...",
|
||||
loadError: "Failed to load logs.",
|
||||
loadDetailsError: "Failed to load log details.",
|
||||
loadFiltersError: "Failed to load log filters.",
|
||||
search: "Search",
|
||||
searchPlaceholder: "Search logs...",
|
||||
section: "Section",
|
||||
allSections: "All sections",
|
||||
event: "Event",
|
||||
allEvents: "All events",
|
||||
actor: "Actor",
|
||||
allActors: "All actors",
|
||||
searchActors: "Search users...",
|
||||
ordering: "Ordering",
|
||||
newestFirst: "Newest first",
|
||||
oldestFirst: "Oldest first",
|
||||
fromDate: "From date",
|
||||
toDate: "To date",
|
||||
clear: "Clear",
|
||||
apply: "Apply",
|
||||
loadMore: "Load more",
|
||||
totalLogs: "Total logs",
|
||||
activeFilters: "Active filters",
|
||||
latestActivity: "Latest activity",
|
||||
resultsCount: (count: number) => `${count} results`,
|
||||
empty: "No activity logs found",
|
||||
emptyHint: "Adjust your filters or wait for new workspace activity.",
|
||||
detailsTitle: "Activity details",
|
||||
detailsHint: "Select an activity item to inspect the exact field changes.",
|
||||
selectLogHint: "Select a log entry to see its details.",
|
||||
target: "Target",
|
||||
timestamp: "Timestamp",
|
||||
remoteAddress: "Remote address",
|
||||
previousValue: "Previous",
|
||||
currentValue: "Current",
|
||||
changesTitle: "Changes",
|
||||
noDetails: "No field-level details are available for this activity.",
|
||||
snapshot: "Serialized snapshot",
|
||||
unknownActor: "Unknown actor",
|
||||
summary: (actor: string, event: string, section: string, target: string) =>
|
||||
`${actor} ${event.toLowerCase()} ${target} in ${section.toLowerCase()}`,
|
||||
sections: {
|
||||
workspace: "Workspace",
|
||||
workspace_members: "Workspace members",
|
||||
clients: "Clients",
|
||||
projects: "Projects",
|
||||
tags: "Tags",
|
||||
time_entries: "Time entries",
|
||||
rates: "Rates",
|
||||
report_exports: "Report exports",
|
||||
},
|
||||
events: {
|
||||
create: "Created",
|
||||
update: "Updated",
|
||||
delete: "Deleted",
|
||||
restore: "Restored",
|
||||
archive: "Archived",
|
||||
unarchive: "Unarchived",
|
||||
activate: "Activated",
|
||||
deactivate: "Deactivated",
|
||||
},
|
||||
},
|
||||
|
||||
notifications: {
|
||||
title: "Notifications",
|
||||
pageDescription: "Review all notifications and export updates.",
|
||||
open: "Open notifications",
|
||||
empty: "No notifications yet.",
|
||||
emptyUnread: "No unread notifications.",
|
||||
loading: "Loading notifications...",
|
||||
loadingMore: "Loading more...",
|
||||
loadMore: "Load more",
|
||||
markAllRead: "Mark all as read",
|
||||
viewAll: "View all notifications",
|
||||
totalLabel: "Total notifications",
|
||||
unreadLabel: "Unread notifications",
|
||||
deleteLabel: "Delete notification",
|
||||
markSeenError: "Failed to update notification",
|
||||
markAllError: "Failed to update notifications",
|
||||
deleteError: "Failed to delete notification",
|
||||
loadError: "Failed to load notifications",
|
||||
openError: "Failed to open notification",
|
||||
newTitle: "New notification",
|
||||
openAction: "Open",
|
||||
summary: (total: number, unread: number) => `${total} total, ${unread} unread`,
|
||||
workspaceMembershipAddedTitle: "Added to workspace",
|
||||
workspaceMembershipAddedMessage: (actor: string, workspace: string, role: string) =>
|
||||
`${actor} added you to ${workspace} as ${role}.`,
|
||||
workspaceMembershipRoleChangedTitle: "Workspace role changed",
|
||||
workspaceMembershipRoleChangedMessage: (actor: string, workspace: string, previousRole: string, newRole: string) =>
|
||||
`${actor} changed your role in ${workspace} from ${previousRole} to ${newRole}.`,
|
||||
workspaceMembershipDeactivatedTitle: "Workspace access deactivated",
|
||||
workspaceMembershipDeactivatedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} deactivated your access to ${workspace}.`,
|
||||
workspaceMembershipRemovedTitle: "Removed from workspace",
|
||||
workspaceMembershipRemovedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} removed you from ${workspace}.`,
|
||||
reportExportReadyTitle: "Report export is ready",
|
||||
reportExportReadyMessage: (exportType: string, workspace: string, fileName?: string | null) =>
|
||||
`Your ${exportType.toUpperCase()} report for ${workspace} is ready${fileName ? `: ${fileName}` : ""}.`,
|
||||
reportExportFailedTitle: "Report export failed",
|
||||
reportExportFailedMessage: (exportType: string, workspace: string) =>
|
||||
`Your ${exportType.toUpperCase()} report for ${workspace} could not be generated.`,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -155,6 +155,8 @@ export const fa = {
|
||||
subtitle: "ورکاسپیسهای خود را مدیریت کنید",
|
||||
noDescription: "بدون توضیحات",
|
||||
emptyState: "شما در هیچ ورکاسپیس عضو نیستید.",
|
||||
noWorkspaceSearch: "لطفاً عبارت جستجو را تغییر دهید.",
|
||||
noWorkspace: "ورکاسپیس یافت نشد.",
|
||||
createTitle: "ایجاد ورکاسپیس",
|
||||
editTitle: "ویرایش ورکاسپیس",
|
||||
detailTitle: "جزئیات ورکاسپیس",
|
||||
@@ -241,13 +243,13 @@ export const fa = {
|
||||
editClient: "ویرایش مشتری",
|
||||
deleteConfirmTitle: "حذف مشتری",
|
||||
deleteConfirmMessage: (name: string) => `آیا از حذف ${name} اطمینان دارید؟`,
|
||||
delete: "حذف",
|
||||
saveChanges: "ذخیره تغییرات",
|
||||
createSuccess: "مشتری با موفقیت ایجاد شد.",
|
||||
updateSuccess: "مشتری با موفقیت بهروزرسانی شد.",
|
||||
deleteSuccess: "مشتری با موفقیت حذف شد.",
|
||||
errors: {
|
||||
createFailed: "خطا در ایجاد مشتری",
|
||||
delete: "حذف",
|
||||
saveChanges: "ذخیره تغییرات",
|
||||
createSuccess: "مشتری با موفقیت ایجاد شد.",
|
||||
updateSuccess: "مشتری با موفقیت بهروزرسانی شد.",
|
||||
deleteSuccess: "مشتری با موفقیت حذف شد.",
|
||||
errors: {
|
||||
createFailed: "خطا در ایجاد مشتری",
|
||||
fetchFailed: "خطا در دریافت لیست مشتریها",
|
||||
updateFailed: "خطا در ویرایش مشتری",
|
||||
deleteFailed: "خطا در حذف مشتری",
|
||||
@@ -264,11 +266,11 @@ export const fa = {
|
||||
next: "بعدی",
|
||||
},
|
||||
|
||||
sidebar: {
|
||||
timesheet: 'تایمشیت',
|
||||
reports: 'گزارشها',
|
||||
logs: "لاگها",
|
||||
workspaces: 'ورکاسپیسها',
|
||||
sidebar: {
|
||||
timesheet: 'تایمشیت',
|
||||
reports: 'گزارشها',
|
||||
logs: "لاگها",
|
||||
workspaces: 'ورکاسپیسها',
|
||||
clients: 'مشتریها',
|
||||
projects: "پروژهها",
|
||||
tags: "تگها",
|
||||
@@ -288,11 +290,11 @@ export const fa = {
|
||||
title: "پروژهها",
|
||||
description: (workspaceName: string) => `مدیریت پروژهها برای ${workspaceName}`,
|
||||
active: "پروژههای فعال",
|
||||
archived: "پروژههای بایگانی شده",
|
||||
createNew: "ایجاد پروژه جدید",
|
||||
searchPlaceholder: "جستجوی پروژهها...",
|
||||
selectWorkspace: "لطفاً ابتدا یک ورکاسپیس انتخاب کنید.",
|
||||
titlePlaceholder: "عنوان پروژه",
|
||||
archived: "پروژههای بایگانی شده",
|
||||
createNew: "ایجاد پروژه جدید",
|
||||
searchPlaceholder: "جستجوی پروژهها...",
|
||||
selectWorkspace: "لطفاً ابتدا یک ورکاسپیس انتخاب کنید.",
|
||||
titlePlaceholder: "عنوان پروژه",
|
||||
descriptionPlaceholder: "توضیحات پروژه",
|
||||
titleLabel: "عنوان",
|
||||
descriptionLabel: "توضیحات",
|
||||
@@ -302,6 +304,7 @@ export const fa = {
|
||||
client: "مشتری",
|
||||
noClient: "بدون مشتری",
|
||||
emptyState: "پروژهای یافت نشد",
|
||||
noProjectsSearch: "لطفاً عبارت جستجو را تغییر دهید.",
|
||||
deleteTitle: "حذف پروژه",
|
||||
deleteWarning: "برای تایید حذف، لطفاً نام پروژه را تایپ کنید:",
|
||||
deleteSuccess: "پروژه با موفقیت حذف شد",
|
||||
@@ -309,15 +312,15 @@ export const fa = {
|
||||
create: "ایجاد",
|
||||
cancel: "انصراف",
|
||||
createProject: "ایجاد پروژه",
|
||||
editProject: "ویرایش پروژه",
|
||||
restore: "بازیابی",
|
||||
archive: "بایگانی",
|
||||
archiveSuccess: "پروژه با موفقیت بایگانی شد.",
|
||||
restoreSuccess: "پروژه با موفقیت بازیابی شد.",
|
||||
fetchError: "خطا در دریافت پروژهها.",
|
||||
clientFetchError: "خطا در دریافت لیست مشتریها.",
|
||||
filterClients: "فیلتر بر اساس مشتری",
|
||||
clearClientFilters: "پاک کردن فیلترها",
|
||||
editProject: "ویرایش پروژه",
|
||||
restore: "بازیابی",
|
||||
archive: "بایگانی",
|
||||
archiveSuccess: "پروژه با موفقیت بایگانی شد.",
|
||||
restoreSuccess: "پروژه با موفقیت بازیابی شد.",
|
||||
fetchError: "خطا در دریافت پروژهها.",
|
||||
clientFetchError: "خطا در دریافت لیست مشتریها.",
|
||||
filterClients: "فیلتر بر اساس مشتری",
|
||||
clearClientFilters: "پاک کردن فیلترها",
|
||||
memberAlreadyAdded: "این کاربر قبلا اضافه شده است",
|
||||
creator: "سازنده",
|
||||
addUser: "افزودن کاربر",
|
||||
@@ -359,6 +362,7 @@ export const fa = {
|
||||
namePlaceholder: "مثلاً طراحی",
|
||||
colorLabel: "رنگ",
|
||||
emptyState: "تگی یافت نشد",
|
||||
noTagsSearch: "لطفاً عبارت جستجو را تغییر دهید.",
|
||||
selectWorkspace: "لطفاً ابتدا یک ورکاسپیس انتخاب کنید.",
|
||||
fetchError: "دریافت تگها با خطا مواجه شد.",
|
||||
createSuccess: "تگ با موفقیت ایجاد شد.",
|
||||
@@ -420,14 +424,14 @@ export const fa = {
|
||||
optionsError: "دریافت پروژهها و تگها با خطا مواجه شد.",
|
||||
descriptionLabel: "توضیحات",
|
||||
descriptionPlaceholder: "روی چه چیزی کار میکنید؟",
|
||||
projectLabel: "پروژه",
|
||||
noProject: "بدون پروژه",
|
||||
startLabel: "شروع",
|
||||
endLabel: "پایان",
|
||||
timeLabel: "زمان",
|
||||
billable: "قابل صورتحساب",
|
||||
noTagsHint: "ابتدا از صفحه تگها، تگ ایجاد کنید.",
|
||||
clearFilters: "پاک کردن فیلترها",
|
||||
projectLabel: "پروژه",
|
||||
noProject: "بدون پروژه",
|
||||
startLabel: "شروع",
|
||||
endLabel: "پایان",
|
||||
timeLabel: "زمان",
|
||||
billable: "قابل صورتحساب",
|
||||
noTagsHint: "ابتدا از صفحه تگها، تگ ایجاد کنید.",
|
||||
clearFilters: "پاک کردن فیلترها",
|
||||
customFromLabel: "از تاریخ",
|
||||
customToLabel: "تا تاریخ",
|
||||
allClientsLabel: "همه مشتریها",
|
||||
@@ -437,22 +441,22 @@ export const fa = {
|
||||
hideFiltersLabel: "مخفی کردن فیلترها",
|
||||
applyFiltersLabel: "اعمال",
|
||||
clientFilterPrefix: "مشتری",
|
||||
projectFilterPrefix: "پروژه",
|
||||
tagFilterPrefix: "تگ",
|
||||
fromFilterPrefix: "از",
|
||||
toFilterPrefix: "تا",
|
||||
deleteTitle: "حذف ورودی زمان",
|
||||
deleteConfirmMessage: "آیا از حذف این ورودی زمان اطمینان دارید؟",
|
||||
restartConfirmMessage: "میخواهید یک تایمر جدید را از روی این ورودی شروع کنید؟",
|
||||
discardConfirmMessage: "آیا از دور انداختن این تایمر در حال اجرا اطمینان دارید؟",
|
||||
searchTagsLabel: "جستوجوی تگها...",
|
||||
noTagsFoundLabel: "تگی پیدا نشد.",
|
||||
searchProjectsLabel: "جستوجوی پروژهها...",
|
||||
noProjectsFoundLabel: "پروژهای پیدا نشد.",
|
||||
deletedProjectLabel: "پروژه حذفشده",
|
||||
deletedTagLabel: "تگ حذفشده",
|
||||
},
|
||||
reports: {
|
||||
projectFilterPrefix: "پروژه",
|
||||
tagFilterPrefix: "تگ",
|
||||
fromFilterPrefix: "از",
|
||||
toFilterPrefix: "تا",
|
||||
deleteTitle: "حذف ورودی زمان",
|
||||
deleteConfirmMessage: "آیا از حذف این ورودی زمان اطمینان دارید؟",
|
||||
restartConfirmMessage: "میخواهید یک تایمر جدید را از روی این ورودی شروع کنید؟",
|
||||
discardConfirmMessage: "آیا از دور انداختن این تایمر در حال اجرا اطمینان دارید؟",
|
||||
searchTagsLabel: "جستوجوی تگها...",
|
||||
noTagsFoundLabel: "تگی پیدا نشد.",
|
||||
searchProjectsLabel: "جستوجوی پروژهها...",
|
||||
noProjectsFoundLabel: "پروژهای پیدا نشد.",
|
||||
deletedProjectLabel: "پروژه حذفشده",
|
||||
deletedTagLabel: "تگ حذفشده",
|
||||
},
|
||||
reports: {
|
||||
title: "گزارشها",
|
||||
description: (workspaceName: string) => `مرور گزارش فعالیت برای ${workspaceName}`,
|
||||
selectWorkspace: "لطفاً ابتدا یک ورکاسپیس انتخاب کنید.",
|
||||
@@ -482,11 +486,11 @@ export const fa = {
|
||||
name: "نام",
|
||||
clear: "پاک کردن",
|
||||
apply: "اعمال",
|
||||
totalHours: "مجموع ساعت",
|
||||
billableHours: "ساعات کاری",
|
||||
nonBillableHours: "ساعات غیر کاری",
|
||||
hourlyRate: "نرخ ساعتی",
|
||||
totalIncome: "مجموع درآمد",
|
||||
totalHours: "مجموع ساعت",
|
||||
billableHours: "ساعات کاری",
|
||||
nonBillableHours: "ساعات غیر کاری",
|
||||
hourlyRate: "نرخ ساعتی",
|
||||
totalIncome: "مجموع درآمد",
|
||||
chartTitle: "نمودار فعالیت",
|
||||
totalSeconds: "مجموع ثانیه",
|
||||
exportExcel: "خروجی Excel",
|
||||
@@ -500,118 +504,118 @@ export const fa = {
|
||||
loadError: "دریافت گزارشها با خطا مواجه شد.",
|
||||
loadDayDetailsError: "دریافت جزئیات روز با خطا مواجه شد.",
|
||||
loadFiltersError: "دریافت فیلترهای گزارش با خطا مواجه شد.",
|
||||
exportQueued: "درخواست خروجی ثبت شد. پیوند دانلود از طریق اعلان ارسال میشود.",
|
||||
exportError: "ثبت درخواست خروجی با خطا مواجه شد.",
|
||||
},
|
||||
logs: {
|
||||
eyebrow: "فعالیتهای ورکاسپیس",
|
||||
title: "لاگهای فعالیت",
|
||||
description: (workspaceName: string) => `مرور رویدادهای ثبتشده در ${workspaceName}`,
|
||||
selectWorkspace: "لطفاً ابتدا یک ورکاسپیس انتخاب کنید.",
|
||||
unauthorized: "فقط مالک و ادمین میتوانند لاگهای فعالیت ورکاسپیس را مشاهده کنند.",
|
||||
loading: "در حال بارگذاری لاگها...",
|
||||
loadingUsers: "در حال بارگذاری کاربران...",
|
||||
loadingDetails: "در حال بارگذاری جزئیات...",
|
||||
loadError: "دریافت لاگها با خطا مواجه شد.",
|
||||
loadDetailsError: "دریافت جزئیات لاگ با خطا مواجه شد.",
|
||||
loadFiltersError: "دریافت فیلترهای لاگ با خطا مواجه شد.",
|
||||
search: "جستوجو",
|
||||
searchPlaceholder: "جستوجوی لاگها...",
|
||||
section: "بخش",
|
||||
allSections: "همه بخشها",
|
||||
event: "رویداد",
|
||||
allEvents: "همه رویدادها",
|
||||
actor: "انجامدهنده",
|
||||
allActors: "همه کاربران",
|
||||
searchActors: "جستوجوی کاربران...",
|
||||
ordering: "مرتبسازی",
|
||||
newestFirst: "جدیدترین",
|
||||
oldestFirst: "قدیمیترین",
|
||||
fromDate: "از تاریخ",
|
||||
toDate: "تا تاریخ",
|
||||
clear: "پاک کردن",
|
||||
apply: "اعمال",
|
||||
loadMore: "بارگذاری بیشتر",
|
||||
totalLogs: "کل لاگها",
|
||||
activeFilters: "فیلترهای فعال",
|
||||
latestActivity: "آخرین فعالیت",
|
||||
resultsCount: (count: number) => `${count} نتیجه`,
|
||||
empty: "لاگ فعالیتی پیدا نشد",
|
||||
emptyHint: "فیلترها را تغییر دهید یا منتظر فعالیت جدید بمانید.",
|
||||
detailsTitle: "جزئیات فعالیت",
|
||||
detailsHint: "برای بررسی دقیق تغییرات، یک مورد را انتخاب کنید.",
|
||||
selectLogHint: "یک لاگ را برای مشاهده جزئیات انتخاب کنید.",
|
||||
target: "هدف",
|
||||
timestamp: "زمان",
|
||||
remoteAddress: "آدرس شبکه",
|
||||
previousValue: "مقدار قبلی",
|
||||
currentValue: "مقدار جدید",
|
||||
changesTitle: "تغییرات",
|
||||
noDetails: "برای این رویداد جزئیات فیلدی در دسترس نیست.",
|
||||
snapshot: "نمونه ذخیرهشده",
|
||||
unknownActor: "کاربر نامشخص",
|
||||
summary: (actor: string, event: string, section: string, target: string) =>
|
||||
`${actor} ${target} را در بخش ${section} ${event}`,
|
||||
sections: {
|
||||
workspace: "ورکاسپیس",
|
||||
workspace_members: "اعضای ورکاسپیس",
|
||||
clients: "مشتریها",
|
||||
projects: "پروژهها",
|
||||
tags: "تگها",
|
||||
time_entries: "ورودیهای زمان",
|
||||
rates: "نرخها",
|
||||
report_exports: "خروجیهای گزارش",
|
||||
},
|
||||
events: {
|
||||
create: "ایجاد کرد",
|
||||
update: "ویرایش کرد",
|
||||
delete: "حذف کرد",
|
||||
restore: "بازیابی کرد",
|
||||
archive: "بایگانی کرد",
|
||||
unarchive: "از بایگانی خارج کرد",
|
||||
activate: "فعال کرد",
|
||||
deactivate: "غیرفعال کرد",
|
||||
},
|
||||
},
|
||||
notifications: {
|
||||
title: "اعلانها",
|
||||
pageDescription: "مرور همه اعلانها و وضعیت خروجیهای گزارش.",
|
||||
open: "باز کردن اعلانها",
|
||||
empty: "هنوز اعلانی وجود ندارد.",
|
||||
emptyUnread: "اعلان خواندهنشدهای وجود ندارد.",
|
||||
loading: "در حال بارگذاری اعلانها...",
|
||||
loadingMore: "در حال بارگذاری بیشتر...",
|
||||
loadMore: "بارگذاری بیشتر",
|
||||
markAllRead: "خواندن همه",
|
||||
viewAll: "نمایش همه اعلانها",
|
||||
totalLabel: "مجموع اعلانها",
|
||||
unreadLabel: "اعلانهای خواندهنشده",
|
||||
deleteLabel: "حذف اعلان",
|
||||
markSeenError: "بهروزرسانی اعلان با خطا مواجه شد.",
|
||||
markAllError: "بهروزرسانی اعلانها با خطا مواجه شد.",
|
||||
deleteError: "حذف اعلان با خطا مواجه شد.",
|
||||
loadError: "دریافت اعلانها با خطا مواجه شد.",
|
||||
openError: "باز کردن اعلان با خطا مواجه شد.",
|
||||
newTitle: "اعلان جدید",
|
||||
openAction: "باز کردن",
|
||||
summary: (total: number, unread: number) => `${total} کل، ${unread} خواندهنشده`,
|
||||
workspaceMembershipAddedTitle: "به ورکاسپیس اضافه شدید",
|
||||
workspaceMembershipAddedMessage: (actor: string, workspace: string, role: string) =>
|
||||
`${actor} شما را با نقش ${role} به ${workspace} اضافه کرد.`,
|
||||
workspaceMembershipRoleChangedTitle: "نقش شما در ورکاسپیس تغییر کرد",
|
||||
workspaceMembershipRoleChangedMessage: (actor: string, workspace: string, previousRole: string, newRole: string) =>
|
||||
`${actor} نقش شما را در ${workspace} از ${previousRole} به ${newRole} تغییر داد.`,
|
||||
workspaceMembershipDeactivatedTitle: "دسترسی ورکاسپیس غیرفعال شد",
|
||||
workspaceMembershipDeactivatedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} دسترسی شما به ${workspace} را غیرفعال کرد.`,
|
||||
workspaceMembershipRemovedTitle: "از ورکاسپیس حذف شدید",
|
||||
workspaceMembershipRemovedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} شما را از ${workspace} حذف کرد.`,
|
||||
reportExportReadyTitle: "خروجی گزارش آماده است",
|
||||
reportExportReadyMessage: (exportType: string, workspace: string, fileName?: string | null) =>
|
||||
`خروجی ${exportType.toUpperCase()} گزارش ${workspace}${fileName ? ` با نام ${fileName}` : ""} آماده دانلود است.`,
|
||||
reportExportFailedTitle: "خروجی گزارش ناموفق بود",
|
||||
reportExportFailedMessage: (exportType: string, workspace: string) =>
|
||||
`تولید خروجی ${exportType.toUpperCase()} گزارش ${workspace} با خطا مواجه شد.`,
|
||||
},
|
||||
}
|
||||
exportQueued: "درخواست خروجی ثبت شد. پیوند دانلود از طریق اعلان ارسال میشود.",
|
||||
exportError: "ثبت درخواست خروجی با خطا مواجه شد.",
|
||||
},
|
||||
logs: {
|
||||
eyebrow: "فعالیتهای ورکاسپیس",
|
||||
title: "لاگهای فعالیت",
|
||||
description: (workspaceName: string) => `مرور رویدادهای ثبتشده در ${workspaceName}`,
|
||||
selectWorkspace: "لطفاً ابتدا یک ورکاسپیس انتخاب کنید.",
|
||||
unauthorized: "فقط مالک و ادمین میتوانند لاگهای فعالیت ورکاسپیس را مشاهده کنند.",
|
||||
loading: "در حال بارگذاری لاگها...",
|
||||
loadingUsers: "در حال بارگذاری کاربران...",
|
||||
loadingDetails: "در حال بارگذاری جزئیات...",
|
||||
loadError: "دریافت لاگها با خطا مواجه شد.",
|
||||
loadDetailsError: "دریافت جزئیات لاگ با خطا مواجه شد.",
|
||||
loadFiltersError: "دریافت فیلترهای لاگ با خطا مواجه شد.",
|
||||
search: "جستوجو",
|
||||
searchPlaceholder: "جستوجوی لاگها...",
|
||||
section: "بخش",
|
||||
allSections: "همه بخشها",
|
||||
event: "رویداد",
|
||||
allEvents: "همه رویدادها",
|
||||
actor: "انجامدهنده",
|
||||
allActors: "همه کاربران",
|
||||
searchActors: "جستوجوی کاربران...",
|
||||
ordering: "مرتبسازی",
|
||||
newestFirst: "جدیدترین",
|
||||
oldestFirst: "قدیمیترین",
|
||||
fromDate: "از تاریخ",
|
||||
toDate: "تا تاریخ",
|
||||
clear: "پاک کردن",
|
||||
apply: "اعمال",
|
||||
loadMore: "بارگذاری بیشتر",
|
||||
totalLogs: "کل لاگها",
|
||||
activeFilters: "فیلترهای فعال",
|
||||
latestActivity: "آخرین فعالیت",
|
||||
resultsCount: (count: number) => `${count} نتیجه`,
|
||||
empty: "لاگ فعالیتی پیدا نشد",
|
||||
emptyHint: "فیلترها را تغییر دهید یا منتظر فعالیت جدید بمانید.",
|
||||
detailsTitle: "جزئیات فعالیت",
|
||||
detailsHint: "برای بررسی دقیق تغییرات، یک مورد را انتخاب کنید.",
|
||||
selectLogHint: "یک لاگ را برای مشاهده جزئیات انتخاب کنید.",
|
||||
target: "هدف",
|
||||
timestamp: "زمان",
|
||||
remoteAddress: "آدرس شبکه",
|
||||
previousValue: "مقدار قبلی",
|
||||
currentValue: "مقدار جدید",
|
||||
changesTitle: "تغییرات",
|
||||
noDetails: "برای این رویداد جزئیات فیلدی در دسترس نیست.",
|
||||
snapshot: "نمونه ذخیرهشده",
|
||||
unknownActor: "کاربر نامشخص",
|
||||
summary: (actor: string, event: string, section: string, target: string) =>
|
||||
`${actor} ${target} را در بخش ${section} ${event}`,
|
||||
sections: {
|
||||
workspace: "ورکاسپیس",
|
||||
workspace_members: "اعضای ورکاسپیس",
|
||||
clients: "مشتریها",
|
||||
projects: "پروژهها",
|
||||
tags: "تگها",
|
||||
time_entries: "ورودیهای زمان",
|
||||
rates: "نرخها",
|
||||
report_exports: "خروجیهای گزارش",
|
||||
},
|
||||
events: {
|
||||
create: "ایجاد کرد",
|
||||
update: "ویرایش کرد",
|
||||
delete: "حذف کرد",
|
||||
restore: "بازیابی کرد",
|
||||
archive: "بایگانی کرد",
|
||||
unarchive: "از بایگانی خارج کرد",
|
||||
activate: "فعال کرد",
|
||||
deactivate: "غیرفعال کرد",
|
||||
},
|
||||
},
|
||||
notifications: {
|
||||
title: "اعلانها",
|
||||
pageDescription: "مرور همه اعلانها و وضعیت خروجیهای گزارش.",
|
||||
open: "باز کردن اعلانها",
|
||||
empty: "هنوز اعلانی وجود ندارد.",
|
||||
emptyUnread: "اعلان خواندهنشدهای وجود ندارد.",
|
||||
loading: "در حال بارگذاری اعلانها...",
|
||||
loadingMore: "در حال بارگذاری بیشتر...",
|
||||
loadMore: "بارگذاری بیشتر",
|
||||
markAllRead: "خواندن همه",
|
||||
viewAll: "نمایش همه اعلانها",
|
||||
totalLabel: "مجموع اعلانها",
|
||||
unreadLabel: "اعلانهای خواندهنشده",
|
||||
deleteLabel: "حذف اعلان",
|
||||
markSeenError: "بهروزرسانی اعلان با خطا مواجه شد.",
|
||||
markAllError: "بهروزرسانی اعلانها با خطا مواجه شد.",
|
||||
deleteError: "حذف اعلان با خطا مواجه شد.",
|
||||
loadError: "دریافت اعلانها با خطا مواجه شد.",
|
||||
openError: "باز کردن اعلان با خطا مواجه شد.",
|
||||
newTitle: "اعلان جدید",
|
||||
openAction: "باز کردن",
|
||||
summary: (total: number, unread: number) => `${total} کل، ${unread} خواندهنشده`,
|
||||
workspaceMembershipAddedTitle: "به ورکاسپیس اضافه شدید",
|
||||
workspaceMembershipAddedMessage: (actor: string, workspace: string, role: string) =>
|
||||
`${actor} شما را با نقش ${role} به ${workspace} اضافه کرد.`,
|
||||
workspaceMembershipRoleChangedTitle: "نقش شما در ورکاسپیس تغییر کرد",
|
||||
workspaceMembershipRoleChangedMessage: (actor: string, workspace: string, previousRole: string, newRole: string) =>
|
||||
`${actor} نقش شما را در ${workspace} از ${previousRole} به ${newRole} تغییر داد.`,
|
||||
workspaceMembershipDeactivatedTitle: "دسترسی ورکاسپیس غیرفعال شد",
|
||||
workspaceMembershipDeactivatedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} دسترسی شما به ${workspace} را غیرفعال کرد.`,
|
||||
workspaceMembershipRemovedTitle: "از ورکاسپیس حذف شدید",
|
||||
workspaceMembershipRemovedMessage: (actor: string, workspace: string) =>
|
||||
`${actor} شما را از ${workspace} حذف کرد.`,
|
||||
reportExportReadyTitle: "خروجی گزارش آماده است",
|
||||
reportExportReadyMessage: (exportType: string, workspace: string, fileName?: string | null) =>
|
||||
`خروجی ${exportType.toUpperCase()} گزارش ${workspace}${fileName ? ` با نام ${fileName}` : ""} آماده دانلود است.`,
|
||||
reportExportFailedTitle: "خروجی گزارش ناموفق بود",
|
||||
reportExportFailedMessage: (exportType: string, workspace: string) =>
|
||||
`تولید خروجی ${exportType.toUpperCase()} گزارش ${workspace} با خطا مواجه شد.`,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user