diff --git a/README.md b/README.md index 12f57e3ea..5464b4a5a 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,7 @@ The built-in MCP server exposes work items, comments, pages, knowledge, tests, t **Internationalization** -- Ten built-in languages: English, Deutsch, Español, Français, Italiano, Português (Brasil), العربية, Русский, 简体中文, and 한국어, with right-to-left support for Arabic. +- Eleven built-in languages: English, Deutsch, Español, Français, Italiano, Português (Brasil), العربية, فارسی, Русский, 简体中文, and 한국어, with right-to-left support for Arabic and Persian. @@ -175,7 +175,7 @@ The built-in MCP server exposes work items, comments, pages, knowledge, tests, t

Available in many languages · Disponibile in molte lingue · متوفر بالعديد من اللغات · 支持多种语言
Доступно на многих языках · 다양한 언어로 사용 가능

-Windshift ships with ten built-in languages: English, Deutsch, Español, Français, Italiano, Português (Brasil), العربية, Русский, 简体中文, and 한국어, including right-to-left support for Arabic. +Windshift ships with eleven built-in languages: English, Deutsch, Español, Français, Italiano, Português (Brasil), العربية, فارسی, Русский, 简体中文, and 한국어, including right-to-left support for Arabic and Persian.

diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0768b5cc2..634f41582 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -15,6 +15,7 @@ "@fontsource/geist-sans": "^5.2.5", "@fontsource/inter": "^5.2.8", "@github/hotkey": "^3.1.1", + "@internationalized/date": "^3.12.0", "@lucide/svelte": "^1.14.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.6", diff --git a/frontend/package.json b/frontend/package.json index a402eef74..41ef1e47a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -64,6 +64,7 @@ "@fontsource/geist-sans": "^5.2.5", "@fontsource/inter": "^5.2.8", "@github/hotkey": "^3.1.1", + "@internationalized/date": "^3.12.0", "@lucide/svelte": "^1.14.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.6", diff --git a/frontend/scripts/check-i18n.js b/frontend/scripts/check-i18n.js index 8dde0a7a2..d255eafcd 100644 --- a/frontend/scripts/check-i18n.js +++ b/frontend/scripts/check-i18n.js @@ -24,11 +24,11 @@ const __dirname = dirname(fileURLToPath(import.meta.url)); const LOCALES_DIR = join(__dirname, '..', 'src', 'lib', 'locales'); const SRC_DIR = join(__dirname, '..', 'src'); const REFERENCE_LOCALE = 'en'; -// Russian, German, French, and Simplified Chinese are shipped as fully reviewed -// locales and must never silently fall back to English. Older locales may remain -// partially translated while still using the application's documented English -// runtime fallback. -const REQUIRED_FULL_COVERAGE_LOCALES = new Set(['ru', 'de', 'fr', 'zh-CN']); +// Russian, German, French, Simplified Chinese, and Persian are shipped with full +// key coverage and must never silently fall back to English. Older locales may +// remain partially translated while still using the application's documented +// English runtime fallback. +const REQUIRED_FULL_COVERAGE_LOCALES = new Set(['ru', 'de', 'fr', 'zh-CN', 'fa']); const PLURAL_SUFFIX_PATTERN = /_(zero|one|two|few|many|other)$/; // These values intentionally retain product names, code syntax, URLs, or sample identifiers. diff --git a/frontend/src/design-system/viewer/App.svelte b/frontend/src/design-system/viewer/App.svelte index 44c787a9f..2024987a0 100644 --- a/frontend/src/design-system/viewer/App.svelte +++ b/frontend/src/design-system/viewer/App.svelte @@ -38,6 +38,7 @@ import LayoutDashboard from '@lucide/svelte/icons/layout-dashboard'; import ClipboardPenLine from '@lucide/svelte/icons/clipboard-pen-line'; import ArrowLeft from '@lucide/svelte/icons/arrow-left'; + import Calendar from '@lucide/svelte/icons/calendar'; // Composition Examples import BoardExample from './pages/BoardExample.svelte' @@ -102,6 +103,7 @@ import CategoryMultiSelectPage from './pages/CategoryMultiSelectPage.svelte' import FieldSelectorPage from './pages/FieldSelectorPage.svelte' import MentionPickerPage from './pages/MentionPickerPage.svelte' + import DatePickerPage from './pages/DatePickerPage.svelte' let currentPage = $state(window.location.hash.slice(1) || 'board-example') let colorMode = $state('light') @@ -212,6 +214,7 @@ { id: 'categorymultiselect', label: 'CategoryMultiSelect', icon: Tag }, { id: 'fieldselector', label: 'FieldSelector', icon: List }, { id: 'mentionpicker', label: 'MentionPicker', icon: AtSign }, + { id: 'datepicker', label: 'DatePicker', icon: Calendar }, ] }, ] @@ -363,6 +366,8 @@ {:else if currentPage === 'mentionpicker'} + {:else if currentPage === 'datepicker'} + {/if} diff --git a/frontend/src/design-system/viewer/pages/DatePickerPage.svelte b/frontend/src/design-system/viewer/pages/DatePickerPage.svelte new file mode 100644 index 000000000..7206dd31f --- /dev/null +++ b/frontend/src/design-system/viewer/pages/DatePickerPage.svelte @@ -0,0 +1,71 @@ + + +

+

DatePicker

+

+ A calendar-aware date picker built on Melt UI's headless calendar and + @internationalized/date. The bound value stays a Gregorian + YYYY-MM-DD string; the calendar follows the UI locale + (Persian for fa) unless overridden. +

+ +
+

Basic

+
+ +
+

Value: {basic || '—'}

+
+ +
+

Prefilled and clearable

+
+ +
+

Value: {prefilled || '—'}

+
+ +
+

Calendar override

+

+ Force the Persian or Gregorian calendar regardless of the UI locale. +

+
+ + +
+
+ +
+

Bounded

+
+ +
+
+
diff --git a/frontend/src/lib/components/Input.svelte b/frontend/src/lib/components/Input.svelte index 00f1e885a..87e0c923f 100644 --- a/frontend/src/lib/components/Input.svelte +++ b/frontend/src/lib/components/Input.svelte @@ -1,6 +1,7 @@ +{#if type === 'date'} + { + const synthetic = { target: { value: next } }; + oninput?.(synthetic); + onchange?.(synthetic); + }} + /> +{:else} +{/if} diff --git a/frontend/src/lib/features/items/SidebarDateField.svelte b/frontend/src/lib/features/items/SidebarDateField.svelte index afdb281fb..a0dd7556f 100644 --- a/frontend/src/lib/features/items/SidebarDateField.svelte +++ b/frontend/src/lib/features/items/SidebarDateField.svelte @@ -1,6 +1,7 @@
{#if editing}
- onSave(event.currentTarget.value || null)} - class="w-full px-2 py-1 rounded-md text-sm focus:outline-none focus:ring-0" - style="background-color: transparent; color: var(--ds-text);" - use:focusAndShowPicker + onchange={(next) => onSave(next || null)} + dataTestid={`${testId}-input`} />
{:else} diff --git a/frontend/src/lib/forms/WorkItemForm.svelte b/frontend/src/lib/forms/WorkItemForm.svelte index 06d92c723..c7fcdce0e 100644 --- a/frontend/src/lib/forms/WorkItemForm.svelte +++ b/frontend/src/lib/forms/WorkItemForm.svelte @@ -18,6 +18,7 @@ import { formatDateOnly, formatDueDate } from '../utils/dateFormatter.js'; import MilkdownEditor from '../editors/LazyMilkdownEditor.svelte'; import ChipPicker from '../pickers/ChipPicker.svelte'; + import DatePicker from '../pickers/DatePicker.svelte'; import CustomFieldRenderer from '../features/items/CustomFieldRenderer.svelte'; import PriorityPicker from '../pickers/PriorityPicker.svelte'; import MilestoneCombobox from '../pickers/MilestoneCombobox.svelte'; @@ -83,18 +84,9 @@ forceVisible: true }); - // Optional dates are presented as chips. Open the browser's native calendar - // as soon as the chip mounts its input so setting a date remains a one-click - // interaction. The focused, visible input is the fallback when showPicker is - // unavailable or the browser declines the programmatic picker request. - function focusAndShowDatePicker(node) { - node.focus(); - try { - node.showPicker?.(); - } catch { - // Keep the focused input available for manual entry. - } - } + // Optional dates are presented as chips that open a popover holding the + // calendar-aware date field. Native locales open the OS picker on mount so + // setting a date stays a one-click interaction. // Reactive effects for data loading based on form state @@ -390,14 +382,12 @@ class="z-[70] rounded-lg shadow-lg p-3" style="background-color: var(--ds-surface-raised); border: 1px solid var(--ds-border);" > -
{/if} @@ -422,14 +412,12 @@ class="z-[70] rounded-lg shadow-lg p-3" style="background-color: var(--ds-surface-raised); border: 1px solid var(--ds-border);" > - {/if} @@ -454,14 +442,12 @@ class="z-[70] rounded-lg shadow-lg p-3" style="background-color: var(--ds-surface-raised); border: 1px solid var(--ds-border);" > - {/if} diff --git a/frontend/src/lib/locales/dateFormats.js b/frontend/src/lib/locales/dateFormats.js index dae6f341d..d4118b833 100644 --- a/frontend/src/lib/locales/dateFormats.js +++ b/frontend/src/lib/locales/dateFormats.js @@ -27,6 +27,7 @@ export const DATE_FORMATS = { fr: { date: '02/01/2006', dateTime: '02/01/2006 15:04', time: '15:04' }, ko: { date: '2006. 1. 2.', dateTime: '2006. 1. 2. 15:04', time: '15:04' }, it: { date: '02/01/2006', dateTime: '02/01/2006, 15:04', time: '15:04' }, + fa: { date: '2006/1/2', dateTime: '2006/1/2، 15:04', time: '15:04' }, }; /** Keys every locale entry must define. */ diff --git a/frontend/src/lib/locales/de/ui.js b/frontend/src/lib/locales/de/ui.js index 661ed8fc0..caba100ac 100644 --- a/frontend/src/lib/locales/de/ui.js +++ b/frontend/src/lib/locales/de/ui.js @@ -218,6 +218,14 @@ export default { showingOfTotal: 'Zeige {shown} von {total} — tippen zum Suchen', selectIteration: 'Iteration auswählen', noIteration: 'Keine Iteration', + + // Date Picker + datePicker: { + previousMonth: 'Vorheriger Monat', + nextMonth: 'Nächster Monat', + openCalendar: 'Kalender öffnen', + selectDate: 'Datum auswählen...', + }, }, editors: { enterText: 'Text eingeben...', diff --git a/frontend/src/lib/locales/en/ui.js b/frontend/src/lib/locales/en/ui.js index 8262ffcf5..a0f5969bc 100644 --- a/frontend/src/lib/locales/en/ui.js +++ b/frontend/src/lib/locales/en/ui.js @@ -216,6 +216,14 @@ export default { // Approval Set Picker selectApprovalSet: 'Select approval set', + + // Date Picker + datePicker: { + previousMonth: 'Previous month', + nextMonth: 'Next month', + openCalendar: 'Open calendar', + selectDate: 'Select date...', + }, }, editors: { diff --git a/frontend/src/lib/locales/fa/actions.js b/frontend/src/lib/locales/fa/actions.js new file mode 100644 index 000000000..f5d283b84 --- /dev/null +++ b/frontend/src/lib/locales/fa/actions.js @@ -0,0 +1,296 @@ +export default { + "actions": { + "title": "اقدامات", + "description": "گردش کار را با اقدامات مبتنی بر قانون به طور خودکار انجام دهید", + "create": "ایجاد اکشن", + "createFirst": "اولین اقدام خود را ایجاد کنید", + "noActions": "هنوز هیچ اقدامی وجود ندارد", + "noActionsDescription": "اقداماتی را برای خودکارسازی گردش کار خود بر اساس رویدادهای مورد ایجاد کنید", + "enabled": "فعال شد", + "disabled": "غیرفعال", + "enable": "فعال کردن", + "disable": "غیر فعال کردن", + "viewLogs": "مشاهده گزارش‌ها", + "confirmDelete": "آیا مطمئن هستید که می خواهید عمل \"{name}\" را حذف کنید؟", + "failedToSave": "عملکرد ذخیره نشد", + "newAction": "اقدام جدید", + "templates": { + "pickTitle": "یک الگوی عمل را انتخاب کنید", + "fromTemplate": "از قالب", + "empty": "هیچ قالبی در دسترس نیست", + "help": "یک طرح اتوماسیون ارائه‌شده را در این فضای کاری اعمال کنید. هر طرح یک اقدام جدید ایجاد می‌کند که می توانید بعداً آن را ویرایش کنید.", + "apply": "اعمال" + }, + "trigger": { + "statusTransition": "انتقال وضعیت", + "statusLoop": "حلقه وضعیت", + "itemCreated": "مورد ایجاد شد", + "itemUpdated": "مورد به روز شد", + "itemLinked": "مورد پیوند شد", + "slaBreached": "SLA نقض شد", + "slaWarning": "SLA هشدار", + "commentCreated": "نظر ایجاد شد", + "itemInactive": "مورد غیرفعال است", + "manual": "دستی", + "respondToCascades": "به تغییرات ناشی از عمل پاسخ دهید", + "respondToCascadesHint": "هنگامی که فعال باشد، این اقدام زمانی که توسط اقدامات دیگر، نه فقط تغییرات کاربر، فعال می شود، نیز اجرا می شود." + }, + "manualAccess": { + "label": "چه کسی می‌تواند این اقدام دستی را اجرا کند؟", + "allEditors": "همه ویرایشگرهای فضای کاری", + "unrestrictedHint": "بدون محدودیت نقش هر کسی با دسترسی ویرایش می‌تواند این اقدام را ببیند و اجرا کند.", + "restrictedHint": "فقط اعضای دارای حداقل یک نقش انتخاب شده می توانند این عمل را ببینند و اجرا کنند. مدیران فضای کاری همیشه دسترسی را حفظ می کنند." + }, + "nodes": { + "trigger": "ماشه", + "setField": "فیلد را تنظیم کنید", + "setStatus": "وضعیت را تنظیم کنید", + "addComment": "اضافه کردن نظر", + "notifyUser": "به کاربر اطلاع دهید", + "condition": "شرط", + "updateAsset": "به روز رسانی دارایی", + "createAsset": "ایجاد دارایی", + "httpRequest": "درخواست HTTP", + "containerRun": "کانتینر را اجرا کنید", + "aiExtract": "استخراج هوش مصنوعی", + "aiAgent": "عامل هوش مصنوعی", + "relatedItems": "برای هر مورد مرتبط", + "transitionItem": "مورد انتقال", + "roundRobinAssign": "تخصیص نوبتی", + "createMilestone": "نقطه عطف ایجاد کنید", + "notifyCustomer": "به مشتری اطلاع دهید", + "insertCannedResponse": "درج پاسخ آماده", + "adjustLabels": "برچسب ها را تنظیم کنید" + }, + "aiUpdated": "اکشن به روز شده توسط هوش مصنوعی", + "runAs": "اجرا به عنوان", + "runAsTriggerUser": "به عنوان کاربر محرک اجرا شود", + "runAsHint": "این اقدام با مجوزهای این کاربر اجرا می‌شود. برای اجرا به عنوان کسی که باعث آن شده است، خالی بگذارید.", + "runAsReadonlyHint": "برای تغییر به اجازه Set Action Actor نیاز دارد.", + "addNodes": "اضافه کردن گره ها", + "tips": "نکات", + "tipDragToConnect": "برای اتصال گره ها را از دستگیره ها بکشید", + "tipClickToEdit": "برای پیکربندی یک گره کلیک کنید", + "tipConditionBranches": "شرایط دارای شاخه های درست/نادرست هستند", + "nodeConfig": "پیکربندی گره", + "config": { + "from": "از", + "to": "به", + "selectField": "انتخاب فیلد...", + "selectStatus": "انتخاب وضعیت...", + "config": "پیکربندی", + "configure": "پیکربندی کنید", + "selectConfig": "پیکربندی را انتخاب کنید", + "enterComment": "نظر را وارد کنید...", + "selectRecipient": "انتخاب گیرنده...", + "setCondition": "تنظیم شرط ...", + "targetStatus": "وضعیت هدف", + "fieldName": "نام فیلد", + "value": "مقدار", + "commentContent": "محتوای نظر", + "commentPlaceholder": "متن نظر را وارد کنید برای متغیرها از {{item.title}} استفاده کنید.", + "privateComment": "نظر خصوصی (فقط داخلی)", + "fieldToCheck": "فیلد برای بررسی", + "scopeThisItem": "این مورد", + "scopeParentItem": "مورد والد", + "operator": "عملگر", + "compareValue": "مقایسه مقدار", + "private": "خصوصی", + "triggerType": "نوع ماشه", + "fromStatus": "از وضعیت", + "toStatus": "به وضعیت", + "loopStatus": "وضعیت حلقه", + "anyStatus": "هر وضعیت", + "triggerField": "فیلد تغییر کرد", + "anyField": "هر فیلدی (همه تغییرات)", + "recipientType": "نوع گیرنده", + "notifyMessage": "پیام", + "notifyPlaceholder": "پیام را وارد کنید برای متغیرها از {{item.title}} استفاده کنید.", + "enterMessage": "پیام را وارد کنید...", + "notifySubject": "موضوع", + "notifySubjectPlaceholder": "موضوع بلیط را خالی بگذارید", + "notifyCustomerPrivacyHint": "وقتی نظر راه‌انداز خصوصی است، به‌طور خودکار رد می‌شود.", + "commentAuthor": "نویسنده نظر", + "commentAnyAuthor": "هر نویسنده ای", + "commentCustomer": "مشتری پاسخ می دهد", + "commentAgent": "نظرات عامل", + "commentPrivacyHint": "نظرات خصوصی هرگز باعث ایجاد اقدامات قابل مشاهده برای مشتری نمی شود.", + "inactiveHours": "ساعات غیرفعال", + "inactiveHoursPlaceholder": "به عنوان مثال 24", + "inactiveHoursHint": "زمانی آتش می گیرد که یک بلیط باز برای این چند ساعت هیچ فعالیتی نداشته باشد.", + "cannedResponse": "پاسخ آماده", + "selectCannedResponse": "انتخاب پاسخ آماده...", + "cannedResponseHint": "قطعه‌های خصوصی و درج‌هایی که توسط یک نظر خصوصی فعال می‌شوند، به عنوان یادداشت‌های داخلی پست می‌شوند.", + "addLabels": "برچسب ها را اضافه کنید", + "removeLabels": "برچسب ها را حذف کنید", + "selectLabels": "انتخاب برچسب ها...", + "noLabels": "هنوز برچسب فضای کاری وجود ندارد.", + "adjustLabelsHint": "برچسب‌های گمشده به‌جای شکست در عملکرد، در گزارش اجرا گزارش می‌شوند.", + "includeLink": "شامل پیوند به مورد", + "sourceAssetField": "فیلد دارایی در مورد", + "selectAssetField": "انتخاب فیلد دارایی...", + "sourceAssetFieldHint": "فیلد موردی را که حاوی دارایی پیوند شده است انتخاب کنید", + "targetAssetType": "نوع دارایی هدف", + "selectAssetType": "انتخاب نوع دارایی...", + "fieldMappingsLabel": "نگاشت فیلد", + "fieldMappings": "{count} نگاشت فیلد", + "fieldMappings_one": "{count} نگاشت فیلد", + "fieldMappings_other": "{count} نگاشت فیلد", + "configureAssetUpdate": "پیکربندی به‌روزرسانی دارایی...", + "fromField": "از فیلد", + "sourceTypeVariable": "متغیر/قالب", + "sourceTypeItemField": "فیلد مورد", + "sourceTypeLiteral": "مقدار تحت اللفظی", + "selectTargetField": "انتخاب فیلد هدف...", + "addMapping": "نگاشت را اضافه کنید", + "milestonePickerHint": "شناسه‌های نقاط عطف را برای اقدام ذخیره می‌کند. نام‌ها فقط برای ویرایش نمایش داده می‌شوند.", + "userPickerHint": "یک کاربر خاص را انتخاب کنید یا شناسه/الگوی کاربر را در زیر تایپ کنید.", + "assetSet": "مجموعه دارایی", + "selectAssetSet": "انتخاب مجموعه دارایی...", + "assetTitle": "عنوان دارایی", + "assetTitleHint": "از {{item.title}} یا متغیرهای دیگر استفاده کنید", + "assetDescription": "توضیحات", + "assetTagLabel": "برچسب دارایی", + "assetCategory": "دسته بندی", + "selectCategory": "انتخاب دسته (اختیاری)...", + "assetStatus": "وضعیت", + "selectStatusOptional": "انتخاب وضعیت (اختیاری)...", + "requiredField": "مورد نیاز", + "configureAssetCreation": "پیکربندی ایجاد دارایی...", + "capability": "قابلیت", + "selectCapability": "انتخاب قابلیت ...", + "noCapabilitiesForWorkspace": "هیچ قابلیتی در این فضای کاری موجود نیست. از یک مدیر برای ارائه یک بخواهید.", + "configureRequest": "پیکربندی درخواست HTTP...", + "configureExtract": "پیکربندی استخراج AI...", + "selectModelAndTools": "انتخاب مدل و ابزار ...", + "httpCapability": "قابلیت کلاینت HTTP", + "httpMethod": "روش", + "urlTemplate": "الگوی URL", + "requestBody": "بدنه درخواست", + "requestBodyPlaceholder": "اختیاری. بدنه JSON، ممکن است از {{variables}} استفاده کند.", + "httpHeaders": "سرصفحه ها", + "addHeader": "هدر را اضافه کنید", + "headerName": "نام سربرگ", + "headerValue": "مقدار", + "dockerCapability": "محیط Docker", + "timeoutSecs": "تایم اوت (ثانیه)", + "llmCapability": "اتصال LLM", + "model": "مدل", + "tools": "ابزار", + "aiPrompt": "پرامپت", + "aiExtractPromptPlaceholder": "استخراج داده های ساخت یافته از ورودی در مورد اینکه چه چیزی باید استخراج شود مشخص باشید.", + "systemPrompt": "پرامپت سیستم", + "systemPromptPlaceholder": "شما یک دستیار مفید هستید. استفاده از ابزار برای ...", + "inputField": "فیلد ورودی", + "inputFieldPlaceholder": "نام متغیر برای خواندن ورودی از", + "inputFields": "فیلدهای ورودی", + "inputFieldsPlaceholder": "نام متغیرهای جدا شده با کاما", + "outputField": "فیلد خروجی", + "outputFieldPlaceholder": "نام متغیر برای نوشتن خروجی", + "outputSchema": "طرحواره JSON خروجی", + "agentTools": "ابزار", + "agentToolsHint": "قابلیت‌های کلاینت HTTP که عامل ممکن است فراخوانی کند. فقط قابلیت‌های محدود به این فضای کاری فهرست شده‌اند.", + "noToolsAvailable": "هیچ قابلیت کلاینت HTTP برای این فضای کاری موجود نیست.", + "maxSteps": "حداکثر مراحل" + }, + "recipients": { + "assignee": "مسئول", + "creator": "ایجادکننده", + "specific": "کاربران خاص" + }, + "condition": { + "true": "بله", + "false": "خیر" + }, + "operators": { + "equals": "برابر است", + "notEquals": "برابر نیست", + "contains": "حاوی", + "greaterThan": "بزرگتر از", + "lessThan": "کمتر از", + "isEmpty": "خالی است", + "isNotEmpty": "خالی نیست" + }, + "logs": { + "title": "گزارش های اجرایی", + "noLogs": "بدون گزارش اجرا", + "status": "وضعیت", + "running": "در حال اجرا", + "completed": "تکمیل شد", + "failed": "شکست خورد", + "skipped": "رد شد", + "startedAt": "شروع شده در", + "completedAt": "تکمیل شده در", + "error": "خطا", + "details": "جزئیات", + "viewDetails": "مشاهده جزئیات" + }, + "trace": { + "title": "جزئیات اجرا", + "noSteps": "هیچ مرحله اجرایی ثبت نشده است", + "setStatus": "وضعیت از \"{from}\" به \"{to}\" تغییر کرد", + "setField": "{field} را از \"{from}\" روی \"{to}\" تنظیم کنید", + "addComment": "{prefix}نظر اضافه شد: \"{content}\"", + "notifyUser": "اعلان برای کاربران {count} ارسال شد", + "notifyUser_one": "اعلان برای کاربر {count} ارسال شد", + "notifyUser_other": "اعلان برای کاربران {count} ارسال شد", + "notifySkipped": "اعلان نادیده گرفته شد: {reason}", + "conditionResult": "وضعیت به {result} ارزیابی شد", + "updateAsset": "دارایی به‌روزرسانی شده #{asset_id}", + "updateAssetSkipped": "به‌روزرسانی دارایی نادیده گرفته شد: {reason}", + "createAsset": "دارایی ایجاد شده شماره {asset_id}: {title}", + "createAssetFailed": "ایجاد دارایی انجام نشد: {reason}" + }, + "test": { + "title": "آزمایش اقدام", + "description": "موردی را برای اجرای این اقدام انتخاب کنید. این اقدام بلافاصله با دور زدن ماشه معمولی اجرا می‌شود.", + "selectItem": "مورد را انتخاب کنید", + "itemPlaceholder": "جستجو برای یک مورد ...", + "execute": "اکشن را اجرا کنید", + "run": "اجرای تست", + "executionFailed": "عملکرد اجرا نشد", + "executionQueued": "اقدام برای اجرا در صف قرار گرفت" + }, + "placeholders": { + "title": "متغیرهای موجود", + "description": "از این متغیرها در قالب خود استفاده کنید. زمانی که اکشن اجرا می شود، آنها با مقادیر واقعی جایگزین می شوند.", + "showReference": "نمایش مرجع جای‌نگهدار", + "categories": { + "item": "فیلدهای مورد", + "user": "کاربر فعلی", + "old": "مقادیر قبلی", + "trigger": "زمینه ماشه" + }, + "item": { + "title": "عنوان مورد", + "id": "شناسه مورد", + "statusId": "شناسه وضعیت", + "assigneeId": "شناسه مسئول", + "any": "فیلد هر مورد" + }, + "user": { + "name": "نام کامل کاربر", + "email": "ایمیل کاربر", + "id": "شناسه کاربر" + }, + "old": { + "description": "مقدار قبلی قبل از تغییر", + "example": "مقدار قبلی هر فیلد" + }, + "trigger": { + "itemId": "شناسه مورد راه‌انداز", + "workspaceId": "شناسه فضای کاری", + "actorUserId": "کاربری که اقدام را راه اندازی کرده است", + "newField": "مقدار جدید یک فیلد تغییر یافته، مثلاً trigger.new_iteration_id", + "fieldFallback": "مخفف مقدار جدید، مثلاً trigger.iteration_id", + "oldField": "مقدار قبلی یک فیلد تغییر یافته، مثلاً trigger.old_iteration_id" + }, + "parent": { + "openChildCount": "فرزندان مستقیم باز مورد والد", + "any": "هر فیلدی از مورد اصلی" + } + }, + "switchToVertical": "به طرح بندی عمودی بروید", + "switchToHorizontal": "به طرح بندی افقی بروید" + } +}; diff --git a/frontend/src/lib/locales/fa/admin.js b/frontend/src/lib/locales/fa/admin.js new file mode 100644 index 000000000..d7b96d97f --- /dev/null +++ b/frontend/src/lib/locales/fa/admin.js @@ -0,0 +1,1243 @@ +export default { + "settings": { + "title": "تنظیمات", + "subtitle": "تنظیمات برنامه خود را پیکربندی کنید", + "general": "عمومی", + "appearance": "ظاهر", + "privacy": "حریم خصوصی", + "language": "زبان", + "timezone": "منطقه زمانی", + "dateFormat": "فرمت تاریخ", + "timeFormat": "فرمت زمان", + "theme": "پوسته", + "lightMode": "حالت نور", + "darkMode": "حالت تاریک", + "systemDefault": "پیش فرض سیستم", + "themeManager": { + "background": "پس زمینه", + "text": "متن", + "failedToLoad": "پوسته‌ها بارگیری نشد.", + "failedToCreate": "پوسته ایجاد نشد.", + "failedToUpdate": "پوسته به‌روزرسانی نشد.", + "failedToDelete": "پوسته حذف نشد.", + "failedToActivate": "پوسته فعال نشد.", + "failedToUploadLogo": "لوگو بارگذاری نشد.", + "defaults": { + "default": { + "name": "پیش فرض", + "description": "پوسته تمیز با رنگ‌های ناوبری استاندارد" + }, + "ocean": { + "name": "اقیانوس", + "description": "پوسته ناوبری با رنگ آبی حرفه‌ای" + }, + "forest": { + "name": "جنگل", + "description": "پوسته ناوبری سبز الهام‌گرفته از طبیعت" + } + } + }, + "admin": "اداره", + "systemSettings": "تنظیمات سیستم", + "organizationSettings": "تنظیمات سازمان", + "workspaceSettings": "تنظیمات فضای کاری", + "adminGroups": { + "contentStructure": "محتوا و ساختار", + "workflowProcess": "گردش کار و فرآیند", + "integrationLinks": "ادغام و پیوندها", + "usersAccess": "کاربران و دسترسی", + "communication": "ارتباط", + "assetManagement": "مدیریت دارایی", + "system": "سیستم" + }, + "adminItems": { + "customFields": { + "title": "فیلدهای سفارشی", + "description": "تعاریف فیلد سفارشی را مدیریت کنید" + }, + "screens": { + "title": "صفحه نمایش ها", + "description": "صفحه‌نمایش و طرح‌بندی فرم را پیکربندی کنید" + }, + "hierarchyLevels": { + "title": "سطوح سلسله مراتبی", + "description": "سطوح سلسله مراتب مورد کاری را پیکربندی کنید" + }, + "itemTypes": { + "title": "انواع موارد", + "description": "انواع مواردی کاری را با نمادها و رنگ ها مدیریت کنید" + }, + "priorities": { + "title": "اولویت ها", + "description": "سطوح اولویت را با نمادها و رنگ ها پیکربندی کنید" + }, + "contactLevels": { + "title": "سطوح تماس", + "description": "سطوح تماس پورتال مورد استفاده برای اشتراک‌گذاری درخواست سازمان را مدیریت کنید" + }, + "configurationSets": { + "title": "مجموعه های پیکربندی", + "description": "مدیریت مجموعه های پیکربندی" + }, + "statuses": { + "title": "وضعیت ها", + "description": "دسته های وضعیت و وضعیت های فردی را مدیریت کنید" + }, + "workflows": { + "title": "گردش کار", + "description": "طراحی و مدیریت انتقال گردش کار" + }, + "conditionSets": { + "title": "مجموعه شرایط", + "description": "شرایطی را تعریف کنید که انتقال گردش کار را محدود می کند" + }, + "approvalSets": { + "title": "مجموعه های تایید", + "description": "تأییدیه‌های چند مرحله‌ای که انتقال‌ها از یک وضعیت را کنترل می‌کنند" + }, + "scmProviders": { + "title": "ارائه‌دهندگان SCM", + "description": "پیکربندی GitHub، GitLab، Gitea، و Bitbucket ادغام" + }, + "integrationProviders": { + "title": "ادغام ها", + "description": "مدیریت یکپارچه‌سازی‌های خروجی Windshift به برنامه‌های ورودی و اتصال به برنامه‌هایی که از طریق OAuth مجوز می‌دهند." + }, + "systemImport": { + "title": "درون‌ریزی سیستم", + "description": "وارد کردن داده ها از سیستم های خارجی" + }, + "linkTypes": { + "title": "انواع لینک", + "description": "انواع پیوند بین موارد را مدیریت کنید" + }, + "attachments": { + "title": "پیوست ها", + "description": "تنظیمات پیوست را مدیریت کنید" + }, + "modules": { + "title": "ماژول ها", + "description": "ماژول های سیستم را فعال یا غیرفعال کنید" + }, + "themes": { + "title": "پوسته‌ها", + "description": "پوسته‌ها و ظاهر برنامه را مدیریت کنید" + }, + "users": { + "title": "کاربران", + "description": "مدیریت حساب های کاربری و پروفایل ها" + }, + "groups": { + "title": "گروه ها", + "description": "گروه های کاربری و عضویت ها را مدیریت کنید" + }, + "permissions": { + "title": "مجوزهای جهانی", + "description": "تعاریف مجوز جهانی را مدیریت کنید" + }, + "workspaceRoles": { + "title": "نقش های فضای کاری", + "description": "نقش های فضای کاری و مجوزهای آنها را مشاهده کنید" + }, + "sso": { + "title": "ورود یکپارچه", + "description": "پیکربندی ارائه‌دهنده هویت OIDC برای SSO" + }, + "security": { + "title": "امنیت", + "description": "تنظیمات امنیتی و کنترل های ویژگی را مدیریت کنید" + }, + "workspaces": { + "title": "فضاهای کاری", + "description": "فضاهای کاری و تنظیمات را مدیریت کنید" + }, + "notificationSettings": { + "title": "تنظیمات اعلان", + "description": "تنظیمات اعلان ها را مدیریت کنید" + }, + "emailTemplates": { + "title": "قالب های ایمیل", + "description": "موضوع و متن ایمیل های تراکنشی را سفارشی کنید" + }, + "channels": { + "title": "کانال ها", + "description": "کانال های ورودی و خروجی، پورتال ها و قلاب های وب را پیکربندی کنید" + }, + "assets": { + "title": "دارایی ها", + "description": "مجموعه‌ها، انواع، دسته‌ها و دارایی‌ها را مدیریت کنید" + }, + "aiFeatures": { + "title": "ویژگی های هوش مصنوعی", + "description": "پیکربندی کنید کدام ویژگی‌های هوش مصنوعی فعال هستند و اتصالات LLM آن‌ها" + }, + "llmConnections": { + "title": "اتصالات هوش مصنوعی", + "description": "ارائه دهندگان مدل هوش مصنوعی را برای ویژگی های هوشمند پیکربندی کنید" + }, + "workItemStaleness": { + "title": "معیارهای کیفیت", + "description": "زمانی که موارد کار دست نخورده کهنه در نظر گرفته شوند، پیکربندی کنید" + }, + "agentTemplates": { + "title": "الگوهای عامل", + "description": "کاتالوگ ایجاد Agent Studio را بازنویسی کنید: نام‌های الگو، انواع نمایه و دستورالعمل‌ها" + }, + "actionCapabilities": { + "title": "قابلیت های اقدام", + "description": "مدیریت محیط‌های Docker، کلاینت‌های HTTP، و اتصالات LLM برای اقدام‌ها" + }, + "diagnostics": { + "title": "تشخیص", + "description": "سلامت سیستم: ساعت سرور، خرابی عملکرد و سایر سیگنال های عملیاتی" + }, + "packs": { + "title": "بسته های چارچوب", + "description": "بسته های پیکربندی داخلی و بسته های محتوا را در یک فضای کاری نصب کنید" + } + }, + "featurePacks": { + "title": "بسته های چارچوب", + "subtitle": "یک بسته داخلی را نصب کنید تا یک فضای کاری با مجموعه پیکربندی و محتوای آن فراهم شود", + "loading": "در حال بارگیری بسته‌ها…", + "empty": "این سرور هیچ بسته داخلی ارسال نمی کند.", + "loadFailed": "بسته های داخلی بارگیری نشد", + "version": "نسخه", + "content": "محتوا", + "plugins": "پلاگین ها", + "noContent": "فقط طرحواره", + "apply": "اعمال", + "verify": "تأیید کنید", + "cancel": "لغو کنید", + "targetNew": "فضای کاری جدید", + "newWorkspaceName": "نام فضای کاری جدید", + "targetRequired": "ابتدا یک نام فضای کاری جدید وارد کنید", + "reportTitle": "اعمال گزارش", + "reportStatus": "وضعیت", + "stagePlugins": "پلاگین ها", + "stageWorkspace": "فضای کار", + "stageSchema": "مجموعه پیکربندی", + "stageContent": "محتوا", + "stageConformance": "انطباق", + "stageOk": "موفق", + "stageSkipped": "رد شد", + "stageFailed": "شکست خورد", + "conformant": "سازگار", + "driftRows": "{count} ردیف دریفت", + "verified": "بسته معتبر است و قابل اعمال است", + "applied": "بسته به فضای کاری اعمال می شود", + "failed": "بسته به‌درستی اعمال نمی‌شود" + }, + "attachments": { + "title": "تنظیمات پیوست", + "subtitle": "محدودیت های آپلود فایل و ذخیره سازی پیوست را پیکربندی کنید", + "systemStatus": "وضعیت سیستم", + "attachmentsEnabled": "پیوست ها فعال شد", + "attachmentsDisabled": "پیوست‌ها غیرفعال شدند", + "storagePath": "مسیر ذخیره سازی", + "notConfigured": "پیکربندی نشده است", + "pathWritable": "مسیر قابل نوشتن", + "pathStatusUnknown": "وضعیت مسیر نامشخص است", + "enableNote": "برای فعال کردن پیوست ها، سرور windshift را با پرچم --attachment-path راه اندازی مجدد کنید.", + "enableExample": "مثال: ./windshift --attachment-path /path/to/attachments", + "generalSettings": "تنظیمات عمومی", + "enableAttachments": "پیوست ها را فعال کنید", + "enableAttachmentsDesc": "به کاربران اجازه می‌دهد پیوست‌ها را در موارد کاری آپلود کنند", + "maxFileSize": "حداکثر حجم فایل (MB)", + "current": "فعلی", + "fileTypeRestrictions": "محدودیت های نوع فایل", + "fileTypeRestrictionsDesc": "برای اجازه دادن به همه انواع فایل، خالی بگذارید. برای محدود کردن آپلود، انواع MIME خاص را اضافه کنید.", + "quickAddCommonTypes": "افزودن سریع انواع رایج", + "images": "تصاویر", + "documents": "اسناد", + "spreadsheets": "صفحات گسترده", + "archives": "آرشیوها", + "text": "متن", + "clearAll": "پاک کردن همه", + "addMimeType": "نوع MIME را اضافه کنید", + "mimeTypePlaceholder": "به عنوان مثال، image/jpeg", + "allowedMimeTypes": "انواع MIME مجاز", + "allFileTypesAllowed": "همه انواع فایل مجاز است", + "settingsSavedSuccess": "تنظیمات با موفقیت ذخیره شد", + "notAvailable": "قابلیت پیوست در دسترس نیست. یک فهرست پیوست را برای فعال کردن پیوست ها پیکربندی کنید.", + "failedToLoad": "تنظیمات پیوست بارگیری نشد", + "failedToSave": "تنظیمات ذخیره نشد" + }, + "groups": { + "title": "مدیریت گروه", + "subtitle": "گروه های کاربری و عضویت ها را برای کنترل دسترسی مدیریت کنید", + "addGroup": "افزودن گروه", + "editGroup": "ویرایش گروه", + "createGroup": "ایجاد گروه جدید", + "groupName": "نام گروه", + "groupNamePlaceholder": "به عنوان مثال، توسعه دهندگان، مدیران، تیم پشتیبانی", + "descriptionOptional": "توضیحات (اختیاری)", + "descriptionPlaceholder": "هدف و مسئولیت این گروه را شرح دهید", + "updateGroup": "به روز رسانی گروه", + "loadingGroups": "در حال بارگیری گروه ها...", + "noGroupsFound": "هیچ گروهی یافت نشد", + "description": "توضیحات", + "members": "اعضا", + "noMembers": "هیچ عضوی وجود ندارد", + "memberCount": "{count} عضو", + "membersCount": "{count} عضو", + "ldapSync": "LDAP همگام سازی", + "enabled": "فعال شد", + "manual": "دستی", + "status": "وضعیت", + "active": "فعال", + "inactive": "غیر فعال", + "actions": "اقدامات", + "edit": "ویرایش کنید", + "manageMembers": "مدیریت اعضا", + "delete": "حذف کنید", + "confirmDelete": "آیا مطمئن هستید که می خواهید این گروه را حذف کنید؟ همه عضویت ها حذف خواهند شد.", + "failedToLoad": "بارگیری گروه ها انجام نشد", + "failedToSave": "ذخیره گروه ناموفق بود", + "failedToDelete": "گروه حذف نشد", + "currentMembers": "اعضای فعلی", + "unknownUser": "کاربر ناشناس", + "added": "اضافه شد", + "ldapManaged": "LDAP مدیریت شد", + "remove": "حذف کنید", + "addMembers": "اضافه کردن اعضا", + "searchAndSelectUser": "جستجو و انتخاب کاربر برای افزودن...", + "usersToAdd": "کاربران برای اضافه کردن", + "confirmRemoveMember": "آیا مطمئنید که می خواهید این عضو را از گروه حذف کنید؟", + "failedToAddMembers": "اعضا اضافه نشدند", + "failedToRemoveMember": "عضو حذف نشد", + "failedToLoadDetails": "جزئیات گروه بارگیری نشد" + }, + "notifications": { + "title": "تنظیمات اعلان", + "subtitle": "پیکربندی های اعلان را ایجاد و مدیریت کنید که می تواند به مجموعه های پیکربندی اختصاص داده شود", + "createSetting": "ایجاد تنظیمات اعلان", + "editSetting": "ویرایش تنظیمات اعلان", + "setting": "تنظیم", + "eventRules": "قوانین رویداد", + "rulesConfigured": "{count} قانون پیکربندی شد ({enabled} فعال)", + "noRules": "هیچ قانونی پیکربندی نشده است", + "createdBy": "ایجاد شده توسط", + "noSettingsFound": "هیچ تنظیمات اعلان پیدا نشد. برای شروع اولین تنظیمات اعلان خود را ایجاد کنید.", + "name": "نام", + "namePlaceholder": "به عنوان مثال، اعلان‌های تیم توسعه", + "nameRequired": "نام الزامی است", + "description": "توضیحات", + "descriptionPlaceholder": "شرح این تنظیم اعلان...", + "activeCanBeAssigned": "فعال (می توان به مجموعه های پیکربندی اختصاص داد)", + "addRule": "قانون اضافه کنید", + "noEventRulesConfigured": "هیچ قانون رویدادی پیکربندی نشده است", + "noEventRulesDesc": "قوانینی را برای تعیین زمان ارسال اعلان‌ها اضافه کنید", + "configureSlaWarningThresholds": "آستانه های هشدار SLA را پیکربندی کنید", + "rule": "قانون", + "eventType": "نوع رویداد", + "selectEventType": "انتخاب نوع رویداد...", + "notifyRecipients": "به گیرندگان اطلاع دهید", + "assignee": "مسئول", + "creator": "ایجادکننده", + "watchers": "ناظران", + "workspaceAdmins": "مدیران فضای کاری", + "customMessageTemplate": "الگوی پیام سفارشی (اختیاری)", + "messageTemplatePlaceholder": "برای پیام پیش فرض خالی بگذارید یا با استفاده از متغیرها را سفارشی کنید", + "availableVariables": "متغیرهای موجود", + "example": "مثال", + "selectRecipients": "انتخاب گیرندگان...", + "customizeMessage": "سفارشی کردن پیام", + "updateSetting": "به روز رسانی تنظیمات", + "failedToLoad": "تنظیمات اعلان بارگیری نشد", + "failedToSave": "تنظیم اعلان ذخیره نشد", + "failedToDelete": "تنظیمات اعلان حذف نشد", + "failedToUpdate": "تنظیمات اعلان به‌روزرسانی نشد", + "confirmDelete": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟ این عمل قابل لغو نیست." + }, + "configSets": { + "title": "مجموعه های پیکربندی", + "subtitle": "مجموعه های پیکربندی را مدیریت کنید که گردش کار و صفحه نمایش را برای زمینه های مختلف فضای کاری ترکیب می کند.", + "addConfigSet": "افزودن مجموعه پیکربندی", + "createConfigSet": "ایجاد مجموعه پیکربندی", + "editConfigSet": "ویرایش مجموعه پیکربندی", + "searchPlaceholder": "مجموعه های پیکربندی جستجو...", + "loading": "در حال بارگیری مجموعه های پیکربندی...", + "noConfigSets": "هنوز مجموعه پیکربندی وجود ندارد", + "previewUnavailable": "هیچ مجموعه پیکربندی در دسترس نیست", + "previewUnavailableDescription": "برای پیکربندی این فضای کاری، یک مجموعه پیکربندی پیش‌فرض ایجاد کنید.", + "assignerDescription": "مجموعه پیکربندی‌ای را انتخاب کنید که گردش کار و صفحه‌های ساخت، ویرایش و مشاهده موارد را در این فضای کاری تعریف می‌کند. فقط یک مجموعه را می‌توان اختصاص داد.", + "migrationRequiresSystemAdmin": "تغییر به این مجموعه پیکربندی نیازمند مهاجرت داده است که فقط مدیر سیستم می‌تواند اجرا کند.", + "select": "مجموعه تنظیمات را انتخاب کنید", + "updating": "در حال به‌روزرسانی پیکربندی…", + "configured": "پیکربندی شده است", + "customScreenOverrides": "{count} سفارشی", + "importSuccess": "پیکربندی با موفقیت وارد شد", + "import": "درون‌ریزی", + "importing": "در حال درون‌ریزی…", + "importWarning": "مجموعه پیکربندی با هشدارها درون‌ریزی شد.", + "importFailed": "وارد کردن مجموعه پیکربندی انجام نشد.", + "unresolvedReferencesHeading": "درون‌ریزی به موجودیت‌هایی اشاره می‌کند که در این نصب وجود ندارند.", + "defaultConflictHeading": "درون‌ریزی با یک موجودیت پیش‌فرض در این نصب تعارض دارد.", + "unresolvedImportTitle": "درون‌ریزی: مراجع حل نشده", + "unresolvedImportDescription": "چیزی نوشته نشد. این مراجع را از بسته منبع حذف کنید یا موجودیت های گمشده را در اینجا ایجاد کنید، سپس دوباره امتحان کنید.", + "referenceLocation": "در {path}", + "unresolvedKinds": { + "user": "کاربر {name}", + "role": "نقش \"{name}\"", + "group": "گروه \"{name}\"", + "status_category": "دسته وضعیت «{name}»", + "entity": "موجودیت \"{name}\"" + }, + "export": "برون‌ریزی", + "exportTitle": "این مجموعه پیکربندی را به عنوان یک الگوی قابل حمل JSON صادر کنید", + "exportDefaultDisabled": "مجموعه تنظیمات پیش فرض را نمی توان صادر کرد. اگر به یک نسخه قابل حمل نیاز دارید ابتدا آن را کلون کنید.", + "defaults": { + "configuration": { + "name": "پیکربندی پیش فرض", + "description": "تنظیمات پیش‌فرض با گردش کار و صفحه نمایش اولیه تنظیم شده است" + }, + "notifications": { + "name": "اعلان های پیش فرض", + "description": "قوانین استاندارد اعلان برای به‌روزرسانی موارد کاری" + } + }, + "getStarted": "با ایجاد اولین مجموعه پیکربندی خود شروع کنید.", + "createFirst": "اولین مجموعه پیکربندی را ایجاد کنید", + "noWorkspacesAvailable": "هیچ فضای کاری در دسترس نیست", + "workspaces": "فضاهای کاری", + "noWorkspacesAssigned": "هیچ فضای کاری اختصاص داده نشده است", + "itemTypes": "انواع موارد", + "noItemTypesAssigned": "هیچ نوع موردی اختصاص داده نشده است", + "workflow": "گردش کار", + "noneAssigned": "هیچ کدام اختصاص داده نشده است", + "notifications": "اطلاعیه ها", + "screens": "صفحه نمایش ها", + "createScreen": "ایجاد کنید:", + "editScreen": "ویرایش:", + "viewScreen": "مشاهده:", + "none": "هیچ کدام", + "created": "ایجاد شد", + "newConfigSet": "مجموعه پیکربندی جدید", + "configureDesc": "پیکربندی گردش کار، صفحه نمایش، و تخصیص‌های فضای کاری", + "unsavedChanges": "تغییرات ذخیره نشده", + "basicInfo": "اطلاعات پایه", + "name": "نام", + "namePlaceholder": "پیکربندی توسعه", + "description": "توضیحات", + "setAsDefault": "به عنوان مجموعه تنظیمات پیش فرض تنظیم کنید", + "defaultSettings": "تنظیمات پیش فرض", + "noWorkflow": "بدون گردش کار", + "notificationSettings": "تنظیمات اعلان", + "defaultItemType": "نوع مورد پیش فرض", + "firstAvailable": "اولین بار موجود است", + "configurePerItemType": "پیکربندی در هر نوع مورد", + "preselectedItemType": "نوع مورد از پیش انتخاب شده هنگام ایجاد موارد جدید", + "selectItemTypes": "با استفاده از این مجموعه پیکربندی، انواع موارد موجود در فضاهای کاری را انتخاب کنید.", + "workflowScreenOverrides": "گردش کار و لغو صفحه", + "overridesDesc": "پیکربندی گردش کار سفارشی و صفحه نمایش در هر نوع مورد. برای ارث بردن از برگه عمومی از «پیش‌فرض» استفاده کنید.", + "itemType": "نوع مورد", + "default": "پیش فرض", + "selectPriorities": "با استفاده از این مجموعه پیکربندی، اولویت‌های موجود در فضاهای کاری را انتخاب کنید.", + "selectWorkspaces": "انتخاب کنید که کدام فضاهای کاری از این مجموعه پیکربندی استفاده می کنند. یک فضای کاری فقط می تواند به یک مجموعه پیکربندی تعلق داشته باشد." + }, + "permissions": { + "title": "مدیریت مجوز", + "subtitle": "مجوزهای جهانی برای کاربران و گروه ها را مدیریت کنید", + "workspacePermissions": "مجوزهای فضای کاری", + "itemPermissions": "مجوزهای مورد", + "addPermission": "اضافه کردن مجوز", + "allWorkspaceUsers": "همه کاربران فضای کاری", + "allGroups": "همه گروه ها", + "systemAdmin": "مدیر سیستم", + "user": "کاربر", + "group": "گروه", + "remove": "حذف کنید", + "failedToLoadData": "داده ها بارگیری نشد:", + "loadingPermissions": "در حال بارگیری مجوزها...", + "globalPermissions": "مجوزهای جهانی", + "permission": "اجازه", + "assignedUsers": "کاربران اختصاص داده شده", + "assignedGroups": "گروه های اختصاص داده شده", + "systemPermission": "مجوز سیستم", + "revokePermission": "لغو مجوز", + "noUsersAssigned": "هیچ کاربری اختصاص داده نشده است", + "noGroupsAssigned": "هیچ گروهی اختصاص داده نشده است", + "revokePermissionFromGroup": "لغو مجوز از گروه", + "assign": "اختصاص دهید", + "assignPermission": "اجازه \"{permission}\" را اختصاص دهید", + "grantPermission": "اعطای مجوز", + "permissionGrantedToUser": "مجوز با موفقیت به کاربر داده شد", + "permissionGrantedToGroup": "مجوز به گروه با موفقیت اعطا شد", + "failedToGrantPermission": "اعطای مجوز ناموفق بود:", + "cannotRevokeLastAdmin": "نمی‌توان مدیر سیستم را از آخرین سرپرست لغو کرد", + "permissionRevokedFromUser": "مجوز با موفقیت از کاربر لغو شد", + "permissionRevokedFromGroup": "مجوز از گروه با موفقیت لغو شد", + "failedToRevokePermission": "لغو مجوز ناموفق بود:", + "failedToRevokePermissionFromGroup": "لغو مجوز از گروه ناموفق بود:" + }, + "permissionSets": { + "title": "مجموعه های مجوز", + "subtitle": "بسته‌های مجوزهایی را که می‌توان به مجموعه‌های پیکربندی اختصاص داد را مدیریت کنید", + "createPermissionSet": "ایجاد مجموعه مجوز", + "name": "نام", + "namePlaceholder": "به عنوان مثال، مجوزهای تیم توسعه", + "description": "توضیحات", + "descriptionPlaceholder": "شرح اختیاری این مجموعه مجوز", + "deletePermissionSet": "حذف مجموعه مجوز", + "confirmDelete": "آیا مطمئن هستید که می خواهید مجموعه مجوز را حذف کنید؟", + "system": "سیستم", + "custom": "سفارشی", + "noPermissionSets": "هیچ مجموعه مجوزی یافت نشد. برای شروع یک مورد ایجاد کنید.", + "backToPermissionSets": "بازگشت به مجموعه های مجوز", + "manageSubtitle": "جزئیات و تکالیف مجموعه مجوز را مدیریت کنید", + "loadingPermissionSet": "در حال بارگیری مجموعه مجوز...", + "basicInfo": "اطلاعات پایه", + "saveChanges": "ذخیره تغییرات", + "permissionAssignments": "تخصیص‌های مجوز", + "addAssignment": "افزودن تخصیص", + "addAssignmentDesc": "یک نقش، گروه یا کاربر را در زیر انتخاب کنید تا آن‌ها را به این مجوز اضافه کنید. تخصیص بلافاصله پس از انتخاب اضافه خواهد شد.", + "addByRole": "اضافه کردن بر اساس نقش", + "addByGroup": "افزودن بر اساس گروه", + "addByUser": "افزودن توسط کاربر", + "failedToCreate": "ایجاد مجموعه مجوز ناموفق بود:", + "failedToDelete": "مجموعه مجوز حذف نشد:", + "failedToLoad": "مجموعه مجوز بارگیری نشد:", + "failedToUpdate": "به‌روزرسانی مجموعه مجوز ناموفق بود:", + "failedToAddAssignment": "تخصیص اضافه نشد:", + "failedToRemoveAssignment": "تخصیص حذف نشد:", + "removeAssignment": "حذف تخصیص", + "confirmRemoveAssignment": "آیا مطمئنید که می‌خواهید این تخصیص را حذف کنید؟", + "role": "نقش", + "group": "گروه", + "user": "کاربر", + "unknown": "ناشناس", + "searchAndSelectRole": "جستجو و انتخاب نقش...", + "searchAndSelectGroup": "جستجو و انتخاب گروه...", + "searchAndSelectUser": "جستجو و انتخاب کاربر..." + }, + "scmProviders": { + "title": "ارائه‌دهندگان SCM", + "subtitle": "ادغام‌های GitHub، GitLab و Gitea را برای پیوند مخزن پیکربندی کنید.", + "addProvider": "ارائه دهنده را اضافه کنید", + "connectionSuccessful": "اتصال با موفقیت انجام شد", + "connectionFailed": "اتصال ناموفق بود", + "noProviders": "ارائه‌دهنده SCM وجود ندارد", + "getStarted": "با افزودن یک ارائه دهنده GitHub، GitLab یا Gitea شروع کنید.", + "enabled": "فعال شد", + "disabled": "غیرفعال", + "default": "پیش فرض", + "restricted": "محدود شده است", + "patConfigured": "رمز دسترسی پیکربندی شد", + "patNotConfigured": "رمز دسترسی پیکربندی نشده است", + "addSCMProvider": "ارائه دهنده SCM را اضافه کنید", + "editSCMProvider": "ویرایش ارائه‌دهنده SCM", + "failedToLoad": "ارائه دهندگان SCM بارگیری نشدند", + "failedToSave": "ارائه دهنده ذخیره نشد", + "failedToDelete": "ارائه دهنده حذف نشد", + "slug": "اسلاگ", + "slugHelp": "شناسه امن URL (حروف کوچک و خط تیره مجاز است)", + "name": "نام", + "namePlaceholder": "GitHub - سازمان اصلی", + "providerType": "نوع ارائه دهنده", + "authMethod": "روش احراز هویت", + "baseUrl": "URL پایه", + "baseUrlPlaceholder": "نمونه GitLab خود میزبانی یا Gitea/Forgejo خود را وارد کنید URL", + "baseUrlOptionalGitlab": "برای gitlab.com خالی بگذارید یا نمونه GitLab خود مدیریت شده URL را وارد کنید", + "callbackUrl": "URL کالبک", + "copy": "کپی کنید", + "copied": "کپی شده!", + "enterSlugForCallback": "برای ایجاد URL کالبک، یک اسلاگ در بالا وارد کنید", + "useThisUrl": "هنگام پیکربندی برنامه OAuth خود از این URL استفاده کنید", + "oauthClientId": "شناسه مشتری OAuth", + "oauthClientSecret": "راز مشتری OAuth", + "oauthCallbackError": "اتصال کنترل منبع ناموفق بود", + "leaveEmptyToKeep": "خالی بگذارید تا راز موجود باقی بماند", + "accessToken": "رمز دسترسی", + "accessTokenHelp": "از یک توکن دسترسی با مجوزهای مورد نیاز برای ارائه دهنده انتخاب شده استفاده کنید.", + "gitlabAccessTokenHelp": "GitLab توکن‌های دسترسی شخصی، پروژه‌ای و گروهی را می‌پذیرد. برای ادغام ربات و سرور به سرور، توکن پروژه یا گروه را ترجیح دهید.", + "githubAppId": "شناسه برنامه GitHub", + "privateKeyPem": "کلید خصوصی (PEM)", + "orgInstallation": "نصب سازمان", + "discoverInstallations": "محل نصب برنامه GitHub خود را کشف کنید", + "discoverButton": "تاسیسات را کشف کنید", + "orgInstallationId": "نصب سازمان (ID:", + "scopes": "محدوده ها", + "scopesHelp": "فهرستی از محدوده‌های OAuth جدا شده با فاصله", + "workspaceAccess": "دسترسی به فضای کاری", + "allWorkspaces": "همه فضاهای کاری می توانند از این ارائه دهنده استفاده کنند", + "restrictToWorkspaces": "محدود به فضاهای کاری خاص", + "allowedWorkspaces": "فضاهای کاری مجاز", + "noWorkspacesWarning": "هشدار: هیچ فضای کاری انتخاب نشده است. این ارائه دهنده برای هیچ فضای کاری قابل استفاده نخواهد بود." + }, + "security": { + "title": "امنیت", + "subtitle": "تنظیمات مربوط به امنیت و کنترل‌های ویژگی را مدیریت کنید", + "calendarFeeds": "اشتراک های فید تقویم", + "calendarFeedsDesc": "به کاربران اجازه دهید URLهای فید ICS را برای برنامه‌های تقویم خارجی تولید کنند", + "calendarFeedsWarning": "هشدار: در صورت غیرفعال شدن، فیدهای تقویم موجود فوراً کار نمی‌کنند. کاربران نمی‌توانند URLهای فید جدید تولید کنند.", + "pluginExecution": "اجرای فرمان CLI افزونه", + "pluginExecutionDesc": "به افزونه ها اجازه دهید دستورات پوسته را روی سرور اجرا کنند", + "pluginExecutionWarning": "هشدار: فعال کردن این تنظیم به افزونه ها اجازه می دهد تا دستورات پوسته را اجرا کنند. دستورات برای امنیت به دایرکتوری خود هر افزونه محدود می شوند. فقط در صورتی فعال کنید که به همه افزونه های نصب شده اعتماد دارید.", + "externalImages": "تصاویر Markdown خارجی", + "externalImagesDesc": "به محتوای Markdown اجازه دهید تصاویر را از هر میزبان HTTP یا HTTPS بارگیری کند.", + "externalImagesRefresh": "تغییرات با بارگیری یا بازخوانی صفحه بعدی اعمال می‌شوند. میزبان‌ها، پیوست‌ها و تصاویر جاسازی‌شده (Unsplash، Atlassian، Jira) در صورت غیرفعال شدن در دسترس باقی می‌مانند.", + "externalImagesWarning": "تصاویر خارجی می‌توانند آدرس‌های IP بیننده و جزئیات مرورگر را نشان دهند و می‌توانند درخواست‌هایی را به سرویس‌های قابل دسترسی از شبکه بیننده ارسال کنند. فقط در صورتی فعال شود که به نویسندگان محتوا اعتماد دارید.", + "failedToLoad": "تنظیمات امنیتی بارگیری نشد", + "failedToSave": "تنظیمات ذخیره نشد" + }, + "sso": { + "title": "Single Sign-On (SSO)", + "subtitle": "ارائه دهندگان هویت OIDC را برای احراز هویت Single Sign-On پیکربندی کنید", + "oidcTab": "OIDC", + "addProvider": "ارائه دهنده را اضافه کنید", + "addSsoProvider": "ارائه دهنده SSO را اضافه کنید", + "editSsoProvider": "ویرایش SSO ارائه دهنده", + "deleteSsoProvider": "ارائه دهنده SSO را حذف کنید", + "createProvider": "ایجاد ارائه دهنده", + "deleteProvider": "حذف ارائه دهنده", + "noProviderConfigured": "هیچ ارائه‌دهنده SSO پیکربندی نشده است", + "noProviderDescription": "برای فعال کردن Single Sign-On برای کاربران خود، یک ارائه دهنده هویت OIDC اضافه کنید. از Keycloak، Authentik، Pocket ID و سایر ارائه دهندگان سازگار با OIDC پشتیبانی می کند.", + "slug": "اسلاگ", + "slugPlaceholder": "به عنوان مثال، معتبر", + "slugHelp": "استفاده شده در ورود SSO URL", + "slugRequired": "اسلاگ مورد نیاز است", + "slugInvalid": "اسلاگ باید فقط شامل حروف کوچک، اعداد و خط فاصله باشد", + "name": "نام", + "displayName": "نام نمایشی", + "displayNamePlaceholder": "به عنوان مثال، Authentik، Keycloak", + "nameRequired": "نام الزامی است", + "providerType": "نوع ارائه دهنده", + "issuerUrl": "URL صادرکننده", + "issuerUrlPlaceholder": "https://auth.example.com/realms/myrealm", + "issuerUrlHelp": "URL صادرکننده OIDC. برای Keycloak: https://host/realms/realmname", + "issuerUrlRequired": "URL صادرکننده مورد نیاز است", + "issuerUrlInvalid": "URL صادرکننده باید با https:// یا http:// شروع شود", + "clientId": "شناسه مشتری", + "clientIdPlaceholder": "windshift", + "clientIdRequired": "شناسه مشتری مورد نیاز است", + "clientSecret": "راز مشتری", + "clientSecretRequired": "Client Secret مورد نیاز است", + "enterClientSecret": "راز مشتری را وارد کنید", + "leaveEmptyToKeepCurrent": "(برای حفظ جریان، خالی بگذارید)", + "notConfigured": "پیکربندی نشده است", + "callbackUrl": "URL کالبک", + "callbackUrlHelp": "این URL را به‌عنوان URL تغییر مسیر/کالبک در ارائه‌دهنده هویت خود پیکربندی کنید", + "baseUrlWarningTitle": "URL پایه سرور پیکربندی نشده است", + "baseUrlWarningBody": "Windshift برای پیوندها و کالبک‌های OAuth به {url} برمی‌گردد، بنابراین ورود به سیستم SSO آن آدرس را به ارائه‌دهنده هویت شما می‌فرستد. متغیر محیطی BASE_URL را تنظیم کنید و Windshift را قبل از ثبت URL کالبک راه اندازی مجدد کنید.", + "scopes": "محدوده ها", + "scopesHelp": "فهرستی از محدوده‌های OIDC جدا شده با فاصله", + "nameClaimsHelp": "برخی از ارائه دهندگان (به عنوان مثال Microsoft Entra ID) فقط نام نمایشی را به طور پیش فرض درج می کنند. given_name و family_name را به عنوان ادعاهای اختیاری اضافه کنید تا Windshift به جای تجزیه نام نمایشی، نام ساختاریافته را دریافت کند.", + "attributeMapping": "نگاشت صفت", + "attributeMappingHelp": "اختیاری. وقتی ارائه‌دهنده شما از نام‌های ادعایی غیراستاندارد استفاده می‌کند، ادعا را نادیده بگیرید. برای استفاده از ادعای پیش‌فرض نشان‌داده‌شده در راهنما، یک فیلد خالی بگذارید.", + "attributeEmail": "ادعای ایمیل", + "attributeEmailVerified": "ادعای ایمیل تأییدشده", + "attributeName": "ادعای نام کامل", + "attributeGivenName": "ادعای نام", + "attributeFamilyName": "ادعای نام خانوادگی", + "attributeUsername": "ادعای نام کاربری", + "enabled": "فعال شد", + "disabled": "غیرفعال", + "default": "پیش فرض", + "oidc": "OIDC", + "enableThisProvider": "این ارائه دهنده را فعال کنید", + "enableThisProviderDesc": "کاربران می توانند با استفاده از این ارائه دهنده SSO وارد سیستم شوند", + "autoProvisionUsers": "ارائه خودکار کاربران", + "autoProvisionUsersDesc": "در اولین ورود SSO به طور خودکار حساب های کاربری ایجاد کنید", + "manualUserCreationOnly": "فقط ایجاد کاربر دستی", + "trustIdpEmailVerification": "پیوند حساب ها بدون تأیید ایمیل IdP", + "trustIdpEmailVerificationDesc": "وقتی فعال باشد، هویت‌های این ارائه‌دهنده از طریق ایمیل به حساب‌های موجود Windshift مرتبط می‌شود، حتی زمانی که ارائه‌دهنده آدرس را تأیید نمی‌کند. وقتی غیرفعال است، پیوند حساب به یک ادعای ایمیل تأیید شده از ارائه‌دهنده نیاز دارد.", + "idpVerificationNotEnforced": "ایمیل تأیید شده برای پیوند دادن حساب مورد نیاز است", + "unsafeProvisioningWarningTitle": "پیوند تأیید نشده فعال شد", + "unsafeProvisioningWarningBody": "هویت‌های این ارائه‌دهنده از طریق ایمیل به حساب‌های موجود مرتبط می‌شوند، حتی زمانی که ارائه‌دهنده آدرس را تأیید نشده گزارش می‌کند. این را فقط زمانی فعال کنید که ارائه دهنده آدرس ایمیل کاربران خود را کنترل کند.", + "testConnection": "تست اتصال", + "testing": "در حال تست...", + "connectionSuccessful": "اتصال با موفقیت انجام شد", + "connectionFailed": "اتصال ناموفق بود", + "connectionTestFailed": "تست اتصال ناموفق بود", + "confirmDeleteProvider": "آیا مطمئن هستید که می خواهید ارائه دهنده SSO را حذف کنید", + "deleteWarning": "با این کار پیوند همه حساب‌های خارجی مرتبط با این ارائه‌دهنده لغو می‌شود. کاربرانی که فقط از این ارائه دهنده استفاده می کنند باید با رمز ورود وارد شوند.", + "failedToLoad": "ارائه دهندگان SSO بارگیری نشدند", + "failedToCreate": "ارائه دهنده SSO ایجاد نشد", + "failedToUpdate": "ارائه دهنده SSO به روز نشد", + "failedToDelete": "ارائه دهنده SSO حذف نشد" + }, + "channelManagers": { + "title": "مدیران کانال", + "description": "کاربران و گروه هایی که می توانند این کانال را پیکربندی و مدیریت کنند", + "addManager": "مدیر را اضافه کنید", + "addChannelManager": "مدیر کانال را اضافه کنید", + "systemChannelNote": "این یک کانال سیستمی است. فقط مدیران می توانند آن را مدیریت کنند.", + "systemAdminsCanManage": "مدیران سیستم می توانند این کانال را مدیریت کنند", + "noManagersAssigned": "هیچ مدیری تعیین نشده است", + "defaultChannelsManaged": "کانال های پیش فرض به طور خودکار توسط مدیران مدیریت می‌شوند", + "addUsersOrGroups": "کاربران یا گروه هایی را برای مدیریت این کانال اضافه کنید", + "user": "کاربر", + "group": "گروه", + "addedBy": "اضافه شده توسط", + "on": "در", + "removeManager": "مدیر را حذف کنید", + "confirmRemoveMessage": "آیا مطمئن هستید که می خواهید {name} را به عنوان مدیر کانال حذف کنید؟ آنها دیگر نمی توانند این کانال را پیکربندی یا مدیریت کنند.", + "note": "توجه:", + "noteText": "مدیران کانال می توانند تنظیمات کانال را پیکربندی کنند، اتصالات را آزمایش کنند و تنظیمات خاص کانال را مدیریت کنند. مدیران جهانی همیشه به همه کانال ها دسترسی دارند." + }, + "connectedAccounts": { + "failedToLoad": "حساب های متصل بارگیری نشد", + "failedToDisconnect": "قطع ارتباط حساب انجام نشد", + "failedToStartConnection": "شروع جریان اتصال ناموفق بود", + "oauthConnected": "حساب متصل شد", + "oauthFailedCallback": "اتصال ناموفق بود", + "noProvidersTitle": "ارائه‌دهندگان SCM موجود نیستند", + "noProvidersDesc": "سرپرست شما هیچ ارائه دهنده SCM را با OAuth پیکربندی نکرده است.", + "connectDesc": "حساب خود را وصل کنید تا شاخه ایجاد کنید و درخواست ها را بکشید", + "connected": "متصل شد", + "notConnected": "متصل نیست", + "connectedOn": "متصل شد", + "disconnect": "قطع کن", + "disconnecting": "در حال قطع شدن...", + "connect": "اتصال", + "account": "حساب", + "footerNote": "حساب‌های متصل برای ایجاد شاخه‌ها و درخواست‌ها به نام شما استفاده می‌شوند. هر کاربر باید حساب خود را برای انتساب مناسب متصل کند." + }, + "emailTemplates": { + "title": "قالب های ایمیل", + "subtitle": "موضوع و متن ایمیل های تراکنشی ارسال شده توسط Windshift را سفارشی کنید.", + "loading": "در حال بارگیری…", + "empty": "هیچ الگوی ایمیلی یافت نشد.", + "template": "الگو", + "description": "توضیحات", + "status": "وضعیت", + "actions": "اقدامات", + "active": "فعال", + "inactive": "غیر فعال", + "edit": "ویرایش کنید", + "editTitle": "ویرایش: {name}", + "editFallbackTitle": "ویرایش قالب", + "subject": "موضوع", + "htmlBody": "بدنه HTML", + "textBody": "بدنه متن ساده", + "adminNotes": "توضیحات (یادداشت های مدیریت)", + "activeHint": "فعال (برای بازگشت به حالت پیش فرض داخلی علامت را بردارید)", + "localeLabel": "زبان", + "defaultLocale": "پیش‌فرض (همه زبان‌ها)", + "translationHint": "در حال ویرایش بازنویسی برای این زبان. زبان‌های دیگر از قالب پیش‌فرض استفاده می‌کنند.", + "translationSaved": "ترجمه ذخیره شد", + "translationDelete": "حذف ترجمه", + "translationDeleted": "ترجمه حذف شد", + "translationSaveFailed": "ذخیره ترجمه ناموفق بود: {error}", + "translationDeleteFailed": "حذف ترجمه ناموفق بود: {error}", + "availableVariables": "متغیرهای موجود", + "syntaxHint": "الگوها از نحو html/template در Go استفاده می‌کنند. برای مقادیر از {open}.Field{close} و برای تکرار از {open}range .Items{close}…{open}end{close} استفاده کنید.", + "preview": "پیش نمایش", + "previewLoading": "در حال ارائه…", + "previewTitle": "پیش نمایش", + "previewSubject": "موضوع:", + "plainTextVersion": "نسخه متن ساده", + "save": "ذخیره کنید", + "cancel": "لغو کنید", + "saved": "الگوی ایمیل ذخیره شد", + "loadFailed": "بارگیری الگوهای ایمیل انجام نشد: {error}", + "saveFailed": "ذخیره نشد: {error}", + "previewFailed": "پیش‌نمایش ناموفق بود: {error}", + "labels": { + "magic_link": "ورود به سیستم پیوند جادویی پورتال", + "email_verification": "تایید آدرس ایمیل", + "invitation": "دعوت کاربر جدید", + "notification_batch": "اعلان های دسته بندی شده", + "portal_reply": "پاسخ مشتری پورتال", + "approval_requested": "درخواست تایید پورتال", + "intake_confirmation": "رسید دریافت ایمیل" + } + }, + "linkTypes": { + "addLinkType": "نوع پیوند را اضافه کنید", + "editLinkType": "ویرایش نوع پیوند", + "name": "نام", + "description": "توضیحات", + "forwardLabel": "برچسب رو به جلو", + "reverseLabel": "برچسب معکوس", + "color": "رنگ", + "active": "فعال", + "inactive": "غیر فعال", + "system": "سیستم", + "cannotDeleteSystem": "انواع پیوندهای سیستم را نمی توان حذف کرد", + "nameRequired": "نام الزامی است", + "failedToSave": "نوع پیوند ذخیره نشد.", + "namePlaceholder": "به عنوان مثال اجرا می کند", + "forwardPlaceholder": "به عنوان مثال اجرا می کند", + "reversePlaceholder": "به عنوان مثال اجرا شده توسط", + "forwardHint": "هنگام پیوند A به B، «A پیاده‌ساز» نمایش داده شود.", + "reverseHint": "وقتی از A به B پیوند داده می‌شود، به‌صورت «B پیاده‌سازی‌شده» نمایش داده شود.", + "descriptionPlaceholder": "شرح اختیاری این نوع رابطه", + "empty": "هیچ نوع پیوندی یافت نشد. اولین نوع پیوند خود را برای فعال کردن روابط مورد ایجاد کنید.", + "defaults": { + "tests": { + "name": "تست ها", + "description": "مورد آزمایشی، مورد کار را تست می‌کند" + }, + "implements": { + "name": "اجرا می کند", + "description": "یک مورد کاری، مورد کاری دیگری را پیاده‌سازی می‌کند" + }, + "dependsOn": { + "name": "بستگی دارد", + "description": "مورد کار به یک مورد دیگر بستگی دارد" + }, + "relatesTo": { + "name": "مربوط به", + "description": "رابطه دوسویه کلی" + }, + "linksTo": { + "name": "پیوندها به", + "description": "پیوند جهت کلی" + }, + "duplicates": { + "name": "موارد تکراری", + "description": "مورد کاری کپی دیگری است" + }, + "childOf": { + "name": "فرزند از", + "description": "رابطه سلسله مراتبی جایگزین" + }, + "page": { + "name": "صفحه", + "description": "مورد کاری به یک صفحه دانش ارجاع می دهد" + } + } + }, + "statusCategories": { + "title": "دسته بندی وضعیت", + "subtitle": "دسته بندی وضعیت جدید برای سازماندهی وضعیت گردش کار ایجاد کنید", + "addStatusCategory": "اضافه کردن دسته وضعیت", + "name": "نام", + "color": "رنگ", + "description": "توضیحات", + "default": "پیش فرض", + "completed": "تکمیل شد", + "nameRequired": "نام الزامی است", + "failedToSave": "دسته وضعیت ذخیره نشد.", + "failedToDelete": "دسته وضعیت حذف نشد.", + "confirmDelete": "دسته وضعیت «{name}» حذف شود؟ این عمل قابل لغو نیست.", + "count": "دسته ها: {count}", + "statusCount": "وضعیت ها: {count}", + "empty": "هیچ دسته وضعیتی یافت نشد. برای شروع اولین دسته وضعیت خود را ایجاد کنید.", + "inUseByStatuses": "نمی توان \"{name}\" را حذف کرد زیرا توسط یک یا چند وضعیت استفاده می شود. ابتدا آن وضعیت ها را در مدیریت وضعیت حذف یا مجدداً اختصاص دهید.", + "defaults": { + "toDo": { + "name": "برای انجام", + "description": "کاری که شروع نشده است" + }, + "inProgress": { + "name": "در حال انجام است", + "description": "کاری که فعالانه در حال انجام است" + }, + "done": { + "name": "انجام شد", + "description": "کاری که به پایان رسیده است" + } + } + }, + "itemTypes": { + "title": "انواع موارد", + "subtitle": "انواع موارد را مدیریت کنید و آنها را به سطوح سلسله مراتبی اختصاص دهید", + "addItemType": "نوع مورد را اضافه کنید", + "name": "نام", + "description": "توضیحات", + "icon": "نماد", + "color": "رنگ", + "hierarchyLevel": "سطح سلسله مراتب", + "genericSubtaskLevel": "وظیفه فرعی عمومی (هر سطح والد)", + "nameRequired": "نام الزامی است", + "failedToLoad": "انواع مورد بارگیری نشد.", + "failedToSave": "نوع مورد ذخیره نشد.", + "deleteFailed": "نوع مورد حذف نشد.", + "confirmDelete": "«{name}» حذف شود؟ این عمل قابل لغو نیست.", + "noItemTypes": "هیچ نوع موردی هنوز پیکربندی نشده است.", + "noConfigurationSets": "بدون مجموعه پیکربندی", + "defaultConfiguration": "پیکربندی پیش فرض", + "namePlaceholder": "به عنوان مثال حماسه، داستان، وظیفه، اشکال", + "descriptionPlaceholder": "شرح مختصری از این نوع مورد", + "levelLabel": "سطح {level} - {name}", + "levelOnly": "سطح {level}", + "levelOption": "{name} (سطح {level})", + "defaults": { + "initiative": "ابتکار عمل", + "epic": "حماسه", + "story": "داستان", + "task": "وظیفه", + "bug": "اشکال", + "subtask": "وظیفه فرعی" + }, + "hierarchyChangeWarningTitle": "موارد موجود پیوندهای خود را حفظ خواهند کرد", + "hierarchyChangeWarningDescription": "تغییر از سطح {fromLevel} به سطح {toLevel} موارد موجود را جابه‌جا نمی‌کند. انتخاب های آینده والد و فرزند از سطح {toLevel} محاسبه خواهد شد. کاربران ممکن است نیاز داشته باشند که یک نوع مورد سازگار را قبل از والد کردن مجدد موارد قدیمی انتخاب کنند." + }, + "hierarchyLevels": { + "title": "سطوح سلسله مراتبی", + "subtitle": "سطوح سلسله مراتبی را در سیستم خود مدیریت کنید", + "addHierarchyLevel": "اضافه کردن سطح سلسله مراتب", + "level": "سطح", + "name": "نام", + "description": "توضیحات", + "nameRequired": "نام سطح سلسله مراتب لازم است", + "failedToLoad": "سطوح سلسله مراتبی بارگیری نشد.", + "failedToSave": "سطح سلسله مراتب ذخیره نشد.", + "deleteFailed": "سطح سلسله مراتب حذف نشد.", + "cannotDeleteTitle": "سطح سلسله مراتب را نمی توان حذف کرد", + "levelOccupied": "سطح {level} قبلاً توسط \"{name}\" اشغال شده است.", + "negativeLevel": "یک سطح سلسله مراتبی را نمی توان به زیر 0 منتقل کرد.", + "empty": "هنوز هیچ سطح سلسله مراتبی پیکربندی نشده است.", + "numericHint": "سطح سلسله مراتب عددی (0 = بالاترین)", + "namePlaceholder": "به عنوان مثال ابتکار، حماسه، داستان، وظیفه", + "descriptionPlaceholder": "شرح مختصری از این سطح سلسله مراتبی", + "createTitle": "ایجاد سطح سلسله مراتب", + "editTitle": "ویرایش سطح سلسله مراتب", + "confirmDelete": "«{name}» حذف شود؟", + "defaults": { + "initiative": { + "name": "ابتکار عمل", + "description": "کار استراتژیک سطح بالا که حماسه های متعدد را در بر می گیرد" + }, + "epic": { + "name": "حماسه", + "description": "مورد کاری بزرگ که می توان آن را به داستان ها تقسیم کرد" + }, + "story": { + "name": "داستان", + "description": "داستان یا ویژگی کاربر که ارزش ارائه می کند" + }, + "task": { + "name": "وظیفه", + "description": "مورد کاری فردی یا کار فنی" + }, + "activity": { + "name": "فعالیت", + "description": "فعالیت گسسته در یک کار" + } + } + }, + "modules": { + "title": "ماژول ها", + "subtitle": "ماژول های سیستم را فعال یا غیرفعال کنید و افزونه ها را مدیریت کنید", + "plugins": "پلاگین ها", + "pluginsDisabledMessage": "سیستم افزونه از طریق پیکربندی راه اندازی سرور غیرفعال شده است.", + "instanceId": "شناسه نمونه", + "instanceIdDescription": "این شناسه را در پورتال Windshift وارد کنید تا مجوزهای افزونه را به این نصب صادر کنید.", + "chooseLicense": "فایل مجوز را انتخاب کنید", + "changeLicense": "تغییر فایل مجوز", + "licenseSelected": "مجوز انتخاب شده: {name}", + "licenseOptional": "اختیاری: فایل مجوز صادر شده برای این نصب را پیوست کنید.", + "uploadPlugin": "آپلود افزونه", + "dropOrSelect": "فایل های افزونه را اینجا بکشید و رها کنید یا برای انتخاب کلیک کنید", + "supportedFormats": "فرمت های پشتیبانی شده: .zip یا .wasm", + "installedPlugins": "پلاگین های نصب شده", + "noPluginsInstalled": "هنوز هیچ پلاگینی نصب نشده است", + "pluginUploadedSuccess": "افزونه با موفقیت آپلود شد!", + "pluginReloadedSuccess": "افزونه {name} با موفقیت بارگیری مجدد شد", + "pluginDeletedSuccess": "افزونه {name} با موفقیت حذف شد", + "confirmDeletePlugin": "آیا مطمئن هستید که می خواهید افزونه \"{name}\" را حذف کنید؟", + "wasmManifestRequired": "مانیفست مورد نیاز برای فایل های WASM", + "wasmManifestRequiredDesc": "فایل‌های WASM باید همراه با فایل manifest.json باشد که افزونه را توصیف می‌کند.", + "chooseManifest": "manifest.json را انتخاب کنید", + "changeManifest": "manifest.json را تغییر دهید", + "manifestSelected": "مانیفست انتخاب شد: {name}", + "registeredRoutes": "مسیرهای ثبت شده", + "routeAuth_session": "جلسه", + "routeAuth_admin": "مدیر", + "routeAuth_none": "عمومی", + "hostFunctionPermissions": "مجوزهای عملکرد میزبان", + "permissionGranted": "داده شده است", + "permissionDenied": "تکذیب شد", + "permissionsDeniedNote": "برخی از مجوزهای اعلام شده قابل اجرا نیستند.", + "moduleSettingsNote": "تغییرات در تنظیمات ماژول بلافاصله اعمال می شود. غیرفعال کردن یک ماژول آن را از ناوبری پنهان می کند.", + "failedToUpload": "آپلود انجام نشد: {error}", + "failedToReload": "بارگیری مجدد افزونه انجام نشد: {error}", + "failedToDelete": "افزونه حذف نشد: {error}", + "pleaseSelectPlugin": "لطفا یک فایل افزونه را انتخاب کنید", + "wasmNeedsManifest": "فایل‌های WASM به فایل manifest.json نیاز دارند. لطفاً یک manifest.json انتخاب کنید یا یک فایل zip حاوی هر دو فایل را آپلود کنید.", + "by": "توسط", + "settingsSavedSuccess": "تنظیمات ماژول با موفقیت ذخیره شد!", + "failedToSave": "تنظیمات ماژول ذخیره نشد. لطفا دوباره امتحان کنید." + }, + "aiFeatures": { + "title": "ویژگی های هوش مصنوعی", + "subtitle": "پیکربندی کنید کدام ویژگی‌های هوش مصنوعی فعال هستند و اتصالات LLM خاصی را اختصاص دهید", + "loading": "در حال بارگیری پیکربندی ویژگی هوش مصنوعی...", + "saveSuccess": "پیکربندی ویژگی‌های هوش مصنوعی ذخیره شد", + "saveFailed": "پیکربندی ویژگی‌های هوش مصنوعی ذخیره نشد", + "loadFailed": "پیکربندی ویژگی‌های هوش مصنوعی بارگیری نشد", + "noConnections": "هیچ اتصال LLM پیکربندی نشده است. ابتدا اتصالات را در اتصالات هوش مصنوعی اضافه کنید.", + "modeDefault": "از پیش فرض استفاده کنید", + "modeSpecific": "از اتصال خاص استفاده کنید", + "modeDisabled": "غیرفعال", + "selectConnection": "انتخاب اتصال...", + "scheduleLabel": "فرکانس تولید", + "scheduleDaily": "یک بار در روز", + "scheduleEvery6h": "هر 6 ساعت", + "features": { + "ai_chat": { + "name": "چت هوش مصنوعی", + "description": "چت تعاملی با دستیار هوش مصنوعی آگاه از فضای کاری" + }, + "daily_briefing": { + "name": "جلسه توجیهی روزانه", + "description": "خلاصه های روزانه خودکار با فرکانس تولید قابل تنظیم" + }, + "plan_my_day": { + "name": "برنامه‌ریزی روز من", + "description": "برنامه ریزی و اولویت بندی وظایف روزانه مبتنی بر هوش مصنوعی" + }, + "catch_me_up": { + "name": "خلاصه فعالیت اخیر", + "description": "خلاصه ای از فعالیت اخیر در مورد یک مورد کاری را دریافت کنید" + }, + "find_similar": { + "name": "مشابه را پیدا کنید", + "description": "موارد کار مشابه را با استفاده از تجزیه و تحلیل هوش مصنوعی بیابید" + }, + "decompose": { + "name": "تجزیه", + "description": "موارد کار را به وظایف فرعی کوچکتر تقسیم کنید" + }, + "release_notes": { + "name": "یادداشت های انتشار", + "description": "ایجاد یادداشت های انتشار از پیشرفت نقطه عطف" + }, + "dependency_analysis": { + "name": "تجزیه و تحلیل وابستگی", + "description": "تجزیه و تحلیل و پیشنهاد وابستگی بین موارد" + }, + "logbook_articles": { + "name": "مقالات دفترچه گزارش", + "description": "طبقه بندی اسناد مبتنی بر هوش مصنوعی، تمیز کردن، و تولید مقاله برای دفترچه گزارش" + } + } + }, + "workItemStaleness": { + "title": "کهنگی موارد کار", + "subtitle": "از یک آستانه فعالیت در جزئیات و تجزیه و تحلیل موارد کاری استفاده کنید", + "thresholdTitle": "آستانه مورد کار دست نخورده", + "thresholdDescription": "یک مورد کار ناتمام پس از این چند روز کامل بدون نظر، ویرایش یا سایر فعالیت‌های ثبت شده کهنه می‌شود.", + "daysLabel": "روزهای بدون فعالیت", + "daysHelper": "یک عدد کامل از 1 تا 365 را انتخاب کنید.", + "impact": "این تغییر در کل سیستم برای همه فضاهای کاری اعمال می شود و بلافاصله اعمال می شود.", + "save": "آستانه ذخیره", + "saveSuccess": "آستانه کهنگی مورد کاری ذخیره شد", + "saveFailed": "آستانه کهنگی مورد کاری ذخیره نشد", + "loadFailed": "تنظیمات کهنگی مورد کاری بارگیری نشد", + "validation": "یک عدد کامل بین 1 تا 365 روز وارد کنید." + }, + "actionCapabilities": { + "title": "قابلیت های اقدام", + "subtitle": "قابلیت‌های فراهم‌شده برای گره‌های اقدام خودکارسازی را مدیریت کنید", + "addCapability": "قابلیت اضافه کردن", + "editCapability": "قابلیت ویرایش", + "deleteCapability": "قابلیت حذف", + "name": "نام", + "namePlaceholder": "به عنوان مثال، Python Sandbox", + "capabilityType": "نوع قابلیت", + "selectType": "انتخاب نوع...", + "enabled": "فعال شد", + "noCapabilities": "هنوز هیچ قابلیت عملی پیکربندی نشده است.", + "addFirst": "اولین قابلیت خود را اضافه کنید", + "createSuccess": "قابلیت اقدام ایجاد شد", + "updateSuccess": "قابلیت اقدام به روز شد", + "deleteSuccess": "قابلیت اکشن حذف شد", + "createFailed": "ایجاد قابلیت انجام نشد", + "updateFailed": "قابلیت به‌روزرسانی نشد", + "deleteFailed": "قابلیت حذف نشد", + "loadFailed": "قابلیت‌های اقدام بارگیری نشد", + "confirmDelete": "آیا مطمئن هستید که می خواهید حذف کنید؟", + "typeDocker": "محیط Docker", + "typeHTTP": "کلاینت HTTP", + "typeLLM": "اتصال LLM", + "docker": { + "image": "تصویر Docker", + "imagePlaceholder": "به عنوان مثال، python: 3.12-slim", + "memory": "محدودیت حافظه", + "memoryPlaceholder": "به عنوان مثال، 512 متر", + "cpus": "محدودیت CPU", + "cpusPlaceholder": "به عنوان مثال، 1", + "networkMode": "حالت شبکه", + "envVars": "متغیرهای محیطی", + "addEnvVar": "متغیر اضافه کنید", + "key": "کلید", + "value": "مقدار", + "healthCheck": "بررسی سلامت", + "endpoint": "نقطه پایانی", + "endpointPlaceholder": "به عنوان مثال، /health", + "intervalSecs": "فاصله (ها)", + "timeoutSecs": "تایم اوت (ثانیه)" + }, + "http": { + "allowedPatterns": "الگوهای مجاز URL", + "addPattern": "اضافه کردن الگو", + "patternPlaceholder": "به عنوان مثال، https://api.example.com/*", + "defaultHeaders": "سرصفحه های پیش فرض", + "addHeader": "هدر را اضافه کنید", + "key": "کلید", + "value": "مقدار", + "timeout": "تایم اوت (ثانیه)", + "timeoutPlaceholder": "به عنوان مثال، 30" + }, + "llm": { + "connection": "اتصال LLM", + "selectConnection": "انتخاب یک اتصال...", + "noConnections": "هیچ اتصال LLM موجود نیست. ابتدا یکی را در اتصالات هوش مصنوعی پیکربندی کنید." + } + }, + "localizedObjects": { + "displayLabelFor": "نمایش برچسب برای {locale}", + "primaryHelp": "این برچسبی است که مدیران و کاربران در محلی فعال می بینند.", + "localeOverrides": "لغوهای محلی", + "canonicalFallback": "پیشرفته: بازگشت متعارف", + "canonicalHelp": "مقدار متعارف فقط زمانی استفاده می‌شود که نمونه مشابه یا ترجمه ارسال‌شده اعمال نشود. IDs، کلیدهای داخلی، و رفتار اتوماسیون بدون تغییر هستند.", + "baseName": "نام جایگزین متعارف", + "baseDescription": "شرح بازگشت متعارف", + "chooseCanonicalEffect": "انتخاب کنید چه اتفاقی برای نادیده‌گیری‌های محلی بیفتد…", + "keepOverrides": "فقط نسخه بازگشتی را تغییر دهید و لغو محلی را حفظ کنید", + "removeInstanceOverrides": "نسخه بازگشتی را تغییر دهید و موارد را حذف کنید", + "canonicalWarning": "این ترجمه‌های محلی همچنان بر نسخه متعارف اصلی اولویت خواهند داشت. نحوه رسیدگی به موارد نادیده گرفته شده توسط سرپرست را به صراحت انتخاب کنید.", + "canonicalChoiceRequired": "انتخاب کنید که تغییر متعارف چگونه باید بر لغو محلی تأثیر بگذارد.", + "localizedNameRequired": "برچسب نمایش محلی فعال مورد نیاز است.", + "shippedFallback": "پیش‌فرض: {value}", + "permissionRequired": "فقط یک مدیر نمونه می تواند برچسب های محلی را مدیریت کند.", + "loadFailed": "نادیده‌گیری‌های محلی بارگیری نشد." + }, + "workspaceRoles": { + "readOnlyNote": "نقش‌های فضای کاری توسط سیستم تعریف شده‌اند و قابل ویرایش نیستند. آنها به عنوان مرجع برای درک مجوزهای موجود در هر نقش عمل می کنند.", + "addCustom": "نقش سفارشی را اضافه کنید", + "addCustomTitle": "نقش سفارشی جدید", + "labelOnlyBadge": "فقط برچسب", + "permissionBearingBadge": "دارای مجوز", + "labelOnlyNotice": "نقش‌های سفارشی امروزه فقط برچسب‌دار هستند. آنها را می توان برای تأیید مسیرها استفاده کرد، اما هنوز نمی توان مجوز داد.", + "cannotDeleteSystem": "نقش های سیستم را نمی توان حذف کرد.", + "deleteConfirm": "این نقش سفارشی حذف شود؟ اعضا این تخصیص برچسب را از دست خواهند داد.", + "nameRequired": "نام نقش مورد نیاز است.", + "nameTaken": "نقشی با آن نام از قبل وجود دارد.", + "namePlaceholder": "به عنوان مثال بررسی کنندگان QA", + "descriptionPlaceholder": "این نقش چه چیزی را نشان می دهد (اختیاری)" + }, + "boardConfig": { + "configureBoard": "پیکربندی برد", + "columns": "ستون ها", + "backlog": "بک‌لاگ", + "dragToReorder": "برای جابه‌جایی بکشید", + "addColumn": "اضافه کردن ستون", + "saveConfiguration": "ذخیره پیکربندی", + "unsavedChanges": "تغییرات ذخیره نشده", + "columnNameRequired": "نام ستون مورد نیاز است", + "resetToDefault": "به حالت پیش فرض بازنشانی کنید", + "noStatusesMapped": "هیچ وضعیتی نگاشت نشده است", + "wipLimit": "محدودیت WIP", + "mappedStatuses": "وضعیت های نگاشت شده", + "noStatusesSelected": "هیچ وضعیتی انتخاب نشده است", + "backlogStatuses": "وضعیت‌های بک‌لاگ", + "backlogStatusesHelp": "اقلام با این وضعیت ها در بک لاگ ظاهر می شوند", + "availableStatuses": "وضعیت های موجود", + "dragStatusesToColumns": "وضعیت ها را به ستون ها بکشید تا آنها را اختصاص دهید", + "dropStatusesHere": "وضعیت ها را اینجا رها کنید", + "allStatusesAssigned": "تمام وضعیت ها به ستون ها اختصاص داده شده است", + "noStatusesMatchSearch": "هیچ وضعیتی با جستجوی شما مطابقت ندارد", + "boardColumns": "ستون‌های برد", + "searchStatuses": "جستجوی وضعیت ها...", + "cardFields": "فیلدهای کارت", + "cardFieldsTitle": "فیلدهای کارت", + "cardFieldsDescription": "فیلدهایی را که روی کارت‌های برد نمایش داده می‌شوند، پیکربندی کنید.", + "views": "نماها", + "viewsHelp": "انتخاب کنید کدام نماهای مجموعه در اینجا موجود است. نماهای غیرفعال از پیمایش ناپدید می شوند و پیوندهای مستقیم به نمای فعال باز می گردند.", + "viewsInheritedHint": "این مجموعه از نماهای پیش فرض فضای کاری پیروی می کند.", + "viewsOverrideHint": "این مجموعه نماهای پیش فرض فضای کاری را لغو می کند.", + "resetViews": "بازنشانی به پیش فرض فضای کاری", + "noCardFields": "هیچ فیلد کارت پیکربندی نشده است.", + "addField": "فیلد را اضافه کنید", + "systemFields": "فیلدهای سیستم", + "customFields": "فیلدهای سفارشی", + "manageCustomFields": "مدیریت فیلدهای سفارشی", + "createCustomField": "ایجاد فیلد سفارشی", + "customFieldsGlobalNote": "فیلدهای سفارشی به صورت جهانی توسط یک مدیر سیستم مدیریت می شوند.", + "displayOptions": "گزینه های نمایش", + "displayOptionsHint": "نحوه نمایش کار تکمیل شده و سمت راست ترین ستون را کنترل کنید.", + "columnColor": "رنگ ستون", + "latestFiftyRightmost": "فقط آخرین 50 مورد را در سمت راست ترین ستون نشان دهید", + "latestFiftyRightmostHint": "مفید برای ستون های مشغول انجام شده بدون محدود کردن بقیه برد.", + "hideCompletedByAge": "موارد تکمیل شده قدیمی را پنهان کنید", + "hideCompletedByAgeHint": "کار ناتمام قابل مشاهده می ماند. کار تکمیل شده با فعالیت اخیر فیلتر می شود.", + "recentActivityWindow": "پنجره فعالیت اخیر", + "days": "روز", + "retentionWindowHint": "موارد تکمیل شده بدون فعالیت در این مدت پنهان می شوند.", + "retentionRangeError": "یک عدد کامل از 1 تا 3650 وارد کنید.", + "completedVisibility": "کار تمام شده", + "completedVisibilityCustom": "سفارشی (از گزینه های زیر استفاده کنید)", + "completedVisibilityHint": "انتخاب کنید که این برد چقدر کار تکمیل شده بارگیری می کند. برای هر بیننده ای اعمال می شود.", + "completedLimit": "تعداد موارد تکمیل شده", + "completedLimitHint": "حداکثر این تعداد مورد تکمیل شده را روی برد نشان دهید (1–{max}).", + "backlogSelected": "{count} وضعیت برای بک‌لاگ انتخاب شده است", + "backlogSelected_one": "وضعیت {count} برای بک‌لاگ انتخاب شده است", + "backlogSelected_other": "{count} وضعیت برای بک‌لاگ انتخاب شده است", + "systemFieldNames": { + "status": "وضعیت", + "priority": "اولویت", + "milestone": "نقطه عطف", + "iteration": "تکرار", + "due_date": "سررسید", + "start_date": "تاریخ شروع", + "end_date": "تاریخ پایان", + "labels": "برچسب ها", + "created_at": "ایجاد شد", + "project": "پروژه", + "parent": "والد", + "time_in_status": "زمان در وضعیت", + "story_points": "امتیاز داستان", + "estimate": "تخمین", + "sla": "SLA" + } + } + }, + "roles": { + "title": "نقش ها", + "subtitle": "نقش ها و سطوح دسترسی را مدیریت کنید", + "role": "نقش", + "roles_one": "{count} نقش", + "roles_other": "{count} نقش", + "createRole": "نقش ایجاد کنید", + "editRole": "ویرایش نقش", + "deleteRole": "نقش را حذف کنید", + "roleName": "نام نقش", + "roleDescription": "توضیحات", + "permissions": "مجوزها", + "members": "اعضا", + "assignRole": "تعیین نقش", + "removeRole": "نقش را حذف کنید", + "noRoles": "هیچ نقشی پیدا نشد", + "roleCreated": "نقش با موفقیت ایجاد شد", + "roleUpdated": "نقش با موفقیت به روز شد", + "roleDeleted": "نقش با موفقیت حذف شد", + "cannotDeleteSystemRole": "نقش های سیستم را نمی توان حذف کرد" + }, + "contactLevels": { + "title": "سطوح تماس", + "subtitle": "سطوح تماس پورتال مورد استفاده برای اشتراک‌گذاری درخواست سازمان را مدیریت کنید", + "createLevel": "سطح ایجاد کنید", + "editLevel": "ویرایش سطح", + "noLevels": "هنوز سطح تماسی وجود ندارد", + "namePlaceholder": "به عنوان مثال مدیر، صورتحساب، بیننده", + "nameRequired": "نام سطح تماس مورد نیاز است.", + "failedToLoad": "سطوح مخاطب بارگیری نشد.", + "failedToSave": "سطح تماس ذخیره نشد.", + "deleteFailed": "سطح تماس حذف نشد.", + "confirmDelete": "«{name}» حذف شود؟ مخاطبین دارای این سطح آن را از دست می دهند.", + "system": "سیستم" + }, + "permissions": { + "title": "مجوزها", + "subtitle": "پیکربندی مجموعه های مجوز", + "permission": "اجازه", + "permissionSet": "مجموعه مجوز", + "grantPermission": "اعطای مجوز", + "revokePermission": "لغو مجوز", + "read": "بخوانید", + "write": "نوشتن", + "delete": "حذف کنید", + "admin": "مدیر", + "manage": "مدیریت کنید", + "view": "مشاهده کنید", + "edit": "ویرایش کنید", + "create": "ایجاد کنید", + "noAccessMessage": "شما اجازه دسترسی به این صفحه را ندارید." + } +}; diff --git a/frontend/src/lib/locales/fa/adminOperations.js b/frontend/src/lib/locales/fa/adminOperations.js new file mode 100644 index 000000000..f8626ea51 --- /dev/null +++ b/frontend/src/lib/locales/fa/adminOperations.js @@ -0,0 +1,818 @@ +export default { + "settings": { + "adminOperations": { + "tabs": { + "capabilities": "قابلیت ها", + "credentials": "اعتبارنامه", + "runnerPools": "استخرهای رانر" + }, + "agentTemplates": { + "title": "الگوهای عامل", + "subtitle": "کاتالوگ ایجاد Agent Studio را بازنویسی کنید: نام‌های الگو، انواع نمایه و دستورالعمل‌ها", + "addTemplate": "اضافه کردن الگو", + "empty": "هنوز هیچ بازنویسی‌ای پیکربندی نشده است. Agent Studio به پیش‌فرض‌های تعبیه‌شده بازمی‌گردد.", + "standard": "استاندارد", + "coding": "کد نویسی", + "startFromNew": "شروع از… (الگوی سفارشی جدید)", + "loadFailed": "بارگیری الگوهای عامل انجام نشد: {error}", + "templateKeyRequired": "کلید الگو مورد نیاز است", + "nameRequired": "نام الزامی است", + "saveFailed": "ذخیره نشد: {error}", + "deleteMessage": "آیا مطمئنید که می‌خواهید بازنویسی «{name}» را حذف کنید؟ این الگوی پیش فرض را بازیابی می کند.", + "key": "کلید", + "profileType": "نوع پروفایل", + "editOverride": "ویرایش بازنویسی", + "addOverride": "افزودن بازنویسی", + "startFromDefault": "از پیش فرض شروع کنید", + "startFromPlaceholder": "یک الگوی داخلی را بازنویسی کنید یا یک الگوی جدید ایجاد کنید", + "startFromHelp": "انتخاب یک پیش‌فرض آن را با ویرایش‌های شما بازنویسی می‌کند. «شروع از…» یک الگوی کاملاً جدید ایجاد می کند.", + "templateKey": "کلید الگو", + "templateKeyPlaceholder": "به عنوان مثال software_engineer", + "builtInOverride": "این بازنویسی جایگزین الگوی داخلی «{name}» می‌شود.", + "namePlaceholder": "به عنوان مثال مهندس نرم افزار", + "instructions": "دستورالعمل ها", + "instructionsPlaceholder": "درخواست سیستم یا شخصیت این الگو" + }, + "llmConnections": { + "title": "اتصالات هوش مصنوعی", + "subtitle": "ارائه دهندگان مدل هوش مصنوعی را برای ویژگی های هوشمند پیکربندی کنید", + "addConnection": "افزودن اتصال", + "empty": "هنوز هیچ اتصال هوش مصنوعی پیکربندی نشده است.", + "addFirst": "اولین اتصال خود را اضافه کنید", + "provider": "ارائه دهنده", + "model": "مدل", + "default": "پیش فرض", + "referenced": "توسط قابلیت های فعال شده ارجاع داده می شود", + "vision": "بینایی", + "noVision": "بدون بینایی", + "visionTitle": "این مدل می تواند تصاویر روی مواردی کاری را تحلیل کند", + "noVisionTitle": "این مدل فقط متنی است و نمی تواند تصاویر را ببیند", + "testConnection": "تست اتصال", + "addTitle": "اتصال هوش مصنوعی را اضافه کنید", + "editTitle": "اتصال هوش مصنوعی را ویرایش کنید", + "disableWarning": "غیرفعال کردن این اتصال، قابلیت‌های عمل وابسته LLM را در زمان اجرا غیرفعال می‌کند.", + "disableWarningHelp": "ارجاع شده توسط {capabilities}. قابلیت‌ها همچنان فعال به نظر می‌رسند، اما اقداماتی که از آن‌ها استفاده می‌کنند تا زمانی که اتصال دوباره فعال نشود یا قابلیت دوباره مشخص نشود، با شکست مواجه می‌شوند.", + "namePlaceholder": "به عنوان مثال OpenRouter Claude Sonnet", + "selectProvider": "انتخاب ارائه دهنده…", + "baseUrl": "URL پایه", + "apiKey": "کلید API", + "keyConfigured": "کلید پیکربندی شد (برای نگه داشتن آن خالی بگذارید)", + "enterApiKey": "کلید API را وارد کنید", + "searchModels": "مدل‌ها را جستجو کنید یا ID را تایپ کنید…", + "typeModelId": "یک مدل ID تایپ کنید (یا روی بازخوانی کلیک کنید)", + "supportsImages": "پشتیبانی از ورودی تصویر", + "textOnly": "فقط متنی", + "lastAttemptFailed": "آخرین تلاش ناموفق: {error}", + "cachedCount": "{count} حافظه پنهان", + "refreshing": "در حال تازه کردن…", + "enterBaseUrlHelp": "برای واکشی مدل‌ها، یک URL پایه وارد کنید، یا یک مدل ID را در بالا تایپ کنید تا بدون مرور از آن استفاده کنید.", + "noCachedModels": "مدل های کش وجود ندارد. برای واکشی از {provider} روی بازخوانی کلیک کنید، یا یک مدل ID را در بالا تایپ کنید تا بدون مرور از آن استفاده کنید.", + "selectModel": "انتخاب مدل…", + "providerConfig": "پیکربندی ارائه‌دهنده (JSON)", + "providerConfigHelp": "فیلدهای درخواست سطح بالای اختیاری در فراخوانی‌های ارائه‌دهنده ادغام شدند. فیلدهای Windshift موجود اولویت دارند.", + "visionSupport": "پشتیبانی از بینایی", + "visionAuto": "خودکار (تشخیص از روی مدل)", + "visionOn": "روشن (دید اجباری)", + "visionOff": "خاموش (فقط متن اجباری)", + "visionHelp": "کنترل می کند که آیا عامل برنامه نویسی ممکن است تصاویر را به این مدل ارسال کند. خودکار از قابلیت مدل شناخته شده استفاده می کند. آن را برای مدل های محلی یا سفارشی لغو کنید.", + "maxOutputTokens": "حداکثر توکن های خروجی", + "maxOutputTokensPlaceholder": "به عنوان مثال 65536", + "maxOutputTokensHelp": "محدودیت توکن خروجی کاتالوگ مدل برای این اتصال را لغو می کند. برای استفاده از مدل پیش فرض، خالی بگذارید. مقداری بالاتر از حد واقعی مدل توسط ارائه‌دهنده رد می‌شود، بنابراین تنها زمانی آن را افزایش دهید که بدانید مدل از آن پشتیبانی می‌کند.", + "defaultConnection": "اتصال پیش فرض", + "rateHint": "{prompt}/{completion} در هر 1 میلیون توکن", + "neverRefreshed": "هرگز تجدید نشد", + "refreshedNow": "همین الان به روز شد", + "refreshedMinutes": "{count} دقیقه پیش بازخوانی شد", + "refreshedHours": "{count} ساعت پیش بازخوانی شد", + "refreshedDays": "{count} روز پیش بازنگری شد", + "modelsFetched": "{count} مدل از {provider} واکشی شد", + "refreshFailed": "مدل‌ها به‌روزرسانی نشد", + "loadFailed": "اتصالات هوش مصنوعی بارگیری نشد", + "oneCapability": "1 قابلیت اقدام فعال: {name}", + "manyCapabilities": "{count} قابلیت اقدام فعال: {names}", + "deleteTitle": "اتصال هوش مصنوعی را حذف کنید", + "deleteMessage": "آیا مطمئن هستید که می خواهید {name} را حذف کنید؟ این عمل قابل لغو نیست.", + "deleteImpact": "این اتصال توسط {capabilities} ارجاع داده شده است. این قابلیت ها از کار خواهند افتاد.", + "deleted": "اتصال هوش مصنوعی حذف شد", + "deleteFailed": "اتصال حذف نشد", + "configObject": "پیکربندی ارائه دهنده باید یک شی JSON باشد", + "configJson": "پیکربندی ارائه‌دهنده باید JSON معتبر باشد", + "created": "اتصال هوش مصنوعی ایجاد شد", + "createFailed": "اتصال ایجاد نشد", + "updated": "اتصال هوش مصنوعی به روز شد", + "updateFailed": "اتصال به روز نشد", + "connectionSuccessful": "اتصال با موفقیت انجام شد", + "testPassed": "تست اتصال موفق بود", + "testFailed": "تست اتصال ناموفق بود" + }, + "actionCapabilities": { + "workspaceScope": "محدوده فضای کاری", + "availableAll": "در تمامی فضاهای کاری موجود است", + "availableAllHelp": "اقدامات در هر فضای کاری می تواند به این قابلیت اشاره کند.", + "restrict": "محدود به فضاهای کاری خاص", + "restrictHelp": "فقط فضاهای کاری انتخاب شده در زیر می توانند به این قابلیت اشاره کنند.", + "noWorkspaces": "هیچ فضای کاری در دسترس نیست.", + "useCredential": "از یک اعتبار تأیید اعتبار استفاده کنید", + "credential": "اعتبارنامه", + "globalCredentialHelp": "قابلیت‌های جهانی فقط می‌توانند به اعتبار جهانی ارجاع دهند.", + "workspaceCredentialHelp": "قابلیت‌های فضای کاری می‌توانند به اعتبارنامه‌های جهانی یا اعتبارنامه‌های موجود در فهرست مجاز فضای کاری خود اشاره کنند.", + "headerName": "نام سربرگ", + "scheme": "طرح (فقط توکن های حامل)", + "additionalHeaders": "هدرهای مخفی اضافی", + "addSecretHeader": "هدر مخفی را اضافه کنید", + "additionalHeadersHelp": "برای APIهایی که به بیش از یک هدر مخفی نیاز دارند. هر ردیف در زمان درخواست یک اعتبارنامه را حل می کند.", + "defaultHeadersHelp": "فقط سرصفحه‌های غیرحساس. توکن‌های احراز هویت در بخش زیر قرار دارند.", + "authorizationPlaceholder": "مجوز", + "bearerPlaceholder": "حامل", + "apiKeyHeaderPlaceholder": "X-API-Key" + }, + "actionCredentials": { + "title": "اعتبارنامه اقدام", + "subtitle": "توکن‌های رمزگذاری‌شده API که به‌جای ذخیره‌سازی توکن‌ها به صورت درون خطی، با قابلیت‌های HTTP ارجاع می‌شوند. مقادیر مخفی فقط نوشتن هستند و قابل خواندن نیستند.", + "add": "اضافه کردن اعتبار", + "addFirst": "اولین اعتبارنامه را اضافه کنید", + "empty": "هنوز اعتباری وجود ندارد.", + "bearerToken": "توکن Bearer", + "apiKey": "کلید API", + "basicAuth": "احراز هویت پایه (کاربر: رمز عبور)", + "customHeader": "مقدار هدر سفارشی", + "loadFailed": "اعتبارنامه اقدام بارگیری نشد", + "nameSecretRequired": "نام و راز مورد نیاز است", + "workspaceRequired": "حداقل یک فضای کاری را انتخاب کنید یا اعتبارنامه را در همه فضاهای کاری در دسترس قرار دهید.", + "masked": "نقاب زده", + "created": "اعتبار ایجاد شد ({prefix})", + "createFailed": "ایجاد اعتبارنامه انجام نشد", + "updated": "اعتبارنامه به روز شد", + "updateFailed": "اعتبارنامه به‌روزرسانی نشد", + "rotated": "راز چرخانده شد ({prefix})", + "rotateFailed": "چرخش مخفی انجام نشد", + "deleteTitle": "حذف اعتبار", + "deleteMessage": "{name} حذف شود؟ هر قابلیتی که هنوز به آن ارجاع دهد در زمان اجرا از بین می رود.", + "deleted": "اعتبارنامه حذف شد", + "deleteFailed": "اعتبارنامه حذف نشد", + "secret": "راز", + "scope": "دامنه", + "storedSecret": "ذخیره شده و هرگز به طور کامل نمایش داده نمی شود", + "noSecret": "هیچ رازی", + "allWorkspaces": "تمام فضاهای کاری", + "workspaceCount": "فضاهای کاری: {count}", + "rotateSecret": "راز را بچرخانید", + "workspaceScope": "محدوده فضای کاری", + "availableAll": "در تمامی فضاهای کاری موجود است", + "availableAllHelp": "هر فضای کاری می تواند این اعتبار را حل کند.", + "restrict": "محدود به فضاهای کاری خاص", + "restrictHelp": "فقط فضاهای کاری انتخاب شده در زیر می توانند این اعتبارنامه را حل کنند.", + "noWorkspaces": "هیچ فضای کاری در دسترس نیست.", + "secretPlaceholder": "رمز، کلید API یا user:password را وارد کنید", + "secretHelp": "رمزگذاری شده ذخیره می شود. این مقدار دیگر نشان داده نخواهد شد. در صورت لزوم آن را بعداً بچرخانید.", + "metadata": "فراداده (JSON، اختیاری)", + "metadataHelp": "فقط فراداده غیرحساس. کلیدهایی مانند password، token و secret رد می‌شوند.", + "edit": "ویرایش اعتبار", + "storedRotate": "ذخیره شده ({prefix}) - از چرخش برای جایگزینی آن استفاده کنید.", + "rotateTitle": "چرخش راز — {name}", + "rotateHelp": "راز جدید را وارد کنید. مقدار قدیمی بلافاصله جایگزین می‌شود و قابل بازیابی نیست.", + "newSecret": "راز جدید", + "rotate": "چرخش", + "namePlaceholder": "GitHub PAT" + }, + "runnerPools": { + "title": "استخرهای رانر", + "subtitle": "مجموعه‌ای از راه‌اندازهای راه دور که کارهای عامل کدنویسی را اجرا می‌کنند. برای افزودن یک میزبان رانر، یک توکن ثبت نام صادر کنید. به مستندات راه‌اندازی RUNNER مراجعه کنید.", + "newPool": "استخر جدید", + "empty": "بدون استخر رانر", + "emptyDescription": "یک استخر ایجاد کنید، سپس یک توکن ثبت نام برای اتصال یک میزبان رانر ایجاد کنید.", + "pool": "استخر", + "maxConcurrent": "حداکثر همزمان", + "token": "توکن", + "expires": "منقضی می شود", + "runner": "رانر", + "registered": "ثبت شده است", + "lastHeartbeat": "آخرین ضربان قلب", + "unlimited": "نامحدود", + "registrationTokens": "توکن های ثبت نام — {name}", + "mintToken": "صدور توکن", + "noTokens": "هنوز هیچ توکنی وجود ندارد", + "never": "هرگز", + "revokeToken": "ابطال توکن", + "runnersForPool": "رانرها — {name}", + "noRunners": "هیچ رانری ثبت نام نکرده است", + "revokeRunner": "رانر را لغو کنید", + "newPoolTitle": "استخر رانر جدید", + "maxConcurrentRuns": "حداکثر اجراهای همزمان", + "zeroUnlimited": "0 = نامحدود", + "availableAll": "در دسترس برای همه فضاهای کاری", + "createPool": "استخر ایجاد کنید", + "mintTitle": "صدور توکن ثبت نام", + "descriptionOptional": "توضیحات (اختیاری)", + "expiresHours": "منقضی می شود (ساعت)", + "zeroNeverExpires": "0 = هرگز منقضی نمی شود (لغو برای غیرفعال کردن)", + "addHostTitle": "میزبان رانر را اضافه کنید", + "installHelp": "این را روی میزبان رانر اجرا کنید. کانتینر رانر را با URL این سرور، تگ تصویر منطبق، و توکن جدید نصب و راه‌اندازی می‌کند.", + "manualPrefix": "در عوض به‌صورت دستی راه‌اندازی می‌کنید؟ توکن را به این صورت تنظیم کنید", + "setTokenPrefix": "توکن را به این صورت تنظیم کنید", + "tokenOnce": "در میزبان رانر یک بار نشان داده می شود و نمی توان دوباره آن را بازیابی کرد.", + "loadFailed": "بارگیری استخرهای رانر انجام نشد", + "tokensLoadFailed": "توکن‌ها بارگیری نشدند", + "runnersLoadFailed": "رانرها بارگیری نشدند", + "created": "استخر رانر ایجاد شد", + "createFailed": "استخر رانر ایجاد نشد", + "mintFailed": "توکن صادر نشد", + "revokeTokenTitle": "ابطال توکن ثبت نام", + "revokeTokenMessage": "توکن {prefix} لغو شود؟ رانرها دیگر نمی توانند با آن ثبت نام کنند.", + "revoke": "لغو", + "tokenRevoked": "توکن باطل شد", + "revokeTokenFailed": "توکن باطل نشد", + "revokeRunnerTitle": "رانر را لغو کنید", + "revokeRunnerMessage": "رانر {name} را اخراج کنید؟ برای پیوستن مجدد باید دوباره ثبت نام کند.", + "runnerRevoked": "رانر لغو شد", + "revokeRunnerFailed": "رانر لغو نشد", + "copied": "در کلیپ بورد کپی شد", + "copyFailed": "کپی انجام نشد - انتخاب کنید و به صورت دستی کپی کنید", + "revoked": "لغو شد", + "expired": "منقضی شده است", + "active": "فعال", + "online": "آنلاین", + "stale": "کهنه", + "unknown": "ناشناس" + } + } + }, + "workspaceMembers": { + "invalidWorkspace": "فضای کاری نامعتبر است.", + "loadFailed": "بارگیری اعضای فضای کاری انجام نشد.", + "addMemberFailed": "عضو اضافه نشد: {error}", + "addGroupFailed": "گروه اضافه نشد: {error}", + "removeRoleTitle": "نقش {role} از {name} حذف شود؟", + "removeRoleMessage": "این انتساب نقش و مجوزهای آن را حذف می کند.", + "removeRoleFailed": "نقش حذف نشد: {error}", + "summaryTitle": "خلاصه دسترسی", + "summaryDescription": "نحوه تخصیص نقش ها در این فضای کاری را نشان می دهد. نقشی بدون اعضا یا گروه های اختصاص داده شده برای همه در دسترس است. اختصاص دادن نقش {viewer} به هر کسی، فضای کاری را محدود می‌کند، بنابراین فقط کاربران و گروه‌های اختصاص داده شده می‌توانند آن را ببینند. سلسله مراتب مجوز: {viewer} → {editor} → {tester}.", + "role": "نقش", + "effectiveAccess": "دسترسی داشته باشید", + "assignments": "تخصیص‌ها", + "memberOrGroup": "عضو یا گروه", + "rolesLabel": "نقش ها", + "actions": "اقدامات", + "roles": { + "viewer": { + "name": "بیننده", + "description": "محتوای فضای کاری را مشاهده کنید و در بحث ها شرکت کنید" + }, + "editor": { + "name": "ویرایشگر", + "description": "موارد کاری را در این فضای کاری ایجاد و ویرایش کنید" + }, + "tester": { + "name": "تستر", + "description": "موارد را مشاهده کنید، آزمایش ها را اجرا کنید، موارد تست را مدیریت کنید و نقص ایجاد کنید" + }, + "administrator": { + "name": "مدیر", + "description": "کل فضای کاری، از جمله مجوزهای دسترسی را مدیریت کنید" + } + }, + "memberCount": "{count} عضو", + "memberCount_one": "{count} عضو", + "memberCount_other": "{count} عضو", + "everyone": "همه", + "noDirectAssignments": "بدون تخصیص مستقیم", + "addMember": "اضافه کردن عضو", + "addGroup": "اضافه کردن گروه", + "searchPlaceholder": "جستجوی اعضا یا گروه ها بر اساس نام یا ایمیل…", + "loading": "در حال بارگیری اعضای فضای کاری…", + "empty": "هنوز هیچ عضو یا گروهی وجود ندارد. آنها را برای پیکربندی دسترسی به این فضای کاری اضافه کنید.", + "noSearchResults": "هیچ عضو یا گروهی برای \"{query}\" یافت نشد.", + "unknownUser": "کاربر ناشناس", + "group": "گروه", + "removeRoleAction": "حذف نقش: {role}", + "addMemberTitle": "عضو فضای کاری را اضافه کنید", + "user": "کاربر", + "selectUser": "انتخاب کاربر…", + "selectRole": "انتخاب نقش…", + "addingMember": "در حال افزودن عضو…", + "cancel": "لغو کنید", + "addGroupTitle": "گروه را به فضای کاری اضافه کنید", + "selectGroup": "انتخاب گروه…", + "addingGroup": "در حال افزودن گروه…" + }, + "boardControls": { + "groupBy": "گروه بندی بر اساس", + "groupByValue": "گروه بر اساس: {name}", + "sortBy": "مرتب سازی بر اساس", + "sortBubble": "مرتب سازی: حباب", + "rankMode": "حالت رتبه", + "rankModeDescription": "ترتیب دستی کشیدن و رها کردن", + "bubbleMode": "حالت حباب", + "bubbleModeDescription": "کارت‌هایی که اخیراً فعال شده‌اند به اوج می‌رسند", + "rightmostColumn": "سمت راست ترین ستون", + "noSwimlanes": "بدون خط شنا", + "noSwimlanesDescription": "هر مورد را به عنوان یک کارت معمولی نشان دهید", + "hideColumnSwimlanes": "{name} خطوط شنا را پنهان کنید", + "groupOutsideColumnWithType": "گروه {type} موارد فقط خارج از {column}", + "groupOutsideColumn": "گروه‌بندی موارد فقط خارج از {column}", + "hiddenCount": "{count} پنهان شد", + "useAsSwimlanes": "از این‌ها به عنوان خط شنا استفاده کنید", + "milestoneSwimlanes": "خطوط شنای نقاط عطف", + "milestoneSwimlanesDescription": "کارت ها را بر اساس نقطه عطف گروه بندی کنید", + "configureMilestones": "خطوط شنای نقاط عطف را پیکربندی کنید", + "configureMilestonesDescription": "نقاط عطف جهانی و نقاط عطف تکمیل شده را انتخاب کنید", + "showCompletedMilestones": "نمایش نقاط عطف تکمیل شده", + "showCompletedMilestonesHint": "کارت‌های روی نقاط عطف تکمیل‌شده پنهان، در خط شنای نقاط عطف تکمیل‌شده قابل مشاهده می‌مانند.", + "showOpenFromCompletedMilestones": "نمایش مسائل باز از نقاط عطف تکمیل شده", + "showOpenFromCompletedMilestonesHint": "مسائل باز که هنوز به یک نقطه عطف تکمیل شده یا لغو شده اختصاص داده شده اند را در یک خط اختصاصی جمع آوری کنید تا بتوان آنها را به نقطه عطف سمت راست منتقل کرد.", + "openFromCompletedMilestones": "مسائل مربوط به نقاط عطف تکمیل شده را باز کنید", + "globalMilestones": "نقاط عطف جهانی", + "globalMilestonesSelected": "{count} انتخاب شد", + "globalMilestonesHint": "نقاط عطف جهانی در بین فضاهای کاری به اشتراک گذاشته می‌شود، بنابراین فقط آن‌هایی که انتخاب می‌کنید یک خط شنای خالی دارند. نقاط عطف با کارت همیشه ظاهر می شوند.", + "noGlobalMilestones": "هیچ نقطه عطف جهانی در دسترس نیست.", + "completedMilestones": "نقاط عطف تکمیل شده", + "milestoneSwimlanesSaved": "تنظیمات خطوط شنای نقاط عطف ذخیره شد", + "completedLabel": "تکمیل شده: {value}", + "completedAll": "نمایش همه", + "completedAllDescription": "هر مورد تکمیل شده را واکشی کنید", + "completedLastDay": "روز گذشته", + "completedLastDayDescription": "موارد تکمیل شده فعال در 24 ساعت گذشته", + "completedLastWeek": "هفته گذشته", + "completedLastWeekDescription": "موارد تکمیل شده فعال در 7 روز گذشته", + "completedLimit": "محدود به", + "completedLimitDescription": "فقط جدیدترین موارد تکمیل شده را واکشی کنید", + "completedNone": "پنهان کردن کامل شد", + "completedNoneDescription": "کارهای تکمیل شده را روی این برد بارگذاری نکنید", + "completedLatestFifty": "آخرین 50", + "completedCustom": "سفارشی", + "completedVisibilitySaved": "نمای کار تکمیل شده ذخیره شد" + }, + "systemImport": { + "title": "درون‌ریزی سیستم", + "subtitle": "داده‌ها را از Jira Cloud و دیگر سیستم‌های خارجی وارد کنید", + "newImport": "درون‌ریزی جدید", + "savedConnections": "اتصالات ذخیره شده", + "savedConnectionsDescription": "اتصالات ابری Jira مورد استفاده برای وارد کردن داده را مدیریت کنید.", + "noConnections": "هنوز هیچ اتصال ذخیره شده ای وجود ندارد. برای اتصال Jira Cloud وارد کردن را شروع کنید.", + "lastUsed": "آخرین استفاده", + "deleteConnection": "اتصال را حذف کنید", + "deleteConnectionMessage": "این اتصال حذف شود؟ داده های درون‌ریزی‌شده و تاریخچه درون‌ریزی نگهداری می شوند. این عمل قابل لغو نیست.", + "connectionDeleted": "اتصال حذف شد", + "updateToken": "رمز را به روز کنید", + "updateTokenTitle": "اتصال Jira را به‌روزرسانی کنید", + "updateTokenDescription": "اعتبار ذخیره شده را جایگزین کنید. Windshift قبل از ذخیره، کد جدید را با Jira تأیید می‌کند.", + "connectionUpdated": "اتصال به روز شد", + "importHistory": "سابقه درون‌ریزی", + "importHistoryDescription": "وضعیت و نتایج درون‌ریزی قبلی", + "noImports": "هنوز درون‌ریزی‌ای وجود ندارد. برای دیدن تاریخچه، یک درون‌ریزی را شروع کنید.", + "instance": "نمونه", + "scope": "دامنه", + "started": "شروع شد", + "completed": "تکمیل شد", + "projects": "پروژه ها", + "workspaceCount": "{count} فضای کاری", + "workspaceCount_one": "{count} فضای کاری", + "workspaceCount_other": "{count} فضای کاری", + "itemCount": "{count} مورد", + "itemCount_one": "{count} مورد", + "itemCount_other": "{count} مورد", + "statuses": { + "completed": "تکمیل شد", + "running": "در حال اجرا", + "failed": "شکست خورد", + "data_deleted": "داده ها حذف شد", + "queued": "در صف" + }, + "phases": { + "initializing": "مقدار دهی اولیه", + "importing_project": "پروژه درون‌ریزی", + "completed": "تکمیل شد", + "running": "در حال اجرا" + }, + "scopes": { + "workItems": "اقلام کار" + }, + "deleteData": "داده ها را حذف کنید", + "unavailable": "در دسترس نیست", + "removeFromList": "حذف از لیست", + "importRemovedFromHistory": "درون‌ریزی از سابقه حذف شد", + "dataDeleted": "داده‌های Jira درون‌ریزی‌شده حذف شد. می توانید دوباره درون‌ریزی را اجرا کنید.", + "deleteImportedTitle": "داده‌های Jira درون‌ریزی‌شده را حذف کنید", + "deleteWarningTitle": "این ممکن است چندین Windshift فضای کاری را حذف کند.", + "deleteWarningDescription": "Windshift همه چیزهایی را که توسط این درون‌ریزی Jira ثبت شده است، از جمله فضاهای کاری نقشه‌برداری شده، موارد، نظرات، پیوست‌ها، پیوندها، نقاط عطف، و فراداده‌های درون‌ریزی‌شده حذف می‌کند. این قابل واگرد نیست.", + "jobId": "شناسه کار", + "importedScope": "داده های درون‌ریزی‌شده", + "workspacesToRemove": "فضاهای کاری که ممکن است حذف شوند", + "typeJobId": "برای تأیید حذف، کار ID را وارد کنید", + "deleteImportedData": "حذف داده های درون‌ریزی‌شده" + }, + "scmSettings": { + "title": "کنترل منبع", + "subtitle": "ارائه دهندگان SCM را وصل کنید و مخازن را به این فضای کاری پیوند دهید", + "availableProviders": "ارائه دهندگان در دسترس", + "connectedProviders": "ارائه دهندگان متصل", + "connected": "متصل شد", + "connect": "اتصال", + "reconnect": "دوباره وصل شوید", + "noProviders": "هیچ ارائه دهنده SCM پیکربندی نشده است", + "noProvidersDescription": "از یک سرپرست سیستم بخواهید ارائه دهندگان SCM را در پنل مدیریت پیکربندی کند.", + "noRepositories": "هنوز هیچ مخزن پیوند داده نشده است", + "linkRepositories": "پیوند مخازن", + "repositoryCount": "{count} مخازن", + "repositoryCount_one": "مخزن {count}", + "repositoryCount_other": "{count} مخازن", + "repositorySettings": "تنظیمات مخزن", + "tagPattern": "الگوی برچسب", + "branchPattern": "الگوی شاخه", + "tags": "برچسب ها", + "branches": "شاخه ها", + "patternsHelp": "این الگوهای گلوب، خودکارسازی نقاط عطف را هدایت می‌کنند. برچسب‌های منطبق یک نقطه عطف را ارتقا می‌دهند. شاخه‌های منطبق یک نقطه عطف برنامه‌ریزی‌شده ایجاد می‌کنند.", + "repoSettingsSaved": "تنظیمات مخزن ذخیره شد", + "repoSettingsSaveFailed": "تنظیمات مخزن ذخیره نشد", + "loadFailed": "تنظیمات SCM بارگیری نشد", + "oauthFailed": "اتصال مجدد OAuth شروع نشد", + "oauthConnected": "حساب کنترل منبع متصل شد", + "oauthFailedCallback": "اتصال کنترل منبع ناموفق بود", + "connectedTo": "متصل به {name}", + "connectFailed": "اتصال ارائه دهنده ناموفق بود", + "disconnectMessage": "{name} قطع شود؟ با این کار پیوند تمام مخازن نیز قطع خواهد شد.", + "disconnectedFrom": "قطع ارتباط با {name}", + "disconnectFailed": "ارائه دهنده قطع نشد", + "linkedRepositories": "مخازن مرتبط {count}", + "linkedRepositories_one": "مخزن {count} پیوند خورده است", + "linkedRepositories_other": "مخازن {count} پیوند خورده است", + "unlinkMessage": "پیوند {name} لغو شود؟", + "unlinkedRepository": "لغو پیوند {name}", + "unlinkFailed": "لغو پیوند مخزن انجام نشد", + "gitlabWebhook": "webhook گیت‌لب", + "webhookHelp": "URL کالبک و راز را به webhook پروژه GitLab اضافه کنید. رویدادهای push، برچسب، درخواست ادغام، یادداشت و انتشار پذیرفته می‌شوند.", + "configureWebhook": "جزئیات webhook را پیکربندی کنید", + "rotateWebhookSecret": "راز را بچرخانید", + "webhookSecretOnce": "اکنون این راز را کپی کنید. دیگر نمایش داده نخواهد شد.", + "webhookSecretRotated": "راز webhook گیت‌لب چرخانده شد", + "webhookLoadFailed": "تنظیمات webhook گیت‌لب بارگیری نشد", + "webhookRotateFailed": "چرخش راز webhook گیت‌لب ناموفق بود" + }, + "workspaceTemplates": { + "title": "الگوهای اقلام کاری", + "subtitle": "توضیحات قابل استفاده مجدد برای موارد جدید. یک الگو را می‌توان هنگام ایجاد یک مورد انتخاب کرد یا به یک نوع مورد اختصاص داد.", + "newTemplate": "قالب جدید", + "editTemplate": "ویرایش قالب", + "empty": "هنوز هیچ قالبی وجود ندارد", + "emptyDescription": "الگویی ایجاد کنید تا به اقلام جدید ساختاری منسجم بدهد.", + "modeLabel": "حالت", + "mode": { + "selectable": "قابل انتخاب - هنگام ایجاد یک مورد در دسترس است", + "mandatory": "اجباری - برای یک نوع مورد اعمال می شود" + }, + "modeValue": { + "selectable": "قابل انتخاب", + "mandatory": "اجباری" + }, + "itemTypes": "انواع موارد", + "allTypes": "همه انواع", + "allItemTypes": "همه انواع اقلام", + "selectItemType": "یک نوع مورد را انتخاب کنید", + "targetTypesOptional": "انواع مورد (اختیاری، خالی بگذارید برای همه)", + "targetTypeRequired": "نوع مورد (دقیقا یکی را انتخاب کنید)", + "descriptionBody": "توضیحات (Markdown)", + "bodyPlaceholder": "## مراحل برای تولید مثل\n\n1. …", + "mandatoryTypeError": "یک الگوی اجباری باید دقیقاً یک نوع مورد را هدف قرار دهد.", + "createTemplate": "قالب ایجاد کنید", + "deleteTemplate": "حذف قالب", + "deleteTitle": "الگو حذف شود؟", + "deleteMessage": "«{name}» حذف شود؟ این الگو دیگر برای موارد جدید ارائه نخواهد شد. موارد موجود تغییر نخواهند کرد.", + "loadFailed": "بارگیری الگوها انجام نشد", + "saveFailed": "الگو ذخیره نشد", + "deleteFailed": "حذف الگو انجام نشد", + "created": "الگو ایجاد شد", + "updated": "الگو به روز شد", + "deleted": "الگو حذف شد" + }, + "cannedResponses": { + "title": "پاسخ‌های آماده", + "subtitle": "عامل‌های پشتیبانی می‌توانند قطعه‌های پاسخ قابل استفاده مجدد را در نظرات درج کنند. قطعه‌های خصوصی داخلی می‌مانند و هرگز به مشتریان پورتال نمی‌رسند.", + "new": "پاسخ آماده جدید", + "edit": "پاسخ آماده را ویرایش کنید", + "empty": "هنوز هیچ پاسخ آماده‌ای وجود ندارد", + "emptyDescription": "یک قطعه ایجاد کنید تا نمایندگان بتوانند با یک کلیک به سوالات رایج پاسخ دهند.", + "visibility": "قابلیت مشاهده", + "used": "استفاده می شود", + "public": "عمومی", + "private": "خصوصی (یادداشت داخلی)", + "privateSnippet": "قطعه خصوصی (اتوماسیون ها هرگز آن را برای مشتریان ارسال نمی کنند)", + "body": "بدنه (Markdown)", + "bodyPlaceholder": "سلام {{requester.name}}،\n\nاز تماس شما متشکریم…", + "variablesHint": "متغیرها: {{requester.name}}، {{ticket.key}}، {{ticket.title}}، {{agent.name}}", + "insertResponse": "درج پاسخ آماده", + "searchPlaceholder": "جستجوی پاسخ های آماده", + "noneMatching": "هیچ پاسخ منطبقی وجود ندارد", + "deleteTitle": "پاسخ آماده حذف شود؟", + "deleteMessage": "«{name}» حذف شود؟ نمایندگان دیگر نمی توانند آن را درج کنند.", + "delete": "حذف پاسخ آماده", + "loadFailed": "پاسخ‌های آماده بارگیری نشد", + "saveFailed": "پاسخ آماده ذخیره نشد", + "deleteFailed": "پاسخ آماده حذف نشد", + "created": "پاسخ آماده ایجاد شد", + "updated": "پاسخ آماده به روز شد", + "deleted": "پاسخ آماده حذف شد" + }, + "systemCatalog": { + "statuses": { + "open": "باز", + "inProgress": "در حال انجام است", + "done": "انجام شد" + }, + "statusCategories": { + "toDo": "برای انجام", + "inProgress": "در حال انجام است", + "done": "انجام شد" + }, + "permissions": { + "system_admin": { + "name": "مدیر سیستم", + "description": "دسترسی کامل به مدیریت سیستم" + }, + "workspace_create": { + "name": "فضاهای کاری ایجاد کنید", + "description": "می تواند فضاهای کاری جدید ایجاد کند" + }, + "milestone_create": { + "name": "نقاط عطف جهانی را مدیریت کنید", + "description": "می تواند نقاط عطف جهانی قابل مشاهده در همه فضاهای کاری ایجاد و مدیریت کند" + }, + "iteration_manage": { + "name": "مدیریت تکرارهای جهانی", + "description": "می تواند تکرارهای سراسری قابل مشاهده در همه فضاهای کاری را ایجاد و مدیریت کند" + }, + "user_list": { + "name": "لیست کاربران", + "description": "می تواند دایرکتوری کاربر را مشاهده کند" + }, + "asset_manage": { + "name": "مدیریت مجموعه دارایی‌ها", + "description": "می‌تواند مجموعه‌های دارایی را ایجاد و مدیریت کند" + }, + "customers_manage": { + "name": "مشتریان را مدیریت کنید", + "description": "می تواند سازمان های مشتری و مشتریان پورتال را مدیریت کند" + }, + "project_manage": { + "name": "پروژه های زمان را مدیریت کنید", + "description": "می تواند تمام پروژه ها و کارنامه ها را مدیریت کند" + }, + "workspace_admin": { + "name": "مدیریت فضای کاری", + "description": "دسترسی مدیریت کامل به یک فضای کاری شامل تنظیمات و پیکربندی" + }, + "item_view": { + "name": "مشاهده فضای کاری و موارد", + "description": "می تواند فضای کار و موارد کار را مشاهده کند" + }, + "item_create": { + "name": "موارد ایجاد کنید", + "description": "می تواند موارد کاری را در یک فضای کاری ایجاد کند" + }, + "item_edit": { + "name": "موارد را ویرایش کنید", + "description": "می تواند موارد کاری را در یک فضای کاری ویرایش کند" + }, + "item_delete": { + "name": "موارد را حذف کنید", + "description": "می تواند موارد کاری را در یک فضای کاری حذف کند" + }, + "item_comment": { + "name": "افزودن نظر و ویرایش نظر خود", + "description": "می‌تواند نظر اضافه کند و نظرات خود را ویرایش کند" + }, + "comment_edit_others": { + "name": "نظرات دیگر را ویرایش کنید", + "description": "می تواند نظرات ایجاد شده توسط سایر کاربران را ویرایش کند" + }, + "test_view": { + "name": "مشاهده تست ها", + "description": "می تواند موارد تست، اجراهای آزمایشی و نتایج آزمایش را مشاهده کند" + }, + "test_execute": { + "name": "تست ها را اجرا کنید", + "description": "می تواند اجراهای آزمایشی را اجرا کند و نتایج آزمایش را ثبت کند" + }, + "test_manage": { + "name": "مدیریت تست ها", + "description": "می تواند موارد آزمایشی، مجموعه ها و پوشه ها را ایجاد، ویرایش و حذف کند" + }, + "action_manage": { + "name": "مدیریت اقدام‌ها", + "description": "می تواند اقدامات فضای کاری را ایجاد، ویرایش، حذف و اجرا کند" + }, + "action_credential_manage": { + "name": "اعتبارنامه اقدام را مدیریت کنید", + "description": "می‌تواند اعتبارنامه‌های اقدام با محدوده فضای کاری را ایجاد، بچرخاند و حذف کند" + }, + "action_set_actor": { + "name": "تنظیم اقدام‌کننده", + "description": "می‌تواند یک اقدام را به‌عنوان کاربر دیگر اجرا کند، از جمله در سراسر فضاهای کاری" + }, + "teams_manage": { + "name": "مدیریت تیم ها", + "description": "می تواند تیم ها را ایجاد، ویرایش و حذف کند" + }, + "public_board_manage": { + "name": "مدیریت بردهای عمومی", + "description": "می‌تواند مجموعه‌ها را عمومی کند و اشتراک‌گذاری برد عمومی را پیکربندی کند" + } + } + }, + "securitySettings": { + "agentUpdateFailed": "تنظیمات امنیتی عامل به روز نشد", + "policySaveFailed": "سیاست احراز هویت ذخیره نشد", + "workspaceAgents": "عوامل مدیریت شده در فضای کاری", + "workspaceAgentsDescription": "به مدیران فضای کاری اجازه دهید تا حساب‌های سرویس عامل متعلق به فضای کاری خود ایجاد کنند. حساب‌های موجود در صورت غیرفعال شدن در دسترس باقی می‌مانند.", + "userAgents": "عوامل مدیریت شده توسط کاربر", + "userAgentsDescription": "به کاربران اجازه دهید تا در نمایه خود عامل ایجاد کنند و برای آنها توکن های API صادر کنند. عامل‌ها همیشه مجوزهای مالک خود را به ارث می برند.", + "maxAgentsPerUser": "محدودیت عامل برای هر کاربر", + "maxAgentsDescription": "برای جلوگیری از ایجاد عوامل شخصی توسط کاربران، روی 0 تنظیم کنید. حداکثر: 1000", + "centralizedUsers": "حساب‌های سرویس متمرکز", + "centralizedUsersDescription": "به مدیران فضای کاری اجازه دهید اجراهای عامل کدگذاری را به حساب‌های سرویس متمرکز تأیید شده متصل کنند.", + "centralizedUsersWarning": "هر تخصیص در گزارش حسابرسی ثبت می‌شود. فقط حساب‌های در نظر گرفته شده برای خودکارسازی مشترک را تأیید کنید.", + "authenticationPolicy": "خط مشی ورود به سیستم", + "authenticationPolicyDescription": "نحوه احراز هویت کاربران در Windshift را انتخاب کنید.", + "authenticationMethod": "روش ورود به سیستم", + "previewMode": "حالت پیش نمایش", + "previewModeDescription": "نمایش هشدارهای خط مشی بدون مسدود کردن ورود به سیستم.", + "userStatistics": "آمار کاربران", + "totalUsers": "مجموع کاربران", + "withPasskey": "با کلید عبور", + "withoutPasskey": "بدون کلید عبور", + "ssoUsers": "کاربران SSO", + "systemAdmins": "مدیران سیستم", + "affectedUsers": "کاربران تحت تأثیر: {count}", + "admin": "مدیر", + "policyActive": "سیاست اجرا شد", + "policyActiveDescription": "کاربرانی که شرایط انتخاب شده را ندارند ممکن است نتوانند وارد سیستم شوند.", + "adminFallbackShort": "بازگشت اضطراری مدیر در حال حاضر فعال است.", + "fallbackEnabled": "بازگشت اضطراری مدیر فعال شد", + "fallbackEnabledDescription": "اگر روش اصلی در دسترس نباشد، مدیران سیستم همچنان ممکن است با رمز ورود وارد شوند.", + "disableFallback": "راه اندازی مجدد سرور بدون", + "fallbackDisabled": "بازگشت اضطراری مدیر غیرفعال شد", + "fallbackDisabledDescription": "خط مشی انتخاب شده برای مدیران سیستم نیز اعمال می شود. برای فعال کردن دسترسی اضطراری، سرور را با", + "enableFallback": "سرور را با", + "requiresSso": "ابتدا SSO را پیکربندی کنید", + "notRecommendedWithSso": "زمانی که SSO پیکربندی شده است، در دسترس نیست", + "enableCentralizedTitle": "حساب های خدمات متمرکز فعال شوند؟", + "enableCentralizedMessage": "مدیران فضای کاری می‌توانند اجراهای عامل کدنویسی را به حساب‌های سرویس تأییدشده زیر متصل کنند.", + "disableCentralizedTitle": "غیرفعال کردن حساب های خدمات متمرکز؟", + "disableCentralizedMessage": "اتصالات جدید مسدود خواهد شد. تأییدیه‌های موجود ذخیره شده اما غیرفعال هستند.", + "reasonLabel": "دلیل (ذخیره در گزارش حسابرسی)", + "reasonPlaceholder": "چرا این تنظیمات را تغییر می دهید؟", + "policy": { + "password": "فقط رمز عبور", + "passwordDescription": "احراز هویت رمز عبور استاندارد", + "passwordOrSso": "رمز عبور یا SSO", + "passwordOrSsoDescription": "کاربران می توانند با رمز عبور یا از طریق ارائه دهنده پیکربندی شده SSO وارد سیستم شوند.", + "passwordPasskey": "رمز عبور + کلید عبور به عنوان عامل دوم", + "passwordPasskeyDescription": "نیاز به رمز عبور و سپس یک کلید عبور ثبت‌شده.", + "passkeyOnly": "فقط Passkey", + "passkeyOnlyDescription": "نیاز به یک کلید عبور ثبت‌شده؛ رمز عبور را نمی‌توان برای ورود عادی استفاده کرد.", + "ssoRequired": "فقط SSO", + "ssoRequiredDescription": "از کاربران بخواهید از طریق ارائه‌دهنده SSO پیکربندی‌شده وارد سیستم شوند." + }, + "allowlist": { + "title": "حساب های خدمات متمرکز تایید شده", + "disabledHint": "تأییدیه‌ها ذخیره می‌شوند اما تا زمانی که تنظیم بالا فعال نشود غیرفعال هستند. می توانید آنها را از قبل آماده کنید.", + "empty": "هنوز هیچ حسابی تایید نشده است. یکی از زیر را اضافه کنید تا در دسترس مدیران فضای کاری قرار گیرد.", + "user": "حساب خدمات", + "workspace": "فضای کار", + "scope": "در دسترس بودن", + "reason": "دلیل", + "reasonLogged": "دلیل (ذخیره در گزارش حسابرسی)", + "reasonExample": "به عنوان مثال، اجرای آزمایشی برای acme-agent", + "pickUser": "یک حساب خدماتی را انتخاب کنید", + "anyWorkspace": "هر فضای کاری", + "userNumber": "کاربر #{id}", + "workspaceNumber": "فضای کاری #{id}", + "add": "تایید حساب", + "remove": "لغو تایید", + "removeFor": "لغو تأییدیه برای {name}", + "removeTitle": "این تاییدیه لغو شود؟", + "removeMessage": "این تأییدیه {name} را لغو می‌کند. مدیران فضای کاری دیگر نمی توانند از این حساب در محدوده انتخاب شده استفاده کنند.", + "removeReason": "چرا این تاییدیه را لغو می کنید؟", + "loadFailed": "بارگیری حساب های خدمات تایید شده انجام نشد", + "addFailed": "تأیید حساب سرویس انجام نشد", + "removeFailed": "لغو تأیید ناموفق بود" + } + }, + "diagnostics": { + "title": "تشخیص", + "subtitle": "سیگنال های عملیاتی از سیستم در حال اجرا. آستانه های هشدار را می توان بدون تغییر محدودیت‌های ایمنی سخت‌گیرانه تنظیم کرد.", + "groups": { + "overview": "نمای کلی", + "automation": "اتوماسیون", + "data": "داده ها", + "infrastructure": "زیرساخت" + }, + "tabs": { + "clock": "ساعت سرور", + "actions": "اجراهای اقدام", + "webhooks": "تحویل Webhook", + "schedulers": "مشاغل پس زمینه", + "recurrence": "عود", + "domainEvents": "رویدادهای دامنه", + "fracIndex": "شاخص فراک", + "runnerPools": "استخرهای رانر", + "databasePools": "استخرهای پایگاه داده", + "cacheMemory": "حافظه کش", + "scmConnections": "اتصالات SCM" + }, + "clock": { + "title": "ساعت سرور", + "subtitle": "سرصفحه Date در پاسخ‌های API را با ساعت مرورگر مقایسه می‌کند. میانه چرخشی آخرین پنج نمونه، مُهرهای زمانی نمایش‌داده‌شده را تصحیح می‌کند و اگر آفست از آستانه فراتر رود هشدار می‌دهد.", + "currentOffset": "افست فعلی", + "driftStatus": "وضعیت دریفت", + "samplesCollected": "نمونه های جمع آوری شده", + "driftThreshold": "آستانه رانش", + "recentSamples": "نمونه های اخیر", + "autoRefresh": "جدیدترین ابتدا · هر ۲ ثانیه به‌روزرسانی می‌شود", + "when": "چه زمانی", + "clientTime": "زمان مشتری (UTC)", + "serverTime": "زمان سرور (UTC)", + "offset": "افست", + "noSamples": "هنوز نمونه ای وجود ندارد. زمانی که درخواست‌های API تکمیل شد، نمونه‌ها به‌طور خودکار ثبت می‌شوند.", + "noSamplesShort": "هنوز نمونه ای وجود ندارد", + "overThreshold": "بیش از آستانه", + "withinThreshold": "در آستانه", + "inSync": "همگام", + "ahead": "{value} جلوتر است", + "behind": "{value} پشت سر", + "minutesSeconds": "{minutes} دقیقه {seconds} ثانیه", + "seconds": "{seconds}ثانیه", + "minutesShort": "{count} دقیقه", + "secondsShort": "{count}s", + "zeroSeconds": "0s", + "signedSeconds": "{value}s", + "justNow": "همین الان", + "secondsAgo": "{count} ثانیه پیش", + "minutesSecondsAgo": "{minutes} دقیقه {seconds} ثانیه پیش" + } + }, + "integrations": { + "directions": { + "outbound": "خروجی", + "inbound": "ورودی", + "outboundDescription": "برنامه هایی که Windshift به آنها متصل می شود. اعتبارنامه‌های OAuth را اضافه کنید که Windshift برای خواندن داده‌های سرویس‌های خارجی مانند Notion یا Confluence استفاده می‌کند.", + "inboundDescription": "برنامه‌هایی که از طرف کاربر به Windshift متصل می‌شوند. یک بار یک برنامه شخص ثالث را ثبت کنید. سپس کاربران آن را با OAuth 2.0 و PKCE مجاز می‌کنند." + }, + "providers": { + "loadFailed": "ارائه دهندگان یکپارچه بارگیری نشد", + "updated": "ارائه دهنده به روز شد", + "created": "ارائه دهنده ایجاد شد", + "saveFailed": "ارائه دهنده ذخیره نشد", + "deleteTitle": "«{name}» حذف شود؟", + "deleteMessage": "با این کار ارائه‌دهنده یکپارچه‌سازی حذف می‌شود و ارتباط همه کاربران قطع می‌شود.", + "deleted": "ارائه دهنده حذف شد", + "deleteFailed": "ارائه دهنده حذف نشد", + "oauthConfigured": "OAuth پیکربندی شد", + "namePlaceholder": "ادغام Notion من", + "slug": "اسلاگ" + }, + "oauthClients": { + "title": "مشتریان OAuth", + "subtitle": "برنامه‌های شخص ثالثی را ثبت کنید که می‌توانند به کاربران Windshift با توکن‌های OAuth 2.0 و PKCE اجازه دهند و از طرف آن کاربر از API استفاده کنند.", + "template": "الگو", + "oauthCallback": "کالبک OAuth", + "registerClient": "ثبت نام مشتری", + "empty": "هیچ مشتری OAuth ثبت نشده است", + "emptyDescription": "برای افزودن یک برنامه شخص ثالث، روی ثبت مشتری کلیک کنید.", + "loadFailed": "مشتری OAuth بارگیری نشد", + "updated": "مشتری OAuth به‌روزرسانی شد", + "publicCreated": "مشتری عمومی OAuth ایجاد شد", + "saveFailed": "مشتری OAuth ذخیره نشد", + "rotateTitle": "راز برای \"{name}\" چرخانده شود؟", + "rotateMessage": "راز قبلی بلافاصله کار نمی کند. توکن های موجود تا زمانی که منقضی شوند به کار خود ادامه می دهند. مبادلات توکن های آینده با راز قدیمی شکست خواهد خورد.", + "rotateFailed": "چرخش مخفی انجام نشد", + "deleteTitle": "«{name}» حذف شود؟", + "deleteMessage": "تمام توکن‌های دسترسی و به‌روزرسانی صادر شده برای این مشتری فوراً لغو می‌شوند. کاربران متصل باید دوباره وصل شوند.", + "deleted": "مشتری OAuth حذف شد", + "deleteFailed": "مشتری OAuth حذف نشد", + "scopeHelp": "توکن‌های دسترسی صادر شده، توکن‌های Windshift API کاربر هستند. آنها مجوزهای کاربر درخواست کننده را به ارث می برند، محدود به محدوده های انتخاب شده در اینجا.", + "scopeCount": "محدوده: {count}", + "redirectCount": "URIهای تغییر مسیر: {count}", + "clientId": "شناسه مشتری", + "clientSecret": "راز مشتری", + "secretSet": "مجموعه مخفی", + "secretMissing": "راز گم شده", + "rotateSecret": "راز مشتری را بچرخانید", + "deleteClient": "مشتری را حذف کنید", + "editTitle": "ویرایش مشتری OAuth", + "registerTitle": "ثبت مشتری OAuth", + "displayName": "نام نمایشی", + "displayNamePlaceholder": "به عنوان مثال Docmost", + "slug": "اسلاگ", + "clientType": "نوع مشتری", + "confidential": "محرمانه (سرور به سرور، دارای راز)", + "public": "عمومی (فقط PKCE، بدون راز)", + "clientTypeHelp": "کلاینت‌های محرمانه یک client_secret را در سرور ذخیره می‌کنند. کلاینت‌های عمومی باید برای هر تبادل توکن از PKCE استفاده کنند.", + "redirectUris": "URIهای تغییر مسیر", + "redirectHelp": "در هر خط یک URI وارد کنید. redirect_uri در درخواست مجوز باید دقیقاً با یکی از آنها مطابقت داشته باشد.", + "allowedScopes": "محدوده های مجاز", + "register": "ثبت نام کنید", + "copySecretNow": "اکنون این راز را کپی کنید", + "secretWarning": "راز مشتری دقیقا یک بار نشان داده می شود. Windshift فقط هش bcrypt خود را ذخیره می کند، بنابراین قبل از بستن این گفتگو آن را کپی کنید. راز را در صورت گم شدن بچرخانید." + } + } +}; diff --git a/frontend/src/lib/locales/fa/agents.js b/frontend/src/lib/locales/fa/agents.js new file mode 100644 index 000000000..807699ddd --- /dev/null +++ b/frontend/src/lib/locales/fa/agents.js @@ -0,0 +1,58 @@ +export default { + "workspaceAgents": { + "availability": { + "ready": "آماده است", + "offline": "آفلاین · صف ها کار می کنند", + "needsSetup": "نیاز به راه اندازی دارد", + "draft": "پیش نویس", + "paused": "مکث کرد", + "invalid": "نامعتبر است", + "archived": "بایگانی شد", + "unavailable": "در دسترس نیست" + }, + "types": { + "standard": "استاندارد", + "coding": "کد نویسی", + "legacy": "میراث" + }, + "runtimes": { + "windshift": "زمان اجرا Windshift داخلی", + "authorizedRunner": "اجرا کننده مجاز کد نویسی", + "legacyLocal": "زمان اجرا محلی قدیمی" + }, + "identities": { + "workspaceManaged": "فضای کاری مدیریت شد", + "centralizedService": "هویت خدمات مرکزی", + "userOwned": "هویت متعلق به کاربر" + }, + "runStatuses": { + "queued": "به صف شد", + "running": "در حال اجرا", + "succeeded": "تکمیل شد", + "completed": "تکمیل شد", + "failed": "شکست خورد", + "cancelled": "لغو شد" + }, + "catalog": { + "title": "عوامل", + "subtitle": "متخصصان موجود در این فضای کاری", + "createAgent": "عامل ایجاد کنید", + "searchPlaceholder": "عوامل جستجو", + "loading": "در حال بارگیری عوامل فضای کاری…", + "loadErrorTitle": "عوامل بارگیری نشدند", + "loadErrorMessage": "عوامل بارگیری نشدند.", + "emptyTitle": "هنوز هیچ عاملی وجود ندارد", + "emptyAdminDescription": "یک متخصص استاندارد یا کدنویسی برای این فضای کاری ایجاد کنید.", + "emptyMemberDescription": "یک مدیر فضای کاری می تواند متخصصانی را در اینجا اضافه کند.", + "noMatchesTitle": "هیچ عامل تطبیقی وجود ندارد", + "noMatchesDescription": "نام، هندل، هدف یا نوع نمایه دیگری را امتحان کنید.", + "defaultPurpose": "یک متخصص فضای کاری که توسط سرپرستان شما پیکربندی شده است.", + "ownedBy": "متعلق به {name}", + "modelUnavailable": "مدل در دسترس نیست", + "standardInteraction": "تکلیف، ذکرها و چت فضای کاری", + "codingInteraction": "تکلیف مستقیم و ذکر", + "lastRun": "آخرین اجرا: {status}", + "viewProfileVersion": "مشاهده نمایه · نسخه {version}" + } + } +}; diff --git a/frontend/src/lib/locales/fa/analytics.js b/frontend/src/lib/locales/fa/analytics.js new file mode 100644 index 000000000..6b2b0aad2 --- /dev/null +++ b/frontend/src/lib/locales/fa/analytics.js @@ -0,0 +1,119 @@ +export default { + "analytics": { + "title": "تجزیه و تحلیل", + "subtitle": "ارائه سلامت و جریان، بدون نیاز به تکرار", + "loading": "در حال بارگیری تجزیه و تحلیل...", + "noData": "هیچ داده ای در دسترس نیست", + "errorTitle": "تجزیه و تحلیل بارگیری نشد", + "unsupportedVersion": "سرور یک قالب تجزیه و تحلیل پشتیبانی نشده را برگرداند. پس از اتمام استقرار، بازخوانی کنید.", + "collectionLoadError": "مجموعه‌ها بارگیری نشدند. تجزیه و تحلیل همه موارد فضای کاری را نشان می‌دهد.", + "retry": "دوباره امتحان کنید", + "dateRange": "محدوده تاریخ", + "collection": "مجموعه", + "allItems": "همه موارد فضای کار", + "from": "از", + "to": "به", + "daysValue": "{value} روز", + "items_one": "{count} مورد", + "items_other": "{count} مورد", + "range": { + "last30Days": "30 روز گذشته", + "last12Weeks": "12 هفته گذشته", + "last6Months": "6 ماه گذشته", + "lastYear": "سال گذشته", + "custom": "سفارشی" + }, + "validation": { + "invalid": "تاریخ شروع و پایان معتبر را وارد کنید.", + "reversed": "تاریخ شروع باید در تاریخ پایان یا قبل از آن باشد.", + "too_long": "محدوده تاریخ 366 روز یا کمتر را انتخاب کنید." + }, + "scope": { + "summary": "{items} مورد فعلی · {from}–{to}", + "currentWorkspace": "گروه فضای کاری فعلی", + "currentWorkspaceNote": "محدوده تاریخ برای نمودارهای جریان و تحویل اعمال می شود. سلامتی و قدمت تصاویر لحظه ای فعلی هستند. نمودارهای تاریخی از مواردی استفاده می کنند که امروزه در این فضای کاری وجود دارد. موارد منتقل شده یا حذف شده شامل نمی شوند.", + "currentCollection": "گروه فعلی مجموعه", + "currentCollectionNote": "محدوده تاریخ برای نمودارهای جریان و تحویل اعمال می شود. سلامتی و قدمت تصاویر لحظه ای فعلی هستند. نمودارهای تاریخی از مواردی استفاده می کنند که با این مجموعه امروزی مطابقت دارند. تغییر مجموعه می تواند گروه را تغییر دهد." + }, + "health": { + "title": "نیاز به توجه دارد", + "description": "کار ناتمام فعلی با سیگنال هایی که شایسته نگاه دقیق تر است.", + "unfinished": "ناتمام", + "overdue": "عقب افتاده", + "stale": "کهنه", + "staleHint": "بدون فعالیت برای {days}+ روز", + "unassigned": "اختصاص داده نشده است", + "withoutPriority": "بدون اولویت", + "withoutEstimate": "بدون برآورد", + "attentionItems": "موارد برای بررسی", + "item": "مورد", + "status": "وضعیت", + "age": "سن", + "signals": "سیگنال ها", + "flags": { + "overdue": "عقب افتاده", + "stale": "کهنه", + "unassigned": "اختصاص داده نشده است", + "without_priority": "بدون اولویت", + "without_estimate": "بدون برآورد" + }, + "allClear": "هیچ مورد ناتمامی در حال حاضر با سیگنال توجه مطابقت ندارد." + }, + "throughput": { + "title": "ایجاد شده در مقابل تکمیل شد", + "description": "ورودی هفتگی و اولین تکمیل. باز کردن مجدد یک مورد، تکمیل اصلی آن را بازنویسی نمی‌کند.", + "created": "ایجاد شد", + "completed": "تکمیل شد", + "net": "تغییر خالص", + "average": "میانگین تکمیل شده / هفته", + "period": "دوره", + "definition": "تکمیل به معنای اولین انتقال به وضعیت تکمیل شده است." + }, + "aging": { + "title": "قدمت کار در حال انجام", + "description": "موارد ناتمام در حال حاضر چه مدت باز است؟", + "total": "موارد فعال", + "median": "میانه سن", + "p85": "صدک 85", + "ageBand": "گروه سنی", + "itemCount": "موارد", + "byStatus": "سن بر اساس وضعیت", + "oldest": "قدیمی ترین اقلام ناتمام", + "status": "وضعیت", + "noActive": "هیچ کار ناتمامی در این زمینه وجود ندارد.", + "buckets": { + "0_7": "0-7 روز", + "8_14": "8-14 روز", + "15_30": "15-30 روز", + "31_60": "31-60 روز", + "61_plus": "61+ روز" + } + }, + "deliveryTime": { + "title": "زمان تحویل", + "description": "ایجاد تا اولین تکمیل، گروه بندی شده بر اساس هفته تکمیل.", + "analyzed": "موارد تکمیل شده", + "average": "میانگین", + "median": "میانه", + "p85": "صدک 85", + "period": "دوره تکمیل", + "completed": "تکمیل شد", + "slowest": "طولانی ترین زمان تحویل", + "completedDate": "ابتدا تکمیل شد", + "duration": "زمان تحویل", + "missingHistory": "{count} موارد تکمیل شده در حال حاضر مستثنی شدند زیرا سابقه تکمیل آنها وجود ندارد.", + "missingHistory_one": "1 مورد در حال حاضر تکمیل شده حذف شد زیرا سابقه تکمیل آن وجود ندارد.", + "missingHistory_other": "{count} موارد تکمیل شده در حال حاضر مستثنی شدند زیرا سابقه تکمیل آنها وجود ندارد.", + "definition": "از ایجاد مورد تا اولین انتقال آن به وضعیت تکمیل شده اندازه گیری می شود. بازگشایی‌های بعدی مقدار را تغییر نمی‌دهد." + }, + "dataTable": { + "show": "مشاهده جدول داده ها" + }, + "insufficientData": { + "no_items": "این محدوده هنوز موردی ندارد.", + "no_active_items": "هیچ کار ناتمامی در این زمینه وجود ندارد.", + "no_completed_items": "هیچ اولین تکمیل در محدوده تاریخ انتخاب شده ثبت نشد.", + "few_completed_items": "فقط چند مورد در این محدوده تکمیل شد. صدک‌ها را تقریبی در نظر بگیرید." + } + } +}; diff --git a/frontend/src/lib/locales/fa/auth.js b/frontend/src/lib/locales/fa/auth.js new file mode 100644 index 000000000..c5a36abb9 --- /dev/null +++ b/frontend/src/lib/locales/fa/auth.js @@ -0,0 +1,219 @@ +export default { + "auth": { + "login": "وارد شوید", + "logout": "از سیستم خارج شوید", + "signIn": "وارد شوید", + "signOut": "از سیستم خارج شوید", + "signUp": "ثبت نام کنید", + "register": "ثبت نام کنید", + "forgotPassword": "رمز عبور را فراموش کرده اید؟", + "resetPassword": "بازنشانی رمز عبور", + "changePassword": "رمز عبور را تغییر دهید", + "currentPassword": "رمز عبور فعلی", + "newPassword": "رمز عبور جدید", + "confirmPassword": "رمز عبور را تایید کنید", + "passwordRequired": "رمز عبور لازم است", + "rememberMe": "مرا به خاطر بسپار", + "staySignedIn": "مرا به مدت 30 روز در Windshift وارد کنید", + "emailOrUsername": "ایمیل یا نام کاربری", + "welcomeBack": "خوش آمدید", + "loginTitle": "وارد حساب کاربری خود شوید", + "loginSubtitle": "برای ادامه، اعتبار خود را وارد کنید", + "loggingIn": "ورود به سیستم...", + "logoutConfirm": "آیا مطمئن هستید که می خواهید از سیستم خارج شوید؟", + "sessionExpired": "جلسه شما تمام شده است. لطفا دوباره وارد شوید.", + "accountLocked": "حساب شما قفل شده است. لطفا با پشتیبانی تماس بگیرید.", + "twoFactor": "احراز هویت دو مرحله ای", + "enterCode": "کد تایید را وارد کنید", + "resendCode": "ارسال مجدد کد", + "verificationSent": "کد تایید به ایمیل شما ارسال شد", + "sso": "ورود یکپارچه", + "continueWith": "ادامه با {provider}", + "orSignInWithPassword": "یا با رمز ورود وارد شوید", + "touchSecurityKey": "کلید امنیتی خود را لمس کنید...", + "signInWithSecurityKey": "با کلید امنیتی وارد شوید", + "inviteUser": "دعوت از کاربر", + "inviteSent": "دعوت نامه ارسال شد", + "invitationLink": "لینک دعوت" + }, + "users": { + "title": "کاربران", + "subtitle": "مدیریت حساب های کاربری و مجوزها", + "user": "کاربر", + "users_one": "{count} کاربر", + "users_other": "{count} کاربر", + "addUser": "افزودن کاربر", + "createUser": "کاربر ایجاد کنید", + "editUser": "ویرایش کاربر", + "deleteUser": "حذف کاربر", + "inviteUser": "دعوت از کاربر", + "profile": "نمایه", + "myProfile": "نمایه من", + "account": "حساب", + "firstName": "نام", + "lastName": "نام خانوادگی", + "fullName": "نام کامل", + "displayName": "نام نمایشی", + "email": "ایمیل", + "phone": "تلفن", + "avatar": "آواتار", + "role": "نقش", + "roles": "نقش ها", + "permissions": "مجوزها", + "groups": "گروه ها", + "lastLogin": "آخرین ورود", + "lastActive": "آخرین فعال", + "createdAt": "عضو از", + "status": "وضعیت", + "active": "فعال", + "inactive": "غیر فعال", + "pending": "در انتظار", + "suspended": "تعلیق شد", + "searchUsers": "جستجوی کاربران...", + "noUsers": "هیچ کاربری پیدا نشد", + "userCreated": "کاربر با موفقیت ایجاد شد", + "userUpdated": "کاربر با موفقیت به روز شد", + "userDeleted": "کاربر با موفقیت حذف شد", + "inviteSent": "دعوت با موفقیت ارسال شد", + "cannotDeleteSelf": "شما نمی توانید حساب خود را حذف کنید", + "activateUser": "کاربر را فعال کنید", + "deactivateUser": "کاربر را غیرفعال کنید", + "activeLabel": "فعال", + "activeHint": "کاربران غیرفعال نمی توانند وارد سیستم شوند. می توانید حساب را بعداً از منوی ردیف فعال کنید.", + "confirmDelete": "آیا مطمئن هستید که می خواهید {name} را حذف کنید؟ این عمل قابل لغو نیست.", + "confirmActivate": "آیا مطمئن هستید که می خواهید {name} را فعال کنید؟ آنها می توانند به سیستم دسترسی پیدا کنند.", + "confirmDeactivate": "آیا مطمئن هستید که می خواهید {name} را غیرفعال کنید؟ آنها دیگر نمی توانند به سیستم دسترسی داشته باشند.", + "failedToLoad": "بارگیری کاربران انجام نشد", + "failedToSave": "کاربر ذخیره نشد", + "failedToDelete": "کاربر حذف نشد", + "failedToActivate": "کاربر فعال نشد", + "failedToDeactivate": "کاربر غیرفعال نشد", + "failedToResetPassword": "بازنشانی رمز عبور انجام نشد", + "profileSubtitle": "اطلاعات نمایه، آواتار و تنظیمات منطقه ای خود را مدیریت کنید", + "profileInformation": "اطلاعات نمایه", + "passwordResetRequired": "بازنشانی رمز عبور لازم است", + "profilePicture": "عکس پروفایل", + "uploadAndManageAvatar": "تصویر آواتار خود را آپلود و مدیریت کنید", + "currentProfilePicture": "تصویر نمایه فعلی", + "customAvatarActive": "آواتار سفارشی شما فعال است", + "usingDefaultAvatar": "استفاده از آواتار پیش فرض", + "avatarRecommendation": "توصیه می شود: تصویر مربع، حداقل 200x200 پیکسل", + "uploadNewAvatar": "آپلود آواتار جدید", + "uploadAvatar": "آواتار را آپلود کنید", + "changeAvatar": "آواتار را تغییر دهید", + "uploadingAvatar": "در حال آپلود آواتار...", + "avatarFileHint": "یک فایل تصویری (JPEG، PNG، GIF، WebP) را انتخاب کنید. حداکثر 50 مگابایت", + "removeProfilePicture": "آیا مطمئن هستید که می خواهید عکس نمایه خود را حذف کنید؟", + "regionalSettings": "تنظیمات منطقه ای", + "regionalSettingsDesc": "تنظیمات برگزیده منطقه زمانی و زبان خود را پیکربندی کنید", + "timezone": "منطقه زمانی", + "timezoneHint": "برای نمایش تاریخ و زمان در منطقه زمانی محلی شما استفاده می شود", + "language": "زبان", + "languageHint": "زبان دلخواه شما برای رابط برنامه", + "saveSettings": "تنظیمات را ذخیره کنید", + "settingsSaved": "تنظیمات با موفقیت ذخیره شد", + "notificationsTab": "اطلاعیه ها", + "dueDateReminders": "یادآوری تاریخ سررسید", + "dueDateRemindersDesc": "زمانی که اقلام باز شما به موعد مقرر نزدیک می شوند، اعلانی دریافت کنید. این موارد در فضای کاری شخصی شما را نیز پوشش می دهد.", + "dueDateRemindersEnable": "یادآوری تاریخ سررسید را فعال کنید", + "dueDateRemindersEnableHint": "یادآوری‌ها فقط زمانی ارسال می‌شوند که آنها را در اینجا روشن کنید. آنها هرگز خودکار نیستند.", + "dueDateReminderDays": "روزها قبل از موعد مقرر", + "dueDateReminderDaysHint": "بین 1 تا 30 روز انتخاب کنید.", + "connectedAccounts": "حساب های متصل", + "connectedAccountsTab": "حساب ها", + "connectedAccountsDesc": "حساب‌های کنترل منبع خود را برای ایجاد شاخه‌ها و درخواست‌ها وصل کنید", + "agents": { + "title": "عوامل", + "description": "عامل‌ها کاربران غیر انسانی هستند که مجوزهای شما را به ارث می‌برند و فقط با توکن‌های API احراز هویت می‌کنند. آن‌ها نمی‌توانند به‌صورت تعاملی وارد سیستم شوند.", + "createTitle": "عامل ایجاد کنید", + "create": "عامل ایجاد کنید", + "creating": "در حال ایجاد…", + "creationUnavailable": "ایجاد عامل برای این حساب در دسترس نیست. ممکن است لازم باشد سرپرست شما عوامل مدیریت شده توسط کاربر را فعال کند، یا ممکن است به محدودیت عامل شما رسیده باشد.", + "requiredFields": "نام کاربری، نام و نام خانوادگی الزامی است.", + "createFailed": "عامل ایجاد نشد.", + "yourAgents": "عوامل شما", + "empty": "شما هنوز هیچ عاملی ندارید.", + "actionsFor": "اقدامات برای {name}", + "deleteTitle": "عامل را حذف کنید", + "deleteMessage": "این عامل حذف شود؟ همه توکن‌های API آن کار نمی‌کنند.", + "rename": "تغییر نام عامل", + "nameRequired": "نام عامل الزامی است.", + "renameFailed": "تغییر نام عامل انجام نشد.", + "renameHint": "نام کاربری پایدار @{username} تغییر نخواهد کرد.", + "manageTokens": "توکن ها را مدیریت کنید", + "hideTokens": "توکن‌ها را پنهان کنید", + "tokenExpirationHint": "توکن تا این تاریخ در منطقه زمانی پیکربندی‌شده شما معتبر می‌ماند. برای بدون انقضا خالی بگذارید.", + "existingTokens": "توکن های موجود", + "tokenDates": "ایجاد شده {created} • منقضی می شود {expires}", + "neverExpires": "هرگز منقضی نمی شود", + "noTokens": "هنوز هیچ توکنی وجود ندارد.", + "tokenCreateFailed": "توکن ایجاد نشد.", + "confirmRevokeUnnamedToken": "این توکن لغو شود؟ هر چیزی که از آن استفاده کند بلافاصله کار نمی کند." + }, + "calendarIntegration": "ادغام تقویم", + "calendarIntegrationDesc": "مشترک موارد برنامه ریزی شده خود در برنامه های تقویم خارجی شوید", + "loadCalendarFeedSettings": "بارگذاری تنظیمات فید تقویم", + "enableCalendarSubscription": "اشتراک تقویم را فعال کنید", + "calendarSubscriptionDesc": "یک URL اشتراک برای همگام‌سازی موارد کاری برنامه‌ریزی‌شده خود با برنامه‌های تقویم خارجی ایجاد کنید.", + "generateCalendarFeedUrl": "ایجاد URL فید تقویم", + "yourCalendarFeedUrl": "URL فید تقویم شما", + "showFullUrl": "نمایش کامل URL", + "calendarFeedWarning": "این URL را به اشتراک نگذارید زیرا دسترسی به موارد برنامه ریزی شده شما را فراهم می کند.", + "lastSynced": "آخرین همگام سازی", + "howToSubscribe": "نحوه اشتراک", + "copyFeedUrlStep": "URL فید بالا را کپی کنید", + "regenerateUrl": "بازسازی URL", + "revokeFeed": "فید را لغو کنید", + "regenerateUrlNote": "بازسازی URL، URL فعلی شما را باطل می‌کند. هر تقویمی که از URL قدیمی استفاده می‌کند باید به‌روزرسانی شود.", + "calendarFeedsDisabled": "فیدهای تقویم توسط سرپرست شما غیرفعال شده است.", + "googleCalendar": "تقویم Google", + "googleCalendarInstructions": "تنظیمات > افزودن تقویم > از URL > چسباندن URL", + "outlook": "Outlook", + "outlookInstructions": "افزودن تقویم > اشتراک از وب > چسباندن URL", + "appleCalendar": "تقویم اپل", + "appleCalendarInstructions": "File > اشتراک تقویم جدید > جایگذاری URL" + }, + "security": { + "title": "امنیت", + "subtitle": "تنظیمات امنیتی خود را مدیریت کنید", + "credentials": "مدارک امنیتی", + "credentialsSubtitle": "روش های احراز هویت خود را مدیریت کنید", + "apiTokens": "توکن‌های API", + "apiTokensSubtitle": "برای دسترسی برنامه ریزی شده به حساب خود، توکن هایی ایجاد کنید", + "createToken": "توکن ایجاد کنید", + "revokeToken": "لغو توکن", + "tokenName": "نام توکن", + "tokenCreated": "توکن با موفقیت ایجاد شد", + "tokenRevoked": "توکن با موفقیت لغو شد", + "copyToken": "کپی توکن", + "tokenWarning": "حتماً همین الان توکن خود را کپی کنید. دیگر نمی توانید آن را ببینید.", + "enterSecurityKeyName": "لطفاً یک نام برای این کلید امنیتی وارد کنید", + "webAuthnNotSupported": "WebAuthn در این مرورگر پشتیبانی نمی شود", + "invalidRegistrationChallenge": "چالش ثبت نام از سرور نامعتبر است", + "noActiveFidoCredentials": "هیچ اعتبارنامه فعال FIDO یافت نشد. لطفا ابتدا یک کلید امنیتی ثبت کنید.", + "authenticationFailed": "احراز هویت ناموفق بود", + "authenticationCancelled": "احراز هویت لغو شد یا ناموفق بود. لطفا دوباره امتحان کنید.", + "failedToTestFidoLogin": "تست ورود به سیستم FIDO انجام نشد", + "enterTokenName": "لطفاً یک نام برای این توکن وارد کنید", + "confirmRevokeToken": "آیا مطمئن هستید که می خواهید \"{name}\" را لغو کنید؟ این عمل قابل لغو نیست.", + "securityKeyFido": "کلید امنیتی (FIDO2)", + "authenticatorAppTotp": "برنامه Authenticator (TOTP)" + }, + "portalLogin": { + "welcomeBack": "خوش برگشتید", + "signInToCustomize": "برای سفارشی کردن این پورتال وارد سیستم شوید", + "emailOrUsername": "ایمیل یا نام کاربری", + "enterEmailOrUsername": "ایمیل یا نام کاربری را وارد کنید", + "password": "رمز عبور", + "enterPassword": "رمز عبور را وارد کنید", + "keepMeSignedIn": "مرا به مدت 30 روز در سیستم نگه دارید", + "or": "یا", + "touchSecurityKey": "کلید امنیتی خود را لمس کنید...", + "signInWithSecurityKey": "با کلید امنیتی وارد شوید", + "signingIn": "ورود به سیستم...", + "signIn": "وارد شوید", + "emailRequired": "ایمیل یا نام کاربری مورد نیاز است", + "passwordRequired": "رمز عبور لازم است", + "webAuthnNotSupported": "WebAuthn توسط این مرورگر پشتیبانی نمی شود" + } +}; diff --git a/frontend/src/lib/locales/fa/channels.js b/frontend/src/lib/locales/fa/channels.js new file mode 100644 index 000000000..a75c03b89 --- /dev/null +++ b/frontend/src/lib/locales/fa/channels.js @@ -0,0 +1,815 @@ +export default { + "notifications": { + "title": "اطلاعیه ها", + "subtitle": "تنظیمات اعلان را مدیریت کنید", + "notification": "اطلاع رسانی", + "notifications_one": "اعلان {count}", + "notifications_other": "{count} اعلان", + "markAsRead": "علامت گذاری به عنوان خوانده شده", + "markAllAsRead": "علامت گذاری همه به عنوان خوانده شده", + "markAllRead": "علامت گذاری به عنوان خوانده شده", + "clearAll": "پاک کردن همه", + "noNotifications": "بدون اطلاعیه", + "allCaughtUp": "همه را خوانده‌اید!", + "notificationSettings": "تنظیمات اعلان", + "emailNotifications": "اعلان های ایمیل", + "pushNotifications": "اعلان‌های پوش", + "channels": "کانال ها", + "searchNotifications": "جستجوی اعلان‌ها...", + "closeToast": "بستن اعلان", + "closeNotifications": "بستن اعلان ها", + "viewAll": "مشاهده تمام اعلان ها", + "dismiss": "رد کردن", + "verifyEmail": "لطفا آدرس ایمیل خود را تأیید کنید", + "verifyEmailDescription": "ما یک پیوند تأیید به ایمیل شما ارسال کرده ایم. برای تکمیل تنظیمات حساب خود روی پیوند کلیک کنید.", + "verificationEmailSent": "ایمیل تایید ارسال شد!", + "sending": "ارسال...", + "resendEmail": "ارسال مجدد ایمیل", + "failedToSendVerification": "ایمیل تأیید ارسال نشد", + "error": "خطا", + "filters": { + "allTypes": "همه انواع", + "assignments": "تخصیص‌ها", + "comments": "نظرات", + "statusChanges": "تغییرات وضعیت", + "reminders": "یادآوری ها", + "milestones": "نقاط عطف", + "all": "همه", + "unreadOnly": "فقط خوانده نشده", + "readOnly": "فقط خوانده‌شده" + } + }, + "channels": { + "title": "کانال ها", + "subtitle": "ادغام ها را مدیریت کنید", + "channel": "کانال", + "channels_one": "کانال {count}", + "channels_other": "{count} کانال", + "createChannel": "ایجاد کانال", + "editChannel": "ویرایش کانال", + "deleteChannel": "حذف کانال", + "channelName": "نام کانال", + "channelType": "نوع کانال", + "noChannels": "کانالی پیدا نشد", + "channelCreated": "کانال با موفقیت ایجاد شد", + "channelUpdated": "کانال با موفقیت به روز شد", + "channelDeleted": "کانال با موفقیت حذف شد", + "cannotDeleteDefault": "نمی توان کانال اعلان پیش فرض را حذف کرد", + "searchChannels": "جستجوی کانال ها...", + "manager": { + "subtitle": "کانال هایی را که مسئول آنها هستید مدیریت کنید", + "purpose": "هدف", + "publishedAt": "منتشر شده در {path}", + "deliversTo": "درخواست‌ها را به {workspace} تحویل می‌دهد", + "outboundNotifications": "اعلان های خروجی را ارسال می کند", + "outboundEvents": "رویدادهای خروجی را ارائه می‌دهد", + "operational": "کانال عملیاتی", + "noChannels": "کانال مدیریت شده وجود ندارد", + "noChannelsDescription": "کانال های اختصاص داده شده به شما در اینجا ظاهر می شوند.", + "loadFailed": "کانال ها بارگیری نشد" + }, + "testWebhook": "آزمایش Webhook", + "webhookSent": "وب هوک آزمایشی با موفقیت ارسال شد!", + "webhookFailed": "آزمایش Webhook ناموفق بود", + "types": "انواع", + "allTypes": "همه انواع", + "portal": "پورتال", + "webhook": "Webhook", + "email": "ایمیل", + "smtp": "SMTP", + "form": "فرم", + "categories": "دسته بندی ها", + "category": "دسته بندی", + "allChannels": "همه کانال ها", + "allCategories": "همه دسته ها", + "manageCategories": "مدیریت دسته ها", + "status": { + "enabled": "فعال شد", + "disabled": "غیرفعال", + "active": "فعال", + "configured": "پیکربندی شده است", + "pending": "در انتظار", + "inactive": "غیر فعال" + } + }, + "channel": { + "configuration": "پیکربندی", + "managers": "مدیران", + "basicInformation": "اطلاعات پایه", + "name": "نام", + "channelName": "نام کانال", + "category": "دسته بندی", + "noCategory": "بدون دسته", + "description": "توضیحات", + "briefDescription": "توضیحات مختصر...", + "openPortal": "پورتال را باز کنید", + "saveChanges": "ذخیره تغییرات", + "channelSavedSuccess": "کانال با موفقیت ذخیره شد!", + "failedToSave": "ذخیره نشد", + "channelNameRequired": "نام کانال الزامی است", + "channelConfigCorrupted": "پیکربندی کانال خراب است و نمی توان آن را به طور ایمن ویرایش کرد. لطفا با یک مدیر تماس بگیرید.", + "portalConfiguration": "پیکربندی پورتال", + "portalSlug": "اسلاگ پورتال", + "portalSlugHelp": "شناسه مناسب URL", + "portalSlugRequired": "اسلاگ پورتال مورد نیاز است", + "portalSlugInvalid": "اسلاگ باید از ۱ تا ۴۰ حرف کوچک، عدد یا خط تیره باشد و نباید با خط تیره شروع یا تمام شود یا خط تیره متوالی داشته باشد.", + "portalAllowedDomainsInvalid": "یک یا چند دامنه مجاز معتبر نیستند (به عنوان مثال \"acme.com\").", + "portalUrl": "پورتال URL", + "targetWorkspaces": "فضاهای کاری مورد نظر", + "selectAtLeastOneWorkspace": "لطفاً حداقل یک فضای کاری هدف را انتخاب کنید", + "searchWorkspaces": "جستجوی فضاهای کاری...", + "portalTitle": "عنوان پورتال", + "enablePortal": "فعال کردن پورتال (اجازه به ارسال عمومی)", + "portalIsActive": "پورتال فعال است و ارسالی را می پذیرد", + "portalIsInactive": "پورتال در حال حاضر غیرفعال است", + "portalRegistration": "دسترسی مشتری", + "portalRegistrationMode": "حالت ثبت نام", + "portalRegistrationOpen": "باز کردن - هر کسی که ایمیل مجاز داشته باشد می تواند وارد شود", + "portalRegistrationManual": "دستی — فقط مشتریان تحت مدیریت سرپرست می‌توانند وارد شوند", + "portalRegistrationOpenHelp": "هر بازدیدکننده‌ای که ایمیلش با فهرست مجاز دامنه مطابقت دارد (یا هر بازدیدکننده‌ای، اگر لیست خالی باشد) می‌تواند خود ثبت‌نام کند.", + "portalRegistrationManualHelp": "فقط مشتریان پورتالی که به کانال اضافه کرده‌اید و به آنها اجازه دسترسی داده‌اید، می‌توانند پیوند جادویی درخواست کنند.", + "portalAllowedDomains": "دامنه های مجاز ایمیل", + "portalAllowedDomainsHelp": "لیست جدا شده با کاما برای اجازه دادن به هر دامنه، خالی بگذارید. برای ثبت نام باز و دستی اعمال می شود.", + "enableEmail": "کانال ایمیل را فعال کنید", + "emailIsActive": "کانال ایمیل فعال است و ایمیل ها را پردازش می کند", + "emailIsInactive": "کانال ایمیل در حال حاضر غیرفعال است", + "enableWebhook": "فعال کردن Webhook", + "webhookIsActive": "Webhook فعال است", + "webhookIsInactive": "Webhook در حال حاضر غیرفعال است", + "enableSmtp": "فعال کردن SMTP", + "smtpIsActive": "SMTP فعال است", + "smtpIsInactive": "SMTP در حال حاضر غیرفعال است", + "failedToLoad": "کانال بارگیری نشد", + "webhookConfiguration": "پیکربندی Webhook", + "webhookUrl": "نشانی Webhook", + "webhookUrlRequired": "URL Webhook مورد نیاز است", + "secretOptional": "راز (اختیاری)", + "secretPlaceholder": "راز را برای به‌روزرسانی وارد کنید، برای حفظ موجود، آن را خالی بگذارید", + "secretHelp": "برای امضای درخواست ها با HMAC-SHA256 استفاده می شود.", + "customHeaders": "هدرهای سفارشی", + "addHeader": "+ اضافه کردن هدر", + "headerName": "نام سربرگ", + "headerValue": "مقدار هدر", + "scope": "دامنه", + "allItems": "همه موارد (در سطح نمونه)", + "specificWorkspaces": "فضاهای کاری خاص", + "selectWorkspaces": "انتخاب فضاهای کاری...", + "specificCollections": "مجموعه های خاص", + "selectCollections": "انتخاب مجموعه ها...", + "automaticTriggers": "محرک های خودکار", + "enableAutoTriggers": "فعال کردن محرک های خودکار", + "autoTriggersHelp": "هنگامی که رویدادهای انتخابی رخ می دهند، وب هوک ها را به صورت خودکار ارسال کنید", + "testWebhook": "آزمایش Webhook", + "sendTestWebhook": "ارسال آزمایش Webhook", + "testWebhookSent": "وب هوک آزمایشی با موفقیت ارسال شد! پیکربندی ذخیره شده است.", + "testWebhookFailed": "آزمایش Webhook ناموفق بود", + "pleaseEnterUrl": "لطفاً یک URL webhook وارد کنید.", + "pleaseEnterValidUrl": "لطفاً یک URL معتبر وارد کنید.", + "sendingTestWebhook": "در حال ارسال وب هوک آزمایشی...", + "managedByPlugin": "این وب هوک توسط پلاگین {pluginName} مدیریت می شود.", + "emailConfiguration": "پیکربندی ایمیل", + "authenticationMethod": "روش احراز هویت", + "basicIMAP": "پایه (IMAP)", + "usernameAndPassword": "نام کاربری و رمز عبور", + "oauth": "OAuth", + "microsoftOrGoogle": "Microsoft 365 or Google", + "provider": "ارائه دهنده", + "microsoft365": "Microsoft 365", + "google": "Google", + "clientId": "شناسه مشتری", + "clientIdRequired": "شناسه مشتری OAuth مورد نیاز است", + "clientSecret": "راز مشتری", + "clientSecretRequired": "راز مشتری OAuth مورد نیاز است", + "leaveBlankToKeep": "برای حفظ موجود، خالی بگذارید", + "tenantId": "شناسه tenant", + "tenantIdHelp": "برای اجازه دادن به هر حساب Microsoft از «common» استفاده کنید، یا یک شناسه tenant خاص وارد کنید", + "connected": "متصل شد", + "reconnect": "دوباره وصل شوید", + "notConnected": "متصل نیست", + "saveAndConnect": "تنظیمات را ذخیره کنید، سپس صندوق پستی خود را وصل کنید", + "connectMailbox": "صندوق پستی را وصل کنید", + "oauthMailbox": "آدرس صندوق پستی", + "oauthMailboxRequired": "آدرس صندوق پستی را برای اتصال وارد کنید", + "oauthMailboxHelp": "صندوق پستی نظارت شده برای اتصال. IMAP با این آدرس وارد سیستم می‌شود.", + "redirectUri": "URI تغییر مسیر (برای Azure AD / کنسول Google)", + "imapConnection": "اتصال IMAP", + "imapHost": "میزبان IMAP", + "imapHostRequired": "میزبان IMAP مورد نیاز است", + "port": "پورت", + "encryption": "رمزگذاری", + "username": "نام کاربری", + "usernameRequired": "نام کاربری IMAP لازم است", + "password": "رمز عبور", + "leaveBlankPassword": "برای حفظ رمز عبور موجود، آن را خالی بگذارید", + "itemCreation": "ایجاد مورد", + "targetWorkspace": "فضای کاری را هدف قرار دهید", + "targetWorkspaceRequired": "فضای کاری هدف مورد نیاز است", + "selectWorkspace": "انتخاب فضای کاری...", + "itemType": "نوع مورد", + "itemTypeRequired": "نوع مورد مورد نیاز است", + "selectItemType": "انتخاب نوع مورد...", + "selectWorkspaceFirst": "ابتدا یک فضای کاری را انتخاب کنید", + "workspaceFieldResolution": "تعیین فضای کار فیلد", + "processingOptions": "گزینه های پردازش", + "mailbox": "صندوق پستی", + "mailboxHelp": "پوشه ای برای نظرسنجی برای ایمیل های جدید", + "rateLimitPerHour": "محدودیت نرخ بلیط برای هر فرستنده (در ساعت)", + "rateLimitHelp": "حداکثر بلیط های جدیدی که یک فرستنده در هر ساعت ارسال می تواند ایجاد کند. خالی = پیش فرض (100)، 0 = نامحدود. پاسخ به بلیط های موجود هرگز محدود نمی شود.", + "rateLimitInvalid": "محدودیت نرخ باید 0 (نامحدود) یا یک عدد مثبت باشد", + "connectedPortalSection": "پورتال مشتری", + "connectedPortal": "پورتال متصل", + "connectedPortalNotConnected": "متصل نیست", + "connectedPortalUnknown": "پورتال #{id} (در حال حاضر توسط شما قابل مدیریت نیست)", + "connectedPortalHelp": "مشتریانی که به این آدرس ایمیل می‌زنند، می‌توانند با رعایت خط‌مشی دسترسی آن پورتال، بلیت‌های خود را در پورتال انتخابی ببینند و ادامه دهند. پاسخ‌های پورتال در همان بلیت می‌مانند.", + "portalConnectedMailboxes": "صندوق های پستی ورودی متصل", + "portalConnectedMailboxesEmpty": "هیچ صندوق پستی ورودی به این پورتال متصل نیست.", + "portalConnectedMailboxesHelp": "کانال های ایمیل مرتبط با این پورتال. مشتریانی که به آن آدرس ها ایمیل می زنند، بلیط های خود را اینجا می بینند. پیوند را در هر کانال ایمیل پیکربندی کنید.", + "portalMailboxEnabled": "فعال شد", + "portalMailboxDisabled": "غیرفعال", + "autoAppendOpenTickets": "باز کردن بلیط ها را از طریق ایمیل ادامه دهید", + "autoAppendOpenTicketsHelp": "هنگامی که شخصی با یک بلیط باز در این فضای کاری ایمیل تازه (بدون پاسخ) ارسال می کند، به جای ایجاد یک نسخه تکراری، پیام خود را به آن بلیط اضافه کنید. فقط زمانی اعمال می شود که بلیط را ایجاد کرده باشند یا قبلاً پاسخ داده باشند.", + "markAsRead": "پس از پردازش به عنوان خوانده شده علامت بزنید", + "markAsReadHelp": "ایمیل‌ها را پس از تبدیل شدن به مورد‌ها به‌عنوان خوانده‌شده علامت‌گذاری کنید", + "deleteAfterProcess": "پس از پردازش حذف کنید", + "deleteAfterProcessHelp": "پس از ایجاد موارد، ایمیل ها را از صندوق پست حذف کنید (با احتیاط استفاده کنید)", + "processingDisposition": "پس از پردازش", + "dispositionLeave": "در صندوق پست بگذارید", + "dispositionMarkRead": "علامت گذاری به عنوان خوانده شده", + "dispositionDelete": "پس از پردازش حذف کنید", + "dispositionHelp": "پس از تبدیل ایمیل به یک مورد، با آن چه باید کرد؟", + "dispositionDeleteHelp": "پس از ایجاد مورد، ایمیل را از صندوق پست حذف کنید (با احتیاط استفاده کنید).", + "dispositionInherit": "از صندوق پست پیش فرض استفاده کنید", + "intakesTitle": "ورودی ها", + "intakesHelp": "هر ورودی یک پوشه را در این صندوق پستی می خواند و موارد را در یک فضای کاری و نوع مورد ایجاد می کند. یک پورتال را پیوند دهید تا آن درخواست ها را در معرض دید مشتریان خود قرار دهید. یک صندوق پستی می تواند چندین ورودی را تغذیه کند، اما فقط از طریق پوشه های مجزا. ایجاد ورودی نیاز به مدیریت این صندوق پستی، فضای کاری هدف و هر پورتال پیوندی دارد.", + "intakesMailboxAddress": "نظارت {address}", + "intakeLastUID": "آخرین UID {uid}", + "intakeRateLimited": "{count} عقب نگه داشت", + "intakesEmpty": "هنوز ورودی وجود ندارد. یکی را اضافه کنید تا این صندوق پستی مواردی را ایجاد کند.", + "intakeAdd": "ورودی اضافه کنید", + "intakeFolder": "پوشه", + "intakeFolderRequired": "پوشه مورد نیاز است", + "intakeTargetType": "نوع هدف", + "intakeTargetWorkspace": "فضای کار", + "intakeTargetPortal": "پورتال", + "intakeTargetRequired": "یک هدف را انتخاب کنید", + "intakeNoPortal": "داخلی (بدون پورتال)", + "intakeWorkspaceRequired": "یک فضای کاری را انتخاب کنید", + "intakeStatus": "وضعیت", + "intakeStatusEnabled": "فعال شد", + "intakeStatusDisabled": "غیرفعال", + "intakeStatusNeedsAttention": "نیاز به توجه دارد", + "intakeFeedsPortal": "پورتال را تغذیه می‌کند", + "intakeFeedsWorkspace": "فضای کاری را تغذیه می کند", + "intakePortalRequestTypeHelp": "ایمیل از این پوشه از نوع درخواست ایمیل سیستم پورتال استفاده می کند، بنابراین فیلدهای فرم الزامی هرگز ایمیل را مسدود نمی کنند.", + "intakePortalItemTypeHelp": "موارد جدید از این پوشه از نوع مورد انتخاب شده استفاده می کنند. نوع درخواست ایمیل سیستم پورتال همچنان نامه را مسیریابی می کند.", + "selectPortal": "یک پورتال را انتخاب کنید", + "intakeSendConfirmation": "ارسال رسید", + "intakeSendConfirmationHint": "به فرستنده یک ایمیل تأیید کنید که درخواست او دریافت شده است. زمانی که این ورودی به یک پورتال متصل می شود، رسید شامل پیوند پورتال می شود.", + "intakeImportExistingMail": "ایمیل موجود را وارد کنید", + "intakeImportExistingMailHint": "وقتی این صندوق پستی برای اولین بار بررسی می‌شود، به‌جای شروع با ایمیل جدید، پیام‌های موجود در صندوق پستی را وارد کنید. برای جلوگیری از تبدیل تاریخچه صندوق پستی به بلیط، آن را رها کنید.", + "intakeConfirmationOn": "رسید در", + "intakeSaved": "ورودی ذخیره شد", + "intakeSaveFailed": "ورودی ذخیره نشد", + "intakeDeleted": "ورودی حذف شد", + "intakeDeleteFailed": "ورودی حذف نشد", + "intakeLoadFailed": "ورودی‌ها بارگیری نشد", + "openForm": "فرم را باز کنید", + "formConfiguration": "صفحه عمومی", + "formSlug": "عمومی URL", + "formSlugHelp": "در لینک اشتراک گذاری استفاده شده است", + "formSlugRequired": "اسلاگ فرم مورد نیاز است", + "formSlugInvalid": "اسلاگ باید از ۱ تا ۴۰ حرف کوچک، عدد یا خط تیره باشد و نباید با خط تیره شروع یا تمام شود یا خط تیره متوالی داشته باشد.", + "formBrandColorInvalid": "رنگ برند باید یک کد شش رقمی شش رقمی باشد (مثلاً #14b8a6).", + "formLogoUrlInvalid": "نشان‌واره URL باید یک http(های) معتبر URL باشد.", + "formRedirectUrlInvalid": "تغییر مسیر URL باید یک http(های) معتبر URL باشد.", + "formUrl": "فرم URL", + "formTheme": "پوسته", + "formBrandColor": "رنگ برند", + "formLogoUrl": "نشان‌واره URL", + "formSuccessMessage": "پیام موفقیت پیش فرض", + "formSuccessMessagePlaceholder": "از ارسال شما متشکرم!", + "formRedirectUrl": "تغییر مسیر URL", + "formRedirectUrlHelp": "پس از ارسال موفقیت آمیز، کاربران را به این URL هدایت کنید (اختیاری)", + "enableForm": "کانال فرم را فعال کنید", + "formIsActive": "کانال فرم فعال است و ارسالی را می پذیرد", + "formIsInactive": "کانال فرم در حال حاضر غیرفعال است", + "comingSoon": "پیکربندی کانال‌های {type} به‌زودی ارائه می‌شود", + "lastActivity": "آخرین فعالیت", + "items": "موارد", + "comments": "نظرات", + "links": "پیوندها", + "itemCreated": "مورد ایجاد شد", + "itemUpdated": "مورد به روز شد", + "itemDeleted": "مورد حذف شد", + "itemAssigned": "مورد اختصاص داده شد", + "statusChanged": "وضعیت تغییر کرد", + "commentCreated": "نظر ایجاد شد", + "commentUpdated": "نظر به روز شد", + "commentDeleted": "نظر حذف شد", + "itemLinked": "مورد پیوند شد", + "itemUnlinked": "مورد لغو پیوند شد", + "smtpConfiguration": "پیکربندی SMTP", + "smtpHost": "میزبان SMTP", + "smtpHostRequired": "میزبان SMTP مورد نیاز است", + "smtpPort": "پورت", + "smtpUsername": "نام کاربری", + "smtpUsernamePlaceholder": "نام کاربری SMTP (در صورت نیاز)", + "smtpPassword": "رمز عبور", + "smtpFromEmail": "ایمیل فرستنده", + "smtpFromEmailRequired": "آدرس ایمیل فرستنده مورد نیاز است", + "smtpFromName": "نام فرستنده", + "smtpFromNamePlaceholder": "نام نمایشی برای ایمیل های ارسالی", + "smtpEncryption": "رمزگذاری", + "smtpSkipTlsVerify": "رد شدن از تأیید گواهی", + "smtpSkipTlsVerifyDescription": "گواهی‌های خودامضا یا غیرقابل‌اعتماد را فقط برای این سرور SMTP مجاز می‌کند. این کار امنیت اتصال را تضعیف می‌کند.", + "smtpNoEncryptionWarning": "محتویات ایمیل و فراداده‌های تحویل بدون رمزگذاری ارسال می‌شوند. این را فقط با یک رله SMTP محلی قابل‌اعتماد استفاده کنید.", + "noEncryption": "هیچ (توصیه نمی شود)", + "authentication": "احراز هویت", + "smtpAuthMethod": "روش احراز هویت", + "smtpAuthMethodDescription": "مکانیسم SASL مورد استفاده برای SMTP AUTH. به صورت خودکار اولین مورد از PLAIN، LOGIN، CRAM-MD5 ارائه شده توسط سرور را انتخاب می کند.", + "smtpAuthAuto": "خودکار (توصیه می شود)", + "smtpAuthNone": "هیچ (بدون احراز هویت)", + "senderSettings": "تنظیمات فرستنده", + "smtpHostAndFromRequired": "میزبان SMTP و ایمیل فرستنده مورد نیاز است", + "testSmtp": "آزمایش SMTP", + "testEmailAddress": "آدرس ایمیل آزمایشی", + "testEmailPlaceholder": "برای ارسال تست ایمیل را وارد کنید", + "testEmailRequired": "لطفا یک آدرس ایمیل آزمایشی وارد کنید", + "sendTestEmail": "ارسال ایمیل آزمایشی", + "sendingTestEmail": "ارسال ایمیل آزمایشی...", + "testEmailSent": "ایمیل آزمایشی با موفقیت ارسال شد! پیکربندی ذخیره شده است.", + "testEmailFailed": "ایمیل آزمایشی ناموفق بود", + "customerReplies": "مشتری پاسخ می دهد", + "processingLog": "گزارش پردازش", + "emailLog": { + "syncStatus": "وضعیت همگام سازی", + "lastChecked": "آخرین بررسی", + "never": "هرگز", + "intakeLastUID": "آخرین UID {uid}", + "intakeLastPolled": "آخرین بررسی {time}", + "errors": "خطاها", + "noErrors": "بدون خطا", + "from": "از", + "subject": "موضوع", + "result": "نتیجه", + "processedAt": "پردازش شده است", + "newItem": "مورد جدید {key}", + "commentOn": "نظر در مورد {key}", + "noEmails": "هنوز هیچ ایمیلی پردازش نشده است", + "noResults": "هیچ ورودی گزارش ایمیل یافت نشد", + "previous": "قبلی", + "next": "بعدی", + "page": "صفحه {page} از {total}", + "rateLimited": "نرخ محدود", + "rateLimitedCount": "{count} پیام به‌دلیل محدودیت نرخ هر فرستنده متوقف شده و در انتظار بازگردانی به صف است.", + "requeue": "بازگردانی به صف و تلاش مجدد", + "requeueing": "در حال بازگردانی به صف...", + "tabInbound": "ورودی", + "tabOutbox": "صندوق خروجی", + "outboxDescription": "پاسخ‌های عامل در صف که ارسالشان به مشتریان ناموفق بود؛ با تأخیر پلکانی دوباره تلاش می‌شوند.", + "outboxTo": "به", + "outboxStatus": "وضعیت", + "outboxNextAttempt": "تلاش بعدی", + "outboxPending": "در انتظار", + "outboxDelivered": "تحویل داده شد", + "outboxDiscarded": "دور انداخته شد", + "outboxFailed": "سعی مجدد برنامه ریزی شده ({count})", + "outboxRetry": "اکنون دوباره امتحان کنید", + "outboxRetrying": "تلاش مجدد...", + "outboxDiscard": "دور انداختن", + "outboxDiscarding": "دور انداختن...", + "outboxEmpty": "هیچ پاسخ مشتری در صف نیست", + "outboxFilterPending": "در انتظار", + "outboxFilterAll": "همه", + "outboxDiscardPending": "همه موارد در انتظار را صرف‌نظر کنید ({count})", + "outboxDiscardPendingTitle": "همه پاسخ‌های معلق مشتری کنار گذاشته شوند؟", + "outboxDiscardPendingMessage": "{count} پاسخ در صف این کانال را لغو می‌کند. آنها به عنوان دور ریخته شده قابل مشاهده می مانند و چیزی ارسال نمی شود. پاسخ هایی که قبلاً تحویل داده شده اند را نمی توان لغو کرد.", + "outboxDiscardPendingConfirm": "پاسخ‌های معلق را رد کنید", + "outboxDiscardedCount": "{count} پاسخ در صف حذف شد." + } + }, + "portal": { + "title": "پورتال", + "subtitle": "تنظیمات پورتال مشتری", + "portalTitle": "عنوان پورتال", + "selectWorkspace": "فضای کاری را انتخاب کنید", + "workspaceFieldResolution": "تعیین فضای کار فیلد", + "bindingLocked": "پس از ایجاد ثابت شد. نوع درخواست را حذف و دوباره ایجاد کنید تا آن را تغییر دهید.", + "signInTitle": "وارد حساب کاربری خود شوید", + "signInDescription": "برای دریافت لینک ورود ایمیل خود را وارد کنید", + "enterEmail": "آدرس ایمیل خود را وارد کنید", + "sendMagicLink": "ارسال لینک ورود به سیستم", + "noAccountNeeded": "شما نیازی به ایجاد حساب کاربری ندارید. فقط ایمیل خود را وارد کنید و ما یک لینک ورود به سیستم برای شما ارسال می کنیم.", + "checkYourEmail": "ایمیل خود را بررسی کنید", + "magicLinkSent": "ما یک پیوند ورود به سیستم را به ایمیل شما ارسال کرده ایم. برای دسترسی به حساب پورتال خود روی لینک کلیک کنید.", + "linkExpiresIn": "لینک 15 دقیقه دیگر منقضی می شود.", + "useAnotherEmail": "از ایمیل دیگری استفاده کنید", + "verifying": "در حال تایید پیوند شما...", + "pleaseWait": "لطفاً صبر کنید تا ما وارد سیستم شوید.", + "signInSuccess": "با موفقیت وارد سیستم شدید!", + "redirecting": "هدایت شما به پورتال...", + "verificationFailed": "ورود به سیستم انجام نشد", + "invalidLink": "پیوند نامعتبر یا یافت نشد", + "portalCustomer": "مشتری پورتال", + "loading": "در حال بارگیری پورتال...", + "notFound": "پورتال پیدا نشد", + "signInToAccess": "برای دسترسی به پورتال و ارسال درخواست وارد شوید", + "checkingAuth": "در حال بررسی احراز هویت...", + "sending": "ارسال...", + "internalSignIn": "ورود کارکنان", + "backToMagicLink": "بازگشت به ایمیل ورود به سیستم", + "password": "رمز عبور", + "enterPassword": "رمز عبور خود را وارد کنید", + "signingIn": "ورود به سیستم...", + "theme": "پوسته", + "gradient": "گرادیان", + "searchBox": "جعبه جستجو", + "customizeButton": "سفارشی کنید", + "portalDescription": "توضیحات پورتال (اختیاری)", + "portalSlug": "اسلاگ پورتال", + "requestTypes": "انواع درخواست", + "createRequestType": "ایجاد نوع درخواست", + "editRequestType": "ویرایش نوع درخواست", + "addRequestTypeSubtitle": "نوع جدیدی از درخواست را برای پورتال خود اضافه کنید", + "editRequestTypeSubtitle": "جزئیات نوع درخواست را به روز کنید", + "requestTypeCreated": "نوع درخواست با موفقیت ایجاد شد!", + "requestTypeUpdated": "نوع درخواست با موفقیت به روز شد!", + "createAssetReport": "ایجاد گزارش دارایی", + "editAssetReport": "ویرایش گزارش دارایی", + "addAssetReportSubtitle": "یک گزارش دارایی جدید به پورتال خود اضافه کنید", + "editAssetReportSubtitle": "جزئیات گزارش دارایی را به روز کنید", + "assetReportCreated": "گزارش دارایی با موفقیت ایجاد شد!", + "assetReportUpdated": "گزارش دارایی با موفقیت به روز شد!", + "failedToSaveAssetReport": "گزارش دارایی ذخیره نشد", + "assetReportNamePlaceholder": "به عنوان مثال، لپ تاپ، سرورهای فعال", + "assetReportDescriptionPlaceholder": "شرح مختصری از این گزارش دارایی", + "assetSet": "مجموعه دارایی", + "assetSetRequired": "مجموعه دارایی مورد نیاز است", + "selectAssetSet": "انتخاب مجموعه دارایی...", + "assetSetHint": "دارایی‌های مجموعه، درخواست‌های این گزارش را پر می‌کنند.", + "qlQuery": "QL Query", + "qlQueryRequired": "پرس‌وجوی QL مورد نیاز است", + "qlQueryTokenRequired": "پرس‌وجوهای QL در حالت فرم باید حداقل به یک فیلد فرم با استفاده از توکن‌های ${field_identifier} ارجاع دهند.", + "qlQueryPlaceholder": "status = \"Active\" AND category = \"Hardware\"", + "qlQueryHint": "دارایی ها را با استفاده از QL (Windshift Query Language) فیلتر کنید.", + "qlQueryFormPlaceholder": "title = ${title} AND status = ${status}", + "qlQueryFormHint": "از توکن‌های ${field_identifier} برای ارجاع مقادیر ارسال شده توسط فرم استفاده کنید.", + "runMode": "حالت اجرا", + "runModeDirect": "جدول مستقیم", + "runModeDirectHint": "نمایش نتایج به صورت خطی به عنوان یک جدول تمام عرض در یک بخش.", + "runModeForm": "فرم درخواست", + "runModeFormHint": "راه اندازی مانند یک نوع درخواست: کاربر یک فرم را پر می کند، سپس نتایج نشان داده می شود.", + "formConfiguration": "پیکربندی فرم", + "itemType": "نوع مورد", + "assetReportItemTypeHint": "برای تعیین اینکه کدام فیلدهای سفارشی را می توان در فرم جمع آوری کرد استفاده می شود.", + "submitButtonLabel": "برچسب دکمه ارسال (اختیاری)", + "submitButtonPlaceholder": "اجرای گزارش", + "successMessage": "پیام موفقیت (اختیاری)", + "successMessagePlaceholder": "در اینجا دارایی هایی هستند که با معیارهای شما مطابقت دارند.", + "assetReportConfigureFieldsHint": "از عمل \"پیکربندی فیلدها\" در کارت گزارش برای انتخاب فیلدهای فرم استفاده کنید.", + "assetReportActiveHint": "گزارش های غیرفعال از پورتال پنهان می شوند.", + "assetReportFieldsAfterCreate": "پس از ایجاد، از \"پیکربندی فیلدها\" در کارت گزارش برای انتخاب فیلدهایی که در فرم ظاهر می شوند استفاده کنید.", + "rowActions": "اقدامات ردیف", + "addRowAction": "افزودن اقدام ردیف", + "rowActionsHint": "یک پیوند به هر ردیف نتیجه اضافه کنید که یک نوع درخواست را با یک فیلد از قبل پر شده از آن دارایی باز می کند.", + "noRowActions": "هیچ اقدام ردیفی پیکربندی نشده است.", + "removeRowAction": "اقدام ردیف را حذف کنید", + "rowActionLabel": "برچسب پیوند", + "rowActionLabelPlaceholder": "به عنوان مثال، یک مشکل را گزارش کنید", + "rowActionRequestType": "نوع درخواست", + "selectRequestType": "انتخاب نوع درخواست...", + "rowActionTargetField": "فیلد از پیش پر شده", + "selectField": "انتخاب فیلد...", + "rowActionSource": "مقدار از دارایی", + "rowActionSourceAssetId": "دارایی ID", + "rowActionSourceAssetTag": "برچسب دارایی", + "rowActionSourceTitle": "عنوان دارایی", + "rowActionIncomplete": "اقدام ردیف {index} ناقص است: {field} مورد نیاز است", + "runReport": "اجرای گزارش", + "failedToRunReport": "گزارش اجرا نشد", + "fieldRequired": "{field} مورد نیاز است", + "noFieldsConfigured": "هنوز هیچ فیلد فرم پیکربندی نشده است. از \"پیکربندی فیلدها\" در کارت گزارش برای افزودن تعدادی استفاده کنید.", + "resultsCount": "{total} نتیجه", + "editCriteria": "معیارها را ویرایش کنید", + "noAssetsFound": "هیچ دارایی با معیارها مطابقت ندارد.", + "noFormFieldsConfigured": "این گزارش هنوز هیچ فیلد فرمی پیکربندی نشده است.", + "exampleTitle": "به عنوان مثال، پورتال پشتیبانی مشتری", + "exampleStatus": "به عنوان مثال، باز، در حال انجام، حل شده است", + "describeRequest": "لطفا درخواست خود را شرح دهید", + "nameRequired": "نام الزامی است", + "itemTypeRequired": "نوع مورد مورد نیاز است", + "failedToSaveRequestType": "نوع درخواست ذخیره نشد", + "requestTypeNamePlaceholder": "به عنوان مثال، گزارش اشکال، درخواست ویژگی", + "descriptionOptional": "توضیحات (اختیاری)", + "requestTypeDescriptionPlaceholder": "شرح مختصری از این نوع درخواست", + "iconAndColor": "نماد و رنگ", + "createsItemType": "نوع مورد را ایجاد می کند", + "selectItemType": "انتخاب نوع مورد...", + "submissionsCreateItemType": "ارسالی این نوع مورد کاری را ایجاد می کند", + "creating": "ایجاد...", + "removeFromSection": "حذف از بخش", + "removeLink": "حذف پیوند", + "backToApp": "بازگشت به برنامه", + "lightMode": "حالت نور", + "darkMode": "حالت تاریک", + "signIn": "وارد شوید", + "signOut": "از سیستم خارج شوید", + "myRequests": "درخواست های من", + "myDrafts": "پیش نویس ها", + "backToPortal": "بازگشت به پورتال", + "guestUser": "کاربر مهمان", + "notSignedIn": "وارد نشده است", + "draftsTitle": "پیش نویس های شما", + "draftsSubtitle": "از جایی که رها کردید ادامه دهید", + "draftsEmpty": "هنوز هیچ پیش نویسی وجود ندارد. یک درخواست را شروع کنید و پیشرفت شما به طور خودکار ذخیره می شود.", + "draftStepProgress": "مرحله {current}", + "draftUpdatedAgo": "به روز شد {time}", + "draftUntitled": "پیش نویس بدون عنوان", + "draftResume": "ادامه", + "draftDelete": "حذف پیش نویس", + "draftDeleteConfirm": "این پیش نویس حذف شود؟ این قابل واگرد نیست.", + "draftResumeBanner": "از سرگیری پیش نویس ذخیره شده.", + "draftStartFresh": "شروع از نو", + "draftSaving": "در حال ذخیره پیش نویس…", + "draftSaved": "پیش نویس ذخیره شد", + "signInWithPasskey": "با کلید عبور وارد شوید", + "orSignInWithEmail": "یا با ایمیل وارد شوید", + "profileAndSecurity": "نمایه و امنیت", + "profileTitle": "نمایه", + "languageTitle": "زبان", + "languageSubtitle": "زبان این پورتال و ایمیل‌هایی که دریافت می‌کنید را انتخاب کنید.", + "languageLabel": "زبان", + "languageSaved": "زبان به‌روزرسانی شد", + "profileSubtitle": "نحوه ورود به این پورتال را مدیریت کنید.", + "profileSection": "حساب", + "passkeysTitle": "کلیدهای عبور", + "passkeysSubtitle": "بدون پیوند ایمیل سریعتر و ایمن تر وارد شوید.", + "passkeysUnsupported": "مرورگر شما از کلیدهای عبور پشتیبانی نمی کند. از نسخه اخیر کروم، سافاری، اج یا فایرفاکس استفاده کنید.", + "addPasskey": "افزودن کلید عبور", + "addPasskeyTitle": "افزودن کلید عبور", + "addPasskeyHint": "به این دستگاه یک نام بدهید تا بتوانید بعداً آن را تشخیص دهید.", + "passkeyName": "نام کلید عبور", + "passkeyAdded": "اضافه شد", + "passkeyLastUsed": "آخرین استفاده شده", + "noPasskeys": "هنوز کلید عبور وجود ندارد.", + "passkeyBannerTitle": "دفعه بعد ایمیل را رد کنید", + "passkeyBannerBody": "برای ورود سریعتر و مقاوم در برابر فیشینگ، یک کلید عبور تنظیم کنید.", + "passkeyBannerCta": "کلید عبور را تنظیم کنید", + "addLink": "لینک اضافه کنید", + "addSection": "افزودن بخش", + "noContentSections": "هنوز هیچ بخش محتوا پیکربندی نشده است.", + "dropHereToAdd": "برای افزودن نوع درخواست اینجا را رها کنید", + "noRequestTypesInSection": "هنوز هیچ نوع درخواستی در این بخش وجود ندارد. انواع درخواست را از نوار کناری به اینجا بکشید.", + "customize": { + "heroGradient": "پس زمینه", + "background": "پس زمینه", + "navigation": "ناوبری", + "requestTypes": "انواع درخواست", + "knowledgeBase": "پایگاه دانش", + "gradientStyle": "سبک گرادیان", + "gradients": "گرادیان ها", + "gradientDescription": "یک گرادیان برای بخش قهرمان پورتال انتخاب کنید.", + "backgroundDescription": "یک تصویر گرادیان یا پس‌زمینه برای بخش قهرمان پورتال انتخاب کنید. تصاویر پس‌زمینه انتخاب گرادیان را لغو می‌کنند.", + "navigationComingSoon": "سفارشی سازی ناوبری به زودی.", + "requestTypesDescription": "برای مرتب کردن مجدد، انواع درخواست را بکشید و رها کنید. برای ویرایش، تغییر نام یا حذف، روی منو کلیک کنید.", + "systemRequestType": "سیستم", + "systemRequestTypeHelp": "دریافت ایمیل را به این پورتال هدایت می کند. نوع مورد آن قابل ویرایش است. از شکل عمومی پنهان است.", + "creates": "ایجاد می کند", + "fields": "فیلدها", + "addFields": "فیلدها را اضافه کنید", + "rename": "تغییر نام دهید", + "markAsInactive": "علامت گذاری به عنوان غیرفعال", + "markAsActive": "علامت گذاری به عنوان فعال", + "noRequestTypes": "هیچ نوع درخواستی هنوز پیکربندی نشده است.", + "addRequestType": "اضافه کردن نوع درخواست", + "confirmDeleteRequestType": "آیا مطمئنید که می خواهید این نوع درخواست را حذف کنید؟ این قابل واگرد نیست.", + "confirmDeleteAssetReport": "آیا مطمئن هستید که می خواهید این گزارش دارایی را حذف کنید؟ این قابل واگرد نیست.", + "docmostKnowledgeBase": "پایگاه دانش Docmost", + "docmostDescription": "پایگاه دانش Docmost خود را برای فعال کردن قابلیت جستجو در پورتال متصل کنید", + "docmostShareLink": "پیوند اشتراک Docmost", + "docmostShareLinkPlaceholder": "https://wiki.example.com/share/abc123xyz", + "docmostShareLinkHelp": "پیوند اشتراک گذاری کامل Docmost را وارد کنید (به عنوان مثال، https://wiki.example.com/share/u1gkl0jk1u)", + "parsedConfiguration": "پیکربندی تجزیه شده:", + "baseURL": "URL پایه:", + "shareID": "شناسه اشتراک:", + "configurationValid": "پیکربندی معتبر است", + "invalidShareLinkFormat": "قالب پیوند اشتراک گذاری نامعتبر است", + "expectedFormat": "قالب مورد انتظار: https://your-domain.com/share/share-id", + "howToGetShareLink": "نحوه دریافت پیوند اشتراک Docmost:", + "docmostStep1": "فضای Docmost خود را باز کنید", + "docmostStep2": "روی دکمه اشتراک گذاری کلیک کنید", + "docmostStep3": "اشتراک گذاری عمومی را فعال کنید", + "docmostStep4": "لینک اشتراک گذاری را کپی کنید", + "docmostStep5": "آن را در بالا بچسبانید", + "workspacePagesBadge": "صفحه فضای کاری", + "workspacePagesTitle": "صفحات فضای کاری", + "workspacePagesDescription": "درخت صفحات فضای کاری را به عنوان بخشی از این پایگاه دانش منتشر کنید. صفحات منتشر شده در اینجا قابل جستجو هستند و به عنوان قابل مشاهده برای عموم در ویرایشگر صفحه علامت گذاری می شوند.", + "workspacePagesNotice": "این پایگاه دانش صفحات فضای کاری ({count}) را نشان می‌دهد. صفحات منتشر شده توسط کاربران پورتال قابل جستجو هستند و به عنوان قابل مشاهده برای عموم در ویرایشگر علامت گذاری می شوند.", + "workspacePagesEmpty": "هنوز هیچ صفحه فضای کاری در این پایگاه دانش منتشر نشده است.", + "workspacePagesPickWorkspace": "فضای کار", + "workspacePagesPickWorkspacePlaceholder": "انتخاب فضای کاری…", + "workspacePagesNoEligible": "هیچ فضای کاری متصلی را مدیریت نمی‌کنید. برای انتشار صفحات در اینجا، دسترسی مدیریت فضای کاری الزامی است.", + "workspacePagesScope": "دامنه", + "workspacePagesEntire": "درخت کل صفحات", + "workspacePagesSubtree": "صفحه فرعی (به همراه صفحات فرعی آن)", + "workspacePagesPickPage": "صفحه شروع", + "workspacePagesPickPagePlaceholder": "یک صفحه شروع را انتخاب کنید…", + "workspacePagesAdd": "به پایگاه دانش اضافه کنید", + "workspacePagesRemove": "حذف از پایگاه دانش", + "workspacePagesEntryEntire": "{workspace} - درخت کل صفحات", + "workspacePagesEntrySubtree": "{workspace} - صفحه فرعی «{page}»", + "logo": "لوگوی پورتال", + "logoHelp": "یک لوگو برای نمایش در هدر پورتال آپلود کنید. در صورت تنظیم نشدن، لوگوی هاب به‌عنوان جایگزین استفاده می‌شود.", + "assetReports": "گزارش دارایی", + "assetReportsDescription": "گزارش‌های دارایی را که کاربران پورتال می‌توانند مشاهده کنند، پیکربندی کنید.", + "noAssetReports": "هنوز هیچ گزارش دارایی پیکربندی نشده است.", + "addAssetReport": "افزودن گزارش دارایی" + }, + "visibility": { + "title": "مشاهده نوع درخواست", + "configureAccess": "پیکربندی افرادی که می توانند این نوع درخواست را ببینند", + "configureVisibility": "قابلیت مشاهده را پیکربندی کنید", + "everyone": "همه", + "everyoneDesc": "همه کاربران احراز هویت شده می توانند این نوع درخواست را ببینند", + "restricted": "گروه ها و/یا سازمان های خاص", + "restrictedDesc": "فقط گروه‌ها یا سازمان‌های منتخب می‌توانند این نوع را ببینند", + "internalGroups": "گروه های داخلی", + "organizations": "سازمان ها", + "selectGroups": "انتخاب گروه ها...", + "selectOrganizations": "انتخاب سازمان ها ...", + "noRestrictions": "بدون محدودیت - قابل مشاهده برای همه", + "hasRestrictions": "مشاهده محدود شده است", + "orLogicHint": "کاربر باید حداقل به یک گروه یا سازمان منتخب تعلق داشته باشد", + "noGroupsAvailable": "هیچ گروهی در دسترس نیست", + "noOrganizationsAvailable": "هیچ سازمانی در دسترس نیست" + } + }, + "requestForm": { + "title": "عنوان", + "description": "توضیحات", + "enterTitle": "یک عنوان برای درخواست خود وارد کنید", + "describeRequest": "لطفا درخواست خود را شرح دهید", + "yourName": "نام شما", + "yourEmail": "ایمیل شما", + "emailPlaceholder": "your@email.com", + "emailFollowUp": "ما از این برای پیگیری درخواست شما استفاده خواهیم کرد", + "submittingAs": "در حال ارسال به عنوان {name} ({email})", + "nameRequired": "نام الزامی است", + "emailRequired": "ایمیل مورد نیاز است", + "fieldRequired": "{field} مورد نیاز است", + "submitting": "در حال ارسال...", + "submitRequest": "ارسال درخواست", + "requestSubmittedSuccess": "درخواست با موفقیت ارسال شد! ما به زودی با شما تماس خواهیم گرفت.", + "failedToLoadFields": "فیلدهای فرم بارگیری نشد", + "failedToSubmit": "درخواست ارسال نشد", + "selectOption": "انتخاب یک گزینه...", + "shareWithOrganisation": "با سازمان من به اشتراک بگذارید", + "shareWithOrganisationHint": "سایر مخاطبین سازمان شما می‌توانند این درخواست را ببینند و به آن پاسخ دهند.", + "sharedWithOrganisationNote": "این درخواست برای مخاطبین سازمان شما قابل مشاهده خواهد بود." + }, + "requestTypeFields": { + "configureFields": "فیلدها را پیکربندی کنید", + "step": "مرحله", + "fields": "فیلدها", + "addField": "فیلد را اضافه کنید", + "addVirtualField": "افزودن فیلد مجازی", + "addExistingField": "فیلد موجود را اضافه کنید", + "field": "فیلد", + "selectField": "انتخاب فیلد...", + "requiredField": "فیلد الزامی", + "required": "مورد نیاز", + "noFieldsInStep": "هیچ فیلدی در مرحله {step} وجود ندارد. فیلدهای زیر را اضافه کنید", + "stepHasNoFields": "این مرحله هیچ فیلدی ندارد. فیلدها را از لیست موجود بکشید یا یک فیلد مجازی اضافه کنید.", + "virtualField": "مجازی", + "virtual": "مجازی", + "defaultField": "فیلد پیش فرض", + "customField": "فیلد سفارشی", + "system": "سیستم", + "custom": "سفارشی", + "text": "متن", + "multiLine": "چند خطی", + "select": "انتخاب کنید", + "checkbox": "چک باکس", + "fieldName": "نام فیلد", + "fieldNamePlaceholder": "به عنوان مثال، سطح فوریت", + "fieldType": "نوع فیلد", + "options": "گزینه ها", + "value": "مقدار", + "label": "برچسب", + "addOption": "افزودن گزینه", + "pleaseSelectField": "لطفاً یک فیلد را انتخاب کنید", + "fieldAlreadyAdded": "این فیلد قبلاً به این مرحله اضافه شده است", + "pleaseEnterFieldName": "لطفاً یک نام فیلد وارد کنید", + "addAtLeastOneOption": "لطفاً حداقل یک گزینه برای فیلد انتخابی اضافه کنید", + "editFieldDisplay": "ویرایش فیلد نمایش", + "displayName": "نام نمایشی", + "overrideLabel": "برچسب نشان داده شده در فرم پورتال را نادیده بگیرید", + "descriptionHelpText": "توضیحات / متن راهنما", + "helpTextPlaceholder": "متن راهنما را وارد کنید تا در زیر فیلد نشان داده شود...", + "saving": "در حال ذخیره...", + "changesSavedAuto": "تغییرات به صورت خودکار ذخیره می شوند", + "addNewStep": "مرحله جدید اضافه کنید", + "removeCurrentStep": "مرحله فعلی را حذف کنید", + "removeField": "حذف فیلد", + "availableFields": "فیلدهای موجود", + "dragFieldsHint": "فیلدها را به پانل سمت راست بکشید تا آنها را اضافه کنید", + "searchFields": "فیلدهای جستجو...", + "noFieldsMatch": "هیچ فیلدی با جستجوی شما مطابقت ندارد", + "allFieldsAdded": "تمام فیلدهای موجود اضافه شده است", + "dragToReorder": "برای مرتب کردن مجدد فیلدها بکشید", + "dropFieldsHere": "فیلدها را اینجا رها کنید", + "failedToLoadFields": "فیلدها بارگیری نشد", + "failedToSaveFields": "فیلدها ذخیره نشد" + }, + "forms": { + "title": "فرم ها", + "routing": { + "title": "مسیریابی", + "save": "ذخیره مسیریابی" + }, + "createForm": "فرم ایجاد کنید", + "deleteForm": "حذف فرم", + "confirmDeleteForm": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟ این عمل قابل لغو نیست.", + "formCreated": "فرم با موفقیت ایجاد شد", + "formDeleted": "فرم با موفقیت حذف شد", + "formName": "نام فرم", + "formNamePlaceholder": "به عنوان مثال، گزارش اشکال", + "formDescription": "توضیحات", + "formDescriptionPlaceholder": "شرح مختصری از این فرم", + "formNameRequired": "نام فرم الزامی است", + "createsItemType": "نوع مورد را ایجاد می کند", + "selectItemType": "یک نوع مورد را انتخاب کنید", + "builder": { + "title": "فرم ساز", + "availableFields": "فیلدهای موجود", + "searchFields": "فیلدهای جستجو...", + "addField": "فیلد را اضافه کنید", + "noFieldsAvailable": "هیچ فیلدی در دسترس نیست", + "dropFieldsHere": "فیلدها را اینجا رها کنید تا فرم خود را بسازید", + "dragFromPalette": "فیلدها را از پانل سمت راست بکشید یا برای افزودن روی + کلیک کنید", + "required": "مورد نیاز", + "optional": "اختیاری", + "noForms": "هنوز هیچ فرمی پیکربندی نشده است", + "addFormHint": "اولین فرم را ایجاد کنید و انتخاب کنید که پاسخ‌های آن کجا باشد.", + "editFields": "ویرایش فیلدها", + "backToFields": "بازگشت به فیلدها" + }, + "settings": { + "title": "تنظیمات فرم", + "requireAuth": "نیاز به احراز هویت", + "allowAttachments": "به پیوست‌ها اجازه دهید", + "submitButton": "ارسال متن دکمه", + "successMessage": "پیام موفقیت", + "successMessagePlaceholder": "از ارسال شما متشکرم!", + "redirectUrl": "تغییر مسیر URL" + }, + "integration": { + "title": "یکپارچه سازی", + "hostedUrl": "لینک را به اشتراک بگذارید", + "iframe": "جاسازی iframe", + "jsWidget": "ویجت JS", + "copyCode": "کد را کپی کنید", + "copied": "کپی شده!", + "openInNewTab": "در برگه جدید باز کنید", + "widthLabel": "عرض", + "heightLabel": "ارتفاع" + } + }, + "hub": { + "loading": "در حال بارگیری هاب...", + "error": "خطا در بارگیری هاب", + "section": "بخش", + "inbox": "صندوق ورودی", + "inboxDescription": "درخواست از همه پورتال ها", + "backToHub": "بازگشت به هاب", + "customizeHub": "هاب را سفارشی کنید", + "sections": "بخش ها", + "sectionsHelp": "پورتال ها را به بخش ها سازماندهی کنید. پورتال ها را بین بخش ها در نمای اصلی بکشید.", + "addSection": "افزودن بخش", + "noPortals": "هنوز هیچ پورتالی در دسترس نیست", + "noDescription": "بدون شرح", + "requestTypes": "انواع درخواست", + "unassignedPortals": "پورتال های اختصاص نیافته", + "dragToSection": "این پورتال ها را به بخش بالا بکشید", + "dropPortalsHere": "پورتال ها را به اینجا بکشید یا از پانل سفارشی سازی اضافه کنید", + "manageChannels": "مدیریت کانال ها", + "heroContent": "محتوای قهرمان", + "noSearchResults": "هیچ نتیجه ای یافت نشد", + "matchingPortals": "پورتال ها", + "matchingRequestTypes": "انواع درخواست", + "noRequests": "هنوز درخواستی وجود ندارد", + "noRequestsDescription": "درخواست های ارسال شده از طریق پورتال های شما در اینجا نمایش داده می شود", + "request": "درخواست", + "portal": "پورتال", + "submitter": "ارسال کننده", + "status": "وضعیت", + "date": "تاریخ", + "allPortals": "همه پورتال ها", + "allStatuses": "همه وضعیت ها", + "anonymous": "ناشناس", + "showingResults": "در حال نمایش", + "of": "از", + "logo": "لوگوی هاب", + "logoHelp": "این لوگو در هاب نمایش داده می‌شود و به‌عنوان پس‌زمینه پورتال‌های بدون لوگو استفاده می‌شود." + } +}; diff --git a/frontend/src/lib/locales/fa/common.js b/frontend/src/lib/locales/fa/common.js new file mode 100644 index 000000000..8a1f3958a --- /dev/null +++ b/frontend/src/lib/locales/fa/common.js @@ -0,0 +1,303 @@ +export default { + "common": { + "save": "ذخیره کنید", + "saveChanges": "ذخیره تغییرات", + "cancel": "لغو کنید", + "close": "بستن", + "delete": "حذف کنید", + "remove": "حذف کنید", + "edit": "ویرایش کنید", + "create": "ایجاد کنید", + "add": "اضافه کنید", + "update": "به روز رسانی", + "search": "جستجو کنید", + "filter": "فیلتر کنید", + "addFilter": "افزودن فیلتر", + "clear": "پاک کردن", + "reset": "بازنشانی کنید", + "discard": "دور انداختن", + "discardChanges": "حذف تغییرات", + "disconnect": "قطع کردن", + "confirm": "تایید کنید", + "done": "انجام شد", + "ok": "تأیید", + "yes": "بله", + "no": "خیر", + "back": "برگشت", + "next": "بعدی", + "previous": "قبلی", + "finish": "پایان", + "continue": "ادامه دهید", + "submit": "ارسال کنید", + "apply": "اعمال", + "refresh": "تازه کردن", + "reload": "بارگذاری مجدد", + "retry": "دوباره امتحان کنید", + "copy": "کپی کنید", + "or": "یا", + "menu": "منو", + "paste": "چسباندن", + "duplicate": "ایجاد نسخه", + "move": "حرکت کنید", + "moveUp": "حرکت به بالا", + "moveDown": "حرکت به پایین", + "select": "انتخاب کنید", + "selectAll": "همه را انتخاب کنید", + "deselectAll": "همه را لغو انتخاب کنید", + "all": "همه", + "enable": "فعال کردن", + "disable": "غیر فعال کردن", + "enabled": "فعال شد", + "disabled": "غیرفعال", + "show": "نمایش دهید", + "hide": "پنهان کردن", + "expand": "گسترش دهید", + "collapse": "جمع کردن", + "view": "مشاهده کنید", + "preview": "پیش نمایش", + "download": "دانلود کنید", + "upload": "آپلود کنید", + "import": "درون‌ریزی", + "export": "برون‌ریزی", + "print": "چاپ کنید", + "share": "به اشتراک بگذارید", + "open": "باز کنید", + "id": "ID", + "name": "نام", + "title": "عنوان", + "description": "توضیحات", + "type": "نوع", + "status": "وضعیت", + "priority": "اولویت", + "category": "دسته بندی", + "date": "تاریخ", + "time": "زمان", + "created": "ایجاد شد", + "createdAt": "ایجاد شده در", + "updated": "به روز شد", + "updatedAt": "به روز شده در", + "modified": "اصلاح شد", + "owner": "مالک", + "author": "نویسنده", + "createdBy": "ایجاد شده توسط", + "assigned": "اختصاص داده شده است", + "assignedTo": "اختصاص داده شده به", + "assignTo": "اختصاص دادن به", + "assign": "اختصاص دهید", + "assignee": "مسئول", + "team": "تیم", + "allAssignees": "همه مسئولان", + "unassigned": "اختصاص داده نشده است", + "members": "اعضا", + "user": "کاربر", + "users": "کاربران", + "group": "گروه", + "groups": "گروه ها", + "action": "اقدام", + "actions": "اقدامات", + "options": "گزینه ها", + "configure": "پیکربندی کنید", + "settings": "تنظیمات", + "profile": "نمایه", + "details": "جزئیات", + "summary": "خلاصه", + "notes": "یادداشت ها", + "comments": "نظرات", + "attachments": "پیوست ها", + "tags": "برچسب ها", + "labels": "برچسب ها", + "scheduling": "برنامه ریزی", + "dueDate": "سررسید", + "startDate": "تاریخ شروع", + "endDate": "تاریخ پایان", + "email": "ایمیل", + "username": "نام کاربری", + "password": "رمز عبور", + "url": "URL", + "link": "پیوند", + "color": "رنگ", + "icon": "نماد", + "order": "ترتیب", + "position": "موقعیت", + "count": "تعداد", + "total": "مجموع", + "active": "فعال", + "inactive": "غیر فعال", + "activate": "فعال کنید", + "deactivate": "غیر فعال کردن", + "default": "پیش فرض", + "custom": "سفارشی", + "loading": "در حال بارگیری...", + "loadingSlow": "این ممکن است در یک اتصال آهسته یک لحظه طول بکشد.", + "skipToMainContent": "به محتوای اصلی بروید", + "saving": "در حال ذخیره...", + "deleting": "در حال حذف...", + "submitting": "در حال ارسال...", + "processing": "در حال پردازش...", + "uploading": "در حال آپلود...", + "downloading": "در حال دانلود...", + "generating": "در حال تولید...", + "regenerating": "در حال بازسازی...", + "revoking": "در حال لغو...", + "applying": "در حال اعمال...", + "note": "یادداشت", + "unknown": "ناشناس", + "loadMore": "بیشتر بارگیری کنید", + "loadingMore": "در حال بارگیری بیشتر...", + "remaining": "باقی مانده است", + "showingOfTotal": "نمایش {count} از {total}", + "showingXofY": "نمایش {from}–{to} از {total}", + "noResults": "هیچ نتیجه ای یافت نشد", + "noData": "داده ای وجود ندارد", + "noItems": "هیچ موردی وجود ندارد", + "item": "مورد", + "items": "موارد", + "empty": "خالی", + "required": "مورد نیاز", + "optional": "اختیاری", + "areYouSure": "مطمئنید؟", + "confirmDelete": "آیا مطمئنید که می خواهید این را حذف کنید؟", + "confirmAction": "آیا مطمئن هستید که می خواهید ادامه دهید؟", + "cannotUndo": "این عمل قابل لغو نیست.", + "today": "امروز", + "yesterday": "دیروز", + "tomorrow": "فردا", + "now": "در حال حاضر", + "never": "هرگز", + "always": "همیشه", + "deleted": "حذف شد", + "dismiss": "رد کردن", + "error": "خطا", + "notFound": "یافت نشد", + "workspace": "فضای کار", + "none": "هیچ کدام", + "unknownUser": "کاربر ناشناس", + "selected": "انتخاب شده است", + "searching": "در حال جستجو...", + "noItemsFound": "هیچ موردی یافت نشد", + "typeToSearch": "برای جستجو تایپ کنید...", + "pressEscapeToCancel": "Escape را برای لغو بزنید", + "viewDetails": "مشاهده جزئیات", + "openInNewTab": "در برگه جدید باز کنید", + "account": "حساب", + "key": "کلید", + "project": "پروژه", + "noProject": "بدون پروژه", + "milestone": "نقطه عطف", + "iteration": "تکرار", + "global": "جهانی", + "root": "ریشه", + "saved": "با موفقیت ذخیره شد", + "overview": "نمای کلی", + "files": "فایل ها", + "ticket": "مورد کار", + "tickets": "موارد کار", + "noFiles": "بدون فایل", + "filesComingSoon": "مدیریت فایل به زودی ارائه می شود", + "noTickets": "بدون مورد کار", + "ticketsComingSoon": "مدیریت موارد کار به‌زودی ارائه می‌شود" + }, + "toast": { + "success": "موفقیت", + "error": "خطا", + "warning": "هشدار", + "info": "اطلاعات", + "saved": "با موفقیت ذخیره شد", + "deleted": "با موفقیت حذف شد", + "created": "با موفقیت ایجاد شد", + "updated": "با موفقیت به روز شد", + "copied": "در کلیپ بورد کپی شد", + "failed": "عملیات شکست خورد", + "layoutSaveFailed": "تغییرات داشبورد ذخیره نشد. ویرایش های شما در بارگذاری مجدد از بین می رود." + }, + "errors": { + "UNAUTHORIZED": "احراز هویت لازم است. لطفا وارد شوید", + "AUTHENTICATION_REQUIRED": "احراز هویت لازم است. لطفا وارد شوید", + "INVALID_TOKEN": "جلسه شما نامعتبر است. لطفا دوباره وارد شوید.", + "TOKEN_EXPIRED": "جلسه شما تمام شده است. لطفا دوباره وارد شوید.", + "INSUFFICIENT_PERMISSION": "شما اجازه انجام این عمل را ندارید.", + "VALIDATION_FAILED": "لطفا ورودی خود را بررسی کنید و دوباره امتحان کنید.", + "INVALID_INPUT": "ورودی ارائه شده نامعتبر است.", + "MISSING_FIELD": "فیلد الزامی وجود ندارد: {field}", + "NOT_FOUND": "منبع درخواستی یافت نشد.", + "ITEM_NOT_FOUND": "مورد پیدا نشد", + "WORKSPACE_NOT_FOUND": "فضای کاری پیدا نشد.", + "USER_NOT_FOUND": "کاربر پیدا نشد", + "CONFLICT": "این منبع از قبل وجود دارد.", + "ALREADY_EXISTS": "منبعی با این شناسه از قبل وجود دارد.", + "RATE_LIMITED": "درخواست‌های بیش از حد. لطفاً صبر کنید و دوباره امتحان کنید.", + "INTERNAL_ERROR": "یک خطای غیرمنتظره رخ داد. لطفاً بعداً دوباره امتحان کنید.", + "SERVICE_UNAVAILABLE": "این سرویس به طور موقت در دسترس نیست.", + "NETWORK_ERROR": "خطای شبکه. لطفاً اتصال خود را بررسی کنید.", + "TIMEOUT": "زمان درخواست به پایان رسید. لطفا دوباره امتحان کنید.", + "UNKNOWN": "یک خطای ناشناخته رخ داد.", + "generic": "مشکلی پیش آمد. لطفا دوباره امتحان کنید.", + "failedToCreate": "ایجاد نشد", + "failedToSave": "ذخیره نشد", + "failedToDelete": "حذف نشد", + "failedToLoad": "بارگیری نشد", + "failedToUpdate": "به روز رسانی انجام نشد" + }, + "validation": { + "required": "این فیلد الزامی است", + "requiredField": "{field} مورد نیاز است", + "invalidEmail": "لطفا یک آدرس ایمیل معتبر وارد کنید", + "invalidUrl": "لطفاً یک URL معتبر وارد کنید", + "minLength": "باید حداقل {min} نویسه باشد", + "maxLength": "نباید بیشتر از {max} نویسه باشد", + "minValue": "باید حداقل {min} باشد", + "maxValue": "نباید بیشتر از {max} باشد", + "pattern": "قالب نامعتبر است", + "passwordMismatch": "رمزهای عبور مطابقت ندارند", + "passwordTooWeak": "رمز عبور خیلی ضعیف است", + "invalidCredentials": "ایمیل یا رمز عبور نامعتبر است", + "emailTaken": "این ایمیل در حال حاضر در حال استفاده است", + "usernameTaken": "این نام کاربری قبلاً گرفته شده است", + "slugInvalid": "فقط حروف کوچک، اعداد و خط فاصله مجاز است", + "nameRequired": "نام الزامی است", + "fillRequired": "لطفا تمام فیلدهای الزامی را پر کنید" + }, + "placeholders": { + "search": "جستجو...", + "searchUsers": "جستجوی کاربران...", + "searchChannels": "جستجوی کانال ها...", + "searchProjects": "جستجوی پروژه ها...", + "searchFields": "جستجوی فیلدها...", + "searchIcons": "نمادهای جستجو...", + "enterEmailOrUsername": "ایمیل یا نام کاربری را وارد کنید", + "enterPassword": "رمز عبور فعلی را وارد کنید", + "enterNewPassword": "رمز عبور جدید را وارد کنید", + "confirmNewPassword": "رمز عبور جدید را تایید کنید", + "optionalDescription": "توضیحات اختیاری...", + "channelDescription": "شرح مختصری از هدف این کانال", + "columnName": "نام ستون", + "typeName": "«{name}» را در اینجا تایپ کنید", + "searchWorkItems": "جستجوی موارد کاری..." + }, + "emptyStates": { + "noData": "داده ای وجود ندارد", + "noResults": "هیچ نتیجه ای یافت نشد", + "noItemsMatch": "هیچ موردی با فیلتر مطابقت ندارد", + "noFieldChanges": "هیچ تغییری در فیلد شناسایی نشد", + "noRequirements": "هیچ الزامی پیکربندی نشده است", + "configureFilter": "برای مشاهده موارد، فیلتر را پیکربندی کنید", + "createToStart": "برای شروع {item} را ایجاد کنید" + }, + "bulkActions": { + "screenRequiredTitle": "برخی موارد نیاز به فرم دارند", + "screenRequiredAll": "هر مورد انتخاب‌شده پیش از جابه‌جایی به یک فرم نیاز دارد. در عوض آن‌ها را یکی‌یکی جابه‌جا کنید.", + "screenRequiredMessage": "{blocked} از {total} موارد انتخابی قبل از اینکه بتوانند جابجا شوند به فرم نیاز دارند. {remaining} دیگر منتقل شود؟", + "screenRequiredConfirm": "بقیه را جابجا کنید" + }, + "dueDate": { + "noDueDate": "بدون تاریخ سررسید", + "dueToday": "سررسید امروز", + "dueTomorrow": "سررسید فردا", + "dueYesterday": "سررسید دیروز", + "dueInDays": "سررسید {days} روز دیگر", + "overdueByDays": "{days} روز عقب افتاده است", + "overdueTooltip": "{days} روز عقب افتاده - سررسید {date}", + "dueSoonTooltip": "سررسید {days} روز دیگر — {date}", + "dueLaterTooltip": "سررسید {date}" + } +}; diff --git a/frontend/src/lib/locales/fa/dashboard.js b/frontend/src/lib/locales/fa/dashboard.js new file mode 100644 index 000000000..006b9cfbd --- /dev/null +++ b/frontend/src/lib/locales/fa/dashboard.js @@ -0,0 +1,194 @@ +export default { + "dashboard": { + "salutation": { + "withName": "{salutation}، {name}!", + "withoutName": "{salutation}!" + }, + "sections": { + "yourDay": { + "title": "روز شما", + "subtitle": "خواندن سریع در مورد آنچه نیاز به توجه شما دارد" + }, + "work": { + "title": "کار", + "subtitle": "لیست شخصی و مواردی که به شما اختصاص داده شده است" + }, + "workspaces": { + "title": "فضاهای کاری", + "subtitle": "دوباره به داخل بپر" + } + }, + "widgetCatalog": { + "customWidget": { + "name": "ویجت سفارشی", + "description": "ویجتی که با هوش مصنوعی یا با نوشتن یک برنامه OpenUI می سازید" + }, + "dailyBriefing": { + "name": "جلسه توجیهی روزانه", + "description": "خلاصه ای از آنچه امروز برای شما مهم است، توسط هوش مصنوعی ایجاد شده است" + }, + "yourActivity": { + "name": "فعالیت شما", + "description": "مواردی که اخیراً مشاهده، ویرایش یا نظر داده اید" + }, + "whatsNew": { + "name": "چه جدید است", + "description": "آخرین اعلان ها و به روز رسانی های خوانده نشده" + }, + "personalTasks": { + "name": "وظایف شخصی", + "description": "موارد از لیست کارهای شخصی شما" + }, + "savedSearch": { + "name": "جستجوی ذخیره شده", + "description": "نمایش موارد کاری از مجموعه ذخیره شده" + }, + "assignedToMe": { + "name": "به من اختصاص داده شده است", + "description": "موارد اختصاص داده شده به شما را در همه فضاهای کاری باز کنید" + }, + "createdByMe": { + "name": "ایجاد شده توسط من", + "description": "مواردی را که ایجاد کرده‌اید در همه فضاهای کاری باز کنید" + }, + "watchedItems": { + "name": "موارد تماشا شده", + "description": "مواردی که تماشا می‌کنید" + }, + "upcomingMilestones": { + "name": "نقاط عطف آینده", + "description": "نقاط عطف با نزدیک شدن به تاریخ های هدف" + }, + "recentWorkspaces": { + "name": "فضاهای کاری اخیر", + "description": "فضاهای کاری که اخیراً بازدید کرده اید" + }, + "quickAccess": { + "name": "دسترسی سریع", + "description": "پیوندهای سریع به فضاهای کاری که می توانید به آنها دسترسی پیدا کنید" + }, + "supportOverview": { + "name": "نمای کلی پشتیبانی", + "description": "بک‌لاگ، اولین پاسخ، زمان حل، و رعایت SLA برای بلیط های مشتری" + } + }, + "customization": { + "widgets": "ویجت‌ها", + "activity": { + "name": "فعالیت", + "description": "جلسات توجیهی، جریان‌های فعالیت، و اعلان‌ها" + }, + "work": { + "name": "کار", + "description": "موارد، نقاط عطف، و چیزهایی که به شما اختصاص داده شده است" + }, + "support": { + "name": "پشتیبانی", + "description": "معیارهای Helpdesk برای صف های مشتریان شما" + }, + "navigation": { + "name": "ناوبری", + "description": "دسترسی سریع به فضاهای کاری" + }, + "custom": { + "name": "سفارشی", + "description": "ویجت خود را از توضیحات بسازید" + }, + "background": { + "name": "پس زمینه", + "description": "گرادیان ها و تصاویر از پیش تعیین شده برای داشبورد شما" + }, + "tipLabel": "نکته", + "tip": "ویجت ها را از اینجا به هر بخش در داشبورد خود بکشید." + }, + "widgetBuilder": { + "createTitle": "یک ویجت ایجاد کنید", + "editTitle": "ویجت را ویرایش کنید", + "subtitle": "آن را توصیف کنید یا خودتان برنامه OpenUI را بنویسید", + "nameLabel": "نام", + "namePlaceholder": "کار باز من", + "promptLabel": "چه چیزی را باید نشان دهد؟", + "promptPlaceholder": "اقلامی که هنوز بدهکارم، با شمارش و جدول", + "generate": "ایجاد کنید", + "generating": "در حال تولید...", + "itemQueryLabel": "پرس و جو مورد (CQL)", + "assetQueryLabel": "پرس و جو دارایی (CQL)", + "assetSetLabel": "مجموعه دارایی", + "assetSetNone": "هیچ کدام", + "previewLabel": "پیش نمایش", + "previewEmpty": "هنوز چیزی برای پیش نمایش وجود ندارد", + "loading": "در حال بارگیری...", + "aiUnavailable": "تولید هوش مصنوعی در دسترس نیست، بنابراین ویجت جدیدی نمی‌توان ایجاد کرد.", + "aiUnavailableEditing": "تولید هوش مصنوعی در دسترس نیست. همچنان می‌توانید نام و درخواست‌ها را تغییر دهید.", + "generateFailed": "تولید ناموفق بود", + "saveFailed": "ذخیره نشد", + "loadFailed": "این ویجت بارگیری نشد", + "saving": "در حال ذخیره..." + }, + "customWidgets": { + "sourceError": "داده های این ویجت بارگیری نشد", + "truncated": "بر اساس {shown} از {total} ردیف", + "renderError": "این ویجت قابل ارائه نیست", + "unavailable": "این ویجت دیگر در دسترس نیست", + "notConfigured": "این ویجت هنوز راه اندازی نشده است", + "noLinks": "هیچ پیوندی بین این موارد و دارایی ها وجود ندارد", + "canvasUnavailable": "این نمودار به بوم نیاز دارد که در اینجا موجود نیست", + "renderedNodes": "نمایش {shown} از {total} گره" + }, + "editor": { + "newSection": "بخش جدید", + "deleteSectionConfirm": "این بخش حذف شود؟ تمام ویجت های این بخش حذف خواهند شد.", + "doneEditing": "ویرایش انجام شد", + "customize": "سفارشی کنید", + "editModeDescription": "حالت ویرایش: اضافه کردن، تغییر نام، ترتیب مجدد، یا حذف بخش ها و ویجت ها", + "addSection": "افزودن بخش", + "sectionLabel": "بخش داشبورد", + "sectionTitlePlaceholder": "عنوان بخش", + "sectionSubtitlePlaceholder": "زیرنویس (اختیاری)", + "renameSection": "تغییر نام بخش", + "deleteSection": "حذف بخش", + "unknownWidgetType": "نوع ویجت ناشناخته: {type}", + "noWidgets": "هنوز ویجتی در این بخش وجود ندارد", + "addWidgetsHint": "برای افزودن ویجت، سفارشی‌سازی را انتخاب کنید", + "noSections": "هیچ بخش پیکربندی نشده است", + "addSectionsHint": "برای افزودن بخش ها به داشبورد خود، ویرایش را انتخاب کنید" + }, + "states": { + "assignedLoadError": "موارد اختصاص داده شده شما بارگیری نشد", + "assignedEmpty": "در حال حاضر چیزی به شما اختصاص داده نشده است", + "createdLoadError": "مواردی که ایجاد کردید بارگیری نشد", + "createdEmpty": "شما هیچ مورد باز ایجاد نکرده اید", + "storyPointsLoadError": "خلاصه امتیاز داستان بارگیری نشد", + "storyPointsEmpty": "هنوز هیچ امتیاز داستان باز اختصاص داده نشده است", + "personalTasksLoadError": "وظایف شخصی شما بارگیری نشد", + "personalTasksEmpty": "لیست کارهای شخصی شما خالی است", + "supportMetricsLoadError": "معیارهای پشتیبانی بارگیری نشد", + "supportMetricsEmpty": "هنوز بلیط مشتری در این محدوده وجود ندارد", + "supportOverviewSetupTitle": "فضاهای کاری را برای گزارش انتخاب کنید", + "supportOverviewSetupSubtitle": "این ویجت معیارهای میز پشتیبانی را فقط برای فضاهای کاری که انتخاب می‌کنید نشان می‌دهد.", + "supportSourcesUnavailable": "{count} از فضاهای کاری پیکربندی شده شما دیگر در دسترس نیستند", + "supportBacklog": "بک‌لاگ", + "supportUnassigned": "اختصاص داده نشده است", + "supportCreated": "ایجاد شد", + "supportResolved": "حل شد", + "supportSlaCompliance": "رعایت SLA", + "supportSlaNone": "—", + "supportFirstResponseP50": "اولین پاسخ p50", + "supportExportCSV": "برون‌ریزی CSV", + "supportLiveDelayed": "به‌روزرسانی‌های زنده موقتاً متوقف شد", + "dailyBriefingUnavailable": "خلاصه روزانه شما در حال حاضر در دسترس نیست. متکی به یک ادغام هوش مصنوعی است. اگر به تازگی یکی را راه اندازی کرده اید، کمی بعد دوباره بررسی کنید.", + "updatedAt": "به روز شد {time}", + "priorityLabel": "اولویت: {priority}", + "noWorkspaces": "هنوز فضای کاری وجود ندارد", + "createWorkspace": "یکی ایجاد کنید", + "workspaceAvatarAlt": "آواتار {name}", + "visited": "بازدید از {time}", + "noUpcomingMilestones": "نقطه عطف آینده‌ای وجود ندارد", + "milestoneProgress": "{done} از {total} انجام شد", + "daysOverdue": "{days} روز تاخیر", + "daysLeft": "{days} روز باقی مانده است", + "watchedItemsEmpty": "هیچ موردی را تماشا نمی‌کنید", + "workspaceWithId": "فضای کاری {id}" + } + } +}; diff --git a/frontend/src/lib/locales/fa/email.js b/frontend/src/lib/locales/fa/email.js new file mode 100644 index 000000000..eb32a7d8d --- /dev/null +++ b/frontend/src/lib/locales/fa/email.js @@ -0,0 +1,112 @@ +/** + * Persian (fa) transactional and notification email copy. + * + * Rendered by the Go backend (internal/i18n) via the `t` template function. + * Placeholders use {name} syntax and must match the English catalog. + */ +export default { + email: { + footer: { + automated: 'این یک ایمیل خودکار است — لطفاً پاسخ ندهید.', + repliable: 'این ایمیل را دریافت میکنید زیرا درخواست بازی با ما دارید.' + }, + common: { + greeting: 'سلام {name}،', + openInWindshift: 'مشاهده در ویندشیفت', + manualLinkHint: 'اگر دکمه کار نکرد، این نشانی را در مرورگر خود کپی و جایگذاری کنید:' + }, + duration: { + minute: '{count} دقیقه', + minutes: '{count} دقیقه', + hour: '{count} ساعت', + hours: '{count} ساعت', + day: '{count} روز', + days: '{count} روز' + }, + magicLink: { + subject: 'ورود به پورتال شما', + heading: 'ورود به پورتال شما', + body: 'برای ورود روی دکمه زیر کلیک کنید. این پیوند تا {expires} معتبر است.', + button: 'ورود', + note: 'اگر شما این پیوند را درخواست نکردهاید، میتوانید این ایمیل را نادیده بگیرید — هیچکس بدون آن نمیتواند وارد شود.' + }, + verification: { + subject: 'نشانی ایمیل خود را تأیید کنید', + heading: 'تأیید ایمیل شما', + body: 'برای تکمیل راهاندازی حساب خود، لطفاً نشانی ایمیل خود را تأیید کنید.', + button: 'تأیید ایمیل', + note: 'این پیوند تا {expires} منقضی میشود. اگر حساب ویندشیفت نساختهاید، میتوانید این ایمیل را نادیده بگیرید.' + }, + invitation: { + subject: 'شما به ویندشیفت دعوت شدهاید', + heading: 'شما به ویندشیفت دعوت شدهاید', + body: 'برای فعالسازی حساب خود و شروع همکاری با تیم، یک گذرواژه تعیین کنید.', + button: 'تعیین گذرواژه', + note: 'این دعوتنامه تا {expires} منقضی میشود. اگر انتظار آن را نداشتید، میتوانید این ایمیل را نادیده بگیرید.' + }, + notificationBatch: { + subjectOne: 'ویندشیفت — ۱ اعلان جدید دارید', + subjectOther: 'ویندشیفت — {count} اعلان جدید دارید', + headingOne: '۱ اعلان جدید', + headingOther: '{count} اعلان جدید', + intro: 'سلام {name}، آنچه تازه است:', + manage: 'بسامد دریافت این ایمیلها را در تنظیمات اعلان خود مدیریت کنید.' + }, + mention: { + subject: '{actor} در {itemKey} به شما اشاره کرد', + body: '{actor} در {source} در {itemKey} · {itemTitle} به شما اشاره کرد', + source: { + comment: 'یک دیدگاه', + description: 'توضیحات', + item: 'یک مورد' + } + }, + portalReply: { + subject: 'پاسخ: {subject}', + body: '{author} در {itemKey} · {itemTitle} پاسخ داد', + portalLink: 'مشاهده این درخواست در پورتال شما', + note: 'برای ادامه گفتگو، کافی است به این ایمیل پاسخ دهید.' + }, + approval: { + subject: 'درخواست تأیید: {itemKey} — {itemTitle}', + heading: 'درخواست تأیید', + body: 'تأیید شما برای {itemKey} · {itemTitle} لازم است.', + body2: 'برای بررسی و تصمیمگیری روی دکمه زیر کلیک کنید. این پیوند تا {expires} معتبر است.', + button: 'بررسی تأیید', + note: 'اگر انتظار این درخواست را نداشتید، میتوانید این ایمیل را نادیده بگیرید.' + }, + intake: { + subject: 'درخواست شما را دریافت کردیم ({itemKey})', + heading: 'درخواست شما را دریافت کردیم', + body: 'از تماس شما سپاسگزاریم. درخواست شما را با شناسه {itemKey} · {itemTitle} ثبت کردیم.', + body2: 'تیم ما آن را بررسی میکند و در اسرع وقت با شما تماس میگیرد.', + body3: 'میتوانید پیشرفت را در پورتال خود پیگیری کرده و جزئیات را اضافه کنید:', + button: 'مشاهده درخواست شما', + note: 'برای افزودن اطلاعات بیشتر، کافی است به این ایمیل پاسخ دهید.' + } + }, + notification: { + dueReminder: { + title: 'یادآوری: {itemKey} بهزودی سررسید میشود', + message: '{itemTitle} در {dueDate} سررسید میشود' + }, + mention: { + title: 'به شما اشاره شد', + comment: '{actor} در یک دیدگاه در {itemTitle} ({itemKey}) به شما اشاره کرد', + description: '{actor} در توضیحات {itemTitle} ({itemKey}) به شما اشاره کرد', + item: '{actor} در {itemTitle} ({itemKey}) به شما اشاره کرد' + }, + approvalStarted: { + title: 'تأیید لازم است', + message: 'تأیید شما برای {itemKey}: {itemTitle} لازم است' + }, + approvalEscalated: { + title: 'تأیید به شما ارجاع شد', + message: 'یک تأیید در {itemKey}: {itemTitle} به شما ارجاع شده است' + }, + incident: { + title: 'رخداد: {itemTitle}', + message: '{itemKey} فعال شده و نیاز به تأیید دریافت دارد' + } + } +}; diff --git a/frontend/src/lib/locales/fa/index.js b/frontend/src/lib/locales/fa/index.js new file mode 100644 index 000000000..2fa476f71 --- /dev/null +++ b/frontend/src/lib/locales/fa/index.js @@ -0,0 +1,53 @@ +/** + * Persian (fa) translations - Aggregated module + * RTL language - Right-to-left text direction + */ + +import { createLocale } from '../createLocale.js'; +import actions from './actions.js'; +import admin from './admin.js'; +import analytics from './analytics.js'; +import auth from './auth.js'; +import channels from './channels.js'; +import common from './common.js'; +import logbook from './logbook.js'; +import misc from './misc.js'; +import navigation from './navigation.js'; +import teams from './teams.js'; +import testing from './testing.js'; +import time from './time.js'; +import ui from './ui.js'; +import workflows from './workflows.js'; +import workspace from './workspace.js'; +import pages from './pages.js'; +import adminOperations from './adminOperations.js'; +import agents from './agents.js'; +import dashboard from './dashboard.js'; +import zammad from './zammad.js'; +import mobile from './mobile.js'; +import email from './email.js'; + +export default createLocale({ + common, + auth, + workspace, + admin, + testing, + time, + channels, + workflows, + ui, + navigation, + misc, + actions, + logbook, + analytics, + teams, + pages, + adminOperations, + agents, + dashboard, + zammad, + mobile, + email, +}); diff --git a/frontend/src/lib/locales/fa/logbook.js b/frontend/src/lib/locales/fa/logbook.js new file mode 100644 index 000000000..280fe29c3 --- /dev/null +++ b/frontend/src/lib/locales/fa/logbook.js @@ -0,0 +1,75 @@ +export default { + "logbook": { + "title": "پایگاه دانش", + "subtitle": "اسناد، یادداشت ها و دانش تیم", + "allDocuments": "تمام اسناد", + "createBucket": "ایجاد سبد", + "uploadDocument": "بارگذاری سند", + "newNote": "یادداشت جدید", + "noDocuments": "هنوز هیچ سندی وجود ندارد", + "noDocumentsDescription": "برای شروع یک فایل آپلود کنید یا یادداشتی ایجاد کنید", + "noDocumentsAllDescription": "هیچ سندی در سبد های قابل دسترس شما یافت نشد", + "noBuckets": "هنوز سبد وجود ندارد", + "noBucketsDescription": "یک سبد برای سازماندهی دانش خود ایجاد کنید", + "search": "جستجوی اسناد...", + "article": "مقاله", + "rawContent": "محتوای خام", + "info": "اطلاعات", + "back": "برگشت", + "save": "ذخیره کنید", + "saving": "در حال ذخیره...", + "saved": "سند ذخیره شد", + "uploadSuccess": "سند با موفقیت بارگذاری شد", + "noteCreated": "یادداشت با موفقیت ایجاد شد", + "bucketCreated": "سبد با موفقیت ایجاد شد", + "bucketUpdated": "سبد به روز شد", + "bucketDeleted": "سبد حذف شد", + "confirmDeleteBucket": "آیا مطمئن هستید که می خواهید این سبد را حذف کنید؟ تمام اسناد موجود در آن بایگانی می شود.", + "documentArchived": "سند بایگانی شد", + "documentDeleted": "سند حذف شد", + "confirmDelete": "آیا مطمئن هستید که می خواهید این سند را حذف کنید؟", + "confirmArchiveDocument": "آیا مطمئن هستید که می خواهید این سند را بایگانی کنید؟", + "viewOriginal": "مشاهده اصل", + "delete": "حذف کنید", + "bucketName": "نام سبد", + "bucketNamePlaceholder": "به عنوان مثال اسناد مهندسی", + "bucketDescription": "توضیحات", + "bucketDescriptionPlaceholder": "چه نوع اسنادی به اینجا تعلق دارد؟", + "noteTitle": "عنوان", + "noteTitlePlaceholder": "عنوان یادداشت", + "noteContent": "محتوا", + "noteContentPlaceholder": "یادداشت خود را با علامت گذاری بنویسید...", + "dropzoneTitle": "فایل ها را اینجا رها کنید", + "dropzoneDescription": "یا برای مرور کلیک کنید. از PDF، DOCX، PPTX، XLSX، TXT، MD، HTML و تصاویر پشتیبانی می‌کند.", + "uploading": "در حال آپلود...", + "documentTitle": "عنوان سند", + "documentTitlePlaceholder": "اختیاری - پیش فرض نام فایل است", + "status": { + "pending": "در انتظار", + "processing": "پردازش", + "ready": "آماده است", + "error": "خطا" + }, + "sourceType": { + "upload": "آپلود کنید", + "note": "یادداشت", + "email": "ایمیل" + }, + "contentType": { + "knowledge": "دانش", + "record": "سابقه", + "correspondence": "مکاتبه" + }, + "mimeType": "نوع فایل", + "contentHash": "هش محتوا", + "retrievalCount": "بارها بازیابی شد", + "chunkCount": "تکه ها", + "createdAt": "ایجاد شد", + "updatedAt": "به روز شد", + "reviewedAt": "بررسی شد", + "health": "سلامتی", + "author": "نویسنده", + "processingMessage": "سند در حال پردازش است...", + "runAction": "اکشن را اجرا کنید" + } +}; diff --git a/frontend/src/lib/locales/fa/misc.js b/frontend/src/lib/locales/fa/misc.js new file mode 100644 index 000000000..0dc91229a --- /dev/null +++ b/frontend/src/lib/locales/fa/misc.js @@ -0,0 +1,842 @@ +export default { + "jiraImport": { + "title": { + "cloud": "وارد کردن Jira Cloud", + "datacenter": "وارد کردن Jira Data Center" + }, + "subtitle": { + "cloud": "موارد کاری را از Jira Cloud وارد کنید", + "datacenter": "موارد کاری را از مرکز داده Jira وارد کنید" + }, + "steps": { + "connect": "اتصال", + "projects": "پروژه ها", + "xray": "Xray", + "mapping": "نگاشت", + "preview": "پیش نمایش", + "import": "درون‌ریزی" + }, + "deploymentType": { + "cloud": "Jira Cloud", + "cloudDesc": "*.atlassian.net", + "datacenter": "مرکز داده", + "datacenterDesc": "خود میزبان" + }, + "form": { + "urlCloud": "نشانی Jira Cloud", + "urlDatacenter": "نشانی Jira Data Center", + "email": "آدرس ایمیل", + "username": "نام کاربری", + "apiToken": "توکن API", + "personalAccessToken": "توکن دسترسی شخصی", + "generateToken": "یک توکن تولید کنید", + "tokenHelpCloud": "از تنظیمات حساب Atlassian شما", + "tokenHelpDatacenter": "یک رمز دسترسی شخصی در تنظیمات نمایه Jira خود ایجاد کنید" + }, + "buttons": { + "connect": "اتصال", + "continue": "ادامه دهید", + "analyzeAndConfigure": "تجزیه و تحلیل و پیکربندی", + "startImport": "درون‌ریزی را شروع کنید", + "done": "انجام شد", + "back": "برگشت", + "cancel": "لغو کنید", + "selectAll": "همه را انتخاب کنید", + "deselectAll": "همه را لغو انتخاب کنید", + "addNewConnection": "افزودن اتصال جدید", + "useExisting": "از موجود استفاده کنید", + "retryImport": "وارد کردن را دوباره امتحان کنید" + }, + "messages": { + "connected": "متصل به {name}", + "selectConnection": "یک اتصال موجود را انتخاب کنید یا یک اتصال جدید ایجاد کنید", + "credentialsHelpCloud": "اطلاعات کاربری Cloud Jira خود را وارد کنید. شما می توانید یک توکن API را از تنظیمات حساب Atlassian خود ایجاد کنید.", + "credentialsHelpDatacenter": "یک رمز دسترسی شخصی از تنظیمات نمایه مرکز داده Jira خود وارد کنید.", + "reviewSummary": "قبل از ادامه، خلاصه درون‌ریزی را مرور کنید. این عملیات ممکن است برای پروژه های بزرگ چند دقیقه طول بکشد.", + "noAttachments": "پیوست ها وارد نمی شوند", + "noAttachmentsDesc": "هیچ ذخیره سازی پیوستی پیکربندی نشده است. هنگام راه‌اندازی سرور، پارامتر --attachment-path را برای فعال کردن درون‌ریزی پیوست تنظیم کنید." + }, + "projects": { + "selected": "انتخاب پروژه‌ها برای وارد کردن ({selected} از {total} انتخاب شده)", + "openIssuesOnly": "فقط مسائل باز را وارد کنید", + "openIssuesOnlyDesc": "مسائل مربوط به دسته وضعیت «انجام شد» را شامل نمی‌شود", + "teamManaged": "تیمی", + "issues": "{count} مسئله" + }, + "mapping": { + "workspaces": "فضاهای کاری", + "workspacesDesc": "هر پروژه Jira به یک فضای کاری جدید یا موجود Windshift وارد می شود", + "createNewWorkspace": "یک فضای کاری جدید ایجاد کنید", + "issueTypes": "انواع مسئله", + "issueTypesDesc": "هر نوع مسئله Jira را به یک نوع مورد جدید یا موجود Windshift نگاشت کنید", + "createNewItemType": "یک نوع مورد جدید ایجاد کنید", + "statuses": "وضعیت ها", + "statusesDesc": "هر وضعیت Jira را به وضعیت Windshift جدید یا موجود نگاشت کنید", + "createNewStatus": "یک وضعیت جدید ایجاد کنید", + "customFields": "فیلدهای سفارشی", + "customFieldsDesc": "ایجاد کنید، روی یک فیلد موجود نگاشت کنید، یا از هر فیلد سفارشی Jira رد شوید", + "versions": "نسخه ها / نقاط عطف", + "versionsDesc": "نسخه‌های Jira به‌عنوان نقاط عطف فضای کاری وارد خواهند شد.", + "subtask": "وظیفه فرعی", + "create": "ایجاد کنید", + "skip": "رد کردن" + }, + "preview": { + "workspaces": "فضاهای کاری", + "workItems": "اقلام کار", + "statuses": "وضعیت ها", + "itemTypes": "انواع موارد", + "customFields": "فیلدهای سفارشی", + "milestones": "نقاط عطف", + "users": "کاربران", + "usersNew": "({count} جدید)", + "assets": "دارایی ها", + "projectsToImport": "پروژه های درون‌ریزی‌شده" + }, + "import": { + "importing": "درون‌ریزی...", + "starting": "شروع درون‌ریزی...", + "complete": "درون‌ریزی کامل شد!", + "completeWithErrors": "درون‌ریزی با خطا تکمیل شد", + "success": "{count} مورد با موفقیت وارد شد.", + "failed": "{count} مورد وارد نشد.", + "ready": "آماده درون‌ریزی", + "readyDesc": "برای شروع وارد کردن موارد {count} روی «شروع درون‌ریزی» کلیک کنید.", + "progress": "پیشرفت" + }, + "errors": { + "connectionFailed": "اتصال به Jira انجام نشد", + "loadProjectsFailed": "پروژه ها بارگیری نشد", + "analyzeFailed": "تجزیه و تحلیل پروژه ها ناموفق بود", + "importFailed": "وارد کردن شروع نشد", + "loadConnectionsFailed": "اتصالات بارگیری نشد", + "deleteConnectionFailed": "اتصال حذف نشد" + } + }, + "itemTypes": { + "title": "انواع موارد", + "subtitle": "پیکربندی انواع موارد و خواص آنها", + "itemType": "نوع مورد", + "itemTypes_one": "{count} نوع مورد", + "itemTypes_other": "{count} نوع مورد", + "createItemType": "ایجاد نوع مورد", + "editItemType": "نوع مورد را ویرایش کنید", + "deleteItemType": "حذف نوع مورد", + "typeName": "نام نوع", + "noItemTypes": "هیچ نوع موردی یافت نشد", + "itemTypeCreated": "نوع مورد با موفقیت ایجاد شد", + "itemTypeUpdated": "نوع مورد با موفقیت به روز شد", + "itemTypeDeleted": "نوع مورد با موفقیت حذف شد" + }, + "fields": { + "title": "فیلدهای سفارشی", + "requestFormFields": "فیلدهای فرم درخواست", + "subtitle": "فیلدهای سفارشی را برای اقلام خود تعریف کنید", + "field": "فیلد", + "fields_one": "فیلد {count}", + "fields_other": "{count} فیلد", + "createField": "ایجاد فیلد", + "editField": "ویرایش فیلد", + "deleteField": "حذف فیلد", + "returnToBoard": "بازگشت به فیلدهای برد", + "fieldName": "نام فیلد", + "fieldType": "نوع فیلد", + "fieldDescription": "توضیحات", + "defaultValue": "مقدار پیش فرض", + "placeholder": "جای‌نگهدار", + "helpText": "متن راهنما", + "noFields": "هیچ فیلدی پیدا نشد", + "fieldCreated": "فیلد با موفقیت ایجاد شد", + "fieldUpdated": "فیلد با موفقیت به روز شد", + "fieldDeleted": "فیلد با موفقیت حذف شد", + "configureFields": "فیلدها را پیکربندی کنید", + "searchFields": "فیلدهای جستجو...", + "indexSettings": "تنظیمات فهرست", + "text": "متن", + "number": "شماره", + "date": "تاریخ", + "datetime": "تاریخ و زمان", + "select": "انتخاب کنید", + "multiSelect": "چند انتخاب کنید", + "checkbox": "چک باکس", + "user": "کاربر", + "url": "URL", + "milestoneHint": "فیلدهای نقطه عطف به‌طور خودکار به نقاط عطف سیستم اشاره می‌کنند. هنگام پر کردن این فیلد، کاربران می‌توانند از نقاط عطف موجود انتخاب کنند.", + "dateHint": "فیلدهای تاریخ به کاربران امکان می دهد با استفاده از انتخابگر تاریخ، تاریخ ها را انتخاب کنند. مقادیر در قالب YYYY-MM-DD ذخیره می شوند.", + "assetHint": "فیلدهای دارایی به کاربران امکان می‌دهند دارایی‌ها را از یک مجموعه دارایی مشخص انتخاب کنند. می‌توانید به‌صورت اختیاری دارایی‌های موجود را با یک پرس‌وجوی QL فیلتر کنید.", + "portalCustomerHint": "فیلدهای مشتری پورتال به مشتریان پورتال اشاره می‌کنند. در گزارش‌های دارایی از currentCustomer() برای فیلتر بر اساس مشتری پورتال واردشده استفاده کنید.", + "customerOrganisationHint": "فیلدهای سازمان مشتری به سازمان‌های مشتری اشاره می‌کنند. در گزارش‌های دارایی از currentOrganisation() برای فیلتر بر اساس سازمان مشتری استفاده کنید.", + "usedIn": "استفاده شده در", + "portalCustomers": "مشتریان پورتال", + "customerOrganisations": "سازمان های مشتری" + }, + "categories": { + "title": "دسته بندی ها", + "subtitle": "دسته ها را مدیریت کنید", + "category": "دسته بندی", + "categories_one": "دسته {count}", + "categories_other": "{count} دسته", + "createCategory": "ایجاد دسته", + "editCategory": "ویرایش دسته", + "deleteCategory": "حذف دسته", + "categoryName": "نام دسته", + "noCategories": "هیچ دسته ای یافت نشد", + "noCategorizedWork": "هنوز کار دسته بندی شده ای وجود ندارد", + "categoryCreated": "دسته با موفقیت ایجاد شد", + "categoryUpdated": "دسته با موفقیت به روز شد", + "categoryDeleted": "دسته با موفقیت حذف شد", + "deleteWarning": "اقلام این دسته دسته بندی نمی شوند", + "selectCategory": "دسته را انتخاب کنید", + "uncategorized": "دسته بندی نشده", + "addNewCategory": "اضافه کردن دسته جدید", + "addCategory": "اضافه کردن دسته", + "categoryNamePlaceholder": "نام دسته ...", + "existingCategories": "دسته بندی های موجود", + "confirmDeleteCategory": "دسته \"{name}\" حذف شود؟ اقلام این دسته دسته بندی نمی شوند.", + "failedToDeleteCategory": "دسته بندی حذف نشد. ممکن است هنوز در حال استفاده باشد.", + "noCategoriesYet": "هنوز هیچ دسته ای وجود ندارد", + "addFirstCategoryHint": "دسته اول خود را در بالا اضافه کنید." + }, + "projects": { + "title": "پروژه ها", + "subtitle": "پروژه های خود را مدیریت کنید", + "project": "پروژه", + "projects_one": "پروژه {count}", + "projects_other": "{count} پروژه", + "createProject": "ایجاد پروژه", + "editProject": "ویرایش پروژه", + "deleteProject": "حذف پروژه", + "projectName": "نام پروژه", + "projectKey": "کلید پروژه", + "noProjects": "هیچ پروژه ای یافت نشد", + "searchProjects": "جستجوی پروژه ها...", + "loadingProjects": "در حال بارگیری پروژه ها...", + "projectCreated": "پروژه با موفقیت ایجاد شد", + "projectUpdated": "پروژه با موفقیت به روز شد", + "projectDeleted": "پروژه با موفقیت حذف شد" + }, + "iterations": { + "title": "تکرارها", + "subtitle": "تکرارها و نسخه ها را مدیریت کنید", + "iteration": "تکرار", + "iterations_one": "{count} تکرار", + "iterations_other": "{count} تکرار", + "createIteration": "تکرار ایجاد کنید", + "editIteration": "ویرایش تکرار", + "updateIteration": "به روز رسانی تکرار", + "deleteIteration": "تکرار را حذف کنید", + "startIteration": "تکرار را شروع کنید", + "completeIteration": "تکرار کامل", + "start": "شروع کنید", + "noIterations": "هیچ تکرار موردی یافت نشد", + "allTypes": "همه انواع", + "manageTypes": "مدیریت انواع", + "backToIterations": "بازگشت به تکرار", + "filterByIteration": "با تکرار فیلتر کنید", + "addGlobalIteration": "تکرار اضافه کنید", + "showCompletedIterations": "نمایش تکرارهای تکمیل شده", + "status": { + "planned": "برنامه ریزی شده است", + "active": "فعال", + "completed": "تکمیل شد", + "cancelled": "لغو شد" + }, + "statusPlanned": "برنامه ریزی شده است", + "statusActive": "فعال", + "statusCompleted": "تکمیل شد", + "statusCancelled": "لغو شد", + "global": "جهانی", + "local": "محلی", + "thisWorkspace": "این فضای کاری", + "globalIteration": "تکرار جهانی", + "globalIterations": "تکرارهای جهانی", + "globalIterationDescription": "قابل مشاهده در تمام فضاهای کاری", + "localIteration": "تکرار محلی", + "localIterations": "تکرارهای محلی", + "localIterationDescription": "فقط در این فضای کاری قابل مشاهده است", + "switchTo": "تغییر به {scope}", + "scope": "دامنه", + "daysOverdue": "{count} روز تاخیر", + "endsToday": "امروز به پایان می رسد", + "oneDayRemaining": "1 روز باقی مانده است", + "daysRemaining": "{count} روز باقی مانده است", + "overdue": "عقب افتاده", + "complete": "کامل", + "dateRange": "محدوده تاریخ", + "startDate": "تاریخ شروع", + "endDate": "تاریخ پایان", + "burndownChart": "نمودار برن‌داون", + "idealProgress": "مطلوب", + "ideal": "مطلوب", + "noBurndownData": "داده برن‌داونی موجود نیست", + "noItems": "هیچ موردی وجود ندارد", + "summary": "خلاصه", + "totalItems": "مجموع اقلام", + "completed": "تکمیل شد", + "remaining": "باقی مانده است", + "byStatusCategory": "بر اساس دسته وضعیت", + "noStatusData": "داده وضعیت وجود ندارد", + "workItems": "اقلام کار", + "noItemsAssigned": "هیچ موردی اختصاص داده نشده است", + "assignItemsHint": "برای پیگیری پیشرفت، موارد کاری را به این تکرار اختصاص دهید", + "iterationName": "نام تکرار", + "iterationNamePlaceholder": "e.g., Sprint 1, Q1 2025, Release 2.0", + "iterationDescriptionPlaceholder": "توضیحات یا اهداف اختیاری برای این تکرار", + "descriptionPlaceholder": "توضیحات اختیاری", + "selectStatus": "انتخاب وضعیت...", + "selectType": "انتخاب نوع...", + "noType": "بدون نوع", + "iterationNameRequired": "نام تکرار مورد نیاز است", + "startDateRequired": "تاریخ شروع الزامی است", + "endDateRequired": "تاریخ پایان الزامی است", + "endDateMustBeAfterStart": "تاریخ پایان باید بعد از تاریخ شروع باشد", + "typeRequired": "نوع تکرار مورد نیاز است", + "failedToSaveIteration": "تکرار ذخیره نشد", + "confirmDelete": "آیا مطمئن هستید که می خواهید تکرار \"{name}\" را حذف کنید؟", + "completeIterationConfirm": "تکرار \"{name}\" کامل شود؟", + "iterationStarted": "تکرار \"{name}\" شروع شد", + "iterationCompleted": "تکرار \"{name}\" تکمیل شد", + "activeScopeWarning": "تغییر محدوده یک تکرار فعال توصیه نمی شود", + "itemsDone": "{count} مورد انجام شد", + "itemsIncomplete": "{count} ناقص است", + "allItemsDone": "همه موارد انجام شده است!", + "moveToBacklog": "انتقال به بک‌لاگ", + "moveToIteration": "به تکرار دیگری بروید", + "incompleteItemsAction": "موارد ناقص:" + }, + "milestones": { + "title": "نقاط عطف", + "milestone": "نقطه عطف", + "subtitle": "انتشارها و مهلت‌ها را دنبال کنید", + "addMilestone": "افزودن نقطه عطف", + "noMilestones": "هنوز هیچ نقطه عطفی وجود ندارد", + "noMilestonesDescription": "اولین نقطه عطف خود را برای ردیابی نسخه ها و مهلت‌ها ایجاد کنید.", + "noMilestonesInCategory": "هیچ نقطه عطفی در این دسته وجود ندارد", + "allCategories": "همه دسته ها", + "manageCategories": "مدیریت دسته ها", + "allMilestones": "همه نقاط عطف", + "workspaceMilestones": "نقاط عطف فضای کاری", + "status": { + "planning": "برنامه ریزی", + "inProgress": "در حال انجام است", + "completed": "تکمیل شد", + "cancelled": "لغو شد" + }, + "daysOverdue": "{count} روز تاخیر", + "dueToday": "سررسید امروز", + "oneDayRemaining": "1 روز باقی مانده است", + "daysRemaining": "{count} روز باقی مانده است", + "confirmDelete": "آیا مطمئن هستید که می خواهید نقطه عطف \"{name}\" را حذف کنید؟", + "complete": "کامل", + "noItems": "هیچ موردی وجود ندارد", + "byStatusCategory": "بر اساس دسته وضعیت", + "noStatusData": "داده وضعیت وجود ندارد", + "workItems": "اقلام کار", + "noItemsAssigned": "هیچ موردی اختصاص داده نشده است", + "assignItemsHint": "برای پیگیری پیشرفت، موارد کاری را به این نقطه عطف اختصاص دهید", + "milestoneName": "نام نقطه عطف", + "milestoneNamePlaceholder": "به عنوان مثال، نسخه Q1، راه اندازی بتا", + "targetDate": "تاریخ هدف", + "selectStatus": "انتخاب وضعیت...", + "descriptionPlaceholder": "شرح اختیاری این نقطه عطف", + "noCategory": "بدون دسته", + "overdue": "عقب افتاده", + "openEnded": "پایان باز", + "scope": "دامنه", + "global": "جهانی", + "local": "محلی", + "globalMilestone": "نقطه عطف جهانی", + "globalMilestones": "نقاط عطف جهانی", + "globalMilestoneDescription": "قابل مشاهده در تمام فضاهای کاری", + "localMilestone": "نقطه عطف محلی", + "localMilestones": "نقاط عطف محلی", + "localMilestoneDescription": "فقط در این فضای کاری قابل مشاهده است", + "switchTo": "تغییر به {scope}", + "workspace": "فضای کار", + "selectWorkspace": "فضای کاری را انتخاب کنید", + "manageMilestoneCategories": "دسته‌های نقطه عطف را مدیریت کنید", + "hideCompleted": "پنهان کردن تکمیل‌شده‌ها", + "hideCompletedHelp": "نقاط عطف تکمیل شده را از لیست پنهان کنید", + "noVisibleMilestones": "هیچ نقطه عطف قابل مشاهده ای وجود ندارد", + "dragToReorder": "برای جابه‌جایی بکشید", + "searchMilestones": "نقاط عطف جستجو...", + "allWorkspaces": "تمام فضاهای کاری", + "workspaceFilterCount": "فضاهای کاری: {count}", + "allStatuses": "همه وضعیت ها", + "statusFilterCount": "وضعیت ها: {count}", + "noMatchingMilestones": "هیچ نقطه عطفی با فیلترها مطابقت ندارد", + "noMatchingMilestonesDescription": "فیلترها را تغییر دهید تا نقاط عطف بیشتری را ببینید.", + "clearFilters": "فیلترها را پاک کنید", + "activity": { + "tabOverview": "نمای کلی", + "tabActivity": "فعالیت", + "empty": "هنوز هیچ فعالیتی وجود ندارد", + "system": "سیستم", + "someone": "کسی", + "none": "هیچ کدام", + "commentedOnMilestone": "در مورد نقطه عطف نظر داد", + "changedDescription": "توضیحات را تغییر داد", + "changedStatus": "وضعیت را از {from} به {to} تغییر داد", + "changedTargetDate": "تاریخ هدف را از {from} به {to} تغییر داد", + "linkedPage": "صفحه را پیوند کرد", + "unlinkedPage": "پیوند صفحه را لغو کرد", + "commentedOn": "نظر داد", + "changedItemStatus": "تغییر وضعیت داد", + "fromTo": "از {from} تا {to}", + "added": "اضافه شد", + "toMilestone": "به نقطه عطف", + "removed": "حذف شده است", + "fromMilestone": "از نقطه عطف" + }, + "columnStatus": "وضعیت", + "columnMilestone": "نقطه عطف", + "columnTargetDate": "تاریخ هدف", + "columnTimeline": "جدول زمانی", + "columnTests": "تست ها", + "columnCreated": "ایجاد شد", + "columnUpdated": "به روز شد", + "visibleCount": "{count} نقطه عطف", + "visibleCount_one": "{count} نقطه عطف", + "visibleCount_other": "{count} نقاط عطف", + "visibleInCategory": "{count} نقطه عطف در این دسته", + "visibleInCategory_one": "{count} نقطه عطف در این دسته", + "visibleInCategory_other": "{count} نقاط عطف در این دسته" + }, + "assets": { + "title": "مدیریت دارایی", + "subtitle": "مجموعه‌ها، انواع، دسته‌ها و دارایی‌ها را مدیریت کنید", + "selectAssetSet": "مجموعه دارایی را انتخاب کنید", + "newSet": "مجموعه جدید", + "createAssetSet": "ایجاد مجموعه دارایی", + "editSet": "ویرایش مجموعه", + "deleteSet": "حذف مجموعه", + "noAssetSets": "بدون مجموعه دارایی", + "noAssetSetsDesc": "اولین مجموعه دارایی خود را برای شروع مدیریت دارایی ها ایجاد کنید.", + "selectAnAssetSet": "یک مجموعه دارایی را انتخاب کنید", + "selectAnAssetSetDesc": "برای مشاهده و مدیریت دارایی ها، یک مجموعه دارایی را از منوی کشویی بالا انتخاب کنید.", + "default": "پیش فرض", + "availableOnPortals": "در پورتال ها موجود است", + "availableOnPortalsDesc": "به بازدیدکنندگان پورتال اجازه دهید دارایی های این مجموعه را از طریق گزارش پورتالی که به آن ارجاع می دهد بخوانند.", + "assetTag": "برچسب دارایی", + "preview": "پیش نمایش", + "serialNumber": "شماره سریال", + "types": "انواع", + "categories": "دسته بندی ها", + "permissions": "مجوزها", + "automations": "اتوماسیون ها", + "newType": "نوع جدید", + "createType": "نوع ایجاد کنید", + "editType": "ویرایش نوع", + "noAssetTypes": "بدون انواع دارایی", + "noAssetTypesDesc": "انواع دارایی را برای دسته بندی دارایی های خود ایجاد کنید.", + "assetType": "نوع دارایی", + "newCategory": "دسته بندی جدید", + "createCategory": "ایجاد دسته", + "editCategory": "ویرایش دسته", + "noCategories": "بدون دسته بندی", + "noCategoriesDesc": "دسته بندی ایجاد کنید تا دارایی های خود را سازماندهی کنید.", + "parentCategory": "دسته والد", + "noParent": "بدون والد (سطح ریشه)", + "assignRole": "تعیین نقش", + "everyoneRole": "نقش همه", + "everyoneRoleDesc": "نقش پیش‌فرض برای همه کاربران. تخصیص‌های فردی این را نادیده می‌گیرد.", + "noRoleAssignments": "بدون انتساب نقش", + "noRoleAssignmentsDesc": "تخصیص نقش را برای کنترل افرادی که می توانند به این مجموعه دارایی دسترسی داشته باشند اضافه کنید.", + "assignee": "مسئول", + "role": "نقش", + "failedToDownload": "فایل دانلود نشد", + "hideFromCustomer": "از مشتری پنهان شود", + "showToCustomer": "به مشتری نشان دهید", + "editDiagram": "ویرایش نمودار", + "untitledDiagram": "نمودار بدون عنوان", + "diagram": "نمودار", + "uploadedBy": "آپلود شده توسط {name}", + "zoomOut": "کوچک‌نمایی (-)", + "zoomIn": "بزرگنمایی (+)", + "rotate": "چرخش (R)", + "fitToScreen": "متناسب با صفحه (F)", + "shortcutScroll": "اسکرول: بزرگنمایی", + "shortcutDrag": "کشیدن: حرکت", + "shortcutRotate": "R: چرخش", + "shortcutFit": "F: مناسب", + "shortcutReset": "0: بازنشانی", + "shortcutClose": "Esc: بستن" + }, + "personal": { + "myTasks": "وظایف من", + "reviews": "بررسی ها", + "weeklyCalendar": "تقویم هفتگی", + "personalTasks": "وظایف شخصی", + "addPersonalTask": "کار شخصی را اضافه کنید", + "noPersonalWorkspace": "هیچ فضای کاری شخصی یافت نشد", + "taskTitlePlaceholder": "عنوان وظیفه...", + "noTasksYet": "هنوز هیچ تکلیفی وجود ندارد", + "noOpenTasks": "بدون کار باز", + "markIncomplete": "علامت گذاری به عنوان ناقص", + "markComplete": "علامت گذاری کامل", + "openTask": "وظیفه را باز کنید", + "unlinkTask": "لغو پیوند کار", + "setDueDate": "تاریخ سررسید را تعیین کنید", + "comments": "نظرات", + "personalReview": "بررسی شخصی", + "today": "امروز", + "daily": "روزانه", + "weekly": "هفتگی", + "dailyReview": "بررسی روزانه", + "weeklyReview": "بررسی هفتگی", + "recentReviews": "بررسی های اخیر", + "noPreviousReviews": "هیچ بررسی قبلی یافت نشد", + "exitFocusMode": "خروج از حالت فوکوس", + "enterFocusMode": "وارد حالت فوکوس شوید", + "saveReview": "ذخیره مرور", + "completedToday": "امروز تکمیل شد", + "completedThisWeek": "این هفته تکمیل شد", + "loadingCompletedItems": "در حال بارگیری موارد تکمیل شده...", + "noCompletedItemsDay": "هیچ مورد تکمیل شده برای این روز وجود ندارد", + "noCompletedItemsWeek": "هیچ مورد کاملی برای این هفته وجود ندارد", + "reflection": "انعکاس", + "whatAccomplished": "امروز چه کاری انجام دادم؟", + "whatWentWell": "امروز چی خوب شد؟", + "whatImprove": "فردا چه چیزی را می توانم بهبود بخشم؟", + "weeklyAccomplishments": "این هفته چه کارهایی انجام دادیم؟", + "weeklyChallenges": "با چه چالش هایی روبرو بودیم؟", + "weeklyPriorities": "اولویت های ما برای هفته آینده چیست؟", + "placeholderAccomplishments": "دستاوردهای کلیدی خود را شرح دهید ...", + "placeholderWentWell": "چه چیزی خوب شد و چرا ...", + "placeholderImprovements": "زمینه های بهبود و گام های بعدی ...", + "startWriting": "شروع به نوشتن بازتاب خود کنید..." + }, + "connections": { + "title": "اتصالات", + "subtitle": "ادغام های خارجی را مدیریت کنید", + "connection": "اتصال", + "createConnection": "ایجاد اتصال", + "editConnection": "ویرایش اتصال", + "deleteConnection": "اتصال را حذف کنید", + "connectionType": "نوع اتصال", + "noConnections": "هیچ اتصالی یافت نشد", + "connectionCreated": "اتصال با موفقیت ایجاد شد", + "connectionUpdated": "اتصال با موفقیت به روز شد", + "connectionDeleted": "اتصال حذف شد", + "connectionSuccessful": "اتصال با موفقیت انجام شد", + "testConnection": "تست اتصال" + }, + "migration": { + "title": "مهاجرت", + "subtitle": "انتقال داده ها بین سیستم ها", + "migrateConfiguration": "پیکربندی مهاجرت", + "migrationCompleted": "مهاجرت به پایان رسید", + "migrationSuccess": "همه موارد با موفقیت منتقل شدند", + "targetWorkspace": "فضای کاری را هدف قرار دهید", + "targetWorkspaceRequired": "فضای کاری هدف مورد نیاز است" + }, + "members": { + "title": "اعضا", + "subtitle": "اعضای تیم را مدیریت کنید", + "addMember": "اضافه کردن عضو", + "removeMember": "حذف عضو", + "searchMembers": "جستجوی اعضا بر اساس نام یا ایمیل..." + }, + "configuration": { + "title": "پیکربندی", + "searchConfigurationSets": "مجموعه های پیکربندی جستجو..." + }, + "migrationAssistant": { + "configSetMigration": "تنظیمات پیکربندی مهاجرت", + "workflowMigration": "دستیار مهاجرت گردش کار", + "migratingFrom": "مهاجرت از", + "to": "به", + "configurationSet": "مجموعه پیکربندی", + "analyzingMigration": "تجزیه و تحلیل الزامات مهاجرت ...", + "analysisFailed": "تجزیه و تحلیل ناموفق بود", + "noMigrationRequired": "بدون نیاز به مهاجرت", + "allItemsCompatible": "همه موارد ({count}) با پیکربندی جدید سازگار هستند.", + "migrationRequired": "مهاجرت مورد نیاز است", + "itemsNeedMigration": "{count} مورد نیازمند انتقال است. لطفاً نگاشت‌های زیر را بررسی کنید.", + "itemTypes": "انواع موارد", + "fields": "فیلدها", + "status": "وضعیت", + "priority": "اولویت", + "itemTypeMigrations": "مهاجرت های نوع مورد", + "customFieldChanges": "تغییرات فیلد سفارشی", + "statusMigrations": "مهاجرت های وضعیت", + "priorityMigrations": "مهاجرت های اولویت دار", + "noItemsToMigrate": "هیچ موردی برای مهاجرت وجود ندارد.", + "noStatusChanges": "هیچ تغییر وضعیتی شناسایی نشد.", + "noFieldChanges": "هیچ تغییری در فیلد شناسایی نشد.", + "selectTargetType": "انتخاب نوع هدف...", + "selectTargetStatus": "انتخاب وضعیت هدف...", + "selectTargetPriority": "اولویت هدف را انتخاب کنید...", + "compatible": "سازگار است", + "requiresMigration": "نیاز به مهاجرت دارد", + "item": "مورد", + "items": "موارد", + "kept": "نگهداری می شود", + "values": "مقادیر", + "hiddenDataPreserved": "پنهان (داده ها حفظ می شوند)", + "newRequiredField": "فیلد الزامی جدید", + "enterDefaultValue": "مقدار پیش فرض را وارد کنید...", + "executeMigration": "مهاجرت را اجرا کنید", + "migrating": "مهاجرت...", + "migrationCompleted": "مهاجرت به پایان رسید", + "allItemsMigrated": "همه موارد با موفقیت منتقل شدند.", + "pleaseSelectTargetStatuses": "لطفاً وضعیت های هدف را برای همه مواردی که نیاز به انتقال دارند انتخاب کنید.", + "pleaseSelectTargetItemTypes": "لطفاً انواع مورد هدف را برای همه مواردی که نیاز به انتقال دارند انتخاب کنید.", + "pleaseProvideDefaultValues": "لطفاً مقادیر پیش‌فرض را برای تمام فیلدهای ضروری جدید ارائه دهید.", + "pleaseSelectTargetPriorities": "لطفاً اولویت های هدف را برای همه مواردی که نیاز به انتقال دارند انتخاب کنید." + }, + "setup": { + "chooseLanguage": "زبان خود را انتخاب کنید", + "chooseLanguageDesc": "زبان مورد استفاده در حین راه اندازی و در برنامه را انتخاب کنید.", + "language": "زبان", + "welcomeTo": "به {appName} خوش آمدید", + "setupMessage": "بیایید سیستم مدیریت کار شما را راه اندازی کنیم", + "setupProgress": "پیشرفت راه اندازی", + "step": "مرحله", + "of": "از", + "createAdminAccount": "ایجاد حساب مدیر", + "adminAccountDesc": "این حساب برای مدیریت نصب {appName} شما دسترسی کامل خواهد داشت.", + "firstName": "نام", + "lastName": "نام خانوادگی", + "emailAddress": "آدرس ایمیل", + "username": "نام کاربری", + "password": "رمز عبور", + "confirmPassword": "رمز عبور را تایید کنید", + "configureModules": "پیکربندی ماژول ها", + "configureModulesDesc": "انتخاب کنید کدام ماژول ها فعال شوند. بعداً می توانید این تنظیمات را تغییر دهید.", + "testManagement": "مدیریت آزمون", + "testManagementDesc": "موارد تست، اجراهای آزمایشی و تضمین کیفیت را مدیریت کنید", + "setupComplete": "راه اندازی کامل شد!", + "setupCompleteMessage": "{appName} آماده استفاده است. به زودی به برنامه هدایت خواهید شد.", + "whatsNext": "بعد چه می شود؟", + "whatsNextCreateWorkspace": "اولین فضای کاری خود را ایجاد کنید", + "whatsNextSetupWorkflows": "گردش کار و صفحه نمایش را تنظیم کنید", + "whatsNextInviteTeam": "اعضای تیم را دعوت کنید", + "whatsNextStartCreating": "شروع به ایجاد مواردی کاری کنید", + "back": "برگشت", + "next": "بعدی", + "completeSetup": "راه اندازی کامل", + "settingUp": "راه اندازی...", + "fillAllRequired": "لطفا تمام فیلدهای الزامی را پر کنید", + "passwordsMustMatch": "گذرواژه ها مطابقت ندارند", + "invalidEmail": "لطفا یک آدرس ایمیل معتبر وارد کنید", + "setupError": "در حین راه اندازی خطایی روی داد. لطفا دوباره امتحان کنید.", + "goBackEsc": "برگشت (Esc)", + "continueNextStepEnter": "ادامه به مرحله بعدی (Enter)", + "completeSetupEnter": "راه اندازی کامل (Enter)" + }, + "createModal": { + "workItem": "مورد کار", + "team": "تیم", + "milestone": "نقطه عطف", + "workspace": "فضای کار", + "collection": "مجموعه", + "planning": "برنامه ریزی", + "inProgress": "در حال انجام است", + "completed": "تکمیل شد", + "cancelled": "لغو شد", + "newChildItem": "مورد فرزند جدید", + "new": "جدید", + "issueTitle": "عنوان مسئله", + "milestoneName": "نام نقطه عطف", + "workspaceName": "نام {type}", + "workspaceKeyPlaceholder": "کلید فضای کاری (به عنوان مثال، PROJ، TEAM)", + "addDescription": "افزودن توضیحات...", + "workspaceTemplate": "الگو", + "workspaceTemplateBlank": "فضای کاری خالی", + "workspaceTemplateLoading": "در حال بارگیری الگوها...", + "workspaceTemplateError": "بارگیری الگوهای فضای کاری انجام نشد", + "workspaceRestrict": "محدود کردن دید", + "workspaceRestrictHint": "فقط شما و افرادی که اختصاص می دهید می توانید این فضای کاری را ببینید", + "workspaceTemplateMeta": "{templates} الگو · {items} مورد", + "workspacePackTemplate": "بسته توکار", + "workspacePackMeta": "v{version} · مجموعه پیکربندی + محتوا", + "workspacePackError": "بسته های داخلی بارگیری نشد", + "type": "نوع", + "template": "الگو", + "priority": "اولویت", + "noPriority": "بدون اولویت", + "assignee": "مسئول", + "unassigned": "اختصاص داده نشده است", + "dueDate": "سررسید", + "milestoneField": "نقطه عطف", + "noMilestone": "بدون نقطه عطف", + "additionalFields": "فیلدهای اضافی", + "targetDate": "تاریخ هدف", + "status": "وضعیت", + "category": "دسته بندی", + "noCategory": "بدون دسته", + "parent": "والد", + "fillRequiredFields": "لطفا فیلدهای الزامی را پر کنید:", + "selectWorkspaceFirst": "ابتدا یک فضای کاری را انتخاب کنید", + "createdPartialError": "مورد ایجاد شد، اما تکمیل آن ناموفق بود: {error}. برای تلاش مجدد، دوباره ایجاد را بزنید.", + "create": "ایجاد کنید" + }, + "scm": { + "createBranch": "ایجاد شاخه", + "createBranchFor": "ایجاد یک شاخه جدید برای {itemKey}", + "repository": "مخزن", + "selectRepository": "انتخاب یک مخزن...", + "branchName": "نام شاخه", + "baseBranch": "شاخه پایه", + "baseBranchHelp": "شاخه‌ای که از آن ایجاد می‌شود. به‌طور پیش‌فرض شاخه پیش‌فرض مخزن است.", + "creating": "ایجاد...", + "branchCreatedSuccess": "شاخه با موفقیت ایجاد شد", + "noReposLinked": "هیچ مخزن مرتبط با این فضای کاری وجود ندارد", + "linkReposHelp": "پیوند مخازن در تنظیمات فضای کاری → کنترل منبع", + "fillAllRequired": "لطفا تمام فیلدهای الزامی را پر کنید", + "failedToLoadRepos": "بارگیری مخازن انجام نشد", + "failedToCreateBranch": "شاخه ایجاد نشد", + "createPullRequest": "درخواست کشش ایجاد کنید", + "createMergeRequest": "ایجاد درخواست ادغام", + "createPRFrom": "ایجاد درخواست کشش از شاخه: {branch}", + "prTitle": "عنوان درخواست کشش", + "description": "توضیحات", + "baseBranchPR": "شاخه پایه", + "baseBranchPRHelp": "برای استفاده از شاخه پیش فرض مخزن، خالی بگذارید.", + "createPR": "درخواست کشش ایجاد کنید", + "prCreatedSuccess": "درخواست کشش شماره {prNumber} با موفقیت ایجاد شد", + "mrCreatedSuccess": "درخواست ادغام !{prNumber} با موفقیت ایجاد شد", + "failedToCreatePR": "درخواست کشش ایجاد نشد", + "noBranchLink": "پیوند شاخه ای ارائه نشده است", + "linkDevResource": "پیوند منبع توسعه", + "linkDevResourceDesc": "یک درخواست کشش، شاخه یا کامیت را به این مورد متصل کنید", + "type": "نوع", + "pr": "درخواست کشش", + "branch": "شاخه", + "commit": "کامیت", + "prNumber": "شماره درخواست کشش", + "commitSha": "کامیت SHA", + "titleOptional": "عنوان (اختیاری)", + "linkResource": "پیوند منبع", + "linking": "پیوند دادن...", + "failedToCreateLink": "پیوند ایجاد نشد", + "development": "توسعه", + "linkExisting": "منبع موجود را پیوند دهید", + "failedToStartConnection": "شروع اتصال ناموفق بود", + "failedToLoadLinks": "پیوندها بارگیری نشد", + "confirmRemoveLink": "آیا مطمئن هستید که می خواهید این پیوند را حذف کنید؟", + "noRepositoriesLinked": "هیچ مخزن به این فضای کاری مرتبط نیست", + "connectYourAccount": "حساب {provider} خود را وصل کنید", + "connectToCreate": "برای ایجاد شاخه‌ها و درخواست‌های کشش مستقیماً از موارد کاری متصل شوید.", + "connect": "اتصال {provider}", + "noLinksYet": "هنوز لینک توسعه وجود ندارد", + "pullRequests": "درخواست‌های کشش", + "mergeRequests": "درخواست های ادغام", + "branches": "شاخه ها", + "commits": "کامیت‌ها", + "smartCommitsTitle": "کامیت‌های هوشمند را پردازش کنید", + "smartCommitsDescription": "هنگام ادغام، دستورات \"#comment…\" و \"#\" موجود در بدنه درخواست کشش و پیام‌های کامیت آن را اعمال کنید.", + "smartCommitsWarningTitle": "ایمیل‌های committer تأییدنشده پذیرفته می‌شوند", + "smartCommitsWarningBody": "اقدامات کامیت هوشمند با هویت مطابق ایمیل committer گیت اجرا می‌شوند. گیت این فیلد را احراز هویت نمی‌کند و یک مشارکت‌کننده می‌تواند آن را روی هر مقداری تنظیم کند. فقط برای مخازنی که به هر ادغام آن‌ها اعتماد دارید فعال کنید.", + "smartCommitsUpdateFailed": "تنظیمات کامیت‌های هوشمند به‌روزرسانی نشد" + }, + "organization": { + "editOrganization": "ویرایش سازمان", + "newOrganization": "سازمان جدید", + "organizationName": "نام سازمان", + "email": "ایمیل", + "organizationAvatar": "آواتار سازمان", + "customAvatar": "آواتار سفارشی", + "uploadedImage": "تصویر آپلود شده", + "defaultAvatar": "آواتار پیش فرض", + "usingInitials": "با استفاده از حروف اول", + "changeAvatar": "آواتار را تغییر دهید", + "uploadAvatar": "آواتار را آپلود کنید", + "attachmentsRequired": "برای بارگذاری آواتارهای سازمان، پیوست ها باید فعال شوند", + "uploadRecommendation": "توصیه می شود: تصاویر مربعی، حداقل 256x256 پیکسل برای بهترین کیفیت", + "activeOrganization": "سازمان فعال", + "customFields": "فیلدهای سفارشی", + "updateOrganization": "به روز رسانی سازمان", + "createOrganization": "ایجاد سازمان", + "pleaseSelectImage": "لطفا یک فایل تصویری را انتخاب کنید", + "failedToUploadAvatar": "آواتار آپلود نشد" + }, + "integrations": { + "title": "ادغام ها", + "linkPage": "صفحه پیوند", + "searchPages": "جستجوی صفحات...", + "noLinksYet": "هنوز هیچ صفحه پیوندی وجود ندارد", + "connectAccount": "حساب خود را وصل کنید", + "connectToLink": "اتصال به صفحات پیوند", + "connect": "اتصال", + "disconnect": "قطع کن", + "connected": "متصل شد", + "confirmRemoveLink": "این پیوند حذف شود؟", + "confirmDisconnect": "این ادغام قطع شود؟", + "failedToLoadLinks": "پیوندها بارگیری نشد", + "failedToSearch": "جستجوی صفحات انجام نشد", + "refreshed": "پیوند به روز شد", + "linked": "صفحه پیوند داده شد", + "removed": "پیوند حذف شد", + "disconnected": "ادغام قطع شد", + "providerManager": "ارائه دهندگان یکپارچه سازی", + "providerManagerDesc": "ارائه دهندگان ادغام خارجی را پیکربندی کنید", + "addProvider": "ارائه دهنده را اضافه کنید", + "editProvider": "ویرایش ارائه دهنده", + "providerType": "نوع ارائه دهنده", + "oauthClientId": "شناسه مشتری OAuth", + "oauthClientSecret": "راز مشتری OAuth", + "callbackUrl": "URL کالبک", + "callbackUrlHint": "این URL را در تنظیمات برنامه ادغام خود کپی کنید", + "providerConfig": "پیکربندی ارائه دهنده (JSON)", + "notion": "Notion", + "noProviders": "هیچ ارائه دهنده یکپارچه سازی پیکربندی نشده است", + "selectProvider": "ارائه دهنده را انتخاب کنید", + "page": "صفحه", + "database": "پایگاه داده" + }, + "supportQueue": { + "title": "صف", + "description": "تریاژ تخصیص‌نیافته، در انتظار و بلیت‌های بک‌لاگ", + "loading": "در حال بارگیری صف‌ها…", + "loadFailed": "بارگیری صف های پشتیبانی انجام نشد", + "empty": "هیچ بلیطی در این صف وجود ندارد", + "emptyDescription": "بلیط های مطابق با این صف به محض رسیدن اینجا ظاهر می شوند.", + "showingFirst": "نمایش اولین بلیط های {n}", + "selectAll": "همه بلیط ها را انتخاب کنید", + "bulkBar": "{n} انتخاب شد", + "bulkAssignMe": "به من اختصاص دهید", + "bulkAssignTeam": "به تیم اختصاص دهید", + "bulkApplyTeam": "اعمال", + "bulkTransition": "وضعیت را تنظیم کنید", + "bulkApplyStatus": "اعمال", + "bulkDelete": "حذف کنید", + "bulkDeleteConfirm": "{n} بلیط‌های انتخابی حذف شود؟", + "bulkDeleteSuccess": "بلیط‌های {n} حذف شد", + "bulkTransitionSuccess": "بلیط {n} منتقل شد", + "bulkPartial": "{updated} از {requested} بلیط به روز شد. {failed} ناموفق بود", + "bulkClear": "پاک کردن انتخاب", + "bulkSuccess": "بلیط‌های {n} به‌روزرسانی شد", + "columnTitle": "بلیط", + "columnStatus": "وضعیت", + "columnPriority": "اولویت", + "columnOwner": "مالک", + "columnDue": "سررسید", + "columnUpdated": "به روز شد", + "add": "صف اضافه کنید", + "edit": "ویرایش صف", + "delete": "حذف صف", + "deleteConfirm": "صف \"{name}\" حذف شود؟", + "removeBuiltin": "صف داخلی را حذف کنید", + "moveLeft": "به سمت چپ حرکت کنید", + "moveRight": "به سمت راست حرکت کنید", + "nameLabel": "نام صف", + "namePlaceholder": "به عنوان مثال تشدیدها", + "filterLabel": "فیلتر کنید", + "created": "صف ایجاد شد", + "updated": "صف به روز شد", + "deleted": "صف حذف شد", + "builtinRemoved": "صف داخلی حذف شد", + "saveFailed": "صف ذخیره نشد" + }, + "transitionScreen": { + "title": "صفحه انتقال", + "moveTo": "انتقال به {status}", + "comment": "نظر دهید", + "commentPlaceholder": "افزودن نظر (اختیاری)", + "confirm": "حرکت کنید", + "failed": "انتقال کامل نشد.", + "missingFields": "برای ادامه، فیلدهای لازم را پر کنید:" + } +}; diff --git a/frontend/src/lib/locales/fa/mobile.js b/frontend/src/lib/locales/fa/mobile.js new file mode 100644 index 000000000..481fb07ea --- /dev/null +++ b/frontend/src/lib/locales/fa/mobile.js @@ -0,0 +1,152 @@ +export default { + "mobile": { + "common": { + "loadFailed": "بارگیری نشد.", + "empty": "اینجا هنوز چیزی نیست", + "noMatches": "نتیجه‌ای یافت نشد.", + "noOptions": "هیچ گزینه ای در دسترس نیست.", + "unread": "خوانده نشده", + "saving": "در حال ذخیره…", + "dialog": "گفتگو" + }, + "nav": { + "alerts": "هشدارها", + "myWorkDescription": "اختصاص داده شده، تماشا شده، اخیرا", + "pagesDescription": "پایگاه دانش فضای کاری", + "timerDescription": "ردیابی زمان", + "searchDescription": "موارد و صفحات را پیدا کنید", + "chatDescription": "چت هوش مصنوعی" + }, + "settings": { + "title": "تنظیمات", + "saveFailed": "زبان ذخیره نشد." + }, + "myWork": { + "title": "کار من", + "watched": "تماشاشده", + "recent": "اخیر", + "loadFailed": "کار شما بارگیری نشد.", + "noAssigned": "در حال حاضر چیزی به شما اختصاص داده نشده است.", + "noWatched": "هیچ موردی را تماشا نمی‌کنید.", + "noRecent": "هیچ فعالیت اخیری وجود ندارد." + }, + "personal": { + "loadFailed": "وظایف شخصی شما بارگیری نشد." + }, + "search": { + "placeholder": "جستجوی اقلام و صفحات…", + "help": "جستجو بر اساس عنوان، کلید یا متن در بین موارد و صفحاتی که می توانید ببینید.", + "empty": "هیچ مورد یا صفحه‌ای با «{query}» مطابقت ندارد." + }, + "chat": { + "title": "دستیار", + "clear": "مکالمه را پاک کنید", + "intro": "در مورد کار خود بپرسید", + "help": "دستیار می تواند موارد را جستجو کند، خلاصه کند و به شما در برنامه ریزی کمک کند.", + "review": "این پاسخ ممکن است نیاز به بررسی داشته باشد.", + "thinking": "فکر کردن…", + "placeholder": "به دستیار پیام دهید…", + "send": "ارسال کنید" + }, + "notifications": { + "installRequired": "برای فعال کردن اعلان‌های فشار، Windshift را به صفحه اصلی خود اضافه کنید.", + "blocked": "اعلان ها مسدود شده است. آنها را برای Windshift در تنظیمات دستگاه خود فعال کنید.", + "enabled": "اعلان ها روشن است", + "enable": "اعلان ها را فعال کنید", + "caughtUp": "همه را خوانده‌اید" + }, + "timer": { + "running": "در حال اجرا", + "stop": "توقف کنید", + "idle": "بدون تایمر", + "startHelp": "یکی را از صفحه جزئیات یک مورد کاری شروع کنید.", + "recentWorklogs": "کارنامه های اخیر", + "empty": "هنوز کارنامه ای وجود ندارد.", + "worklog": "کارنامه", + "deleteWorklog": "کارنامه را حذف کنید", + "workingOn": "در حال کار بر روی {title}" + }, + "install": { + "title": "به صفحه اصلی اضافه کنید", + "description": "Windshift را به عنوان یک برنامه نصب کنید تا آن را به صورت تمام صفحه راه اندازی کنید و اعلان های فشار را دریافت کنید.", + "openSafari": "این صفحه را در سافاری باز کنید (نه در داخل برنامه دیگری).", + "share": "روی دکمه اشتراک گذاری در نوار ابزار ضربه بزنید.", + "addToHome": "افزودن به صفحه اصلی را انتخاب کنید.", + "launch": "روی افزودن ضربه بزنید، سپس Windshift را از نماد جدید باز کنید.", + "dismiss": "متوجه شدم" + }, + "pages": { + "filter": "فیلتر کردن صفحات…", + "noMatches": "هیچ صفحه ای با فیلتر شما مطابقت ندارد.", + "saved": "صفحه ذخیره شد.", + "conflict": "این صفحه در جای دیگری تغییر کرد. دوباره بارگیری کنید و دوباره امتحان کنید.", + "saveFailed": "ذخیره نشد. دوباره امتحان کنید.", + "cancelEditing": "لغو ویرایش", + "pageTitle": "عنوان صفحه", + "contentLabel": "محتوای صفحه (Markdown)", + "ancestors": "صفحات والد", + "empty": "این صفحه خالی است", + "children": "صفحات فرعی" + }, + "item": { + "priorityLabel": "اولویت: {name}", + "edit": "مورد را ویرایش کنید", + "updated": "مورد به روز شد.", + "saveFailed": "مورد ذخیره نشد.", + "loadFailed": "این مورد بارگیری نشد.", + "descriptionPlaceholder": "توضیحات…", + "discardChanges": "از تغییرات صرفنظر شود؟", + "unsavedChanges": "ویرایش های شما ذخیره نشده است.", + "keepEditing": "به ویرایش ادامه دهید", + "assigneesFailed": "مسئولین بارگیری نشدند.", + "deleted": "این مورد حذف شد.", + "parents": "موارد والد", + "editTitleDescription": "عنوان و توضیحات را ویرایش کنید", + "linkedCount": "{count} پیوند داده شد", + "watching": "در حال تماشا", + "watch": "تماشا کنید", + "children": "موارد فرعی", + "addChild": "افزودن مورد فرعی", + "commitsPullRequests": "کامیت‌ها و درخواست‌های کشش", + "codingAgent": "عامل کدنویسی", + "noStatuses": "گزینه وضعیت وجود ندارد", + "noAssignees": "کاربران قابل تخصیص وجود ندارد" + }, + "create": { + "action": "مورد ایجاد کنید", + "personal": "وظیفه شخصی جدید", + "child": "زیرمورد جدید", + "item": "مورد جدید", + "requiredField": "{field} مورد نیاز است.", + "invalidStoryPoints": "امتیاز داستان باید یک عدد معتبر باشد.", + "invalidEstimate": "تخمین باید یک مدت زمان معتبر باشد.", + "customField": "فیلد سفارشی", + "failed": "مورد ایجاد نشد.", + "loadingParent": "در حال بارگیری والد…", + "parentFailed": "مورد والد بارگیری نشد.", + "under": "زیر", + "taskTitle": "عنوان وظیفه", + "enforcedTemplateHelp": "این نوع مورد، الگوی \"{name}\" را اعمال می کند", + "enforcedTemplate": "{name} (اجباری)", + "noTemplate": "بدون قالب", + "loadingFields": "در حال بارگیری فیلدهای پیکربندی شده…", + "requiredFields": "فیلدهای مورد نیاز", + "optionalFields": "فیلدهای اختیاری ({count})", + "discardTitle": "این مورد کنار گذاشته شود؟", + "discardMessage": "آنچه تایپ کردید گم می شود.", + "noPriorities": "بدون اولویت", + "noMilestones": "بدون نقطه عطف" + }, + "palette": { + "title": "پالت فرمان", + "close": "پالت فرمان را ببندید", + "placeholder": "جستجوی دستورات، موارد، صفحات…", + "help": "برای جستجو تایپ کنید یا مقصدی را انتخاب کنید.", + "item": "مورد", + "tools": "ابزار", + "admin": "مدیر", + "navigation": "ناوبری", + "system": "سیستم" + } + } +}; diff --git a/frontend/src/lib/locales/fa/navigation.js b/frontend/src/lib/locales/fa/navigation.js new file mode 100644 index 000000000..3a48ba718 --- /dev/null +++ b/frontend/src/lib/locales/fa/navigation.js @@ -0,0 +1,650 @@ +export default { + "nav": { + "workspaces": "فضاهای کاری", + "collections": "مجموعه ها", + "timeAndProjects": "زمان و پروژه ها", + "milestones": "نقاط عطف", + "iterations": "تکرارها", + "assets": "دارایی ها", + "channels": "کانال ها", + "portalHub": "پورتال هاب", + "organizations": "سازمان ها", + "teams": "تیم ها", + "create": "ایجاد کنید", + "search": "جستجو کنید", + "aiChat": "چت هوش مصنوعی", + "terminal": "ترمینال", + "admin": "مدیر", + "delegatedAdmin": "مدیر تفویض‌شده", + "delegatedAdminSubtitle": "مناطق اختصاص داده شده به شما را مدیریت کنید", + "delegatedAdminUnauthorized": "شما به هیچ یک از مناطق مدیریت واگذار شده دسترسی ندارید.", + "notifications": "اطلاعیه ها", + "profile": "نمایه", + "expand": "گسترش دهید", + "collapse": "جمع کردن", + "manageWorkspaces": "مدیریت فضاهای کاری", + "manageWorkspacesSubtitle": "فضاهای کاری را ایجاد، ویرایش و سازماندهی کنید", + "searchWorkspaces": "جستجو در فضاهای کاری...", + "noWorkspacesMatch": "هیچ فضای کاری با جستجوی شما مطابقت ندارد", + "noWorkspacesFound": "هیچ فضای کاری یافت نشد", + "searchToFindMore": "جستجو برای یافتن فضاهای کاری بیشتر...", + "loadingSearch": "در حال بارگیری جستجو...", + "loadingCreateForm": "در حال بارگیری ایجاد فرم...", + "loading": "در حال بارگیری...", + "retry": "دوباره امتحان کنید", + "knowledgeBase": "پایگاه دانش", + "scrollDownForMore": "برای مشاهده بیشتر به پایین اسکرول کنید", + "scrollUpForMore": "برای دیدن بیشتر به بالا ورق بزنید" + }, + "commandPalette": { + "searchPlaceholder": "همه چیز را جستجو کنید ...", + "noCommandsFound": "هیچ فرمانی یافت نشد", + "toSelect": "را انتخاب کنید", + "toNavigate": "برای پیمایش", + "toClose": "برای بستن", + "pressToOpen": "برای باز کردن {shortcut} را فشار دهید", + "advancedSearch": "جستجوی پیشرفته", + "context": "زمینه", + "recentlyViewed": { + "label": "موارد کاری که اخیراً مشاهده شده است", + "description": "به یکی از آخرین 20 مورد مشاهده شده خود بروید", + "header": "اخیرا مشاهده شده است", + "searchPlaceholder": "جستجوی اخیرا مشاهده شده...", + "empty": "هیچ مورد اخیراً مشاهده نشده است", + "loading": "در حال بارگیری موارد اخیر...", + "backHint": "برای برگشتن" + }, + "commands": { + "workspaces": { + "label": "فضاهای کاری", + "description": "مدیریت فضاهای کاری پروژه" + }, + "search": { + "label": "جستجو کنید", + "description": "موارد و مطالب کار را جستجو کنید" + }, + "dashboard": { + "label": "داشبورد", + "description": "مشاهده تحلیل ها و گزارش ها" + }, + "milestones": { + "label": "نقاط عطف", + "description": "ردیابی نقاط عطف پروژه" + }, + "channels": { + "label": "کانال ها", + "description": "کانال های ارتباطی و پشتیبانی" + }, + "collections": { + "label": "مجموعه ها", + "description": "مجموعه‌ها و نماهای مورد‌های کاری را مدیریت کنید" + }, + "adminPanel": { + "label": "پنل مدیریت", + "description": "مدیریت و تنظیمات سیستم" + }, + "analytics": { + "label": "تجزیه و تحلیل", + "description": "روند سرعت، زمان چرخه، و پیش بینی" + }, + "tests": { + "label": "تست ها", + "description": "موارد تست، طرح ها و اجرا را مدیریت کنید" + }, + "testCases": { + "label": "موارد تست", + "description": "موارد تست را مشاهده و مدیریت کنید" + }, + "testPlans": { + "label": "طرح های تست", + "description": "مشاهده و مدیریت برنامه های آزمایشی" + }, + "testTemplates": { + "label": "قالب ها", + "description": "الگو اجرا می شود و مراحل به اشتراک گذاشته می شود" + }, + "testRuns": { + "label": "اجراهای آزمایشی", + "description": "مشاهده و مدیریت اجرای آزمون" + }, + "testReports": { + "label": "گزارش ها", + "description": "مشاهده گزارش های اجرای آزمایش" + }, + "createTestCase": { + "label": "ایجاد پرونده آزمایشی", + "description": "یک مورد آزمایشی جدید برای تضمین کیفیت ایجاد کنید" + }, + "createTestPlan": { + "label": "ایجاد طرح تست", + "description": "یک طرح آزمایشی جدید با موارد آزمایشی ایجاد کنید" + }, + "createTestRun": { + "label": "اجرای آزمایشی را ایجاد کنید", + "description": "یک قالب آزمایشی جدید برای اجرا ایجاد کنید" + }, + "timeTracking": { + "label": "ردیابی زمان", + "description": "ثبت و مدیریت ورودی های زمان کار" + }, + "timeReports": { + "label": "گزارش های زمان", + "description": "گزارش های ردیابی زمان و تجزیه و تحلیل را مشاهده کنید" + }, + "timeProjects": { + "label": "پروژه های زمان", + "description": "پروژه های ردیابی زمان را مدیریت کنید" + }, + "logTime": { + "label": "ثبت زمان", + "description": "به سرعت یک ورودی زمان جدید اضافه کنید" + }, + "startTimer": { + "label": "تایمر را شروع کنید", + "description": "ردیابی زمان برای کار فعلی را شروع کنید" + }, + "stopTimer": { + "label": "توقف تایمر", + "description": "ردیابی زمان فعلی را متوقف کنید" + }, + "createWorkItem": { + "label": "ایجاد مورد کار", + "description": "یک مورد یا کار جدید ایجاد کنید" + }, + "createWorkspace": { + "label": "ایجاد فضای کاری", + "description": "یک فضای کاری پروژه جدید ایجاد کنید" + }, + "createMilestone": { + "label": "افزودن نقطه عطف", + "description": "یک نقطه عطف پروژه جدید ایجاد کنید" + }, + "createCollection": { + "label": "ایجاد مجموعه", + "description": "یک مجموعه مورد کار جدید ایجاد کنید" + }, + "adminCustomFields": { + "label": "فیلدهای سفارشی", + "description": "تعاریف فیلد سفارشی را مدیریت کنید" + }, + "adminScreens": { + "label": "مدیریت صفحه نمایش", + "description": "صفحه‌نمایش و طرح‌بندی فرم را پیکربندی کنید" + }, + "adminHierarchyLevels": { + "label": "سطوح سلسله مراتبی", + "description": "سطوح سلسله مراتب موارد کار را پیکربندی کنید" + }, + "adminItemTypes": { + "label": "انواع موارد", + "description": "انواع مورد کار را با نمادها و رنگ‌ها مدیریت کنید" + }, + "adminPriorities": { + "label": "اولویت ها", + "description": "سطوح اولویت را با نمادها و رنگ ها پیکربندی کنید" + }, + "adminConfigSets": { + "label": "مجموعه های پیکربندی", + "description": "مجموعه های پیکربندی را با گردش کار و صفحه نمایش مدیریت کنید" + }, + "adminStatuses": { + "label": "وضعیت ها", + "description": "وضعیت موارد کار را مدیریت کنید" + }, + "adminStatusCategories": { + "label": "دسته بندی وضعیت", + "description": "دسته ها و رنگ های وضعیت را مدیریت کنید" + }, + "adminWorkflows": { + "label": "ساز گردش کار", + "description": "طراحی و مدیریت انتقال گردش کار" + }, + "adminConditionSets": { + "label": "مجموعه شرایط", + "description": "شرایطی را تعریف کنید که انتقال گردش کار را محدود می کند" + }, + "adminLinkTypes": { + "label": "انواع لینک", + "description": "انواع پیوند بین موارد کاری را مدیریت کنید" + }, + "adminScmProviders": { + "label": "ارائه‌دهندگان SCM", + "description": "پیکربندی ادغام GitHub، GitLab، Gitea و Bitbucket" + }, + "adminAttachments": { + "label": "پیوست ها", + "description": "تنظیمات و پیکربندی پیوست را مدیریت کنید" + }, + "adminModules": { + "label": "تنظیمات ماژول", + "description": "ماژول‌های ردیابی زمان و تست را فعال یا غیرفعال کنید" + }, + "adminThemes": { + "label": "تنظیمات پوسته", + "description": "پوسته‌ها و ظاهر برنامه را مدیریت کنید" + }, + "adminUsers": { + "label": "مدیریت کاربر", + "description": "کاربران، نقش ها و مجوزها را مدیریت کنید" + }, + "adminGroups": { + "label": "مدیریت گروه", + "description": "گروه های کاربری و عضویت ها را مدیریت کنید" + }, + "adminPermissions": { + "label": "مجوزها", + "description": "مجوزهای کاربر و کنترل دسترسی را مدیریت کنید" + }, + "adminPermissionSets": { + "label": "مجموعه های مجوز", + "description": "بسته‌های مجوز را برای مجموعه‌های پیکربندی مدیریت کنید" + }, + "adminWorkspaceRoles": { + "label": "نقش های فضای کاری", + "description": "نقش های فضای کاری و مجوزهای آنها را مشاهده کنید" + }, + "adminSso": { + "label": "ورود یکپارچه", + "description": "پیکربندی ارائه‌دهنده هویت OIDC برای SSO" + }, + "adminSecurity": { + "label": "تنظیمات امنیتی", + "description": "فیدهای تقویم و اجرای افزونه را پیکربندی کنید" + }, + "adminSystemImport": { + "label": "درون‌ریزی سیستم", + "description": "داده ها را از سیستم های دیگر وارد کنید" + }, + "adminAssets": { + "label": "مدیریت دارایی", + "description": "پیکربندی انواع و دسته‌های دارایی" + }, + "adminWorkspaces": { + "label": "مدیر فضاهای کاری", + "description": "فضاهای کاری و تنظیمات را مدیریت کنید" + }, + "adminNotifications": { + "label": "تنظیمات اعلان", + "description": "تنظیمات اعلان ها را مدیریت کنید" + }, + "adminEmailTemplates": { + "label": "قالب های ایمیل", + "description": "موضوع و متن ایمیل های تراکنشی را سفارشی کنید" + }, + "quitApp": { + "label": "خروج از برنامه", + "description": "سرور برنامه را به آرامی خاموش کنید" + }, + "portal": { + "label": "پورتال", + "description": "مدیریت پورتال مشتری" + }, + "iterations": { + "label": "تکرارها", + "description": "برنامه ریزی و ردیابی اسپرینت" + }, + "createItem": { + "label": "ایجاد مورد", + "description": "یک مورد کاری جدید ایجاد کنید" + }, + "myProfile": { + "label": "نمایه من", + "description": "نمایه خود را مشاهده و ویرایش کنید" + }, + "notifications": { + "label": "اطلاعیه ها", + "description": "مشاهده اطلاعیه ها" + }, + "about": { + "label": "درباره", + "description": "درباره این اپلیکیشن" + }, + "assets": { + "label": "دارایی ها", + "description": "مجموعه ها و اقلام دارایی را مدیریت کنید" + }, + "organizations": { + "label": "سازمان ها", + "description": "سازمان های مشتری را مدیریت کنید" + }, + "goToWorkspace": { + "label": "برو به {name}", + "description": "به فضای کاری {name} بروید" + }, + "workspaceOverview": { + "label": "نمای کلی {name}", + "description": "مشاهده داشبورد فضای کاری با آمار و نمودار" + } + } + }, + "dashboard": { + "title": "داشبورد", + "subtitle": "مروری بر موارد کاری و پروژه های شما", + "welcome": "خوش آمدید", + "overview": "نمای کلی", + "recentActivity": "فعالیت اخیر", + "recentItems": "موارد اخیر", + "myTasks": "وظایف من", + "assignedToMe": "به من اختصاص داده شده است", + "openTasks": "وظایف باز", + "overdueItems": "اقلام عقب افتاده", + "upcomingDeadlines": "مهلت‌های آینده", + "activeIterations": "تکرارهای فعال", + "inProgressMilestones": "نقاط عطف در حال انجام", + "noRecentActivity": "هیچ فعالیت اخیری وجود ندارد", + "recentItemsHint": "مواردی که به‌روزرسانی می‌کنید در اینجا ظاهر می‌شوند", + "noActiveIterations": "بدون تکرار فعال", + "iterationTimelinesHint": "جدول زمانی تکرار در اینجا ظاهر می شود", + "noUpcomingDeadlines": "مهلت آینده‌ای وجود ندارد", + "dueDatesHint": "موارد دارای تاریخ سررسید در اینجا ظاهر می شوند", + "noOpenTasks": "هیچ کار باز به شما محول نشده است", + "allCaughtUp": "همه را خوانده‌اید!", + "noOverdueItems": "بدون اقلام معوق", + "loadingRecentItems": "در حال بارگیری موارد اخیر...", + "loadingTasks": "در حال بارگیری وظایف شما...", + "loadingOverdueItems": "در حال بارگیری اقلام عقب افتاده...", + "workItemStatusOverview": "نمای کلی وضعیت مورد کار", + "statusOpen": "باز", + "statusInProgress": "در حال انجام است", + "statusClosed": "بسته", + "quickActions": "اقدامات سریع", + "createWorkItem": "ایجاد مورد کار", + "createWorkItemDesc": "ردیابی یک مورد کاری جدید را شروع کنید", + "manageMilestones": "نقاط عطف را مدیریت کنید", + "manageMilestonesDesc": "نقاط عطف را مشاهده و سازماندهی کنید", + "manageWorkspaces": "مدیریت فضاهای کاری", + "manageWorkspacesDesc": "فضاهای کاری را تنظیم کنید", + "recentWorkItems": "موارد کار اخیر", + "whatsNew": "چه جدید است", + "noNotifications": "هنوز اطلاعیه ای وجود ندارد", + "yourActivity": "فعالیت شما", + "viewed": "مشاهده شد", + "edited": "ویرایش شد", + "commented": "نظر داد", + "noRecentlyViewed": "هیچ مورد اخیراً مشاهده نشده است", + "noRecentlyEdited": "هیچ موردی اخیراً ویرایش نشده است", + "noRecentlyCommented": "هیچ موردی که اخیراً نظر داده نشده است", + "quickAccess": "دسترسی سریع", + "quickAccessHint": "{shortcut} را بزنید تا پالت فرمان باز شود", + "upcomingMilestones": "نقاط عطف آینده", + "watching": "در حال تماشا", + "recentWorkspaces": "فضاهای کاری اخیر", + "noRecentWorkspaces": "فضای کاری اخیر وجود ندارد", + "goodMorning": "صبح بخیر", + "goodAfternoon": "ظهر بخیر", + "goodEvening": "عصر بخیر", + "goodNight": "شب بخیر", + "dueIn": "سررسید تا {days} روز دیگر", + "dueToday": "سررسید امروز", + "overdue": "{days} روز عقب افتاده است", + "done": "{done}/{total} انجام شد", + "there": "دوست عزیز", + "doneEditing": "ویرایش انجام شد", + "customize": "سفارشی کنید", + "editModeHint": "حالت ویرایش: اضافه کردن، تغییر نام، ترتیب مجدد، یا حذف بخش ها و ویجت ها", + "sections": { + "yourDay": "روز شما", + "yourDayDescription": "خواندن سریع در مورد آنچه نیاز به توجه شما دارد", + "work": "کار", + "workDescription": "لیست شخصی و مواردی که به شما اختصاص داده شده است", + "workspaces": "فضاهای کاری", + "workspacesDescription": "دوباره به داخل بپر", + "new": "بخش جدید", + "section": "بخش داشبورد", + "titlePlaceholder": "عنوان بخش", + "subtitlePlaceholder": "زیرنویس (اختیاری)", + "rename": "تغییر نام بخش", + "deleteMessage": "این بخش حذف شود؟ تمام ویجت های موجود در آن نیز حذف خواهند شد.", + "noWidgets": "هنوز ویجتی در این بخش وجود ندارد", + "addWidgetsHint": "برای افزودن ویجت‌ها، سفارشی‌سازی را انتخاب کنید", + "none": "هیچ بخش پیکربندی نشده است", + "noneHint": "برای افزودن بخش داشبورد، ویرایش را انتخاب کنید" + }, + "customization": { + "widgets": "ویجت‌ها", + "activity": "فعالیت", + "activityDescription": "جلسات توجیهی، جریان‌های فعالیت، و اعلان‌ها", + "work": "کار", + "workDescription": "موارد، نقاط عطف و کارهایی که به شما محول شده است", + "navigation": "ناوبری", + "navigationDescription": "دسترسی سریع به فضاهای کاری", + "tipTitle": "نکته", + "tip": "ویجت را به هر بخش داشبورد بکشید." + }, + "widgets": { + "dailyBriefing": { + "name": "جلسه توجیهی روزانه", + "description": "خلاصه ای از آنچه امروز مهم است ایجاد شده توسط هوش مصنوعی" + }, + "yourActivity": { + "name": "فعالیت شما", + "description": "مواردی که اخیراً مشاهده، ویرایش یا نظر داده اید" + }, + "whatsNew": { + "name": "چه جدید است", + "description": "آخرین اعلان ها و به روز رسانی های خوانده نشده" + }, + "personalTasks": { + "name": "وظایف شخصی", + "description": "موارد از لیست کارهای شخصی شما" + }, + "savedSearch": { + "name": "جستجوی ذخیره شده", + "description": "موارد کار از یک مجموعه ذخیره شده" + }, + "assignedToMe": { + "name": "به من اختصاص داده شده است", + "description": "موارد اختصاص داده شده به شما را در همه فضاهای کاری باز کنید" + }, + "watchedItems": { + "name": "موارد تماشا شده", + "description": "مواردی که تماشا می‌کنید" + }, + "upcomingMilestones": { + "name": "نقاط عطف آینده", + "description": "نقاط عطف با نزدیک شدن به تاریخ های هدف" + }, + "recentWorkspaces": { + "name": "فضاهای کاری اخیر", + "description": "فضاهای کاری که اخیراً بازدید کرده اید" + }, + "quickAccess": { + "name": "دسترسی سریع", + "description": "پیوندهای سریع به فضاهای کاری موجود" + }, + "unknown": "نوع ویجت ناشناخته: {type}" + }, + "widgetContent": { + "briefingUnavailable": "خلاصه روزانه شما در حال حاضر در دسترس نیست. به یک ادغام هوش مصنوعی نیاز دارد. اگر به تازگی یکی را پیکربندی کرده اید، به زودی دوباره امتحان کنید.", + "updated": "به روز شد {date}", + "assignedLoadError": "موارد اختصاص داده شده شما بارگیری نشد", + "assignedEmpty": "در حال حاضر چیزی به شما اختصاص داده نشده است", + "personalLoadError": "وظایف شخصی شما بارگیری نشد", + "personalEmpty": "لیست کارهای شخصی شما خالی است", + "noWorkspaces": "هنوز فضای کاری وجود ندارد", + "createWorkspace": "یکی ایجاد کنید", + "workspaceAvatar": "آواتار {name}", + "visited": "بازدید شده {date}", + "watchedEmpty": "هیچ موردی را تماشا نمی‌کنید", + "noUpcomingMilestones": "هیچ نقطه عطف آینده وجود ندارد", + "milestoneDone": "{done} از {total} انجام شد", + "daysOverdue": "{count} روز تاخیر", + "daysOverdue_one": "{count} روز تاخیر", + "daysOverdue_other": "{count} روز تاخیر", + "daysLeft": "{count} روز باقی مانده است", + "daysLeft_one": "{count} روز باقی مانده است", + "daysLeft_other": "{count} روز باقی مانده است", + "priorityAria": "اولویت: {name}" + }, + "relative": { + "unknown": "ناشناس", + "justNow": "همین الان", + "minutesAgo": "{count} دقیقه پیش", + "minutesAgo_one": "{count} دقیقه پیش", + "minutesAgo_other": "{count} دقیقه پیش", + "hoursAgo": "{count} ساعت پیش", + "hoursAgo_one": "{count} ساعت پیش", + "hoursAgo_other": "{count} ساعت پیش", + "daysAgo": "{count} روز پیش", + "daysAgo_one": "{count} روز پیش", + "daysAgo_other": "{count} روز پیش" + } + }, + "workspaceDashboard": { + "overview": "نمای کلی", + "overviewDescription": "معیارها و آمارهای کلیدی", + "progress": "ردیابی پیشرفت", + "progressDescription": "نمودارها و جدول زمانی", + "homepage": "صفحه اصلی", + "loading": "در حال بارگیری داده های فضای کاری…", + "noSectionsHint": "برای افزودن بخش‌هایی به صفحه اصلی فضای کاری، ویرایش را انتخاب کنید", + "customize": "سفارشی کنید", + "doneEditing": "ویرایش انجام شد", + "editModeHint": "حالت ویرایش: اضافه کردن، تغییر نام، ترتیب مجدد، یا حذف بخش ها و ویجت ها", + "weekOf": "هفته از {date}", + "widgets": { + "stats": { + "name": "بررسی اجمالی آمار", + "description": "مجموعه ها و تعداد موارد بر اساس دسته وضعیت" + }, + "completionChart": { + "name": "نمودار تکمیل", + "description": "موارد تکمیل شده در چهار هفته گذشته" + }, + "createdChart": { + "name": "نمودار ایجاد", + "description": "موارد ایجاد شده در هفت روز گذشته" + }, + "milestoneProgress": { + "name": "پیشرفت نقطه عطف", + "description": "نقاط عطف فعال و پیشرفت آنها" + }, + "storyPointsByAssignee": { + "name": "امتیاز داستان بر اساس مسئول", + "description": "باز کردن امتیاز داستان اختصاص داده شده به هر عضو" + }, + "recentItems": { + "name": "موارد اخیر", + "description": "مواردی که اخیراً در این فضای کاری به روز شده است" + }, + "myTasks": { + "name": "وظایف من", + "description": "مواردی که به شما اختصاص داده شده است" + }, + "savedSearch": { + "name": "جستجوی ذخیره شده", + "description": "موارد کار از یک مجموعه ذخیره شده" + }, + "overdueItems": { + "name": "اقلام عقب افتاده", + "description": "اقلامی که تاریخ سررسیدشان گذشته است" + }, + "upcomingDeadlines": { + "name": "مهلت های آینده", + "description": "اقلام با نزدیک شدن به تاریخ سررسید" + }, + "iterationTimeline": { + "name": "جدول زمانی تکرار", + "description": "برنامه تکرار فعلی و آتی" + }, + "testCoverage": { + "name": "پوشش تست", + "description": "الزامات تحت پوشش موارد آزمایشی" + }, + "supportMetrics": { + "name": "معیارهای پشتیبانی", + "description": "عقب‌ماندگی، اولین پاسخ، زمان حل، و رعایت SLA برای بلیط‌های مشتری" + }, + "zammadSupportOverview": { + "name": "نمای کلی پشتیبانی Zammad", + "description": "وضعیت بلیت پیوندی در سراسر فضای کاری و تغییرات مشاهده شده" + } + }, + "customization": { + "widgets": "ویجت‌ها", + "builtIn": "ویجت های داخلی", + "builtInDescription": "معیارها و نمودارهای فضای کاری اصلی", + "additional": "ویجت های اضافی", + "additionalDescription": "فهرست‌ها، برنامه‌ها و ویجت‌های آزمایشی", + "defaultWidth": "عرض پیش‌فرض: {width} از 3", + "tipTitle": "نکته", + "tip": "یک ویجت را به هر بخش در صفحه اصلی فضای کاری بکشید." + } + }, + "search": { + "title": "جستجو", + "subtitle": "در تمام فضاهای کاری با گزینه های فیلتر پیشرفته جستجو کنید", + "searchPlaceholder": "جستجو...", + "searchItems": "جستجوی موارد...", + "searchResults": "نتایج جستجو", + "noSearchResults": "نتایج جستجو وجود ندارد", + "configureFilter": "برای مشاهده موارد، فیلتر را پیکربندی کنید", + "savedSearch": "جستجوی ذخیره شده", + "saveSearch": "ذخیره جستجو", + "clearSearch": "جستجو را پاک کنید", + "advancedSearch": "جستجوی پیشرفته", + "recentSearches": "جستجوهای اخیر", + "workItem": "مورد کار", + "workspace": "فضای کار" + }, + "about": { + "title": "درباره Windshift", + "subtitle": "یک پلتفرم مدیریت کار جامع که برای تیم های مدرن طراحی شده است", + "whatIs": "Windshift چیست؟", + "description": "Windshift یک برنامه مدیریت کار قدرتمند است که ردیابی پروژه، مدیریت آزمایش، ردیابی زمان و همکاری تیمی را در یک پلتفرم یکپارچه گرد هم می‌آورد. ساخته شده با فناوری های مدرن و طراحی شده برای انعطاف پذیری، با گردش کار منحصر به فرد تیم شما سازگار است.", + "keyFeatures": "ویژگی های کلیدی", + "projectManagement": "مدیریت پروژه", + "projectManagementDesc": "موارد کار را به صورت سلسله مراتبی با فیلدهای سفارشی، گردش کار و ردیابی وضعیت سازماندهی کنید.", + "testManagement": "مدیریت آزمون", + "testManagementDesc": "موارد آزمایشی را ایجاد کنید، برنامه‌های آزمایشی را سازماندهی کنید، آزمایش‌های آزمایشی را اجرا کنید و نقص‌ها را به طور موثر پیگیری کنید.", + "timeTracking": "ردیابی زمان", + "timeTrackingDesc": "ردیابی زمان صرف شده برای پروژه ها و وظایف با گزارش و تجزیه و تحلیل دقیق.", + "builtWith": "کتابخانه های قابل توجه", + "libSvelte": "فریم‌ورک فرانت‌اند", + "libTailwind": "فریم‌ورک Utility-first CSS", + "libMilkdown": "ویرایشگر متن غنی", + "libExcalidraw": "نمودارها و ترسیم", + "libMeltUI": "اجزای اولیه UI", + "libExtism": "سیستم افزونه WebAssembly", + "libCharmbracelet": "TUI & SSH access (Bubble Tea, Wish)", + "libSvelteFlow": "نمودارهای جریان", + "versionInfo": "اطلاعات نسخه", + "version": "نسخه", + "developedBy": "توسعه یافته توسط", + "reportIssues": "گزارش مسائل", + "getStarted": "شروع کنید" + }, + "onboarding": { + "welcomeTo": "به Windshift خوش آمدید", + "getStartedMessage": "بیایید شما را با ایجاد اولین فضای کاری و مورد کاری خود شروع کنیم", + "progress": "پیشرفت", + "completed": "تکمیل شد", + "of": "از", + "createWorkspace": "فضای کاری خود را ایجاد کنید", + "workspacesHelp": "فضاهای کاری به شما در سازماندهی پروژه ها و تیم ها کمک می کنند", + "createWorkspaceBtn": "ایجاد فضای کاری", + "createFirstWorkItem": "اولین مورد کاری خود را ایجاد کنید", + "trackTasks": "وظایف، اشکالات، ویژگی‌ها و موارد دیگر را ردیابی کنید", + "createWorkItemBtn": "ایجاد مورد کار", + "dismissAssistant": "بستن دستیار", + "dismissOnboarding": "رد کردن راهنمای شروع", + "getStartedMember": "در اینجا فضاهای کاری در دسترس شما هستند", + "selectWorkspace": "برای شروع یک فضای کاری انتخاب کنید", + "browseAllWorkspaces": "مرور همه {count} فضای کاری", + "noWorkspacesAvailable": "هنوز هیچ فضای کاری در دسترس نیست. لطفاً برای دسترسی به یک فضای کاری با سرپرست خود تماس بگیرید." + }, + "navConfig": { + "configureTitle": "پیکربندی ناوبری", + "scopeWorkspace": "پیش‌فرض فضای کاری — {name}", + "scopeCollection": "مجموعه — {name}", + "collectionScopeHelp": "این بازنویسی‌ها پیش‌فرض فضای کاری این مجموعه را لغو می‌کنند. ابزارها و تست‌ها از تنظیمات فضای کاری پیروی می‌کنند.", + "inheritedBadge": "پیروی از پیش‌فرض فضای کاری - یک نمای را تغییر دهید تا آن را لغو کنید.", + "resetToInherited": "بازنشانی به پیش فرض فضای کاری", + "alwaysVisible": "همیشه قابل مشاهده است", + "adminOnlyHint": "قابل مشاهده برای مدیران فضای کاری", + "moduleHint": "زمانی ظاهر می شود که ماژول مدیریت آزمون فعال باشد و بیننده بتواند به تست ها دسترسی داشته باشد.", + "defaultViewHint": "نمای پیش‌فرض فضای کاری - غیرفعال نمی‌شود", + "saveError": "تنظیمات پیمایش ذخیره نشد: {error}", + "loadError": "تنظیمات ناوبری بارگیری نشد: {error}" + } +}; diff --git a/frontend/src/lib/locales/fa/pages.js b/frontend/src/lib/locales/fa/pages.js new file mode 100644 index 000000000..204ae08e9 --- /dev/null +++ b/frontend/src/lib/locales/fa/pages.js @@ -0,0 +1,166 @@ +export default { + "pages": { + "backWorkspace": "فضای کار", + "treeHeading": "صفحات", + "addPageAria": "افزودن صفحه", + "untitled": "بدون عنوان", + "treeLoading": "در حال بارگیری…", + "treeEmptyTitle": "هنوز صفحه ای وجود ندارد", + "treeEmptyDescription": "از دکمه + بالا برای ایجاد صفحه اول خود استفاده کنید.", + "menuAddChild": "افزودن صفحه فرزند", + "menuRename": "تغییر نام دهید", + "menuMove": "حرکت کنید", + "menuPermissions": "مجوزها", + "menuHistory": "تاریخچه", + "menuPrint": "چاپ کنید", + "menuArchive": "آرشیو", + "print": { + "button": "چاپ کنید", + "back": "بازگشت به صفحه", + "loading": "در حال آماده سازی صفحه برای چاپ…", + "error": "صفحه بارگیری نشد." + }, + "history": { + "title": "تاریخچه تجدید نظر", + "empty": "هنوز هیچ تجدیدنظری وجود ندارد.", + "loadError": "سابقه بازبینی بارگیری نشد.", + "restoreTitle": "نسخه شماره {rev} بازیابی شود؟", + "restoreMessage": "با این کار محتوای ویرایش انتخاب شده جایگزین بدنه صفحه فعلی می شود و یک ویرایش جدید ایجاد می‌کند که بازیابی را ثبت می‌کند.", + "restoreConfirm": "بازیابی کنید", + "restoreAction": "بازیابی #{rev}", + "restoring": "در حال بازیابی…", + "restoredOK": "بازبینی شماره {rev} بازیابی شد.", + "restoreError": "بازیابی بازبینی انجام نشد." + }, + "pageLoading": "در حال بارگیری صفحه…", + "emptyPaneTitle": "صفحات دانش", + "emptyPaneDescription": "یک صفحه از درخت انتخاب کنید یا برای شروع یک صفحه ایجاد کنید.", + "titlePlaceholder": "بدون عنوان", + "editorPlaceholder": "شروع به نوشتن…", + "tocHeading": "در این صفحه", + "tocAriaLabel": "فهرست مطالب", + "save": "ذخیره کنید", + "move": "حرکت کنید", + "permissions": "مجوزها", + "archive": "آرشیو", + "statusSaving": "در حال ذخیره…", + "statusSaved": "ذخیره شد", + "statusUnsaved": "ذخیره نشده است", + "statusError": "ذخیره انجام نشد", + "publiclyViewableBanner": "قابل مشاهده برای عموم - این صفحه از طریق پایگاه دانش پورتال منتشر شده و توسط کاربران پورتال قابل خواندن است.", + "publiclyViewableBannerWithPortals": "قابل مشاهده برای عموم - این صفحه از طریق پایگاه دانش {portals} منتشر شده و توسط کاربران پورتال قابل خواندن است.", + "modeEdit": "ویرایش کنید", + "modeRead": "بخوانید", + "modeAria": "حالت مشاهده", + "canvasWide": "از بوم با عرض کامل استفاده کنید", + "canvasComfortable": "از بوم با عرض قابل خواندن استفاده کنید", + "errorLoadTree": "صفحات بارگیری نشد", + "errorLoadPage": "صفحه بارگیری نشد", + "errorSave": "ذخیره نشد", + "errorCreate": "صفحه ایجاد نشد", + "errorArchive": "بایگانی نشد", + "discardTitle": "از تغییرات ذخیره نشده صرف نظر شود؟", + "discardMessage": "شما تغییرات ذخیره نشده ای در صفحه فعلی دارید. اگر تغییر دهید از بین خواهند رفت.", + "discardConfirm": "دور انداختن", + "discardCancel": "به ویرایش ادامه دهید", + "archiveTitle": "\"{title}\" بایگانی شود؟", + "archiveMessage": "این صفحه و هر صفحه فرزند را بایگانی می کند. این عمل قابل لغو نیست.", + "archiveConfirm": "آرشیو", + "archivedOpenAria": "مشاهده صفحات آرشیو شده", + "archivedHeading": "صفحات آرشیو شده", + "archivedSubtitle": "صفحاتی که قبلاً بایگانی شده‌اند را بررسی و بازیابی کنید.", + "archivedBack": "بازگشت به صفحات", + "archivedEmpty": "هیچ صفحه آرشیو شده ای وجود ندارد", + "archivedColTitle": "عنوان", + "archivedColArchivedAt": "بایگانی شد", + "archivedColArchivedBy": "بایگانی شده توسط", + "archivedUnarchive": "لغو بایگانی", + "archivedUnarchiveTitle": "\"{title}\" لغو بایگانی شود؟", + "archivedUnarchiveMessage": "صفحه دوباره در درخت ظاهر می شود. اگر والد آن هنوز بایگانی شده باشد، صفحه پنهان می ماند تا زمانی که والد را نیز از حالت آرشیو خارج کنید.", + "archivedUnarchiveConfirm": "لغو بایگانی", + "archivedUnarchiveOK": "\"{title}\" بازیابی شد", + "archivedLoadError": "صفحات بایگانی شده بارگیری نشد", + "archivedUnarchiveError": "لغو بایگانی صفحه انجام نشد", + "moveTitle": "انتقال \"{title}\"", + "moveSubtitle": "یک والد جدید انتخاب کنید. صفحات زیر صفحه فعلی پنهان می‌شوند زیرا یک چرخه ایجاد می‌کنند.", + "moveWorkspaceLabel": "فضای کاری مقصد", + "moveWorkspacePlaceholder": "انتخاب یک فضای کاری…", + "moveParentLabel": "صفحه والد", + "moveSearchPlaceholder": "جستجوی صفحات…", + "moveRoot": "ریشه فضای کاری", + "moveCrossWorkspaceSummary": "صفحات این زیردرخت: {count}.", + "moveCrossWorkspacePolicy": "برچسب های منطبق نگه داشته می شوند. مجوزهای صریح، پیوندهای مورد کار، و مراجع مهارت عامل حذف می شوند.", + "moveButton": "حرکت کنید", + "moveCancel": "لغو کنید", + "errorLoadWorkspaces": "فضاهای کاری بارگیری نشد", + "errorMove": "حرکت انجام نشد", + "permsTitle": "مجوزهای صفحه", + "permsEffectiveAccess": "دسترسی موثر شما: {level}", + "permsEffectiveAccessNone": "هیچ کدام", + "permsLoading": "در حال بارگیری…", + "permsInheritLabel": "مجوزها را از والد بالاتر به ارث ببرید", + "permsInheritHint": "وقتی وراثت روشن است و هیچ مجوز صریحی وجود ندارد، مجوزهای نقش فضای کاری تعیین‌کننده‌اند. شکستن وراثت بدون مجوز، صفحه را به مدیران محدود می‌کند.", + "permsExplicitGrants": "مجوزهای صریح", + "permsEmptyGrantsTitle": "هیچ مجوز صریحی در این صفحه وجود ندارد.", + "permsEmptyGrantsDescription": "نقش‌های وراثت و فضای کاری همچنان اعمال می‌شوند.", + "permsColumnPrincipal": "موجودیت", + "permsColumnLevel": "سطح", + "permsRemove": "حذف کنید", + "permsRemoveTitle": "مجوز حذف شود؟", + "permsRemoveMessage": "این مجوز از صفحه حذف خواهد شد. بعداً می‌توانید دوباره آن را اضافه کنید.", + "permsRemoveConfirm": "حذف کنید", + "permsRemoveCancel": "لغو کنید", + "permsClose": "بستن", + "permsAdd": "اضافه کنید", + "permsPrincipalUser": "کاربر", + "permsPrincipalGroup": "گروه", + "permsPrincipalRole": "نقش", + "permsLevelView": "مشاهده کنید", + "permsLevelEdit": "ویرایش کنید", + "permsLevelAdmin": "مدیر", + "permsPickUser": "یک کاربر انتخاب کنید", + "permsPickGroup": "یک گروه انتخاب کنید", + "permsPickRole": "نقشی را انتخاب کنید", + "permsErrorNoPrincipal": "قبل از افزودن مجوز، یک موجودیت را انتخاب کنید", + "permsErrorLoad": "مجوزها بارگیری نشد", + "permsErrorInherit": "وراثت به‌روزرسانی نشد", + "permsErrorGrant": "افزودن مجوز ناموفق بود", + "permsErrorRevoke": "لغو نشد", + "labelsTitle": "برچسب ها", + "labelsAdd": "برچسب اضافه کنید", + "labelsCreate": "برچسب ایجاد کنید", + "labelsCreateNamed": "ایجاد \"{name}\"", + "labelsSearchPlaceholder": "جستجو یا ایجاد…", + "labelsFilterTitle": "فیلتر بر اساس برچسب", + "labelsFilterPlaceholder": "صفحات را بر اساس برچسب فیلتر کنید", + "labelsFilterClear": "فیلتر را پاک کنید", + "labelsEmpty": "هنوز برچسبی وجود ندارد", + "labelsNameRequired": "نام برچسب الزامی است", + "labelsDuplicate": "برچسبی با آن نام از قبل وجود دارد", + "labelsDeleteConfirm": "این برچسب حذف شود؟ از هر صفحه ای که به آن ضمیمه شده است حذف خواهد شد.", + "labelsDelete": "حذف برچسب", + "labelsRemoveAria": "حذف برچسب {name}", + "labelsErrorLoad": "برچسب ها بارگیری نشد", + "labelsErrorSave": "برچسب ذخیره نشد", + "labelsErrorAttach": "برچسب پیوست نشد", + "labelsErrorDetach": "جدا کردن برچسب انجام نشد", + "searchAria": "جستجو در صفحات", + "searchPlaceholder": "جستجوی صفحات…", + "searchClear": "جستجو را پاک کنید", + "toggleSubtreeAria": "جابجایی فرزندان {title}", + "expandAllAria": "همه را گسترش دهید", + "collapseAllAria": "همه را جمع کن", + "workItemsButton": "اقلام کار", + "workItemsAria": "نمایش موارد کاری مرتبط", + "workItemsEmpty": "هنوز هیچ پیوند کاری در اینجا وجود ندارد", + "workItemsLoading": "در حال بارگیری موارد کاری…", + "workItemsTitle": "اقلام کار", + "addWorkItem": "افزودن مورد کاری", + "addWorkItemCancel": "لغو کنید", + "addWorkItemSearchPlaceholder": "جستجوی موارد کاری…", + "removeWorkItemLink": "پیوند مورد کاری را لغو کنید", + "workItemsErrorLoad": "موارد کار مرتبط بارگیری نشد", + "workItemsErrorLink": "مورد کاری پیوند داده نشد", + "workItemsErrorUnlink": "پیوند مورد کاری لغو نشد" + } +}; diff --git a/frontend/src/lib/locales/fa/teams.js b/frontend/src/lib/locales/fa/teams.js new file mode 100644 index 000000000..7fc2f7998 --- /dev/null +++ b/frontend/src/lib/locales/fa/teams.js @@ -0,0 +1,196 @@ +export default { + "teams": { + "title": "تیم ها", + "subtitle": "تیم‌ها، اعضا و چرخش‌های کشیک را مدیریت کنید", + "name": "نام", + "description": "توضیحات", + "descriptionOptional": "توضیحات (اختیاری)", + "namePlaceholder": "به عنوان مثال پلتفرم کشیک", + "descriptionPlaceholder": "خلاصه اختیاری این تیم", + "members": "اعضا", + "member": "عضو", + "role": "نقش", + "email": "ایمیل", + "groups": "گروه ها", + "group": "گروه", + "memberCount": "تعداد اعضا", + "status": "وضعیت", + "active": "فعال", + "inactive": "غیر فعال", + "actions": "اقدامات", + "createTeam": "تیم ایجاد کنید", + "editTeam": "ویرایش تیم", + "nameRequired": "نام الزامی است", + "confirmDelete": "تیم \"{name}\" حذف شود؟ این قابل واگرد نیست.", + "created": "تیم ایجاد شد", + "updated": "تیم به روز شد", + "deleted": "تیم حذف شد", + "failedToLoad": "بارگیری تیم ها انجام نشد", + "failedToSave": "ذخیره تیم ناموفق بود", + "failedToDelete": "تیم حذف نشد", + "loading": "در حال بارگیری…", + "empty": "هنوز تیمی وجود ندارد", + "backToTeams": "بازگشت به تیم ها", + "noDescription": "بدون شرح", + "iconAndColor": "نماد و رنگ", + "avatar": "آواتار", + "identityTitle": "هویت", + "identitySubtitle": "یک نماد و رنگ را انتخاب کنید یا یک آواتار سفارشی آپلود کنید.", + "directMembers": "اعضای مستقیم", + "mappedGroups": "گروه‌های نگاشت‌شده", + "resolvedMembers": "اعضای نهایی", + "resolvedMembersHint": "ترکیب اعضای مستقیم و اعضای گروه‌های نگاشت‌شده", + "addMembers": "اضافه کردن اعضا", + "addMember": "اضافه کردن عضو", + "pickUserFirst": "ابتدا یک کاربر را انتخاب کنید", + "pickGroupFirst": "ابتدا یک گروه را انتخاب کنید", + "alreadyMember": "کاربر قبلاً عضو شده است", + "alreadyAttached": "گروه قبلاً پیوست شده است", + "searchUser": "جستجوی کاربر…", + "usersToAdd": "کاربران برای اضافه کردن", + "membersAdded": "اعضا اضافه شدند", + "failedToAddMembers": "اعضا اضافه نشدند", + "roleUpdated": "نقش به روز شد", + "failedToUpdateRole": "نقش به‌روزرسانی نشد", + "confirmRemoveMember": "{name} از این تیم حذف شود؟", + "memberRemoved": "عضو حذف شد", + "failedToRemoveMember": "عضو حذف نشد", + "noDirectMembers": "هنوز هیچ عضو مستقیمی وجود ندارد", + "noResolvedMembers": "هیچ عضو نهایی وجود ندارد", + "source": "منبع", + "sourceDirect": "مستقیم", + "sourceGroup": "گروه", + "leaveStatus": "ترک کنید", + "onLeave": "در مرخصی", + "onLeaveWithSub": "در مرخصی (زیر: {name})", + "attachGroup": "گروه را ضمیمه کنید", + "searchGroup": "جستجوی گروه…", + "groupsToAdd": "گروه هایی برای افزودن", + "groupsAdded": "گروه ها پیوست شدند", + "failedToAddGroups": "گروه‌ها پیوست نشد", + "confirmRemoveGroup": "گروه \"{name}\" از این تیم جدا شود؟", + "groupRemoved": "گروه جدا شد", + "failedToRemoveGroup": "گروه جدا نشد", + "noMappedGroups": "هیچ گروهی پیوست نشده است", + "tabs": { + "overview": "نمای کلی", + "members": "اعضا", + "groups": "گروه ها", + "onCall": "در حال تماس", + "serviceHours": "ساعت خدمات" + }, + "serviceHours": { + "title": "ساعت خدمات", + "subtitle": "تقویم‌های ساعات کاری این تیم در فضاهای کاری محدود برای اهداف SLA منتشر می‌کند.", + "createCalendar": "تقویم جدید", + "deleteCalendar": "حذف تقویم", + "deleteConfirm": "تقویم «{name}» حذف شود؟ این قابل واگرد نیست.", + "deleteBlocked": "این تقویم همچنان توسط یک هدف SLA ارجاع داده می شود و نمی توان آن را حذف کرد.", + "created": "تقویم ایجاد شد", + "updated": "تقویم به روز شد", + "deleted": "تقویم حذف شد", + "loadFailed": "ساعات خدمات بارگیری نشد", + "timezone": "منطقه زمانی", + "noCalendars": "هنوز تقویم ساعات خدمات وجود ندارد.", + "previewImpact": "پیش نمایش تاثیر", + "impactTitle": "تأثیر ویرایش «{name}»", + "impactFailed": "پیش نمایش ضربه بارگیری نشد", + "impactCycles": "{count} چرخه(های) در حال انجام از این تقویم استفاده می کنند", + "noImpact": "هیچ فضای کاری محدودی در حال حاضر به این تقویم ارجاع نمی دهد." + }, + "oncall": { + "schedules": "برنامه‌های کشیک", + "addSchedule": "برنامه را اضافه کنید", + "noSchedules": "هنوز هیچ برنامه ای برای تماس وجود ندارد", + "createSchedule": "ایجاد برنامه", + "editSchedule": "ویرایش برنامه", + "name": "نام", + "timezone": "منطقه زمانی", + "nameRequired": "نام الزامی است", + "scheduleCreated": "برنامه ایجاد شد", + "scheduleUpdated": "برنامه به روز شد", + "scheduleDeleted": "برنامه حذف شد", + "confirmDeleteSchedule": "برنامه زمانی \"{name}\" حذف شود؟ با این کار لایه‌های آن نیز حذف می‌شود.", + "failedToLoad": "زمان‌بندی‌ها بارگیری نشد", + "failedToSaveSchedule": "زمان‌بندی ذخیره نشد", + "failedToDeleteSchedule": "برنامه حذف نشد", + "currentlyOnCall": "در حال حاضر در حال تماس", + "nobody": "کسی تعیین نکرد", + "override": "لغو", + "layers": "لایه ها", + "addLayer": "لایه اضافه کنید", + "editLayer": "ویرایش لایه", + "noLayers": "هیچ لایه ای پیکربندی نشده است", + "layerName": "نام لایه", + "layerNameRequired": "نام لایه مورد نیاز است", + "priority": "اولویت", + "rotationType": "نوع چرخش", + "daily": "روزانه", + "weekly": "هفتگی", + "custom": "سفارشی", + "intervalDays": "فاصله زمانی (روز)", + "handoffTime": "زمان دست زدن", + "startDate": "تاریخ شروع", + "endDateOptional": "تاریخ پایان (اختیاری)", + "members": "اعضا", + "addMembersHint": "اعضا را به ترتیب چرخش اضافه کنید. اولین عضو ابتدا در حال تماس است.", + "noMembers": "هنوز هیچ عضوی وجود ندارد", + "moveUp": "حرکت به بالا", + "moveDown": "به سمت پایین حرکت کنید", + "layerCreated": "لایه ایجاد شد", + "layerUpdated": "لایه به روز شد", + "layerDeleted": "لایه حذف شد", + "confirmDeleteLayer": "لایه \"{name}\" حذف شود؟", + "failedToSaveLayer": "لایه ذخیره نشد", + "failedToDeleteLayer": "لایه حذف نشد", + "addOverride": "اضافه کردن لغو", + "createOverride": "ایجاد لغو", + "replacedUser": "کاربر جایگزین شد", + "replacementUser": "جایگزینی", + "startTime": "شروع کنید", + "endTime": "پایان", + "reasonOptional": "دلیل (اختیاری)", + "overrideUsersRequired": "هر دو کاربر باید انتخاب شوند", + "overrideTimesRequired": "زمان شروع و پایان مورد نیاز است", + "overrideCreated": "لغو ایجاد شد", + "failedToCreateOverride": "لغو ایجاد نشد", + "overrides": "لغو می کند", + "noOverrides": "هیچ لغو برنامه ریزی نشده است", + "overrideDeleted": "لغو حذف شد", + "confirmDeleteOverride": "این لغو حذف شود؟", + "failedToDeleteOverride": "لغو لغو حذف نشد" + } + }, + "profile": { + "leave": { + "title": "ترک کنید", + "subtitle": "زمان استراحت خود را برنامه‌ریزی کنید و جایگزینی را انتخاب کنید که شیفت‌های کشیک شما را پوشش دهد.", + "tabLabel": "ترک کنید", + "scheduleLeave": "مرخصی را برنامه ریزی کنید", + "editLeave": "ویرایش مرخصی", + "startDate": "شروع کنید", + "endDate": "پایان", + "reason": "دلیل", + "reasonOptional": "دلیل (اختیاری)", + "substitute": "جایگزین", + "substituteOptional": "جایگزین (اختیاری)", + "pickSubstitute": "جایگزینی انتخاب کنید…", + "noSubstitute": "بدون جایگزین", + "cannotBeSelf": "شما نمی توانید خود را به عنوان جایگزین انتخاب کنید.", + "status": "وضعیت", + "past": "گذشته", + "upcoming": "آینده", + "active": "فعال", + "empty": "مرخصی برنامه ریزی نشده", + "datesRequired": "تاریخ شروع و پایان الزامی است", + "endBeforeStart": "پایان باید در تاریخ شروع یا بعد از آن باشد", + "created": "برنامه ریزی شده را ترک کنید", + "updated": "به روز بگذارید", + "deleted": "را حذف کنید", + "confirmDelete": "این دوره مرخصی حذف شود؟", + "failedToLoad": "مرخصی بارگیری نشد", + "failedToSave": "مرخصی ذخیره نشد", + "failedToDelete": "مرخصی حذف نشد" + } + } +}; diff --git a/frontend/src/lib/locales/fa/testing.js b/frontend/src/lib/locales/fa/testing.js new file mode 100644 index 000000000..6f73db5fe --- /dev/null +++ b/frontend/src/lib/locales/fa/testing.js @@ -0,0 +1,379 @@ +export default { + "testing": { + "title": "تست", + "subtitle": "موارد تست و اجرای آزمایشی را مدیریت کنید", + "testCases": "موارد تست", + "testCase": "مورد تست", + "testPlans": "طرح های تست", + "testPlan": "طرح تست", + "testRuns": "اجراهای آزمایشی", + "testRun": "اجرای تست", + "testExecution": "اجرای تست", + "createTestCase": "ایجاد پرونده آزمایشی", + "createTestPlan": "ایجاد طرح تست", + "createTestRun": "اجرای آزمایشی را ایجاد کنید", + "deleteTestCase": "حذف مورد تست", + "deleteTestPlan": "حذف طرح تست", + "deleteTestPlanConfirm": "آیا مطمئنید که می خواهید این طرح آزمایشی را حذف کنید؟ این قابل واگرد نیست.", + "addTestPlan": "اضافه کردن طرح تست", + "createFirstTestPlan": "اولین برنامه آزمایشی خود را برای سازماندهی موارد آزمایشی ایجاد کنید", + "lastRun": "آخرین اجرا", + "neverRun": "هرگز اجرا نشده", + "deleteFolder": "حذف پوشه", + "deleteStep": "مرحله را حذف کنید", + "steps": "مراحل", + "addStep": "مرحله را اضافه کنید", + "expected": "نتیجه مورد انتظار", + "actual": "نتیجه واقعی", + "passed": "موفق", + "failed": "شکست خورد", + "blocked": "مسدود شده است", + "skipped": "رد شد", + "notRun": "اجرا نشده", + "actualResult": "نتیجه واقعی", + "editTestPlan": "ویرایش طرح تست", + "execute": "اجرا کنید", + "failedToCreateTemplate": "الگو ایجاد نشد", + "failedToSaveConfig": "پیکربندی ذخیره نشد", + "noItemTypesAvailable": "هیچ نوع موردی موجود نیست", + "notCovered": "تحت پوشش نیست", + "selectPlanAndName": "یک طرح آزمایشی را انتخاب کنید و یک نام وارد کنید", + "totalRequirements": "کل نیازمندی ها", + "finishExecution": "اتمام اجرا", + "testPlansSubtitle": "موارد تست را در برنامه های اجرایی سازماندهی کنید", + "expandSidebar": "نوار کناری را گسترش دهید", + "collapseSidebar": "کوچک کردن نوار کناری", + "stepsProgress": "{completed}/{total} مرحله ({percent}%)", + "preconditions": "پیش شرط ها", + "stepOfTotal": "مرحله {current} از {total}", + "noStepsDefined": "هیچ مرحله ای تعریف نشده است", + "action": "اقدام", + "data": "داده ها", + "noDataSpecified": "هیچ داده ای مشخص نشده است", + "recordResult": "ثبت نتیجه", + "pass": "موفق", + "fail": "ناموفق", + "skip": "رد کردن", + "actualResultPlaceholder": "در واقع چه اتفاقی افتاد؟", + "notesPlaceholder": "نکات یا مشاهدات تکمیلی ...", + "linkIssue": "پیوند مسئله", + "linked": "پیوند داده شده است", + "stepFailedNoIssue": "این مرحله ناموفق بود اما مشکلی مرتبط نیست.", + "linkExistingItem": "مورد موجود را پیوند دهید", + "searchItemsToLink": "جستجوی موارد برای پیوند...", + "or": "یا", + "createNewIssue": "ایجاد مسئله جدید", + "nextStep": "مرحله بعدی", + "noTestSteps": "بدون مراحل تست", + "noTestStepsDescription": "این مورد آزمایشی هنوز هیچ مرحله تعریف شده ای ندارد. می توانید مراحلی را اضافه کنید تا آن را قابل اجرا کنید.", + "previousCase": "مورد قبلی", + "nextCase": "مورد بعدی", + "caseOfTotal": "مورد {current} از {total}", + "testRunNotFound": "اجرای آزمایشی یافت نشد یا موارد آزمایشی موجود نیست", + "backToTestRuns": "بازگشت به اجرای آزمایشی", + "finishTestExecution": "اجرای تست را تمام کنید", + "finishConfirmMessage": "آیا مطمئن هستید که می خواهید این اجرای آزمایشی را به پایان برسانید؟ با این کار اجرای آزمایشی کامل شده است.", + "failedToFinish": "اجرای آزمایش به پایان نرسید. لطفا دوباره امتحان کنید.", + "unknownItem": "مورد ناشناس", + "addTestCase": "پرونده آزمایشی را اضافه کنید", + "editTestCase": "ویرایش مورد تست", + "deleteTestCaseConfirm": "آیا مطمئن هستید که می خواهید این مورد آزمایشی را حذف کنید؟ این عمل قابل لغو نیست.", + "noTestCasesFound": "هیچ مورد آزمایشی یافت نشد", + "noTestCasesWithLabel": "هیچ مورد آزمایشی با فیلتر برچسب انتخابی یافت نشد.", + "searchTestCases": "جستجوی موارد آزمایشی...", + "createFirstTestCase": "برای ایجاد اولین مورد آزمایشی خود در این پوشه، روی «افزودن پرونده آزمایشی» کلیک کنید.", + "allLabels": "همه برچسب ها", + "noLabels": "بدون برچسب", + "draft": "پیش نویس", + "priorityLow": "کم", + "priorityMedium": "متوسط", + "priorityHigh": "بالا", + "priorityCritical": "انتقادی", + "showingFolderCases": "نمایش موارد آزمایشی در پوشه \"{folder}\"", + "showingAllCases": "نمایش همه موارد تست", + "selectedFolder": "پوشه انتخاب شده", + "allTests": "همه تست ها", + "addFolder": "پوشه اضافه کنید", + "editFolder": "ویرایش پوشه", + "expandFolder": "پوشه را باز کنید", + "collapseFolder": "جمع کردن پوشه", + "parentFolderOptional": "پوشه والد (اختیاری)", + "topLevelFolder": "پوشه سطح بالا", + "subfoldersNestingNote": "زیرپوشه ها را فقط می توان در عمق یک سطح تو در تو قرار داد.", + "deleteFolderConfirm": "آیا مطمئن هستید که می خواهید این پوشه را حذف کنید؟ این عمل قابل لغو نیست.", + "estimatedDuration": "مدت زمان تخمینی", + "preconditionsPlaceholder": "شرایطی را که باید قبل از اجرای این مورد آزمایشی رعایت شود را شرح دهید...", + "testCaseStepsInfo": "پس از ایجاد این مورد آزمایشی، می‌توانید مراحل تست فردی را با اقدامات خاص، داده‌ها و نتایج مورد انتظار برای اجرای دقیق تست اضافه کنید.", + "pressToOpenSteps": "برای باز کردن مراحل، یک کلید برجسته را فشار دهید", + "manageLabels": "مدیریت برچسب ها", + "clickLabelsToAssign": "برای اختصاص دادن/حذف آنها از این مورد آزمایشی، روی برچسب‌ها کلیک کنید", + "closeLabelsModal": "برچسب‌ها را ببندید", + "searchExistingLabels": "برچسب های موجود را جستجو کنید", + "searchLabelsPlaceholder": "جستجوی برچسب ها...", + "cantFindLabel": "نمی توانید آنچه را که نیاز دارید پیدا کنید؟", + "newLabel": "برچسب جدید", + "createNewLabel": "برچسب جدید ایجاد کنید", + "enterLabelName": "نام برچسب را وارد کنید...", + "selectColor": "انتخاب رنگ {color}", + "customColorPicker": "انتخابگر رنگ سفارشی", + "optionalDescription": "توضیحات اختیاری...", + "assigned": "اختصاص داده شده است", + "clickToAssign": "برای اختصاص کلیک کنید", + "noLabelsMatchSearch": "هیچ برچسبی با جستجوی شما مطابقت ندارد", + "adjustSearchOrCreate": "جستجوی خود را تنظیم کنید یا یک برچسب جدید ایجاد کنید.", + "noLabelsAvailable": "هیچ برچسبی در دسترس نیست", + "createFirstLabel": "اولین برچسب خود را ایجاد کنید تا با سازماندهی موارد آزمایشی خود شروع کنید.", + "labelsAssigned": "{count} برچسب اختصاص داده شده است", + "labelsAssigned_one": "{count} برچسب اختصاص داده شد", + "labelsAssigned_other": "{count} برچسب اختصاص داده شده است", + "step": "مرحله", + "expectedResult": "نتیجه مورد انتظار", + "testStepsFor": "مراحل تست برای: {title}", + "backToTestCases": "بازگشت به موارد تست", + "addTestStep": "مرحله تست را اضافه کنید", + "editTestStep": "مرحله تست را ویرایش کنید", + "deleteTestStep": "مرحله تست را حذف کنید", + "deleteStepConfirm": "آیا مطمئن هستید که می خواهید این مرحله آزمایشی را حذف کنید؟", + "updateStep": "مرحله به روز رسانی", + "noTestStepsYet": "هنوز هیچ مرحله آزمایشی وجود ندارد", + "addFirstTestStep": "اولین مرحله تست خود را برای تعریف روش تست اضافه کنید.", + "testStepsConfigured": "{count} مراحل آزمایش پیکربندی شد", + "testStepsConfigured_one": "{count} مرحله آزمایش پیکربندی شد", + "testStepsConfigured_other": "{count} مراحل آزمایش پیکربندی شد", + "failedToLoadTests": "داده های آزمایش بارگیری نشد", + "failedToSaveStep": "مرحله آزمایش ذخیره نشد", + "actionPlaceholder": "عملی که باید انجام شود را شرح دهید...", + "dataPlaceholder": "داده های ورودی یا مقادیر تست...", + "expectedPlaceholder": "نتیجه مورد انتظار ...", + "closeImagePreview": "بستن پیش نمایش تصویر", + "testRunsSubtitle": "اجرای طرح های تست و پیگیری نتایج", + "selectPlanAndEnterName": "لطفاً یک طرح آزمایشی انتخاب کنید و یک نام اجرا وارد کنید", + "createTestRunSubtitle": "اجرای آزمایشی جدید را از طرح آزمایشی شروع کنید", + "selectTestPlan": "طرح تست را انتخاب کنید", + "selectTestPlanPlaceholder": "انتخاب طرح تست...", + "runName": "نام اجرا", + "runNamePlaceholder": "به عنوان مثال، رگرسیون اسپرینت ۵", + "selectAssigneeOptional": "انتخاب گیرنده (اختیاری)", + "createRun": "ایجاد اجرا", + "deleteTestRun": "اجرای تست را حذف کنید", + "deleteRunConfirm": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟", + "failedToDeleteRun": "اجرای آزمایشی حذف نشد", + "failedToCreateRun": "اجرای آزمایشی ایجاد نشد", + "noTestRunsYet": "هنوز آزمایشی انجام نشده است", + "createTestRunToExecute": "یک اجرای آزمایشی برای شروع اجرای موارد آزمایشی ایجاد کنید.", + "continueExecution": "ادامه اجرا", + "viewResults": "مشاهده نتایج", + "viewDetails": "مشاهده جزئیات", + "started": "شروع شد", + "ended": "پایان یافت", + "noMilestone": "بدون نقطه عطف", + "completed": "تکمیل شد", + "inProgress": "در حال انجام است", + "testRunTemplates": "الگوهای اجرای آزمایشی", + "testRunTemplatesSubtitle": "تنظیمات اجرای آزمایشی قابل استفاده مجدد ایجاد کنید", + "createTestRunTemplate": "ایجاد الگوی اجرای آزمایشی", + "descriptionOptional": "توضیحات (اختیاری)", + "templateName": "نام الگو", + "templateNamePlaceholder": "به عنوان مثال، الگوی رگرسیون اسپرینت", + "createTemplate": "ایجاد الگو", + "deleteTemplate": "حذف الگو", + "deleteTemplateConfirm": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟ با این کار، اجرای آزمایشی موجود از این الگو حذف نمی‌شود.", + "noTemplatesYet": "هنوز هیچ قالبی وجود ندارد", + "createTemplatesHint": "برای شروع سریع اجرای آزمایشی با تنظیمات از پیش تعریف شده، الگوهایی ایجاد کنید", + "createTemplateToReuse": "یک الگو برای شروع سریع اجرای آزمایشی با تنظیمات از پیش تعریف شده ایجاد کنید.", + "executeTemplate": "الگو را اجرا کنید", + "templateNameRequired": "نام الگو نمی تواند خالی باشد", + "failedToUpdateTemplate": "الگو به روز رسانی نشد. لطفا دوباره امتحان کنید.", + "failedToDeleteTemplate": "حذف الگو انجام نشد. لطفا دوباره امتحان کنید.", + "failedToStartExecution": "شروع اجرا ناموفق بود. لطفا دوباره امتحان کنید.", + "templateInformation": "اطلاعات الگو", + "templateDescriptionPlaceholder": "توضیحاتی برای این الگو اضافه کنید...", + "noDescription": "هیچ توضیحی ارائه نشده است", + "executionsCount": "اجرا ها ({count})", + "newExecution": "اجرای جدید", + "results": "نتایج", + "progress": "پیشرفت", + "noExecutionsYet": "هنوز اجرایی انجام نشده", + "clickExecuteTemplate": "برای ایجاد اولین اجرای آزمایشی خود از این الگو، روی «اجرای الگو» کلیک کنید", + "quickStats": "آمار سریع", + "totalExecutions": "مجموع اجرا ها", + "testPlanDetails": "جزئیات طرح تست", + "templateNotFound": "الگو پیدا نشد", + "backToTemplates": "بازگشت به الگوها", + "testCoverageReport": "گزارش پوشش تست", + "testCoverageReportSubtitle": "پوشش آزمایشی را در سراسر موارد کاری مشاهده کنید", + "generateReport": "ایجاد گزارش", + "configure": "پیکربندی کنید", + "coverageOverview": "بررسی اجمالی پوشش", + "totalWorkItems": "مجموع موارد کار", + "covered": "پوشیده شده است", + "uncovered": "بدون پوشش", + "coverageRate": "نرخ پوشش", + "workItemsCoverage": "پوشش اقلام کار", + "workItem": "مورد کار", + "linkedTestCases": "موارد تست مرتبط", + "latestResult": "آخرین نتیجه", + "noWorkItemsFound": "هیچ مورد کاری یافت نشد", + "noWorkItemsMatchFilter": "هیچ مورد کاری مطابق با معیار فیلتر شما نیست.", + "adjustFiltersOrBroader": "سعی کنید فیلترهای خود را تنظیم کنید یا جستجوی خود را گسترش دهید.", + "workItemsCoveredByTests": "اقلام کاری تحت پوشش تست ها", + "itemsWithoutTestCoverage": "اقلام بدون پوشش تست", + "selectWorkspacesAndTypes": "فضاهای کاری و انواع موارد را برای درج در گزارش انتخاب کنید", + "selectWorkspaces": "فضاهای کاری را انتخاب کنید", + "allWorkspaces": "همه فضاهای کاری", + "itemTypes": "انواع موارد", + "selectItemTypes": "انواع مورد را انتخاب کنید", + "allItemTypes": "همه انواع اقلام", + "testSetsSubtitle": "موارد تست را در برنامه های اجرایی سازماندهی کنید", + "selectMilestone": "انتخاب نقطه عطف...", + "setName": "نام مجموعه", + "setNamePlaceholder": "به عنوان مثال، طرح تست اسپرینت ۵", + "createSet": "ایجاد مجموعه", + "deleteTestSet": "حذف مجموعه تست", + "deleteSetConfirm": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟", + "noTestPlansYet": "هنوز برنامه آزمایشی وجود ندارد", + "createTestPlanToOrganize": "یک طرح آزمایشی برای سازماندهی و اجرای موارد آزمایشی ایجاد کنید.", + "milestoneOptional": "نقطه عطف (اختیاری)", + "tests": "تست ها", + "assignedTestCases": "{count} موارد آزمایش اختصاص داده شد", + "assignedTestCases_one": "{count} مورد آزمایشی اختصاص داده شد", + "assignedTestCases_other": "{count} موارد آزمایش اختصاص داده شد", + "startRun": "اجرا را شروع کنید", + "manageTestCasesFor": "مدیریت موارد آزمایشی برای {name}", + "searchTestCasesToAdd": "جستجوی موارد آزمایشی برای افزودن...", + "noTestCasesAssigned": "هیچ مورد آزمایشی تعیین نشده است", + "useSearchToAddTestCases": "از جستجوی بالا برای افزودن موارد آزمایشی استفاده کنید.", + "removeTestCase": "مورد آزمایشی را حذف کنید", + "testReportsTitle": "گزارش های تست", + "testReportsSubtitle": "روند و نتایج اجرای آزمون را تجزیه و تحلیل کنید", + "testRunReport": "گزارش اجرای آزمایشی", + "testRunReportSubtitle": "مشاهده نتایج دقیق برای اجرای آزمایشی خاص", + "requirementsCoverage": "پوشش مورد نیاز", + "requirementsCoverageSubtitle": "پیگیری پوشش آزمون برای الزامات", + "loadingReportData": "در حال بارگیری داده های گزارش...", + "loadingCoverageData": "در حال بارگیری داده های پوشش...", + "noTestDataFound": "هیچ داده آزمایشی یافت نشد", + "completeTestRunsToSeeReports": "اجرای آزمایشی را کامل کنید تا گزارش ها را ببینید", + "allRequirements": "همه الزامات", + "coveredOnly": "فقط تحت پوشش", + "notCoveredOnly": "فقط تحت پوشش نیست", + "configureRequirements": "تنظیمات مورد نیاز", + "configureRequirementTypes": "پیکربندی انواع نیاز", + "noRequirementTypesConfigured": "هیچ نوع نیازی پیکربندی نشده است", + "selectItemTypesForCoverage": "انواع مورد را برای پیگیری برای گزارش پوشش انتخاب کنید", + "selectItemTypesForCoverageAnalysis": "انواع اقلام را برای گنجاندن در تجزیه و تحلیل پوشش انتخاب کنید", + "saveConfiguration": "ذخیره پیکربندی", + "overview": "نمای کلی", + "failures": "شکست ها", + "coverage": "پوشش", + "totalRuns": "مجموع اجراها", + "passRate": "نرخ موفقیت", + "avgDuration": "میانگین مدت", + "resultsDistribution": "توزیع نتایج", + "noResultsData": "هیچ داده نتیجه ای وجود ندارد", + "executionTrend": "روند اجرا", + "noTrendData": "داده روند وجود ندارد", + "recentFailures": "شکست های اخیر", + "noRecentFailures": "بدون شکست اخیر", + "testCaseName": "نام مورد آزمایشی", + "lastFailed": "آخرین شکست", + "failCount": "تعداد شکست", + "blockedTests": "تست های مسدود شده", + "noBlockedTests": "بدون تست مسدود شده", + "totalTests": "مجموع تست ها", + "runsCount": "{count} اجرا می شود", + "runsCount_one": "{count} اجرا شود", + "runsCount_other": "{count} اجرا می شود", + "passRateTrend": "روند نرخ موفقیت - آخرین {days} روز", + "recentFailuresSubtitle": "خطاهای تست در {days} روز گذشته", + "blockedTestsSubtitle": "آزمایش‌های مسدود شده در {days} روز گذشته", + "noFailures": "بدون شکست", + "allTestsPassing": "همه تست‌ها موفق هستند", + "noBlockedTestsTitle": "بدون تست مسدود شده", + "allTestsUnblocked": "هیچ تستی مسدود نیست", + "run": "اجرا", + "failedAt": "ناموفق در", + "reason": "دلیل", + "noReasonProvided": "دلیلی ارائه نشده است", + "blockedAt": "مسدود شده در", + "noTrendDataForPeriod": "هیچ داده روندی برای این دوره وجود ندارد", + "noFailuresToShow": "بدون شکست برای نشان دادن", + "noRequirementsFound": "هیچ مورد نیاز یافت نشد", + "noItemsMatchingRequirements": "هیچ موردی مطابق با انواع نیازهای پیکربندی شده وجود ندارد", + "testResults": "نتایج آزمون", + "resultsSummary": "خلاصه نتایج", + "exportResults": "نتایج برون‌ریزی", + "noDefinedSteps": "هیچ مرحله ای برای این مورد آزمایشی تعریف نشده است", + "successRate": "میزان موفقیت", + "runInformation": "اطلاعات اجرا", + "stepResults": "نتایج مرحله", + "stepNumber": "مرحله {number}", + "noResultsYet": "هنوز هیچ نتیجه ای وجود ندارد", + "executeToSeeResults": "برای مشاهده نتایج این تست را اجرا کنید", + "startExecution": "اجرا را شروع کنید", + "executed": "اجرا شد", + "duration": "مدت زمان", + "failedToLoadSummary": "خلاصه آزمایش بارگیری نشد", + "testRunSummary": "خلاصه اجرای تست", + "printLoading": "در حال آماده سازی خلاصه اجرای آزمایشی برای چاپ…", + "backToRun": "بازگشت به اجرای آزمایشی", + "noResultsForExport": "هیچ نتیجه ای برای برون‌ریزی در دسترس نیست", + "stepsNotExecuted": "{count} مراحل به صورت جداگانه اجرا نشدند", + "stepsNotExecuted_one": "مرحله {count} به صورت جداگانه اجرا نشد", + "stepsNotExecuted_other": "{count} مراحل به صورت جداگانه اجرا نشدند", + "caseFormat": "قالب پرونده", + "formatSteps": "مراحل", + "formatBDD": "BDD (Gherkin)", + "formatImmutableNote": "پس از ایجاد نمی توان قالب را تغییر داد.", + "titleFromScenarioNote": "عنوان از نام سناریو گرفته شده است.", + "gherkinLabel": "سناریو (Gherkin)", + "gherkinRequired": "منبع Gherkin برای تست BDD مورد نیاز است.", + "validateGherkin": "اعتبار سنجی", + "gherkinValid": "فایل ویژگی معتبر", + "gherkinValidScenario": "معتبر — سناریوی \"{scenario}\".", + "gherkinInvalidCount": "{count} مشکل پیدا شد.", + "gherkinChangedSinceValidation": "از آخرین اعتبارسنجی تغییر کرده است.", + "gherkinErrorLocation": "خط {line}، ستون {column}", + "gherkinValidationFailed": "درخواست اعتبارسنجی ناموفق بود.", + "failedToSaveCase": "مورد آزمایشی ذخیره نشد.", + "scenario": "سناریو", + "feature": "ویژگی", + "background": "پس زمینه", + "examples": "نمونه ها", + "exampleN": "مثال {n}", + "examplesCount": "{count} مثال(های)", + "exampleResults": "نتایج نمونه", + "examplesNotExecuted": "نمونه ها اجرا نشده است.", + "showRendered": "نمایش ارائه شده", + "showSource": "نمایش منبع", + "copyFeatureFile": "کپی فایل ویژگی", + "featureCopied": "فایل ویژگی کپی شد", + "featureCopyFailed": "فایل ویژگی کپی نشد", + "bddSpecUnavailable": "مشخصات سناریو برای این مورد در دسترس نیست.", + "bddSnapshotNote": "نتایج در برابر عکس فوری مشخصات گرفته شده در هنگام ورود این مورد ثبت می شود.", + "noExampleResults": "هیچ نتیجه نمونه ای برای این مورد در این اجرا یافت نشد.", + "failedToSaveExample": "نتیجه نمونه ذخیره نشد.", + "hideExampleSteps": "پنهان کردن مراحل", + "showExampleSteps": "نمایش {count} مرحله" + }, + "testCase": { + "preview": "پیش نمایش پرونده تست", + "folder": "پوشه", + "priority": "اولویت", + "editTestSteps": "مراحل تست را ویرایش کنید", + "viewTestRuns": "مشاهده اجراهای آزمایشی", + "preconditions": "پیش شرط ها", + "testSteps": "مراحل تست", + "noStepsDefined": "هیچ مرحله ای تعریف نشده است", + "noStepsHelp": "این مورد آزمایشی هنوز هیچ مرحله ای ندارد.", + "addSteps": "افزودن مراحل", + "action": "اقدام", + "data": "داده ها", + "expectedResult": "نتیجه مورد انتظار", + "recentExecutions": "اجرا های اخیر", + "noExecutions": "این مورد آزمایشی در هیچ آزمایشی اخیر اجرا نشده است.", + "set": "تنظیم کنید", + "template": "الگو", + "backToItem": "بازگشت به مورد" + } +}; diff --git a/frontend/src/lib/locales/fa/time.js b/frontend/src/lib/locales/fa/time.js new file mode 100644 index 000000000..ea928ee39 --- /dev/null +++ b/frontend/src/lib/locales/fa/time.js @@ -0,0 +1,266 @@ +export default { + "time": { + "title": "ردیابی زمان", + "subtitle": "پیگیری زمان صرف شده برای موارد کاری", + "logTime": "ثبت زمان", + "editTimeEntry": "ویرایش زمان ورود", + "updateEntry": "به روز رسانی ورودی", + "timeSpent": "زمان صرف شده", + "remaining": "باقی مانده است", + "estimate": "تخمین", + "originalEstimate": "برآورد اصلی", + "hours": "ساعت", + "minutes": "دقیقه", + "days": "روز", + "weeks": "هفته ها", + "startTimer": "تایمر را شروع کنید", + "stopTimer": "توقف تایمر", + "pauseTimer": "تایمر مکث", + "resumeTimer": "از سرگیری تایمر", + "timeLogged": "زمان با موفقیت ثبت شد", + "timeTrackingProject": "پروژه ردیابی زمان", + "noCustomer": "بدون مشتری", + "workItemOptional": "مورد کاری (اختیاری)", + "whatDidYouWorkOn": "روی چه چیزی کار کردید؟", + "start": "شروع کنید", + "end": "پایان", + "duration": "مدت زمان", + "durationHelperText": "برای محاسبه خودکار زمان پایان، زمان شروع + مدت زمان (2 ساعت) را وارد کنید، یا زمان های شروع + پایان را برای محاسبه خودکار مدت زمان وارد کنید. قالب‌های زمانی: ۱ ساعت، ۳۰ دقیقه، ۱:۳۰، ۲:۱۵، ۱ روز (=۸ ساعت)", + "pomodoro": { + "title": "تنظیمات Pomodoro", + "subtitle": "رفتار تایمر دسکتاپ و ثبت خودکار زمان را پیکربندی کنید.", + "loadingSettings": "در حال بارگیری تنظیمات...", + "loadError": "تنظیمات بارگیری نشد: {error}", + "settingsSaved": "تنظیمات ذخیره شد", + "saveError": "تنظیمات ذخیره نشد: {error}", + "timer": "تایمر", + "workDuration": "مدت زمان کار", + "workDurationHelper": "دقیقه در هر جلسه تمرکز", + "shortBreak": "استراحت کوتاه", + "shortBreakHelper": "دقیقه بین جلسات کاری", + "longBreak": "استراحت طولانی", + "longBreakHelper": "چند دقیقه پس از یک چرخه کامل", + "sessionsBeforeLongBreak": "جلسات قبل از استراحت طولانی", + "sessionsBeforeLongBreakHelper": "جلسات کاری به پایان رسید", + "behavior": "رفتار", + "autoStartBreaks": "وقفه های شروع خودکار", + "autoStartWork": "شروع خودکار کار", + "logging": "ورود به سیستم", + "autoLogCompletedSessions": "به طور خودکار جلسات کاری تکمیل شده را ثبت کنید", + "project": "پروژه", + "projectHelper": "پروژه های زمان فعال از این سرور فضای کاری", + "selectProject": "انتخاب پروژه...", + "loadingProjects": "در حال بارگیری پروژه ها...", + "description": "توضیحات", + "descriptionHelper": "برای ورودی های جدید کارنامه استفاده می شود", + "sessionPlaceholder": "جلسه پومودورو", + "cancel": "لغو کنید", + "saveSettings": "تنظیمات را ذخیره کنید" + }, + "timesheet": { + "title": "جدول زمانی", + "subtitle": "مروری بر جدول زمانی هفتگی", + "total": "مجموع", + "noEntries": "هیچ ورودی زمانی در این هفته وجود ندارد. برای شروع پروژه اضافه کنید.", + "projectItem": "پروژه / مورد کاری", + "addProject": "افزودن پروژه به جدول زمانی...", + "removeProject": "حذف از جدول زمانی", + "showWeekends": "آخر هفته ها" + }, + "onboarding": { + "title": "ردیابی زمان را تنظیم کنید", + "subtitle": "بیایید اولین سازمان و پروژه مشتری خود را برای شروع ایجاد کنیم", + "setupProgress": "پیشرفت راه اندازی", + "stepOf": "مرحله {current} از {total}", + "createCustomerTitle": "اولین سازمان مشتری خود را ایجاد کنید", + "createCustomerDescription": "یک سازمان مشتری نماینده شرکت یا نهادی است که شما برای آن کار می کنید. این می تواند یک سازمان مشتری، کارفرمای شما یا شرکت خودتان باشد.", + "createProjectTitle": "اولین پروژه خود را ایجاد کنید", + "createProjectDescription": "پروژه ها به سازماندهی کار شما در درون مشتری کمک می کنند. شما می توانید زمان را در برابر پروژه های خاص پیگیری کنید.", + "organizationNameRequired": "نام سازمان الزامی است", + "projectNameRequired": "نام پروژه الزامی است", + "failedToCreateCustomer": "ایجاد سازمان مشتری ناموفق بود. لطفا دوباره امتحان کنید.", + "failedToCreateProject": "پروژه ایجاد نشد. لطفا دوباره امتحان کنید.", + "customerCreatedSuccess": "سازمان مشتری \"{name}\" با موفقیت ایجاد شد!", + "organizationNamePlaceholder": "به عنوان مثال، Acme Corporation، TechStart Inc، Freelance Work", + "emailPlaceholder": "billing@customer.com", + "contactPersonPlaceholder": "جان اسمیت", + "projectNamePlaceholder": "به عنوان مثال، توسعه وب سایت، مشاوره، کار عمومی", + "projectDescriptionPlaceholder": "شرح مختصری از پروژه ...", + "hourlyRateHint": "اگر مطمئن نیستید می توانید بعداً این را تنظیم کنید", + "skipForNow": "فعلا رد شوید", + "completeSetup": "راه اندازی کامل" + }, + "categories": { + "title": "دسته بندی پروژه ها", + "subtitle": "برای مدیریت بهتر پروژه ها را در دسته بندی سازماندهی کنید", + "newCategory": "دسته بندی جدید", + "noCategories": "هنوز هیچ دسته ای وجود ندارد", + "createFirstHint": "اولین دسته خود را برای سازماندهی پروژه ها ایجاد کنید", + "failedToSave": "دسته بندی ذخیره نشد", + "failedToDelete": "دسته بندی حذف نشد", + "confirmDelete": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟" + }, + "reports": { + "title": "گزارش ها", + "subtitle": "داده های ردیابی زمان و گزارش های برون‌ریزی خود را تجزیه و تحلیل کنید", + "exportCSV": "برون‌ریزی CSV", + "exportPDF": "برون‌ریزی PDF", + "filters": "فیلترها", + "customer": "مشتری", + "allCustomers": "همه مشتریان", + "allProjects": "همه پروژه ها", + "descriptionFilter": "توضیحات فیلتر", + "searchDescriptions": "جستجوی توضیحات...", + "fromDate": "از تاریخ", + "toDate": "به تاریخ", + "applyFilters": "اعمال فیلترها", + "totalHours": "کل ساعت ها", + "totalEntries": "کل ورودی ها", + "averagePerDay": "میانگین در روز", + "topProject": "پروژه برتر", + "loadingReports": "در حال بارگیری گزارشات...", + "noEntriesFound": "هیچ ورودی زمانی برای فیلترهای انتخابی یافت نشد.", + "totalTime": "زمان کل", + "entriesShown": "{count} ورودی نشان داده شده است", + "projectReports": "گزارش های پروژه", + "personal": "شخصی", + "project": "پروژه", + "selectProject": "یک پروژه را انتخاب کنید", + "budget": "بودجه", + "budgetUsage": "استفاده از بودجه", + "contributors": "مشارکت کنندگان", + "memberBreakdown": "شکست تیم", + "member": "عضو", + "hoursLogged": "ساعت ثبت شده", + "entries": "ورودی ها", + "avgPerDay": "میانگین/روز", + "dailyHours": "ساعت کاری روزانه", + "noBudgetSet": "بودجه تعیین نشده است", + "noProjectSelected": "یک پروژه را برای مشاهده گزارش آن انتخاب کنید", + "printLoading": "در حال آماده کردن گزارش زمان برای چاپ…", + "printUnavailable": "این گزارش زمان دیگر در دسترس نیست. به گزارش ها برگردید و دوباره آن را صادر کنید.", + "backToReports": "بازگشت به گزارشات" + }, + "timer": { + "goToWorkItem": "برو به مورد کاری: {title}", + "expandTimer": "تایمر را گسترش دهید", + "collapseTimer": "تایمر جمع کردن", + "project": "پروژه", + "workspace": "فضای کار" + }, + "projects": { + "title": "پروژه ها", + "subtitle": "پروژه های جهانی را برای ردیابی زمان در فضاهای کاری مدیریت کنید", + "addProject": "اضافه کردن پروژه", + "projectsTab": "پروژه ها", + "categoriesTab": "دسته بندی ها", + "searchProjects": "جستجوی پروژه ها...", + "allCategories": "همه دسته ها", + "allStatuses": "همه وضعیت ها", + "statusCount": "{count} وضعیت", + "noProjects": "هیچ پروژه ای یافت نشد اولین پروژه خود را برای شروع ردیابی زمان ایجاد کنید.", + "noProjectsInCategory": "هیچ پروژه ای در این دسته وجود ندارد.", + "failedToSave": "پروژه ذخیره نشد", + "deleteProject": "حذف پروژه", + "confirmDelete": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟", + "unknownCustomer": "مشتری ناشناس", + "project": "پروژه", + "customer": "مشتری", + "rate": "نرخ", + "projectName": "نام پروژه", + "descriptionOptional": "توضیحات (اختیاری)", + "hourlyRateOptional": "نرخ ساعتی (اختیاری)" + }, + "calendar": { + "title": "تقویم هفتگی", + "itemCount": "{count} مورد", + "exportWeekToICS": "هفته برون‌ریزی به ICS", + "myWorkItems": "موارد کار من", + "dragToSchedule": "موارد را بکشید تا آنها را زمان بندی کنید", + "noWorkItems": "هیچ مورد کاری اختصاص داده نشده است", + "workItemsWillAppear": "هنگامی که موارد کاری به شما اختصاص داده شود، در اینجا ظاهر می شوند", + "itemsCompleted": "{completed} از {total} مورد تکمیل شد", + "previousWeek": "هفته قبل", + "thisWeek": "این هفته", + "nextWeek": "هفته آینده", + "newTaskPlaceholder": "عنوان کار جدید...", + "failedToCreateTask": "ایجاد کار ناموفق بود" + }, + "entry": { + "title": "زمان ورود", + "subtitle": "ساعات کاری خود را ثبت کنید و ورودی های زمان را مدیریت کنید", + "addTimeEntry": "یک ورودی زمان جدید اضافه کنید", + "failedToSave": "ذخیره زمان ورود ناموفق بود. لطفا ورودی خود را بررسی کنید.", + "confirmDelete": "آیا مطمئن هستید که می خواهید این ورودی زمانی را حذف کنید؟", + "needProjects": "شما باید قبل از ثبت زمان، پروژه‌های فعال ایجاد کنید.", + "goToProjects": "برو به پروژه‌ها", + "startSetupWizard": "ویزارد راه اندازی", + "applyFiltersTitle": "فیلترهای انتخاب شده را در لیست ورودی های زمان اعمال کنید", + "clearFiltersTitle": "همه فیلترها را پاک کنید و تمام ورودی‌های زمان را نشان دهید", + "noEntries": "هیچ ورودی زمانی پیدا نشد. ورود اولین بار خود را برای شروع ثبت کنید.", + "clickToView": "برای مشاهده {key}-{number} کلیک کنید", + "budgetExceeded": "- بیش از بودجه", + "submitted": "ارسال شد" + }, + "organizations": { + "title": "سازمان ها", + "subtitle": "سازمان های مشتری خود را مدیریت کنید", + "addOrganization": "سازمان را اضافه کنید", + "noOrganizations": "هیچ سازمانی یافت نشد اولین سازمان خود را برای شروع ایجاد کنید.", + "name": "نام سازمان", + "emailOptional": "ایمیل (اختیاری)", + "contactPersonOptional": "شخص تماس (اختیاری)", + "failedToSave": "سازمان ذخیره نشد", + "failedToDelete": "سازمان حذف نشد", + "deleteOrganization": "سازمان را حذف کنید", + "confirmDelete": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟" + }, + "permissions": { + "title": "مجوزهای پروژه", + "managePermissions": "مدیریت مجوزها", + "managers": "مدیران", + "members": "اعضا", + "addManager": "مدیر را اضافه کنید", + "addMember": "اضافه کردن عضو", + "removeManager": "مدیر را حذف کنید", + "removeMember": "حذف عضو", + "noManagers": "هیچ مدیری تعیین نشده است", + "noManagersHint": "وقتی هیچ مدیری اختصاص داده نشود، فقط مدیران جهانی و کاربران دارای «مدیریت تمام پروژه‌ها و گزارش‌های کاری» می‌توانند این پروژه را مدیریت کنند.", + "noMembers": "هیچ عضوی تعیین نشده است", + "noMembersHint": "وقتی هیچ عضوی اختصاص داده نشود، هر کسی می‌تواند برای این پروژه وقت رزرو کند", + "grantedAt": "اضافه شد", + "confirmRemove": "آیا مطمئن هستید که می خواهید {name} را حذف کنید؟", + "failedToAdd": "افزودن ناموفق بود", + "failedToRemove": "حذف نشد", + "managersNote": "مدیران:", + "managersNoteText": "می تواند تنظیمات پروژه را ویرایش کند، اعضا را مدیریت کند، و تمام ورودی های زمان این پروژه را مشاهده کند.", + "membersNote": "اعضا:", + "membersNoteText": "می تواند در این پروژه زمان رزرو کند و ورودی های زمان خود را مشاهده کند." + } + }, + "timeProject": { + "editProject": "ویرایش پروژه", + "newProject": "پروژه جدید", + "projectName": "نام پروژه", + "status": "وضعیت", + "customerOptional": "مشتری (اختیاری)", + "none": "هیچ کدام", + "categoryOptional": "دسته (اختیاری)", + "hourlyRate": "نرخ ساعتی ($)", + "maxHours": "حداکثر ساعت", + "maxHoursPlaceholder": "بدون محدودیت", + "maxHoursHint": "بودجه اختیاری برای گزارش", + "projectColor": "رنگ پروژه", + "updateProject": "به روز رسانی پروژه", + "createProject": "ایجاد پروژه" + }, + "timeProjectCategory": { + "editCategory": "ویرایش دسته", + "newCategory": "دسته بندی جدید", + "categoryName": "نام دسته", + "categoryNamePlaceholder": "توسعه، بازاریابی، عملیات ...", + "optionalDescription": "توضیحات اختیاری...", + "updateCategory": "به روز رسانی دسته", + "createCategory": "ایجاد دسته" + } +}; diff --git a/frontend/src/lib/locales/fa/ui.js b/frontend/src/lib/locales/fa/ui.js new file mode 100644 index 000000000..901d861dc --- /dev/null +++ b/frontend/src/lib/locales/fa/ui.js @@ -0,0 +1,629 @@ +export default { + "pickers": { + "selectStatus": "وضعیت را انتخاب کنید", + "selectTeam": "تیم را انتخاب کنید", + "select": "انتخاب کنید", + "search": "جستجو کنید", + "options": "گزینه ها", + "clearSelection": "پاک کردن انتخاب", + "noResultsFor": "هیچ نتیجه ای برای \"{query}\" وجود ندارد", + "createItem": "ایجاد \"{value}\"", + "noItemsFound": "هیچ موردی یافت نشد", + "noItemsAvailable": "هیچ موردی در دسترس نیست", + "startTypingToSearch": "برای جستجو شروع به تایپ کنید…", + "searchPages": "جستجوی صفحات…", + "selectAsset": "دارایی را انتخاب کنید", + "noTag": "بدون برچسب", + "showingOfTotal": "نمایش {shown} از {total} - برای جستجو تایپ کنید", + "selectUser": "کاربر را انتخاب کنید", + "searchUsers": "جستجوی کاربران...", + "users": "کاربران", + "noUsersFound": "هیچ کاربری پیدا نشد", + "noUsersAvailable": "هیچ کاربری در دسترس نیست", + "assignTo": "اختصاص به", + "unassigned": "واگذار نشده است", + "assignee": "مسئول", + "user": "کاربر", + "group": "گروه", + "searchUser": "جستجوی کاربر...", + "searchGroup": "جستجوی گروه...", + "agentOnline": "عامل آنلاین — یک رانر زنده موارد اختصاص داده شده را برمی‌دارد", + "agentOffline": "عامل آفلاین - استخر رانر آن رانر زنده ندارد. موارد اختصاص داده شده در صف قرار می گیرند", + "agentLocal": "عامل روی این سرور اجرا می‌شود", + "agentUnbound": "هیچ عاملی به این فضای کاری متصل نیست - اختصاص دادن، اجرا را شروع نمی‌کند", + "selectGroup": "گروه را انتخاب کنید", + "selectCategories": "دسته ها را انتخاب کنید", + "removeCategory": "حذف دسته", + "categoriesSelected": "{count} دسته انتخاب شد", + "searchCategories": "جستجوی دسته‌ها...", + "noCategoriesFound": "هیچ دسته ای یافت نشد", + "selectCollections": "مجموعه ها را انتخاب کنید", + "selectWorkspaces": "فضاهای کاری را انتخاب کنید", + "searchWorkspaces": "جستجو در فضاهای کاری...", + "noWorkspacesFound": "هیچ فضای کاری یافت نشد", + "selectConfigurationSet": "مجموعه تنظیمات را انتخاب کنید", + "searchConfigurationSets": "جستجوی مجموعه‌های پیکربندی...", + "configurationSets": "مجموعه های پیکربندی", + "defaultConfiguration": "پیکربندی پیش فرض", + "defaultConfigurationDescription": "از تنظیمات پیش فرض فضای کاری استفاده می کند", + "noConfigurationSetsFound": "هیچ مجموعه پیکربندی یافت نشد", + "entityAlreadyAssigned": "{label} قبلاً اختصاص داده شده است", + "itemType": "نوع مورد", + "priorities": "اولویت ها", + "itemTypes": "انواع مورد", + "level": "سطح {level}", + "assigned": "اختصاص داده شده است", + "noEntitiesAssigned": "هیچ {entities} اختصاص داده نشده است", + "available": "موجود است", + "noEntitiesMatchSearch": "هیچ {entities} با جستجوی شما مطابقت ندارد", + "allEntitiesAssigned": "همه {entities} اختصاص داده شده است", + "inConfigSet": "در مجموعه تنظیمات", + "searchEntities": "جستجوی {entities}...", + "selectField": "فیلد را انتخاب کنید", + "searchFields": "فیلدهای جستجو...", + "noFieldsFound": "هیچ فیلدی پیدا نشد", + "customFields": "فیلدهای سفارشی", + "custom": "سفارشی", + "customFieldDesc": "فیلد سفارشی", + "fieldTypes": { + "text": "متن", + "number": "شماره", + "date": "تاریخ", + "select": "انتخاب کنید", + "multiselect": "چند انتخابی", + "checkbox": "چک باکس", + "url": "URL", + "email": "ایمیل", + "phone": "تلفن", + "textarea": "ناحیه متن", + "textArea": "ناحیه متن", + "user": "کاربر", + "rating": "رتبه بندی", + "boolean": "بولی", + "reference": "مرجع", + "identifier": "شناسه" + }, + "fieldCategories": { + "basic": "فیلدهای پایه", + "dates": "فیلدهای تاریخ", + "people": "مردم", + "workflow": "گردش کار", + "automation": "اتوماسیون", + "custom": "فیلدهای سفارشی" + }, + "fields": { + "title": { + "name": "عنوان", + "description": "عنوان مورد" + }, + "description": { + "name": "توضیحات", + "description": "توضیحات مورد" + }, + "status": { + "name": "وضعیت", + "description": "وضعیت فعلی" + }, + "priority": { + "name": "اولویت", + "description": "سطح اولویت" + }, + "type": { + "name": "نوع", + "description": "نوع مورد" + }, + "assignee": { + "name": "مسئول", + "description": "کاربر اختصاص داده شده" + }, + "reporter": { + "name": "گزارش‌دهنده", + "description": "چه کسی مورد را گزارش کرد" + }, + "createdAt": { + "name": "ایجاد شده در", + "description": "زمانی که مورد ایجاد شد" + }, + "updatedAt": { + "name": "به روز شده در", + "description": "زمانی که مورد آخرین بار به روز شد" + }, + "dueDate": { + "name": "سررسید", + "description": "زمانی که مورد سررسید است" + }, + "startDate": { + "name": "تاریخ شروع", + "description": "وقتی کار شروع می شود" + }, + "estimate": { + "name": "تخمین", + "description": "تلاش برآورد شده" + }, + "openChildCount": { + "name": "تعداد فرزندان باز", + "description": "فرزندان مستقیم که در وضعیت تکمیل‌شده نیستند" + }, + "openDescendantCount": { + "name": "تعداد فرزندان باز", + "description": "فرزندان در هر عمقی که در وضعیت تکمیل‌شده نیستند" + }, + "labels": { + "name": "برچسب ها", + "description": "برچسب‌های موارد" + }, + "sprint": { + "name": "اسپرینت", + "description": "اسپرینت مرتبط" + }, + "iteration": { + "name": "تکرار", + "description": "تکرار مرتبط (اسپرینت، انتشار و غیره)" + }, + "milestone": { + "name": "نقطه عطف", + "description": "نقطه عطف هدف" + }, + "parent": { + "name": "والد", + "description": "مورد والد" + }, + "children": { + "name": "فرزندان", + "description": "موارد فرزند" + }, + "links": { + "name": "پیوندها", + "description": "موارد مرتبط" + }, + "attachments": { + "name": "پیوست ها", + "description": "پیوست های فایل" + }, + "comments": { + "name": "نظرات", + "description": "نظرات بحث" + }, + "watchers": { + "name": "ناظران", + "description": "کاربرانی که این مورد را تماشا می کنند" + } + }, + "iconAndColor": "نماد و رنگ", + "searchIcons": "نمادهای جستجو...", + "icons": "نمادها", + "colors": "رنگ ها", + "icon": "نماد", + "color": "رنگ", + "allLabels": "همه برچسب ها", + "selectLabels": "برچسب ها را انتخاب کنید", + "noLabelsFoundFor": "هیچ برچسبی برای \"{query}\" یافت نشد", + "labelCommaNotAllowed": "نام برچسب ها نمی توانند حاوی کاما باشند", + "mentionUsers": "کاربران را ذکر کنید", + "searching": "در حال جستجو...", + "noNotificationPersonalTask": "کارهای شخصی اعلان ارسال نمی کنند", + "selectMilestone": "نقطه عطف را انتخاب کنید", + "selectMilestones": "نقاط عطف را انتخاب کنید", + "noMilestone": "بدون نقطه عطف", + "milestones": "نقاط عطف", + "milestonesSelected": "{count} نقطه عطف انتخاب شد", + "milestonesSelected_one": "{count} نقطه عطف انتخاب شد", + "milestonesSelected_other": "{count} نقطه عطف انتخاب شد", + "noMilestonesFound": "هیچ نقطه عطفی پیدا نشد", + "showCompletedMilestones": "نمایش تکمیل‌شده‌ها", + "selectIteration": "تکرار را انتخاب کنید", + "noIteration": "بدون تکرار", + "selectPriority": "اولویت را انتخاب کنید", + "noPriority": "بدون اولویت", + "loadingPriorities": "در حال بارگیری اولویت ها...", + "noPrioritiesConfigured": "هیچ اولویتی پیکربندی نشده است", + "selectProject": "پروژه را انتخاب کنید", + "linkRepositories": "پیوند مخازن", + "selectRepositoriesFrom": "انتخاب مخازن از {provider}", + "searchRepositories": "جستجو در مخازن...", + "loadingRepositories": "در حال بارگیری مخازن...", + "noRepositoriesMatchSearch": "هیچ مخزن با جستجوی شما مطابقت ندارد", + "noRepositoriesAvailable": "هیچ مخزن موجود نیست", + "alreadyLinked": "قبلاً پیوند داده شده است", + "linkSelected": "پیوند انتخاب شد", + "linking": "پیوند دادن...", + "repositoriesSelected": "{count} انتخاب شد", + "selectRole": "نقش را انتخاب کنید", + "selectScreen": "صفحه نمایش را انتخاب کنید", + "searchTestCases": "جستجوی موارد آزمایشی...", + "selectWorkflow": "گردش کار را انتخاب کنید", + "selectConditionSet": "مجموعه شرایط را انتخاب کنید", + "selectApprovalSet": "مجموعه تایید را انتخاب کنید", + "datePicker": { + "previousMonth": "ماه قبل", + "nextMonth": "ماه بعد", + "openCalendar": "باز کردن تقویم", + "selectDate": "انتخاب تاریخ..." + } + }, + "editors": { + "enterText": "متن را وارد کنید...", + "selectDate": "انتخاب تاریخ...", + "clickToChangeColor": "برای تغییر رنگ کلیک کنید", + "saveEnter": "ذخیره (Enter)", + "cancelEscape": "لغو (Escape)", + "availableFields": "فیلدهای موجود", + "selectedFields": "فیلدهای انتخاب شده", + "dragFieldsToAdd": "فیلدها را بکشید تا آنها را اضافه کنید", + "dragToReorderOrDrop": "برای مرتب کردن مجدد یا رها کردن فیلدها در اینجا بکشید", + "dropFieldsHere": "فیلدها را برای پیکربندی اینجا رها کنید", + "noFieldsMatchSearch": "هیچ فیلدی با جستجوی شما مطابقت ندارد", + "noFieldsAvailable": "هیچ فیلدی در دسترس نیست", + "allFieldsAdded": "تمام فیلدهای موجود اضافه شده است", + "bold": "پررنگ (Ctrl+B)", + "italic": "مورب (Ctrl+I)", + "strikethrough": "خط‌خوردگی", + "inlineCode": "کد درون خطی", + "bulletList": "فهرست نقطه‌ای", + "numberedList": "فهرست شماره‌گذاری‌شده", + "insertImage": "درج تصویر", + "userNotFound": "کاربر پیدا نشد", + "multipleUsersMatch": "چند کاربر مطابقت دارند", + "insertDiagram": "درج نمودار", + "insertPageLink": "پیوند صفحه دانش را درج کنید", + "searchPagesToLink": "جستجوی صفحات…", + "diagramEdit": "ویرایش نمودار", + "diagramOpen": "باز کردن نمودار", + "diagramUntitled": "نمودار بدون عنوان", + "diagramNamePlaceholder": "نام نمودار", + "diagramUnsaved": "تغییرات ذخیره نشده", + "diagramUnsavedConfirm": "تغییرات نمودار ذخیره نشده کنار گذاشته شود؟", + "diagramDeleted": "نمودار حذف شده است", + "diagramRenderError": "نمودار ارائه نشد", + "diagramLoadError": "نمودار بارگیری نشد", + "diagramSaveError": "نمودار ذخیره نشد", + "mermaidRendering": "در حال رندر نمودار Mermaid", + "mermaidParseError": "خطای تجزیه Mermaid", + "mermaidEmpty": "بلوک Mermaid خالی", + "useProvider": "ویرایش با {label}", + "useRichText": "از ویرایشگر متن غنی استفاده کنید", + "providerActive": "{label} فعال است", + "discardProviderChanges": "از تغییرات ذخیره نشده صرف نظر شود؟", + "discardProviderChangesMessage": "ویرایش‌های شما در {label} ذخیره نشده است. تغییر ویرایشگرها آنها را کنار می گذارد.", + "discardChanges": "دور انداختن", + "providerError": "افزونه ویرایشگر خطایی را گزارش کرد: {message}" + }, + "dialogs": { + "cancel": "لغو کنید", + "confirm": "تایید کنید", + "save": "ذخیره کنید", + "close": "بستن", + "delete": "حذف کنید", + "update": "به روز رسانی", + "confirmations": { + "deleteItem": "آیا مطمئنید که می خواهید \"{name}\" را حذف کنید؟ این قابل واگرد نیست.", + "deleteSection": "آیا مطمئن هستید که می خواهید این بخش را حذف کنید؟", + "discardChanges": "شما تغییرات ذخیره نشده ای دارید. آیا مطمئن هستید که می خواهید لغو کنید؟", + "dismissAllNotifications": "آیا مطمئن هستید که می‌خواهید همه اعلان‌ها را رد کنید؟ این قابل واگرد نیست.", + "removeAvatar": "آیا مطمئن هستید که می خواهید عکس نمایه خود را حذف کنید؟", + "revokeCalendarFeed": "آیا مطمئنید که می‌خواهید فید تقویم URL خود را لغو کنید؟ هر تقویمی که از این URL استفاده کند همگام‌سازی متوقف می‌شود.", + "deleteTheme": "آیا مطمئن هستید که می خواهید این پوسته را حذف کنید؟ این قابل واگرد نیست.", + "resetBoardConfig": "آیا مطمئن هستید که می خواهید پیکربندی برد پیش فرض را بازنشانی کنید؟ با این کار پیکربندی سفارشی شما حذف می شود.", + "deleteCustomField": "آیا مطمئن هستید که می خواهید فیلد سفارشی \"{name}\" را حذف کنید؟ این باعث حذف آن از تمام پروژه ها می شود.", + "deleteLinkType": "آیا مطمئن هستید که می خواهید این نوع پیوند را حذف کنید؟ با این کار تمام پیوندهای این نوع نیز حذف می شود.", + "deleteAsset": "آیا مطمئن هستید که می خواهید این دارایی را حذف کنید؟", + "deleteAssetSet": "آیا مطمئن هستید که می خواهید این مجموعه دارایی را حذف کنید؟ با این کار تمام دارایی‌ها، انواع و دسته‌های موجود در آن حذف می‌شود.", + "deleteAssetType": "آیا مطمئن هستید که می خواهید این نوع دارایی را حذف کنید؟ دارایی‌هایی که از این نوع استفاده می‌کنند، دیگر نوع خاصی ندارند.", + "deleteCategory": "آیا مطمئن هستید که می خواهید این دسته را حذف کنید؟ دسته های فرزند به والد منتقل می شوند.", + "revokeRole": "آیا مطمئنید که می خواهید این نقش را لغو کنید؟", + "quitApplication": "آیا مطمئن هستید که می خواهید از برنامه خارج شوید؟ سرور خاموش خواهد شد.", + "deleteConnection": "آیا مطمئن هستید که می خواهید این اتصال را حذف کنید؟ این عمل قابل لغو نیست.", + "deleteWidget": "این ویجت حذف شود؟ این ویجت از این بخش حذف خواهد شد.", + "deleteScreen": "آیا مطمئن هستید که می خواهید صفحه نمایش \"{name}\" را حذف کنید؟ این روی تمام فضاهای کاری که از این صفحه استفاده می کنند تأثیر می گذارد." + }, + "alerts": { + "nameRequired": "نام الزامی است", + "pleaseSelectImage": "لطفا یک فایل تصویری را انتخاب کنید", + "timerAlreadyRunning": "یک تایمر از قبل در حال اجرا است. لطفاً قبل از شروع یک مورد جدید آن را متوقف کنید.", + "noTimerRunning": "هیچ تایمر در حال حاضر کار نمی کند.", + "timerSyncing": "تایمر در حال حاضر در حال همگام سازی است. لطفا صبر کنید و دوباره امتحان کنید.", + "startTimerFromItem": "لطفاً یک تایمر از داخل یک مورد کاری برای ارائه زمینه شروع کنید.", + "cannotDeleteDefaultScreen": "نمی توان صفحه پیش فرض را حذف کرد. این صفحه برای فضاهای کاری بدون مجموعه پیکربندی لازم است.", + "applicationShuttingDown": "برنامه در حال خاموش شدن است...", + "pdfExportComingSoon": "PDF برون‌ریزی به زودی برای نمای بلوکی جدول زمانی", + "configUpdatedSuccess": "مجموعه پیکربندی با موفقیت به روز شد. همه موارد کاری در حال حاضر از وضعیت‌های گردش کار جدید استفاده می‌کنند.", + "failedToSave": "ذخیره نشد: {error}", + "failedToDelete": "حذف نشد: {error}", + "shutdownFailed": "برنامه بسته نشد", + "failedToUpdate": "به روز رسانی انجام نشد: {error}", + "failedToLoad": "بارگیری نشد: {error}", + "stopTimerFailed": "تایمر متوقف نشد", + "failedToCreate": "ایجاد نشد: {error}", + "failedToUpload": "آپلود نشد: {error}", + "failedToGeneratePdf": "PDF تولید نشد. لطفا دوباره امتحان کنید.", + "failedToApplyConfig": "تغییر پیکربندی اعمال نشد: {error}", + "failedToAddManager": "مدیر اضافه نشد: {error}", + "failedToRemoveManager": "مدیر حذف نشد: {error}", + "failedToSaveWorkspace": "فضای کاری ذخیره نشد. لطفاً ورودی خود را بررسی کنید و دوباره امتحان کنید.", + "failedToResetConfig": "پیکربندی بازنشانی نشد: {error}", + "failedToToggleStatus": "تغییر وضعیت نوع پیوند انجام نشد: {error}", + "failedToAssignRole": "نقش تعیین نشد: {error}", + "failedToRevokeRole": "نقش لغو نشد: {error}", + "failedToUpdateRole": "به‌روزرسانی نقش همه کاربران ناموفق بود: {error}", + "failedToLoadFields": "فیلدها بارگیری نشد: {error}", + "failedToSaveFields": "تخصیص‌های فیلد ذخیره نشد: {error}", + "errorAddingTestCase": "خطا در افزودن مورد آزمایشی: {error}", + "failedToCreateLabel": "برچسب ایجاد نشد: {error}", + "failedToSaveLayout": "تغییرات طرح بندی ذخیره نشد", + "statusInUseByTransitions": "نمی‌توان «{name}» را حذف کرد زیرا در انتقال‌های گردش کار {count} استفاده می‌شود. برای حذف این وضعیت، به مدیریت گردش کار بروید، تمام انتقال هایی را که از این وضعیت استفاده می کنند حذف کنید، سپس دوباره سعی کنید وضعیت را حذف کنید.", + "statusInUseByTransitions_one": "نمی‌توان «{name}» را حذف کرد زیرا در انتقال گردش کار {count} استفاده می‌شود. برای حذف این وضعیت، به مدیریت گردش کار بروید، تمام انتقال هایی را که از این وضعیت استفاده می کنند حذف کنید، سپس دوباره سعی کنید وضعیت را حذف کنید.", + "statusInUseByTransitions_other": "نمی‌توان «{name}» را حذف کرد زیرا در انتقال‌های گردش کار {count} استفاده می‌شود. برای حذف این وضعیت، به مدیریت گردش کار بروید، تمام انتقال هایی را که از این وضعیت استفاده می کنند حذف کنید، سپس دوباره سعی کنید وضعیت را حذف کنید." + } + }, + "components": { + "avatar": { + "defaultAlt": "آواتار" + }, + "dataTable": { + "showingRange": "نمایش {start}–{end} از {total}" + }, + "diagram": { + "loading": "در حال بارگیری نمودارها...", + "loadError": "نمودارها بارگیری نشد", + "deleteError": "نمودار حذف نشد", + "confirmDelete": "آیا مطمئن هستید که می خواهید این نمودار را حذف کنید؟", + "edit": "ویرایش نمودار", + "untitled": "نمودار بدون عنوان", + "namePlaceholder": "نام نمودار", + "nameRequired": "لطفا یک نام نمودار وارد کنید", + "saveError": "نمودار ذخیره نشد", + "unsavedChanges": "تغییرات ذخیره نشده", + "unsavedChangesConfirm": "شما تغییرات ذخیره نشده ای دارید. آیا مطمئن هستید که می خواهید ببندید؟" + }, + "errorState": { + "title": "مشکلی پیش آمد" + }, + "pagination": { + "showingRange": "نمایش {start}-{end} از {total}", + "limitedTo": "محدود به {max} مورد است", + "itemsPerPage": "موارد در هر صفحه:", + "previousPage": "صفحه قبلی", + "nextPage": "صفحه بعدی", + "goToPage": "برو به صفحه {page}", + "pageOf": "صفحه {current} از {total}" + }, + "userAvatar": { + "myWorkspace": "فضای کاری من", + "myWorkspaceSubtitle": "فضای کاری شخصی برای کارها و یادداشت ها", + "profileSubtitle": "نمایه و تنظیمات خود را مدیریت کنید", + "security": "امنیت", + "securitySubtitle": "رمزهای عبور، توکن‌های 2FA و API را مدیریت کنید", + "themeTitle": "پوسته: {mode}", + "themeLight": "نور", + "themeDark": "تاریک", + "themeSystem": "سیستم", + "desktopSite": "سایت دسکتاپ", + "addToHomeScreen": "به صفحه اصلی اضافه کنید" + } + }, + "aria": { + "close": "بستن", + "dragToReorder": "برای جابه‌جایی بکشید", + "refresh": "تازه کردن", + "removeField": "حذف فیلد", + "removeFromSection": "حذف از بخش", + "addNewStep": "مرحله جدید اضافه کنید", + "removeCurrentStep": "مرحله فعلی را حذف کنید", + "dismissNotification": "رد اطلاعیه", + "mainNavigation": "ناوبری اصلی", + "resizeNavigation": "تغییر اندازه نوار کناری ناوبری", + "sidebarResizeHint": "برای تغییر اندازه بکشید. برای بازنشانی دوبار کلیک کنید.", + "mentionUsers": "کاربران را ذکر کنید", + "notifications": "اطلاعیه ها", + "adminSettings": "تنظیمات مدیریت", + "userMenu": "منوی کاربر", + "clearSearch": "جستجو را پاک کنید" + }, + "layout": { + "addSection": "افزودن بخش", + "moveUp": "انتقال بخش به بالا", + "moveDown": "بخش را به پایین منتقل کنید", + "deleteSection": "حذف بخش", + "editMode": "حالت ویرایش", + "editDisplaySettings": "تنظیمات نمایش را ویرایش کنید", + "items": "موارد" + }, + "widgets": { + "stats": { + "collections": "مجموعه ها", + "totalItems": "مجموع موارد" + }, + "removeWidget": "ویجت را حذف کنید", + "defaultWidth": "پیش‌فرض: {width}/{columns} عرض", + "widthQuarter": "ربع", + "widthThird": "سوم", + "widthHalf": "نصف", + "widthTwoThirds": "دو سوم", + "widthFull": "کامل", + "resizeAriaLabel": "تغییر اندازه ویجت", + "resizeColumnsValue": "{count} از {total} ستون", + "rowCount": "تعداد ردیف", + "density": "تراکم", + "densityComfortable": "راحت", + "densityCompact": "فشرده", + "rowCount5": "5 ردیف", + "rowCount10": "10 ردیف", + "rowCount15": "15 ردیف", + "rowCountAll": "همه ردیف‌ها", + "narrowWidth": "باریک (عرض 1/3)", + "mediumWidth": "متوسط ​​(2/3 عرض)", + "fullWidth": "عرض کامل", + "chart": { + "items": "موارد", + "noDataAvailable": "هیچ داده ای در دسترس نیست", + "otherSlices": "دیگر ({count} بیشتر)" + }, + "completionChart": { + "title": "نمودار تکمیل", + "emptyMessage": "داده تکمیل‌شده موجود نیست" + }, + "createdChart": { + "title": "نمودار ایجاد", + "emptyMessage": "داده ایجادشده موجود نیست" + }, + "recentItems": { + "loadingText": "در حال بارگیری موارد اخیر...", + "emptyTitle": "هیچ مورد اخیری وجود ندارد", + "emptySubtitle": "مواردی که اخیراً مشاهده شده اند در اینجا ظاهر می شوند", + "loadError": "موارد اخیر بارگیری نشد" + }, + "savedSearch": { + "loadingCollections": "در حال بارگیری مجموعه های ذخیره شده...", + "setupTitle": "یک مجموعه ذخیره شده را انتخاب کنید", + "setupSubtitle": "مجموعه ای را انتخاب کنید تا موارد کاری آن در اینجا نشان داده شود.", + "selectCollection": "یک مجموعه را انتخاب کنید", + "noCollections": "هیچ مجموعه ذخیره شده ای موجود نیست", + "collectionUnavailable": "مجموعه ذخیره شده در دسترس نیست", + "itemCount": "{count} مورد", + "emptyTitle": "هیچ مورد کاری منطبقی وجود ندارد", + "emptySubtitle": "این مجموعه ذخیره شده هیچ مورد منطبقی ندارد", + "loadError": "مجموعه ذخیره شده بارگیری نشد" + }, + "milestoneProgress": { + "emptyTitle": "بدون نقطه عطف", + "emptySubtitle": "برای پیگیری پیشرفت، نقاط عطف ایجاد کنید", + "due": "سررسید", + "done": "انجام شد", + "item": "مورد", + "items": "موارد", + "noItems": "هیچ موردی وجود ندارد", + "noStatus": "بدون وضعیت", + "activeMilestone": "فعال", + "noCategorizedWork": "بدون کار دسته بندی شده", + "chartAria": "تفکیک وضعیت نقطه عطف" + }, + "myTasks": { + "loadingText": "در حال بارگیری وظایف شما...", + "emptyTitle": "هیچ وظیفه ای به شما محول نشده است", + "emptySubtitle": "وظایف محول شده به شما در اینجا ظاهر می شود", + "loadError": "بارگیری وظایف شما انجام نشد" + }, + "overdueItems": { + "loadingStatus": "در حال بارگیری...", + "itemCount": "{count} مورد عقب‌افتاده", + "refreshAriaLabel": "موارد عقب افتاده را تازه کنید", + "loadingText": "در حال بارگیری موارد عقب‌افتاده...", + "emptyTitle": "مورد معوقی وجود ندارد", + "emptySubtitle": "همه موارد طبق برنامه پیش می‌روند", + "loadError": "موارد عقب افتاده بارگیری نشد", + "daysOverdue": "{days} روز عقب افتاده است" + }, + "upcomingDeadlines": { + "loadingStatus": "در حال بارگیری...", + "itemCount": "{count} در راه است", + "refreshAriaLabel": "مهلت های آینده را به روز کنید", + "loadingText": "در حال بارگیری مهلت‌های آینده...", + "emptyTitle": "مهلت آینده‌ای وجود ندارد", + "emptySubtitle": "موارد دارای تاریخ سررسید در اینجا ظاهر می شوند", + "loadError": "مهلت‌های آینده بارگیری نشد" + }, + "iterationTimeline": { + "loadingStatus": "در حال بارگیری...", + "iterationCount": "{count} تکرار", + "refreshAriaLabel": "بازخوانی تکرارها", + "loadingText": "در حال بارگیری تکرارها...", + "emptyTitle": "بدون تکرار فعال", + "emptySubtitle": "جدول زمانی تکرار در اینجا ظاهر می شود", + "loadError": "بارگیری تکرارها انجام نشد", + "active": "فعال", + "planned": "برنامه ریزی شده است", + "completed": "تکمیل شد" + }, + "testCoverage": { + "loading": "در حال بارگیری داده های پوشش…", + "loadError": "داده های پوشش بارگیری نشد", + "emptyTitle": "هیچ الزامی پیکربندی نشده است", + "emptyDescription": "برای مشاهده داده‌های پوشش، انواع نیازمندی‌ها را در گزارش‌های آزمایشی پیکربندی کنید.", + "chartAria": "تجزیه پوشش تست", + "covered": "پوشش داده شده", + "notCovered": "بدون پوشش", + "requirementCount": "{covered} از {total} مورد نیاز", + "requirements": "{count} مورد نیاز", + "requirements_other": "{count} مورد نیاز", + "requirements_one": "{count} مورد نیاز", + "linkedCases": "موارد آزمایشی مرتبط" + } + }, + "recurrence": { + "title": "عود", + "description": "قوانین وظایف تکراری را مدیریت کنید", + "frequency": "فرکانس", + "interval": "فاصله تکرار", + "daily": "روزانه", + "weekly": "هفتگی", + "monthly": "ماهانه", + "yearly": "سالانه", + "daysOfWeek": "روزهای هفته", + "dayOfMonth": "روز ماه", + "endCondition": "به پایان می رسد", + "never": "هرگز", + "onDate": "در تاریخ", + "afterOccurrences": "پس از وقوع", + "occurrences": "وقوع", + "preview": "اتفاقات آتی", + "previewLoading": "در حال بارگیری پیش نمایش...", + "previewError": "پیش نمایش بارگیری نشد", + "copySettings": "کپی از قالب", + "copyAssignee": "مسئول را کپی کنید", + "copyPriority": "کپی اولویت", + "copyCustomFields": "فیلدهای سفارشی را کپی کنید", + "copyDescription": "توضیحات را کپی کنید", + "leadTime": "زمان پیشروی (روزها)", + "statusOnCreate": "وضعیت هنگام ایجاد", + "active": "فعال", + "inactive": "غیر فعال", + "instances": "نمونه های تولید شده", + "instanceCount": "{count} نمونه", + "forceGenerate": "اکنون تولید کنید", + "generating": "در حال تولید...", + "generated": "{count} نمونه تولید شد", + "addRecurrence": "تکرار اضافه کنید", + "noRule": "بدون تنظیم", + "setUp": "تنظیم تکرار", + "editRule": "ویرایش تکرار", + "deleteRule": "حذف تکرار", + "deleteConfirm": "آیا مطمئن هستید که می خواهید این قانون تکرار را حذف کنید؟ نمونه های تولید شده تحت تأثیر قرار نمی گیرند.", + "startDate": "تاریخ شروع", + "endDate": "تاریخ پایان (اختیاری)", + "timezone": "منطقه زمانی", + "templateItem": "مورد الگو", + "scheduledDate": "تاریخ برنامه ریزی شده", + "sequenceNumber": "دنباله", + "noInstances": "هنوز هیچ نمونه ای ایجاد نشده است", + "settingsTab": "تنظیمات", + "instancesTab": "موارد", + "searchPlaceholder": "قوانین تکرار جستجو...", + "noMatchingResults": "هیچ قانون تکراری با جستجوی شما مطابقت ندارد", + "empty": "بدون قوانین تکرار", + "emptyDesc": "زمانی که موارد دارای زمان‌بندی تکراری پیکربندی شده باشند، قوانین تکرار در اینجا ظاهر می‌شوند.", + "createFromItem": "برای ایجاد یک قانون تکرار، یک مورد را باز کنید و تکرار را از نوار کناری جزئیات تنظیم کنید.", + "rule": "قانون", + "everyDay": "روز", + "everyDays": "روز", + "everyWeek": "هفته", + "everyWeeks": "هفته ها", + "everyMonth": "ماه", + "everyMonths": "ماه ها", + "everyYear": "سال", + "everyYears": "سال", + "mon": "دوشنبه", + "tue": "سه شنبه", + "wed": "چهارشنبه", + "thu": "پنج شنبه", + "fri": "جمعه", + "sat": "شنبه", + "sun": "یکشنبه" + }, + "footer": { + "platformName": "پلتفرم مدیریت کار Windshift", + "aboutWindshift": "درباره Windshift", + "apiReference": "مرجع API", + "licenses": "مجوزها", + "reportProblem": "یک مشکل را گزارش کنید" + } +}; diff --git a/frontend/src/lib/locales/fa/workflows.js b/frontend/src/lib/locales/fa/workflows.js new file mode 100644 index 000000000..6bbf28a32 --- /dev/null +++ b/frontend/src/lib/locales/fa/workflows.js @@ -0,0 +1,396 @@ +export default { + "statuses": { + "title": "وضعیت ها", + "subtitle": "وضعیت های فردی را مدیریت کنید", + "status": "وضعیت", + "statuses": "وضعیت ها", + "statusCategories": "دسته بندی وضعیت", + "statuses_one": "وضعیت {count}", + "statuses_other": "{count} وضعیت", + "createStatus": "ایجاد وضعیت", + "editStatus": "ویرایش وضعیت", + "deleteStatus": "حذف وضعیت", + "statusName": "نام وضعیت", + "statusCategory": "دسته بندی", + "noStatuses": "هیچ وضعیتی پیدا نشد", + "namePlaceholder": "به عنوان مثال باز، در حال انجام، حل شد", + "transitionCount": "انتقال: {count}", + "defaults": { + "open": { + "name": "باز", + "description": "مورد کاری جدید، هنوز شروع نشده است" + }, + "inProgress": { + "name": "در حال انجام است", + "description": "در حال حاضر روی آن کار می شود" + }, + "done": { + "name": "انجام شد", + "description": "کار به پایان رسیده است" + } + }, + "statusCreated": "وضعیت با موفقیت ایجاد شد", + "statusUpdated": "وضعیت با موفقیت به روز شد", + "statusDeleted": "وضعیت با موفقیت حذف شد" + }, + "priorities": { + "title": "اولویت ها", + "subtitle": "سطوح اولویت را با نمادها و رنگ ها پیکربندی کنید", + "priority": "اولویت", + "priorities_one": "اولویت {count}", + "priorities_other": "{count} اولویت", + "createPriority": "اولویت ایجاد کنید", + "editPriority": "ویرایش اولویت", + "deletePriority": "حذف اولویت", + "priorityName": "نام اولویت", + "noPriorities": "هیچ اولویتی پیدا نشد", + "namePlaceholder": "به عنوان مثال بحرانی، زیاد، متوسط، پایین", + "nameRequired": "نام اولویت الزامی است.", + "failedToLoad": "بارگیری اولویت ها انجام نشد.", + "failedToSave": "اولویت ذخیره نشد.", + "deleteFailed": "اولویت حذف نشد.", + "confirmDelete": "«{name}» حذف شود؟ این عمل قابل لغو نیست.", + "priorityCreated": "اولویت با موفقیت ایجاد شد", + "priorityUpdated": "اولویت با موفقیت به روز شد", + "priorityDeleted": "اولویت با موفقیت حذف شد", + "critical": "انتقادی", + "high": "بالا", + "medium": "متوسط", + "low": "پایین", + "lowest": "پایین ترین" + }, + "workflows": { + "title": "گردش کار", + "subtitle": "طراحی و مدیریت انتقال گردش کار بین وضعیت ها.", + "workflow": "گردش کار", + "workflows_one": "{count} گردش کار", + "workflows_other": "{count} گردش کار", + "count": "{count} گردش کار", + "createWorkflow": "گردش کار را ایجاد کنید", + "editWorkflow": "ویرایش گردش کار", + "deleteWorkflow": "حذف گردش کار", + "workflowName": "نام گردش کار", + "transitions": "انتقال ها", + "addTransition": "انتقال را اضافه کنید", + "searchWorkflows": "جستجوی گردش کار...", + "noWorkflows": "هیچ جریان کاری یافت نشد", + "noWorkflowsFound": "هیچ جریان کاری یافت نشد. اولین گردش کار خود را برای شروع ایجاد کنید.", + "workflowCreated": "گردش کار با موفقیت ایجاد شد", + "workflowUpdated": "گردش کار با موفقیت به روز شد", + "workflowDeleted": "گردش کار با موفقیت حذف شد", + "enterWorkflowName": "لطفاً یک نام گردش کار وارد کنید", + "confirmDeleteWorkflow": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟ این عمل قابل لغو نیست.", + "confirmDeleteTransition": "آیا مطمئن هستید که می خواهید این انتقال را حذف کنید؟", + "design": "طراحی", + "noStatusesAvailable": "هیچ وضعیتی در دسترس نیست", + "createStatusesFirst": "قبل از اینکه بتوانید گردش کار ایجاد کنید، باید وضعیت ها را ایجاد کنید.", + "manageStatuses": "مدیریت وضعیت ها", + "workflowNamePlaceholder": "به عنوان مثال، گردش کار پیش فرض", + "descriptionPlaceholder": "توضیحات اختیاری برای این گردش کار", + "setAsDefault": "به عنوان گردش کار پیش فرض تنظیم کنید", + "defaults": { + "default": { + "name": "گردش کار پیش فرض", + "description": "گردش کار اساسی برای انجام کار" + } + }, + "backToWorkflows": "بازگشت به گردش کار", + "workflowDesigner": "طراح گردش کار", + "designerHint": "وضعیت ها را از پانل سمت چپ بکشید، آنها را با کشیدن از نقاط اتصال وصل کنید", + "failedToLoadDesigner": "طراح گردش کار بارگیری نشد. لطفاً صفحه را بازخوانی کنید و دوباره امتحان کنید.", + "loadingWorkflowData": "در حال بارگیری داده های گردش کار...", + "loadingDesigner": "در حال بارگیری طراح گردش کار...", + "failedToLoadDesignerTitle": "طراح گردش کار بارگیری نشد", + "refreshAndTryAgain": "لطفاً صفحه را بازخوانی کنید و دوباره امتحان کنید", + "availableStatuses": "وضعیت های موجود", + "transitionHintTitle": "نحوه ایجاد انتقال:", + "transitionHint1": "برای ایجاد یک انتقال، از یک وضعیت به وضعیت دیگر بکشید", + "transitionHint2": "فلش ها جهت را نشان می دهند: وضعیت FROM -> TO", + "transitionHint3": "برای اتصال مجدد لبه ها را کلیک کرده و بکشید", + "allStatusesAdded": "تمام وضعیت ها به گردش کار اضافه شده است", + "statusesInWorkflow": "{count} وضعیت در گردش کار", + "transitionsDefined": "{count} انتقال تعریف شده است", + "startDesigning": "شروع به طراحی گردش کار خود کنید", + "clickStatusesToAdd": "روی وضعیت ها از پانل سمت چپ کلیک کنید تا آنها را به بوم اضافه کنید", + "connectByDragging": "وضعیت ها را با کشیدن از نقاط اتصال وصل کنید", + "saveWorkflow": "ذخیره گردش کار", + "failedToSaveDesign": "طراحی گردش کار ذخیره نشد", + "failedToSaveScreen": "صفحه انتقال ذخیره نشد", + "initialStatus": "وضعیت اولیه", + "setAsInitialStatus": "به عنوان وضعیت اولیه تنظیم کنید", + "initial": "اولیه", + "setStart": "شروع را تنظیم کنید", + "removeFromWorkflow": "حذف از گردش کار", + "swapDirection": "جهت را عوض کنید", + "allStatuses": "همه", + "fromAllStatuses": "انتقال از هر وضعیت دیگر را مجاز کنید", + "transitionHint4": "\"همه\" را در یک وضعیت علامت بزنید تا امکان انتقال از هر وضعیت دیگر فراهم شود", + "filterStatuses": "فیلتر وضعیت ها", + "transitionHelp": "راهنمای انتقال", + "noStatusesMatchFilter": "هیچ وضعیتی با فیلتر شما مطابقت ندارد" + }, + "screens": { + "title": "صفحه نمایش ها", + "subtitle": "طرح‌بندی فیلدها را برای مسائل و پروژه‌ها تعریف کنید", + "screen": "صفحه نمایش", + "screens": "{count} صفحه نمایش", + "screens_one": "صفحه نمایش {count}", + "screens_other": "{count} صفحه نمایش", + "createScreen": "ایجاد صفحه نمایش", + "editScreen": "ویرایش صفحه", + "deleteScreen": "حذف صفحه", + "screenName": "نام صفحه نمایش", + "noScreens": "هیچ صفحه‌ای پیدا نشد", + "screenCreated": "صفحه با موفقیت ایجاد شد", + "screenUpdated": "صفحه با موفقیت به روز شد", + "screenDeleted": "صفحه با موفقیت حذف شد", + "cannotDeleteDefault": "نمی توان صفحه پیش فرض را حذف کرد" + }, + "screensPage": { + "availableFields": "فیلدهای موجود", + "dragFieldsHint": "فیلدها را به پیکربندی صفحه در سمت راست بکشید", + "searchFields": "فیلدهای جستجو...", + "systemFields": "فیلدهای سیستم", + "customFields": "فیلدهای سفارشی", + "noFieldsMatch": "هیچ فیلدی با جستجوی شما مطابقت ندارد", + "allFieldsAdded": "تمام فیلدهای موجود به صفحه اضافه شده است", + "screenFields": "فیلدهای صفحه نمایش", + "dragToReorder": "برای مرتب کردن مجدد فیلدها بکشید یا فیلدهای موجود را در اینجا رها کنید", + "dropFieldsHere": "برای پیکربندی صفحه، فیلدها را اینجا رها کنید", + "required": "مورد نیاز", + "removeField": "حذف فیلد", + "editScreen": "ویرایش صفحه", + "createScreen": "ایجاد صفحه نمایش", + "screenName": "نام صفحه نمایش", + "screenNamePlaceholder": "به عنوان مثال، فرم استاندارد شماره، فرم گزارش اشکال", + "description": "توضیحات", + "optionalDescription": "توضیحات اختیاری برای این صفحه", + "addScreen": "اضافه کردن صفحه نمایش", + "updateScreen": "به روز رسانی صفحه نمایش", + "configureFields": "فیلدها را پیکربندی کنید", + "screen": "صفحه نمایش", + "screenSubtitle": "صفحه نمایش: {name}", + "saveFields": "ذخیره فیلدها", + "system": "سیستم", + "custom": "سفارشی", + "fields": "فیلدها", + "noScreens": "هیچ صفحه‌ای پیدا نشد. برای شروع اولین صفحه نمایش خود را ایجاد کنید.", + "cannotDeleteDefault": "نمی توان صفحه پیش فرض را حذف کرد. این صفحه برای فضاهای کاری بدون مجموعه پیکربندی لازم است.", + "confirmDeleteScreen": "آیا مطمئن هستید که می خواهید صفحه نمایش \"{name}\" را حذف کنید؟ این روی تمام فضاهای کاری که از این صفحه استفاده می کنند تأثیر می گذارد.", + "defaults": { + "default": { + "name": "صفحه پیش فرض", + "description": "صفحه پیش‌فرض با فیلدهای مورد ضروری" + }, + "default_create": { + "name": "ایجاد صفحه پیش فرض", + "description": "صفحه نمایش متمرکز برای ایجاد موارد کاری" + } + }, + "fieldWidths": { + "full": "عرض کامل", + "half": "نصف عرض", + "third": "یک سوم", + "quarter": "یک چهارم" + } + }, + "conditionSets": { + "title": "مجموعه شرایط", + "subtitle": "شرایطی را تعریف کنید که انتقال گردش کار را محدود می کند", + "add": "مجموعه شرایط را اضافه کنید", + "new": "مجموعه شرایط جدید", + "empty": "هیچ شرطی تعریف نشده است", + "emptyDesc": "برای محدود کردن انتقال‌های گردش کار بر اساس نقش‌های کاربر، گروه‌ها، مقادیر فیلد یا اسکریپت‌ها، مجموعه‌های شرطی ایجاد کنید.", + "createFirst": "ایجاد مجموعه شرایط", + "searchPlaceholder": "شرایط جستجو تنظیم می شود...", + "noMatchingResults": "هیچ مجموعه شرطی با جستجوی شما مطابقت ندارد.", + "workflow": "گردش کار", + "transitions": "انتقال ها", + "general": "عمومی", + "name": "نام", + "namePlaceholder": "به عنوان مثال، محدودیت های برنامه نویس", + "description": "توضیحات", + "descriptionPlaceholder": "توضیحات اختیاری برای این مجموعه شرایط", + "detailDesc": "شرایطی را پیکربندی کنید که انتقال گردش کار خاص را محدود می کند", + "backToList": "بازگشت به مجموعه شرایط", + "selectWorkflow": "یک گردش کار را انتخاب کنید...", + "selectWorkflowFirst": "یک گردش کار را برای فعال کردن انتخاب مجموعه شرایط انتخاب کنید.", + "workflowLocked": "گردش کار پس از ایجاد قابل تغییر نیست.", + "workflowRequired": "یک گردش کار مورد نیاز است.", + "nameRequired": "نام الزامی است.", + "changeWorkflow": "تغییر گردش کار", + "changeWorkflowConfirm": "تغییر گردش کار همه شرایط انتقال موجود را حذف می کند. ادامه دهید؟", + "transitionConditions": "شرایط انتقال", + "transitionConditionsDesc": "برای محدود کردن افرادی که می توانند آنها را انجام دهند، شرایط را به انتقال های خاص اضافه کنید.", + "unconditionedTransitions": "انتقال بدون قید و شرط", + "addConditions": "اضافه کردن شرایط", + "addCondition": "اضافه کردن شرط", + "removeConditions": "تمام شرایط را حذف کنید", + "removeCondition": "شرایط را حذف کنید", + "logicMode": "حالت منطقی", + "type": "نوع", + "role": "نقش", + "group": "گروه", + "selectGroup": "انتخاب گروه...", + "fieldIdentifier": "شناسه فیلد", + "pattern": "الگوی Regex", + "script": "اسکریپت", + "scriptHelp": "JavaScript از طریق Sobek اجرا شد. متغیرهای موجود: item, user_id. باید یک Boolean برگرداند.", + "scriptReference": "مرجع اسکریپت", + "scriptReferenceDesc": "متغیرها و ویژگی های موجود در شرایط اسکریپت.", + "scriptRefVariable": "متغیر", + "scriptRefType": "نوع", + "scriptRefDescription": "توضیحات", + "scriptRefAlwaysPresent": "همیشه حاضر", + "scriptRefIfSet": "اگر تنظیم شود", + "scriptRefGlobals": "متغیرهای جهانی", + "scriptRefItemProps": "ویژگی های مورد", + "noTransitions": "این گردش کار هیچ انتقالی ندارد. ابتدا گردش کار را طراحی کنید.", + "userEvaluated": "کاربر", + "againstRole": "نقش", + "againstGroup": "گروه", + "selectRole": "انتخاب نقش...", + "userField": "فیلد کاربری", + "selectUserField": "انتخاب فیلد کاربری...", + "conditionMode": "حالت", + "modeCondition": "شرط", + "modeValidator": "اعتبار سنجی", + "modeConditionDesc": "در صورت شکست قانون، انتقال را پنهان می کند", + "modeValidatorDesc": "هنگام تلاش برای انتقال، خطا را نشان می دهد", + "errorMessage": "پیغام خطا", + "errorMessagePlaceholder": "به عنوان مثال، فقط آزمایش‌کنندگان می‌توانند موارد را به QA منتقل کنند", + "errorMessageHelp": "زمانی که این شرط ناموفق باشد به کاربر نشان داده می شود. برای پیام پیش فرض خالی بگذارید." + }, + "approvalSets": { + "title": "مجموعه های تایید", + "subtitle": "تاییدیه‌های چند مرحله‌ای که انتقال‌ها از یک وضعیت را کنترل می‌کنند.", + "add": "مجموعه تایید را اضافه کنید", + "new": "مجموعه تایید جدید", + "empty": "بدون مجموعه تایید", + "emptyDesc": "مجموعه‌های تأیید به یک وضعیت متصل می‌شوند و دو انتقال را که یک تأیید درایو می‌کند (تأیید و رد) پیکربندی می‌کنند.", + "createFirst": "ایجاد مجموعه تایید", + "searchPlaceholder": "مجموعه‌های تأیید جستجو…", + "noMatchingResults": "هیچ مجموعه تأییدی با جستجوی شما مطابقت ندارد.", + "workflow": "گردش کار", + "statuses": "وضعیت ها", + "general": "عمومی", + "name": "نام", + "namePlaceholder": "به عنوان مثال، تأیید انتشار استاندارد", + "description": "توضیحات", + "descriptionPlaceholder": "توضیحات اختیاری برای این مجموعه تأیید", + "detailDesc": "تأییدیه های چند مرحله ای محدود به وضعیت را پیکربندی کنید.", + "backToList": "بازگشت به مجموعه های تایید", + "selectWorkflow": "انتخاب یک گردش کار…", + "workflowLocked": "گردش کار پس از ایجاد قابل تغییر نیست.", + "workflowRequired": "یک گردش کار مورد نیاز است.", + "nameRequired": "نام الزامی است.", + "setStatuses": "وضعیت های تایید", + "setStatusesDesc": "هنگامی که یک مورد وارد یکی از این وضعیت ها می شود، یک درخواست تأیید باز می شود. انتقال‌های تایید/رد پیکربندی شده دیگر نمی‌توانند مستقیماً توسط کاربران فراخوانی شوند - فقط موتور تأیید آنها را هدایت می‌کند.", + "addStatus": "اضافه کردن وضعیت تایید", + "removeStatus": "حذف وضعیت", + "status": "وضعیت", + "selectStatus": "انتخاب وضعیت…", + "approveTransition": "در تأیید، انتقال به", + "denyTransition": "در انکار، انتقال به", + "selectTransition": "انتخاب یک انتقال…", + "transitionsMustExitStatus": "تایید و رد انتقال باید از وضعیت پیکربندی شده منشاء بگیرد.", + "transitionsMustDiffer": "تایید و رد انتقال باید متفاوت باشد.", + "stepMode": "حالت مرحله ای", + "stepModeSequential": "متوالی", + "stepModeParallel": "موازی", + "stepModeSequentialDesc": "مراحل یکی پس از دیگری اجرا می شوند. هر مرحله تنها زمانی باز می شود که مرحله قبلی تأیید شود.", + "stepModeParallelDesc": "همه مراحل به یکباره باز می شوند. درخواست تنها زمانی تأیید می شود که هر مرحله تأیید شود. در رد اول رد می کند.", + "steps": "مراحل", + "addStep": "مرحله را اضافه کنید", + "removeStep": "مرحله را بردارید", + "stepName": "نام مرحله", + "stepNamePlaceholder": "به عنوان مثال، بازبین ارشد", + "stepNameRequired": "نام مرحله مورد نیاز است.", + "quorum": "حد نصاب", + "quorumAny": "هر (یک تایید کننده کافی است)", + "quorumAll": "همه (هر تایید کننده باید تایید کند)", + "quorumCount": "تعداد (دقیقا N تایید کننده)", + "quorumPercent": "درصد (N٪ از مجموعه، گرد شده)", + "quorumCountValue": "تعداد", + "quorumPercentValue": "درصد (1-100)", + "rejectionPolicy": "رد کردن", + "rejectionAnyFails": "هر گونه رد مرحله را شکست می دهد", + "rejectionRequiresQuorum": "برای شکست نیاز به حد نصاب است", + "approverSource": "منبع تایید کننده", + "approverSourceCreator": "ایجادکننده مورد", + "approverSourceAssignee": "مسئول فعلی", + "approverSourceCurrentUser": "شخصی که باعث تایید شد", + "approverSourceUser": "کاربر خاص", + "approverSourceRegularField": "فیلد معمولی (assignee_id، creator_id،…)", + "approverSourceCustomField": "فیلد سفارشی (تایپ شده توسط کاربر)", + "approverSourceRole": "نقش فضای کاری", + "approverSourceGroup": "گروه", + "approverFieldIdentifier": "شناسه فیلد", + "approverFieldIdentifierHelp": "فیلدهای لیست سفید: assignee_id، creator_id، reporter_id.", + "approverFieldId": "فیلد سفارشی", + "approverRole": "نقش", + "approverGroup": "گروه", + "approverUser": "کاربر", + "allowSelfApproval": "تأیید خود را مجاز کنید - به همان کاربر اجازه دهید هم مورد را انتقال دهد و هم آن را تأیید کند", + "onLeave": "در مرخصی تایید کننده", + "onLeaveUseSubstitute": "استفاده از جایگزین (پیش‌فرض)", + "onLeaveUseSubstituteDesc": "به جایگزینی که در رکورد مرخصی ثبت شده احترام می‌گذارد. اگر جایگزینی پیکربندی نشود، دوباره به حالت تشدید می‌رود.", + "onLeaveSkip": "از تأیید کننده عبور کنید", + "onLeaveSkipDesc": "کاربر در مرخصی را از استخر حذف کنید. در صورت خالی شدن استخر تشدید می‌شود.", + "onLeaveKeep": "تایید کننده نگه دارید", + "onLeaveKeepDesc": "آنها را در استخر رها می کند. تایید کننده اصلی باید با وجود دور بودن پاسخ دهد.", + "fallbackTitle": "اگر تایید کننده نتواند تصمیم بگیرد", + "fallbackDesc": "این دو قانون یک زنجیره بازگشتی واحد را تشکیل می دهند. اولین نفر به تایید کنندگان در مرخصی برنامه ریزی شده رسیدگی می کند. دوم، شبکه ایمنی زمانی است که رسیدگی در مرخصی با شکست مواجه می شود یا تصمیمی به موقع گرفته نمی شود.", + "fallbackConnector": "اگر قانون مرخصی بالا یک استخر خالی ایجاد کند (هیچ جایگزینی وجود ندارد، یا پرش استخر را تخلیه می‌کند)، به‌جای انتظار برای تایمر، تشدید بلافاصله شروع به کار می‌کند.", + "escalation": "وقتی هیچ تصمیمی به موقع نمی رسد", + "escalationDisabled": "بدون تشدید", + "escalationDisabledDesc": "برای همیشه صبر کنید. مرحله هرگز به‌طور خودکار حل نمی‌شود. یک مدیر باید دخالت کند.", + "escalationActionReassignDesc": "گام را به شخص، نقش یا گروه دیگری بسپارید. پس از هر تایم‌اوت زنجیره‌ای تا حداکثر تشدید، مجدداً فعال می‌شود.", + "escalationActionSkipStepDesc": "مرحله تایید شده را علامت بزنید و اجازه دهید درخواست در زنجیره ادامه یابد.", + "escalationActionAutoRejectDesc": "درخواست را رد کنید و انتقال رد پیکربندی شده را فعال کنید.", + "escalationAfterHours": "افزایش پس از (ساعت)", + "escalationAction": "در تشدید", + "escalationActionReassign": "تخصیص مجدد به یک هدف", + "escalationActionSkipStep": "از مرحله رد شوید (به عنوان تایید شده رفتار کنید)", + "escalationActionAutoReject": "رد خودکار درخواست", + "escalationTarget": "هدف تشدید", + "maxEscalations": "حداکثر تشدید (خالی = نامحدود)", + "chainedNote": "در صورت استفاده مجدد، escalation_due_at بعد از هر بازه زمانی تا این سقف، مجدداً فعال می‌شود.", + "overrideWarningTitle": "توجه: این انتقال نیز با شرایط کنترل می‌شود", + "overrideWarningBody": "هنگامی که موتور تأیید انتقال را روشن می کند، شرایط انتقالی که توسط تأییدیه انجام می شود، بی سر و صدا دور زده می شود. این شرایط همچنان برای تلاش مستقیم کاربر (که تأیید به هر حال مسدود می شود) اجرا می شود. برای جلوگیری از غافلگیری، حذف آن شرایط یا انتقال آنها به مرحله انتقال را در نظر بگیرید.", + "overrideWarningLearnMore": "قوانین شرایط تحت تأثیر را ببینید", + "overrideWarningCondReverseTitle": "توجه: یک مجموعه تأیید این انتقال را هدایت می کند", + "overrideWarningCondReverseBody": "هنگامی که تایید نهایی می شود، انتقال پیکربندی شده بدون شرایط اجرای مجدد فعال می شود. شرایط این انتقال فقط برای تلاش‌های مستقیم کاربر اعمال می‌شود (که به هر حال تأییدیه‌ها مسدود می‌شوند). قوانین زمان ورود را به انتقالی که به وضعیت تأیید منتهی می شود، منتقل کنید." + }, + "statusCategory": { + "editStatusCategory": "ویرایش رده وضعیت", + "createStatusCategory": "ایجاد رده وضعیت", + "namePlaceholder": "به عنوان مثال برای انجام، در حال انجام، انجام شد", + "color": "رنگ", + "setAsDefault": "به عنوان دسته پیش فرض تنظیم کنید", + "marksWorkCompleted": "کار را به عنوان تکمیل شده علامت گذاری می کند", + "marksWorkCompletedHelp": "مواردی که به وضعیت‌های این دسته منتقل می‌شوند در گزارش‌ها و بررسی‌ها به‌عنوان تکمیل‌شده تلقی می‌شوند.", + "updateCategory": "به روز رسانی دسته", + "createCategory": "ایجاد دسته" + }, + "workflowInspector": { + "subtitle": "تنظیمات انتقال", + "screen": "صفحه نمایش", + "noScreen": "هیچ صفحه‌ای به این انتقال متصل نیست.", + "chooseScreen": "انتخاب صفحه نمایش…", + "changeScreen": "تغییر صفحه…", + "unbind": "باز کردن", + "fieldSummary": "{fields} فیلد، {required} مورد نیاز است", + "newScreenPlaceholder": "نام صفحه نمایش جدید", + "createAndBind": "ایجاد و پیوند", + "createHeading": "یک صفحه نمایش جدید ایجاد کنید", + "createHint": "یک صفحه خالی ایجاد می کند، آن را به این انتقال متصل می کند و ویرایشگر فیلد را باز می کند.", + "editFields": "ویرایش فیلدها", + "editFieldsTitle": "فیلدهای صفحه نمایش — {name}", + "screenSaved": "صفحه انتقال ذخیره شد", + "screenStaged": "هنگامی که گردش کار را ذخیره کنید، صفحه نمایش پیوست خواهد شد", + "pendingHint": "این انتقال هنوز ذخیره نشده است. هنگامی که گردش کار را ذخیره می کنید صفحه نمایش متصل می شود.", + "screenSaveFailed": "صفحه انتقال ذخیره نشد", + "screenCreateFailed": "صفحه نمایش ایجاد نشد" + } +}; diff --git a/frontend/src/lib/locales/fa/workspace.js b/frontend/src/lib/locales/fa/workspace.js new file mode 100644 index 000000000..cfc5bc212 --- /dev/null +++ b/frontend/src/lib/locales/fa/workspace.js @@ -0,0 +1,1332 @@ +export default { + "workspaces": { + "title": "فضاهای کاری", + "subtitle": "فضاهای کاری و پروژه های خود را مدیریت کنید", + "workspace": "فضای کار", + "template": "الگو", + "restricted": "محدود شده است", + "visibility": "قابلیت مشاهده", + "open": "باز", + "workspaces_one": "{count} فضای کاری", + "workspaces_other": "{count} فضای کاری", + "createWorkspace": "ایجاد فضای کاری", + "editWorkspace": "ویرایش فضای کاری", + "deleteWorkspace": "فضای کاری را حذف کنید", + "switchWorkspace": "فضای کاری را تغییر دهید", + "workspaceName": "نام فضای کاری", + "workspaceKey": "کلید فضای کاری", + "workspaceDescription": "توضیحات", + "members": "اعضا", + "settings": "تنظیمات فضای کاری", + "noWorkspaces": "هیچ فضای کاری یافت نشد", + "listSubtitle": "پروژه های خود را در محیط های کاری سازماندهی و مدیریت کنید", + "empty": "هیچ فضای کاری یافت نشد. اولین فضای کاری خود را برای شروع ایجاد کنید.", + "personal": "شخصی", + "confirmDelete": "آیا مطمئن هستید که می‌خواهید فضای کاری «{name}» را حذف کنید؟ این روی تمام پروژه های مرتبط تاثیر می گذارد.", + "selectWorkspace": "یک فضای کاری را انتخاب کنید", + "currentWorkspace": "فضای کاری فعلی", + "workspaceCreated": "فضای کاری با موفقیت ایجاد شد", + "workspaceUpdated": "فضای کاری با موفقیت به روز شد", + "workspaceDeleted": "فضای کاری با موفقیت حذف شد", + "customers": { + "title": "مشتریان", + "subtitle": "مشتریان و سازمان های پورتال را مدیریت کنید", + "addCustomer": "مشتری اضافه کنید", + "unassignedCustomers": "مشتریان تعیین نشده", + "customerCount": "{count} مشتری", + "customerCount_one": "{count} مشتری", + "customerCount_other": "{count} مشتری", + "failedToLoadCustomers": "بارگیری مشتریان انجام نشد", + "failedToLoadOrganisations": "بارگیری سازمان ها انجام نشد", + "failedToAssignCustomer": "تخصیص مشتری به سازمان انجام نشد", + "deleteCustomer": "حذف مشتری", + "confirmDeleteCustomer": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟", + "deactivated": "غیر فعال شد", + "deactivateCustomer": "دسترسی را غیرفعال کنید", + "activateCustomer": "بازیابی دسترسی", + "confirmDeactivateCustomer": "\"{name}\" غیرفعال شود؟ آنها از سیستم خارج می شوند و تا زمانی که دسترسی بازیابی نشود، نمی توانند وارد سیستم شوند.", + "confirmActivateCustomer": "دسترسی به پورتال برای \"{name}\" بازیابی شود؟", + "failedToDeactivateCustomer": "مشتری غیرفعال نشد", + "failedToActivateCustomer": "مشتری فعال نشد", + "manageOrganisations": "سازمان ها را مدیریت کنید", + "searchOrganisations": "جستجو در سازمان ها...", + "noOrganisationsFound": "هیچ سازمانی یافت نشد", + "noCustomersFound": "مشتری پیدا نشد", + "unassigned": "اختصاص داده نشده است", + "allCustomersAssigned": "همه مشتریان به سازمان‌ها اختصاص داده می‌شوند", + "searchCustomers": "جستجوی مشتریان...", + "tryAdjustingSearch": "سعی کنید جستجوی خود را تنظیم کنید", + "dragCustomersHere": "مشتریان را به اینجا بکشید تا آنها را به این سازمان اختصاص دهید", + "noOrgFiles": "اسناد مرتبط با این سازمان در اینجا ظاهر می شود.", + "noOrgTickets": "بلیط های ایجاد شده توسط مخاطبین این سازمان در اینجا ظاهر می شوند.", + "sharing": "اشتراک گذاری", + "sharingMode": "درخواست اشتراک گذاری", + "sharingModeHelp": "کنترل می کند که آیا درخواست های مطرح شده توسط مخاطبین این سازمان با سازمان به اشتراک گذاشته می شود.", + "sharingDisabled": "غیرفعال", + "sharingRequesterChoice": "مخاطبین در هر درخواست انتخاب می کنند", + "sharingAutomatic": "همیشه با سازمان به اشتراک گذاشته می شود", + "sharingAudience": "چه کسی می تواند درخواست های مشترک را ببیند", + "sharingAudienceOrganisation": "همه افراد در سازمان", + "sharingAudienceRoles": "فقط سطوح تماس انتخاب شده", + "sharingRoles": "سطوح تماس مجاز", + "sharingNoRoles": "هنوز سطح تماسی تعریف نشده است.", + "sharingSaved": "درخواست اشتراک به روز شد", + "sharingSaveFailed": "درخواست اشتراک‌گذاری به‌روزرسانی نشد", + "contactLevels": "سطوح تماس", + "contact": "مخاطب", + "linked": "پیوند داده شده:", + "loadMore": "بارگیری بیشتر ({count} باقی مانده)", + "searchHintOrganisations": "از جستجو برای یافتن سریع سازمان استفاده کنید", + "addPortalCustomer": "مشتری پورتال را اضافه کنید", + "editPortalCustomer": "مشتری پورتال را ویرایش کنید", + "createCustomer": "مشتری ایجاد کنید", + "noneUnassigned": "هیچ (تخصیص نشده)", + "customFields": "فیلدهای سفارشی", + "fields": { + "name": "نام", + "email": "ایمیل", + "phone": "تلفن", + "customerOrganisation": "سازمان مشتریان" + }, + "placeholders": { + "name": "نام مشتری را وارد کنید", + "email": "customer@example.com", + "phone": "+1 (555) 123-4567" + }, + "metadata": { + "created": "ایجاد شده:", + "updated": "به روز شده:", + "linkedUser": "کاربر پیوندشده:" + }, + "contacts": "مخاطبین", + "backToCustomers": "بازگشت به مشتریان", + "failedToLoadCustomer": "بارگیری مشتری انجام نشد", + "submissions": "موارد ارسالی", + "channels": "کانال ها", + "noSubmissions": "ارسالی قابل مشاهده نیست", + "noChannels": "هنوز کانالی وجود ندارد" + } + }, + "items": { + "requesterOpenTickets": "سایر بلیت‌های باز این درخواست‌کننده", + "requesterOpenTicketsHelp": "سایر بلیت‌های باز از همان درخواست‌کننده - این مکالمه ممکن است متعلق به یکی از آنها باشد. ادغام کنید تا یک رشته باقی بماند.", + "requesterOpenTicketsEmpty": "هیچ بلیط باز دیگری از این درخواست کننده وجود ندارد.", + "findDuplicates": "موارد تکراری را پیدا کنید", + "findDuplicatesFailed": "امکان جستجوی موارد تکراری وجود ندارد", + "aiSuggested": "هوش مصنوعی", + "aiSuggestionsTemporary": "پیشنهادات هوش مصنوعی موقتی هستند و در این بلیط ذخیره نمی شوند.", + "mergeIntoThisTicket": "در این ادغام شوند", + "customerContext": "زمینه مشتری", + "customerContextRequester": "درخواست کننده", + "customerContextOrganisation": "سازمان", + "customerContextOrgTickets": "سایر درخواست های این سازمان", + "customerContextOrgTicketsEmpty": "هیچ درخواست دیگری از این سازمان وجود ندارد.", + "customerContextAssets": "دارایی های مرتبط", + "customerContextAssetsEmpty": "هیچ دارایی مرتبطی وجود ندارد.", + "title": "موارد", + "subtitle": "موارد کار را مشاهده و مدیریت کنید", + "item": "مورد", + "items_one": "{count} مورد", + "items_other": "{count} مورد", + "createItem": "ایجاد مورد", + "editItem": "ویرایش مورد", + "deleteItem": "حذف مورد", + "viewItem": "مشاهده مورد", + "selectTeam": "تیم را انتخاب کنید", + "noTeam": "بدون تیم", + "participants": "شرکت کنندگان", + "participantsEmpty": "هنوز هیچ شرکت کننده خارجی وجود ندارد.", + "participantEmailPlaceholder": "آدرس ایمیل", + "participantNamePlaceholder": "نام (اختیاری)", + "participantAdd": "افزودن شرکت کننده", + "participantPickExisting": "یک مشتری موجود را انتخاب کنید", + "participantRemove": "حذف شرکت کننده", + "participantsAddFailed": "شرکت‌کننده اضافه نشد", + "participantsRemoveFailed": "حذف شرکت‌کننده انجام نشد", + "incident": "حادثه", + "incidentDeclare": "اعلام حادثه", + "incidentDeclared": "حادثه اعلام شد", + "incidentAck": "تصدیق کنید", + "incidentAcknowledged": "تصدیق کرد", + "incidentUnack": "عدم تصدیق", + "incidentUnacknowledged": "حادثه تایید نشده", + "incidentResolve": "حل کردن", + "incidentResolved": "حل شد", + "incidentTriggered": "فعال شد", + "incidentLowUrgency": "فوریت کم", + "incidentPolicy": "سیاست", + "incidentTriggeredAt": "زمان فعال‌سازی", + "incidentAckedBy": "تصدیق‌شده توسط", + "incidentResolvedBy": "حل شده توسط", + "incidentRepeat": "تکرار تشدید", + "incidentActionFailed": "اقدام حادثه ناموفق بود", + "incidentResponderRequired": "شما برای این حادثه آماده نیستید", + "sla": { + "title": "سطوح خدمات", + "recalculating": "در حال محاسبه مجدد", + "dueOn": "سررسید {date}", + "breached": "نقض شد", + "warning": "هشدار", + "paused": "مکث کرد", + "withinHours": "در ساعات خدمات", + "outsideHours": "خارج از ساعت خدمات", + "elapsedOfGoal": "{elapsed} از {goal} هدف گذشته است", + "notRunning": "بدون چرخه فعال", + "noGoal": "هیچ هدفی برای این مورد مطابقت ندارد", + "completedCycles": "چرخه های تکمیل شده ({count})", + "coverageDiscrepancies": { + "sla_wider": "این SLA زمان را خارج از ساعات خدمات تیم محدود می‌شمارد.", + "team_wider": "تیم در مدت زمانی که SLA مستثنی است، پرسنل می شود.", + "both": "SLA و ساعات خدمات تیم در هر دو جهت متفاوت است." + }, + "coverageNotes": { + "sla_outside_team_service_hours": "SLA زمانی را محاسبه می‌کند که تیم کار نمی‌کند.", + "team_service_hours_outside_sla": "زمان پرسنل تیم از SLA مستثنی است.", + "sla_and_team_service_hours_differ": "SLA و ساعات خدمات تیم هر دو متفاوت است." + } + }, + "itemKey": "کلید", + "itemTitle": "عنوان", + "itemDescription": "توضیحات", + "itemType": "نوع مورد", + "itemStatus": "وضعیت", + "itemPriority": "اولویت", + "assignee": "مسئول", + "reporter": "گزارش‌دهنده", + "dueDate": "سررسید", + "startDate": "تاریخ شروع", + "estimate": "تخمین", + "timeSpent": "زمان صرف شده", + "remaining": "باقی مانده است", + "parent": "والد", + "children": "فرزندان", + "subtasks": "وظایف فرعی", + "linkedItems": "موارد مرتبط", + "attachments": "پیوست ها", + "comments": "نظرات", + "activity": "فعالیت", + "history": "تاریخچه", + "selectAssignee": "مسئول را انتخاب کنید", + "inheritProject": "ارث‌بری پروژه", + "inheritProjectFrom": "ارث بردن از {name}", + "projectInherited": "{name} (ارثی)", + "noProject": "بدون پروژه", + "setProject": "تعیین پروژه", + "failedToSaveLabels": "برچسب‌ها ذخیره نشدند", + "approvals": { + "title": "تاییدیه ها", + "actionRequired": "تصمیم لازم است", + "statuses": { + "pending": "در انتظار", + "approved": "تصویب شد", + "rejected": "رد شد", + "cancelled": "لغو شد" + }, + "decisionRequiredHint": "در انتظار تأیید - تصمیم شما لازم است", + "transitionsHiddenHint": "تأیید در انتظار - انتقال‌های محدود پنهان هستند", + "approveTitle": "درخواست تایید شود؟", + "rejectTitle": "رد درخواست؟", + "approveMessage": "تأیید، انتقال تأیید پیکربندی شده برای این مورد را اجرا می‌کند.", + "rejectMessage": "با رد کردن، انتقال رد پیکربندی شده برای این مورد اجرا می‌شود.", + "approve": "تایید کنید", + "reject": "رد کردن", + "decisionRecorded": "تصمیم ثبت شده: {decision}", + "cancelTitle": "درخواست تأیید لغو شود؟", + "cancelMessage": "مورد به وضعیت قبلی خود باز می گردد و درخواست لغو می شود.", + "cancelRequest": "لغو درخواست", + "keepOpen": "باز نگه دارید", + "cancelledSuccess": "تایید لغو شد. مورد به وضعیت قبلی خود برگردانده شد", + "decisions": { + "approve": "تایید شده است", + "reject": "رد شد", + "comment": "نظر داد", + "cancel": "درخواست را لغو کرد", + "delegate": "به کاربر #{userId} تفویض شد", + "reassign": "تایید کنندگان را دوباره تعیین کردند", + "escalate": "تشدید شد", + "substitute": "جایگزین استفاده کرد", + "requested": "درخواست را باز کرد", + "completed": "درخواست را نهایی کرد" + }, + "loading": "در حال بارگیری تأییدیه ها…", + "emptyTitle": "بدون تاییدیه", + "emptyDescription": "هیچ فعالیت تأییدی برای این مورد وجود ندارد.", + "requestNumber": "تأیید شماره {id}", + "opened": "{date} باز شد", + "closed": "بسته {date}", + "stepNumber": "مرحله {number}", + "escalatedCount": "↑ افزایش یافت {count}×", + "approvers": "تایید کنندگان", + "noEligibleApprovers": "هیچ تایید کننده واجد شرایطی پیدا نشد.", + "selfApprovalHint": "شما این درخواست را باز کردید. اگر شما نیز تأییدکننده پیکربندی شده هستید، ممکن است خود تأیید غیرفعال شود. آن را لغو کنید و از کاربر دیگری بخواهید دوباره آن را باز کند یا ابتدا تأیید خود را فعال کنید.", + "approverSourceHint": "منبع تایید کننده این مرحله را بررسی کنید، آن را تصحیح کنید، سپس درخواست را لغو و دوباره باز کنید.", + "escalates": "افزایش می یابد {date}", + "decisionRequired": "تصمیم شما لازم است", + "comment": "نظر دهید", + "commentPlaceholder": "نظر اختیاری…", + "auditLog": "گزارش حسابرسی", + "userNumber": "کاربر #{id}", + "system": "سیستم" + }, + "noItems": "هیچ موردی یافت نشد", + "noItemsInFilter": "هیچ موردی با فیلتر فعلی مطابقت ندارد", + "createToStart": "برای شروع یک مورد ایجاد کنید", + "itemCreated": "مورد با موفقیت ایجاد شد", + "itemUpdated": "مورد با موفقیت به روز شد", + "itemDeleted": "مورد با موفقیت حذف شد", + "deleted": "این مورد حذف شد.", + "itemTypeChanged": "نوع مورد تغییر کرد", + "subtasksCreated": "{count} زیرکار ایجاد شد", + "subtasksCreated_one": "زیرکار {count} ایجاد شد", + "subtasksCreated_other": "{count} زیرکار ایجاد شد", + "noChildItemType": "هیچ نوع مورد فرزندی در دسترس نیست", + "subtasksCreateFailed": "زیرکارها ایجاد نشدند", + "assignedToYou": "به شما اختصاص داده شده است", + "createdByYou": "توسط شما ایجاد شده است", + "recentlyViewed": "اخیرا مشاهده شده است", + "recentlyUpdated": "به تازگی به روز شده است", + "timeTracking": "ردیابی زمان", + "details": "جزئیات", + "agentLog": "گزارش عامل", + "agentLogEmpty": "هنوز هیچ عاملی برای این مورد اجرا نشده است", + "agentLogTriggeredBy": "تحریک شده توسط", + "agentLogWaiting": "در انتظار خروجی…", + "agentRunSingular": "اجرا", + "agentRunPlural": "اجراها", + "agentRerunLabel": "عامل را دوباره اجرا کنید", + "agentRerunStarting": "شروع…", + "agentRerunBusy": "اجرا در حال انجام است", + "agentRerunTitle": "عامل را دوباره روی این مورد اجرا کنید", + "agentRerunFailed": "اجرای جدید شروع نشد", + "agentReviewFlagTitle": "نیاز به بررسی انسانی دارد", + "agentReviewFlagBody": "عامل از یک ابزار سوء استفاده کرد و بازیابی نشد - خروجی آن ممکن است قابل اعتماد نباشد.", + "created": "ایجاد شد", + "lastUpdated": "آخرین به روز رسانی", + "healthOverview": "سلامت مورد", + "healthOverviewDescription": "سیگنال‌ها بر اساس فعالیت اخیر، تاریخ سررسید و سابقه وضعیت.", + "activityHealthCompleted": "تکمیل‌شده", + "activityHealthUnknown": "ناشناس", + "activityHealthStale": "کهنه", + "activityHealthActive": "فعال", + "activityMonitoringComplete": "نظارت بر فعالیت پایان یافت", + "activityToday": "امروز فعال است", + "activityIdleDays": "{count} روز بیکار", + "activityIdleDays_one": "{count} روز بیکار", + "activityIdleDays_other": "{count} روز بیکار", + "lastActivityAt": "آخرین فعالیت {date}", + "activityUnavailable": "هیچ مهر زمانی فعالیت در دسترس نیست", + "dueHealthCompleted": "تکمیل‌شده", + "dueHealthUnscheduled": "برنامه ریزی نشده است", + "dueHealthOverdue": "عقب افتاده", + "dueHealthToday": "سررسید امروز", + "dueHealthSoon": "سررسید به زودی", + "dueHealthScheduled": "برنامه ریزی شده است", + "workCompleted": "کار تکمیل شد", + "completedOn": "تکمیل شد {date}", + "dueOn": "سررسید {date}", + "dueDateUnavailable": "تاریخ سررسید تعیین نشده است", + "timeInStatus": "زمان در وضعیت", + "unknown": "ناشناس", + "statusSince": "در این وضعیت از {date}", + "statusHistoryUnavailable": "زمان بندی وضعیت در دسترس نیست", + "statusDurationsDescription": "کل زمان ساعت دیواری انباشته شده در هر وضعیت.", + "statusDurationsLoading": "در حال محاسبه مدت زمان وضعیت…", + "statusDurationsLoadError": "مدت زمان وضعیت قابل محاسبه نیست.", + "statusDurationsRetry": "دوباره امتحان کنید", + "statusDurationsEmpty": "هیچ سابقه وضعیتی هنوز در دسترس نیست.", + "currentStatus": "فعلی", + "durationLessThanMinute": "< ۱ دقیقه", + "timeline": "جدول زمانی", + "by": "توسط", + "workItemInformation": "اطلاعات مورد کار", + "id": "ID", + "type": "نوع", + "workItem": "مورد کار", + "noProjectConfigured": "هیچ پروژه ای برای ردیابی زمان پیکربندی نشده است", + "setDefaultProject": "یک پروژه پیش‌فرض را در تنظیمات فضای کاری یا مورد برای ثبت زمان تنظیم کنید", + "timeEntries": "ورودی های زمان", + "startTimer": "تایمر را شروع کنید", + "logTime": "ثبت زمان", + "startTimerTitle": "ردیابی زمان برای این مورد کاری را شروع کنید", + "logTimeTitle": "زمان ثبت دستی روی این مورد کار کرده است", + "noTimeLogged": "هنوز زمانی ثبت نشده است", + "logged": "ثبت‌شده است", + "loggedOf": "ثبت‌شده از", + "estimated": "برآورد شده است", + "includeChildItems": "شامل موارد فرزند", + "rollupTruncated": "محدود به اولین {max} مورد فرزند", + "rollupItemCount": "در میان {count} موارد جمع شده است", + "rollupItemCount_one": "روی {count} مورد جمع شده است", + "rollupItemCount_other": "روی {count} مورد جمع شده است", + "workItemDetails": "جزئیات مورد کار", + "fullDetails": "جزئیات کامل", + "errorLoadingWorkItem": "خطا در بارگیری مورد کاری", + "workItemNotFound": "مورد کاری پیدا نشد", + "timerBusy": "تایمر مشغول است", + "timerSyncingMessage": "تایمر در حال حاضر در حال همگام سازی است، لطفاً کمی صبر کنید و دوباره امتحان کنید.", + "timerAlreadyRunning": "تایمر در حال اجرا است", + "stopTimerFirst": "لطفاً قبل از شروع تایمر جدید، تایمر فعلی را متوقف کنید.", + "workingOn": "در حال کار بر روی {title}", + "failedToStartTimer": "تایمر شروع نشد", + "failedToSaveTimeEntry": "ذخیره زمان ورود ناموفق بود", + "failedToDeleteTimeEntry": "ورود زمان حذف نشد", + "deleteTimeEntry": "حذف ورودی زمان", + "deleteTimeEntryConfirm": "آیا مطمئن هستید که می خواهید این ورودی زمانی را حذف کنید؟ این عمل قابل لغو نیست.", + "noDescription": "بدون شرح", + "itemCopiedAs": "مورد کاری با موفقیت به عنوان {key} کپی شد", + "clickToViewCopied": "برای مشاهده مورد کپی‌شده کلیک کنید", + "failedToCopy": "کپی مورد ناموفق بود", + "moveWorkspaceMenu": "به فضای کاری حرکت کنید", + "moveWorkspaceTitle": "انتقال \"{title}\"", + "moveWorkspaceSubtitle": "پیکربندی مقصد را انتخاب کنید، سپس هر فیلد را قبل از حرکت مرور کنید.", + "moveWorkspaceDestination": "فضای کاری مقصد", + "moveWorkspaceDestinationPlaceholder": "انتخاب یک فضای کاری…", + "moveWorkspaceLoadingPreview": "در حال بارگیری پیش‌نمایش دقیق انتقال…", + "moveWorkspaceNewKeyHint": "پس از تأیید، شماره مقصد بعدی در دسترس تعیین می شود.", + "moveWorkspaceChildrenDetached": "{count} فرزند مستقیم به موارد ریشه فضای کاری مبدأ تبدیل می‌شوند", + "moveWorkspaceDeadKeyWarning": "{key} حل نخواهد شد و هرگز مجدداً استفاده نخواهد شد.", + "moveWorkspaceNoPriority": "بدون اولویت", + "moveWorkspaceConfirm": "انتقال مورد", + "moveWorkspaceCancel": "لغو کنید", + "moveWorkspaceMoving": "در حال حرکت…", + "moveWorkspaceSuccess": "مورد به عنوان {key} منتقل شد", + "moveWorkspaceLoadError": "فضاهای کاری مقصد بارگیری نشد", + "moveWorkspacePreviewError": "بارگیری پیش‌نمایش انتقال ناموفق بود", + "moveWorkspaceError": "انتقال مورد انجام نشد", + "mergeMenu": "موارد تکراری را در این ادغام کنید", + "mergeTitle": "موارد تکراری را در این بلیط ادغام کنید", + "mergeDuplicateLabel": "بلیط تکراری", + "mergeHelp": "نظرات، پیوست‌ها و رشته ایمیل بلیط تکراری به اینجا منتقل می‌شوند و نسخه تکراری پیوندی به این بلیط را نشان می‌دهد.", + "mergeDifferentRequester": "این بلیط ها متقاضیان مختلفی دارند. نظرات تکراری به اینجا منتقل می‌شوند اما خصوصی علامت‌گذاری می‌شوند و فایل‌های آن، رشته ایمیل و شرکت‌کنندگان در نسخه تکراری باقی می‌مانند.", + "mergeSelfError": "یک بلیط را نمی توان در خودش ادغام کرد", + "mergeConfirm": "ادغام", + "mergeWorking": "ادغام…", + "mergeFailed": "تکراری ادغام نشد", + "mergeSuccess": "نسخه تکراری در این بلیط ادغام شد", + "splitMenu": "تقسیم به زیربلیط", + "splitTitle": "تقسیم به زیربلیط", + "splitNewTitleLabel": "عنوان زیربلیط جدید", + "splitNewTitlePlaceholder": "این پیگیری برای چیست؟", + "splitSelectComments": "نظرات را برای انتقال انتخاب کنید", + "splitNoComments": "هیچ نظری برای تقسیم وجود ندارد", + "splitTitleRequired": "عنوان زیربلیت جدید لازم است", + "splitSelectionRequired": "حداقل یک نظر را برای تفکیک انتخاب کنید", + "splitConfirm": "ایجاد زیربلیط", + "splitWorking": "در حال ایجاد…", + "splitFailed": "بلیت تقسیم نشد", + "splitSuccess": "زیربلیط ایجاد شد", + "splitLoadError": "نظرات بارگیری نشد", + "mergedBanner": "این بلیط در یک بلیط دیگر ادغام شد.", + "mergedBannerOpen": "بلیط کانونیکال را باز کنید", + "deleteWorkItem": "حذف مورد کاری", + "confirmDeleteItem": "آیا مطمئن هستید که می خواهید \"{title}\" را حذف کنید؟ این عمل قابل لغو نیست.", + "failedToDelete": "مورد حذف نشد", + "deleteItemWithChildren": "حذف مورد با فرزندان", + "itemHasChildren": "این مورد {count} مورد فرزند دارد.", + "itemHasChildrenSingular": "این مورد دارای 1 مورد فرزند است.", + "deleteAllOption": "حذف همه موارد ({count})", + "deleteAllDescription": "این مورد و همه فرزندان آن را برای همیشه حذف کنید", + "reparentOption": "تغییر والد فرزندان", + "reparentDescription": "فرزندان را به والد این مورد منتقل کنید، سپس فقط این مورد را حذف کنید", + "typeToConfirm": "برای تأیید حذف، «{title}» را تایپ کنید", + "confirmationPlaceholder": "برای تایید عنوان را تایپ کنید...", + "deleteAllItems": "حذف همه موارد", + "reparentAndDelete": "تغییر والد و حذف", + "reparentFailed": "تغییر والد فرزندان ناموفق بود", + "cascadeDeleteFailed": "درخت مورد حذف نشد", + "deletedItemsCount": "{count} مورد حذف شد", + "reparentedAndDeleted": "فرزندان دوباره والد شدند و مورد حذف شد", + "selectNewParent": "انتخاب والد جدید برای فرزندان", + "selectNewParentPlaceholder": "یک مورد والد را انتخاب کنید...", + "makeRootItem": "موارد ریشه (بدون والد) بسازید", + "reparentLevelHint": "فقط نشان دادن موارد در همان سطح سلسله مراتبی", + "noOtherItemsAtLevel": "هیچ مورد دیگری در این سطح وجود ندارد - «ساخت موارد ریشه» را انتخاب کنید یا از بالا انتخاب کنید", + "reparentToGrandparent": "فرزندان به والد بالاتر منتقل خواهند شد", + "childrenWillBecomeRoot": "فرزندان به موارد ریشه تبدیل می‌شوند", + "failedToUpdateWatchStatus": "وضعیت تماشا به‌روزرسانی نشد", + "copyWorkItem": "کپی مورد کار", + "unwatchWorkItem": "لغو تماشای مورد", + "watchWorkItem": "تماشای مورد", + "watchers": "ناظران", + "watchersEmpty": "هنوز کسی این مورد را تماشا نکرده است.", + "watcherAdd": "ناظر را اضافه کنید", + "watcherRemove": "ناظر را حذف کنید", + "watcherYou": "(شما)", + "watcherPickUser": "کاربری را برای افزودن انتخاب کنید", + "watchersAddFailed": "ناظر اضافه نشد", + "watchersRemoveFailed": "ناظر حذف نشد", + "noSubIssueTypes": "هیچ نوع زیرموردی موجود نیست", + "cannotCreateChildItems": "نمی توان موارد کار فرزند را برای این سطح مورد ایجاد کرد.", + "workItems": "اقلام کار", + "linkedTo": "مرتبط به", + "goToLinkedWorkItem": "برو به مورد کاری مرتبط", + "goTo": "برو به {title}", + "noParent": "بدون والد", + "setParent": "تنظیم والد", + "changeParent": "تغییر والد", + "searchForParentItem": "جستجوی مورد والد...", + "showingItemsFromLevel": "فقط نمایش موارد از سطح سلسله مراتب {level}", + "oneLevelAbove": "یک سطح بالاتر از {name}", + "searchParentAcrossWorkspaces": "مورد والد را در فضاهای کاری جستجو کنید", + "removeParent": "حذف والد", + "noItemsAtLevel": "هیچ موردی در سطح سلسله مراتب {level} یافت نشد", + "failedToUpdateParent": "به روز رسانی والد انجام نشد", + "failedToRemoveParent": "حذف والد انجام نشد", + "clickToCopyKey": "برای کپی کردن کلید در کلیپ بورد کلیک کنید", + "hierarchyMismatchTitle": "این مورد دیگر مناسب والدش نیست", + "hierarchyMismatchDescription": "{type} در سطح {currentLevel} پیکربندی شده است، در حالی که والد موجود آن نیز در سطح {parentLevel} است. پیوند حفظ شده است، اما اکنون برای تغییر والد مجدد به یک والد سطح {requiredLevel} نیاز است. یک نوع مورد سطح {compatibleLevel} را برای کار با سطح والد فعلی انتخاب کنید.", + "chooseCompatibleType": "نوع سازگار را انتخاب کنید", + "parentPickerMismatchTitle": "پیکربندی سلسله مراتب فعلی با این پیوند ذخیره شده متفاوت است", + "parentPickerMismatchDescription": "{type} اکنون والد سطح {requiredLevel} را می‌پذیرد. والد موجود شما در سطح {currentParentLevel} است. برای انتخاب والد دیگری در آن سطح، ابتدا از نوع مورد سطح {compatibleLevel} استفاده کنید.", + "compatibleTypeHint": "یک نوع سطح {compatibleLevel} با والد سطح فعلی {parentLevel} مطابقت دارد. پیوندهای موجود با تغییر نوع در جای خود باقی می مانند.", + "hierarchyLevelLabel": "سطح سلسله مراتب {level}", + "genericSubtaskLevelLabel": "زیر وظیفه عمومی · هر سطح والد", + "genericSubtaskParentHint": "زیرکارهای عمومی را می‌توان زیر هر مورد سلسله‌مراتبی معمولی منتقل کرد.", + "fitsCurrentParent": "متناسب با والد فعلی", + "enterDescription": "توضیحات را وارد کنید...", + "clickToEditDescription": "برای ویرایش توضیحات کلیک کنید", + "clickToAddDescription": "برای افزودن توضیحات کلیک کنید", + "noDescriptionProvided": "هیچ توضیحی ارائه نشده است - برای افزودن یکی کلیک کنید", + "addLink": "پیوند اضافه کنید", + "addPage": "افزودن صفحه", + "createChild": "ایجاد فرزند", + "child": "فرزند", + "attachFile": "فایل را پیوست کنید", + "attach": "ضمیمه کنید", + "newDiagram": "نمودار جدید", + "diagram": "نمودار", + "previousValueRemains": "مقدار قبلی بدون تغییر باقی می ماند", + "titleCannotBeEmpty": "عنوان نمی تواند خالی باشد", + "enterTitle": "عنوان را وارد کنید...", + "clickToEditTitle": "برای ویرایش عنوان کلیک کنید", + "searchTestCases": "جستجوی موارد آزمایشی...", + "searchWorkItems": "جستجوی موارد کاری...", + "loadingLinks": "در حال بارگیری پیوندها...", + "removeLink": "حذف پیوند", + "linkType": "نوع پیوند", + "chooseRelationshipType": "انتخاب نوع رابطه...", + "linkToTestCase": "این مورد را به یک مورد آزمایشی پیوند دهید.", + "linkToPage": "این مورد را به یک صفحه دانش در همان فضای کاری پیوند دهید.", + "targetItem": "مورد هدف", + "targetPage": "صفحه هدف", + "testCase": "مورد تست", + "page": "صفحه", + "linkedPages": "صفحات", + "pagePickerPlaceholder": "جستجوی صفحات…", + "selectLinkTypeToSearch": "یک نوع پیوند را برای شروع جستجو انتخاب کنید.", + "childWorkItems": "موارد کار فرزند", + "loadingChildItems": "در حال بارگیری موارد کار فرزند...", + "setStatus": "وضعیت را تنظیم کنید", + "unassigned": "اختصاص داده نشده است", + "milestone": "نقطه عطف", + "iteration": "تکرار", + "labels": "برچسب ها", + "addLabel": "+ افزودن برچسب", + "storyPoints": "امتیاز داستان", + "storyPointsChildRollup": "{points} امتیاز از {count} مورد فرزند{plural}", + "project": "پروژه", + "clickToViewDetails": "برای مشاهده جزئیات مورد کلیک کنید", + "itemLinkCopied": "پیوند مورد در کلیپ بورد کپی شد", + "failedToCopyToClipboard": "در کلیپ بورد کپی نشد", + "copyError": "خطای کپی", + "setField": "تنظیم {field}", + "selectField": "{field} را انتخاب کنید", + "enterField": "{field} را وارد کنید", + "notSet": "تنظیم نشده است", + "selectIteration": "تکرار را انتخاب کنید", + "noIteration": "بدون تکرار", + "selectOrCreateLabels": "برچسب‌ها را انتخاب یا ایجاد کنید" + }, + "history": { + "viaAIChat": "از طریق چت هوش مصنوعی تغییر کرد", + "model": "مدل", + "tokens": "توکن ها", + "cost": "هزینه", + "costUnknown": "هزینه نامعلوم" + }, + "comments": { + "failedToLoad": "نظرات بارگیری نشد", + "failedToCreate": "ارسال نظر ناموفق بود", + "confirmDelete": "آیا مطمئن هستید که می خواهید این نظر را حذف کنید؟", + "failedToDelete": "نظر حذف نشد", + "failedToUpdate": "نظر به‌روزرسانی نشد", + "edited": "ویرایش شده است", + "newCommentsAvailable": "{count} جدید", + "editComment": "ویرایش نظر", + "deleteComment": "حذف نظر", + "editPlaceholder": "نظر خود را ویرایش کنید...", + "writePlaceholder": "افزودن نظر...", + "markdownSupported": "از Markdown پشتیبانی می‌شود", + "posting": "در حال ارسال...", + "comment": "نظر دهید", + "noComments": "هنوز نظری وجود ندارد", + "beFirstToComment": "اولین نفری باشید که در مورد این مورد نظر می دهد.", + "internalNote": "یادداشت داخلی", + "internalNoteHint": "در پورتال قابل مشاهده نیست", + "internalNoteHintGeneral": "فقط برای اعضای تیم قابل مشاهده است", + "internal": "داخلی", + "oldestFirst": "قدیمی‌ترین ابتدا", + "newestFirst": "جدیدترین ابتدا", + "agentAuthored": "توسط یک عامل هوش مصنوعی نوشته شده است", + "agentOwnedBy": "عامل هوش مصنوعی متعلق به {owner}", + "addReaction": "واکنش را اضافه کنید", + "reactionFailed": "واکنش به‌روزرسانی نشد", + "reactedBy": "{reaction} توسط {names}", + "reactionThumbsUp": "شست بالا", + "reactionCheck": "انجام شد", + "reactionEyes": "دیده می شود", + "reactionHeart": "قلب", + "reactionLaugh": "خنده", + "reactionHooray": "هورا" + }, + "todo": { + "failedToCreate": "ایجاد کار ناموفق بود", + "confirmDelete": "آیا مطمئن هستید که می خواهید این کار را حذف کنید؟", + "deleteTask": "حذف وظیفه", + "failedToDelete": "وظیفه حذف نشد", + "loadingTasks": "در حال بارگیری وظایف...", + "myPersonalTasks": "وظایف شخصی من", + "whatNeedsToBeDone": "چه کاری باید انجام شود؟", + "addPersonalTask": "کار شخصی را اضافه کنید", + "noPersonalTasks": "بدون وظایف شخصی", + "addFirstTask": "برای پیگیری کارهایی که باید انجام دهید، اولین کار خود را اضافه کنید.", + "ofPersonalTasksRemaining": "{count} از {total} کار شخصی باقی مانده است", + "itemCount": "{count} مورد", + "itemCount_one": "{count} مورد", + "itemCount_other": "{count} مورد", + "assignedToMe": "به من اختصاص داده شده است", + "noAssignedWork": "بدون کار محوله", + "assignedItemsWillAppear": "موارد کاری که به شما اختصاص داده شده است در اینجا ظاهر می شود.", + "ofAssignedItemsRemaining": "{count} از {total} موارد اختصاص داده شده باقی مانده است", + "task": "وظیفه", + "dueDate": "سررسید", + "progress": "پیشرفت", + "doneFilterLabel": "سابقه کار تکمیل شده", + "completedHistoryHint": "کارهای باز همیشه نشان داده می شوند.", + "customDateLabel": "از آنجایی که", + "customDateAriaLabel": "نمایش وظایف تکمیل شده از تاریخ", + "range7d": "7 روز گذشته", + "range30d": "30 روز گذشته", + "range90d": "90 روز گذشته", + "rangeAll": "تمام زمان", + "rangeNone": "هیچ کدام" + }, + "collectionHierarchy": { + "selectLevel": "سطح سلسله مراتب را انتخاب کنید", + "levelN": "سطح {level}", + "itemsCount": "{count} مورد" + }, + "collectionTree": { + "loading": "در حال بارگیری...", + "tree": "درخت", + "noWorkItemsYet": "هنوز هیچ مورد کاری وجود ندارد", + "createFirstWorkItem": "اولین مورد کاری خود را برای دیدن درخت سلسله مراتب ایجاد کنید.", + "expandAll": "همه را گسترش دهید", + "collapseAll": "جمع کردن همه", + "showTests": "نمایش تست ها", + "hideTests": "مخفی کردن تست ها", + "showingRootItems": "موارد سطح بالا {start}-{end} از {total}", + "page": "صفحه", + "pageOfTotal": "صفحه {current} از {total}", + "itemKey": "کلید مورد", + "noStatus": "بدون وضعیت", + "workspaceNotFound": "فضای کاری پیدا نشد." + }, + "collections": { + "title": "مجموعه ها", + "subtitle": "پرس و جوها و فیلترهای ذخیره شده", + "allGlobal": "همه جهانی", + "globalCollection": "مجموعه جهانی", + "workspaceCollections": "مجموعه های فضای کاری", + "workspaceCollectionsTitle": "مجموعه های فضای کاری", + "allGlobalCollections": "همه مجموعه های جهانی", + "categoryCollections": "{category} مجموعه‌ها", + "newCollection": "مجموعه جدید", + "createCollection": "ایجاد مجموعه", + "editCollection": "ویرایش مجموعه", + "deleteCollection": "حذف مجموعه", + "viewCollection": "مشاهده مجموعه", + "saveCollection": "ذخیره مجموعه", + "updateCollection": "به روز رسانی مجموعه", + "collectionName": "نام مجموعه", + "collectionDescription": "توضیحات", + "noQuery": "بدون پرس و جو", + "noFiltersApplied": "هیچ فیلتری اعمال نشده است", + "selectType": "نوع را انتخاب کنید", + "associateWorkspace": "فضای کاری مرتبط", + "changeWorkspace": "فضای کاری را تغییر دهید", + "changeWorkspaceAssociation": "تغییر ارتباط فضای کاری", + "associateWithWorkspace": "با یک فضای کاری ارتباط برقرار کنید", + "workspaceAssociationDesc": "انتخاب یک فضای کاری این مجموعه را به آن فضای کاری محدود می کند. برای جهانی نگه داشتن آن، آن را بدون اختصاص بگذارید.", + "saveAssociation": "ذخیره ارتباط", + "workspaceAssociationNote": "فقط یک فضای کاری می تواند در یک زمان مرتبط شود. حذف انتخاب، مجموعه را به نمای کلی تبدیل می کند.", + "categoryClearedOnAssociation": "دسته انتخابی پاک می شود زیرا دسته ها فقط برای مجموعه های جهانی در دسترس هستند.", + "searchWorkspace": "جستجوی فضای کاری...", + "manageCategories": "مدیریت دسته ها", + "noCategory": "بدون دسته", + "filters": "فیلترها", + "sharedFilters": "به اشتراک گذاشته شده است", + "myFilters": "فیلترهای من", + "saveFilter": "ذخیره فیلتر", + "shareFilter": "با همه به اشتراک گذاشته شده است", + "shareFilterHint": "همه افرادی که به این برد دسترسی دارند می توانند از آن استفاده کنند", + "savedFilters": "فیلترهای ذخیره شده", + "saveCurrentFilter": "ذخیره فیلترهای فعلی", + "filterNamePlaceholder": "نام فیلتر", + "noSavedFilters": "هنوز فیلتر ذخیره شده ای وجود ندارد", + "pinFilter": "سنجاق", + "unpinFilter": "پین را بردارید", + "deleteFilter": "حذف کنید", + "filterNameRequired": "یک نام برای این فیلتر وارد کنید", + "filterNameTaken": "یک فیلتر ذخیره شده با آن نام از قبل وجود دارد", + "noActiveFilters": "قبل از ذخیره حداقل یک فیلتر اضافه کنید", + "filterSaved": "فیلتر ذخیره شد", + "filterDeleted": "فیلتر حذف شد", + "toggleSelection": "انتخاب را تغییر دهید", + "selectItems": "موارد را انتخاب کنید", + "bulkSelected": "{count} انتخاب شد", + "bulkSelectHint": "موارد را برای اعمال اقدام‌های انبوه انتخاب کنید", + "bulkSetStatus": "انتقال به", + "bulkSetAssignee": "مسئول", + "bulkSetPriority": "اولویت", + "bulkLabels": "برچسب ها", + "bulkLabelsHint": "برچسب‌ها را روی {count} مورد انتخابی اضافه یا حذف کنید", + "bulkLabelsApply": "برچسب ها را اعمال کنید", + "bulkClear": "پاک کردن", + "bulkDone": "انجام شد", + "bulkStatusSuccess": "{count} مورد منتقل شد", + "bulkStatusPartial": "{count} مورد منتقل شد، {failed} ناموفق بود", + "bulkUpdateSuccess": "{count} مورد به‌روزرسانی شد", + "bulkUpdateFailed": "به روز رسانی انبوه انجام نشد", + "bulkLabelSuccess": "برچسب‌های به‌روزرسانی‌شده در {count} مورد", + "bulkLabelPartial": "برچسب‌ها در مورد {count} به‌روزرسانی شد، {failed} ناموفق بود", + "sharedViews": "نماهای مشترک", + "saveSharedView": "ذخیره به عنوان نمای مشترک", + "sharedViewNamePlaceholder": "نام نما", + "noSharedViews": "هنوز نمای مشترکی وجود ندارد", + "sharedViewSaved": "نما ذخیره شد", + "sharedViewDeleted": "نما حذف شد", + "sharedViewRenamed": "نام نما تغییر کرد", + "sharedViewSaveFailed": "نما ذخیره نشد", + "sharedViewDeleteFailed": "نما حذف نشد", + "sharedViewReorderFailed": "امکان تغییر ترتیب نماها وجود ندارد", + "moveViewUp": "حرکت به بالا", + "moveViewDown": "به سمت پایین حرکت کنید", + "renameView": "تغییر نام دهید", + "viewsReadOnly": "فقط مالک مجموعه می تواند نماهای مشترک را مدیریت کند.", + "expandSidebar": "نوار کناری را گسترش دهید", + "collapseSidebar": "کوچک کردن نوار کناری", + "workspaces": "فضاهای کاری", + "selectWorkspaces": "انتخاب فضاهای کاری...", + "status": "وضعیت", + "selectStatuses": "انتخاب وضعیت ها...", + "priority": "اولویت", + "selectPriorities": "انتخاب اولویت ها...", + "searchItems": "جستجوی موارد...", + "addFieldFilter": "افزودن فیلتر فیلد", + "clearSearch": "جستجو را پاک کنید", + "query": "پرس و جو", + "queryLanguage": "زبان پرس و جو", + "queryPlaceholder": "Example: workspace = \"My Project\" AND status = \"open\"", + "edit": "ویرایش کنید", + "hide": "پنهان کردن", + "clear": "پاک کردن", + "execute": "اجرا کنید", + "executeShortcut": "{shortcut} برای اجرا", + "error": "خطا", + "editCqlManually": "CQL را به صورت دستی ویرایش کنید", + "resetToBuilder": "بازنشانی به سازنده", + "builderMode": "سازنده", + "rawMode": "CQL خام", + "rawModeConfirmTitle": "به CQL دستی تغییر دهید؟", + "rawModeConfirmMessage": "ویرایش دستی CQL، سازنده دیداری را تا زمانی که پرس و جو را بازنشانی نکنید، غیرفعال می کند. وضعیت سازنده فعلی شما پاک خواهد شد.", + "rawModeConfirmAccept": "به حالت دستی تغییر دهید", + "builderDisabled": "سازنده غیرفعال است - CQL دستی فعال است", + "builderDisabledDesc": "برای فعال کردن مجدد این فیلدها، روی «بازنشانی به سازنده» در نوار درخواست کلیک کنید.", + "builderRecoveryDropped": "برخی از بخش‌های درخواست شما (مانند NOT، گروه‌های OR یا فیلدهای پشتیبانی‌نشده) قابل بازسازی نبودند و حذف شدند.", + "searchItemsTitle": "جستجوی موارد", + "enterSearchText": "متن جستجو را وارد کنید...", + "apply": "اعمال", + "board": "برد", + "backlog": "بک‌لاگ", + "configure": "پیکربندی کنید", + "map": "نقشه", + "roadmap": "نقشه راه", + "publicBoard": "برد عمومی", + "publish": "منتشر کنید", + "publicBoardSharing": { + "title": "برد عمومی را به اشتراک بگذارید", + "subtitle": "این مجموعه را به عنوان برد کانبان فقط خواندنی منتشر کنید.", + "enable": "اشتراک گذاری عمومی را فعال کنید", + "enableHint": "هر کسی که پیوند را داشته باشد می‌تواند بدون ورود به سیستم، برد را مشاهده کند.", + "boardUrl": "URL برد", + "slugHint": "از ۳ تا ۶۴ حروف کوچک، اعداد و خط فاصله استفاده کنید.", + "copyLink": "لینک عمومی را کپی کنید", + "copied": "کپی شده!", + "openBoard": "باز کردن برد", + "milestoneSwimlanes": "کارت ها را بر اساس نقطه عطف گروه بندی کنید", + "milestoneSwimlanesHint": "بینندگان عمومی خطوط شنای نقاط عطف را می‌بینند. آنها نمی توانند گروه بندی را تغییر دهند یا کارت ها را بکشند.", + "scopeNote": "کوئری مجموعه باید شامل یک محدوده WorkspaceKey باشد. شما باید یک مدیر فضای کاری در هر فضای کاری ارجاعی باشید.", + "save": "اشتراک گذاری را ذخیره کنید", + "disable": "اشتراک گذاری را غیرفعال کنید", + "saveError": "تنظیمات اشتراک‌گذاری عمومی ذخیره نشد." + }, + "mapSwimlanes": "خطوط شنا", + "mapSwimlaneDimension": "گروه کارت توسط", + "mapSwimlaneOff": "خاموش", + "mapSwimlaneStatus": "وضعیت", + "mapSwimlaneStatusCategory": "دسته وضعیت", + "mapSwimlaneAssignee": "مسئول", + "mapSwimlanePriority": "اولویت", + "mapSwimlaneIteration": "تکرار", + "mapSwimlaneMilestone": "نقطه عطف", + "mapSwimlaneNoAssignee": "اختصاص داده نشده است", + "mapSwimlaneNoPriority": "بدون اولویت", + "mapSwimlaneNoIteration": "بدون تکرار", + "mapSwimlaneNoMilestone": "بدون نقطه عطف", + "roadmapSettings": "تنظیمات نقشه راه", + "roadmapStartField": "فیلد تاریخ شروع", + "roadmapEndField": "فیلد تاریخ پایان", + "roadmapDependencyLinkType": "نوع پیوند وابستگی", + "roadmapNoConfig": "فیلدهای تاریخ شروع و پایان را برای استفاده از نمای نقشه راه پیکربندی کنید.", + "roadmapNone": "هیچ کدام", + "roadmapZoomWeek": "هفته", + "roadmapZoomMonth": "ماه", + "roadmapZoomQuarter": "ربع", + "roadmapNoItems": "هیچ موردی با تاریخ در محدوده فعلی وجود ندارد.", + "roadmapToday": "امروز", + "roadmapHierarchyMode": "تاریخ های سلسله مراتبی", + "roadmapHierarchyOff": "خاموش", + "roadmapRollup": "جمع‌بندی", + "roadmapRolldown": "تفکیک", + "roadmapAdjustRelatedDates": "تاریخ های مرتبط را تنظیم کنید", + "roadmapRollupAdjustmentHint": "پس از ویرایش تاریخ فرزند، تاریخ‌های والد را به‌روزرسانی کنید.", + "roadmapRolldownAdjustmentHint": "تاریخ‌های تک فرزندی را که خارج از والد ویرایش‌شده قرار دارند، منتقل کنید.", + "roadmapHierarchyCanonicalHint": "برای استفاده از زمان‌بندی سلسله مراتبی، تاریخ شروع و تاریخ پایان را در بالا انتخاب کنید.", + "roadmapHierarchyLoadError": "تاریخ های سلسله مراتب بارگیری نشد. دوباره امتحان کنید.", + "roadmapHierarchyTruncated": "این سلسله مراتب برای تنظیم ایمن بیش از حد بزرگ است.", + "roadmapHierarchyNotReady": "تاریخ های سلسله مراتب هنوز در حال بارگیری هستند. دوباره ویرایش را امتحان کنید.", + "roadmapDateUpdateError": "نمی‌توان تاریخ‌های نقشه راه را به‌روزرسانی کرد. دوباره امتحان کنید.", + "roadmapUnscheduledHint": "{count} مورد نیاز به تاریخ دارند — یک ردیف جدول زمانی را برای زمان‌بندی انتخاب کنید.", + "roadmapUnscheduledHint_one": "{count} مورد نیاز به تاریخ دارد — ردیف جدول زمانی آن را برای زمان‌بندی انتخاب کنید.", + "roadmapUnscheduledHint_other": "{count} مورد نیاز به تاریخ دارند — یک ردیف جدول زمانی را برای زمان‌بندی انتخاب کنید.", + "roadmapItems": "موارد ({count})", + "roadmapScheduleItem": "برنامه زمانی {title}", + "noItemsInBacklog": "هیچ موردی در بک لاگ وجود ندارد", + "noItemsInBacklogDesc": "همه موارد کار یا تکمیل شده اند یا هنوز هیچ موردی وجود ندارد.", + "showingItemsFromBacklog": "نمایش {count} موارد از بک لاگ", + "dragItemsHere": "موارد را برای افزودن به این سرعت به اینجا بکشید", + "backlogItemActions": "اقدامات بک لاگ برای {title}", + "toBeginningOfBacklog": "تا آغاز بک‌لاگ", + "sendToEndOfBacklog": "ارسال به انتهای بک‌لاگ", + "assignToIteration": "اختصاص به تکرار…", + "movedToBeginningOfBacklog": "\"{title}\" را به ابتدای لیست بک‌لاگ منتقل کرد", + "sentToEndOfBacklog": "«{title}» را به انتهای بک لاگ ارسال کرد", + "assignedToIteration": "\"{title}\" به {iteration} اختصاص داده شد", + "backlogActionFailed": "مورد بک‌لاگ به روز رسانی نشد. لطفا دوباره امتحان کنید.", + "loadingStoryMap": "در حال بارگیری نقشه داستان...", + "rootLevel": "سطح ریشه", + "currentLevel": "سطح فعلی", + "showingItems": "نمایش {count} {type}{plural}", + "childItems": "{count} مورد فرزند{plural}", + "childWorkItems": "اقلام کار فرزند ({count})", + "noChildItems": "هنوز مورد فرزند وجود ندارد", + "noChildItemsLowest": "بدون مورد فرزند (پایین‌ترین سطح سلسله‌مراتبی)", + "addCard": "کارت اضافه کنید", + "collapseColumn": "جمع کردن ستون", + "expandColumn": "بزرگ کردن ستون ({name})", + "create": "ایجاد کنید", + "enterSummary": "خلاصه ای را وارد کنید...", + "selectWorkspace": "فضای کاری را انتخاب کنید", + "selectItemType": "نوع مورد را انتخاب کنید", + "noTypesAvailable": "هیچ نوع موجود نیست", + "drillDown": "برای نمایش فرزندان به‌عنوان ساختار اصلی، به عمق بروید", + "noTopLevelItems": "هیچ مورد سطح بالایی یافت نشد", + "noTopLevelItemsDesc": "چند مورد کاری ایجاد کنید تا نقشه داستان خود را ببینید", + "workspaceNotFound": "فضای کاری پیدا نشد.", + "collection": "مجموعه", + "queryColumn": "پرس و جو", + "created": "ایجاد شد", + "actions": "اقدامات", + "public": "عمومی", + "private": "خصوصی", + "shared": "به اشتراک گذاشته شده است", + "workspaceFilter": "فیلتر فضای کاری", + "allWorkspaces": "تمام فضاهای کاری", + "noCollectionsTitle": "هیچ مجموعه ای یافت نشد.", + "noCollectionsFound": "اولین مجموعه خود را برای ذخیره و استفاده مجدد از عبارت های مورد کاری ایجاد کنید.", + "collectionCount": "مجموعه {count}", + "collectionCountPlural": "{count} مجموعه", + "addFiltersToStart": "برای شروع فیلترها را اضافه کنید", + "addFiltersDesc": "برای جستجوی موارد کاری از فیلترهای نوار کناری استفاده کنید یا درخواستی بنویسید.", + "loadingWorkspaces": "در حال بارگیری فضاهای کاری...", + "loadingWorkItems": "در حال بارگیری موارد کاری...", + "noWorkItemsFound": "هیچ مورد کاری یافت نشد", + "tryAdjustingFilters": "سعی کنید فیلترها یا عبارات جستجوی خود را تنظیم کنید.", + "showingWorkItems": "نمایش {count} موارد کاری", + "confirmDeleteCollection": "آیا مطمئن هستید که می خواهید مجموعه \"{name}\" را حذف کنید؟ این عمل قابل لغو نیست.", + "confirmDeleteItem": "آیا مطمئن هستید که می خواهید \"{title}\" را حذف کنید؟ این عمل قابل لغو نیست.", + "noQueryToSave": "درخواستی برای ذخیره وجود ندارد. لطفاً چند فیلتر تنظیم کنید یا ابتدا یک عبارت QL وارد کنید.", + "itemsShown": "{count} نشان داده شده است", + "boardSummary": "نمایش {itemCount} موارد کاری در ستون {columnCount}", + "allItems": "همه موارد", + "transition_failed": "انتقال وضعیت ناموفق بود. برد به‌روزرسانی شد.", + "anotherWorkspace": "یک فضای کاری دیگر", + "collectionFiltersReason": "فیلترهای مجموعه", + "workspaceFilterReason": "فیلتر فضای کاری فعلی", + "cardCreatedOutsideView": "کارت در {workspace} ایجاد شد، اما توسط {reason} پنهان شد.", + "cardCreatedSuccess": "کارت ایجاد شد", + "boardItemsTruncated": "برخی از موارد برد پنهان هستند. برای نمایش همه آن‌ها، «بارگذاری بیشتر» را انتخاب کنید.", + "combinedBoardMoveUnsupported": "خط شنا و وضعیت را جداگانه تغییر دهید.", + "swimlaneMoveFailed": "نمی توان مورد را به آن خط شنا منتقل کرد.", + "itemTypeLaneHint": "{type} خط شنا", + "itemTypeLaneUnassignedHint": "موارد بدون والد {type}", + "itemTypeLaneUnassignedVisibleHint": "موارد بدون والد قابل مشاهده {type}", + "milestoneLaneHint": "خط شنای نقطه عطف", + "milestoneLaneUnassignedHint": "موارد بدون نقطه عطف", + "milestoneLaneHiddenCompletedHint": "کارت های نقاط عطف تکمیل شده", + "milestoneLaneOpenFromCompletedHint": "مسائل مربوط به نقاط عطف تکمیل شده را باز کنید", + "milestoneLaneConfirmTitle": "تخصیص‌های نقطه عطف حذف شوند؟", + "milestoneLaneConfirmAssign": "انتقال این کارت فقط {milestone} را نگه می دارد و {milestones} را حذف می کند.", + "milestoneLaneConfirmUnassign": "انتقال این کارت به اختصاص‌نیافته، {milestones} را حذف می‌کند.", + "milestoneLaneConfirmAction": "کارت را جابجا کنید", + "milestoneWorkspaceMismatch": "آن نقطه عطف متعلق به فضای کاری دیگری است. ابتدا کارت را در فضای کاری نقطه عطف ایجاد یا حرکت دهید.", + "manual_sort_unavailable_title": "مرتب سازی دستی در دسترس نیست", + "manual_sort_unavailable": "برای مرتب کردن دستی کارت ها، به حالت رتبه تغییر دهید.", + "blockedBy": "مسدود شده توسط", + "blocking": "مسدود کردن", + "blockersCount": "مسدودکننده‌های {count}", + "blockersCount_one": "مسدود کننده {count}", + "blockersCount_other": "{count} مسدودکننده", + "blockingCount": "{count} مسدود کردن", + "blockingCount_one": "{count} مسدود کردن", + "blockingCount_other": "{count} مسدود کردن" + }, + "links": { + "title": "پیوندها", + "subtitle": "پیوندهای مورد را مدیریت کنید", + "addLink": "پیوند اضافه کنید", + "removeLink": "حذف پیوند", + "linkText": "متن پیوند", + "linkUrl": "URL" + }, + "workspaceSettings": { + "tabs": { + "general": "عمومی", + "appearance": "ظاهر", + "categories": "دسته بندی ها", + "members": "اعضا", + "configurationSets": "مجموعه های پیکربندی", + "sourceControl": "کنترل منبع", + "codingAgents": "عوامل", + "issueSync": "همگام‌سازی مسائل", + "actionCredentials": "اعتبارنامه اقدام", + "recurrence": "عود", + "templates": "قالب ها", + "cannedResponses": "پاسخ‌های آماده", + "serviceLevels": "سطوح خدمات", + "removeWorkspace": "فضای کاری را بردارید" + }, + "title": "تنظیمات", + "subtitle": "پیکربندی تنظیمات برای {name}", + "breadcrumbs": { + "workspaces": "فضاهای کاری", + "settings": "تنظیمات" + }, + "headers": { + "general": "جزئیات و پیش فرض های اولیه فضای کاری", + "categories": "دسته بندی پروژه را محدود کنید", + "members": "افرادی که می توانند به این فضای کاری دسترسی داشته باشند را مدیریت کنید", + "configuration": "مجموعه های پیکربندی را به این فضای کاری اختصاص دهید", + "sourceControl": "مخازن و کنترل منبع را به هم متصل کنید", + "codingAgents": "عوامل برنامه نویسی و مهارت های آنها را پیکربندی کنید", + "issueSync": "مسائل خارجی را در این فضای کاری همگام کنید", + "actionCredentials": "توکن‌های رمزگذاری‌شده API که اقدامات این فضای کاری می‌تواند استفاده کند", + "recurrence": "قوانین موارد تکرار شونده را مدیریت کنید", + "templates": "الگوهای توضیحات قابل استفاده مجدد برای موارد جدید", + "cannedResponses": "تکه‌های پاسخ قابل استفاده مجدد برای عوامل پشتیبانی", + "serviceLevels": "تقویم، معیارها، و گزارش در سطح خدمات", + "danger": "این فضای کاری را برای همیشه حذف کنید" + }, + "serviceLevels": { + "tabs": { + "calendars": "تقویم های کاری", + "metrics": "معیارها", + "warnings": "هشدارها", + "recalculations": "محاسبه مجدد", + "teams": "دسترسی تیم", + "report": "گزارش دهید" + }, + "metricsTitle": "معیارهای SLA", + "metricsSubtitle": "تعاریفی که مدت زمان کار را با شرایط شروع، مکث و توقف و اهداف مرتب شده اندازه گیری می کند.", + "createMetric": "متریک جدید", + "editMetric": "ویرایش متریک", + "deleteMetric": "حذف متریک", + "deleteMetricConfirm": "معیار «{name}» حذف شود؟ چرخه های آن و کارهای معلق با آن حذف می شوند. این قابل واگرد نیست.", + "metricCreated": "متریک ایجاد شد", + "metricUpdated": "متریک به روز شد", + "metricDeleted": "متریک حذف شد", + "deleteMetricFailed": "اندازه گیری حذف نشد", + "loadMetricsFailed": "معیارها بارگیری نشد", + "reorderFailed": "تغییر ترتیب معیارها انجام نشد", + "noMetrics": "هنوز معیار SLA وجود ندارد.", + "nameRequired": "نام الزامی است.", + "goalRequired": "حداقل یک هدف اضافه کنید تا SLA یک هدف داشته باشد.", + "goalQueryRequired": "هر هدفی نیاز به یک پرس و جو دارد.", + "targetRequired": "هر هدف حداقل به یک هدف نیاز دارد.", + "targetCalendarRequired": "هر هدفی به یک تقویم نیاز دارد.", + "targetDurationRequired": "هر هدف نیاز به مدت زمان مثبت دارد.", + "targetPriorityRequired": "اهداف اولویت دار نیاز به اولویت دارند.", + "goalQueryInvalid": "یک یا چند عبارت هدف نامعتبر است.", + "displayFormat": "فرمت نمایش", + "displayFormats": { + "time": "زمان باقی مانده", + "dueDate": "سررسید" + }, + "order": "ترتیب", + "metricActive": "متریک فعال است", + "conditions": "شرایط", + "conditionsHelp": "هر شرطی در یک گروه آن گروه را فعال می کند. تقدم توقف، سپس مکث و سپس شروع است.", + "addCondition": "شرط اضافه کنید", + "selectStatuses": "وضعیت ها را انتخاب کنید", + "selectCategories": "دسته ها را انتخاب کنید", + "phases": { + "start": "شروع کنید", + "pause": "مکث کنید", + "stop": "توقف کنید" + }, + "conditionTypes": { + "created": "مورد ایجاد شد", + "statusEntered": "وضعیت وارد شد", + "statusExited": "وضعیت خارج شد", + "statusCurrent": "وضعیت فعلی است", + "categoryEntered": "دسته وضعیت وارد شد", + "categoryExited": "دسته وضعیت خارج شد", + "categoryCurrent": "دسته فعلی است", + "assigneeSet": "مجموعه مسئول", + "resolutionSet": "حل شد", + "commentByCustomer": "نظر عمومی توسط مشتری", + "commentByAgent": "نظر عمومی توسط عامل" + }, + "goals": "اهداف", + "goalQueryPlaceholder": "پرس‌وجوی QL، به عنوان مثال priority = high", + "goalQueryOptionalHint": "اختیاری - برای مطابقت با همه بلیط ها، آن را خالی بگذارید.", + "addGoal": "هدف را اضافه کنید", + "addTarget": "هدف را اضافه کنید", + "fallback": "بازگشت به عقب", + "duration": "مدت زمان", + "units": { + "minutes": "دقیقه", + "hours": "ساعت", + "days": "روز" + }, + "thresholdsTitle": "آستانه‌های هشدار SLA", + "thresholdsSubtitle": "آستانه‌های درصدی هدف که رویدادهای هشداردهنده SLA را برای قوانین اعلان و اتوماسیون ایجاد می‌کنند.", + "createThreshold": "آستانه جدید", + "editThreshold": "آستانه ویرایش", + "deleteThreshold": "حذف آستانه", + "deleteThresholdConfirm": "آستانه «{label}» حذف شود؟ این قابل واگرد نیست.", + "thresholdCreated": "آستانه ایجاد شد", + "thresholdUpdated": "آستانه به روز شد", + "thresholdDeleted": "آستانه حذف شد", + "loadThresholdsFailed": "آستانه های هشدار بارگیری نشد", + "percentRange": "درصد باید بین 1 تا 99 باشد.", + "scope": "دامنه", + "percent": "درصد", + "allMetrics": "تمام معیارها", + "noThresholds": "هنوز آستانه هشداری وجود ندارد.", + "thresholdLabelPlaceholder": "به عنوان مثال نزدیک شدن", + "thresholdActive": "آستانه فعال است", + "recalculationsTitle": "محاسبه مجدد", + "recalculationsSubtitle": "کار محاسبه مجدد SLA در انتظار و یک ماشه دستی برای یک متریک یا کل فضای کاری.", + "startRecalculation": "شروع مجدد محاسبه", + "recalculationScope": "دوباره محاسبه کنید", + "recalculationStarted": "محاسبه مجدد برای {count} معیار در صف قرار گرفت", + "recalculationFailed": "شروع مجدد محاسبه انجام نشد", + "loadRecalculationsFailed": "کار محاسبه مجدد بارگیری نشد", + "noRecalculations": "بدون کار محاسبه مجدد معلق", + "jobKind": "نوع", + "jobKinds": { + "recalcItem": "محاسبه مجدد مورد", + "recalcMetric": "محاسبه مجدد متریک", + "recalcCalendar": "محاسبه مجدد تقویم" + }, + "jobTarget": "هدف", + "attempts": "تلاش ها", + "jobState": "وضعیت", + "jobFailed": "شکست خورد", + "jobPending": "در انتظار", + "dueAt": "سررسید در", + "bindingsTitle": "دسترسی تیم", + "bindingsSubtitle": "تیم‌هایی که این فضای کاری ممکن است از ساعات خدمات آن‌ها استفاده کند. ایجاد یا حذف یک تخصیص به دسترسی مدیریت هم در تیم و هم در فضای کاری نیاز دارد.", + "createBinding": "افزودن تیم", + "removeBinding": "اتصال را بردارید", + "removeBindingConfirm": "اتصال به \"{name}\" حذف شود؟ این قابل واگرد نیست.", + "bindingCreated": "تیم افزوده شد", + "bindingRemoved": "تخصیص حذف شد", + "bindingDenied": "شما باید تیم و این فضای کاری را مدیریت کنید یا یک مدیر جهانی باشید تا یک تخصیص را تغییر دهید.", + "removeBindingBlocked": "در حالی که یک هدف SLA هنوز از یکی از تقویم‌های تیم استفاده می‌کند، این اتصال حذف نمی‌شود.", + "loadBindingsFailed": "پیوندهای تیم بارگیری نشد", + "noBindings": "هنوز هیچ تیمی به این فضای کاری متصل نشده است.", + "boundTeam": "تیم", + "availableCalendars": "تقویم های موجود", + "selectTeam": "یک تیم انتخاب کنید", + "selectTeamRequired": "یک تیم را برای اتصال انتخاب کنید.", + "bindingConsentHelp": "هم تیم و هم فضای کاری باید تأیید کنند. هر دو را مدیریت کنید یا یک مدیر جهانی باشید.", + "reportTitle": "گزارش مطابقت SLA", + "reportSubtitle": "مجموع‌های تکمیل‌شده، نقض‌شده، و در حال انجام در هر متریک، با فهرست چرخه‌های نقض‌شده برای پنجره انتخاب‌شده.", + "exportCsv": "برون‌ریزی CSV", + "from": "از", + "to": "به", + "apply": "اعمال", + "currentStateNote": "شمارش‌های در حال انجام و نقض‌شده وضعیت فعلی هستند. تعداد تکمیل شده و نقض شده از پنجره انتخاب شده و عکس های فوری چرخه ذخیره شده استفاده می کند.", + "noReportData": "هیچ چرخه تکمیل شده در این پنجره وجود ندارد.", + "metric": "متریک", + "ongoing": "در حال انجام است", + "currentlyBreached": "در حال حاضر نقض شده است", + "completed": "تکمیل شد", + "breached": "نقض شد", + "avgElapsed": "میانگین سپری شده / هدف", + "breachedItems": "موارد نقض شده", + "stoppedAt": "متوقف شد", + "elapsed": "سپری شده / هدف", + "reportLoadFailed": "گزارش SLA بارگیری نشد", + "reportCoverage": "پوشش", + "coverageReference": "مرجع", + "slaCounted": "SLA شمارش شد", + "teamService": "ساعت خدمات تیم", + "uncoveredTime": "زمان کشف نشده", + "currentStateReference": "پوشش، عکس‌های فوری چرخه ذخیره‌شده را با تیم‌های مقید فعلی مقایسه می‌کند.", + "coveragePreview": "پوشش ساعت خدمات تیم", + "coverageWeekly": "SLA {sla}/هفته · تیم {team}/هفته · همپوشانی {overlap}/هفته", + "coverageDiscrepancies": { + "sla_wider": "SLA بیشتر از کارکنان تیم‌های مقید ساعت‌های هفتگی را می‌شمارد.", + "team_wider": "تیم‌های مقید ساعت‌های هفتگی بیشتر از تعداد SLA کار می‌کنند.", + "both": "SLA و ساعات هفتگی تیم‌های محدود در هر دو جهت متفاوت است." + }, + "calendarsTitle": "تقویم های کاری", + "calendarsSubtitle": "تقویم‌های ساعات کاری که اهداف SLA برای آنها زمان محاسبه می‌شود. تقویم های تیمی به اشتراک گذاشته شده با این فضای کاری فقط خواندنی ظاهر می شوند.", + "createCalendar": "تقویم جدید", + "editCalendar": "ویرایش تقویم", + "deleteCalendar": "حذف تقویم", + "deleteCalendarConfirm": "تقویم «{name}» حذف شود؟ این قابل واگرد نیست. تقویم های ارجاع شده توسط یک هدف SLA را نمی توان حذف کرد.", + "calendarCreated": "تقویم ایجاد شد", + "calendarUpdated": "تقویم به روز شد", + "calendarDeleted": "تقویم حذف شد", + "deleteCalendarBlocked": "این تقویم همچنان با یک هدف SLA ارجاع داده می‌شود، یا توسط یک تیم به اشتراک گذاشته می‌شود و نمی‌توان آن را در اینجا حذف کرد.", + "loadFailed": "بارگیری تقویم ها انجام نشد", + "saveFailed": "تقویم ذخیره نشد", + "namePlaceholder": "به عنوان مثال ساعت پشتیبانی", + "timezone": "منطقه زمانی", + "weeklyHours": "ساعات هفتگی", + "addInterval": "اضافه کردن فاصله", + "startTime": "زمان شروع", + "endTime": "زمان پایان", + "holidays": "تعطیلات", + "addHoliday": "تعطیلات را اضافه کنید", + "monthDay": "ماه و روز", + "date": "تاریخ", + "holidayName": "نام تعطیلات", + "recurring": "سالانه تکرار می شود", + "setDefault": "به عنوان تقویم پیش فرض فضای کاری تنظیم کنید", + "applyToOngoing": "این تغییر را در چرخه های در حال انجام نیز اعمال کنید", + "applyToOngoingHint": "هر چرخه در حال انجامی را که از این تقویم در این فضای کاری استفاده می کند، دوباره محاسبه می کند.", + "applyToOngoingTeamHint": "هر چرخه جاری که از این تقویم استفاده می کند، در هر فضای کاری متصل به این تیم دوباره محاسبه می‌کند.", + "applyToOngoingImpact": "در حال حاضر این {cycles} چرخه(های) در حال انجام در {workspaces} فضای کاری است.", + "applyToOngoingNoImpact": "هیچ فضای کاری محدودی در حال حاضر به این تقویم ارجاع نمی دهد.", + "saveAndRecalculate": "ذخیره و دوباره محاسبه کنید", + "owner": "مالک", + "sharedByTeam": "به اشتراک گذاشته شده توسط تیم", + "ownedByWorkspace": "این فضای کاری", + "noCalendars": "هنوز تقویم کاری وجود ندارد.", + "days": { + "monday": "دوشنبه", + "tuesday": "سه شنبه", + "wednesday": "چهارشنبه", + "thursday": "پنج شنبه", + "friday": "جمعه", + "saturday": "شنبه", + "sunday": "یکشنبه" + } + }, + "accessDenied": "دسترسی ممنوع شد", + "accessDeniedDescription": "برای دسترسی به تنظیمات به مجوزهای مدیر فضای کاری نیاز دارید.", + "backToWorkspace": "بازگشت به فضای کاری", + "actionCredentials": { + "description": "توکن‌های رمزگذاری‌شده API که به‌جای ذخیره کردن توکن‌ها به صورت درون خطی، توسط قابلیت‌های عمل HTTP این فضای کاری ارجاع داده شده‌اند. اسرار فقط برای نوشتن هستند و قابل خواندن نیستند.", + "empty": "هنوز هیچ اعتبارنامه ای در این فضای کاری موجود نیست.", + "ownedHere": "این فضای کاری", + "inherited": "به ارث رسیده است", + "inheritedHelp": "توسط یک مدیر سیستم مدیریت می شود - اعتبارنامه جهانی و مشترک فقط در صفحه قابلیت‌های اقدام سیستم قابل ویرایش است.", + "managedByAdmin": "مدیر سیستم", + "pinnedHelp": "اعتبارنامه فقط برای این فضای کاری ذخیره می شود.", + "noPermissionTitle": "اعتبارنامه اقدام در دسترس نیست", + "noPermissionBody": "برای مدیریت اعتبارنامه اقدام آن به مجوز action.credential.manage در این فضای کاری نیاز دارید." + }, + "basicInformation": "اطلاعات پایه", + "workspaceName": "نام فضای کاری", + "workspaceNamePlaceholder": "نام فضای کاری را وارد کنید", + "workspaceKey": "کلید فضای کاری", + "workspaceKeyPlaceholder": "به عنوان مثال، DEV، TEST، PROD", + "workspaceKeyHelp": "برای پیشوندهای مورد استفاده می شود (به عنوان مثال، DEV-123). فقط حروف بزرگ و اعداد.", + "workspaceKeyImmutable": "برای پیشوندهای مورد استفاده می شود (به عنوان مثال، DEV-123). پس از ایجاد قابل تغییر نیست.", + "workspaceKeyPersonalHint": "برای پیشوندهای مورد استفاده می شود (به عنوان مثال، P1-12). فضاهای کاری شخصی می توانند آن را تغییر دهند. کلیدهای مورد با آن تغییر می کنند.", + "invalidWorkspaceKey": "کلید فضای کاری باید ۲ تا ۱۰ حرف یا رقم باشد (A-Z، 0-9).", + "description": "توضیحات", + "descriptionPlaceholder": "توضیحات اختیاری برای این فضای کاری", + "defaultTimeProject": "پروژه پیش‌فرض ردیابی زمان", + "noDefaultProject": "بدون پروژه پیش فرض", + "defaultTimeProjectHelp": "پروژه پیش‌فرض هنگام ثبت زمان از موارد کاری در این فضای کاری استفاده می‌شود. می توان در هر مورد کاری نادیده گرفت.", + "defaultView": "نمای پیش فرض فضای کاری", + "defaultViewHelp": "نمای پیش فرض هنگام ورود به این فضای کاری نمایش داده می شود.", + "activeWorkspace": "فضای کاری فعال", + "activeWorkspaceHelp": "در صورت غیرفعال بودن، فقط مدیران سیستم و مدیران فضای کاری می توانند به این فضای کاری دسترسی داشته باشند. تمام داده ها حفظ می شود.", + "enableInternalComments": "فعال کردن نظرات داخلی", + "enableInternalCommentsHint": "اجازه علامت گذاری نظرات به عنوان یادداشت های داخلی در همه موارد، نه فقط درخواست های پورتال.", + "availableAsTemplate": "به عنوان الگو موجود است", + "availableAsTemplateHelp": "سازندگان فضای کاری می توانند یک فضای کاری جدید را از یک کپی از مجموعه پیکربندی این فضای کاری، الگوهای مورد کاری و موارد فعلی شروع کنند. اعضا، تاریخچه و فایل ها هرگز کپی نمی شوند.", + "views": { + "board": "برد", + "backlog": "بک‌لاگ", + "list": "فهرست", + "tree": "درخت", + "map": "نقشه", + "overview": "نمای کلی" + }, + "visualIdentity": "هویت بصری", + "visualIdentityDescription": "ظاهر بصری فضای کاری خود را با نمادها، رنگ ها و آواتارها سفارشی کنید.", + "workspaceIconColor": "نماد و رنگ فضای کاری", + "workspaceAvatar": "آواتار فضای کاری", + "customAvatar": "آواتار سفارشی", + "imageUploadedSuccessfully": "تصویر با موفقیت آپلود شد", + "defaultIcon": "نماد پیش فرض", + "usingSelectedIconColor": "با استفاده از نماد و رنگ انتخاب شده", + "changeAvatar": "آواتار را تغییر دهید", + "uploadAvatar": "آواتار را آپلود کنید", + "attachmentsRequired": "برای بارگذاری نمادهای فضای کاری، پیوست ها باید فعال شوند", + "uploadRecommendation": "توصیه می شود: تصاویر مربعی، حداقل 256x256 پیکسل برای بهترین کیفیت", + "avatarOrIconNote": "می توانید از یک تصویر آواتار سفارشی یا نماد و ترکیب رنگ بالا استفاده کنید.", + "uploading": "در حال آپلود...", + "avatarUploadedSuccess": "آواتار با موفقیت آپلود شد", + "projectCategoryRestrictions": "محدودیت های دسته بندی پروژه", + "selectProjectCategories": "انتخاب دسته های پروژه...", + "categoryRestrictionsHelp": "به صورت اختیاری انتخاب پروژه را به دسته های خاص برای این فضای کاری محدود کنید. در صورت تنظیم، کاربران فقط می توانند پروژه ها را از دسته های انتخاب شده انتخاب کنند.", + "leaveEmptyNote": "توجه: خالی بگذارید تا امکان انتخاب از همه دسته‌های پروژه فراهم شود.", + "activeConfiguration": "پیکربندی فعال", + "permanentRemoval": "حذف دائمی", + "removeWarningIntro": "حذف این فضای کاری برای همیشه حذف می‌شود:", + "removeWarningItems": "تمامی موارد کاری و پروژه ها در این فضای کاری", + "removeWarningFields": "تمام تنظیمات فیلد سفارشی", + "removeWarningScreens": "تمام تنظیمات صفحه نمایش", + "removeWarningFiles": "همه فایل های آپلود شده مرتبط با موارد کاری", + "removeWarningFinal": "این عمل قابل لغو نیست.", + "removeWorkspaceButton": "فضای کاری را بردارید", + "typeToConfirm": "برای تأیید حذف، {name} را تایپ کنید:", + "typeNameHere": "«{name}» را در اینجا تایپ کنید", + "yesRemoveWorkspace": "بله، فضای کاری را حذف کنید", + "saveChanges": "ذخیره تغییرات", + "saving": "در حال ذخیره...", + "reset": "بازنشانی کنید", + "remove": "حذف کنید", + "cancel": "لغو کنید", + "workspaceNotFound": "فضای کاری پیدا نشد.", + "workspaceNameRequired": "نام فضای کاری الزامی است", + "workspaceKeyRequired": "کلید فضای کاری مورد نیاز است", + "savedSuccessfully": "تنظیمات فضای کاری با موفقیت ذخیره شد", + "failedToSave": "تنظیمات فضای کاری ذخیره نشد: {error}", + "deletedSuccessfully": "فضای کاری \"{name}\" با موفقیت حذف شد", + "failedToDelete": "فضای کاری حذف نشد: {error}", + "pleaseConfirmDeletion": "لطفاً برای تأیید حذف نام فضای کاری را دقیقاً همانطور که نشان داده شده است وارد کنید", + "pleaseSelectImage": "لطفا یک فایل تصویری را انتخاب کنید", + "failedToUploadAvatar": "آواتار آپلود نشد: {error}" + }, + "lookAndFeel": { + "title": "ظاهر و حس", + "subtitle": "ظاهر و چیدمان فضای کاری خود را سفارشی کنید", + "gradientTitle": "پس زمینه و گرادیان", + "gradientDescription": "یک طرح رنگی برای فضای کاری خود انتخاب کنید", + "gradients": "گرادیان ها", + "backgroundImages": "تصاویر پس زمینه", + "currentBackground": "پس زمینه فعلی", + "uploadCustomImage": "آپلود تصویر سفارشی", + "backgroundUploadRecommendation": "توصیه می شود: تصاویر با وضوح بالا (1920x1080 یا بزرگتر) برای بهترین کیفیت", + "backgroundUploadedSuccess": "تصویر پس زمینه با موفقیت آپلود شد", + "failedToUploadBackground": "پس‌زمینه بارگذاری نشد: {error}", + "identityTitle": "هویت فضای کاری", + "identityDescription": "نماد، رنگ و آواتار را برای فضای کاری خود سفارشی کنید", + "savedSuccessfully": "تنظیمات ظاهر و احساس با موفقیت ذخیره شدند", + "failedToSave": "تنظیمات ظاهر و احساس ذخیره نشد: {error}", + "logo": "لوگو", + "currentLogo": "لوگوی فعلی", + "noLogoSet": "لوگویی تنظیم نشده است", + "uploadLogo": "لوگو را بارگذاری کنید", + "logoRecommendation": "توصیه می‌شود: PNG یا SVG با پس‌زمینه شفاف. حداکثر ارتفاع در هدر: 40-50 پیکسل.", + "lightLogo": "لوگو حالت نور", + "darkLogo": "لوگو حالت تاریک", + "darkLogoFallback": "در حالت تاریک نشان داده شده است. وقتی خالی بماند به لوگوی حالت نور برمی گردد." + }, + "issueSync": { + "title": "همگام‌سازی مسائل GitHub", + "subtitle": "مسائل GitHub را در این فضای کاری به‌عنوان موارد همگام‌سازی کنید", + "noConfig": "همگام سازی مشکل برای این فضای کاری پیکربندی نشده است.", + "noConfigDescription": "یک مخزن را پیوند دهید و نحوه همگام سازی مسائل GitHub را در موارد Windshift پیکربندی کنید.", + "configure": "پیکربندی همگام‌سازی مسائل", + "enabled": "همگام سازی فعال شد", + "enabledDescription": "وقتی فعال باشد، GitHub مسائل به صورت دوره‌ای در این فضای کاری همگام‌سازی می‌شوند.", + "repository": "مخزن", + "repositoryDescription": "یک مخزن پیوندی را برای همگام‌سازی مسائل از آن انتخاب کنید.", + "selectRepository": "یک مخزن انتخاب کنید", + "statusMapping": "نگاشت وضعیت", + "statusMappingDescription": "وضعیت GitHub را به وضعیت Windshift نگاشت کنید.", + "workflowBypassWarning": "وضعیت‌های همگام‌سازی‌شده GitHub قوانین گردش کار را دور می‌زنند. تغییرات وضعیت ایجادشده توسط همگام‌سازی مسئله می‌تواند از انتقال‌ها، شرایط، اعتبارسنجی‌ها و تأییدیه‌ها عبور کند.", + "githubOpen": "GitHub \"باز\"", + "githubClosed": "GitHub \"بسته\"", + "mapsTo": "نگاشت به", + "selectStatus": "وضعیت را انتخاب کنید", + "reverseStatusMapping": "نگاشت وضعیت معکوس", + "reverseStatusMappingDescription": "نگاشت معکوس وضعیت Windshift به وضعیت GitHub را پیکربندی کنید.", + "labelSync": "همگام سازی برچسب", + "labelSyncDescription": "نحوه رسیدگی به برچسب‌های GitHub در مسائل همگام‌سازی شده.", + "labelModeNone": "هیچ کدام", + "labelModeNoneDescription": "برچسب ها را همگام نکنید.", + "labelModeMirror": "آینه", + "labelModeMirrorDescription": "برچسب‌های Windshift را برای مطابقت با برچسب‌های GitHub به‌طور خودکار ایجاد کنید.", + "labelModeMapped": "نگاشت شده است", + "labelModeMappedDescription": "برچسب‌های GitHub را به برچسب‌های Windshift موجود نگاشت کنید.", + "filterLabels": "برچسب های فیلتر", + "filterLabelsDescription": "فقط مسائلی را همگام‌سازی کنید که یکی از این برچسب‌های GitHub را دارند. برای همگام‌سازی همه خالی بگذارید.", + "filterLabelsPlaceholder": "یک نام برچسب را تایپ کرده و Enter را بزنید", + "assigneeMapping": "نگاشت مسئول", + "assigneeMappingDescription": "نام‌های کاربری GitHub را به کاربران Windshift نگاشت کنید.", + "githubUsername": "نام کاربری GitHub", + "windshiftUser": "کاربر Windshift", + "addMapping": "نگاشت را اضافه کنید", + "milestoneMapping": "نگاشت نقطه عطف", + "milestoneMappingDescription": "نقاط عطف GitHub را به نقاط عطف Windshift نگاشت کنید.", + "githubMilestone": "نقطه عطف GitHub", + "windshiftMilestone": "نقطه عطف Windshift", + "itemType": "نوع مورد", + "itemTypeDescription": "نوع مورد را برای مسائل همگام‌سازی‌شده انتخاب کنید. این تعیین می‌کند که کدام وضعیت گردش کار برای نگاشت در دسترس است.", + "selectItemType": "یک نوع مورد را انتخاب کنید", + "selectItemTypeHint": "برای پیکربندی نگاشت وضعیت، یک نوع مورد را در بالا انتخاب کنید.", + "defaultPriority": "اولویت پیش فرض", + "defaultPriorityDescription": "اولویت استفاده برای مسائل تازه درون‌ریزی‌شده.", + "comments": "همگام سازی نظرات", + "commentsDescription": "نظرات Windshift را به مسئله پیوندشده GitHub برگردانید.", + "syncStatus": "وضعیت همگام سازی", + "lastSync": "آخرین همگام سازی", + "lastSyncError": "آخرین خطای همگام سازی", + "syncedItems": "موارد همگام‌سازی شده", + "syncNow": "اکنون همگام سازی کنید", + "syncing": "در حال همگام سازی...", + "syncTriggered": "همگام سازی با موفقیت فعال شد", + "noLinkedRepos": "هیچ مخزن به این فضای کاری مرتبط نیست. ابتدا یک مخزن را در تنظیمات کنترل منبع پیوند دهید.", + "save": "ذخیره پیکربندی", + "saved": "پیکربندی همگام‌سازی مسئله ذخیره شد", + "deleted": "پیکربندی همگام‌سازی مسئله حذف شد", + "confirmDelete": "آیا مطمئن هستید که می‌خواهید پیکربندی همگام‌سازی مسئله را حذف کنید؟ موارد همگام‌سازی‌شده باقی می‌مانند اما دیگر به‌روزرسانی نمی‌شوند.", + "deleteConfig": "پیکربندی را حذف کنید", + "never": "هرگز", + "noErrors": "بدون خطا" + } +}; diff --git a/frontend/src/lib/locales/fa/zammad.js b/frontend/src/lib/locales/fa/zammad.js new file mode 100644 index 000000000..adc1abdab --- /dev/null +++ b/frontend/src/lib/locales/fa/zammad.js @@ -0,0 +1,151 @@ +export default { + "zammad": { + "tab": "Zammad", + "connections": "Zammad اتصالات", + "connectionsDescription": "اتصالات بلیط ایمن و دارای محدوده فضای کاری Zammad را پیکربندی کنید.", + "addConnection": "اتصال را اضافه کنید", + "editConnection": "اتصال را ویرایش کنید", + "noConnections": "هیچ اتصال Zammad پیکربندی نشده است", + "loadConnectionsFailed": "اتصالات Zammad بارگیری نشد", + "connectionCreated": "اتصال Zammad ایجاد شد", + "connectionUpdated": "اتصال Zammad به‌روزرسانی شد", + "saveConnectionFailed": "اتصال Zammad ذخیره نشد", + "connectionDeleted": "اتصال Zammad حذف شد", + "deleteConnection": "اتصال Zammad را حذف کنید", + "deleteConnectionConfirm": "«{name}» حذف شود؟ پیوندهای بلیط موجود ابتدا باید لغو پیوند شوند.", + "deleteConnectionFailed": "اتصال Zammad حذف نشد", + "testConnection": "تست اتصال", + "connectionTestSucceeded": "اتصال Zammad با موفقیت انجام شد", + "connectionTestFailed": "اتصال Zammad ناموفق بود", + "refreshAllTickets": "همگام سازی همه بلیط ها", + "refreshAllTicketsStarted": "همگام سازی Zammad در کل سیستم آغاز شد", + "refreshAllTicketsAlreadyRunning": "همگام سازی Zammad در سطح سیستم از قبل در حال اجرا است", + "refreshAllTicketsFailed": "همگام‌سازی بلیت‌های Zammad در سراسر سیستم انجام نشد", + "metadataSummary": "{groups} گروه های پیکربندی شده و {states} وضعیت بلیت موجود است", + "slug": "اسلاگ", + "baseUrl": "URL پایه", + "apiToken": "توکن API", + "apiTokenDescription": "برای این اتصال سیستم از یک توکن Zammad API استفاده کنید.", + "apiTokenAvailable": "توکن API موجود است", + "apiTokenMissing": "توکن API وجود ندارد", + "authMethod": "روش احراز هویت", + "oauth": "OAuth", + "oauthDescription": "این اتصال را با Zammad OAuth مجاز کنید.", + "oauthClientId": "شناسه مشتری OAuth", + "oauthClientSecret": "راز مشتری OAuth", + "secretStored": "ایمن ذخیره می شود - خالی بگذارید تا بدون تغییر بماند", + "oauthPending": "OAuth مجوز در انتظار است", + "oauthConnectedStatus": "OAuth متصل شد", + "oauthReauthorizationRequired": "OAuth مجوز مجدد مورد نیاز است", + "connectOAuth": "اتصال به Zammad", + "reauthorizeOAuth": "دوباره مجوز دهید", + "oauthConnected": "Zammad OAuth متصل شد", + "oauthConnectionFailed": "Zammad OAuth مجوز انجام نشد", + "oauthAuthorizationFailed": "مجوز Zammad OAuth شروع نشد", + "correlationFieldNotVerified": "مجوزهای حساب سرویس محدود شده از تأیید خودکار فیلد همبستگی جلوگیری می کند. قبل از ایجاد بلیط، بررسی کنید که در Zammad وجود دارد.", + "groupCatalogNotVerified": "مجوزهای حساب سرویس محدود شده از تأیید خودکار گروه های پیکربندی شده جلوگیری می کند. قبل از تغییر خط مشی گروه، گروه های تغییر نام یا حذف شده را در Zammad تأیید کنید.", + "defaultCustomer": "مشتری پیش فرض بلیط", + "defaultGroup": "گروه پیش فرض", + "allowedGroups": "گروه های بلیت مجاز", + "unverifiedGroup": "گروه تایید نشده (ID {id})", + "allowedGroupIds": "گروه های مجاز (ID:name)", + "correlationField": "فیلد همبستگی", + "correlationFieldHint": "این فیلد نوشتاری را در بلیط‌های Zammad ایجاد کنید تا با تلاش‌های مجدد، بلیطی که قبلاً ایجاد شده است را پیدا کنید.", + "completionStatus": "وضعیت تکمیل Windshift", + "noAutomaticCompletion": "به صورت خودکار تکمیل نشود", + "closedStates": "وضعیت‌های بسته Zammad", + "closedStateIds": "بسته Zammad وضعیت IDs", + "allWorkspaces": "اجازه دادن به همه فضاهای کاری", + "allowedWorkspaces": "فضاهای کاری مجاز", + "tickets": "Zammad بلیط", + "noTickets": "هنوز بلیت Zammad پیوند داده نشده است", + "createTicket": "بلیط Zammad را ایجاد کنید", + "createTicketConfirm": "عنوان و توضیحات مورد به عنوان یادداشت داخلی به این اتصال Zammad ارسال خواهد شد. گروه مقصد را تایید کنید.", + "connection": "اتصال", + "group": "گروه", + "status": "وضعیت", + "owner": "مالک", + "unassignedOwner": "اختصاص داده نشده است", + "unknown": "ناشناس", + "notSynced": "هنوز همگام سازی نشده است", + "leaveUnchanged": "بدون تغییر بگذارید", + "connectionUnavailable": "یک یا چند اتصال Zammad نیاز به مجوز دارد و هنوز نمی‌توان از آنها برای اقدامات بلیط استفاده کرد.", + "loadLinksFailed": "پیوندهای بلیت Zammad بارگیری نشد", + "loadMetadataFailed": "گروه‌ها و وضعیت‌های Zammad پیکربندی‌شده بارگیری نشد", + "loadOwnersFailed": "بارگیری مالکان Zammad انجام نشد", + "ticketCreated": "Zammad بلیط ایجاد شد", + "ticketCreationStarted": "Zammad ایجاد بلیط از قبل در حال انجام است", + "ticketCreationInProgress": "ساخت بلیط در حال انجام است. پس از پیوند بلیط، بازخوانی در دسترس است.", + "ticketCreateFailed": "بلیت Zammad ایجاد نشد", + "linkExistingTicket": "پیوند بلیط موجود", + "linkExistingTicketConfirm": "یک بلیط Zammad موجود را با شماره بلیط آن پیوند دهید.", + "ticketNumberLabel": "شماره بلیط", + "ticketNumberPlaceholder": "مثلا 12345", + "ticketLinked": "Zammad بلیت پیوند داده شد", + "ticketLinkFailed": "بلیت Zammad پیوند داده نشد", + "editTicket": "بلیط Zammad را ویرایش کنید", + "ticketUpdated": "Zammad بلیت به‌روزرسانی شد", + "ticketUpdateFailed": "بلیت Zammad به‌روزرسانی نشد", + "ticketReloadAfterChangeFailed": "تغییر Zammad با موفقیت انجام شد، اما داده‌های بلیت فعلی بارگیری مجدد نشد.", + "ticketRefreshed": "Zammad وضعیت بلیت بازخوانی شد", + "ticketRefreshFailed": "بلیت Zammad بازخوانی نشد", + "retrySync": "همگام سازی را دوباره امتحان کنید", + "refreshTicket": "بازخوانی وضعیت بلیط", + "syncFailedNoTicket": "همگام سازی انجام نشد. پس از پیوند یک بلیط Zammad، بازخوانی در دسترس است.", + "creationUncertainNoTicket": "ساخت بلیط نتیجه نامشخصی دارد. Zammad را علامت بزنید و در صورت نیاز بلیط موجود را با شماره پیوند دهید.", + "removeTicketLink": "حذف تخصیص", + "removeTicketLinkConfirm": "این تخصیص به Zammad #{number} و فیلد همبستگی Windshift را حذف می‌کند. خود بلیط Zammad در جای خود باقی می ماند.", + "ticketLinkRemoved": "تخصیص بلیت Zammad حذف شد", + "ticketLinkRemoveFailed": "تخصیص بلیت Zammad حذف نشد", + "ticketNumber": "Zammad #{number}", + "lastSynced": "همگام‌سازی شده {time}", + "timeline": { + "toggle": "تغییرات مشاهده شده", + "observedHint": "تغییرات مشاهده شده توسط Windshift در طول همگام سازی. این یک مسیر حسابرسی کامل Zammad نیست.", + "empty": "هنوز هیچ تغییری در بلیط مشاهده نشده است.", + "loadFailed": "تغییرات مشاهده شده Zammad بارگیری نشد", + "initialValue": "تنظیم نشده است", + "valueIdFallback": "ID {id}", + "change": "{field}: {from} ← {to}", + "field": { + "status": "وضعیت", + "group": "گروه", + "owner": "مالک", + "changed": "فیلد بلیط" + } + }, + "overview": { + "loading": "در حال بارگیری وضعیت پشتیبانی در کل فضای کاری Zammad…", + "loadFailed": "نمای کلی پشتیبانی Zammad بارگیری نشد", + "emptyTitle": "هیچ بلیت پیوندی Zammad وجود ندارد", + "emptyDescription": "این فضای کاری هیچ بلیت پیوندی Zammad ندارد.", + "observedHint": "وضعیت بلیط در کل فضای کاری که توسط Windshift در طول همگام‌سازی مشاهده شد.", + "refresh": "تازه کردن", + "byStatus": "توزیع وضعیت", + "statusWithConnection": "{connection} · {status}", + "statusIdFallback": "وضعیت ID {id}", + "unknownStatusBucket": "وضعیت نامعلوم", + "recentChanges": "تغییرات مشاهده شده اخیر", + "noRecentChanges": "هنوز هیچ تغییری مشاهده نشده است.", + "syncStateHint": "برخی از پیوندهای بلیط نیاز به پیگیری در Zammad یا تنظیمات اتصال آن دارند.", + "metrics": { + "total": "مجموع", + "active": "فعال", + "closed": "بسته", + "unassigned": "اختصاص داده نشده است", + "syncFailed": "همگام سازی انجام نشد", + "creationUncertain": "ایجاد نامشخص", + "unknownStatus": "وضعیت نامعلوم" + } + }, + "returnLinkResolving": "در حال باز کردن مورد پیوند شده Windshift...", + "returnLinkFailed": "مورد پیوند شده Windshift باز نشد. ممکن است دیگر وجود نداشته باشد یا ممکن است دسترسی نداشته باشید.", + "syncState": { + "pending": "ایجاد بلیت در انتظار است", + "creating": "ایجاد بلیط", + "linked": "بلیط لینک شده است", + "sync_failed": "همگام سازی انجام نشد", + "creation_uncertain": "نتیجه ایجاد نامشخص؛ دوباره تلاش می کند فقط بلیط موجود را جستجو کند" + } + } +}; diff --git a/frontend/src/lib/locales/fr/ui.js b/frontend/src/lib/locales/fr/ui.js index 3e9aa0610..331250c41 100644 --- a/frontend/src/lib/locales/fr/ui.js +++ b/frontend/src/lib/locales/fr/ui.js @@ -212,6 +212,14 @@ export default { // Sélecteur de jeu d'approbations selectApprovalSet: 'Sélectionner un ensemble d’approbations', + + // Sélecteur de date + datePicker: { + previousMonth: 'Mois précédent', + nextMonth: 'Mois suivant', + openCalendar: 'Ouvrir le calendrier', + selectDate: 'Sélectionner une date...', + }, }, editors: { diff --git a/frontend/src/lib/locales/ru/ui.js b/frontend/src/lib/locales/ru/ui.js index 8d5652a68..6f4ca56f7 100644 --- a/frontend/src/lib/locales/ru/ui.js +++ b/frontend/src/lib/locales/ru/ui.js @@ -168,6 +168,14 @@ export default { selectWorkflow: 'Выберите рабочий процесс', selectConditionSet: 'Выберите набор условий', selectApprovalSet: 'Выберите набор согласований', + + // Выбор даты + datePicker: { + previousMonth: 'Предыдущий месяц', + nextMonth: 'Следующий месяц', + openCalendar: 'Открыть календарь', + selectDate: 'Выберите дату…', + }, }, editors: { diff --git a/frontend/src/lib/locales/zh-CN/ui.js b/frontend/src/lib/locales/zh-CN/ui.js index 933b1de8a..4affdbf28 100644 --- a/frontend/src/lib/locales/zh-CN/ui.js +++ b/frontend/src/lib/locales/zh-CN/ui.js @@ -148,6 +148,14 @@ export default { selectScreen: '选择屏幕', searchTestCases: '搜索测试用例...', selectWorkflow: '选择工作流', + + // 日期选择器 + datePicker: { + previousMonth: '上个月', + nextMonth: '下个月', + openCalendar: '打开日历', + selectDate: '选择日期...', + }, }, editors: { diff --git a/frontend/src/lib/mobile/MobileCreatePage.svelte b/frontend/src/lib/mobile/MobileCreatePage.svelte index 4f0cac52d..a281d1dfa 100644 --- a/frontend/src/lib/mobile/MobileCreatePage.svelte +++ b/frontend/src/lib/mobile/MobileCreatePage.svelte @@ -12,6 +12,7 @@ import { workspacePermissions } from '../stores/workspacePermissions.svelte.js'; import FileText from '@lucide/svelte/icons/file-text'; import NativeSelect from '../components/NativeSelect.svelte'; + import DatePicker from '../pickers/DatePicker.svelte'; import CustomFieldRenderer from '../features/items/CustomFieldRenderer.svelte'; import { loadMobileItemDetailSummary } from './mobileItemDetailData.js'; import MobileEditorPage from './MobileEditorPage.svelte'; @@ -1024,15 +1025,15 @@ {:else if field.field_identifier === 'due_date'} {:else if field.field_identifier === 'start_date'} {:else if field.field_identifier === 'end_date'} {:else if field.field_identifier === 'story_points'}