Files
qlockify-frontend-deployment/src/locales/fa.ts

622 lines
33 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export const fa = {
title: "Qlockify",
logout: "خروج",
logoutToast: "با موفقیت خارج شدید!",
confirmLogoutTitle: "تایید خروج",
confirmLogoutMessage: "آیا مطمئن هستید که می‌خواهید از حساب خود خارج شوید؟",
confirmLeave: "تغییرات ذخیره نشده‌ای دارید. آیا مطمئن هستید که می‌خواهید خارج شوید؟",
add: "افزودن",
create: "ایجاد",
cancel: "لغو",
save: "ذخیره",
remove: "حذف",
lightMode: "حالت روشن",
darkMode: "حالت تاریک",
loadingText: "در حال بارگذاری...",
loading: "در حال بارگذاری...",
noMoreResults: "نتیجه دیگری نیست.",
actions: {
create: "ایجاد",
view: "مشاهده",
edit: "ویرایش",
delete: "حذف",
cancel: "لغو",
},
login: {
welcome: (title: string = "Qlockifiy") => `به ${title} خوش آمدید`,
enterPassword: "رمز عبور خود را وارد کنید",
verifyNumber: "تایید شماره موبایل",
enterMobileDesc: "برای ادامه، شماره موبایل خود را وارد کنید",
signInDesc: "با استفاده از رمز عبور خود وارد شوید",
sentCodeDesc: (mobile: string) => `کد ۶ رقمی به ${mobile} ارسال شد`,
mobilePlaceholder: "شماره موبایل (مثلا ۰۹۱۲۳۴۵۶۷۸۹)",
continueWithPassword: "ادامه با رمز عبور",
orContinueWith: "یا ادامه با",
otpLogin: "ورود با کد یکبار مصرف",
register: "ثبت نام",
passwordPlaceholder: "رمز عبور",
signIn: "ورود",
back: "بازگشت",
otpPlaceholder: "کد ۶ رقمی",
verifyAndContinue: "تایید و ادامه",
terms: "با کلیک روی ادامه، شما با قوانین و مقررات و حریم خصوصی ما موافقت می‌کنید.",
brandingQuote: "زمان و ورک‌اسپیس‌ها خود را با پلتفرم مینیمال، سریع و امن ما بهینه مدیریت کنید.",
toasts: {
enterMobile: "لطفا شماره موبایل خود را وارد کنید",
verifySent: "کد تایید ارسال شد!",
failedOtp: "ارسال کد تایید با خطا مواجه شد",
fillAll: "لطفا تمام فیلدها را پر کنید",
successLogin: "با موفقیت وارد شدید!",
invalidCreds: "اطلاعات ورود نامعتبر است",
enterOtp: "لطفا کد تایید را وارد کنید",
invalidOtp: "کد تایید نامعتبر است"
}
},
loginTerms: {
prefix: "با ورود به سیستم، شما با ",
link: "شرایط خدمات و حریم خصوصی",
suffix: " ما موافقت می‌کنید."
},
terms: {
back: "بازگشت",
title: "شرایط خدمات و حریم خصوصی",
lastUpdated: "آخرین بروزرسانی: ۲۱ اسفند ۱۴۰۴",
sections: {
acceptance: {
title: "۱. پذیرش شرایط",
content: "با دسترسی و استفاده از Qlockify، شما موافقت می‌کنید که به این شرایط خدمات و تمامی قوانین و مقررات مربوطه پایبند باشید. اگر با هر یک از این شرایط موافق نیستید، استفاده یا دسترسی شما به این سایت ممنوع است."
},
license: {
title: "۲. مجوز کاربر و مسئولیت‌ها",
items: [
"شما باید اطلاعات دقیق، به‌روز و کامل را در طول فرآیند ثبت‌نام ارائه دهید.",
"شما مسئول حفظ امنیت حساب و رمز عبور خود هستید.",
"شما مجاز به استفاده از خدمات برای اهداف غیرقانونی یا غیرمجاز نیستید.",
"استفاده شما از خدمات نباید قوانین حوزه قضایی شما را نقض کند."
]
},
privacy: {
title: "۳. حریم خصوصی و جمع‌آوری داده‌ها",
p1: "ما حریم خصوصی شما را جدی می‌گیریم. ما اطلاعاتی را برای ارائه خدمات بهتر به کاربران خود جمع‌آوری می‌کنیم. انواع داده‌های شخصی که جمع‌آوری می‌کنیم شامل موارد زیر است:",
personalLabel: "اطلاعات شخصی",
personalText: "نام، آدرس ایمیل، شماره تلفن و تاریخ تولد ارائه‌شده در طول ثبت‌نام یا به‌روزرسانی پروفایل.",
usageLabel: "داده‌های استفاده",
usageText: "اطلاعات مربوط به نحوه دسترسی و استفاده از خدمات، از جمله زمان‌سنجی‌ها و معیارهای دستگاه.",
p2: "ما اطلاعات شناسایی شخصی شما را به دیگران نمی‌فروشیم، مبادله نمی‌کنیم یا اجاره نمی‌دهیم. ما از اقدامات امنیتی استاندارد صنعت برای محافظت در برابر دسترسی غیرمجاز، تغییر، افشا یا تخریب داده‌های شخصی شما استفاده می‌کنیم."
},
liability: {
title: "۴. محدودیت مسئولیت",
content: "در هیچ شرایطی Qlockify یا تأمین‌کنندگان آن مسئولیتی در قبال هرگونه خسارت (از جمله، بدون محدودیت، خسارت ناشی از دست دادن داده‌ها یا سود، یا به دلیل وقفه در کسب‌وکار) ناشی از استفاده یا عدم توانایی استفاده از مواد روی پلتفرم نخواهند داشت."
},
modifications: {
title: "۵. اصلاحات",
content: "ما ممکن است این شرایط خدمات را در هر زمان بدون اطلاع قبلی بازبینی کنیم. با استفاده از این وب‌سایت، شما موافقت می‌کنید که به نسخه فعلی این شرایط خدمات پایبند باشید."
},
},
},
profile: {
title: "پروفایل کاربر",
firstName: "نام",
lastName: "نام خانوادگی",
email: "ایمیل",
description: "توضیحات",
mobileNumber: "شماره موبایل",
birthDate: "تاریخ تولد",
yearsOld: "سال",
dateJoined: "تاریخ عضویت",
editInfo: "ویرایش اطلاعات",
changePicture: "تغییر تصویر",
save: "ذخیره",
cancel: "لغو",
upload: "آپلود",
remove: "حذف",
imageInput: "برای انتخاب کلیک کنید یا فایل را بکشید",
noEmail: "ایمیلی ثبت نشده",
toasts: {
successEdit: "پروفایل با موفقیت بروزرسانی شد!",
successImage: "عکس پروفایل بروزرسانی شد!",
successRemoveImage: "عکس پروفایل حذف شد!",
error: "خطایی رخ داد!"
}
},
workspace: {
title: "مدیریت ورک‌اسپیس‌ها",
createNew: "ایجاد ورک‌اسپیس جدید",
manage: "مدیریت ورک‌اسپیس‌ها",
nameLabel: "عنوان",
namePlaceholder: "نام ورک‌اسپیس را وارد کنید",
descriptionLabel: "توضیحات",
descriptionPlaceholder: "توضیحات (اختیاری)",
thumbnailLabel: "تصویر",
uploadImage: "برای آپلود تصویر کلیک کنید",
removeImage: "حذف تصویر",
thumbnailInvalidType: "نوع تصویر پشتیبانی نمی‌شود. از JPG، PNG یا WebP استفاده کنید.",
thumbnailMaxSizeError: "حجم تصویر باید حداکثر ۲ مگابایت باشد.",
searchMemberPlaceholder: "جستجو با موبایل دقیق (مثلا 09123456789)",
addMember: "افزودن عضو",
roleAdmin: "مدیر",
roleMember: "عضو",
userNotFound: "کاربر یافت نشد",
userAlreadyAdded: "کاربر قبلا اضافه شده است",
inviteMembers: "دعوت اعضا (شماره موبایل دقیق)",
selectedMembers: "اعضای انتخاب شده",
creating: "در حال ایجاد...",
submit: "ایجاد",
cancel: "لغو",
loading: "در حال بارگذاری...",
confirmDelete: "آیا از حذف این ورک‌اسپیس اطمینان دارید؟",
deleteError: "خطا در حذف ورک‌اسپیس",
subtitle: "ورک‌اسپیس‌های خود را مدیریت کنید",
noDescription: "بدون توضیحات",
emptyState: "شما در هیچ ورک‌اسپیس عضو نیستید.",
noWorkspaceSearch: "لطفاً عبارت جستجو را تغییر دهید.",
noWorkspace: "ورک‌اسپیس یافت نشد.",
createTitle: "ایجاد ورک‌اسپیس",
editTitle: "ویرایش ورک‌اسپیس",
detailTitle: "جزئیات ورک‌اسپیس",
save: "ذخیره",
create: "ایجاد",
noWorkspaceTitle: "خوش آمدید!",
noWorkspaceDesc: "لطفاً اولین ورک‌اسپیس خود را ایجاد کنید.",
back: "بازگشت به ورک‌اسپیس‌ها",
roleLabel: "نقش شما",
openReports: "مشاهده گزارش‌ها",
statsMembers: "اعضا",
statsRates: "نرخ‌های ثبت‌شده",
statsOwnersAdmins: "مالکان و ادمین‌ها",
statsGuests: "مهمان‌ها",
membersSectionTitle: "اعضا",
membersSectionSubtitle: "اعضای این ورک‌اسپیس و نقش فعلی آن‌ها.",
membersLocked: "فهرست کامل اعضا فقط برای مالک و ادمین قابل مشاهده است.",
manageMembers: "مدیریت اعضا",
mobileNumber: "شماره تماس",
youLabel: "شما",
resourcesTitle: "منابع",
resourceOpen: "مشاهده",
roleDistributionTitle: "توزیع نقش‌ها",
unknownMember: "عضو ناشناس",
roles: {
owner: "مالک",
admin: "ادمین",
member: "عضو",
guest: "مهمان",
},
createdSuccess: "ورک‌اسپیس با موفقیت ایجاد شد",
updatedSuccess: "ورک‌اسپیس با موفقیت ویرایش شد",
fetchError: "خطا در دریافت اطلاعات ورک‌اسپیس",
remove: "حذف",
noUsersFound: "کاربری یافت نشد",
selectRole: "انتخاب نقش",
add: "افزودن",
searchPlaceholder: "جستوجوی ورک‌اسپیس‌ها...",
deleteSuccess: "ورک‌اسپیس با موفقیت حذف شد",
deleteTitle: "حذف ورک‌اسپیس",
deleteWarning: "برای تأیید حذف، لطفاً نام ورک‌اسپیس را وارد کنید:",
members: "اعضا",
searchUser: "جستجوی کاربر با شماره موبایل",
searching: "در حال جستجو...",
noMembers: "عضوی یافت نشد.",
removeMemberTitle: "حذف عضو",
confirmDeleteTitle: "حذف عضو",
confirmDeleteMessage: "آیا مطمئن هستید که می‌خواهید این عضو را از ورک‌اسپیس حذف کنید؟",
successCreate: "ورک‌اسپیس با موفقیت ایجاد شد.",
toast: {
successCreate: "ورک‌اسپیس با موفقیت ساخته شد.",
errorCreate: "ایجاد ورک‌اسپیس ناموفق بود.",
successUpdate: "ورک‌اسپیس با موفقیت به‌روزرسانی شد.",
errorUpdate: "به‌روزرسانی ورک‌اسپیس با خطا مواجه شد.",
successAdd: "کاربر جدید با موفقیت به ورک‌اسپیس افزوده شد.",
errorAdd: "افزودن کاربر با خطا مواجه شد.",
successRemove: "کاربر با موفقیت از ورک‌اسپیس حذف شد.",
errorRemove: "حذف کاربر با خطا مواجه شد.",
successRole: "نقش کاربر با موفقیت تغییر کرد.",
errorRole: "تغییر نقش کاربر با خطا مواجه شد.",
errorLoad: "دریافت اطلاعات ورک‌اسپیس با خطا مواجه شد.",
cannotAddSelf: "شما به‌صورت خودکار مالک هستید.",
},
onlyNumbersAllowed: "برای شماره موبایل فقط مجاز به وارد کردن عدد هستید.",
},
clients: {
title: "مشتری‌ها",
description: (workspaceName: string) => `مدیریت مشتری‌ها برای ${workspaceName}`,
addClient: "افزودن مشتری",
searchPlaceholder: "جستجوی مشتری‌ها...",
noClients: "مشتری یافت نشد",
noClientsSearch: "لطفاً عبارت جستجو را تغییر دهید.",
noClientsAdd: "برای شروع اولین مشتری خود را اضافه کنید.",
addedOn: "تاریخ افزودن",
selectWorkspace: "لطفاً ابتدا یک ورک‌اسپیس انتخاب کنید.",
modalTitle: "ایجاد مشتری جدید",
clientName: "نام مشتری",
clientNamePlaceholder: "مثال: شرکت الف",
notes: "یادداشت‌ها",
notesPlaceholder: "توضیحات اختیاری...",
create: "ایجاد",
cancel: "انصراف",
editClient: "ویرایش مشتری",
deleteConfirmTitle: "حذف مشتری",
deleteConfirmMessage: (name: string) => `آیا از حذف ${name} اطمینان دارید؟`,
delete: "حذف",
saveChanges: "ذخیره تغییرات",
createSuccess: "مشتری با موفقیت ایجاد شد.",
updateSuccess: "مشتری با موفقیت به‌روزرسانی شد.",
deleteSuccess: "مشتری با موفقیت حذف شد.",
errors: {
createFailed: "خطا در ایجاد مشتری",
fetchFailed: "خطا در دریافت لیست مشتری‌ها",
updateFailed: "خطا در ویرایش مشتری",
deleteFailed: "خطا در حذف مشتری",
},
},
pagination: {
perPage: "در هر صفحه",
showing: "نمایش",
to: "تا",
of: "از",
previous: "قبلی",
page: "صفحه",
next: "بعدی",
},
sidebar: {
timesheet: 'تایم‌شیت',
reports: 'گزارش‌ها',
logs: "لاگ‌ها",
workspaces: 'ورک‌اسپیس‌ها',
clients: 'مشتری‌ها',
projects: "پروژه‌ها",
tags: "تگ‌ها",
expand: 'باز کردن',
collapse: 'جمع کردن',
},
ordering: {
createdAtDesc: "جدیدترین",
createdAt: "قدیمی‌ترین",
updatedAtDesc: "اخیراً بروزرسانی شده",
name: "نام (صعودی)",
nameDesc: "نام (نزولی)",
},
projects: {
title: "پروژه‌ها",
description: (workspaceName: string) => `مدیریت پروژه‌ها برای ${workspaceName}`,
active: "پروژه‌های فعال",
archived: "پروژه‌های بایگانی شده",
createNew: "ایجاد پروژه جدید",
searchPlaceholder: "جستجوی پروژه‌ها...",
selectWorkspace: "لطفاً ابتدا یک ورک‌اسپیس انتخاب کنید.",
titlePlaceholder: "عنوان پروژه",
descriptionPlaceholder: "توضیحات پروژه",
titleLabel: "عنوان",
descriptionLabel: "توضیحات",
clientLabel: "مشتری",
colorLabel: "رنگ",
loading: "در حال بارگذاری...",
client: "مشتری",
noClient: "بدون مشتری",
emptyState: "پروژه‌ای یافت نشد",
noProjectsSearch: "لطفاً عبارت جستجو را تغییر دهید.",
deleteTitle: "حذف پروژه",
deleteWarning: "برای تایید حذف، لطفاً نام پروژه را تایپ کنید:",
deleteSuccess: "پروژه با موفقیت حذف شد",
deleteError: "خطا در حذف پروژه",
create: "ایجاد",
cancel: "انصراف",
createProject: "ایجاد پروژه",
editProject: "ویرایش پروژه",
restore: "بازیابی",
archive: "بایگانی",
archiveSuccess: "پروژه با موفقیت بایگانی شد.",
restoreSuccess: "پروژه با موفقیت بازیابی شد.",
fetchError: "خطا در دریافت پروژه‌ها.",
clientFetchError: "خطا در دریافت لیست مشتری‌ها.",
filterClients: "فیلتر بر اساس مشتری",
clearClientFilters: "پاک کردن فیلترها",
memberAlreadyAdded: "این کاربر قبلا اضافه شده است",
creator: "سازنده",
addUser: "افزودن کاربر",
addFromWorkspace: "افزودن از اعضای ورک‌اسپیس",
searchMembers: "جستجوی اعضا",
addAllWorkspaceMembers: "افزودن همه اعضای ورک‌اسپیس",
confirmDeleteTitle: "حذف عضو",
confirmDeleteDesc: "آیا مطمئن هستید که می‌خواهید این عضو را حذف کنید؟",
roles: {
member: "عضو",
manager: "مدیر"
},
namePlaceholder: "نام پروژه...",
teamMembers: "اعضای تیم",
createSuccess: "پروژه با موفقیت ایجاد شد.",
createError: "خطا در ایجاد پروژه.",
updateSuccess: "پروژه با موفقیت به‌روزرسانی شد.",
updateError: "به‌روزرسانی پروژه با خطا مواجه شد.",
edit: "ویرایش پروژه",
projectMembers: "اعضای پروژه",
removeAllWorkspaceMembers: "حذف همه",
searchWorkspaceMembers: "جستجو با نام یا وارد کردن شماره موبایل...",
userNotFound: "کاربری با این شماره موبایل یافت نشد.",
alreadyInProject: "قبلاً اضافه شده",
addToProject: "افزودن به پروژه",
noWorkspaceMembers: "عضوی یافت نشد.",
},
tags: {
title: "تگ‌ها",
description: (workspaceName: string) => `مدیریت تگ‌ها برای ${workspaceName}`,
create: "ایجاد تگ",
createTitle: "ایجاد تگ",
editTitle: "ویرایش تگ",
deleteTitle: "حذف تگ",
deleteConfirmMessage: (name: string) => `آیا از حذف ${name} اطمینان دارید؟`,
searchPlaceholder: "جست‌وجوی تگ‌ها...",
nameLabel: "نام تگ",
namePlaceholder: "مثلاً طراحی",
colorLabel: "رنگ",
emptyState: "تگی یافت نشد",
noTagsSearch: "لطفاً عبارت جستجو را تغییر دهید.",
selectWorkspace: "لطفاً ابتدا یک ورک‌اسپیس انتخاب کنید.",
fetchError: "دریافت تگ‌ها با خطا مواجه شد.",
createSuccess: "تگ با موفقیت ایجاد شد.",
updateSuccess: "تگ با موفقیت به‌روزرسانی شد.",
saveError: "ذخیره تگ با خطا مواجه شد.",
deleteSuccess: "تگ با موفقیت حذف شد.",
deleteError: "حذف تگ با خطا مواجه شد.",
},
rates: {
workspaceSectionTitle: "نرخ‌های کاربران ورک‌اسپیس",
projectSectionTitle: "نرخ‌های کاربران پروژه",
workspaceRate: "دستمزد ساعتی",
projectOverride: "نرخ اختصاصی پروژه",
inheritsWorkspaceRate: "ارث‌بری از دستمزد ساعتی",
noRate: "بدون نرخ",
hourlyRatePlaceholder: "0.00",
currencyPlaceholder: "USD",
searchUnitPlaceholder: "جست‌وجوی واحد...",
removeRate: "حذف نرخ",
workspaceSaveSuccess: "نرخ کاربر ورک‌اسپیس ذخیره شد.",
workspaceSaveError: "ذخیره نرخ کاربر ورک‌اسپیس با خطا مواجه شد.",
workspaceRemoveSuccess: "نرخ کاربر ورک‌اسپیس حذف شد.",
workspaceRemoveError: "حذف نرخ کاربر ورک‌اسپیس با خطا مواجه شد.",
projectSaveSuccess: "نرخ کاربر پروژه ذخیره شد.",
projectSaveError: "ذخیره نرخ کاربر پروژه با خطا مواجه شد.",
projectRemoveSuccess: "نرخ کاربر پروژه حذف شد.",
projectRemoveError: "حذف نرخ کاربر پروژه با خطا مواجه شد.",
},
timesheet: {
title: "تایم‌شیت",
description: (workspaceName: string) => `ثبت زمان در ${workspaceName}`,
selectWorkspace: "لطفاً ابتدا یک ورک‌اسپیس انتخاب کنید.",
addEntry: "افزودن ورودی",
startTimer: "شروع تایمر",
stopTimer: "توقف تایمر",
timerRunning: "تایمر فعال است",
runningLabel: "تایمر فعلی",
runningBadge: "در حال اجرا",
noRunningEntry: "تایمر فعالی وجود ندارد",
searchPlaceholder: "جست‌وجوی ورودی‌های زمان...",
orderingNewest: "جدیدترین",
orderingOldest: "قدیمی‌ترین",
emptyState: "ورودی زمانی یافت نشد",
emptyDescription: "بدون توضیح",
createTitle: "افزودن ورودی زمان",
startTitle: "شروع تایمر",
editTitle: "ویرایش ورودی زمان",
createSuccess: "ورودی زمان با موفقیت ایجاد شد.",
startSuccess: "تایمر با موفقیت شروع شد.",
updateSuccess: "ورودی زمان با موفقیت به‌روزرسانی شد.",
saveError: "ذخیره ورودی زمان با خطا مواجه شد.",
stopSuccess: "تایمر با موفقیت متوقف شد.",
stopError: "توقف تایمر با خطا مواجه شد.",
deleteSuccess: "ورودی زمان با موفقیت حذف شد.",
deleteError: "حذف ورودی زمان با خطا مواجه شد.",
fetchError: "دریافت ورودی‌های زمان با خطا مواجه شد.",
optionsError: "دریافت پروژه‌ها و تگ‌ها با خطا مواجه شد.",
descriptionLabel: "توضیحات",
descriptionPlaceholder: "روی چه چیزی کار می‌کنید؟",
projectLabel: "پروژه",
noProject: "بدون پروژه",
startLabel: "شروع",
endLabel: "پایان",
timeLabel: "زمان",
billable: "قابل صورتحساب",
noTagsHint: "ابتدا از صفحه تگ‌ها، تگ ایجاد کنید.",
clearFilters: "پاک کردن فیلترها",
customFromLabel: "از تاریخ",
customToLabel: "تا تاریخ",
allClientsLabel: "همه مشتری‌ها",
allProjectsLabel: "همه پروژه‌ها",
allTagsLabel: "همه تگ‌ها",
showFiltersLabel: "نمایش فیلترها",
hideFiltersLabel: "مخفی کردن فیلترها",
applyFiltersLabel: "اعمال",
clientFilterPrefix: "مشتری",
projectFilterPrefix: "پروژه",
tagFilterPrefix: "تگ",
fromFilterPrefix: "از",
toFilterPrefix: "تا",
deleteTitle: "حذف ورودی زمان",
deleteConfirmMessage: "آیا از حذف این ورودی زمان اطمینان دارید؟",
restartConfirmMessage: "می‌خواهید یک تایمر جدید را از روی این ورودی شروع کنید؟",
discardConfirmMessage: "آیا از دور انداختن این تایمر در حال اجرا اطمینان دارید؟",
searchTagsLabel: "جست‌وجوی تگ‌ها...",
noTagsFoundLabel: "تگی پیدا نشد.",
searchProjectsLabel: "جست‌وجوی پروژه‌ها...",
noProjectsFoundLabel: "پروژه‌ای پیدا نشد.",
deletedProjectLabel: "پروژه حذف‌شده",
deletedTagLabel: "تگ حذف‌شده",
},
reports: {
title: "گزارش‌ها",
description: (workspaceName: string) => `مرور گزارش فعالیت برای ${workspaceName}`,
selectWorkspace: "لطفاً ابتدا یک ورک‌اسپیس انتخاب کنید.",
chartTab: "نمودار",
tableTab: "جدول",
period: "بازه",
periodThisWeek: "این هفته",
periodThisMonth: "این ماه",
periodThisYear: "این سال",
periodFirstHalf: "نیمه اول سال",
periodSecondHalf: "نیمه دوم سال",
periodCustom: "بازه دلخواه",
fromDate: "از تاریخ",
toDate: "تا تاریخ",
user: "کاربر",
allUsers: "همه کاربران",
searchUsers: "جست‌وجوی کاربران...",
client: "مشتری",
allClients: "همه مشتری‌ها",
searchClients: "جست‌وجوی مشتری‌ها...",
project: "پروژه",
allProjects: "همه پروژه‌ها",
searchProjects: "جست‌وجوی پروژه‌ها...",
tags: "تگ‌ها",
allTags: "همه تگ‌ها",
searchTags: "جست‌وجوی تگ‌ها...",
name: "نام",
clear: "پاک کردن",
apply: "اعمال",
totalHours: "مجموع ساعت",
billableHours: "ساعات کاری",
nonBillableHours: "ساعات غیر کاری",
hourlyRate: "نرخ ساعتی",
totalIncome: "مجموع درآمد",
chartTitle: "نمودار فعالیت",
totalSeconds: "مجموع ثانیه",
exportExcel: "خروجی Excel",
exportPdf: "خروجی PDF",
date: "تاریخ",
details: "جزئیات",
total: "مجموع",
clientsTable: "مشتری‌ها",
projectsTable: "پروژه‌ها",
tagsTable: "تگ‌ها",
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} با خطا مواجه شد.`,
},
}