From aaf4a020580609266a90daeef5f4bed854ecafb8 Mon Sep 17 00:00:00 2001
From: Stefan Ernst <24554551+stefan-ernst@users.noreply.github.com>
Date: Sat, 7 Nov 2026 14:32:34 +0100
Subject: [PATCH 1/5] feat(i18n): add Persian (fa) locale with full key
coverage (WI-2033)
Add a Persian (fa) frontend locale that mirrors the English catalog key for
key, and register it as a right-to-left locale so it appears in the language
picker and is negotiated from fa-* browsers.
The i18n gate now requires full key coverage for fa alongside ru, de, fr, and
zh-CN, so the locale can never silently fall back to English.
Refs #457 (Persian UI portion).
---
README.md | 4 +-
frontend/scripts/check-i18n.js | 10 +-
frontend/src/lib/locales/fa/actions.js | 296 ++++
frontend/src/lib/locales/fa/admin.js | 1235 +++++++++++++++
.../src/lib/locales/fa/adminOperations.js | 818 ++++++++++
frontend/src/lib/locales/fa/agents.js | 58 +
frontend/src/lib/locales/fa/analytics.js | 119 ++
frontend/src/lib/locales/fa/auth.js | 219 +++
frontend/src/lib/locales/fa/channels.js | 811 ++++++++++
frontend/src/lib/locales/fa/common.js | 303 ++++
frontend/src/lib/locales/fa/dashboard.js | 194 +++
frontend/src/lib/locales/fa/index.js | 51 +
frontend/src/lib/locales/fa/logbook.js | 75 +
frontend/src/lib/locales/fa/misc.js | 842 +++++++++++
frontend/src/lib/locales/fa/mobile.js | 152 ++
frontend/src/lib/locales/fa/navigation.js | 650 ++++++++
frontend/src/lib/locales/fa/pages.js | 166 ++
frontend/src/lib/locales/fa/teams.js | 196 +++
frontend/src/lib/locales/fa/testing.js | 379 +++++
frontend/src/lib/locales/fa/time.js | 266 ++++
frontend/src/lib/locales/fa/ui.js | 623 ++++++++
frontend/src/lib/locales/fa/workflows.js | 396 +++++
frontend/src/lib/locales/fa/workspace.js | 1332 +++++++++++++++++
frontend/src/lib/locales/fa/zammad.js | 151 ++
frontend/src/lib/stores/i18n.svelte.js | 1 +
25 files changed, 9340 insertions(+), 7 deletions(-)
create mode 100644 frontend/src/lib/locales/fa/actions.js
create mode 100644 frontend/src/lib/locales/fa/admin.js
create mode 100644 frontend/src/lib/locales/fa/adminOperations.js
create mode 100644 frontend/src/lib/locales/fa/agents.js
create mode 100644 frontend/src/lib/locales/fa/analytics.js
create mode 100644 frontend/src/lib/locales/fa/auth.js
create mode 100644 frontend/src/lib/locales/fa/channels.js
create mode 100644 frontend/src/lib/locales/fa/common.js
create mode 100644 frontend/src/lib/locales/fa/dashboard.js
create mode 100644 frontend/src/lib/locales/fa/index.js
create mode 100644 frontend/src/lib/locales/fa/logbook.js
create mode 100644 frontend/src/lib/locales/fa/misc.js
create mode 100644 frontend/src/lib/locales/fa/mobile.js
create mode 100644 frontend/src/lib/locales/fa/navigation.js
create mode 100644 frontend/src/lib/locales/fa/pages.js
create mode 100644 frontend/src/lib/locales/fa/teams.js
create mode 100644 frontend/src/lib/locales/fa/testing.js
create mode 100644 frontend/src/lib/locales/fa/time.js
create mode 100644 frontend/src/lib/locales/fa/ui.js
create mode 100644 frontend/src/lib/locales/fa/workflows.js
create mode 100644 frontend/src/lib/locales/fa/workspace.js
create mode 100644 frontend/src/lib/locales/fa/zammad.js
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/scripts/check-i18n.js b/frontend/scripts/check-i18n.js
index 6394fec5d..3360051cf 100644
--- a/frontend/scripts/check-i18n.js
+++ b/frontend/scripts/check-i18n.js
@@ -23,11 +23,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/lib/locales/fa/actions.js b/frontend/src/lib/locales/fa/actions.js
new file mode 100644
index 000000000..9767bf7f2
--- /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": "نقطه عطف IDs را برای عمل ذخیره می کند. نام ها فقط برای ویرایش نشان داده می شوند.",
+ "userPickerHint": "یک کاربر خاص را انتخاب کنید یا یک کاربر ID/template را در زیر تایپ کنید.",
+ "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": "مورد ID",
+ "statusId": "وضعیت ID",
+ "assigneeId": "کاربر واگذار شده ID",
+ "any": "فیلد هر مورد"
+ },
+ "user": {
+ "name": "نام کامل کاربر",
+ "email": "ایمیل کاربر",
+ "id": "کاربر ID"
+ },
+ "old": {
+ "description": "مقدار قبلی قبل از تغییر",
+ "example": "مقدار قبلی هر فیلد"
+ },
+ "trigger": {
+ "itemId": "راهاندازی مورد ID",
+ "workspaceId": "فضای کاری ID",
+ "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..19cff3893
--- /dev/null
+++ b/frontend/src/lib/locales/fa/admin.js
@@ -0,0 +1,1235 @@
+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": "به عنوان مثال، تصویر/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": "0 قانون پیکربندی شده است",
+ "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 مشتری ID",
+ "oauthClientSecret": "OAuth راز مشتری",
+ "oauthCallbackError": "اتصال کنترل منبع ناموفق بود",
+ "leaveEmptyToKeep": "خالی بگذارید تا راز موجود باقی بماند",
+ "accessToken": "رمز دسترسی",
+ "accessTokenHelp": "از یک نشانه دسترسی با مجوزهای مورد نیاز برای ارائه دهنده انتخاب شده استفاده کنید.",
+ "gitlabAccessTokenHelp": "GitLab توکنهای دسترسی شخصی، پروژهای و گروهی را میپذیرد. برای ادغام ربات و سرور به سرور، توکن پروژه یا گروه را ترجیح دهید.",
+ "githubAppId": "GitHub برنامه ID",
+ "privateKeyPem": "کلید خصوصی (PEM)",
+ "orgInstallation": "نصب سازمان",
+ "discoverInstallations": "محل نصب برنامه GitHub خود را کشف کنید",
+ "discoverButton": "تاسیسات را کشف کنید",
+ "orgInstallationId": "نصب سازمان (ID:",
+ "scopes": "محدوده ها",
+ "scopesHelp": "فهرستی از OAuth محدوده جدا شده با فاصله",
+ "workspaceAccess": "دسترسی به فضای کاری",
+ "allWorkspaces": "همه فضاهای کاری می توانند از این ارائه دهنده استفاده کنند",
+ "restrictToWorkspaces": "محدود به فضاهای کاری خاص",
+ "allowedWorkspaces": "فضاهای کاری مجاز",
+ "noWorkspacesWarning": "هشدار: هیچ فضای کاری انتخاب نشده است. این ارائه دهنده برای هیچ فضای کاری قابل استفاده نخواهد بود."
+ },
+ "security": {
+ "title": "امنیت",
+ "subtitle": "تنظیمات مربوط به امنیت و کنترلهای ویژگی را مدیریت کنید",
+ "calendarFeeds": "اشتراک های فید تقویم",
+ "calendarFeedsDesc": "به کاربران اجازه دهید ICS فید URLs را برای برنامههای تقویم خارجی تولید کنند",
+ "calendarFeedsWarning": "هشدار: در صورت غیرفعال شدن، فیدهای تقویم موجود فوراً کار نمی کنند. کاربران نمی توانند فید جدید URLs تولید کنند.",
+ "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": "Slug مورد نیاز است",
+ "slugInvalid": "Slug باید فقط شامل حروف کوچک، اعداد و خط فاصله باشد",
+ "name": "نام",
+ "displayName": "نام نمایشی",
+ "displayNamePlaceholder": "به عنوان مثال، Authentik، Keycloak",
+ "nameRequired": "نام الزامی است",
+ "providerType": "نوع ارائه دهنده",
+ "issuerUrl": "صادرکننده URL",
+ "issuerUrlPlaceholder": "https://auth.example.com/realms/myrealm",
+ "issuerUrlHelp": "صادرکننده OIDC URL. برای Keycloak: https://host/realms/realmname",
+ "issuerUrlRequired": "صادرکننده URL مورد نیاز است",
+ "issuerUrlInvalid": "صادرکننده URL باید با https:// یا http:// شروع شود",
+ "clientId": "مشتری ID",
+ "clientIdPlaceholder": "بادگیر",
+ "clientIdRequired": "مشتری ID مورد نیاز است",
+ "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) فقط نام نمایشی را به طور پیش فرض درج می کنند. name_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": "فعال (برای بازگشت به حالت پیش فرض داخلی علامت را بردارید)",
+ "availableVariables": "متغیرهای موجود",
+ "syntaxHint": "الگوها از نحو html/template Go استفاده می کنند. از {open}. فیلد {close} برای مقادیر و {open} محدوده استفاده کنید. آیتمها {close}…{open} پایان {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": "آیتم Work آیتم کاری دیگر را پیاده سازی می کند"
+ },
+ "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": "نمونه ID",
+ "instanceIdDescription": "این ID را در پورتال 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": "پیکربندی کنید کدام ویژگیهای AI فعال هستند و اتصالات 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": "به عنوان مثال، / سلامت",
+ "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..ca057a6cf
--- /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": "به عنوان مثال نرم افزار_مهندس",
+ "builtInOverride": "این لغو جایگزین الگوی داخلی «{name}» میشود.",
+ "namePlaceholder": "به عنوان مثال مهندس نرم افزار",
+ "instructions": "دستورالعمل ها",
+ "instructionsPlaceholder": "درخواست سیستم یا شخصیت این الگو"
+ },
+ "llmConnections": {
+ "title": "اتصالات هوش مصنوعی",
+ "subtitle": "ارائه دهندگان مدل هوش مصنوعی را برای ویژگی های هوشمند پیکربندی کنید",
+ "addConnection": "افزودن اتصال",
+ "empty": "هنوز هیچ اتصال AI پیکربندی نشده است.",
+ "addFirst": "اولین اتصال خود را اضافه کنید",
+ "provider": "ارائه دهنده",
+ "model": "مدل",
+ "default": "پیش فرض",
+ "referenced": "توسط قابلیت های فعال شده ارجاع داده می شود",
+ "vision": "چشم انداز",
+ "noVision": "بدون دید",
+ "visionTitle": "این مدل می تواند تصاویر روی آیتم های کاری را تحلیل کند",
+ "noVisionTitle": "این مدل فقط متنی است و نمی تواند تصاویر را ببیند",
+ "testConnection": "تست اتصال",
+ "addTitle": "اتصال هوش مصنوعی را اضافه کنید",
+ "editTitle": "اتصال هوش مصنوعی را ویرایش کنید",
+ "disableWarning": "غیرفعال کردن این اتصال، قابلیتهای عمل وابسته LLM را در زمان اجرا غیرفعال میکند.",
+ "disableWarningHelp": "ارجاع شده توسط {capabilities}. قابلیتها همچنان فعال به نظر میرسند، اما اقداماتی که از آنها استفاده میکنند تا زمانی که اتصال دوباره فعال نشود یا قابلیت دوباره مشخص نشود، با شکست مواجه میشوند.",
+ "namePlaceholder": "به عنوان مثال OpenRouter Claude غزل",
+ "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": "برای APIs که به بیش از یک هدر مخفی نیاز دارند. هر ردیف در زمان درخواست یک اعتبارنامه را حل می کند.",
+ "defaultHeadersHelp": "فقط سرصفحه های غیر حساس نشانه های احراز هویت در بخش زیر قرار دارند.",
+ "authorizationPlaceholder": "مجوز",
+ "bearerPlaceholder": "حامل",
+ "apiKeyHeaderPlaceholder": "X-API-کلید"
+ },
+ "actionCredentials": {
+ "title": "اعتبارنامه اقدام",
+ "subtitle": "نشانههای رمزگذاریشده API که بهجای ذخیرهسازی توکنها به صورت درون خطی، با قابلیتهای HTTP ارجاع میشوند. مقادیر مخفی فقط نوشتن هستند و قابل خواندن نیستند.",
+ "add": "اضافه کردن اعتبار",
+ "addFirst": "اولین شناسنامه را اضافه کنید",
+ "empty": "هنوز اعتباری وجود ندارد.",
+ "bearerToken": "نشان حامل",
+ "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": "فقط فراداده غیر حساس کلیدهایی مانند رمز، رمز و رمز رد می شوند.",
+ "edit": "ویرایش اعتبار",
+ "storedRotate": "ذخیره شده ({prefix}) - از Rotate برای جایگزینی آن استفاده کنید.",
+ "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": "تنظیمات Milestone Swimlane ذخیره شد",
+ "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": "شغل ID",
+ "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": "GitLab وب هوک",
+ "webhookHelp": "پاسخ تماس URL و مخفی را به webhook پروژه GitLab اضافه کنید. فشار، برچسب، درخواست ادغام، یادداشت، و رویدادهای انتشار پذیرفته می شود.",
+ "configureWebhook": "جزئیات وب هوک را ایجاد کنید",
+ "rotateWebhookSecret": "راز را بچرخانید",
+ "webhookSecretOnce": "اکنون این راز را کپی کنید. دیگر نمایش داده نخواهد شد.",
+ "webhookSecretRotated": "GitLab راز webhook ایجاد شد",
+ "webhookLoadFailed": "تنظیمات هوک GitLab بارگیری نشد",
+ "webhookRotateFailed": "ایجاد GitLab مخفی قلاب وب ناموفق بود"
+ },
+ "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": "سرصفحه تاریخ HTTP پاسخهای API را با ساعت مرورگر مقایسه میکند. میانه چرخشی آخرین پنج نمونه، مُهرهای زمانی نمایش داده شده را تصحیح میکند و در صورتی که آفست از آستانه فراتر رفت، هشداری را ایجاد میکند.",
+ "currentOffset": "افست فعلی",
+ "driftStatus": "وضعیت دریفت",
+ "samplesCollected": "نمونه های جمع آوری شده",
+ "driftThreshold": "آستانه رانش",
+ "recentSamples": "نمونه های اخیر",
+ "autoRefresh": "اولین جدیدترین · هر 2 ثانیه یکبار به روز می شود",
+ "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": "ادغام مفهوم من",
+ "slug": "حلزون حرکت کردن"
+ },
+ "oauthClients": {
+ "title": "OAuth مشتریان",
+ "subtitle": "برنامههای شخص ثالثی را ثبت کنید که میتوانند به کاربران Windshift با نشانههای OAuth 2.0 و PKCE اجازه دهند و برای هر کاربر API استفاده کنند.",
+ "template": "الگو",
+ "oauthCallback": "OAuth پاسخ تماس",
+ "registerClient": "ثبت نام مشتری",
+ "empty": "هیچ مشتری OAuth ثبت نام نکرده است",
+ "emptyDescription": "برای افزودن یک برنامه شخص ثالث، روی Register Client کلیک کنید.",
+ "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": "مشتری ID",
+ "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..7308019a1
--- /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..42278fa47
--- /dev/null
+++ b/frontend/src/lib/locales/fa/analytics.js
@@ -0,0 +1,119 @@
+export default {
+ "analytics": {
+ "title": "تجزیه و تحلیل",
+ "subtitle": "ارائه سلامت و جریان، بدون نیاز به تکرار",
+ "loading": "در حال بارگیری تجزیه و تحلیل...",
+ "noData": "هیچ داده ای در دسترس نیست",
+ "errorTitle": "تجزیه و تحلیل بارگیری نشد",
+ "unsupportedVersion": "سرور یک قالب تجزیه و تحلیل پشتیبانی نشده را برگرداند. پس از اتمام استقرار، بازخوانی کنید.",
+ "collectionLoadError": "مجموعه ها بارگیری نشدند. Analytics همه موارد فضای کاری را نشان می دهد.",
+ "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..992e91ec5
--- /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": "چشم انداز",
+ "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..96bdf1b18
--- /dev/null
+++ b/frontend/src/lib/locales/fa/channels.js
@@ -0,0 +1,811 @@
+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": "Slug باید از 1 تا 40 حرف کوچک، اعداد یا خط تیره باشد و ممکن است با خط فاصله شروع یا ختم نشود یا حاوی خط تیره متوالی باشد.",
+ "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": "Webhook URL مورد نیاز است",
+ "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 وارد کنید.",
+ "pleaseEnterValidUrl": "لطفاً یک URL معتبر وارد کنید.",
+ "sendingTestWebhook": "در حال ارسال وب هوک آزمایشی...",
+ "managedByPlugin": "این وب هوک توسط پلاگین {pluginName} مدیریت می شود.",
+ "emailConfiguration": "پیکربندی ایمیل",
+ "authenticationMethod": "روش احراز هویت",
+ "basicIMAP": "پایه (IMAP)",
+ "usernameAndPassword": "نام کاربری و رمز عبور",
+ "oauth": "OAuth",
+ "microsoftOrGoogle": "Microsoft 365 or Google",
+ "provider": "ارائه دهنده",
+ "microsoft365": "Microsoft 365",
+ "google": "Google",
+ "clientId": "مشتری ID",
+ "clientIdRequired": "OAuth مشتری ID مورد نیاز است",
+ "clientSecret": "راز مشتری",
+ "clientSecretRequired": "OAuth راز مشتری مورد نیاز است",
+ "leaveBlankToKeep": "برای حفظ موجود، خالی بگذارید",
+ "tenantId": "مستاجر ID",
+ "tenantIdHelp": "برای اجازه دادن به هر حساب Microsoft از «مشترک» استفاده کنید، یا مستاجر خاصی را وارد کنید ID",
+ "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": "Slug فرم مورد نیاز است",
+ "formSlugInvalid": "Slug باید از 1 تا 40 حرف کوچک، اعداد یا خط تیره باشد و ممکن است با خط فاصله شروع یا ختم نشود یا حاوی خط تیره متوالی باشد.",
+ "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": "نمایه",
+ "profileSubtitle": "نحوه ورود به این پورتال را مدیریت کنید.",
+ "profileSection": "حساب",
+ "passkeysTitle": "Passkeys",
+ "passkeysSubtitle": "بدون پیوند ایمیل سریعتر و ایمن تر وارد شوید.",
+ "passkeysUnsupported": "مرورگر شما از کلیدهای عبور پشتیبانی نمی کند. از نسخه اخیر کروم، سافاری، اج یا فایرفاکس استفاده کنید.",
+ "addPasskey": "یک رمز عبور اضافه کنید",
+ "addPasskeyTitle": "یک رمز عبور اضافه کنید",
+ "addPasskeyHint": "به این دستگاه یک نام بدهید تا بتوانید بعداً آن را تشخیص دهید.",
+ "passkeyName": "Passkey نام",
+ "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": "اشتراک گذاری ID:",
+ "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..7e89be2e8
--- /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..72fe0a9df
--- /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": "برای افزودن ویجت، Customize را انتخاب کنید",
+ "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/index.js b/frontend/src/lib/locales/fa/index.js
new file mode 100644
index 000000000..ee725efc4
--- /dev/null
+++ b/frontend/src/lib/locales/fa/index.js
@@ -0,0 +1,51 @@
+/**
+ * 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';
+
+export default createLocale({
+ common,
+ auth,
+ workspace,
+ admin,
+ testing,
+ time,
+ channels,
+ workflows,
+ ui,
+ navigation,
+ misc,
+ actions,
+ logbook,
+ analytics,
+ teams,
+ pages,
+ adminOperations,
+ agents,
+ dashboard,
+ zammad,
+ mobile,
+});
diff --git a/frontend/src/lib/locales/fa/logbook.js b/frontend/src/lib/locales/fa/logbook.js
new file mode 100644
index 000000000..7fdd33654
--- /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..cfb1e0924
--- /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": "اشعه ایکس",
+ "mapping": "نقشه برداری",
+ "preview": "پیش نمایش",
+ "import": "واردات"
+ },
+ "deploymentType": {
+ "cloud": "Jira ابر",
+ "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": "فیلدهای Milestone به طور خودکار به نقاط عطف سیستم اشاره می کنند. هنگام پر کردن این فیلد، کاربران می توانند از نقاط عطف موجود انتخاب کنند.",
+ "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": "Milestone را اضافه کنید",
+ "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": "دستههای Milestone را مدیریت کنید",
+ "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": "Asset Set را انتخاب کنید",
+ "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": "Go برگشت (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": "یک PR، شعبه یا تعهد را به این مورد متصل کنید",
+ "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…\" و \"#\" موجود در بدنه درخواست pull و پیامهای commit آن را اعمال کنید.",
+ "smartCommitsWarningTitle": "ایمیل های committer تایید نشده پذیرفته می شوند",
+ "smartCommitsWarningBody": "اقدامات Smart-commit تحت هویت مطابق با ایمیل git committer اجرا می شوند. Git این فیلد را احراز هویت نمی کند. یک مشارکت کننده می تواند آن را روی هر مقداری تنظیم کند. فقط برای مخازنی که به هر ادغام اعتماد دارید فعال کنید.",
+ "smartCommitsUpdateFailed": "تنظیمات commits هوشمند بهروزرسانی نشد"
+ },
+ "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 مشتری ID",
+ "oauthClientSecret": "OAuth راز مشتری",
+ "callbackUrl": "پاسخ به تماس URL",
+ "callbackUrlHint": "این URL را در تنظیمات برنامه ادغام خود کپی کنید",
+ "providerConfig": "پیکربندی ارائه دهنده (JSON)",
+ "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..c19fe4828
--- /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..5473a97bd
--- /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": "Milestone ایجاد کنید",
+ "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": "Go به {name}",
+ "description": "به فضای کاری {name} بروید"
+ },
+ "workspaceOverview": {
+ "label": "{name} نمای کلی",
+ "description": "مشاهده داشبورد فضای کاری با آمار و نمودار"
+ }
+ }
+ },
+ "dashboard": {
+ "title": "داشبورد",
+ "subtitle": "مروری بر موارد کاری و پروژه های شما",
+ "welcome": "خوش آمدید",
+ "overview": "نمای کلی",
+ "recentActivity": "فعالیت اخیر",
+ "recentItems": "موارد اخیر",
+ "myTasks": "وظایف من",
+ "assignedToMe": "به من اختصاص داده شده است",
+ "openTasks": "Tasks را باز کنید",
+ "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": "برای افزودن ویجت ها، Customize را انتخاب کنید",
+ "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": "فریم ورک Frontend",
+ "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..b4a629ad3
--- /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..3509b91be
--- /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..e2805d54b
--- /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": "به عنوان مثال، رگرسیون Sprint 5",
+ "selectAssigneeOptional": "انتخاب گیرنده (اختیاری)",
+ "createRun": "Run را ایجاد کنید",
+ "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": "Workspaces را انتخاب کنید",
+ "allWorkspaces": "همه فضاهای کاری",
+ "itemTypes": "انواع آیتم ها",
+ "selectItemTypes": "انواع مورد را انتخاب کنید",
+ "allItemTypes": "همه انواع اقلام",
+ "testSetsSubtitle": "موارد تست را در برنامه های اجرایی سازماندهی کنید",
+ "selectMilestone": "انتخاب نقطه عطف...",
+ "setName": "نام را تنظیم کنید",
+ "setNamePlaceholder": "به عنوان مثال، طرح تست Sprint 5",
+ "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 (غربال)",
+ "formatImmutableNote": "پس از ایجاد نمی توان قالب را تغییر داد.",
+ "titleFromScenarioNote": "عنوان از نام سناریو گرفته شده است.",
+ "gherkinLabel": "سناریو (غربال)",
+ "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..71bf4cf6b
--- /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 ساعت) را وارد کنید، یا زمان های شروع + پایان را برای محاسبه خودکار مدت زمان وارد کنید. قالبهای زمانی: 1 ساعت، 30 دقیقه، 1:30 دقیقه، 2:15 دقیقه، 1 روز (=8 ساعت)",
+ "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": "Go برای مورد کاری: {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": "Go به پروژه ها",
+ "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..8e553a817
--- /dev/null
+++ b/frontend/src/lib/locales/fa/ui.js
@@ -0,0 +1,623 @@
+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": "Agent روی این سرور اجرا می شود",
+ "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": "مجموعه تایید را انتخاب کنید"
+ },
+ "editors": {
+ "enterText": "متن را وارد کنید...",
+ "selectDate": "انتخاب تاریخ...",
+ "clickToChangeColor": "برای تغییر رنگ کلیک کنید",
+ "saveEnter": "ذخیره (ورود)",
+ "cancelEscape": "لغو (فرار)",
+ "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": "نمودار رندرینگ",
+ "mermaidParseError": "خطای تجزیه پری دریایی",
+ "mermaidEmpty": "بلوک پری دریایی خالی",
+ "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": "Go به صفحه {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..8e1f1fcee
--- /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..cdf698884
--- /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": "< 1 متر",
+ "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": "Go به مورد کاری مرتبط",
+ "goTo": "Go به {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": "Task را حذف کنید",
+ "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، به عنوان مثال. اولویت = بالا",
+ "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": "کلید فضای کاری باید 2-10 حرف یا رقم باشد (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..ce580de5b
--- /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 مشتری ID",
+ "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/stores/i18n.svelte.js b/frontend/src/lib/stores/i18n.svelte.js
index c81ff5681..ffc8d9d99 100644
--- a/frontend/src/lib/stores/i18n.svelte.js
+++ b/frontend/src/lib/stores/i18n.svelte.js
@@ -12,6 +12,7 @@ export const SUPPORTED_LOCALES = [
{ code: 'de', name: 'Deutsch', direction: 'ltr' },
{ code: 'es', name: 'Español', direction: 'ltr' },
{ code: 'ar', name: 'العربية', direction: 'rtl' },
+ { code: 'fa', name: 'فارسی', direction: 'rtl' },
{ code: 'pt-BR', name: 'Português (Brasil)', direction: 'ltr' },
{ code: 'ru', name: 'Русский', direction: 'ltr' },
{ code: 'zh-CN', name: '简体中文', direction: 'ltr' },
From b72df2581e42606400e900b98468e4a20454f8a9 Mon Sep 17 00:00:00 2001
From: Stefan Ernst <24554551+stefan-ernst@users.noreply.github.com>
Date: Sat, 7 Nov 2026 21:28:27 +0100
Subject: [PATCH 2/5] fix(i18n): correct Persian (fa) locale mistranslations
and terminology (WI-2033)
Fix literal machine-translation artifacts across the Persian locale: domain
terms (token, runner, board, swimlane, theme, slug, field, value, backlog,
mapping, grant, assignment), untranslated fragments, garbled sentences,
grammar/word-order errors, register inconsistencies, and terminology drift.
Also fills several help strings that were empty in fa.
---
frontend/src/lib/locales/fa/actions.js | 110 ++---
frontend/src/lib/locales/fa/admin.js | 284 ++++++------
.../src/lib/locales/fa/adminOperations.js | 312 ++++++-------
frontend/src/lib/locales/fa/agents.js | 6 +-
frontend/src/lib/locales/fa/analytics.js | 16 +-
frontend/src/lib/locales/fa/auth.js | 46 +-
frontend/src/lib/locales/fa/channels.js | 194 ++++----
frontend/src/lib/locales/fa/common.js | 48 +-
frontend/src/lib/locales/fa/dashboard.js | 36 +-
frontend/src/lib/locales/fa/logbook.js | 24 +-
frontend/src/lib/locales/fa/misc.js | 226 +++++-----
frontend/src/lib/locales/fa/mobile.js | 26 +-
frontend/src/lib/locales/fa/navigation.js | 114 ++---
frontend/src/lib/locales/fa/pages.js | 24 +-
frontend/src/lib/locales/fa/teams.js | 22 +-
frontend/src/lib/locales/fa/testing.js | 70 +--
frontend/src/lib/locales/fa/time.js | 26 +-
frontend/src/lib/locales/fa/ui.js | 144 +++---
frontend/src/lib/locales/fa/workflows.js | 42 +-
frontend/src/lib/locales/fa/workspace.js | 414 +++++++++---------
frontend/src/lib/locales/fa/zammad.js | 38 +-
21 files changed, 1111 insertions(+), 1111 deletions(-)
diff --git a/frontend/src/lib/locales/fa/actions.js b/frontend/src/lib/locales/fa/actions.js
index 9767bf7f2..f5d283b84 100644
--- a/frontend/src/lib/locales/fa/actions.js
+++ b/frontend/src/lib/locales/fa/actions.js
@@ -7,7 +7,7 @@ export default {
"noActions": "هنوز هیچ اقدامی وجود ندارد",
"noActionsDescription": "اقداماتی را برای خودکارسازی گردش کار خود بر اساس رویدادهای مورد ایجاد کنید",
"enabled": "فعال شد",
- "disabled": "از کار افتاده است",
+ "disabled": "غیرفعال",
"enable": "فعال کردن",
"disable": "غیر فعال کردن",
"viewLogs": "مشاهده گزارشها",
@@ -18,8 +18,8 @@ export default {
"pickTitle": "یک الگوی عمل را انتخاب کنید",
"fromTemplate": "از قالب",
"empty": "هیچ قالبی در دسترس نیست",
- "help": "یک طرح اتوماسیون ارسال شده را در این فضای کاری اعمال کنید. هر برنامه یک اقدام جدید ایجاد می کند که می توانید بعداً آن را ویرایش کنید.",
- "apply": "درخواست کنید"
+ "help": "یک طرح اتوماسیون ارائهشده را در این فضای کاری اعمال کنید. هر طرح یک اقدام جدید ایجاد میکند که می توانید بعداً آن را ویرایش کنید.",
+ "apply": "اعمال"
},
"trigger": {
"statusTransition": "انتقال وضعیت",
@@ -33,12 +33,12 @@ export default {
"itemInactive": "مورد غیرفعال است",
"manual": "دستی",
"respondToCascades": "به تغییرات ناشی از عمل پاسخ دهید",
- "respondToCascadesHint": "هنگامی که فعال باشد، این عملکرد زمانی که توسط اقدامات دیگر، نه فقط تغییرات کاربر، فعال می شود، نیز اجرا می شود."
+ "respondToCascadesHint": "هنگامی که فعال باشد، این اقدام زمانی که توسط اقدامات دیگر، نه فقط تغییرات کاربر، فعال می شود، نیز اجرا می شود."
},
"manualAccess": {
- "label": "چه کسی می تواند این عمل دستی را اجرا کند؟",
+ "label": "چه کسی میتواند این اقدام دستی را اجرا کند؟",
"allEditors": "همه ویرایشگرهای فضای کاری",
- "unrestrictedHint": "بدون محدودیت نقش هر کسی با دسترسی ویرایش میتواند این عملکرد را ببیند و اجرا کند.",
+ "unrestrictedHint": "بدون محدودیت نقش هر کسی با دسترسی ویرایش میتواند این اقدام را ببیند و اجرا کند.",
"restrictedHint": "فقط اعضای دارای حداقل یک نقش انتخاب شده می توانند این عمل را ببینند و اجرا کنند. مدیران فضای کاری همیشه دسترسی را حفظ می کنند."
},
"nodes": {
@@ -47,16 +47,16 @@ export default {
"setStatus": "وضعیت را تنظیم کنید",
"addComment": "اضافه کردن نظر",
"notifyUser": "به کاربر اطلاع دهید",
- "condition": "وضعیت",
+ "condition": "شرط",
"updateAsset": "به روز رسانی دارایی",
"createAsset": "ایجاد دارایی",
- "httpRequest": "HTTP درخواست",
+ "httpRequest": "درخواست HTTP",
"containerRun": "کانتینر را اجرا کنید",
"aiExtract": "استخراج هوش مصنوعی",
"aiAgent": "عامل هوش مصنوعی",
"relatedItems": "برای هر مورد مرتبط",
"transitionItem": "مورد انتقال",
- "roundRobinAssign": "تخصیص دور برگشتی",
+ "roundRobinAssign": "تخصیص نوبتی",
"createMilestone": "نقطه عطف ایجاد کنید",
"notifyCustomer": "به مشتری اطلاع دهید",
"insertCannedResponse": "درج پاسخ آماده",
@@ -65,7 +65,7 @@ export default {
"aiUpdated": "اکشن به روز شده توسط هوش مصنوعی",
"runAs": "اجرا به عنوان",
"runAsTriggerUser": "به عنوان کاربر محرک اجرا شود",
- "runAsHint": "این عمل با مجوزهای این کاربر اجرا می شود. برای اجرا به عنوان کسی که باعث آن شده است، خالی بگذارید.",
+ "runAsHint": "این اقدام با مجوزهای این کاربر اجرا میشود. برای اجرا به عنوان کسی که باعث آن شده است، خالی بگذارید.",
"runAsReadonlyHint": "برای تغییر به اجازه Set Action Actor نیاز دارد.",
"addNodes": "اضافه کردن گره ها",
"tips": "نکات",
@@ -76,7 +76,7 @@ export default {
"config": {
"from": "از",
"to": "به",
- "selectField": "انتخاب رشته...",
+ "selectField": "انتخاب فیلد...",
"selectStatus": "انتخاب وضعیت...",
"config": "پیکربندی",
"configure": "پیکربندی کنید",
@@ -86,15 +86,15 @@ export default {
"setCondition": "تنظیم شرط ...",
"targetStatus": "وضعیت هدف",
"fieldName": "نام فیلد",
- "value": "ارزش",
+ "value": "مقدار",
"commentContent": "محتوای نظر",
"commentPlaceholder": "متن نظر را وارد کنید برای متغیرها از {{item.title}} استفاده کنید.",
"privateComment": "نظر خصوصی (فقط داخلی)",
"fieldToCheck": "فیلد برای بررسی",
"scopeThisItem": "این مورد",
"scopeParentItem": "مورد والد",
- "operator": "اپراتور",
- "compareValue": "مقایسه ارزش",
+ "operator": "عملگر",
+ "compareValue": "مقایسه مقدار",
"private": "خصوصی",
"triggerType": "نوع ماشه",
"fromStatus": "از وضعیت",
@@ -103,7 +103,7 @@ export default {
"anyStatus": "هر وضعیت",
"triggerField": "فیلد تغییر کرد",
"anyField": "هر فیلدی (همه تغییرات)",
- "recipientType": "گیرنده",
+ "recipientType": "نوع گیرنده",
"notifyMessage": "پیام",
"notifyPlaceholder": "پیام را وارد کنید برای متغیرها از {{item.title}} استفاده کنید.",
"enterMessage": "پیام را وارد کنید...",
@@ -113,12 +113,12 @@ export default {
"commentAuthor": "نویسنده نظر",
"commentAnyAuthor": "هر نویسنده ای",
"commentCustomer": "مشتری پاسخ می دهد",
- "commentAgent": "نظرات نماینده",
+ "commentAgent": "نظرات عامل",
"commentPrivacyHint": "نظرات خصوصی هرگز باعث ایجاد اقدامات قابل مشاهده برای مشتری نمی شود.",
"inactiveHours": "ساعات غیرفعال",
"inactiveHoursPlaceholder": "به عنوان مثال 24",
"inactiveHoursHint": "زمانی آتش می گیرد که یک بلیط باز برای این چند ساعت هیچ فعالیتی نداشته باشد.",
- "cannedResponse": "پاسخ کنسرو شده",
+ "cannedResponse": "پاسخ آماده",
"selectCannedResponse": "انتخاب پاسخ آماده...",
"cannedResponseHint": "قطعههای خصوصی و درجهایی که توسط یک نظر خصوصی فعال میشوند، به عنوان یادداشتهای داخلی پست میشوند.",
"addLabels": "برچسب ها را اضافه کنید",
@@ -132,19 +132,19 @@ export default {
"sourceAssetFieldHint": "فیلد موردی را که حاوی دارایی پیوند شده است انتخاب کنید",
"targetAssetType": "نوع دارایی هدف",
"selectAssetType": "انتخاب نوع دارایی...",
- "fieldMappingsLabel": "نقشه برداری میدانی",
- "fieldMappings": "{count} نگاشت میدان",
- "fieldMappings_one": "{count} نقشه برداری میدانی",
- "fieldMappings_other": "{count} نگاشت میدان",
+ "fieldMappingsLabel": "نگاشت فیلد",
+ "fieldMappings": "{count} نگاشت فیلد",
+ "fieldMappings_one": "{count} نگاشت فیلد",
+ "fieldMappings_other": "{count} نگاشت فیلد",
"configureAssetUpdate": "پیکربندی بهروزرسانی دارایی...",
- "fromField": "از میدان",
+ "fromField": "از فیلد",
"sourceTypeVariable": "متغیر/قالب",
"sourceTypeItemField": "فیلد مورد",
- "sourceTypeLiteral": "ارزش تحت اللفظی",
+ "sourceTypeLiteral": "مقدار تحت اللفظی",
"selectTargetField": "انتخاب فیلد هدف...",
- "addMapping": "نقشه برداری را اضافه کنید",
- "milestonePickerHint": "نقطه عطف IDs را برای عمل ذخیره می کند. نام ها فقط برای ویرایش نشان داده می شوند.",
- "userPickerHint": "یک کاربر خاص را انتخاب کنید یا یک کاربر ID/template را در زیر تایپ کنید.",
+ "addMapping": "نگاشت را اضافه کنید",
+ "milestonePickerHint": "شناسههای نقاط عطف را برای اقدام ذخیره میکند. نامها فقط برای ویرایش نمایش داده میشوند.",
+ "userPickerHint": "یک کاربر خاص را انتخاب کنید یا شناسه/الگوی کاربر را در زیر تایپ کنید.",
"assetSet": "مجموعه دارایی",
"selectAssetSet": "انتخاب مجموعه دارایی...",
"assetTitle": "عنوان دارایی",
@@ -163,23 +163,23 @@ export default {
"configureRequest": "پیکربندی درخواست HTTP...",
"configureExtract": "پیکربندی استخراج AI...",
"selectModelAndTools": "انتخاب مدل و ابزار ...",
- "httpCapability": "HTTP قابلیت مشتری",
+ "httpCapability": "قابلیت کلاینت HTTP",
"httpMethod": "روش",
- "urlTemplate": "URL الگو",
- "requestBody": "درخواست بدن",
- "requestBodyPlaceholder": "اختیاری. JSON بدنه، ممکن است از {{variables}} استفاده کند.",
+ "urlTemplate": "الگوی URL",
+ "requestBody": "بدنه درخواست",
+ "requestBodyPlaceholder": "اختیاری. بدنه JSON، ممکن است از {{variables}} استفاده کند.",
"httpHeaders": "سرصفحه ها",
"addHeader": "هدر را اضافه کنید",
"headerName": "نام سربرگ",
- "headerValue": "ارزش",
- "dockerCapability": "Docker محیط زیست",
+ "headerValue": "مقدار",
+ "dockerCapability": "محیط Docker",
"timeoutSecs": "تایم اوت (ثانیه)",
- "llmCapability": "LLM اتصال",
+ "llmCapability": "اتصال LLM",
"model": "مدل",
"tools": "ابزار",
- "aiPrompt": "اعلان",
+ "aiPrompt": "پرامپت",
"aiExtractPromptPlaceholder": "استخراج داده های ساخت یافته از ورودی در مورد اینکه چه چیزی باید استخراج شود مشخص باشید.",
- "systemPrompt": "اعلان سیستم",
+ "systemPrompt": "پرامپت سیستم",
"systemPromptPlaceholder": "شما یک دستیار مفید هستید. استفاده از ابزار برای ...",
"inputField": "فیلد ورودی",
"inputFieldPlaceholder": "نام متغیر برای خواندن ورودی از",
@@ -187,15 +187,15 @@ export default {
"inputFieldsPlaceholder": "نام متغیرهای جدا شده با کاما",
"outputField": "فیلد خروجی",
"outputFieldPlaceholder": "نام متغیر برای نوشتن خروجی",
- "outputSchema": "خروجی JSON طرحواره",
+ "outputSchema": "طرحواره JSON خروجی",
"agentTools": "ابزار",
- "agentToolsHint": "HTTP-قابلیتهای کلاینتی که نماینده ممکن است تماس بگیرد. فقط قابلیتهای محدود به این فضای کاری فهرست شدهاند.",
- "noToolsAvailable": "هیچ قابلیت HTTP-مشتری برای این فضای کاری موجود نیست.",
- "maxSteps": "حداکثر تکرار"
+ "agentToolsHint": "قابلیتهای کلاینت HTTP که عامل ممکن است فراخوانی کند. فقط قابلیتهای محدود به این فضای کاری فهرست شدهاند.",
+ "noToolsAvailable": "هیچ قابلیت کلاینت HTTP برای این فضای کاری موجود نیست.",
+ "maxSteps": "حداکثر مراحل"
},
"recipients": {
- "assignee": "مأمور",
- "creator": "خالق",
+ "assignee": "مسئول",
+ "creator": "ایجادکننده",
"specific": "کاربران خاص"
},
"condition": {
@@ -215,7 +215,7 @@ export default {
"title": "گزارش های اجرایی",
"noLogs": "بدون گزارش اجرا",
"status": "وضعیت",
- "running": "در حال دویدن",
+ "running": "در حال اجرا",
"completed": "تکمیل شد",
"failed": "شکست خورد",
"skipped": "رد شد",
@@ -242,8 +242,8 @@ export default {
"createAssetFailed": "ایجاد دارایی انجام نشد: {reason}"
},
"test": {
- "title": "عمل تست",
- "description": "موردی را برای اجرای این عمل انتخاب کنید. این عمل بلافاصله با دور زدن ماشه معمولی اجرا می شود.",
+ "title": "آزمایش اقدام",
+ "description": "موردی را برای اجرای این اقدام انتخاب کنید. این اقدام بلافاصله با دور زدن ماشه معمولی اجرا میشود.",
"selectItem": "مورد را انتخاب کنید",
"itemPlaceholder": "جستجو برای یک مورد ...",
"execute": "اکشن را اجرا کنید",
@@ -254,7 +254,7 @@ export default {
"placeholders": {
"title": "متغیرهای موجود",
"description": "از این متغیرها در قالب خود استفاده کنید. زمانی که اکشن اجرا می شود، آنها با مقادیر واقعی جایگزین می شوند.",
- "showReference": "نشان دادن مرجع نگهدارنده",
+ "showReference": "نمایش مرجع جاینگهدار",
"categories": {
"item": "فیلدهای مورد",
"user": "کاربر فعلی",
@@ -263,30 +263,30 @@ export default {
},
"item": {
"title": "عنوان مورد",
- "id": "مورد ID",
- "statusId": "وضعیت ID",
- "assigneeId": "کاربر واگذار شده ID",
+ "id": "شناسه مورد",
+ "statusId": "شناسه وضعیت",
+ "assigneeId": "شناسه مسئول",
"any": "فیلد هر مورد"
},
"user": {
"name": "نام کامل کاربر",
"email": "ایمیل کاربر",
- "id": "کاربر ID"
+ "id": "شناسه کاربر"
},
"old": {
"description": "مقدار قبلی قبل از تغییر",
"example": "مقدار قبلی هر فیلد"
},
"trigger": {
- "itemId": "راهاندازی مورد ID",
- "workspaceId": "فضای کاری ID",
+ "itemId": "شناسه مورد راهانداز",
+ "workspaceId": "شناسه فضای کاری",
"actorUserId": "کاربری که اقدام را راه اندازی کرده است",
- "newField": "مقدار جدید یک فیلد تغییر یافته، به عنوان مثال. trigger.new_iteration_id",
- "fieldFallback": "مخفف مقدار جدید، به عنوان مثال. trigger.iteration_id",
- "oldField": "مقدار قبلی یک فیلد تغییر یافته، به عنوان مثال. trigger.old_iteration_id"
+ "newField": "مقدار جدید یک فیلد تغییر یافته، مثلاً trigger.new_iteration_id",
+ "fieldFallback": "مخفف مقدار جدید، مثلاً trigger.iteration_id",
+ "oldField": "مقدار قبلی یک فیلد تغییر یافته، مثلاً trigger.old_iteration_id"
},
"parent": {
- "openChildCount": "فرزندان مستقیم مورد والد را باز کنید",
+ "openChildCount": "فرزندان مستقیم باز مورد والد",
"any": "هر فیلدی از مورد اصلی"
}
},
diff --git a/frontend/src/lib/locales/fa/admin.js b/frontend/src/lib/locales/fa/admin.js
index 19cff3893..81d2cb753 100644
--- a/frontend/src/lib/locales/fa/admin.js
+++ b/frontend/src/lib/locales/fa/admin.js
@@ -2,38 +2,38 @@ export default {
"settings": {
"title": "تنظیمات",
"subtitle": "تنظیمات برنامه خود را پیکربندی کنید",
- "general": "ژنرال",
+ "general": "عمومی",
"appearance": "ظاهر",
"privacy": "حریم خصوصی",
"language": "زبان",
"timezone": "منطقه زمانی",
"dateFormat": "فرمت تاریخ",
"timeFormat": "فرمت زمان",
- "theme": "موضوع",
+ "theme": "پوسته",
"lightMode": "حالت نور",
"darkMode": "حالت تاریک",
"systemDefault": "پیش فرض سیستم",
"themeManager": {
"background": "پس زمینه",
"text": "متن",
- "failedToLoad": "طرح زمینه ها بارگیری نشد.",
- "failedToCreate": "طرح زمینه ایجاد نشد.",
- "failedToUpdate": "تم به روز نشد.",
- "failedToDelete": "تم حذف نشد.",
- "failedToActivate": "طرح زمینه فعال نشد.",
+ "failedToLoad": "پوستهها بارگیری نشد.",
+ "failedToCreate": "پوسته ایجاد نشد.",
+ "failedToUpdate": "پوسته بهروزرسانی نشد.",
+ "failedToDelete": "پوسته حذف نشد.",
+ "failedToActivate": "پوسته فعال نشد.",
"failedToUploadLogo": "لوگو بارگذاری نشد.",
"defaults": {
"default": {
"name": "پیش فرض",
- "description": "تم تمیز با رنگ های ناوبری استاندارد"
+ "description": "پوسته تمیز با رنگهای ناوبری استاندارد"
},
"ocean": {
"name": "اقیانوس",
- "description": "تم ناوبری با رنگ آبی حرفه ای"
+ "description": "پوسته ناوبری با رنگ آبی حرفهای"
},
"forest": {
"name": "جنگل",
- "description": "تم ناوبری سبز الهام گرفته از طبیعت"
+ "description": "پوسته ناوبری سبز الهامگرفته از طبیعت"
}
}
},
@@ -61,11 +61,11 @@ export default {
},
"hierarchyLevels": {
"title": "سطوح سلسله مراتبی",
- "description": "سطوح سلسله مراتب آیتم کاری را پیکربندی کنید"
+ "description": "سطوح سلسله مراتب مورد کاری را پیکربندی کنید"
},
"itemTypes": {
- "title": "انواع آیتم ها",
- "description": "انواع آیتم های کاری را با نمادها و رنگ ها مدیریت کنید"
+ "title": "انواع موارد",
+ "description": "انواع مواردی کاری را با نمادها و رنگ ها مدیریت کنید"
},
"priorities": {
"title": "اولویت ها",
@@ -93,10 +93,10 @@ export default {
},
"approvalSets": {
"title": "مجموعه های تایید",
- "description": "تأییدیههای چند مرحلهای که دروازه را از وضعیت خارج میکند"
+ "description": "تأییدیههای چند مرحلهای که انتقالها از یک وضعیت را کنترل میکنند"
},
"scmProviders": {
- "title": "SCM ارائه دهندگان",
+ "title": "ارائهدهندگان SCM",
"description": "پیکربندی GitHub، GitLab، Gitea، و Bitbucket ادغام"
},
"integrationProviders": {
@@ -104,7 +104,7 @@ export default {
"description": "مدیریت یکپارچهسازیهای خروجی Windshift به برنامههای ورودی و اتصال به برنامههایی که از طریق OAuth مجوز میدهند."
},
"systemImport": {
- "title": "واردات سیستم",
+ "title": "درونریزی سیستم",
"description": "وارد کردن داده ها از سیستم های خارجی"
},
"linkTypes": {
@@ -120,8 +120,8 @@ export default {
"description": "ماژول های سیستم را فعال یا غیرفعال کنید"
},
"themes": {
- "title": "تم ها",
- "description": "تم ها و ظاهر برنامه را مدیریت کنید"
+ "title": "پوستهها",
+ "description": "پوستهها و ظاهر برنامه را مدیریت کنید"
},
"users": {
"title": "کاربران",
@@ -181,11 +181,11 @@ export default {
},
"agentTemplates": {
"title": "الگوهای عامل",
- "description": "کاتالوگ ایجاد Agent Studio را لغو کنید: نامهای الگو، انواع نمایه و دستورالعملها"
+ "description": "کاتالوگ ایجاد Agent Studio را بازنویسی کنید: نامهای الگو، انواع نمایه و دستورالعملها"
},
"actionCapabilities": {
"title": "قابلیت های اقدام",
- "description": "مدیریت Docker محیطها، HTTP کلاینتها، و LLM اتصالات برای کنشها"
+ "description": "مدیریت محیطهای Docker، کلاینتهای HTTP، و اتصالات LLM برای اقدامها"
},
"diagnostics": {
"title": "تشخیص",
@@ -206,7 +206,7 @@ export default {
"content": "محتوا",
"plugins": "پلاگین ها",
"noContent": "فقط طرحواره",
- "apply": "درخواست کنید",
+ "apply": "اعمال",
"verify": "تأیید کنید",
"cancel": "لغو کنید",
"targetNew": "فضای کاری جدید",
@@ -219,14 +219,14 @@ export default {
"stageSchema": "مجموعه پیکربندی",
"stageContent": "محتوا",
"stageConformance": "انطباق",
- "stageOk": "باشه",
- "stageSkipped": "پرش کرد",
+ "stageOk": "موفق",
+ "stageSkipped": "رد شد",
"stageFailed": "شکست خورد",
"conformant": "سازگار",
"driftRows": "{count} ردیف دریفت",
"verified": "بسته معتبر است و قابل اعمال است",
"applied": "بسته به فضای کاری اعمال می شود",
- "failed": "بسته تمیز اعمال نمی شود"
+ "failed": "بسته بهدرستی اعمال نمیشود"
},
"attachments": {
"title": "تنظیمات پیوست",
@@ -255,11 +255,11 @@ export default {
"text": "متن",
"clearAll": "پاک کردن همه",
"addMimeType": "نوع MIME را اضافه کنید",
- "mimeTypePlaceholder": "به عنوان مثال، تصویر/jpeg",
+ "mimeTypePlaceholder": "به عنوان مثال، image/jpeg",
"allowedMimeTypes": "انواع MIME مجاز",
"allFileTypesAllowed": "همه انواع فایل مجاز است",
"settingsSavedSuccess": "تنظیمات با موفقیت ذخیره شد",
- "notAvailable": "عملکرد پیوست در دسترس نیست. یک فهرست پیوست را برای فعال کردن پیوست ها پیکربندی کنید.",
+ "notAvailable": "قابلیت پیوست در دسترس نیست. یک فهرست پیوست را برای فعال کردن پیوست ها پیکربندی کنید.",
"failedToLoad": "تنظیمات پیوست بارگیری نشد",
"failedToSave": "تنظیمات ذخیره نشد"
},
@@ -315,8 +315,8 @@ export default {
"editSetting": "ویرایش تنظیمات اعلان",
"setting": "تنظیم",
"eventRules": "قوانین رویداد",
- "rulesConfigured": "{count} قوانین پیکربندی شد ({enabled} فعال)",
- "noRules": "0 قانون پیکربندی شده است",
+ "rulesConfigured": "{count} قانون پیکربندی شد ({enabled} فعال)",
+ "noRules": "هیچ قانونی پیکربندی نشده است",
"createdBy": "ایجاد شده توسط",
"noSettingsFound": "هیچ تنظیمات اعلان پیدا نشد. برای شروع اولین تنظیمات اعلان خود را ایجاد کنید.",
"name": "نام",
@@ -333,8 +333,8 @@ export default {
"eventType": "نوع رویداد",
"selectEventType": "انتخاب نوع رویداد...",
"notifyRecipients": "به گیرندگان اطلاع دهید",
- "assignee": "مأمور",
- "creator": "خالق",
+ "assignee": "مسئول",
+ "creator": "ایجادکننده",
"watchers": "ناظران",
"workspaceAdmins": "مدیران فضای کاری",
"customMessageTemplate": "الگوی پیام سفارشی (اختیاری)",
@@ -358,23 +358,23 @@ export default {
"editConfigSet": "ویرایش مجموعه پیکربندی",
"searchPlaceholder": "مجموعه های پیکربندی جستجو...",
"loading": "در حال بارگیری مجموعه های پیکربندی...",
- "noConfigSets": "هنوز پیکربندی تنظیم نشده است",
+ "noConfigSets": "هنوز مجموعه پیکربندی وجود ندارد",
"previewUnavailable": "هیچ مجموعه پیکربندی در دسترس نیست",
- "previewUnavailableDescription": "",
+ "previewUnavailableDescription": "برای پیکربندی این فضای کاری، یک مجموعه پیکربندی پیشفرض ایجاد کنید.",
"assignerDescription": "مجموعه پیکربندیای را انتخاب کنید که گردش کار و صفحههای ساخت، ویرایش و مشاهده موارد را در این فضای کاری تعریف میکند. فقط یک مجموعه را میتوان اختصاص داد.",
- "migrationRequiresSystemAdmin": "",
+ "migrationRequiresSystemAdmin": "تغییر به این مجموعه پیکربندی نیازمند مهاجرت داده است که فقط مدیر سیستم میتواند اجرا کند.",
"select": "مجموعه تنظیمات را انتخاب کنید",
"updating": "در حال بهروزرسانی پیکربندی…",
"configured": "پیکربندی شده است",
"customScreenOverrides": "{count} سفارشی",
"importSuccess": "پیکربندی با موفقیت وارد شد",
- "import": "واردات",
- "importing": "در حال واردات…",
- "importWarning": "",
+ "import": "درونریزی",
+ "importing": "در حال درونریزی…",
+ "importWarning": "مجموعه پیکربندی با هشدارها درونریزی شد.",
"importFailed": "وارد کردن مجموعه پیکربندی انجام نشد.",
- "unresolvedReferencesHeading": "",
- "defaultConflictHeading": "",
- "unresolvedImportTitle": "واردات: مراجع حل نشده",
+ "unresolvedReferencesHeading": "درونریزی به موجودیتهایی اشاره میکند که در این نصب وجود ندارند.",
+ "defaultConflictHeading": "درونریزی با یک موجودیت پیشفرض در این نصب تعارض دارد.",
+ "unresolvedImportTitle": "درونریزی: مراجع حل نشده",
"unresolvedImportDescription": "چیزی نوشته نشد. این مراجع را از بسته منبع حذف کنید یا موجودیت های گمشده را در اینجا ایجاد کنید، سپس دوباره امتحان کنید.",
"referenceLocation": "در {path}",
"unresolvedKinds": {
@@ -384,7 +384,7 @@ export default {
"status_category": "دسته وضعیت «{name}»",
"entity": "موجودیت \"{name}\""
},
- "export": "صادرات",
+ "export": "برونریزی",
"exportTitle": "این مجموعه پیکربندی را به عنوان یک الگوی قابل حمل JSON صادر کنید",
"exportDefaultDisabled": "مجموعه تنظیمات پیش فرض را نمی توان صادر کرد. اگر به یک نسخه قابل حمل نیاز دارید ابتدا آن را کلون کنید.",
"defaults": {
@@ -402,7 +402,7 @@ export default {
"noWorkspacesAvailable": "هیچ فضای کاری در دسترس نیست",
"workspaces": "فضاهای کاری",
"noWorkspacesAssigned": "هیچ فضای کاری اختصاص داده نشده است",
- "itemTypes": "انواع آیتم ها",
+ "itemTypes": "انواع موارد",
"noItemTypesAssigned": "هیچ نوع موردی اختصاص داده نشده است",
"workflow": "گردش کار",
"noneAssigned": "هیچ کدام اختصاص داده نشده است",
@@ -414,7 +414,7 @@ export default {
"none": "هیچ کدام",
"created": "ایجاد شد",
"newConfigSet": "مجموعه پیکربندی جدید",
- "configureDesc": "پیکربندی گردش کار، صفحه نمایش، و تکالیف فضای کاری",
+ "configureDesc": "پیکربندی گردش کار، صفحه نمایش، و تخصیصهای فضای کاری",
"unsavedChanges": "تغییرات ذخیره نشده",
"basicInfo": "اطلاعات پایه",
"name": "نام",
@@ -444,7 +444,7 @@ export default {
"addPermission": "اضافه کردن مجوز",
"allWorkspaceUsers": "همه کاربران فضای کاری",
"allGroups": "همه گروه ها",
- "systemAdmin": "ادمین سیستم",
+ "systemAdmin": "مدیر سیستم",
"user": "کاربر",
"group": "گروه",
"remove": "حذف کنید",
@@ -465,7 +465,7 @@ export default {
"permissionGrantedToUser": "مجوز با موفقیت به کاربر داده شد",
"permissionGrantedToGroup": "مجوز به گروه با موفقیت اعطا شد",
"failedToGrantPermission": "اعطای مجوز ناموفق بود:",
- "cannotRevokeLastAdmin": "نمیتوان ادمین سیستم را از آخرین سرپرست لغو کرد",
+ "cannotRevokeLastAdmin": "نمیتوان مدیر سیستم را از آخرین سرپرست لغو کرد",
"permissionRevokedFromUser": "مجوز با موفقیت از کاربر لغو شد",
"permissionRevokedFromGroup": "مجوز از گروه با موفقیت لغو شد",
"failedToRevokePermission": "لغو مجوز ناموفق بود:",
@@ -489,9 +489,9 @@ export default {
"loadingPermissionSet": "در حال بارگیری مجموعه مجوز...",
"basicInfo": "اطلاعات پایه",
"saveChanges": "ذخیره تغییرات",
- "permissionAssignments": "تکالیف مجوز",
- "addAssignment": "افزودن تکلیف",
- "addAssignmentDesc": "یک نقش، گروه یا کاربر را در زیر انتخاب کنید تا آنها را به این مجوز اضافه کنید. تکلیف بلافاصله پس از انتخاب اضافه خواهد شد.",
+ "permissionAssignments": "تخصیصهای مجوز",
+ "addAssignment": "افزودن تخصیص",
+ "addAssignmentDesc": "یک نقش، گروه یا کاربر را در زیر انتخاب کنید تا آنها را به این مجوز اضافه کنید. تخصیص بلافاصله پس از انتخاب اضافه خواهد شد.",
"addByRole": "اضافه کردن بر اساس نقش",
"addByGroup": "افزودن بر اساس گروه",
"addByUser": "افزودن توسط کاربر",
@@ -499,10 +499,10 @@ export default {
"failedToDelete": "مجموعه مجوز حذف نشد:",
"failedToLoad": "مجموعه مجوز بارگیری نشد:",
"failedToUpdate": "بهروزرسانی مجموعه مجوز ناموفق بود:",
- "failedToAddAssignment": "تکلیف اضافه نشد:",
- "failedToRemoveAssignment": "تکلیف حذف نشد:",
- "removeAssignment": "حذف تکلیف",
- "confirmRemoveAssignment": "آیا مطمئنید که می خواهید این تکلیف را حذف کنید؟",
+ "failedToAddAssignment": "تخصیص اضافه نشد:",
+ "failedToRemoveAssignment": "تخصیص حذف نشد:",
+ "removeAssignment": "حذف تخصیص",
+ "confirmRemoveAssignment": "آیا مطمئنید که میخواهید این تخصیص را حذف کنید؟",
"role": "نقش",
"group": "گروه",
"user": "کاربر",
@@ -512,7 +512,7 @@ export default {
"searchAndSelectUser": "جستجو و انتخاب کاربر..."
},
"scmProviders": {
- "title": "SCM ارائه دهندگان",
+ "title": "ارائهدهندگان SCM",
"subtitle": "ادغامهای GitHub، GitLab و Gitea را برای پیوند مخزن پیکربندی کنید.",
"addProvider": "ارائه دهنده را اضافه کنید",
"connectionSuccessful": "اتصال با موفقیت انجام شد",
@@ -520,45 +520,45 @@ export default {
"noProviders": "ارائهدهنده SCM وجود ندارد",
"getStarted": "با افزودن یک ارائه دهنده GitHub، GitLab یا Gitea شروع کنید.",
"enabled": "فعال شد",
- "disabled": "از کار افتاده است",
+ "disabled": "غیرفعال",
"default": "پیش فرض",
"restricted": "محدود شده است",
"patConfigured": "رمز دسترسی پیکربندی شد",
"patNotConfigured": "رمز دسترسی پیکربندی نشده است",
"addSCMProvider": "ارائه دهنده SCM را اضافه کنید",
- "editSCMProvider": "ویرایش SCM ارائه دهنده",
+ "editSCMProvider": "ویرایش ارائهدهنده SCM",
"failedToLoad": "ارائه دهندگان SCM بارگیری نشدند",
"failedToSave": "ارائه دهنده ذخیره نشد",
"failedToDelete": "ارائه دهنده حذف نشد",
- "slug": "حلزون حرکت کردن",
- "slugHelp": "URL-شناسه امن (حروف کوچک، خط تیره مجاز است)",
+ "slug": "اسلاگ",
+ "slugHelp": "شناسه امن URL (حروف کوچک و خط تیره مجاز است)",
"name": "نام",
"namePlaceholder": "GitHub - سازمان اصلی",
"providerType": "نوع ارائه دهنده",
"authMethod": "روش احراز هویت",
- "baseUrl": "پایه URL",
+ "baseUrl": "URL پایه",
"baseUrlPlaceholder": "نمونه GitLab خود میزبانی یا Gitea/Forgejo خود را وارد کنید URL",
"baseUrlOptionalGitlab": "برای gitlab.com خالی بگذارید یا نمونه GitLab خود مدیریت شده URL را وارد کنید",
- "callbackUrl": "پاسخ به تماس URL",
+ "callbackUrl": "URL کالبک",
"copy": "کپی کنید",
"copied": "کپی شده!",
- "enterSlugForCallback": "برای ایجاد پاسخ تماس، یک اسلاگ در بالا وارد کنید URL",
+ "enterSlugForCallback": "برای ایجاد URL کالبک، یک اسلاگ در بالا وارد کنید",
"useThisUrl": "هنگام پیکربندی برنامه OAuth خود از این URL استفاده کنید",
- "oauthClientId": "OAuth مشتری ID",
- "oauthClientSecret": "OAuth راز مشتری",
+ "oauthClientId": "شناسه مشتری OAuth",
+ "oauthClientSecret": "راز مشتری OAuth",
"oauthCallbackError": "اتصال کنترل منبع ناموفق بود",
"leaveEmptyToKeep": "خالی بگذارید تا راز موجود باقی بماند",
"accessToken": "رمز دسترسی",
- "accessTokenHelp": "از یک نشانه دسترسی با مجوزهای مورد نیاز برای ارائه دهنده انتخاب شده استفاده کنید.",
+ "accessTokenHelp": "از یک توکن دسترسی با مجوزهای مورد نیاز برای ارائه دهنده انتخاب شده استفاده کنید.",
"gitlabAccessTokenHelp": "GitLab توکنهای دسترسی شخصی، پروژهای و گروهی را میپذیرد. برای ادغام ربات و سرور به سرور، توکن پروژه یا گروه را ترجیح دهید.",
- "githubAppId": "GitHub برنامه ID",
+ "githubAppId": "شناسه برنامه GitHub",
"privateKeyPem": "کلید خصوصی (PEM)",
"orgInstallation": "نصب سازمان",
"discoverInstallations": "محل نصب برنامه GitHub خود را کشف کنید",
"discoverButton": "تاسیسات را کشف کنید",
"orgInstallationId": "نصب سازمان (ID:",
"scopes": "محدوده ها",
- "scopesHelp": "فهرستی از OAuth محدوده جدا شده با فاصله",
+ "scopesHelp": "فهرستی از محدودههای OAuth جدا شده با فاصله",
"workspaceAccess": "دسترسی به فضای کاری",
"allWorkspaces": "همه فضاهای کاری می توانند از این ارائه دهنده استفاده کنند",
"restrictToWorkspaces": "محدود به فضاهای کاری خاص",
@@ -569,14 +569,14 @@ export default {
"title": "امنیت",
"subtitle": "تنظیمات مربوط به امنیت و کنترلهای ویژگی را مدیریت کنید",
"calendarFeeds": "اشتراک های فید تقویم",
- "calendarFeedsDesc": "به کاربران اجازه دهید ICS فید URLs را برای برنامههای تقویم خارجی تولید کنند",
- "calendarFeedsWarning": "هشدار: در صورت غیرفعال شدن، فیدهای تقویم موجود فوراً کار نمی کنند. کاربران نمی توانند فید جدید URLs تولید کنند.",
- "pluginExecution": "پلاگین CLI اجرای فرمان",
+ "calendarFeedsDesc": "به کاربران اجازه دهید URLهای فید ICS را برای برنامههای تقویم خارجی تولید کنند",
+ "calendarFeedsWarning": "هشدار: در صورت غیرفعال شدن، فیدهای تقویم موجود فوراً کار نمیکنند. کاربران نمیتوانند URLهای فید جدید تولید کنند.",
+ "pluginExecution": "اجرای فرمان CLI افزونه",
"pluginExecutionDesc": "به افزونه ها اجازه دهید دستورات پوسته را روی سرور اجرا کنند",
"pluginExecutionWarning": "هشدار: فعال کردن این تنظیم به افزونه ها اجازه می دهد تا دستورات پوسته را اجرا کنند. دستورات برای امنیت به دایرکتوری خود هر افزونه محدود می شوند. فقط در صورتی فعال کنید که به همه افزونه های نصب شده اعتماد دارید.",
"externalImages": "تصاویر Markdown خارجی",
"externalImagesDesc": "به محتوای Markdown اجازه دهید تصاویر را از هر میزبان HTTP یا HTTPS بارگیری کند.",
- "externalImagesRefresh": "وقتی کاربران بعدی صفحه را بارگیری یا بازخوانی می کنند، تغییرات اعمال می شود. میزبانها، پیوستها و تصاویر جاسازیشده Unsplash، Atlassian، پیکربندی شده Jira در صورت غیرفعال شدن در دسترس باقی میمانند.",
+ "externalImagesRefresh": "تغییرات با بارگیری یا بازخوانی صفحه بعدی اعمال میشوند. میزبانها، پیوستها و تصاویر جاسازیشده (Unsplash، Atlassian، Jira) در صورت غیرفعال شدن در دسترس باقی میمانند.",
"externalImagesWarning": "تصاویر خارجی میتوانند آدرسهای IP بیننده و جزئیات مرورگر را نشان دهند و میتوانند درخواستهایی را به سرویسهای قابل دسترسی از شبکه بیننده ارسال کنند. فقط در صورتی فعال شود که به نویسندگان محتوا اعتماد دارید.",
"failedToLoad": "تنظیمات امنیتی بارگیری نشد",
"failedToSave": "تنظیمات ذخیره نشد"
@@ -591,48 +591,48 @@ export default {
"deleteSsoProvider": "ارائه دهنده SSO را حذف کنید",
"createProvider": "ایجاد ارائه دهنده",
"deleteProvider": "حذف ارائه دهنده",
- "noProviderConfigured": "ارائه دهنده SSO پیکربندی نشده است",
+ "noProviderConfigured": "هیچ ارائهدهنده SSO پیکربندی نشده است",
"noProviderDescription": "برای فعال کردن Single Sign-On برای کاربران خود، یک ارائه دهنده هویت OIDC اضافه کنید. از Keycloak، Authentik، Pocket ID و سایر ارائه دهندگان سازگار با OIDC پشتیبانی می کند.",
- "slug": "حلزون حرکت کردن",
+ "slug": "اسلاگ",
"slugPlaceholder": "به عنوان مثال، معتبر",
"slugHelp": "استفاده شده در ورود SSO URL",
- "slugRequired": "Slug مورد نیاز است",
- "slugInvalid": "Slug باید فقط شامل حروف کوچک، اعداد و خط فاصله باشد",
+ "slugRequired": "اسلاگ مورد نیاز است",
+ "slugInvalid": "اسلاگ باید فقط شامل حروف کوچک، اعداد و خط فاصله باشد",
"name": "نام",
"displayName": "نام نمایشی",
"displayNamePlaceholder": "به عنوان مثال، Authentik، Keycloak",
"nameRequired": "نام الزامی است",
"providerType": "نوع ارائه دهنده",
- "issuerUrl": "صادرکننده URL",
+ "issuerUrl": "URL صادرکننده",
"issuerUrlPlaceholder": "https://auth.example.com/realms/myrealm",
- "issuerUrlHelp": "صادرکننده OIDC URL. برای Keycloak: https://host/realms/realmname",
- "issuerUrlRequired": "صادرکننده URL مورد نیاز است",
- "issuerUrlInvalid": "صادرکننده URL باید با https:// یا http:// شروع شود",
- "clientId": "مشتری ID",
- "clientIdPlaceholder": "بادگیر",
- "clientIdRequired": "مشتری ID مورد نیاز است",
+ "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 راه اندازی مجدد کنید.",
+ "callbackUrl": "URL کالبک",
+ "callbackUrlHelp": "این URL را بهعنوان URL تغییر مسیر/کالبک در ارائهدهنده هویت خود پیکربندی کنید",
+ "baseUrlWarningTitle": "URL پایه سرور پیکربندی نشده است",
+ "baseUrlWarningBody": "Windshift برای پیوندها و کالبکهای OAuth به {url} برمیگردد، بنابراین ورود به سیستم SSO آن آدرس را به ارائهدهنده هویت شما میفرستد. متغیر محیطی BASE_URL را تنظیم کنید و Windshift را قبل از ثبت URL کالبک راه اندازی مجدد کنید.",
"scopes": "محدوده ها",
- "scopesHelp": "فهرستی از OIDC محدودههای جدا شده با فاصله",
- "nameClaimsHelp": "برخی از ارائه دهندگان (به عنوان مثال Microsoft Entra ID) فقط نام نمایشی را به طور پیش فرض درج می کنند. name_name و family_name را به عنوان ادعاهای اختیاری اضافه کنید تا Windshift به جای تجزیه نام نمایشی، نام ساختاریافته را دریافت کند.",
+ "scopesHelp": "فهرستی از محدودههای OIDC جدا شده با فاصله",
+ "nameClaimsHelp": "برخی از ارائه دهندگان (به عنوان مثال Microsoft Entra ID) فقط نام نمایشی را به طور پیش فرض درج می کنند. given_name و family_name را به عنوان ادعاهای اختیاری اضافه کنید تا Windshift به جای تجزیه نام نمایشی، نام ساختاریافته را دریافت کند.",
"attributeMapping": "نگاشت صفت",
- "attributeMappingHelp": "اختیاری. وقتی ارائهدهنده شما از نامهای ادعایی غیراستاندارد استفاده میکند، ادعا را نادیده بگیرید. برای استفاده از ادعای پیشفرض نشان داده شده در جایبان، یک فیلد خالی بگذارید.",
+ "attributeMappingHelp": "اختیاری. وقتی ارائهدهنده شما از نامهای ادعایی غیراستاندارد استفاده میکند، ادعا را نادیده بگیرید. برای استفاده از ادعای پیشفرض نشاندادهشده در راهنما، یک فیلد خالی بگذارید.",
"attributeEmail": "ادعای ایمیل",
- "attributeEmailVerified": "ایمیل ادعای تایید شده",
+ "attributeEmailVerified": "ادعای ایمیل تأییدشده",
"attributeName": "ادعای نام کامل",
"attributeGivenName": "ادعای نام",
"attributeFamilyName": "ادعای نام خانوادگی",
"attributeUsername": "ادعای نام کاربری",
"enabled": "فعال شد",
- "disabled": "از کار افتاده است",
+ "disabled": "غیرفعال",
"default": "پیش فرض",
"oidc": "OIDC",
"enableThisProvider": "این ارائه دهنده را فعال کنید",
@@ -646,7 +646,7 @@ export default {
"unsafeProvisioningWarningTitle": "پیوند تأیید نشده فعال شد",
"unsafeProvisioningWarningBody": "هویتهای این ارائهدهنده از طریق ایمیل به حسابهای موجود مرتبط میشوند، حتی زمانی که ارائهدهنده آدرس را تأیید نشده گزارش میکند. این را فقط زمانی فعال کنید که ارائه دهنده آدرس ایمیل کاربران خود را کنترل کند.",
"testConnection": "تست اتصال",
- "testing": "تست کردن...",
+ "testing": "در حال تست...",
"connectionSuccessful": "اتصال با موفقیت انجام شد",
"connectionFailed": "اتصال ناموفق بود",
"connectionTestFailed": "تست اتصال ناموفق بود",
@@ -665,7 +665,7 @@ export default {
"systemChannelNote": "این یک کانال سیستمی است. فقط مدیران می توانند آن را مدیریت کنند.",
"systemAdminsCanManage": "مدیران سیستم می توانند این کانال را مدیریت کنند",
"noManagersAssigned": "هیچ مدیری تعیین نشده است",
- "defaultChannelsManaged": "کانال های پیش فرض به طور خودکار توسط ادمین ها مدیریت می شوند",
+ "defaultChannelsManaged": "کانال های پیش فرض به طور خودکار توسط مدیران مدیریت میشوند",
"addUsersOrGroups": "کاربران یا گروه هایی را برای مدیریت این کانال اضافه کنید",
"user": "کاربر",
"group": "گروه",
@@ -684,7 +684,7 @@ export default {
"oauthFailedCallback": "اتصال ناموفق بود",
"noProvidersTitle": "ارائهدهندگان SCM موجود نیستند",
"noProvidersDesc": "سرپرست شما هیچ ارائه دهنده SCM را با OAuth پیکربندی نکرده است.",
- "connectDesc": "حساب خود را وصل کنید تا شعبه ایجاد کنید و درخواست ها را بکشید",
+ "connectDesc": "حساب خود را وصل کنید تا شاخه ایجاد کنید و درخواست ها را بکشید",
"connected": "متصل شد",
"notConnected": "متصل نیست",
"connectedOn": "متصل شد",
@@ -692,7 +692,7 @@ export default {
"disconnecting": "در حال قطع شدن...",
"connect": "اتصال",
"account": "حساب",
- "footerNote": "حسابهای متصل برای ایجاد شعبهها و درخواستها به نام شما استفاده میشوند. هر کاربر باید حساب خود را برای انتساب مناسب متصل کند."
+ "footerNote": "حسابهای متصل برای ایجاد شاخهها و درخواستها به نام شما استفاده میشوند. هر کاربر باید حساب خود را برای انتساب مناسب متصل کند."
},
"emailTemplates": {
"title": "قالب های ایمیل",
@@ -709,12 +709,12 @@ export default {
"editTitle": "ویرایش: {name}",
"editFallbackTitle": "ویرایش قالب",
"subject": "موضوع",
- "htmlBody": "HTML بدن",
+ "htmlBody": "بدنه HTML",
"textBody": "بدنه متن ساده",
"adminNotes": "توضیحات (یادداشت های مدیریت)",
"activeHint": "فعال (برای بازگشت به حالت پیش فرض داخلی علامت را بردارید)",
"availableVariables": "متغیرهای موجود",
- "syntaxHint": "الگوها از نحو html/template Go استفاده می کنند. از {open}. فیلد {close} برای مقادیر و {open} محدوده استفاده کنید. آیتمها {close}…{open} پایان {close} برای تکرار.",
+ "syntaxHint": "الگوها از نحو html/template در Go استفاده میکنند. برای مقادیر از {open}.Field{close} و برای تکرار از {open}range .Items{close}…{open}end{close} استفاده کنید.",
"preview": "پیش نمایش",
"previewLoading": "در حال ارائه…",
"previewTitle": "پیش نمایش",
@@ -760,11 +760,11 @@ export default {
"defaults": {
"tests": {
"name": "تست ها",
- "description": "مورد آزمایشی مورد آزمایشی"
+ "description": "مورد آزمایشی، مورد کار را تست میکند"
},
"implements": {
"name": "اجرا می کند",
- "description": "آیتم Work آیتم کاری دیگر را پیاده سازی می کند"
+ "description": "یک مورد کاری، مورد کاری دیگری را پیادهسازی میکند"
},
"dependsOn": {
"name": "بستگی دارد",
@@ -825,15 +825,15 @@ export default {
}
},
"itemTypes": {
- "title": "انواع آیتم ها",
- "subtitle": "انواع آیتم ها را مدیریت کنید و آنها را به سطوح سلسله مراتبی اختصاص دهید",
+ "title": "انواع موارد",
+ "subtitle": "انواع موارد را مدیریت کنید و آنها را به سطوح سلسله مراتبی اختصاص دهید",
"addItemType": "نوع مورد را اضافه کنید",
"name": "نام",
"description": "توضیحات",
"icon": "نماد",
"color": "رنگ",
"hierarchyLevel": "سطح سلسله مراتب",
- "genericSubtaskLevel": "وظیفه فرعی عمومی (هر سطح والدین)",
+ "genericSubtaskLevel": "وظیفه فرعی عمومی (هر سطح والد)",
"nameRequired": "نام الزامی است",
"failedToLoad": "انواع مورد بارگیری نشد.",
"failedToSave": "نوع مورد ذخیره نشد.",
@@ -843,7 +843,7 @@ export default {
"noConfigurationSets": "بدون مجموعه پیکربندی",
"defaultConfiguration": "پیکربندی پیش فرض",
"namePlaceholder": "به عنوان مثال حماسه، داستان، وظیفه، اشکال",
- "descriptionPlaceholder": "شرح مختصری از این نوع کالا",
+ "descriptionPlaceholder": "شرح مختصری از این نوع مورد",
"levelLabel": "سطح {level} - {name}",
"levelOnly": "سطح {level}",
"levelOption": "{name} (سطح {level})",
@@ -856,7 +856,7 @@ export default {
"subtask": "وظیفه فرعی"
},
"hierarchyChangeWarningTitle": "موارد موجود پیوندهای خود را حفظ خواهند کرد",
- "hierarchyChangeWarningDescription": "تغییر از سطح {fromLevel} به سطح {toLevel} موارد موجود را جابهجا نمیکند. انتخاب های آینده والدین و فرزند از سطح {toLevel} محاسبه خواهد شد. کاربران ممکن است نیاز داشته باشند که یک نوع مورد سازگار را قبل از والد کردن مجدد موارد قدیمی انتخاب کنند."
+ "hierarchyChangeWarningDescription": "تغییر از سطح {fromLevel} به سطح {toLevel} موارد موجود را جابهجا نمیکند. انتخاب های آینده والد و فرزند از سطح {toLevel} محاسبه خواهد شد. کاربران ممکن است نیاز داشته باشند که یک نوع مورد سازگار را قبل از والد کردن مجدد موارد قدیمی انتخاب کنند."
},
"hierarchyLevels": {
"title": "سطوح سلسله مراتبی",
@@ -886,7 +886,7 @@ export default {
},
"epic": {
"name": "حماسه",
- "description": "آیتم کاری بزرگ که می توان آن را به داستان ها تقسیم کرد"
+ "description": "مورد کاری بزرگ که می توان آن را به داستان ها تقسیم کرد"
},
"story": {
"name": "داستان",
@@ -894,7 +894,7 @@ export default {
},
"task": {
"name": "وظیفه",
- "description": "آیتم کاری فردی یا کار فنی"
+ "description": "مورد کاری فردی یا کار فنی"
},
"activity": {
"name": "فعالیت",
@@ -907,8 +907,8 @@ export default {
"subtitle": "ماژول های سیستم را فعال یا غیرفعال کنید و افزونه ها را مدیریت کنید",
"plugins": "پلاگین ها",
"pluginsDisabledMessage": "سیستم افزونه از طریق پیکربندی راه اندازی سرور غیرفعال شده است.",
- "instanceId": "نمونه ID",
- "instanceIdDescription": "این ID را در پورتال Windshift جایگذاری کنید تا مجوزهای افزونه را به این نصب صادر کنید.",
+ "instanceId": "شناسه نمونه",
+ "instanceIdDescription": "این شناسه را در پورتال Windshift وارد کنید تا مجوزهای افزونه را به این نصب صادر کنید.",
"chooseLicense": "فایل مجوز را انتخاب کنید",
"changeLicense": "تغییر فایل مجوز",
"licenseSelected": "مجوز انتخاب شده: {name}",
@@ -940,14 +940,14 @@ export default {
"failedToReload": "بارگیری مجدد افزونه انجام نشد: {error}",
"failedToDelete": "افزونه حذف نشد: {error}",
"pleaseSelectPlugin": "لطفا یک فایل افزونه را انتخاب کنید",
- "wasmNeedsManifest": "فایل های WASM به فایل manifest.json نیاز دارند. لطفاً یک manifest.json انتخاب کنید یا یک فایل zip. حاوی هر دو فایل را آپلود کنید.",
+ "wasmNeedsManifest": "فایلهای WASM به فایل manifest.json نیاز دارند. لطفاً یک manifest.json انتخاب کنید یا یک فایل zip حاوی هر دو فایل را آپلود کنید.",
"by": "توسط",
"settingsSavedSuccess": "تنظیمات ماژول با موفقیت ذخیره شد!",
"failedToSave": "تنظیمات ماژول ذخیره نشد. لطفا دوباره امتحان کنید."
},
"aiFeatures": {
"title": "ویژگی های هوش مصنوعی",
- "subtitle": "پیکربندی کنید کدام ویژگیهای AI فعال هستند و اتصالات LLM خاصی را اختصاص دهید",
+ "subtitle": "پیکربندی کنید کدام ویژگیهای هوش مصنوعی فعال هستند و اتصالات LLM خاصی را اختصاص دهید",
"loading": "در حال بارگیری پیکربندی ویژگی هوش مصنوعی...",
"saveSuccess": "پیکربندی ویژگیهای هوش مصنوعی ذخیره شد",
"saveFailed": "پیکربندی ویژگیهای هوش مصنوعی ذخیره نشد",
@@ -955,7 +955,7 @@ export default {
"noConnections": "هیچ اتصال LLM پیکربندی نشده است. ابتدا اتصالات را در اتصالات هوش مصنوعی اضافه کنید.",
"modeDefault": "از پیش فرض استفاده کنید",
"modeSpecific": "از اتصال خاص استفاده کنید",
- "modeDisabled": "از کار افتاده است",
+ "modeDisabled": "غیرفعال",
"selectConnection": "انتخاب اتصال...",
"scheduleLabel": "فرکانس تولید",
"scheduleDaily": "یک بار در روز",
@@ -970,11 +970,11 @@ export default {
"description": "خلاصه های روزانه خودکار با فرکانس تولید قابل تنظیم"
},
"plan_my_day": {
- "name": "برای روزم برنامه ریزی کن",
+ "name": "برنامهریزی روز من",
"description": "برنامه ریزی و اولویت بندی وظایف روزانه مبتنی بر هوش مصنوعی"
},
"catch_me_up": {
- "name": "منو بگیر",
+ "name": "خلاصه فعالیت اخیر",
"description": "خلاصه ای از فعالیت اخیر در مورد یک مورد کاری را دریافت کنید"
},
"find_similar": {
@@ -982,7 +982,7 @@ export default {
"description": "موارد کار مشابه را با استفاده از تجزیه و تحلیل هوش مصنوعی بیابید"
},
"decompose": {
- "name": "تجزیه کنند",
+ "name": "تجزیه",
"description": "موارد کار را به وظایف فرعی کوچکتر تقسیم کنید"
},
"release_notes": {
@@ -994,13 +994,13 @@ export default {
"description": "تجزیه و تحلیل و پیشنهاد وابستگی بین موارد"
},
"logbook_articles": {
- "name": "مقالات دفترچه ثبت نام",
+ "name": "مقالات دفترچه گزارش",
"description": "طبقه بندی اسناد مبتنی بر هوش مصنوعی، تمیز کردن، و تولید مقاله برای دفترچه گزارش"
}
}
},
"workItemStaleness": {
- "title": "بیات بودن آیتم کار",
+ "title": "کهنگی موارد کار",
"subtitle": "از یک آستانه فعالیت در جزئیات و تجزیه و تحلیل موارد کاری استفاده کنید",
"thresholdTitle": "آستانه مورد کار دست نخورده",
"thresholdDescription": "یک مورد کار ناتمام پس از این چند روز کامل بدون نظر، ویرایش یا سایر فعالیتهای ثبت شده کهنه میشود.",
@@ -1015,7 +1015,7 @@ export default {
},
"actionCapabilities": {
"title": "قابلیت های اقدام",
- "subtitle": "قابلیت های تدارک دیده شده برای گره های اقدام اتوماسیون را مدیریت کنید",
+ "subtitle": "قابلیتهای فراهمشده برای گرههای اقدام خودکارسازی را مدیریت کنید",
"addCapability": "قابلیت اضافه کردن",
"editCapability": "قابلیت ویرایش",
"deleteCapability": "قابلیت حذف",
@@ -1034,11 +1034,11 @@ export default {
"deleteFailed": "قابلیت حذف نشد",
"loadFailed": "قابلیتهای اقدام بارگیری نشد",
"confirmDelete": "آیا مطمئن هستید که می خواهید حذف کنید؟",
- "typeDocker": "Docker محیط زیست",
- "typeHTTP": "HTTP مشتری",
- "typeLLM": "LLM اتصال",
+ "typeDocker": "محیط Docker",
+ "typeHTTP": "کلاینت HTTP",
+ "typeLLM": "اتصال LLM",
"docker": {
- "image": "Docker تصویر",
+ "image": "تصویر Docker",
"imagePlaceholder": "به عنوان مثال، python: 3.12-slim",
"memory": "محدودیت حافظه",
"memoryPlaceholder": "به عنوان مثال، 512 متر",
@@ -1048,12 +1048,12 @@ export default {
"envVars": "متغیرهای محیطی",
"addEnvVar": "متغیر اضافه کنید",
"key": "کلید",
- "value": "ارزش",
+ "value": "مقدار",
"healthCheck": "بررسی سلامت",
"endpoint": "نقطه پایانی",
- "endpointPlaceholder": "به عنوان مثال، / سلامت",
+ "endpointPlaceholder": "به عنوان مثال، /health",
"intervalSecs": "فاصله (ها)",
- "timeoutSecs": "تایم اوت (های)"
+ "timeoutSecs": "تایم اوت (ثانیه)"
},
"http": {
"allowedPatterns": "الگوهای مجاز URL",
@@ -1062,12 +1062,12 @@ export default {
"defaultHeaders": "سرصفحه های پیش فرض",
"addHeader": "هدر را اضافه کنید",
"key": "کلید",
- "value": "ارزش",
+ "value": "مقدار",
"timeout": "تایم اوت (ثانیه)",
"timeoutPlaceholder": "به عنوان مثال، 30"
},
"llm": {
- "connection": "LLM اتصال",
+ "connection": "اتصال LLM",
"selectConnection": "انتخاب یک اتصال...",
"noConnections": "هیچ اتصال LLM موجود نیست. ابتدا یکی را در اتصالات هوش مصنوعی پیکربندی کنید."
}
@@ -1075,7 +1075,7 @@ export default {
"localizedObjects": {
"displayLabelFor": "نمایش برچسب برای {locale}",
"primaryHelp": "این برچسبی است که مدیران و کاربران در محلی فعال می بینند.",
- "localeOverrides": "محلی لغو می شود",
+ "localeOverrides": "لغوهای محلی",
"canonicalFallback": "پیشرفته: بازگشت متعارف",
"canonicalHelp": "مقدار متعارف فقط زمانی استفاده میشود که نمونه مشابه یا ترجمه ارسالشده اعمال نشود. IDs، کلیدهای داخلی، و رفتار اتوماسیون بدون تغییر هستند.",
"baseName": "نام جایگزین متعارف",
@@ -1086,7 +1086,7 @@ export default {
"canonicalWarning": "این ترجمههای محلی همچنان بر نسخه متعارف اصلی اولویت خواهند داشت. نحوه رسیدگی به موارد نادیده گرفته شده توسط سرپرست را به صراحت انتخاب کنید.",
"canonicalChoiceRequired": "انتخاب کنید که تغییر متعارف چگونه باید بر لغو محلی تأثیر بگذارد.",
"localizedNameRequired": "برچسب نمایش محلی فعال مورد نیاز است.",
- "shippedFallback": "ارسال مجدد: {value}",
+ "shippedFallback": "پیشفرض: {value}",
"permissionRequired": "فقط یک مدیر نمونه می تواند برچسب های محلی را مدیریت کند.",
"loadFailed": "نادیدهگیریهای محلی بارگیری نشد."
},
@@ -1107,30 +1107,30 @@ export default {
"boardConfig": {
"configureBoard": "پیکربندی برد",
"columns": "ستون ها",
- "backlog": "عقب ماندگی",
- "dragToReorder": "برای سفارش مجدد بکشید",
+ "backlog": "بکلاگ",
+ "dragToReorder": "برای جابهجایی بکشید",
"addColumn": "اضافه کردن ستون",
"saveConfiguration": "ذخیره پیکربندی",
"unsavedChanges": "تغییرات ذخیره نشده",
"columnNameRequired": "نام ستون مورد نیاز است",
"resetToDefault": "به حالت پیش فرض بازنشانی کنید",
- "noStatusesMapped": "هیچ وضعیتی ترسیم نشده است",
+ "noStatusesMapped": "هیچ وضعیتی نگاشت نشده است",
"wipLimit": "محدودیت WIP",
- "mappedStatuses": "وضعیت های نقشه برداری شده",
+ "mappedStatuses": "وضعیت های نگاشت شده",
"noStatusesSelected": "هیچ وضعیتی انتخاب نشده است",
- "backlogStatuses": "وضعیت های معوقه",
+ "backlogStatuses": "وضعیتهای بکلاگ",
"backlogStatusesHelp": "اقلام با این وضعیت ها در بک لاگ ظاهر می شوند",
"availableStatuses": "وضعیت های موجود",
"dragStatusesToColumns": "وضعیت ها را به ستون ها بکشید تا آنها را اختصاص دهید",
"dropStatusesHere": "وضعیت ها را اینجا رها کنید",
"allStatusesAssigned": "تمام وضعیت ها به ستون ها اختصاص داده شده است",
"noStatusesMatchSearch": "هیچ وضعیتی با جستجوی شما مطابقت ندارد",
- "boardColumns": "ستون های تابلو",
+ "boardColumns": "ستونهای برد",
"searchStatuses": "جستجوی وضعیت ها...",
"cardFields": "فیلدهای کارت",
"cardFieldsTitle": "فیلدهای کارت",
"cardFieldsDescription": "فیلدهایی را که روی کارتهای برد نمایش داده میشوند، پیکربندی کنید.",
- "views": "بازدیدها",
+ "views": "نماها",
"viewsHelp": "انتخاب کنید کدام نماهای مجموعه در اینجا موجود است. نماهای غیرفعال از پیمایش ناپدید می شوند و پیوندهای مستقیم به نمای فعال باز می گردند.",
"viewsInheritedHint": "این مجموعه از نماهای پیش فرض فضای کاری پیروی می کند.",
"viewsOverrideHint": "این مجموعه نماهای پیش فرض فضای کاری را لغو می کند.",
@@ -1146,7 +1146,7 @@ export default {
"displayOptionsHint": "نحوه نمایش کار تکمیل شده و سمت راست ترین ستون را کنترل کنید.",
"columnColor": "رنگ ستون",
"latestFiftyRightmost": "فقط آخرین 50 مورد را در سمت راست ترین ستون نشان دهید",
- "latestFiftyRightmostHint": "مفید برای ستون های مشغول انجام شده بدون محدود کردن بقیه تخته.",
+ "latestFiftyRightmostHint": "مفید برای ستون های مشغول انجام شده بدون محدود کردن بقیه برد.",
"hideCompletedByAge": "موارد تکمیل شده قدیمی را پنهان کنید",
"hideCompletedByAgeHint": "کار ناتمام قابل مشاهده می ماند. کار تکمیل شده با فعالیت اخیر فیلتر می شود.",
"recentActivityWindow": "پنجره فعالیت اخیر",
@@ -1155,12 +1155,12 @@ export default {
"retentionRangeError": "یک عدد کامل از 1 تا 3650 وارد کنید.",
"completedVisibility": "کار تمام شده",
"completedVisibilityCustom": "سفارشی (از گزینه های زیر استفاده کنید)",
- "completedVisibilityHint": "انتخاب کنید که این تخته چقدر کار تکمیل شده بارگیری می کند. برای هر بیننده ای اعمال می شود.",
+ "completedVisibilityHint": "انتخاب کنید که این برد چقدر کار تکمیل شده بارگیری می کند. برای هر بیننده ای اعمال می شود.",
"completedLimit": "تعداد موارد تکمیل شده",
- "completedLimitHint": "حداکثر این تعداد مورد تکمیل شده را روی تخته نشان دهید (1–{max}).",
- "backlogSelected": "{count} وضعیت برای عقب ماندگی انتخاب شده است",
- "backlogSelected_one": "وضعیت {count} برای عقب ماندگی انتخاب شده است",
- "backlogSelected_other": "{count} وضعیت برای عقب ماندگی انتخاب شده است",
+ "completedLimitHint": "حداکثر این تعداد مورد تکمیل شده را روی برد نشان دهید (1–{max}).",
+ "backlogSelected": "{count} وضعیت برای بکلاگ انتخاب شده است",
+ "backlogSelected_one": "وضعیت {count} برای بکلاگ انتخاب شده است",
+ "backlogSelected_other": "{count} وضعیت برای بکلاگ انتخاب شده است",
"systemFieldNames": {
"status": "وضعیت",
"priority": "اولویت",
@@ -1172,10 +1172,10 @@ export default {
"labels": "برچسب ها",
"created_at": "ایجاد شد",
"project": "پروژه",
- "parent": "پدر و مادر",
+ "parent": "والد",
"time_in_status": "زمان در وضعیت",
- "story_points": "نکات داستانی",
- "estimate": "تخمین بزنید",
+ "story_points": "امتیاز داستان",
+ "estimate": "تخمین",
"sla": "SLA"
}
}
@@ -1223,7 +1223,7 @@ export default {
"grantPermission": "اعطای مجوز",
"revokePermission": "لغو مجوز",
"read": "بخوانید",
- "write": "بنویسید",
+ "write": "نوشتن",
"delete": "حذف کنید",
"admin": "مدیر",
"manage": "مدیریت کنید",
diff --git a/frontend/src/lib/locales/fa/adminOperations.js b/frontend/src/lib/locales/fa/adminOperations.js
index ca057a6cf..f8626ea51 100644
--- a/frontend/src/lib/locales/fa/adminOperations.js
+++ b/frontend/src/lib/locales/fa/adminOperations.js
@@ -4,13 +4,13 @@ export default {
"tabs": {
"capabilities": "قابلیت ها",
"credentials": "اعتبارنامه",
- "runnerPools": "استخرهای دونده"
+ "runnerPools": "استخرهای رانر"
},
"agentTemplates": {
"title": "الگوهای عامل",
- "subtitle": "کاتالوگ ایجاد Agent Studio را لغو کنید: نامهای الگو، انواع نمایه و دستورالعملها",
+ "subtitle": "کاتالوگ ایجاد Agent Studio را بازنویسی کنید: نامهای الگو، انواع نمایه و دستورالعملها",
"addTemplate": "اضافه کردن الگو",
- "empty": "هنوز هیچ لغوی پیکربندی نشده است. Agent Studio به پیشفرضهای تعبیهشده بازمیگردد.",
+ "empty": "هنوز هیچ بازنویسیای پیکربندی نشده است. Agent Studio به پیشفرضهای تعبیهشده بازمیگردد.",
"standard": "استاندارد",
"coding": "کد نویسی",
"startFromNew": "شروع از… (الگوی سفارشی جدید)",
@@ -18,17 +18,17 @@ export default {
"templateKeyRequired": "کلید الگو مورد نیاز است",
"nameRequired": "نام الزامی است",
"saveFailed": "ذخیره نشد: {error}",
- "deleteMessage": "آیا مطمئنید که میخواهید نادیده گرفتن «{name}» را حذف کنید؟ این الگوی پیش فرض را بازیابی می کند.",
+ "deleteMessage": "آیا مطمئنید که میخواهید بازنویسی «{name}» را حذف کنید؟ این الگوی پیش فرض را بازیابی می کند.",
"key": "کلید",
"profileType": "نوع پروفایل",
- "editOverride": "ویرایش الگوی لغو",
- "addOverride": "اضافه کردن الگوی لغو",
+ "editOverride": "ویرایش بازنویسی",
+ "addOverride": "افزودن بازنویسی",
"startFromDefault": "از پیش فرض شروع کنید",
"startFromPlaceholder": "یک الگوی داخلی را بازنویسی کنید یا یک الگوی جدید ایجاد کنید",
"startFromHelp": "انتخاب یک پیشفرض آن را با ویرایشهای شما بازنویسی میکند. «شروع از…» یک الگوی کاملاً جدید ایجاد می کند.",
"templateKey": "کلید الگو",
- "templateKeyPlaceholder": "به عنوان مثال نرم افزار_مهندس",
- "builtInOverride": "این لغو جایگزین الگوی داخلی «{name}» میشود.",
+ "templateKeyPlaceholder": "به عنوان مثال software_engineer",
+ "builtInOverride": "این بازنویسی جایگزین الگوی داخلی «{name}» میشود.",
"namePlaceholder": "به عنوان مثال مهندس نرم افزار",
"instructions": "دستورالعمل ها",
"instructionsPlaceholder": "درخواست سیستم یا شخصیت این الگو"
@@ -37,25 +37,25 @@ export default {
"title": "اتصالات هوش مصنوعی",
"subtitle": "ارائه دهندگان مدل هوش مصنوعی را برای ویژگی های هوشمند پیکربندی کنید",
"addConnection": "افزودن اتصال",
- "empty": "هنوز هیچ اتصال AI پیکربندی نشده است.",
+ "empty": "هنوز هیچ اتصال هوش مصنوعی پیکربندی نشده است.",
"addFirst": "اولین اتصال خود را اضافه کنید",
"provider": "ارائه دهنده",
"model": "مدل",
"default": "پیش فرض",
"referenced": "توسط قابلیت های فعال شده ارجاع داده می شود",
- "vision": "چشم انداز",
- "noVision": "بدون دید",
- "visionTitle": "این مدل می تواند تصاویر روی آیتم های کاری را تحلیل کند",
+ "vision": "بینایی",
+ "noVision": "بدون بینایی",
+ "visionTitle": "این مدل می تواند تصاویر روی مواردی کاری را تحلیل کند",
"noVisionTitle": "این مدل فقط متنی است و نمی تواند تصاویر را ببیند",
"testConnection": "تست اتصال",
"addTitle": "اتصال هوش مصنوعی را اضافه کنید",
"editTitle": "اتصال هوش مصنوعی را ویرایش کنید",
"disableWarning": "غیرفعال کردن این اتصال، قابلیتهای عمل وابسته LLM را در زمان اجرا غیرفعال میکند.",
"disableWarningHelp": "ارجاع شده توسط {capabilities}. قابلیتها همچنان فعال به نظر میرسند، اما اقداماتی که از آنها استفاده میکنند تا زمانی که اتصال دوباره فعال نشود یا قابلیت دوباره مشخص نشود، با شکست مواجه میشوند.",
- "namePlaceholder": "به عنوان مثال OpenRouter Claude غزل",
+ "namePlaceholder": "به عنوان مثال OpenRouter Claude Sonnet",
"selectProvider": "انتخاب ارائه دهنده…",
- "baseUrl": "پایه URL",
- "apiKey": "API کلید",
+ "baseUrl": "URL پایه",
+ "apiKey": "کلید API",
"keyConfigured": "کلید پیکربندی شد (برای نگه داشتن آن خالی بگذارید)",
"enterApiKey": "کلید API را وارد کنید",
"searchModels": "مدلها را جستجو کنید یا ID را تایپ کنید…",
@@ -65,11 +65,11 @@ export default {
"lastAttemptFailed": "آخرین تلاش ناموفق: {error}",
"cachedCount": "{count} حافظه پنهان",
"refreshing": "در حال تازه کردن…",
- "enterBaseUrlHelp": "برای واکشی مدلها، یک پایه URL وارد کنید، یا یک مدل ID را در بالا تایپ کنید تا بدون مرور از آن استفاده کنید.",
+ "enterBaseUrlHelp": "برای واکشی مدلها، یک URL پایه وارد کنید، یا یک مدل ID را در بالا تایپ کنید تا بدون مرور از آن استفاده کنید.",
"noCachedModels": "مدل های کش وجود ندارد. برای واکشی از {provider} روی بازخوانی کلیک کنید، یا یک مدل ID را در بالا تایپ کنید تا بدون مرور از آن استفاده کنید.",
"selectModel": "انتخاب مدل…",
- "providerConfig": "پیکربندی ارائه دهنده JSON",
- "providerConfigHelp": "فیلدهای درخواست سطح بالای اختیاری در تماس های ارائه دهنده ادغام شدند. فیلدهای Windshift موجود اولویت دارند.",
+ "providerConfig": "پیکربندی ارائهدهنده (JSON)",
+ "providerConfigHelp": "فیلدهای درخواست سطح بالای اختیاری در فراخوانیهای ارائهدهنده ادغام شدند. فیلدهای Windshift موجود اولویت دارند.",
"visionSupport": "پشتیبانی از بینایی",
"visionAuto": "خودکار (تشخیص از روی مدل)",
"visionOn": "روشن (دید اجباری)",
@@ -77,7 +77,7 @@ export default {
"visionHelp": "کنترل می کند که آیا عامل برنامه نویسی ممکن است تصاویر را به این مدل ارسال کند. خودکار از قابلیت مدل شناخته شده استفاده می کند. آن را برای مدل های محلی یا سفارشی لغو کنید.",
"maxOutputTokens": "حداکثر توکن های خروجی",
"maxOutputTokensPlaceholder": "به عنوان مثال 65536",
- "maxOutputTokensHelp": "محدودیت نشانه خروجی کاتالوگ مدل برای این اتصال را لغو می کند. برای استفاده از مدل پیش فرض، خالی بگذارید. مقداری بالاتر از حد واقعی مدل توسط ارائهدهنده رد میشود، بنابراین تنها زمانی آن را افزایش دهید که بدانید مدل از آن پشتیبانی میکند.",
+ "maxOutputTokensHelp": "محدودیت توکن خروجی کاتالوگ مدل برای این اتصال را لغو می کند. برای استفاده از مدل پیش فرض، خالی بگذارید. مقداری بالاتر از حد واقعی مدل توسط ارائهدهنده رد میشود، بنابراین تنها زمانی آن را افزایش دهید که بدانید مدل از آن پشتیبانی میکند.",
"defaultConnection": "اتصال پیش فرض",
"rateHint": "{prompt}/{completion} در هر 1 میلیون توکن",
"neverRefreshed": "هرگز تجدید نشد",
@@ -89,20 +89,20 @@ export default {
"refreshFailed": "مدلها بهروزرسانی نشد",
"loadFailed": "اتصالات هوش مصنوعی بارگیری نشد",
"oneCapability": "1 قابلیت اقدام فعال: {name}",
- "manyCapabilities": "{count} قابلیتهای عمل فعال: {names}",
+ "manyCapabilities": "{count} قابلیت اقدام فعال: {names}",
"deleteTitle": "اتصال هوش مصنوعی را حذف کنید",
"deleteMessage": "آیا مطمئن هستید که می خواهید {name} را حذف کنید؟ این عمل قابل لغو نیست.",
"deleteImpact": "این اتصال توسط {capabilities} ارجاع داده شده است. این قابلیت ها از کار خواهند افتاد.",
"deleted": "اتصال هوش مصنوعی حذف شد",
"deleteFailed": "اتصال حذف نشد",
"configObject": "پیکربندی ارائه دهنده باید یک شی JSON باشد",
- "configJson": "پیکربندی ارائه دهنده باید معتبر باشد JSON",
+ "configJson": "پیکربندی ارائهدهنده باید JSON معتبر باشد",
"created": "اتصال هوش مصنوعی ایجاد شد",
"createFailed": "اتصال ایجاد نشد",
"updated": "اتصال هوش مصنوعی به روز شد",
"updateFailed": "اتصال به روز نشد",
"connectionSuccessful": "اتصال با موفقیت انجام شد",
- "testPassed": "تست اتصال قبول شد",
+ "testPassed": "تست اتصال موفق بود",
"testFailed": "تست اتصال ناموفق بود"
},
"actionCapabilities": {
@@ -120,21 +120,21 @@ export default {
"scheme": "طرح (فقط توکن های حامل)",
"additionalHeaders": "هدرهای مخفی اضافی",
"addSecretHeader": "هدر مخفی را اضافه کنید",
- "additionalHeadersHelp": "برای APIs که به بیش از یک هدر مخفی نیاز دارند. هر ردیف در زمان درخواست یک اعتبارنامه را حل می کند.",
- "defaultHeadersHelp": "فقط سرصفحه های غیر حساس نشانه های احراز هویت در بخش زیر قرار دارند.",
+ "additionalHeadersHelp": "برای APIهایی که به بیش از یک هدر مخفی نیاز دارند. هر ردیف در زمان درخواست یک اعتبارنامه را حل می کند.",
+ "defaultHeadersHelp": "فقط سرصفحههای غیرحساس. توکنهای احراز هویت در بخش زیر قرار دارند.",
"authorizationPlaceholder": "مجوز",
"bearerPlaceholder": "حامل",
- "apiKeyHeaderPlaceholder": "X-API-کلید"
+ "apiKeyHeaderPlaceholder": "X-API-Key"
},
"actionCredentials": {
"title": "اعتبارنامه اقدام",
- "subtitle": "نشانههای رمزگذاریشده API که بهجای ذخیرهسازی توکنها به صورت درون خطی، با قابلیتهای HTTP ارجاع میشوند. مقادیر مخفی فقط نوشتن هستند و قابل خواندن نیستند.",
+ "subtitle": "توکنهای رمزگذاریشده API که بهجای ذخیرهسازی توکنها به صورت درون خطی، با قابلیتهای HTTP ارجاع میشوند. مقادیر مخفی فقط نوشتن هستند و قابل خواندن نیستند.",
"add": "اضافه کردن اعتبار",
- "addFirst": "اولین شناسنامه را اضافه کنید",
+ "addFirst": "اولین اعتبارنامه را اضافه کنید",
"empty": "هنوز اعتباری وجود ندارد.",
- "bearerToken": "نشان حامل",
+ "bearerToken": "توکن Bearer",
"apiKey": "کلید API",
- "basicAuth": "اعتبار اولیه (کاربر: رمز عبور)",
+ "basicAuth": "احراز هویت پایه (کاربر: رمز عبور)",
"customHeader": "مقدار هدر سفارشی",
"loadFailed": "اعتبارنامه اقدام بارگیری نشد",
"nameSecretRequired": "نام و راز مورد نیاز است",
@@ -144,7 +144,7 @@ export default {
"createFailed": "ایجاد اعتبارنامه انجام نشد",
"updated": "اعتبارنامه به روز شد",
"updateFailed": "اعتبارنامه بهروزرسانی نشد",
- "rotated": "راز چرخش ({prefix})",
+ "rotated": "راز چرخانده شد ({prefix})",
"rotateFailed": "چرخش مخفی انجام نشد",
"deleteTitle": "حذف اعتبار",
"deleteMessage": "{name} حذف شود؟ هر قابلیتی که هنوز به آن ارجاع دهد در زمان اجرا از بین می رود.",
@@ -166,66 +166,66 @@ export default {
"secretPlaceholder": "رمز، کلید API یا user:password را وارد کنید",
"secretHelp": "رمزگذاری شده ذخیره می شود. این مقدار دیگر نشان داده نخواهد شد. در صورت لزوم آن را بعداً بچرخانید.",
"metadata": "فراداده (JSON، اختیاری)",
- "metadataHelp": "فقط فراداده غیر حساس کلیدهایی مانند رمز، رمز و رمز رد می شوند.",
+ "metadataHelp": "فقط فراداده غیرحساس. کلیدهایی مانند password، token و secret رد میشوند.",
"edit": "ویرایش اعتبار",
- "storedRotate": "ذخیره شده ({prefix}) - از Rotate برای جایگزینی آن استفاده کنید.",
+ "storedRotate": "ذخیره شده ({prefix}) - از چرخش برای جایگزینی آن استفاده کنید.",
"rotateTitle": "چرخش راز — {name}",
- "rotateHelp": "راز جدید را وارد کنید مقدار قدیمی بلافاصله جایگزین می شود و قابل بازیابی نیست.",
+ "rotateHelp": "راز جدید را وارد کنید. مقدار قدیمی بلافاصله جایگزین میشود و قابل بازیابی نیست.",
"newSecret": "راز جدید",
"rotate": "چرخش",
"namePlaceholder": "GitHub PAT"
},
"runnerPools": {
- "title": "استخرهای دونده",
- "subtitle": "مجموعهای از راهاندازهای راه دور که کارهای عامل کدنویسی را اجرا میکنند. برای افزودن یک میزبان دونده، یک رمز ثبت نام بریزید. به اسناد تنظیم RUNNER مراجعه کنید.",
+ "title": "استخرهای رانر",
+ "subtitle": "مجموعهای از راهاندازهای راه دور که کارهای عامل کدنویسی را اجرا میکنند. برای افزودن یک میزبان رانر، یک توکن ثبت نام صادر کنید. به مستندات راهاندازی RUNNER مراجعه کنید.",
"newPool": "استخر جدید",
- "empty": "بدون استخر دونده",
- "emptyDescription": "یک استخر ایجاد کنید، سپس یک نشانه ثبت نام برای اتصال یک میزبان دونده ایجاد کنید.",
+ "empty": "بدون استخر رانر",
+ "emptyDescription": "یک استخر ایجاد کنید، سپس یک توکن ثبت نام برای اتصال یک میزبان رانر ایجاد کنید.",
"pool": "استخر",
"maxConcurrent": "حداکثر همزمان",
- "token": "رمز",
+ "token": "توکن",
"expires": "منقضی می شود",
- "runner": "دونده",
+ "runner": "رانر",
"registered": "ثبت شده است",
"lastHeartbeat": "آخرین ضربان قلب",
"unlimited": "نامحدود",
- "registrationTokens": "نشانه های ثبت نام — {name}",
- "mintToken": "ژتون نعناع",
- "noTokens": "هنوز هیچ نشانه ای وجود ندارد",
+ "registrationTokens": "توکن های ثبت نام — {name}",
+ "mintToken": "صدور توکن",
+ "noTokens": "هنوز هیچ توکنی وجود ندارد",
"never": "هرگز",
- "revokeToken": "ابطال نشانه",
- "runnersForPool": "دوندگان — {name}",
- "noRunners": "هیچ دونده ای ثبت نام نکرده است",
+ "revokeToken": "ابطال توکن",
+ "runnersForPool": "رانرها — {name}",
+ "noRunners": "هیچ رانری ثبت نام نکرده است",
"revokeRunner": "رانر را لغو کنید",
- "newPoolTitle": "استخر دونده جدید",
+ "newPoolTitle": "استخر رانر جدید",
"maxConcurrentRuns": "حداکثر اجراهای همزمان",
"zeroUnlimited": "0 = نامحدود",
"availableAll": "در دسترس برای همه فضاهای کاری",
"createPool": "استخر ایجاد کنید",
- "mintTitle": "رمز ثبت ضرابخانه",
+ "mintTitle": "صدور توکن ثبت نام",
"descriptionOptional": "توضیحات (اختیاری)",
"expiresHours": "منقضی می شود (ساعت)",
"zeroNeverExpires": "0 = هرگز منقضی نمی شود (لغو برای غیرفعال کردن)",
- "addHostTitle": "میزبان دونده را اضافه کنید",
- "installHelp": "این را روی میزبان رانر اجرا کنید. این کانتینر رانر را با این سرور URL، تگ تصویر منطبق، و توکن جدید نصب و راه اندازی می کند.",
- "manualPrefix": "در عوض به صورت دستی تنظیم می شود؟ توکن را به عنوان تنظیم کنید",
- "setTokenPrefix": "توکن را به عنوان تنظیم کنید",
- "tokenOnce": "در میزبان دونده یک بار نشان داده می شود و نمی توان دوباره آن را بازیابی کرد.",
- "loadFailed": "بارگیری استخرهای دونده انجام نشد",
- "tokensLoadFailed": "رمزها بارگیری نشد",
- "runnersLoadFailed": "نمونههای اجراکننده بارگیری نشد",
- "created": "استخر دونده ایجاد شد",
- "createFailed": "استخر دونده ایجاد نشد",
- "mintFailed": "توکن برش داده نشد",
- "revokeTokenTitle": "ابطال رمز ثبت نام",
- "revokeTokenMessage": "رمز {prefix} لغو شود؟ دوندگان دیگر نمی توانند با آن ثبت نام کنند.",
+ "addHostTitle": "میزبان رانر را اضافه کنید",
+ "installHelp": "این را روی میزبان رانر اجرا کنید. کانتینر رانر را با URL این سرور، تگ تصویر منطبق، و توکن جدید نصب و راهاندازی میکند.",
+ "manualPrefix": "در عوض بهصورت دستی راهاندازی میکنید؟ توکن را به این صورت تنظیم کنید",
+ "setTokenPrefix": "توکن را به این صورت تنظیم کنید",
+ "tokenOnce": "در میزبان رانر یک بار نشان داده می شود و نمی توان دوباره آن را بازیابی کرد.",
+ "loadFailed": "بارگیری استخرهای رانر انجام نشد",
+ "tokensLoadFailed": "توکنها بارگیری نشدند",
+ "runnersLoadFailed": "رانرها بارگیری نشدند",
+ "created": "استخر رانر ایجاد شد",
+ "createFailed": "استخر رانر ایجاد نشد",
+ "mintFailed": "توکن صادر نشد",
+ "revokeTokenTitle": "ابطال توکن ثبت نام",
+ "revokeTokenMessage": "توکن {prefix} لغو شود؟ رانرها دیگر نمی توانند با آن ثبت نام کنند.",
"revoke": "لغو",
"tokenRevoked": "توکن باطل شد",
- "revokeTokenFailed": "رمز باطل نشد",
+ "revokeTokenFailed": "توکن باطل نشد",
"revokeRunnerTitle": "رانر را لغو کنید",
- "revokeRunnerMessage": "دونده {name} را اخراج کنید؟ برای پیوستن مجدد باید دوباره ثبت نام کند.",
- "runnerRevoked": "دونده لغو شد",
- "revokeRunnerFailed": "دونده لغو نشد",
+ "revokeRunnerMessage": "رانر {name} را اخراج کنید؟ برای پیوستن مجدد باید دوباره ثبت نام کند.",
+ "runnerRevoked": "رانر لغو شد",
+ "revokeRunnerFailed": "رانر لغو نشد",
"copied": "در کلیپ بورد کپی شد",
"copyFailed": "کپی انجام نشد - انتخاب کنید و به صورت دستی کپی کنید",
"revoked": "لغو شد",
@@ -249,7 +249,7 @@ export default {
"summaryDescription": "نحوه تخصیص نقش ها در این فضای کاری را نشان می دهد. نقشی بدون اعضا یا گروه های اختصاص داده شده برای همه در دسترس است. اختصاص دادن نقش {viewer} به هر کسی، فضای کاری را محدود میکند، بنابراین فقط کاربران و گروههای اختصاص داده شده میتوانند آن را ببینند. سلسله مراتب مجوز: {viewer} → {editor} → {tester}.",
"role": "نقش",
"effectiveAccess": "دسترسی داشته باشید",
- "assignments": "تکالیف",
+ "assignments": "تخصیصها",
"memberOrGroup": "عضو یا گروه",
"rolesLabel": "نقش ها",
"actions": "اقدامات",
@@ -275,7 +275,7 @@ export default {
"memberCount_one": "{count} عضو",
"memberCount_other": "{count} عضو",
"everyone": "همه",
- "noDirectAssignments": "بدون تکالیف مستقیم",
+ "noDirectAssignments": "بدون تخصیص مستقیم",
"addMember": "اضافه کردن عضو",
"addGroup": "اضافه کردن گروه",
"searchPlaceholder": "جستجوی اعضا یا گروه ها بر اساس نام یا ایمیل…",
@@ -301,32 +301,32 @@ export default {
"sortBy": "مرتب سازی بر اساس",
"sortBubble": "مرتب سازی: حباب",
"rankMode": "حالت رتبه",
- "rankModeDescription": "سفارش کشیدن و رها کردن دستی",
+ "rankModeDescription": "ترتیب دستی کشیدن و رها کردن",
"bubbleMode": "حالت حباب",
"bubbleModeDescription": "کارتهایی که اخیراً فعال شدهاند به اوج میرسند",
"rightmostColumn": "سمت راست ترین ستون",
- "noSwimlanes": "بدون شناور",
+ "noSwimlanes": "بدون خط شنا",
"noSwimlanesDescription": "هر مورد را به عنوان یک کارت معمولی نشان دهید",
- "hideColumnSwimlanes": "{name} شناگران را پنهان کنید",
+ "hideColumnSwimlanes": "{name} خطوط شنا را پنهان کنید",
"groupOutsideColumnWithType": "گروه {type} موارد فقط خارج از {column}",
"groupOutsideColumn": "گروهبندی موارد فقط خارج از {column}",
"hiddenCount": "{count} پنهان شد",
- "useAsSwimlanes": "از این وسایل به عنوان شناور استفاده کنید",
- "milestoneSwimlanes": "میل استون شنا",
+ "useAsSwimlanes": "از اینها به عنوان خط شنا استفاده کنید",
+ "milestoneSwimlanes": "خطوط شنای نقاط عطف",
"milestoneSwimlanesDescription": "کارت ها را بر اساس نقطه عطف گروه بندی کنید",
- "configureMilestones": "مسیرهای شنا نقطه عطف را پیکربندی کنید",
+ "configureMilestones": "خطوط شنای نقاط عطف را پیکربندی کنید",
"configureMilestonesDescription": "نقاط عطف جهانی و نقاط عطف تکمیل شده را انتخاب کنید",
"showCompletedMilestones": "نمایش نقاط عطف تکمیل شده",
- "showCompletedMilestonesHint": "کارتهای روی نقاط عطف تکمیل شده پنهان در یک خط نقطه عطف تکمیل شده قابل مشاهده میمانند.",
+ "showCompletedMilestonesHint": "کارتهای روی نقاط عطف تکمیلشده پنهان، در خط شنای نقاط عطف تکمیلشده قابل مشاهده میمانند.",
"showOpenFromCompletedMilestones": "نمایش مسائل باز از نقاط عطف تکمیل شده",
"showOpenFromCompletedMilestonesHint": "مسائل باز که هنوز به یک نقطه عطف تکمیل شده یا لغو شده اختصاص داده شده اند را در یک خط اختصاصی جمع آوری کنید تا بتوان آنها را به نقطه عطف سمت راست منتقل کرد.",
"openFromCompletedMilestones": "مسائل مربوط به نقاط عطف تکمیل شده را باز کنید",
"globalMilestones": "نقاط عطف جهانی",
"globalMilestonesSelected": "{count} انتخاب شد",
- "globalMilestonesHint": "نقاط عطف جهانی در بین فضاهای کاری به اشتراک گذاشته میشود، بنابراین فقط آنهایی که انتخاب میکنید یک مسیر خالی دارند. نقاط عطف با کارت همیشه ظاهر می شوند.",
+ "globalMilestonesHint": "نقاط عطف جهانی در بین فضاهای کاری به اشتراک گذاشته میشود، بنابراین فقط آنهایی که انتخاب میکنید یک خط شنای خالی دارند. نقاط عطف با کارت همیشه ظاهر می شوند.",
"noGlobalMilestones": "هیچ نقطه عطف جهانی در دسترس نیست.",
"completedMilestones": "نقاط عطف تکمیل شده",
- "milestoneSwimlanesSaved": "تنظیمات Milestone Swimlane ذخیره شد",
+ "milestoneSwimlanesSaved": "تنظیمات خطوط شنای نقاط عطف ذخیره شد",
"completedLabel": "تکمیل شده: {value}",
"completedAll": "نمایش همه",
"completedAllDescription": "هر مورد تکمیل شده را واکشی کنید",
@@ -337,29 +337,29 @@ export default {
"completedLimit": "محدود به",
"completedLimitDescription": "فقط جدیدترین موارد تکمیل شده را واکشی کنید",
"completedNone": "پنهان کردن کامل شد",
- "completedNoneDescription": "کارهای تکمیل شده را روی این تابلو بارگذاری نکنید",
+ "completedNoneDescription": "کارهای تکمیل شده را روی این برد بارگذاری نکنید",
"completedLatestFifty": "آخرین 50",
"completedCustom": "سفارشی",
"completedVisibilitySaved": "نمای کار تکمیل شده ذخیره شد"
},
"systemImport": {
- "title": "واردات سیستم",
+ "title": "درونریزی سیستم",
"subtitle": "دادهها را از Jira Cloud و دیگر سیستمهای خارجی وارد کنید",
- "newImport": "واردات جدید",
+ "newImport": "درونریزی جدید",
"savedConnections": "اتصالات ذخیره شده",
"savedConnectionsDescription": "اتصالات ابری Jira مورد استفاده برای وارد کردن داده را مدیریت کنید.",
"noConnections": "هنوز هیچ اتصال ذخیره شده ای وجود ندارد. برای اتصال Jira Cloud وارد کردن را شروع کنید.",
"lastUsed": "آخرین استفاده",
"deleteConnection": "اتصال را حذف کنید",
- "deleteConnectionMessage": "این اتصال حذف شود؟ داده های وارد شده و تاریخچه واردات نگهداری می شوند. این عمل قابل لغو نیست.",
+ "deleteConnectionMessage": "این اتصال حذف شود؟ داده های درونریزیشده و تاریخچه درونریزی نگهداری می شوند. این عمل قابل لغو نیست.",
"connectionDeleted": "اتصال حذف شد",
"updateToken": "رمز را به روز کنید",
"updateTokenTitle": "اتصال Jira را بهروزرسانی کنید",
"updateTokenDescription": "اعتبار ذخیره شده را جایگزین کنید. Windshift قبل از ذخیره، کد جدید را با Jira تأیید میکند.",
"connectionUpdated": "اتصال به روز شد",
- "importHistory": "سابقه واردات",
- "importHistoryDescription": "وضعیت و نتایج واردات قبلی",
- "noImports": "هنوز وارداتی وجود ندارد وارد کردن را شروع کنید تا تاریخچه آن را در اینجا ببینید.",
+ "importHistory": "سابقه درونریزی",
+ "importHistoryDescription": "وضعیت و نتایج درونریزی قبلی",
+ "noImports": "هنوز درونریزیای وجود ندارد. برای دیدن تاریخچه، یک درونریزی را شروع کنید.",
"instance": "نمونه",
"scope": "دامنه",
"started": "شروع شد",
@@ -373,16 +373,16 @@ export default {
"itemCount_other": "{count} مورد",
"statuses": {
"completed": "تکمیل شد",
- "running": "در حال دویدن",
+ "running": "در حال اجرا",
"failed": "شکست خورد",
"data_deleted": "داده ها حذف شد",
"queued": "در صف"
},
"phases": {
"initializing": "مقدار دهی اولیه",
- "importing_project": "پروژه واردات",
+ "importing_project": "پروژه درونریزی",
"completed": "تکمیل شد",
- "running": "در حال دویدن"
+ "running": "در حال اجرا"
},
"scopes": {
"workItems": "اقلام کار"
@@ -390,16 +390,16 @@ export default {
"deleteData": "داده ها را حذف کنید",
"unavailable": "در دسترس نیست",
"removeFromList": "حذف از لیست",
- "importRemovedFromHistory": "واردات از سابقه حذف شد",
- "dataDeleted": "دادههای Jira وارد شده حذف شد. می توانید دوباره واردات را اجرا کنید.",
- "deleteImportedTitle": "دادههای Jira وارد شده را حذف کنید",
+ "importRemovedFromHistory": "درونریزی از سابقه حذف شد",
+ "dataDeleted": "دادههای Jira درونریزیشده حذف شد. می توانید دوباره درونریزی را اجرا کنید.",
+ "deleteImportedTitle": "دادههای Jira درونریزیشده را حذف کنید",
"deleteWarningTitle": "این ممکن است چندین Windshift فضای کاری را حذف کند.",
- "deleteWarningDescription": "Windshift همه چیزهایی را که توسط این واردات Jira ضبط شده است، از جمله فضاهای کاری نقشهبرداری شده، موارد، نظرات، پیوستها، پیوندها، نقاط عطف، و فرادادههای وارداتی حذف میکند. این قابل واگرد نیست.",
- "jobId": "شغل ID",
- "importedScope": "داده های وارداتی",
+ "deleteWarningDescription": "Windshift همه چیزهایی را که توسط این درونریزی Jira ثبت شده است، از جمله فضاهای کاری نقشهبرداری شده، موارد، نظرات، پیوستها، پیوندها، نقاط عطف، و فرادادههای درونریزیشده حذف میکند. این قابل واگرد نیست.",
+ "jobId": "شناسه کار",
+ "importedScope": "داده های درونریزیشده",
"workspacesToRemove": "فضاهای کاری که ممکن است حذف شوند",
"typeJobId": "برای تأیید حذف، کار ID را وارد کنید",
- "deleteImportedData": "حذف داده های وارد شده"
+ "deleteImportedData": "حذف داده های درونریزیشده"
},
"scmSettings": {
"title": "کنترل منبع",
@@ -421,7 +421,7 @@ export default {
"branchPattern": "الگوی شاخه",
"tags": "برچسب ها",
"branches": "شاخه ها",
- "patternsHelp": "این الگوهای گلوب اتوماسیون نقطه عطف را هدایت می کنند. تطبیق تگ ها یک نقطه عطف را تبلیغ می کند. شاخه های منطبق یک نقطه عطف برنامه ریزی ایجاد می کنند.",
+ "patternsHelp": "این الگوهای گلوب، خودکارسازی نقاط عطف را هدایت میکنند. برچسبهای منطبق یک نقطه عطف را ارتقا میدهند. شاخههای منطبق یک نقطه عطف برنامهریزیشده ایجاد میکنند.",
"repoSettingsSaved": "تنظیمات مخزن ذخیره شد",
"repoSettingsSaveFailed": "تنظیمات مخزن ذخیره نشد",
"loadFailed": "تنظیمات SCM بارگیری نشد",
@@ -439,18 +439,18 @@ export default {
"unlinkMessage": "پیوند {name} لغو شود؟",
"unlinkedRepository": "لغو پیوند {name}",
"unlinkFailed": "لغو پیوند مخزن انجام نشد",
- "gitlabWebhook": "GitLab وب هوک",
- "webhookHelp": "پاسخ تماس URL و مخفی را به webhook پروژه GitLab اضافه کنید. فشار، برچسب، درخواست ادغام، یادداشت، و رویدادهای انتشار پذیرفته می شود.",
- "configureWebhook": "جزئیات وب هوک را ایجاد کنید",
+ "gitlabWebhook": "webhook گیتلب",
+ "webhookHelp": "URL کالبک و راز را به webhook پروژه GitLab اضافه کنید. رویدادهای push، برچسب، درخواست ادغام، یادداشت و انتشار پذیرفته میشوند.",
+ "configureWebhook": "جزئیات webhook را پیکربندی کنید",
"rotateWebhookSecret": "راز را بچرخانید",
"webhookSecretOnce": "اکنون این راز را کپی کنید. دیگر نمایش داده نخواهد شد.",
- "webhookSecretRotated": "GitLab راز webhook ایجاد شد",
- "webhookLoadFailed": "تنظیمات هوک GitLab بارگیری نشد",
- "webhookRotateFailed": "ایجاد GitLab مخفی قلاب وب ناموفق بود"
+ "webhookSecretRotated": "راز webhook گیتلب چرخانده شد",
+ "webhookLoadFailed": "تنظیمات webhook گیتلب بارگیری نشد",
+ "webhookRotateFailed": "چرخش راز webhook گیتلب ناموفق بود"
},
"workspaceTemplates": {
"title": "الگوهای اقلام کاری",
- "subtitle": "توضیحات قابل استفاده مجدد برای موارد جدید یک الگو را می توان هنگام ایجاد یک مورد انتخاب کرد یا به یک نوع مورد اختصاص داد.",
+ "subtitle": "توضیحات قابل استفاده مجدد برای موارد جدید. یک الگو را میتوان هنگام ایجاد یک مورد انتخاب کرد یا به یک نوع مورد اختصاص داد.",
"newTemplate": "قالب جدید",
"editTemplate": "ویرایش قالب",
"empty": "هنوز هیچ قالبی وجود ندارد",
@@ -464,7 +464,7 @@ export default {
"selectable": "قابل انتخاب",
"mandatory": "اجباری"
},
- "itemTypes": "انواع آیتم ها",
+ "itemTypes": "انواع موارد",
"allTypes": "همه انواع",
"allItemTypes": "همه انواع اقلام",
"selectItemType": "یک نوع مورد را انتخاب کنید",
@@ -485,18 +485,18 @@ export default {
"deleted": "الگو حذف شد"
},
"cannedResponses": {
- "title": "پاسخ های کنسرو شده",
- "subtitle": "عوامل پشتیبانی از تکههای پاسخ قابل استفاده مجدد میتوانند در نظرات درج کنند. قطعه های خصوصی داخلی می مانند و هرگز به مشتریان پورتال نمی رسند.",
- "new": "پاسخ کنسرو شده جدید",
+ "title": "پاسخهای آماده",
+ "subtitle": "عاملهای پشتیبانی میتوانند قطعههای پاسخ قابل استفاده مجدد را در نظرات درج کنند. قطعههای خصوصی داخلی میمانند و هرگز به مشتریان پورتال نمیرسند.",
+ "new": "پاسخ آماده جدید",
"edit": "پاسخ آماده را ویرایش کنید",
- "empty": "هنوز هیچ پاسخ قطعی وجود ندارد",
+ "empty": "هنوز هیچ پاسخ آمادهای وجود ندارد",
"emptyDescription": "یک قطعه ایجاد کنید تا نمایندگان بتوانند با یک کلیک به سوالات رایج پاسخ دهند.",
- "visibility": "دید",
+ "visibility": "قابلیت مشاهده",
"used": "استفاده می شود",
"public": "عمومی",
"private": "خصوصی (یادداشت داخلی)",
"privateSnippet": "قطعه خصوصی (اتوماسیون ها هرگز آن را برای مشتریان ارسال نمی کنند)",
- "body": "بدن (Markdown)",
+ "body": "بدنه (Markdown)",
"bodyPlaceholder": "سلام {{requester.name}}،\n\nاز تماس شما متشکریم…",
"variablesHint": "متغیرها: {{requester.name}}، {{ticket.key}}، {{ticket.title}}، {{agent.name}}",
"insertResponse": "درج پاسخ آماده",
@@ -514,7 +514,7 @@ export default {
},
"systemCatalog": {
"statuses": {
- "open": "باز کنید",
+ "open": "باز",
"inProgress": "در حال انجام است",
"done": "انجام شد"
},
@@ -545,8 +545,8 @@ export default {
"description": "می تواند دایرکتوری کاربر را مشاهده کند"
},
"asset_manage": {
- "name": "مدیریت مجموعه منابع",
- "description": "می تواند مجموعه های منابع را ایجاد و مدیریت کند"
+ "name": "مدیریت مجموعه داراییها",
+ "description": "میتواند مجموعههای دارایی را ایجاد و مدیریت کند"
},
"customers_manage": {
"name": "مشتریان را مدیریت کنید",
@@ -577,8 +577,8 @@ export default {
"description": "می تواند موارد کاری را در یک فضای کاری حذف کند"
},
"item_comment": {
- "name": "اضافه کردن نظر و ویرایش خود",
- "description": "می توانید نظرات خود را اضافه کنید و نظرات خود را ویرایش کنید"
+ "name": "افزودن نظر و ویرایش نظر خود",
+ "description": "میتواند نظر اضافه کند و نظرات خود را ویرایش کند"
},
"comment_edit_others": {
"name": "نظرات دیگر را ویرایش کنید",
@@ -597,7 +597,7 @@ export default {
"description": "می تواند موارد آزمایشی، مجموعه ها و پوشه ها را ایجاد، ویرایش و حذف کند"
},
"action_manage": {
- "name": "مدیریت کنش ها",
+ "name": "مدیریت اقدامها",
"description": "می تواند اقدامات فضای کاری را ایجاد، ویرایش، حذف و اجرا کند"
},
"action_credential_manage": {
@@ -605,16 +605,16 @@ export default {
"description": "میتواند اعتبارنامههای اقدام با محدوده فضای کاری را ایجاد، بچرخاند و حذف کند"
},
"action_set_actor": {
- "name": "تنظیم بازیگر اکشن",
- "description": "می تواند یک کنش را به عنوان کاربر دیگر اجرا کند، از جمله در سراسر فضاهای کاری"
+ "name": "تنظیم اقدامکننده",
+ "description": "میتواند یک اقدام را بهعنوان کاربر دیگر اجرا کند، از جمله در سراسر فضاهای کاری"
},
"teams_manage": {
"name": "مدیریت تیم ها",
"description": "می تواند تیم ها را ایجاد، ویرایش و حذف کند"
},
"public_board_manage": {
- "name": "مدیریت هیئت های عمومی",
- "description": "میتواند مجموعهها را عمومی کند و اشتراکگذاری تابلوی عمومی را پیکربندی کند"
+ "name": "مدیریت بردهای عمومی",
+ "description": "میتواند مجموعهها را عمومی کند و اشتراکگذاری برد عمومی را پیکربندی کند"
}
}
},
@@ -622,14 +622,14 @@ export default {
"agentUpdateFailed": "تنظیمات امنیتی عامل به روز نشد",
"policySaveFailed": "سیاست احراز هویت ذخیره نشد",
"workspaceAgents": "عوامل مدیریت شده در فضای کاری",
- "workspaceAgentsDescription": "به مدیران فضای کاری اجازه دهید تا حسابهای سرویس نماینده متعلق به فضای کاری خود ایجاد کنند. حسابهای موجود در صورت غیرفعال شدن در دسترس باقی میمانند.",
+ "workspaceAgentsDescription": "به مدیران فضای کاری اجازه دهید تا حسابهای سرویس عامل متعلق به فضای کاری خود ایجاد کنند. حسابهای موجود در صورت غیرفعال شدن در دسترس باقی میمانند.",
"userAgents": "عوامل مدیریت شده توسط کاربر",
- "userAgentsDescription": "به کاربران اجازه دهید تا در نمایه خود نماینده ایجاد کنند و برای آنها نشانه های API صادر کنند. نمایندگان همیشه مجوزهای مالک خود را به ارث می برند.",
- "maxAgentsPerUser": "محدودیت نماینده برای هر کاربر",
+ "userAgentsDescription": "به کاربران اجازه دهید تا در نمایه خود عامل ایجاد کنند و برای آنها توکن های API صادر کنند. عاملها همیشه مجوزهای مالک خود را به ارث می برند.",
+ "maxAgentsPerUser": "محدودیت عامل برای هر کاربر",
"maxAgentsDescription": "برای جلوگیری از ایجاد عوامل شخصی توسط کاربران، روی 0 تنظیم کنید. حداکثر: 1000",
- "centralizedUsers": "حساب های خدمات نمایندگی متمرکز",
+ "centralizedUsers": "حسابهای سرویس متمرکز",
"centralizedUsersDescription": "به مدیران فضای کاری اجازه دهید اجراهای عامل کدگذاری را به حسابهای سرویس متمرکز تأیید شده متصل کنند.",
- "centralizedUsersWarning": "هر الزام آور در گزارش حسابرسی ثبت می شود. فقط حساب های در نظر گرفته شده برای اتوماسیون مشترک را تأیید کنید.",
+ "centralizedUsersWarning": "هر تخصیص در گزارش حسابرسی ثبت میشود. فقط حسابهای در نظر گرفته شده برای خودکارسازی مشترک را تأیید کنید.",
"authenticationPolicy": "خط مشی ورود به سیستم",
"authenticationPolicyDescription": "نحوه احراز هویت کاربران در Windshift را انتخاب کنید.",
"authenticationMethod": "روش ورود به سیستم",
@@ -637,19 +637,19 @@ export default {
"previewModeDescription": "نمایش هشدارهای خط مشی بدون مسدود کردن ورود به سیستم.",
"userStatistics": "آمار کاربران",
"totalUsers": "مجموع کاربران",
- "withPasskey": "با رمز عبور",
- "withoutPasskey": "بدون رمز عبور",
- "ssoUsers": "SSO کاربر",
+ "withPasskey": "با کلید عبور",
+ "withoutPasskey": "بدون کلید عبور",
+ "ssoUsers": "کاربران SSO",
"systemAdmins": "مدیران سیستم",
"affectedUsers": "کاربران تحت تأثیر: {count}",
"admin": "مدیر",
"policyActive": "سیاست اجرا شد",
"policyActiveDescription": "کاربرانی که شرایط انتخاب شده را ندارند ممکن است نتوانند وارد سیستم شوند.",
- "adminFallbackShort": "بازگشت مجدد مدیر اضطراری در حال حاضر فعال است.",
- "fallbackEnabled": "بازگشت مجدد مدیر فعال شد",
+ "adminFallbackShort": "بازگشت اضطراری مدیر در حال حاضر فعال است.",
+ "fallbackEnabled": "بازگشت اضطراری مدیر فعال شد",
"fallbackEnabledDescription": "اگر روش اصلی در دسترس نباشد، مدیران سیستم همچنان ممکن است با رمز ورود وارد شوند.",
"disableFallback": "راه اندازی مجدد سرور بدون",
- "fallbackDisabled": "بازگشت مجدد مدیر غیرفعال شد",
+ "fallbackDisabled": "بازگشت اضطراری مدیر غیرفعال شد",
"fallbackDisabledDescription": "خط مشی انتخاب شده برای مدیران سیستم نیز اعمال می شود. برای فعال کردن دسترسی اضطراری، سرور را با",
"enableFallback": "سرور را با",
"requiresSso": "ابتدا SSO را پیکربندی کنید",
@@ -666,9 +666,9 @@ export default {
"passwordOrSso": "رمز عبور یا SSO",
"passwordOrSsoDescription": "کاربران می توانند با رمز عبور یا از طریق ارائه دهنده پیکربندی شده SSO وارد سیستم شوند.",
"passwordPasskey": "رمز عبور + کلید عبور به عنوان عامل دوم",
- "passwordPasskeyDescription": "نیاز به رمز عبور و به دنبال آن یک رمز عبور ثبت شده.",
+ "passwordPasskeyDescription": "نیاز به رمز عبور و سپس یک کلید عبور ثبتشده.",
"passkeyOnly": "فقط Passkey",
- "passkeyOnlyDescription": "نیاز به یک رمز عبور ثبت شده؛ رمز عبور را نمی توان برای ورود به سیستم عادی استفاده کرد.",
+ "passkeyOnlyDescription": "نیاز به یک کلید عبور ثبتشده؛ رمز عبور را نمیتوان برای ورود عادی استفاده کرد.",
"ssoRequired": "فقط SSO",
"ssoRequiredDescription": "از کاربران بخواهید از طریق ارائهدهنده SSO پیکربندیشده وارد سیستم شوند."
},
@@ -684,8 +684,8 @@ export default {
"reasonExample": "به عنوان مثال، اجرای آزمایشی برای acme-agent",
"pickUser": "یک حساب خدماتی را انتخاب کنید",
"anyWorkspace": "هر فضای کاری",
- "userNumber": "کاربر شماره{id}",
- "workspaceNumber": "فضای کاری شماره{id}",
+ "userNumber": "کاربر #{id}",
+ "workspaceNumber": "فضای کاری #{id}",
"add": "تایید حساب",
"remove": "لغو تایید",
"removeFor": "لغو تأییدیه برای {name}",
@@ -699,7 +699,7 @@ export default {
},
"diagnostics": {
"title": "تشخیص",
- "subtitle": "سیگنال های عملیاتی از سیستم در حال اجرا. آستانه های هشدار را می توان بدون تغییر محدودیت های ایمنی سخت تنظیم کرد.",
+ "subtitle": "سیگنال های عملیاتی از سیستم در حال اجرا. آستانه های هشدار را می توان بدون تغییر محدودیتهای ایمنی سختگیرانه تنظیم کرد.",
"groups": {
"overview": "نمای کلی",
"automation": "اتوماسیون",
@@ -708,26 +708,26 @@ export default {
},
"tabs": {
"clock": "ساعت سرور",
- "actions": "اکشن اجراها",
- "webhooks": "Webhook تحویل",
+ "actions": "اجراهای اقدام",
+ "webhooks": "تحویل Webhook",
"schedulers": "مشاغل پس زمینه",
"recurrence": "عود",
"domainEvents": "رویدادهای دامنه",
"fracIndex": "شاخص فراک",
- "runnerPools": "استخرهای دونده",
+ "runnerPools": "استخرهای رانر",
"databasePools": "استخرهای پایگاه داده",
"cacheMemory": "حافظه کش",
- "scmConnections": "SCM اتصالات"
+ "scmConnections": "اتصالات SCM"
},
"clock": {
"title": "ساعت سرور",
- "subtitle": "سرصفحه تاریخ HTTP پاسخهای API را با ساعت مرورگر مقایسه میکند. میانه چرخشی آخرین پنج نمونه، مُهرهای زمانی نمایش داده شده را تصحیح میکند و در صورتی که آفست از آستانه فراتر رفت، هشداری را ایجاد میکند.",
+ "subtitle": "سرصفحه Date در پاسخهای API را با ساعت مرورگر مقایسه میکند. میانه چرخشی آخرین پنج نمونه، مُهرهای زمانی نمایشدادهشده را تصحیح میکند و اگر آفست از آستانه فراتر رود هشدار میدهد.",
"currentOffset": "افست فعلی",
"driftStatus": "وضعیت دریفت",
"samplesCollected": "نمونه های جمع آوری شده",
"driftThreshold": "آستانه رانش",
"recentSamples": "نمونه های اخیر",
- "autoRefresh": "اولین جدیدترین · هر 2 ثانیه یکبار به روز می شود",
+ "autoRefresh": "جدیدترین ابتدا · هر ۲ ثانیه بهروزرسانی میشود",
"when": "چه زمانی",
"clientTime": "زمان مشتری (UTC)",
"serverTime": "زمان سرور (UTC)",
@@ -767,17 +767,17 @@ export default {
"deleted": "ارائه دهنده حذف شد",
"deleteFailed": "ارائه دهنده حذف نشد",
"oauthConfigured": "OAuth پیکربندی شد",
- "namePlaceholder": "ادغام مفهوم من",
- "slug": "حلزون حرکت کردن"
+ "namePlaceholder": "ادغام Notion من",
+ "slug": "اسلاگ"
},
"oauthClients": {
- "title": "OAuth مشتریان",
- "subtitle": "برنامههای شخص ثالثی را ثبت کنید که میتوانند به کاربران Windshift با نشانههای OAuth 2.0 و PKCE اجازه دهند و برای هر کاربر API استفاده کنند.",
+ "title": "مشتریان OAuth",
+ "subtitle": "برنامههای شخص ثالثی را ثبت کنید که میتوانند به کاربران Windshift با توکنهای OAuth 2.0 و PKCE اجازه دهند و از طرف آن کاربر از API استفاده کنند.",
"template": "الگو",
- "oauthCallback": "OAuth پاسخ تماس",
+ "oauthCallback": "کالبک OAuth",
"registerClient": "ثبت نام مشتری",
- "empty": "هیچ مشتری OAuth ثبت نام نکرده است",
- "emptyDescription": "برای افزودن یک برنامه شخص ثالث، روی Register Client کلیک کنید.",
+ "empty": "هیچ مشتری OAuth ثبت نشده است",
+ "emptyDescription": "برای افزودن یک برنامه شخص ثالث، روی ثبت مشتری کلیک کنید.",
"loadFailed": "مشتری OAuth بارگیری نشد",
"updated": "مشتری OAuth بهروزرسانی شد",
"publicCreated": "مشتری عمومی OAuth ایجاد شد",
@@ -786,28 +786,28 @@ export default {
"rotateMessage": "راز قبلی بلافاصله کار نمی کند. توکن های موجود تا زمانی که منقضی شوند به کار خود ادامه می دهند. مبادلات توکن های آینده با راز قدیمی شکست خواهد خورد.",
"rotateFailed": "چرخش مخفی انجام نشد",
"deleteTitle": "«{name}» حذف شود؟",
- "deleteMessage": "تمام نشانههای دسترسی و بهروزرسانی صادر شده برای این مشتری فوراً لغو میشوند. کاربران متصل باید دوباره وصل شوند.",
- "deleted": "OAuth مشتری حذف شد",
+ "deleteMessage": "تمام توکنهای دسترسی و بهروزرسانی صادر شده برای این مشتری فوراً لغو میشوند. کاربران متصل باید دوباره وصل شوند.",
+ "deleted": "مشتری OAuth حذف شد",
"deleteFailed": "مشتری OAuth حذف نشد",
- "scopeHelp": "نشانههای دسترسی صادر شده، نشانههای Windshift API کاربر هستند. آنها مجوزهای کاربر درخواست کننده را به ارث می برند، محدود به محدوده های انتخاب شده در اینجا.",
+ "scopeHelp": "توکنهای دسترسی صادر شده، توکنهای Windshift API کاربر هستند. آنها مجوزهای کاربر درخواست کننده را به ارث می برند، محدود به محدوده های انتخاب شده در اینجا.",
"scopeCount": "محدوده: {count}",
- "redirectCount": "تغییر مسیر URI ها: {count}",
- "clientId": "مشتری ID",
+ "redirectCount": "URIهای تغییر مسیر: {count}",
+ "clientId": "شناسه مشتری",
"clientSecret": "راز مشتری",
"secretSet": "مجموعه مخفی",
"secretMissing": "راز گم شده",
"rotateSecret": "راز مشتری را بچرخانید",
"deleteClient": "مشتری را حذف کنید",
- "editTitle": "ویرایش OAuth مشتری",
- "registerTitle": "ثبت نام OAuth مشتری",
+ "editTitle": "ویرایش مشتری OAuth",
+ "registerTitle": "ثبت مشتری OAuth",
"displayName": "نام نمایشی",
"displayNamePlaceholder": "به عنوان مثال Docmost",
- "slug": "حلزون حرکت کردن",
+ "slug": "اسلاگ",
"clientType": "نوع مشتری",
"confidential": "محرمانه (سرور به سرور، دارای راز)",
"public": "عمومی (فقط PKCE، بدون راز)",
- "clientTypeHelp": "کلاینت های محرمانه یک client_secret را در سرور ذخیره می کنند. مشتریان عمومی باید برای هر تبادل توکن از PKCE استفاده کنند.",
- "redirectUris": "تغییر مسیر URI ها",
+ "clientTypeHelp": "کلاینتهای محرمانه یک client_secret را در سرور ذخیره میکنند. کلاینتهای عمومی باید برای هر تبادل توکن از PKCE استفاده کنند.",
+ "redirectUris": "URIهای تغییر مسیر",
"redirectHelp": "در هر خط یک URI وارد کنید. redirect_uri در درخواست مجوز باید دقیقاً با یکی از آنها مطابقت داشته باشد.",
"allowedScopes": "محدوده های مجاز",
"register": "ثبت نام کنید",
diff --git a/frontend/src/lib/locales/fa/agents.js b/frontend/src/lib/locales/fa/agents.js
index 7308019a1..807699ddd 100644
--- a/frontend/src/lib/locales/fa/agents.js
+++ b/frontend/src/lib/locales/fa/agents.js
@@ -41,11 +41,11 @@ export default {
"loading": "در حال بارگیری عوامل فضای کاری…",
"loadErrorTitle": "عوامل بارگیری نشدند",
"loadErrorMessage": "عوامل بارگیری نشدند.",
- "emptyTitle": "هنوز هیچ نماینده ای وجود ندارد",
+ "emptyTitle": "هنوز هیچ عاملی وجود ندارد",
"emptyAdminDescription": "یک متخصص استاندارد یا کدنویسی برای این فضای کاری ایجاد کنید.",
"emptyMemberDescription": "یک مدیر فضای کاری می تواند متخصصانی را در اینجا اضافه کند.",
- "noMatchesTitle": "هیچ عامل تطبیقی وجود ندارد",
- "noMatchesDescription": "نام، دسته، هدف یا نوع نمایه دیگری را امتحان کنید.",
+ "noMatchesTitle": "هیچ عامل تطبیقی وجود ندارد",
+ "noMatchesDescription": "نام، هندل، هدف یا نوع نمایه دیگری را امتحان کنید.",
"defaultPurpose": "یک متخصص فضای کاری که توسط سرپرستان شما پیکربندی شده است.",
"ownedBy": "متعلق به {name}",
"modelUnavailable": "مدل در دسترس نیست",
diff --git a/frontend/src/lib/locales/fa/analytics.js b/frontend/src/lib/locales/fa/analytics.js
index 42278fa47..6b2b0aad2 100644
--- a/frontend/src/lib/locales/fa/analytics.js
+++ b/frontend/src/lib/locales/fa/analytics.js
@@ -6,7 +6,7 @@ export default {
"noData": "هیچ داده ای در دسترس نیست",
"errorTitle": "تجزیه و تحلیل بارگیری نشد",
"unsupportedVersion": "سرور یک قالب تجزیه و تحلیل پشتیبانی نشده را برگرداند. پس از اتمام استقرار، بازخوانی کنید.",
- "collectionLoadError": "مجموعه ها بارگیری نشدند. Analytics همه موارد فضای کاری را نشان می دهد.",
+ "collectionLoadError": "مجموعهها بارگیری نشدند. تجزیه و تحلیل همه موارد فضای کاری را نشان میدهد.",
"retry": "دوباره امتحان کنید",
"dateRange": "محدوده تاریخ",
"collection": "مجموعه",
@@ -31,9 +31,9 @@ export default {
"scope": {
"summary": "{items} مورد فعلی · {from}–{to}",
"currentWorkspace": "گروه فضای کاری فعلی",
- "currentWorkspaceNote": "محدوده تاریخ برای نمودارهای جریان و تحویل اعمال می شود. سلامتی و پیری تصاویر لحظه ای فعلی هستند. نمودارهای تاریخی از مواردی استفاده می کنند که امروزه در این فضای کاری وجود دارد. موارد منتقل شده یا حذف شده شامل نمی شوند.",
+ "currentWorkspaceNote": "محدوده تاریخ برای نمودارهای جریان و تحویل اعمال می شود. سلامتی و قدمت تصاویر لحظه ای فعلی هستند. نمودارهای تاریخی از مواردی استفاده می کنند که امروزه در این فضای کاری وجود دارد. موارد منتقل شده یا حذف شده شامل نمی شوند.",
"currentCollection": "گروه فعلی مجموعه",
- "currentCollectionNote": "محدوده تاریخ برای نمودارهای جریان و تحویل اعمال می شود. سلامتی و پیری تصاویر لحظه ای فعلی هستند. نمودارهای تاریخی از مواردی استفاده می کنند که با این مجموعه امروزی مطابقت دارند. تغییر مجموعه می تواند گروه را تغییر دهد."
+ "currentCollectionNote": "محدوده تاریخ برای نمودارهای جریان و تحویل اعمال می شود. سلامتی و قدمت تصاویر لحظه ای فعلی هستند. نمودارهای تاریخی از مواردی استفاده می کنند که با این مجموعه امروزی مطابقت دارند. تغییر مجموعه می تواند گروه را تغییر دهد."
},
"health": {
"title": "نیاز به توجه دارد",
@@ -61,7 +61,7 @@ export default {
},
"throughput": {
"title": "ایجاد شده در مقابل تکمیل شد",
- "description": "ورود هفتگی و اولین تکمیل. باز کردن مجدد یک مورد، تکمیل اصلی آن را بازنویسی نمی کند.",
+ "description": "ورودی هفتگی و اولین تکمیل. باز کردن مجدد یک مورد، تکمیل اصلی آن را بازنویسی نمیکند.",
"created": "ایجاد شد",
"completed": "تکمیل شد",
"net": "تغییر خالص",
@@ -70,9 +70,9 @@ export default {
"definition": "تکمیل به معنای اولین انتقال به وضعیت تکمیل شده است."
},
"aging": {
- "title": "کار پیری در حال انجام است",
+ "title": "قدمت کار در حال انجام",
"description": "موارد ناتمام در حال حاضر چه مدت باز است؟",
- "total": "آیتم های فعال",
+ "total": "موارد فعال",
"median": "میانه سن",
"p85": "صدک 85",
"ageBand": "گروه سنی",
@@ -104,7 +104,7 @@ export default {
"missingHistory": "{count} موارد تکمیل شده در حال حاضر مستثنی شدند زیرا سابقه تکمیل آنها وجود ندارد.",
"missingHistory_one": "1 مورد در حال حاضر تکمیل شده حذف شد زیرا سابقه تکمیل آن وجود ندارد.",
"missingHistory_other": "{count} موارد تکمیل شده در حال حاضر مستثنی شدند زیرا سابقه تکمیل آنها وجود ندارد.",
- "definition": "از ایجاد آیتم تا اولین انتقال آن به وضعیت تکمیل شده اندازه گیری می شود. بازگشایی های بعدی ارزش را تغییر نمی دهد."
+ "definition": "از ایجاد مورد تا اولین انتقال آن به وضعیت تکمیل شده اندازه گیری می شود. بازگشاییهای بعدی مقدار را تغییر نمیدهد."
},
"dataTable": {
"show": "مشاهده جدول داده ها"
@@ -113,7 +113,7 @@ export default {
"no_items": "این محدوده هنوز موردی ندارد.",
"no_active_items": "هیچ کار ناتمامی در این زمینه وجود ندارد.",
"no_completed_items": "هیچ اولین تکمیل در محدوده تاریخ انتخاب شده ثبت نشد.",
- "few_completed_items": "فقط چند مورد در این محدوده تکمیل شد. صدک ها را به عنوان جهت دار در نظر بگیرید."
+ "few_completed_items": "فقط چند مورد در این محدوده تکمیل شد. صدکها را تقریبی در نظر بگیرید."
}
}
};
diff --git a/frontend/src/lib/locales/fa/auth.js b/frontend/src/lib/locales/fa/auth.js
index 992e91ec5..c5a36abb9 100644
--- a/frontend/src/lib/locales/fa/auth.js
+++ b/frontend/src/lib/locales/fa/auth.js
@@ -124,52 +124,52 @@ export default {
"connectedAccountsDesc": "حسابهای کنترل منبع خود را برای ایجاد شاخهها و درخواستها وصل کنید",
"agents": {
"title": "عوامل",
- "description": "نمایندگان کاربران غیر انسانی هستند که مجوزهای شما را به ارث می برند و فقط با نشانه های API احراز هویت می کنند. آنها نمی توانند به صورت تعاملی وارد سیستم شوند.",
+ "description": "عاملها کاربران غیر انسانی هستند که مجوزهای شما را به ارث میبرند و فقط با توکنهای API احراز هویت میکنند. آنها نمیتوانند بهصورت تعاملی وارد سیستم شوند.",
"createTitle": "عامل ایجاد کنید",
"create": "عامل ایجاد کنید",
"creating": "در حال ایجاد…",
- "creationUnavailable": "ایجاد نماینده برای این حساب در دسترس نیست. ممکن است لازم باشد سرپرست شما عوامل مدیریت شده توسط کاربر را فعال کند، یا ممکن است به محدودیت نماینده شما رسیده باشد.",
+ "creationUnavailable": "ایجاد عامل برای این حساب در دسترس نیست. ممکن است لازم باشد سرپرست شما عوامل مدیریت شده توسط کاربر را فعال کند، یا ممکن است به محدودیت عامل شما رسیده باشد.",
"requiredFields": "نام کاربری، نام و نام خانوادگی الزامی است.",
"createFailed": "عامل ایجاد نشد.",
"yourAgents": "عوامل شما",
- "empty": "شما هنوز هیچ نماینده ای ندارید.",
+ "empty": "شما هنوز هیچ عاملی ندارید.",
"actionsFor": "اقدامات برای {name}",
"deleteTitle": "عامل را حذف کنید",
- "deleteMessage": "این نماینده حذف شود؟ همه نشانههای API آن کار نمیکنند.",
+ "deleteMessage": "این عامل حذف شود؟ همه توکنهای API آن کار نمیکنند.",
"rename": "تغییر نام عامل",
- "nameRequired": "نام نماینده الزامی است.",
+ "nameRequired": "نام عامل الزامی است.",
"renameFailed": "تغییر نام عامل انجام نشد.",
"renameHint": "نام کاربری پایدار @{username} تغییر نخواهد کرد.",
"manageTokens": "توکن ها را مدیریت کنید",
- "hideTokens": "رمزها را پنهان کنید",
- "tokenExpirationHint": "رمز تا این تاریخ در منطقه زمانی پیکربندی شده شما معتبر باقی می ماند. خالی بگذارید بدون انقضا.",
+ "hideTokens": "توکنها را پنهان کنید",
+ "tokenExpirationHint": "توکن تا این تاریخ در منطقه زمانی پیکربندیشده شما معتبر میماند. برای بدون انقضا خالی بگذارید.",
"existingTokens": "توکن های موجود",
"tokenDates": "ایجاد شده {created} • منقضی می شود {expires}",
"neverExpires": "هرگز منقضی نمی شود",
- "noTokens": "هنوز هیچ نشانه ای وجود ندارد.",
- "tokenCreateFailed": "رمز ایجاد نشد.",
- "confirmRevokeUnnamedToken": "این نشانه لغو شود؟ هر چیزی که از آن استفاده کند بلافاصله کار نمی کند."
+ "noTokens": "هنوز هیچ توکنی وجود ندارد.",
+ "tokenCreateFailed": "توکن ایجاد نشد.",
+ "confirmRevokeUnnamedToken": "این توکن لغو شود؟ هر چیزی که از آن استفاده کند بلافاصله کار نمی کند."
},
"calendarIntegration": "ادغام تقویم",
"calendarIntegrationDesc": "مشترک موارد برنامه ریزی شده خود در برنامه های تقویم خارجی شوید",
"loadCalendarFeedSettings": "بارگذاری تنظیمات فید تقویم",
"enableCalendarSubscription": "اشتراک تقویم را فعال کنید",
- "calendarSubscriptionDesc": "یک اشتراک URL برای همگام سازی موارد کاری برنامه ریزی شده خود با برنامه های تقویم خارجی ایجاد کنید.",
- "generateCalendarFeedUrl": "ایجاد فید تقویم URL",
- "yourCalendarFeedUrl": "فید تقویم شما URL",
+ "calendarSubscriptionDesc": "یک URL اشتراک برای همگامسازی موارد کاری برنامهریزیشده خود با برنامههای تقویم خارجی ایجاد کنید.",
+ "generateCalendarFeedUrl": "ایجاد URL فید تقویم",
+ "yourCalendarFeedUrl": "URL فید تقویم شما",
"showFullUrl": "نمایش کامل URL",
"calendarFeedWarning": "این URL را به اشتراک نگذارید زیرا دسترسی به موارد برنامه ریزی شده شما را فراهم می کند.",
"lastSynced": "آخرین همگام سازی",
"howToSubscribe": "نحوه اشتراک",
- "copyFeedUrlStep": "فید URL بالا را کپی کنید",
+ "copyFeedUrlStep": "URL فید بالا را کپی کنید",
"regenerateUrl": "بازسازی URL",
"revokeFeed": "فید را لغو کنید",
- "regenerateUrlNote": "ایجاد مجدد URL URL فعلی شما را باطل می کند. هر تقویمی که از URL قدیمی استفاده می کند باید به روز شود.",
+ "regenerateUrlNote": "بازسازی URL، URL فعلی شما را باطل میکند. هر تقویمی که از URL قدیمی استفاده میکند باید بهروزرسانی شود.",
"calendarFeedsDisabled": "فیدهای تقویم توسط سرپرست شما غیرفعال شده است.",
- "googleCalendar": "Google تقویم",
- "googleCalendarInstructions": "تنظیمات > افزودن تقویم > از URL > جایگذاری URL",
- "outlook": "چشم انداز",
- "outlookInstructions": "افزودن تقویم > اشتراک از وب > جایگذاری URL",
+ "googleCalendar": "تقویم Google",
+ "googleCalendarInstructions": "تنظیمات > افزودن تقویم > از URL > چسباندن URL",
+ "outlook": "Outlook",
+ "outlookInstructions": "افزودن تقویم > اشتراک از وب > چسباندن URL",
"appleCalendar": "تقویم اپل",
"appleCalendarInstructions": "File > اشتراک تقویم جدید > جایگذاری URL"
},
@@ -178,11 +178,11 @@ export default {
"subtitle": "تنظیمات امنیتی خود را مدیریت کنید",
"credentials": "مدارک امنیتی",
"credentialsSubtitle": "روش های احراز هویت خود را مدیریت کنید",
- "apiTokens": "API نشانهها",
+ "apiTokens": "توکنهای API",
"apiTokensSubtitle": "برای دسترسی برنامه ریزی شده به حساب خود، توکن هایی ایجاد کنید",
"createToken": "توکن ایجاد کنید",
"revokeToken": "لغو توکن",
- "tokenName": "نام رمز",
+ "tokenName": "نام توکن",
"tokenCreated": "توکن با موفقیت ایجاد شد",
"tokenRevoked": "توکن با موفقیت لغو شد",
"copyToken": "کپی توکن",
@@ -194,13 +194,13 @@ export default {
"authenticationFailed": "احراز هویت ناموفق بود",
"authenticationCancelled": "احراز هویت لغو شد یا ناموفق بود. لطفا دوباره امتحان کنید.",
"failedToTestFidoLogin": "تست ورود به سیستم FIDO انجام نشد",
- "enterTokenName": "لطفاً یک نام برای این نشانه وارد کنید",
+ "enterTokenName": "لطفاً یک نام برای این توکن وارد کنید",
"confirmRevokeToken": "آیا مطمئن هستید که می خواهید \"{name}\" را لغو کنید؟ این عمل قابل لغو نیست.",
"securityKeyFido": "کلید امنیتی (FIDO2)",
"authenticatorAppTotp": "برنامه Authenticator (TOTP)"
},
"portalLogin": {
- "welcomeBack": "خوش آمدید بازگشت",
+ "welcomeBack": "خوش برگشتید",
"signInToCustomize": "برای سفارشی کردن این پورتال وارد سیستم شوید",
"emailOrUsername": "ایمیل یا نام کاربری",
"enterEmailOrUsername": "ایمیل یا نام کاربری را وارد کنید",
diff --git a/frontend/src/lib/locales/fa/channels.js b/frontend/src/lib/locales/fa/channels.js
index 96bdf1b18..96dd9c242 100644
--- a/frontend/src/lib/locales/fa/channels.js
+++ b/frontend/src/lib/locales/fa/channels.js
@@ -4,19 +4,19 @@ export default {
"subtitle": "تنظیمات اعلان را مدیریت کنید",
"notification": "اطلاع رسانی",
"notifications_one": "اعلان {count}",
- "notifications_other": "{count} اعلانها",
+ "notifications_other": "{count} اعلان",
"markAsRead": "علامت گذاری به عنوان خوانده شده",
"markAllAsRead": "علامت گذاری همه به عنوان خوانده شده",
"markAllRead": "علامت گذاری به عنوان خوانده شده",
"clearAll": "پاک کردن همه",
"noNotifications": "بدون اطلاعیه",
- "allCaughtUp": "همه شما گرفتار شده اید!",
+ "allCaughtUp": "همه را خواندهاید!",
"notificationSettings": "تنظیمات اعلان",
"emailNotifications": "اعلان های ایمیل",
"pushNotifications": "اعلانهای پوش",
"channels": "کانال ها",
"searchNotifications": "جستجوی اعلانها...",
- "closeToast": "نان تست را ببندید",
+ "closeToast": "بستن اعلان",
"closeNotifications": "بستن اعلان ها",
"viewAll": "مشاهده تمام اعلان ها",
"dismiss": "رد کردن",
@@ -29,14 +29,14 @@ export default {
"error": "خطا",
"filters": {
"allTypes": "همه انواع",
- "assignments": "تکالیف",
+ "assignments": "تخصیصها",
"comments": "نظرات",
"statusChanges": "تغییرات وضعیت",
"reminders": "یادآوری ها",
"milestones": "نقاط عطف",
"all": "همه",
"unreadOnly": "فقط خوانده نشده",
- "readOnly": "فقط خواندن"
+ "readOnly": "فقط خواندهشده"
}
},
"channels": {
@@ -62,7 +62,7 @@ export default {
"publishedAt": "منتشر شده در {path}",
"deliversTo": "درخواستها را به {workspace} تحویل میدهد",
"outboundNotifications": "اعلان های خروجی را ارسال می کند",
- "outboundEvents": "رویدادهای برون مرزی را ارائه می دهد",
+ "outboundEvents": "رویدادهای خروجی را ارائه میدهد",
"operational": "کانال عملیاتی",
"noChannels": "کانال مدیریت شده وجود ندارد",
"noChannelsDescription": "کانال های اختصاص داده شده به شما در اینجا ظاهر می شوند.",
@@ -85,7 +85,7 @@ export default {
"manageCategories": "مدیریت دسته ها",
"status": {
"enabled": "فعال شد",
- "disabled": "از کار افتاده است",
+ "disabled": "غیرفعال",
"active": "فعال",
"configured": "پیکربندی شده است",
"pending": "در انتظار",
@@ -109,10 +109,10 @@ export default {
"channelNameRequired": "نام کانال الزامی است",
"channelConfigCorrupted": "پیکربندی کانال خراب است و نمی توان آن را به طور ایمن ویرایش کرد. لطفا با یک مدیر تماس بگیرید.",
"portalConfiguration": "پیکربندی پورتال",
- "portalSlug": "پرتال اسلگ",
+ "portalSlug": "اسلاگ پورتال",
"portalSlugHelp": "شناسه مناسب URL",
- "portalSlugRequired": "راب پورتال مورد نیاز است",
- "portalSlugInvalid": "Slug باید از 1 تا 40 حرف کوچک، اعداد یا خط تیره باشد و ممکن است با خط فاصله شروع یا ختم نشود یا حاوی خط تیره متوالی باشد.",
+ "portalSlugRequired": "اسلاگ پورتال مورد نیاز است",
+ "portalSlugInvalid": "اسلاگ باید از ۱ تا ۴۰ حرف کوچک، عدد یا خط تیره باشد و نباید با خط تیره شروع یا تمام شود یا خط تیره متوالی داشته باشد.",
"portalAllowedDomainsInvalid": "یک یا چند دامنه مجاز معتبر نیستند (به عنوان مثال \"acme.com\").",
"portalUrl": "پورتال URL",
"targetWorkspaces": "فضاهای کاری مورد نظر",
@@ -125,7 +125,7 @@ export default {
"portalRegistration": "دسترسی مشتری",
"portalRegistrationMode": "حالت ثبت نام",
"portalRegistrationOpen": "باز کردن - هر کسی که ایمیل مجاز داشته باشد می تواند وارد شود",
- "portalRegistrationManual": "کتابچه راهنمای کاربر - فقط مشتریان تحت مدیریت سرپرست می توانند وارد سیستم شوند",
+ "portalRegistrationManual": "دستی — فقط مشتریان تحت مدیریت سرپرست میتوانند وارد شوند",
"portalRegistrationOpenHelp": "هر بازدیدکنندهای که ایمیلش با فهرست مجاز دامنه مطابقت دارد (یا هر بازدیدکنندهای، اگر لیست خالی باشد) میتواند خود ثبتنام کند.",
"portalRegistrationManualHelp": "فقط مشتریان پورتالی که به کانال اضافه کردهاید و به آنها اجازه دسترسی دادهاید، میتوانند پیوند جادویی درخواست کنند.",
"portalAllowedDomains": "دامنه های مجاز ایمیل",
@@ -140,9 +140,9 @@ export default {
"smtpIsActive": "SMTP فعال است",
"smtpIsInactive": "SMTP در حال حاضر غیرفعال است",
"failedToLoad": "کانال بارگیری نشد",
- "webhookConfiguration": "Webhook پیکربندی",
+ "webhookConfiguration": "پیکربندی Webhook",
"webhookUrl": "نشانی Webhook",
- "webhookUrlRequired": "Webhook URL مورد نیاز است",
+ "webhookUrlRequired": "URL Webhook مورد نیاز است",
"secretOptional": "راز (اختیاری)",
"secretPlaceholder": "راز را برای بهروزرسانی وارد کنید، برای حفظ موجود، آن را خالی بگذارید",
"secretHelp": "برای امضای درخواست ها با HMAC-SHA256 استفاده می شود.",
@@ -163,7 +163,7 @@ export default {
"sendTestWebhook": "ارسال آزمایش Webhook",
"testWebhookSent": "وب هوک آزمایشی با موفقیت ارسال شد! پیکربندی ذخیره شده است.",
"testWebhookFailed": "آزمایش Webhook ناموفق بود",
- "pleaseEnterUrl": "لطفاً یک هوک URL وارد کنید.",
+ "pleaseEnterUrl": "لطفاً یک URL webhook وارد کنید.",
"pleaseEnterValidUrl": "لطفاً یک URL معتبر وارد کنید.",
"sendingTestWebhook": "در حال ارسال وب هوک آزمایشی...",
"managedByPlugin": "این وب هوک توسط پلاگین {pluginName} مدیریت می شود.",
@@ -176,13 +176,13 @@ export default {
"provider": "ارائه دهنده",
"microsoft365": "Microsoft 365",
"google": "Google",
- "clientId": "مشتری ID",
- "clientIdRequired": "OAuth مشتری ID مورد نیاز است",
+ "clientId": "شناسه مشتری",
+ "clientIdRequired": "شناسه مشتری OAuth مورد نیاز است",
"clientSecret": "راز مشتری",
- "clientSecretRequired": "OAuth راز مشتری مورد نیاز است",
+ "clientSecretRequired": "راز مشتری OAuth مورد نیاز است",
"leaveBlankToKeep": "برای حفظ موجود، خالی بگذارید",
- "tenantId": "مستاجر ID",
- "tenantIdHelp": "برای اجازه دادن به هر حساب Microsoft از «مشترک» استفاده کنید، یا مستاجر خاصی را وارد کنید ID",
+ "tenantId": "شناسه tenant",
+ "tenantIdHelp": "برای اجازه دادن به هر حساب Microsoft از «common» استفاده کنید، یا یک شناسه tenant خاص وارد کنید",
"connected": "متصل شد",
"reconnect": "دوباره وصل شوید",
"notConnected": "متصل نیست",
@@ -191,17 +191,17 @@ export default {
"oauthMailbox": "آدرس صندوق پستی",
"oauthMailboxRequired": "آدرس صندوق پستی را برای اتصال وارد کنید",
"oauthMailboxHelp": "صندوق پستی نظارت شده برای اتصال. IMAP با این آدرس وارد سیستم میشود.",
- "redirectUri": "تغییر مسیر URI (برای Azure AD / Google کنسول)",
- "imapConnection": "IMAP اتصال",
- "imapHost": "IMAP میزبان",
+ "redirectUri": "URI تغییر مسیر (برای Azure AD / کنسول Google)",
+ "imapConnection": "اتصال IMAP",
+ "imapHost": "میزبان IMAP",
"imapHostRequired": "میزبان IMAP مورد نیاز است",
- "port": "بندر",
+ "port": "پورت",
"encryption": "رمزگذاری",
"username": "نام کاربری",
"usernameRequired": "نام کاربری IMAP لازم است",
"password": "رمز عبور",
"leaveBlankPassword": "برای حفظ رمز عبور موجود، آن را خالی بگذارید",
- "itemCreation": "ایجاد آیتم",
+ "itemCreation": "ایجاد مورد",
"targetWorkspace": "فضای کاری را هدف قرار دهید",
"targetWorkspaceRequired": "فضای کاری هدف مورد نیاز است",
"selectWorkspace": "انتخاب فضای کاری...",
@@ -209,7 +209,7 @@ export default {
"itemTypeRequired": "نوع مورد مورد نیاز است",
"selectItemType": "انتخاب نوع مورد...",
"selectWorkspaceFirst": "ابتدا یک فضای کاری را انتخاب کنید",
- "workspaceFieldResolution": "وضوح میدان کار",
+ "workspaceFieldResolution": "تعیین فضای کار فیلد",
"processingOptions": "گزینه های پردازش",
"mailbox": "صندوق پستی",
"mailboxHelp": "پوشه ای برای نظرسنجی برای ایمیل های جدید",
@@ -219,17 +219,17 @@ export default {
"connectedPortalSection": "پورتال مشتری",
"connectedPortal": "پورتال متصل",
"connectedPortalNotConnected": "متصل نیست",
- "connectedPortalUnknown": "پورتال شماره{id} (در حال حاضر توسط شما قابل مدیریت نیست)",
+ "connectedPortalUnknown": "پورتال #{id} (در حال حاضر توسط شما قابل مدیریت نیست)",
"connectedPortalHelp": "مشتریانی که به این آدرس ایمیل میزنند، میتوانند با رعایت خطمشی دسترسی آن پورتال، بلیتهای خود را در پورتال انتخابی ببینند و ادامه دهند. پاسخهای پورتال در همان بلیت میمانند.",
"portalConnectedMailboxes": "صندوق های پستی ورودی متصل",
"portalConnectedMailboxesEmpty": "هیچ صندوق پستی ورودی به این پورتال متصل نیست.",
"portalConnectedMailboxesHelp": "کانال های ایمیل مرتبط با این پورتال. مشتریانی که به آن آدرس ها ایمیل می زنند، بلیط های خود را اینجا می بینند. پیوند را در هر کانال ایمیل پیکربندی کنید.",
"portalMailboxEnabled": "فعال شد",
- "portalMailboxDisabled": "از کار افتاده است",
+ "portalMailboxDisabled": "غیرفعال",
"autoAppendOpenTickets": "باز کردن بلیط ها را از طریق ایمیل ادامه دهید",
"autoAppendOpenTicketsHelp": "هنگامی که شخصی با یک بلیط باز در این فضای کاری ایمیل تازه (بدون پاسخ) ارسال می کند، به جای ایجاد یک نسخه تکراری، پیام خود را به آن بلیط اضافه کنید. فقط زمانی اعمال می شود که بلیط را ایجاد کرده باشند یا قبلاً پاسخ داده باشند.",
"markAsRead": "پس از پردازش به عنوان خوانده شده علامت بزنید",
- "markAsReadHelp": "ایمیلها را پس از تبدیل شدن به آیتمها بهعنوان خواندهشده علامتگذاری کنید",
+ "markAsReadHelp": "ایمیلها را پس از تبدیل شدن به موردها بهعنوان خواندهشده علامتگذاری کنید",
"deleteAfterProcess": "پس از پردازش حذف کنید",
"deleteAfterProcessHelp": "پس از ایجاد موارد، ایمیل ها را از صندوق پست حذف کنید (با احتیاط استفاده کنید)",
"processingDisposition": "پس از پردازش",
@@ -244,8 +244,8 @@ export default {
"intakesMailboxAddress": "نظارت {address}",
"intakeLastUID": "آخرین UID {uid}",
"intakeRateLimited": "{count} عقب نگه داشت",
- "intakesEmpty": "هنوز مصرفی وجود ندارد. یکی را اضافه کنید تا این صندوق پستی مواردی را ایجاد کند.",
- "intakeAdd": "مصرف اضافه کنید",
+ "intakesEmpty": "هنوز ورودی وجود ندارد. یکی را اضافه کنید تا این صندوق پستی مواردی را ایجاد کند.",
+ "intakeAdd": "ورودی اضافه کنید",
"intakeFolder": "پوشه",
"intakeFolderRequired": "پوشه مورد نیاز است",
"intakeTargetType": "نوع هدف",
@@ -256,34 +256,34 @@ export default {
"intakeWorkspaceRequired": "یک فضای کاری را انتخاب کنید",
"intakeStatus": "وضعیت",
"intakeStatusEnabled": "فعال شد",
- "intakeStatusDisabled": "از کار افتاده است",
+ "intakeStatusDisabled": "غیرفعال",
"intakeStatusNeedsAttention": "نیاز به توجه دارد",
- "intakeFeedsPortal": "پورتال فید",
+ "intakeFeedsPortal": "پورتال را تغذیه میکند",
"intakeFeedsWorkspace": "فضای کاری را تغذیه می کند",
"intakePortalRequestTypeHelp": "ایمیل از این پوشه از نوع درخواست ایمیل سیستم پورتال استفاده می کند، بنابراین فیلدهای فرم الزامی هرگز ایمیل را مسدود نمی کنند.",
"intakePortalItemTypeHelp": "موارد جدید از این پوشه از نوع مورد انتخاب شده استفاده می کنند. نوع درخواست ایمیل سیستم پورتال همچنان نامه را مسیریابی می کند.",
"selectPortal": "یک پورتال را انتخاب کنید",
- "intakeSendConfirmation": "رسید ارسال را ارسال کنید",
+ "intakeSendConfirmation": "ارسال رسید",
"intakeSendConfirmationHint": "به فرستنده یک ایمیل تأیید کنید که درخواست او دریافت شده است. زمانی که این ورودی به یک پورتال متصل می شود، رسید شامل پیوند پورتال می شود.",
"intakeImportExistingMail": "ایمیل موجود را وارد کنید",
- "intakeImportExistingMailHint": "وقتی این نظرسنجی برای اولین بار انجام می شود، به جای شروع با ایمیل جدید، پیام هایی را که از قبل در صندوق پستی هستند وارد کنید. برای جلوگیری از تبدیل تاریخچه صندوق پستی به بلیط، آن را رها کنید.",
+ "intakeImportExistingMailHint": "وقتی این صندوق پستی برای اولین بار بررسی میشود، بهجای شروع با ایمیل جدید، پیامهای موجود در صندوق پستی را وارد کنید. برای جلوگیری از تبدیل تاریخچه صندوق پستی به بلیط، آن را رها کنید.",
"intakeConfirmationOn": "رسید در",
- "intakeSaved": "مصرف ذخیره شد",
- "intakeSaveFailed": "مصرف ذخیره نشد",
- "intakeDeleted": "مصرف حذف شد",
- "intakeDeleteFailed": "دریافتی حذف نشد",
+ "intakeSaved": "ورودی ذخیره شد",
+ "intakeSaveFailed": "ورودی ذخیره نشد",
+ "intakeDeleted": "ورودی حذف شد",
+ "intakeDeleteFailed": "ورودی حذف نشد",
"intakeLoadFailed": "ورودیها بارگیری نشد",
"openForm": "فرم را باز کنید",
"formConfiguration": "صفحه عمومی",
"formSlug": "عمومی URL",
"formSlugHelp": "در لینک اشتراک گذاری استفاده شده است",
- "formSlugRequired": "Slug فرم مورد نیاز است",
- "formSlugInvalid": "Slug باید از 1 تا 40 حرف کوچک، اعداد یا خط تیره باشد و ممکن است با خط فاصله شروع یا ختم نشود یا حاوی خط تیره متوالی باشد.",
+ "formSlugRequired": "اسلاگ فرم مورد نیاز است",
+ "formSlugInvalid": "اسلاگ باید از ۱ تا ۴۰ حرف کوچک، عدد یا خط تیره باشد و نباید با خط تیره شروع یا تمام شود یا خط تیره متوالی داشته باشد.",
"formBrandColorInvalid": "رنگ برند باید یک کد شش رقمی شش رقمی باشد (مثلاً #14b8a6).",
"formLogoUrlInvalid": "نشانواره URL باید یک http(های) معتبر URL باشد.",
"formRedirectUrlInvalid": "تغییر مسیر URL باید یک http(های) معتبر URL باشد.",
"formUrl": "فرم URL",
- "formTheme": "موضوع",
+ "formTheme": "پوسته",
"formBrandColor": "رنگ برند",
"formLogoUrl": "نشانواره URL",
"formSuccessMessage": "پیام موفقیت پیش فرض",
@@ -308,21 +308,21 @@ export default {
"commentDeleted": "نظر حذف شد",
"itemLinked": "مورد پیوند شد",
"itemUnlinked": "مورد لغو پیوند شد",
- "smtpConfiguration": "SMTP پیکربندی",
- "smtpHost": "SMTP میزبان",
+ "smtpConfiguration": "پیکربندی SMTP",
+ "smtpHost": "میزبان SMTP",
"smtpHostRequired": "میزبان SMTP مورد نیاز است",
- "smtpPort": "بندر",
+ "smtpPort": "پورت",
"smtpUsername": "نام کاربری",
- "smtpUsernamePlaceholder": "SMTP نام کاربری (در صورت نیاز)",
+ "smtpUsernamePlaceholder": "نام کاربری SMTP (در صورت نیاز)",
"smtpPassword": "رمز عبور",
- "smtpFromEmail": "از ایمیل",
- "smtpFromEmailRequired": "از آدرس ایمیل مورد نیاز است",
- "smtpFromName": "از نام",
+ "smtpFromEmail": "ایمیل فرستنده",
+ "smtpFromEmailRequired": "آدرس ایمیل فرستنده مورد نیاز است",
+ "smtpFromName": "نام فرستنده",
"smtpFromNamePlaceholder": "نام نمایشی برای ایمیل های ارسالی",
"smtpEncryption": "رمزگذاری",
"smtpSkipTlsVerify": "رد شدن از تأیید گواهی",
- "smtpSkipTlsVerifyDescription": "فقط برای این سرور SMTP گواهیهای خودامضا یا غیرقابل اعتماد مجاز است. این امر امنیت اتصال را تضعیف می کند.",
- "smtpNoEncryptionWarning": "محتویات ایمیل و فراداده های تحویل بدون رمزگذاری ارسال می شود. از این فقط با یک رله محلی قابل اعتماد SMTP استفاده کنید.",
+ "smtpSkipTlsVerifyDescription": "گواهیهای خودامضا یا غیرقابلاعتماد را فقط برای این سرور SMTP مجاز میکند. این کار امنیت اتصال را تضعیف میکند.",
+ "smtpNoEncryptionWarning": "محتویات ایمیل و فرادادههای تحویل بدون رمزگذاری ارسال میشوند. این را فقط با یک رله SMTP محلی قابلاعتماد استفاده کنید.",
"noEncryption": "هیچ (توصیه نمی شود)",
"authentication": "احراز هویت",
"smtpAuthMethod": "روش احراز هویت",
@@ -330,7 +330,7 @@ export default {
"smtpAuthAuto": "خودکار (توصیه می شود)",
"smtpAuthNone": "هیچ (بدون احراز هویت)",
"senderSettings": "تنظیمات فرستنده",
- "smtpHostAndFromRequired": "SMTP میزبان و از ایمیل مورد نیاز است",
+ "smtpHostAndFromRequired": "میزبان SMTP و ایمیل فرستنده مورد نیاز است",
"testSmtp": "آزمایش SMTP",
"testEmailAddress": "آدرس ایمیل آزمایشی",
"testEmailPlaceholder": "برای ارسال تست ایمیل را وارد کنید",
@@ -346,7 +346,7 @@ export default {
"lastChecked": "آخرین بررسی",
"never": "هرگز",
"intakeLastUID": "آخرین UID {uid}",
- "intakeLastPolled": "نظرسنجی {time}",
+ "intakeLastPolled": "آخرین بررسی {time}",
"errors": "خطاها",
"noErrors": "بدون خطا",
"from": "از",
@@ -361,12 +361,12 @@ export default {
"next": "بعدی",
"page": "صفحه {page} از {total}",
"rateLimited": "نرخ محدود",
- "rateLimitedCount": "{count} پیام (ها) با محدودیت نرخ هر فرستنده متوقف شده و منتظر درخواست هستند.",
- "requeue": "درخواست کنید و دوباره امتحان کنید",
- "requeueing": "در حال درخواست ...",
- "tabInbound": "نامه ورودی",
- "tabOutbox": "مشتری پاسخ می دهد",
- "outboxDescription": "پاسخ های نماینده در صف به مشتریان ارسال ناموفق سعی مجدد با عقب نشینی.",
+ "rateLimitedCount": "{count} پیام بهدلیل محدودیت نرخ هر فرستنده متوقف شده و در انتظار بازگردانی به صف است.",
+ "requeue": "بازگردانی به صف و تلاش مجدد",
+ "requeueing": "در حال بازگردانی به صف...",
+ "tabInbound": "ورودی",
+ "tabOutbox": "صندوق خروجی",
+ "outboxDescription": "پاسخهای عامل در صف که ارسالشان به مشتریان ناموفق بود؛ با تأخیر پلکانی دوباره تلاش میشوند.",
"outboxTo": "به",
"outboxStatus": "وضعیت",
"outboxNextAttempt": "تلاش بعدی",
@@ -383,9 +383,9 @@ export default {
"outboxFilterAll": "همه",
"outboxDiscardPending": "همه موارد در انتظار را صرفنظر کنید ({count})",
"outboxDiscardPendingTitle": "همه پاسخهای معلق مشتری کنار گذاشته شوند؟",
- "outboxDiscardPendingMessage": "این همه {count} پاسخهای در صف این کانال را لغو میکند. آنها به عنوان دور ریخته شده قابل مشاهده می مانند و چیزی ارسال نمی شود. پاسخ هایی که قبلاً تحویل داده شده اند را نمی توان لغو کرد.",
+ "outboxDiscardPendingMessage": "{count} پاسخ در صف این کانال را لغو میکند. آنها به عنوان دور ریخته شده قابل مشاهده می مانند و چیزی ارسال نمی شود. پاسخ هایی که قبلاً تحویل داده شده اند را نمی توان لغو کرد.",
"outboxDiscardPendingConfirm": "پاسخهای معلق را رد کنید",
- "outboxDiscardedCount": "پاسخهای {count} در صف حذف شد."
+ "outboxDiscardedCount": "{count} پاسخ در صف حذف شد."
}
},
"portal": {
@@ -393,7 +393,7 @@ export default {
"subtitle": "تنظیمات پورتال مشتری",
"portalTitle": "عنوان پورتال",
"selectWorkspace": "فضای کاری را انتخاب کنید",
- "workspaceFieldResolution": "وضوح میدان کار",
+ "workspaceFieldResolution": "تعیین فضای کار فیلد",
"bindingLocked": "پس از ایجاد ثابت شد. نوع درخواست را حذف و دوباره ایجاد کنید تا آن را تغییر دهید.",
"signInTitle": "وارد حساب کاربری خود شوید",
"signInDescription": "برای دریافت لینک ورود ایمیل خود را وارد کنید",
@@ -409,7 +409,7 @@ export default {
"signInSuccess": "با موفقیت وارد سیستم شدید!",
"redirecting": "هدایت شما به پورتال...",
"verificationFailed": "ورود به سیستم انجام نشد",
- "invalidLink": "رمز نامعتبر یا گم شده است",
+ "invalidLink": "پیوند نامعتبر یا یافت نشد",
"portalCustomer": "مشتری پورتال",
"loading": "در حال بارگیری پورتال...",
"notFound": "پورتال پیدا نشد",
@@ -421,12 +421,12 @@ export default {
"password": "رمز عبور",
"enterPassword": "رمز عبور خود را وارد کنید",
"signingIn": "ورود به سیستم...",
- "theme": "موضوع",
+ "theme": "پوسته",
"gradient": "گرادیان",
"searchBox": "جعبه جستجو",
"customizeButton": "سفارشی کنید",
"portalDescription": "توضیحات پورتال (اختیاری)",
- "portalSlug": "پرتال اسلگ",
+ "portalSlug": "اسلاگ پورتال",
"requestTypes": "انواع درخواست",
"createRequestType": "ایجاد نوع درخواست",
"editRequestType": "ویرایش نوع درخواست",
@@ -446,16 +446,16 @@ export default {
"assetSet": "مجموعه دارایی",
"assetSetRequired": "مجموعه دارایی مورد نیاز است",
"selectAssetSet": "انتخاب مجموعه دارایی...",
- "assetSetHint": "دارایی مجموعه درخواست های این گزارش را دارد.",
+ "assetSetHint": "داراییهای مجموعه، درخواستهای این گزارش را پر میکنند.",
"qlQuery": "QL Query",
- "qlQueryRequired": "پرس و جو QL مورد نیاز است",
- "qlQueryTokenRequired": "پرسوجوهای QL در حالت فرم باید حداقل به یک فیلد فرم با استفاده از نشانههای ${field_identifier} ارجاع دهند.",
+ "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} برای ارجاع مقادیر ارسال شده توسط فرم استفاده کنید.",
+ "qlQueryFormHint": "از توکنهای ${field_identifier} برای ارجاع مقادیر ارسال شده توسط فرم استفاده کنید.",
"runMode": "حالت اجرا",
- "runModeDirect": "میز مستقیم",
+ "runModeDirect": "جدول مستقیم",
"runModeDirectHint": "نمایش نتایج به صورت خطی به عنوان یک جدول تمام عرض در یک بخش.",
"runModeForm": "فرم درخواست",
"runModeFormHint": "راه اندازی مانند یک نوع درخواست: کاربر یک فرم را پر می کند، سپس نتایج نشان داده می شود.",
@@ -470,26 +470,26 @@ export default {
"assetReportActiveHint": "گزارش های غیرفعال از پورتال پنهان می شوند.",
"assetReportFieldsAfterCreate": "پس از ایجاد، از \"پیکربندی فیلدها\" در کارت گزارش برای انتخاب فیلدهایی که در فرم ظاهر می شوند استفاده کنید.",
"rowActions": "اقدامات ردیف",
- "addRowAction": "افزودن عملکرد ردیف",
+ "addRowAction": "افزودن اقدام ردیف",
"rowActionsHint": "یک پیوند به هر ردیف نتیجه اضافه کنید که یک نوع درخواست را با یک فیلد از قبل پر شده از آن دارایی باز می کند.",
- "noRowActions": "هیچ عملکرد ردیفی پیکربندی نشده است.",
- "removeRowAction": "عملکرد ردیف را حذف کنید",
+ "noRowActions": "هیچ اقدام ردیفی پیکربندی نشده است.",
+ "removeRowAction": "اقدام ردیف را حذف کنید",
"rowActionLabel": "برچسب پیوند",
"rowActionLabelPlaceholder": "به عنوان مثال، یک مشکل را گزارش کنید",
"rowActionRequestType": "نوع درخواست",
"selectRequestType": "انتخاب نوع درخواست...",
"rowActionTargetField": "فیلد از پیش پر شده",
- "selectField": "انتخاب رشته...",
- "rowActionSource": "ارزش از دارایی",
+ "selectField": "انتخاب فیلد...",
+ "rowActionSource": "مقدار از دارایی",
"rowActionSourceAssetId": "دارایی ID",
"rowActionSourceAssetTag": "برچسب دارایی",
"rowActionSourceTitle": "عنوان دارایی",
- "rowActionIncomplete": "عملکرد ردیف {index} ناقص است: {field} مورد نیاز است",
+ "rowActionIncomplete": "اقدام ردیف {index} ناقص است: {field} مورد نیاز است",
"runReport": "اجرای گزارش",
"failedToRunReport": "گزارش اجرا نشد",
"fieldRequired": "{field} مورد نیاز است",
"noFieldsConfigured": "هنوز هیچ فیلد فرم پیکربندی نشده است. از \"پیکربندی فیلدها\" در کارت گزارش برای افزودن تعدادی استفاده کنید.",
- "resultsCount": "{total} نتایج",
+ "resultsCount": "{total} نتیجه",
"editCriteria": "معیارها را ویرایش کنید",
"noAssetsFound": "هیچ دارایی با معیارها مطابقت ندارد.",
"noFormFieldsConfigured": "این گزارش هنوز هیچ فیلد فرمی پیکربندی نشده است.",
@@ -505,7 +505,7 @@ export default {
"iconAndColor": "نماد و رنگ",
"createsItemType": "نوع مورد را ایجاد می کند",
"selectItemType": "انتخاب نوع مورد...",
- "submissionsCreateItemType": "ارسالی این نوع آیتم کاری را ایجاد می کند",
+ "submissionsCreateItemType": "ارسالی این نوع مورد کاری را ایجاد می کند",
"creating": "ایجاد...",
"removeFromSection": "حذف از بخش",
"removeLink": "حذف پیوند",
@@ -520,16 +520,16 @@ export default {
"guestUser": "کاربر مهمان",
"notSignedIn": "وارد نشده است",
"draftsTitle": "پیش نویس های شما",
- "draftsSubtitle": "از جایی که ترک کردی ادامه بده",
+ "draftsSubtitle": "از جایی که رها کردید ادامه دهید",
"draftsEmpty": "هنوز هیچ پیش نویسی وجود ندارد. یک درخواست را شروع کنید و پیشرفت شما به طور خودکار ذخیره می شود.",
"draftStepProgress": "مرحله {current}",
"draftUpdatedAgo": "به روز شد {time}",
"draftUntitled": "پیش نویس بدون عنوان",
- "draftResume": "رزومه",
+ "draftResume": "ادامه",
"draftDelete": "حذف پیش نویس",
"draftDeleteConfirm": "این پیش نویس حذف شود؟ این قابل واگرد نیست.",
"draftResumeBanner": "از سرگیری پیش نویس ذخیره شده.",
- "draftStartFresh": "تازه شروع کن",
+ "draftStartFresh": "شروع از نو",
"draftSaving": "در حال ذخیره پیش نویس…",
"draftSaved": "پیش نویس ذخیره شد",
"signInWithPasskey": "با کلید عبور وارد شوید",
@@ -538,13 +538,13 @@ export default {
"profileTitle": "نمایه",
"profileSubtitle": "نحوه ورود به این پورتال را مدیریت کنید.",
"profileSection": "حساب",
- "passkeysTitle": "Passkeys",
+ "passkeysTitle": "کلیدهای عبور",
"passkeysSubtitle": "بدون پیوند ایمیل سریعتر و ایمن تر وارد شوید.",
"passkeysUnsupported": "مرورگر شما از کلیدهای عبور پشتیبانی نمی کند. از نسخه اخیر کروم، سافاری، اج یا فایرفاکس استفاده کنید.",
- "addPasskey": "یک رمز عبور اضافه کنید",
- "addPasskeyTitle": "یک رمز عبور اضافه کنید",
+ "addPasskey": "افزودن کلید عبور",
+ "addPasskeyTitle": "افزودن کلید عبور",
"addPasskeyHint": "به این دستگاه یک نام بدهید تا بتوانید بعداً آن را تشخیص دهید.",
- "passkeyName": "Passkey نام",
+ "passkeyName": "نام کلید عبور",
"passkeyAdded": "اضافه شد",
"passkeyLastUsed": "آخرین استفاده شده",
"noPasskeys": "هنوز کلید عبور وجود ندارد.",
@@ -580,14 +580,14 @@ export default {
"addRequestType": "اضافه کردن نوع درخواست",
"confirmDeleteRequestType": "آیا مطمئنید که می خواهید این نوع درخواست را حذف کنید؟ این قابل واگرد نیست.",
"confirmDeleteAssetReport": "آیا مطمئن هستید که می خواهید این گزارش دارایی را حذف کنید؟ این قابل واگرد نیست.",
- "docmostKnowledgeBase": "Docmost پایگاه دانش",
+ "docmostKnowledgeBase": "پایگاه دانش Docmost",
"docmostDescription": "پایگاه دانش Docmost خود را برای فعال کردن قابلیت جستجو در پورتال متصل کنید",
- "docmostShareLink": "Docmost پیوند را به اشتراک بگذارید",
+ "docmostShareLink": "پیوند اشتراک Docmost",
"docmostShareLinkPlaceholder": "https://wiki.example.com/share/abc123xyz",
"docmostShareLinkHelp": "پیوند اشتراک گذاری کامل Docmost را وارد کنید (به عنوان مثال، https://wiki.example.com/share/u1gkl0jk1u)",
"parsedConfiguration": "پیکربندی تجزیه شده:",
- "baseURL": "پایه URL:",
- "shareID": "اشتراک گذاری ID:",
+ "baseURL": "URL پایه:",
+ "shareID": "شناسه اشتراک:",
"configurationValid": "پیکربندی معتبر است",
"invalidShareLinkFormat": "قالب پیوند اشتراک گذاری نامعتبر است",
"expectedFormat": "قالب مورد انتظار: https://your-domain.com/share/share-id",
@@ -604,7 +604,7 @@ export default {
"workspacePagesEmpty": "هنوز هیچ صفحه فضای کاری در این پایگاه دانش منتشر نشده است.",
"workspacePagesPickWorkspace": "فضای کار",
"workspacePagesPickWorkspacePlaceholder": "انتخاب فضای کاری…",
- "workspacePagesNoEligible": "هیچ فضای کاری متصلی توسط شما اداره نمی شود. برای انتشار صفحات در اینجا، حقوق مدیریت فضای کاری الزامی است.",
+ "workspacePagesNoEligible": "هیچ فضای کاری متصلی را مدیریت نمیکنید. برای انتشار صفحات در اینجا، دسترسی مدیریت فضای کاری الزامی است.",
"workspacePagesScope": "دامنه",
"workspacePagesEntire": "درخت کل صفحات",
"workspacePagesSubtree": "صفحه فرعی (به همراه صفحات فرعی آن)",
@@ -615,7 +615,7 @@ export default {
"workspacePagesEntryEntire": "{workspace} - درخت کل صفحات",
"workspacePagesEntrySubtree": "{workspace} - صفحه فرعی «{page}»",
"logo": "لوگوی پورتال",
- "logoHelp": "یک لوگو برای نمایش در هدر پورتال آپلود کنید. در صورت تنظیم نشدن، آرم هاب به عنوان جایگزین استفاده می شود.",
+ "logoHelp": "یک لوگو برای نمایش در هدر پورتال آپلود کنید. در صورت تنظیم نشدن، لوگوی هاب بهعنوان جایگزین استفاده میشود.",
"assetReports": "گزارش دارایی",
"assetReportsDescription": "گزارشهای دارایی را که کاربران پورتال میتوانند مشاهده کنند، پیکربندی کنید.",
"noAssetReports": "هنوز هیچ گزارش دارایی پیکربندی نشده است.",
@@ -634,7 +634,7 @@ export default {
"selectGroups": "انتخاب گروه ها...",
"selectOrganizations": "انتخاب سازمان ها ...",
"noRestrictions": "بدون محدودیت - قابل مشاهده برای همه",
- "hasRestrictions": "دید محدود شده است",
+ "hasRestrictions": "مشاهده محدود شده است",
"orLogicHint": "کاربر باید حداقل به یک گروه یا سازمان منتخب تعلق داشته باشد",
"noGroupsAvailable": "هیچ گروهی در دسترس نیست",
"noOrganizationsAvailable": "هیچ سازمانی در دسترس نیست"
@@ -670,8 +670,8 @@ export default {
"addField": "فیلد را اضافه کنید",
"addVirtualField": "افزودن فیلد مجازی",
"addExistingField": "فیلد موجود را اضافه کنید",
- "field": "میدان",
- "selectField": "انتخاب رشته...",
+ "field": "فیلد",
+ "selectField": "انتخاب فیلد...",
"requiredField": "فیلد الزامی",
"required": "مورد نیاز",
"noFieldsInStep": "هیچ فیلدی در مرحله {step} وجود ندارد. فیلدهای زیر را اضافه کنید",
@@ -690,8 +690,8 @@ export default {
"fieldNamePlaceholder": "به عنوان مثال، سطح فوریت",
"fieldType": "نوع فیلد",
"options": "گزینه ها",
- "value": "ارزش",
- "label": "برچسب بزنید",
+ "value": "مقدار",
+ "label": "برچسب",
"addOption": "افزودن گزینه",
"pleaseSelectField": "لطفاً یک فیلد را انتخاب کنید",
"fieldAlreadyAdded": "این فیلد قبلاً به این مرحله اضافه شده است",
@@ -795,7 +795,7 @@ export default {
"matchingRequestTypes": "انواع درخواست",
"noRequests": "هنوز درخواستی وجود ندارد",
"noRequestsDescription": "درخواست های ارسال شده از طریق پورتال های شما در اینجا نمایش داده می شود",
- "request": "درخواست کنید",
+ "request": "درخواست",
"portal": "پورتال",
"submitter": "ارسال کننده",
"status": "وضعیت",
@@ -806,6 +806,6 @@ export default {
"showingResults": "در حال نمایش",
"of": "از",
"logo": "لوگوی هاب",
- "logoHelp": "این لوگو در هاب نمایش داده می شود و به عنوان یک بک گراند برای پورتال های بدون آرم خود استفاده می شود."
+ "logoHelp": "این لوگو در هاب نمایش داده میشود و بهعنوان پسزمینه پورتالهای بدون لوگو استفاده میشود."
}
};
diff --git a/frontend/src/lib/locales/fa/common.js b/frontend/src/lib/locales/fa/common.js
index 7e89be2e8..8a1f3958a 100644
--- a/frontend/src/lib/locales/fa/common.js
+++ b/frontend/src/lib/locales/fa/common.js
@@ -17,10 +17,10 @@ export default {
"reset": "بازنشانی کنید",
"discard": "دور انداختن",
"discardChanges": "حذف تغییرات",
- "disconnect": "قطع کن",
+ "disconnect": "قطع کردن",
"confirm": "تایید کنید",
"done": "انجام شد",
- "ok": "باشه",
+ "ok": "تأیید",
"yes": "بله",
"no": "خیر",
"back": "برگشت",
@@ -29,7 +29,7 @@ export default {
"finish": "پایان",
"continue": "ادامه دهید",
"submit": "ارسال کنید",
- "apply": "درخواست کنید",
+ "apply": "اعمال",
"refresh": "تازه کردن",
"reload": "بارگذاری مجدد",
"retry": "دوباره امتحان کنید",
@@ -37,7 +37,7 @@ export default {
"or": "یا",
"menu": "منو",
"paste": "چسباندن",
- "duplicate": "تکراری",
+ "duplicate": "ایجاد نسخه",
"move": "حرکت کنید",
"moveUp": "حرکت به بالا",
"moveDown": "حرکت به پایین",
@@ -48,17 +48,17 @@ export default {
"enable": "فعال کردن",
"disable": "غیر فعال کردن",
"enabled": "فعال شد",
- "disabled": "از کار افتاده است",
+ "disabled": "غیرفعال",
"show": "نمایش دهید",
"hide": "پنهان کردن",
"expand": "گسترش دهید",
- "collapse": "فرو ریختن",
+ "collapse": "جمع کردن",
"view": "مشاهده کنید",
"preview": "پیش نمایش",
"download": "دانلود کنید",
"upload": "آپلود کنید",
- "import": "واردات",
- "export": "صادرات",
+ "import": "درونریزی",
+ "export": "برونریزی",
"print": "چاپ کنید",
"share": "به اشتراک بگذارید",
"open": "باز کنید",
@@ -66,7 +66,7 @@ export default {
"name": "نام",
"title": "عنوان",
"description": "توضیحات",
- "type": "تایپ کنید",
+ "type": "نوع",
"status": "وضعیت",
"priority": "اولویت",
"category": "دسته بندی",
@@ -84,9 +84,9 @@ export default {
"assignedTo": "اختصاص داده شده به",
"assignTo": "اختصاص دادن به",
"assign": "اختصاص دهید",
- "assignee": "مأمور",
+ "assignee": "مسئول",
"team": "تیم",
- "allAssignees": "همه مأمورین",
+ "allAssignees": "همه مسئولان",
"unassigned": "اختصاص داده نشده است",
"members": "اعضا",
"user": "کاربر",
@@ -117,9 +117,9 @@ export default {
"link": "پیوند",
"color": "رنگ",
"icon": "نماد",
- "order": "سفارش دهید",
+ "order": "ترتیب",
"position": "موقعیت",
- "count": "بشمار",
+ "count": "تعداد",
"total": "مجموع",
"active": "فعال",
"inactive": "غیر فعال",
@@ -140,7 +140,7 @@ export default {
"regenerating": "در حال بازسازی...",
"revoking": "در حال لغو...",
"applying": "در حال اعمال...",
- "note": "توجه داشته باشید",
+ "note": "یادداشت",
"unknown": "ناشناس",
"loadMore": "بیشتر بارگیری کنید",
"loadingMore": "در حال بارگیری بیشتر...",
@@ -155,7 +155,7 @@ export default {
"empty": "خالی",
"required": "مورد نیاز",
"optional": "اختیاری",
- "areYouSure": "مطمئنی؟",
+ "areYouSure": "مطمئنید؟",
"confirmDelete": "آیا مطمئنید که می خواهید این را حذف کنید؟",
"confirmAction": "آیا مطمئن هستید که می خواهید ادامه دهید؟",
"cannotUndo": "این عمل قابل لغو نیست.",
@@ -176,7 +176,7 @@ export default {
"searching": "در حال جستجو...",
"noItemsFound": "هیچ موردی یافت نشد",
"typeToSearch": "برای جستجو تایپ کنید...",
- "pressEscapeToCancel": "Escape را برای لغو فشار دهید",
+ "pressEscapeToCancel": "Escape را برای لغو بزنید",
"viewDetails": "مشاهده جزئیات",
"openInNewTab": "در برگه جدید باز کنید",
"account": "حساب",
@@ -191,11 +191,11 @@ export default {
"overview": "نمای کلی",
"files": "فایل ها",
"ticket": "مورد کار",
- "tickets": "اقلام کار",
+ "tickets": "موارد کار",
"noFiles": "بدون فایل",
"filesComingSoon": "مدیریت فایل به زودی ارائه می شود",
- "noTickets": "بدون آیتم کاری",
- "ticketsComingSoon": "مدیریت اقلام کاری به زودی ارائه می شود"
+ "noTickets": "بدون مورد کار",
+ "ticketsComingSoon": "مدیریت موارد کار بهزودی ارائه میشود"
},
"toast": {
"success": "موفقیت",
@@ -225,10 +225,10 @@ export default {
"USER_NOT_FOUND": "کاربر پیدا نشد",
"CONFLICT": "این منبع از قبل وجود دارد.",
"ALREADY_EXISTS": "منبعی با این شناسه از قبل وجود دارد.",
- "RATE_LIMITED": "درخواست های خیلی زیاد لطفا صبر کنید و دوباره امتحان کنید.",
+ "RATE_LIMITED": "درخواستهای بیش از حد. لطفاً صبر کنید و دوباره امتحان کنید.",
"INTERNAL_ERROR": "یک خطای غیرمنتظره رخ داد. لطفاً بعداً دوباره امتحان کنید.",
"SERVICE_UNAVAILABLE": "این سرویس به طور موقت در دسترس نیست.",
- "NETWORK_ERROR": "خطای شبکه لطفا اتصال خود را بررسی کنید.",
+ "NETWORK_ERROR": "خطای شبکه. لطفاً اتصال خود را بررسی کنید.",
"TIMEOUT": "زمان درخواست به پایان رسید. لطفا دوباره امتحان کنید.",
"UNKNOWN": "یک خطای ناشناخته رخ داد.",
"generic": "مشکلی پیش آمد. لطفا دوباره امتحان کنید.",
@@ -262,7 +262,7 @@ export default {
"searchUsers": "جستجوی کاربران...",
"searchChannels": "جستجوی کانال ها...",
"searchProjects": "جستجوی پروژه ها...",
- "searchFields": "فیلدهای جستجو...",
+ "searchFields": "جستجوی فیلدها...",
"searchIcons": "نمادهای جستجو...",
"enterEmailOrUsername": "ایمیل یا نام کاربری را وارد کنید",
"enterPassword": "رمز عبور فعلی را وارد کنید",
@@ -278,14 +278,14 @@ export default {
"noData": "داده ای وجود ندارد",
"noResults": "هیچ نتیجه ای یافت نشد",
"noItemsMatch": "هیچ موردی با فیلتر مطابقت ندارد",
- "noFieldChanges": "هیچ تغییری در زمینه شناسایی نشد",
+ "noFieldChanges": "هیچ تغییری در فیلد شناسایی نشد",
"noRequirements": "هیچ الزامی پیکربندی نشده است",
"configureFilter": "برای مشاهده موارد، فیلتر را پیکربندی کنید",
"createToStart": "برای شروع {item} را ایجاد کنید"
},
"bulkActions": {
"screenRequiredTitle": "برخی موارد نیاز به فرم دارند",
- "screenRequiredAll": "هر مورد انتخاب شده قبل از اینکه بتواند جابجا شود به یک فرم نیاز دارد. در عوض آنها را یکی یکی حرکت دهید.",
+ "screenRequiredAll": "هر مورد انتخابشده پیش از جابهجایی به یک فرم نیاز دارد. در عوض آنها را یکییکی جابهجا کنید.",
"screenRequiredMessage": "{blocked} از {total} موارد انتخابی قبل از اینکه بتوانند جابجا شوند به فرم نیاز دارند. {remaining} دیگر منتقل شود؟",
"screenRequiredConfirm": "بقیه را جابجا کنید"
},
diff --git a/frontend/src/lib/locales/fa/dashboard.js b/frontend/src/lib/locales/fa/dashboard.js
index 72fe0a9df..006b9cfbd 100644
--- a/frontend/src/lib/locales/fa/dashboard.js
+++ b/frontend/src/lib/locales/fa/dashboard.js
@@ -10,7 +10,7 @@ export default {
"subtitle": "خواندن سریع در مورد آنچه نیاز به توجه شما دارد"
},
"work": {
- "title": "کار کنید",
+ "title": "کار",
"subtitle": "لیست شخصی و مواردی که به شما اختصاص داده شده است"
},
"workspaces": {
@@ -53,7 +53,7 @@ export default {
},
"watchedItems": {
"name": "موارد تماشا شده",
- "description": "مواردی که دنبال می کنید"
+ "description": "مواردی که تماشا میکنید"
},
"upcomingMilestones": {
"name": "نقاط عطف آینده",
@@ -69,21 +69,21 @@ export default {
},
"supportOverview": {
"name": "نمای کلی پشتیبانی",
- "description": "عقب ماندگی، اولین پاسخ، وضوح، و مطابقت SLA برای بلیط های مشتری"
+ "description": "بکلاگ، اولین پاسخ، زمان حل، و رعایت SLA برای بلیط های مشتری"
}
},
"customization": {
- "widgets": "ابزارک ها",
+ "widgets": "ویجتها",
"activity": {
"name": "فعالیت",
"description": "جلسات توجیهی، جریانهای فعالیت، و اعلانها"
},
"work": {
- "name": "کار کنید",
+ "name": "کار",
"description": "موارد، نقاط عطف، و چیزهایی که به شما اختصاص داده شده است"
},
"support": {
- "name": "پشتیبانی کنید",
+ "name": "پشتیبانی",
"description": "معیارهای Helpdesk برای صف های مشتریان شما"
},
"navigation": {
@@ -120,7 +120,7 @@ export default {
"loading": "در حال بارگیری...",
"aiUnavailable": "تولید هوش مصنوعی در دسترس نیست، بنابراین ویجت جدیدی نمیتوان ایجاد کرد.",
"aiUnavailableEditing": "تولید هوش مصنوعی در دسترس نیست. همچنان میتوانید نام و درخواستها را تغییر دهید.",
- "generateFailed": "نسل شکست خورد",
+ "generateFailed": "تولید ناموفق بود",
"saveFailed": "ذخیره نشد",
"loadFailed": "این ویجت بارگیری نشد",
"saving": "در حال ذخیره..."
@@ -133,7 +133,7 @@ export default {
"notConfigured": "این ویجت هنوز راه اندازی نشده است",
"noLinks": "هیچ پیوندی بین این موارد و دارایی ها وجود ندارد",
"canvasUnavailable": "این نمودار به بوم نیاز دارد که در اینجا موجود نیست",
- "renderedNodes": "ترسیم {shown} از {total} گره"
+ "renderedNodes": "نمایش {shown} از {total} گره"
},
"editor": {
"newSection": "بخش جدید",
@@ -149,7 +149,7 @@ export default {
"deleteSection": "حذف بخش",
"unknownWidgetType": "نوع ویجت ناشناخته: {type}",
"noWidgets": "هنوز ویجتی در این بخش وجود ندارد",
- "addWidgetsHint": "برای افزودن ویجت، Customize را انتخاب کنید",
+ "addWidgetsHint": "برای افزودن ویجت، سفارشیسازی را انتخاب کنید",
"noSections": "هیچ بخش پیکربندی نشده است",
"addSectionsHint": "برای افزودن بخش ها به داشبورد خود، ویرایش را انتخاب کنید"
},
@@ -158,36 +158,36 @@ export default {
"assignedEmpty": "در حال حاضر چیزی به شما اختصاص داده نشده است",
"createdLoadError": "مواردی که ایجاد کردید بارگیری نشد",
"createdEmpty": "شما هیچ مورد باز ایجاد نکرده اید",
- "storyPointsLoadError": "خلاصه نکات داستان بارگیری نشد",
- "storyPointsEmpty": "هنوز هیچ نقطه داستان باز اختصاص داده نشده است",
+ "storyPointsLoadError": "خلاصه امتیاز داستان بارگیری نشد",
+ "storyPointsEmpty": "هنوز هیچ امتیاز داستان باز اختصاص داده نشده است",
"personalTasksLoadError": "وظایف شخصی شما بارگیری نشد",
"personalTasksEmpty": "لیست کارهای شخصی شما خالی است",
"supportMetricsLoadError": "معیارهای پشتیبانی بارگیری نشد",
"supportMetricsEmpty": "هنوز بلیط مشتری در این محدوده وجود ندارد",
"supportOverviewSetupTitle": "فضاهای کاری را برای گزارش انتخاب کنید",
- "supportOverviewSetupSubtitle": "این ویجت معیارهای مرکز راهنمایی را فقط برای فضاهای کاری که انتخاب میکنید نشان میدهد.",
+ "supportOverviewSetupSubtitle": "این ویجت معیارهای میز پشتیبانی را فقط برای فضاهای کاری که انتخاب میکنید نشان میدهد.",
"supportSourcesUnavailable": "{count} از فضاهای کاری پیکربندی شده شما دیگر در دسترس نیستند",
- "supportBacklog": "عقب ماندگی",
+ "supportBacklog": "بکلاگ",
"supportUnassigned": "اختصاص داده نشده است",
"supportCreated": "ایجاد شد",
"supportResolved": "حل شد",
- "supportSlaCompliance": "SLA ملاقات کرد",
+ "supportSlaCompliance": "رعایت SLA",
"supportSlaNone": "—",
"supportFirstResponseP50": "اولین پاسخ p50",
- "supportExportCSV": "صادرات CSV",
+ "supportExportCSV": "برونریزی CSV",
"supportLiveDelayed": "بهروزرسانیهای زنده موقتاً متوقف شد",
"dailyBriefingUnavailable": "خلاصه روزانه شما در حال حاضر در دسترس نیست. متکی به یک ادغام هوش مصنوعی است. اگر به تازگی یکی را راه اندازی کرده اید، کمی بعد دوباره بررسی کنید.",
"updatedAt": "به روز شد {time}",
"priorityLabel": "اولویت: {priority}",
"noWorkspaces": "هنوز فضای کاری وجود ندارد",
"createWorkspace": "یکی ایجاد کنید",
- "workspaceAvatarAlt": "{name} آواتار",
+ "workspaceAvatarAlt": "آواتار {name}",
"visited": "بازدید از {time}",
- "noUpcomingMilestones": "هیچ نقطه عطف آینده وجود ندارد",
+ "noUpcomingMilestones": "نقطه عطف آیندهای وجود ندارد",
"milestoneProgress": "{done} از {total} انجام شد",
"daysOverdue": "{days} روز تاخیر",
"daysLeft": "{days} روز باقی مانده است",
- "watchedItemsEmpty": "شما هیچ آیتمی را تماشا نمی کنید",
+ "watchedItemsEmpty": "هیچ موردی را تماشا نمیکنید",
"workspaceWithId": "فضای کاری {id}"
}
}
diff --git a/frontend/src/lib/locales/fa/logbook.js b/frontend/src/lib/locales/fa/logbook.js
index 7fdd33654..280fe29c3 100644
--- a/frontend/src/lib/locales/fa/logbook.js
+++ b/frontend/src/lib/locales/fa/logbook.js
@@ -3,14 +3,14 @@ export default {
"title": "پایگاه دانش",
"subtitle": "اسناد، یادداشت ها و دانش تیم",
"allDocuments": "تمام اسناد",
- "createBucket": "ایجاد سطل",
+ "createBucket": "ایجاد سبد",
"uploadDocument": "بارگذاری سند",
"newNote": "یادداشت جدید",
"noDocuments": "هنوز هیچ سندی وجود ندارد",
"noDocumentsDescription": "برای شروع یک فایل آپلود کنید یا یادداشتی ایجاد کنید",
- "noDocumentsAllDescription": "هیچ سندی در سطل های قابل دسترس شما یافت نشد",
- "noBuckets": "هنوز سطل وجود ندارد",
- "noBucketsDescription": "یک سطل برای سازماندهی دانش خود ایجاد کنید",
+ "noDocumentsAllDescription": "هیچ سندی در سبد های قابل دسترس شما یافت نشد",
+ "noBuckets": "هنوز سبد وجود ندارد",
+ "noBucketsDescription": "یک سبد برای سازماندهی دانش خود ایجاد کنید",
"search": "جستجوی اسناد...",
"article": "مقاله",
"rawContent": "محتوای خام",
@@ -21,17 +21,17 @@ export default {
"saved": "سند ذخیره شد",
"uploadSuccess": "سند با موفقیت بارگذاری شد",
"noteCreated": "یادداشت با موفقیت ایجاد شد",
- "bucketCreated": "سطل با موفقیت ایجاد شد",
- "bucketUpdated": "سطل به روز شد",
- "bucketDeleted": "سطل حذف شد",
- "confirmDeleteBucket": "آیا مطمئن هستید که می خواهید این سطل را حذف کنید؟ تمام اسناد موجود در آن بایگانی می شود.",
+ "bucketCreated": "سبد با موفقیت ایجاد شد",
+ "bucketUpdated": "سبد به روز شد",
+ "bucketDeleted": "سبد حذف شد",
+ "confirmDeleteBucket": "آیا مطمئن هستید که می خواهید این سبد را حذف کنید؟ تمام اسناد موجود در آن بایگانی می شود.",
"documentArchived": "سند بایگانی شد",
"documentDeleted": "سند حذف شد",
"confirmDelete": "آیا مطمئن هستید که می خواهید این سند را حذف کنید؟",
"confirmArchiveDocument": "آیا مطمئن هستید که می خواهید این سند را بایگانی کنید؟",
"viewOriginal": "مشاهده اصل",
"delete": "حذف کنید",
- "bucketName": "نام سطل",
+ "bucketName": "نام سبد",
"bucketNamePlaceholder": "به عنوان مثال اسناد مهندسی",
"bucketDescription": "توضیحات",
"bucketDescriptionPlaceholder": "چه نوع اسنادی به اینجا تعلق دارد؟",
@@ -40,7 +40,7 @@ export default {
"noteContent": "محتوا",
"noteContentPlaceholder": "یادداشت خود را با علامت گذاری بنویسید...",
"dropzoneTitle": "فایل ها را اینجا رها کنید",
- "dropzoneDescription": "یا برای مرور کلیک کنید PDF، DOCX، PPTX، XLSX، TXT، MD، HTML و تصاویر را پشتیبانی میکند.",
+ "dropzoneDescription": "یا برای مرور کلیک کنید. از PDF، DOCX، PPTX، XLSX، TXT، MD، HTML و تصاویر پشتیبانی میکند.",
"uploading": "در حال آپلود...",
"documentTitle": "عنوان سند",
"documentTitlePlaceholder": "اختیاری - پیش فرض نام فایل است",
@@ -52,12 +52,12 @@ export default {
},
"sourceType": {
"upload": "آپلود کنید",
- "note": "توجه داشته باشید",
+ "note": "یادداشت",
"email": "ایمیل"
},
"contentType": {
"knowledge": "دانش",
- "record": "ضبط کنید",
+ "record": "سابقه",
"correspondence": "مکاتبه"
},
"mimeType": "نوع فایل",
diff --git a/frontend/src/lib/locales/fa/misc.js b/frontend/src/lib/locales/fa/misc.js
index cfb1e0924..0dc91229a 100644
--- a/frontend/src/lib/locales/fa/misc.js
+++ b/frontend/src/lib/locales/fa/misc.js
@@ -11,13 +11,13 @@ export default {
"steps": {
"connect": "اتصال",
"projects": "پروژه ها",
- "xray": "اشعه ایکس",
- "mapping": "نقشه برداری",
+ "xray": "Xray",
+ "mapping": "نگاشت",
"preview": "پیش نمایش",
- "import": "واردات"
+ "import": "درونریزی"
},
"deploymentType": {
- "cloud": "Jira ابر",
+ "cloud": "Jira Cloud",
"cloudDesc": "*.atlassian.net",
"datacenter": "مرکز داده",
"datacenterDesc": "خود میزبان"
@@ -27,8 +27,8 @@ export default {
"urlDatacenter": "نشانی Jira Data Center",
"email": "آدرس ایمیل",
"username": "نام کاربری",
- "apiToken": "API رمز",
- "personalAccessToken": "رمز دسترسی شخصی",
+ "apiToken": "توکن API",
+ "personalAccessToken": "توکن دسترسی شخصی",
"generateToken": "یک توکن تولید کنید",
"tokenHelpCloud": "از تنظیمات حساب Atlassian شما",
"tokenHelpDatacenter": "یک رمز دسترسی شخصی در تنظیمات نمایه Jira خود ایجاد کنید"
@@ -37,7 +37,7 @@ export default {
"connect": "اتصال",
"continue": "ادامه دهید",
"analyzeAndConfigure": "تجزیه و تحلیل و پیکربندی",
- "startImport": "واردات را شروع کنید",
+ "startImport": "درونریزی را شروع کنید",
"done": "انجام شد",
"back": "برگشت",
"cancel": "لغو کنید",
@@ -50,58 +50,58 @@ export default {
"messages": {
"connected": "متصل به {name}",
"selectConnection": "یک اتصال موجود را انتخاب کنید یا یک اتصال جدید ایجاد کنید",
- "credentialsHelpCloud": "اطلاعات کاربری Cloud Jira خود را وارد کنید. شما می توانید یک نشانه API را از تنظیمات حساب Atlassian خود ایجاد کنید.",
+ "credentialsHelpCloud": "اطلاعات کاربری Cloud Jira خود را وارد کنید. شما می توانید یک توکن API را از تنظیمات حساب Atlassian خود ایجاد کنید.",
"credentialsHelpDatacenter": "یک رمز دسترسی شخصی از تنظیمات نمایه مرکز داده Jira خود وارد کنید.",
- "reviewSummary": "قبل از ادامه، خلاصه واردات را مرور کنید. این عملیات ممکن است برای پروژه های بزرگ چند دقیقه طول بکشد.",
+ "reviewSummary": "قبل از ادامه، خلاصه درونریزی را مرور کنید. این عملیات ممکن است برای پروژه های بزرگ چند دقیقه طول بکشد.",
"noAttachments": "پیوست ها وارد نمی شوند",
- "noAttachmentsDesc": "هیچ ذخیره سازی پیوستی پیکربندی نشده است. هنگام راهاندازی سرور، پارامتر --attachment-path را برای فعال کردن واردات پیوست تنظیم کنید."
+ "noAttachmentsDesc": "هیچ ذخیره سازی پیوستی پیکربندی نشده است. هنگام راهاندازی سرور، پارامتر --attachment-path را برای فعال کردن درونریزی پیوست تنظیم کنید."
},
"projects": {
"selected": "انتخاب پروژهها برای وارد کردن ({selected} از {total} انتخاب شده)",
"openIssuesOnly": "فقط مسائل باز را وارد کنید",
- "openIssuesOnlyDesc": "مشکلات مربوط به دسته وضعیت \"انجام شد\" را شامل نمی شود",
+ "openIssuesOnlyDesc": "مسائل مربوط به دسته وضعیت «انجام شد» را شامل نمیشود",
"teamManaged": "تیمی",
- "issues": "{count} مشکلات"
+ "issues": "{count} مسئله"
},
"mapping": {
"workspaces": "فضاهای کاری",
"workspacesDesc": "هر پروژه Jira به یک فضای کاری جدید یا موجود Windshift وارد می شود",
"createNewWorkspace": "یک فضای کاری جدید ایجاد کنید",
"issueTypes": "انواع مسئله",
- "issueTypesDesc": "هر نوع شماره Jira را روی یک نوع مورد جدید یا موجود Windshift ترسیم کنید",
+ "issueTypesDesc": "هر نوع مسئله Jira را به یک نوع مورد جدید یا موجود Windshift نگاشت کنید",
"createNewItemType": "یک نوع مورد جدید ایجاد کنید",
"statuses": "وضعیت ها",
- "statusesDesc": "هر وضعیت Jira را روی وضعیت Windshift جدید یا موجود ترسیم کنید",
+ "statusesDesc": "هر وضعیت Jira را به وضعیت Windshift جدید یا موجود نگاشت کنید",
"createNewStatus": "یک وضعیت جدید ایجاد کنید",
"customFields": "فیلدهای سفارشی",
- "customFieldsDesc": "ایجاد کنید، روی یک فیلد موجود نقشه برداری کنید، یا از هر فیلد سفارشی Jira رد شوید",
+ "customFieldsDesc": "ایجاد کنید، روی یک فیلد موجود نگاشت کنید، یا از هر فیلد سفارشی Jira رد شوید",
"versions": "نسخه ها / نقاط عطف",
"versionsDesc": "نسخههای Jira بهعنوان نقاط عطف فضای کاری وارد خواهند شد.",
"subtask": "وظیفه فرعی",
"create": "ایجاد کنید",
- "skip": "پرش کنید"
+ "skip": "رد کردن"
},
"preview": {
"workspaces": "فضاهای کاری",
"workItems": "اقلام کار",
"statuses": "وضعیت ها",
- "itemTypes": "انواع آیتم ها",
+ "itemTypes": "انواع موارد",
"customFields": "فیلدهای سفارشی",
"milestones": "نقاط عطف",
"users": "کاربران",
"usersNew": "({count} جدید)",
"assets": "دارایی ها",
- "projectsToImport": "پروژه های وارداتی"
+ "projectsToImport": "پروژه های درونریزیشده"
},
"import": {
- "importing": "واردات...",
- "starting": "شروع واردات...",
- "complete": "واردات کامل شد!",
- "completeWithErrors": "واردات با خطا تکمیل شد",
+ "importing": "درونریزی...",
+ "starting": "شروع درونریزی...",
+ "complete": "درونریزی کامل شد!",
+ "completeWithErrors": "درونریزی با خطا تکمیل شد",
"success": "{count} مورد با موفقیت وارد شد.",
"failed": "{count} مورد وارد نشد.",
- "ready": "آماده واردات",
- "readyDesc": "برای شروع وارد کردن موارد {count} روی «شروع واردات» کلیک کنید.",
+ "ready": "آماده درونریزی",
+ "readyDesc": "برای شروع وارد کردن موارد {count} روی «شروع درونریزی» کلیک کنید.",
"progress": "پیشرفت"
},
"errors": {
@@ -114,15 +114,15 @@ export default {
}
},
"itemTypes": {
- "title": "انواع آیتم ها",
- "subtitle": "پیکربندی انواع آیتم ها و خواص آنها",
+ "title": "انواع موارد",
+ "subtitle": "پیکربندی انواع موارد و خواص آنها",
"itemType": "نوع مورد",
"itemTypes_one": "{count} نوع مورد",
- "itemTypes_other": "{count} انواع مورد",
+ "itemTypes_other": "{count} نوع مورد",
"createItemType": "ایجاد نوع مورد",
"editItemType": "نوع مورد را ویرایش کنید",
"deleteItemType": "حذف نوع مورد",
- "typeName": "نام را تایپ کنید",
+ "typeName": "نام نوع",
"noItemTypes": "هیچ نوع موردی یافت نشد",
"itemTypeCreated": "نوع مورد با موفقیت ایجاد شد",
"itemTypeUpdated": "نوع مورد با موفقیت به روز شد",
@@ -132,18 +132,18 @@ export default {
"title": "فیلدهای سفارشی",
"requestFormFields": "فیلدهای فرم درخواست",
"subtitle": "فیلدهای سفارشی را برای اقلام خود تعریف کنید",
- "field": "میدان",
+ "field": "فیلد",
"fields_one": "فیلد {count}",
- "fields_other": "{count} فیلدها",
+ "fields_other": "{count} فیلد",
"createField": "ایجاد فیلد",
- "editField": "فیلد ویرایش",
+ "editField": "ویرایش فیلد",
"deleteField": "حذف فیلد",
- "returnToBoard": "بازگشت به فیلدهای تابلو",
+ "returnToBoard": "بازگشت به فیلدهای برد",
"fieldName": "نام فیلد",
"fieldType": "نوع فیلد",
"fieldDescription": "توضیحات",
"defaultValue": "مقدار پیش فرض",
- "placeholder": "جای جای",
+ "placeholder": "جاینگهدار",
"helpText": "متن راهنما",
"noFields": "هیچ فیلدی پیدا نشد",
"fieldCreated": "فیلد با موفقیت ایجاد شد",
@@ -161,11 +161,11 @@ export default {
"checkbox": "چک باکس",
"user": "کاربر",
"url": "URL",
- "milestoneHint": "فیلدهای Milestone به طور خودکار به نقاط عطف سیستم اشاره می کنند. هنگام پر کردن این فیلد، کاربران می توانند از نقاط عطف موجود انتخاب کنند.",
+ "milestoneHint": "فیلدهای نقطه عطف بهطور خودکار به نقاط عطف سیستم اشاره میکنند. هنگام پر کردن این فیلد، کاربران میتوانند از نقاط عطف موجود انتخاب کنند.",
"dateHint": "فیلدهای تاریخ به کاربران امکان می دهد با استفاده از انتخابگر تاریخ، تاریخ ها را انتخاب کنند. مقادیر در قالب YYYY-MM-DD ذخیره می شوند.",
- "assetHint": "فیلدهای دارایی به کاربران امکان می دهد دارایی ها را از یک مجموعه دارایی مشخص انتخاب کنند. شما می توانید به صورت اختیاری دارایی های موجود را با استفاده از یک پرس و جو QL فیلتر کنید.",
- "portalCustomerHint": "فیلدهای مشتری پورتال به مشتریان پورتال مراجعه می کنند. با ()currentCustomer در گزارشهای دارایی برای فیلتر کردن توسط مشتری پورتال وارد شده استفاده کنید.",
- "customerOrganisationHint": "فیلدهای سازمان مشتری به سازمان های مشتری اشاره دارد. با ()currentOrganisation در گزارشهای دارایی برای فیلتر کردن توسط سازمان مشتری استفاده کنید.",
+ "assetHint": "فیلدهای دارایی به کاربران امکان میدهند داراییها را از یک مجموعه دارایی مشخص انتخاب کنند. میتوانید بهصورت اختیاری داراییهای موجود را با یک پرسوجوی QL فیلتر کنید.",
+ "portalCustomerHint": "فیلدهای مشتری پورتال به مشتریان پورتال اشاره میکنند. در گزارشهای دارایی از currentCustomer() برای فیلتر بر اساس مشتری پورتال واردشده استفاده کنید.",
+ "customerOrganisationHint": "فیلدهای سازمان مشتری به سازمانهای مشتری اشاره میکنند. در گزارشهای دارایی از currentOrganisation() برای فیلتر بر اساس سازمان مشتری استفاده کنید.",
"usedIn": "استفاده شده در",
"portalCustomers": "مشتریان پورتال",
"customerOrganisations": "سازمان های مشتری"
@@ -202,7 +202,7 @@ export default {
"subtitle": "پروژه های خود را مدیریت کنید",
"project": "پروژه",
"projects_one": "پروژه {count}",
- "projects_other": "{count} پروژه ها",
+ "projects_other": "{count} پروژه",
"createProject": "ایجاد پروژه",
"editProject": "ویرایش پروژه",
"deleteProject": "حذف پروژه",
@@ -228,7 +228,7 @@ export default {
"startIteration": "تکرار را شروع کنید",
"completeIteration": "تکرار کامل",
"start": "شروع کنید",
- "noIterations": "هیچ تکراری یافت نشد",
+ "noIterations": "هیچ تکرار موردی یافت نشد",
"allTypes": "همه انواع",
"manageTypes": "مدیریت انواع",
"backToIterations": "بازگشت به تکرار",
@@ -265,10 +265,10 @@ export default {
"dateRange": "محدوده تاریخ",
"startDate": "تاریخ شروع",
"endDate": "تاریخ پایان",
- "burndownChart": "نمودار سوختگی",
- "idealProgress": "ایده آل",
- "ideal": "ایده آل",
- "noBurndownData": "هیچ داده سوختگی موجود نیست",
+ "burndownChart": "نمودار برنداون",
+ "idealProgress": "مطلوب",
+ "ideal": "مطلوب",
+ "noBurndownData": "داده برنداونی موجود نیست",
"noItems": "هیچ موردی وجود ندارد",
"summary": "خلاصه",
"totalItems": "مجموع اقلام",
@@ -300,17 +300,17 @@ export default {
"itemsDone": "{count} مورد انجام شد",
"itemsIncomplete": "{count} ناقص است",
"allItemsDone": "همه موارد انجام شده است!",
- "moveToBacklog": "به عقب ماندگی بروید",
+ "moveToBacklog": "انتقال به بکلاگ",
"moveToIteration": "به تکرار دیگری بروید",
"incompleteItemsAction": "موارد ناقص:"
},
"milestones": {
"title": "نقاط عطف",
"milestone": "نقطه عطف",
- "subtitle": "انتشار و ضرب الاجل را دنبال کنید",
- "addMilestone": "Milestone را اضافه کنید",
+ "subtitle": "انتشارها و مهلتها را دنبال کنید",
+ "addMilestone": "افزودن نقطه عطف",
"noMilestones": "هنوز هیچ نقطه عطفی وجود ندارد",
- "noMilestonesDescription": "اولین نقطه عطف خود را برای ردیابی نسخه ها و ضرب الاجل ها ایجاد کنید.",
+ "noMilestonesDescription": "اولین نقطه عطف خود را برای ردیابی نسخه ها و مهلتها ایجاد کنید.",
"noMilestonesInCategory": "هیچ نقطه عطفی در این دسته وجود ندارد",
"allCategories": "همه دسته ها",
"manageCategories": "مدیریت دسته ها",
@@ -354,11 +354,11 @@ export default {
"switchTo": "تغییر به {scope}",
"workspace": "فضای کار",
"selectWorkspace": "فضای کاری را انتخاب کنید",
- "manageMilestoneCategories": "دستههای Milestone را مدیریت کنید",
- "hideCompleted": "پنهان کردن کامل شد",
+ "manageMilestoneCategories": "دستههای نقطه عطف را مدیریت کنید",
+ "hideCompleted": "پنهان کردن تکمیلشدهها",
"hideCompletedHelp": "نقاط عطف تکمیل شده را از لیست پنهان کنید",
"noVisibleMilestones": "هیچ نقطه عطف قابل مشاهده ای وجود ندارد",
- "dragToReorder": "برای سفارش مجدد بکشید",
+ "dragToReorder": "برای جابهجایی بکشید",
"searchMilestones": "نقاط عطف جستجو...",
"allWorkspaces": "تمام فضاهای کاری",
"workspaceFilterCount": "فضاهای کاری: {count}",
@@ -378,8 +378,8 @@ export default {
"changedDescription": "توضیحات را تغییر داد",
"changedStatus": "وضعیت را از {from} به {to} تغییر داد",
"changedTargetDate": "تاریخ هدف را از {from} به {to} تغییر داد",
- "linkedPage": "صفحه را لینک کرد",
- "unlinkedPage": "صفحه را لغو لینک کرد",
+ "linkedPage": "صفحه را پیوند کرد",
+ "unlinkedPage": "پیوند صفحه را لغو کرد",
"commentedOn": "نظر داد",
"changedItemStatus": "تغییر وضعیت داد",
"fromTo": "از {from} تا {to}",
@@ -395,17 +395,17 @@ export default {
"columnTests": "تست ها",
"columnCreated": "ایجاد شد",
"columnUpdated": "به روز شد",
- "visibleCount": "{count} نقاط عطف",
+ "visibleCount": "{count} نقطه عطف",
"visibleCount_one": "{count} نقطه عطف",
"visibleCount_other": "{count} نقاط عطف",
- "visibleInCategory": "{count} نقاط عطف در این دسته",
+ "visibleInCategory": "{count} نقطه عطف در این دسته",
"visibleInCategory_one": "{count} نقطه عطف در این دسته",
"visibleInCategory_other": "{count} نقاط عطف در این دسته"
},
"assets": {
"title": "مدیریت دارایی",
"subtitle": "مجموعهها، انواع، دستهها و داراییها را مدیریت کنید",
- "selectAssetSet": "Asset Set را انتخاب کنید",
+ "selectAssetSet": "مجموعه دارایی را انتخاب کنید",
"newSet": "مجموعه جدید",
"createAssetSet": "ایجاد مجموعه دارایی",
"editSet": "ویرایش مجموعه",
@@ -426,7 +426,7 @@ export default {
"automations": "اتوماسیون ها",
"newType": "نوع جدید",
"createType": "نوع ایجاد کنید",
- "editType": "نوع ویرایش",
+ "editType": "ویرایش نوع",
"noAssetTypes": "بدون انواع دارایی",
"noAssetTypesDesc": "انواع دارایی را برای دسته بندی دارایی های خود ایجاد کنید.",
"assetType": "نوع دارایی",
@@ -439,10 +439,10 @@ export default {
"noParent": "بدون والد (سطح ریشه)",
"assignRole": "تعیین نقش",
"everyoneRole": "نقش همه",
- "everyoneRoleDesc": "نقش پیش فرض برای همه کاربران. تکالیف فردی این را نادیده می گیرد.",
+ "everyoneRoleDesc": "نقش پیشفرض برای همه کاربران. تخصیصهای فردی این را نادیده میگیرد.",
"noRoleAssignments": "بدون انتساب نقش",
"noRoleAssignmentsDesc": "تخصیص نقش را برای کنترل افرادی که می توانند به این مجموعه دارایی دسترسی داشته باشند اضافه کنید.",
- "assignee": "مأمور",
+ "assignee": "مسئول",
"role": "نقش",
"failedToDownload": "فایل دانلود نشد",
"hideFromCustomer": "از مشتری پنهان شود",
@@ -451,7 +451,7 @@ export default {
"untitledDiagram": "نمودار بدون عنوان",
"diagram": "نمودار",
"uploadedBy": "آپلود شده توسط {name}",
- "zoomOut": "بزرگنمایی (-)",
+ "zoomOut": "کوچکنمایی (-)",
"zoomIn": "بزرگنمایی (+)",
"rotate": "چرخش (R)",
"fitToScreen": "متناسب با صفحه (F)",
@@ -459,7 +459,7 @@ export default {
"shortcutDrag": "کشیدن: حرکت",
"shortcutRotate": "R: چرخش",
"shortcutFit": "F: مناسب",
- "shortcutReset": "0: تنظیم مجدد",
+ "shortcutReset": "0: بازنشانی",
"shortcutClose": "Esc: بستن"
},
"personal": {
@@ -504,7 +504,7 @@ export default {
"placeholderAccomplishments": "دستاوردهای کلیدی خود را شرح دهید ...",
"placeholderWentWell": "چه چیزی خوب شد و چرا ...",
"placeholderImprovements": "زمینه های بهبود و گام های بعدی ...",
- "startWriting": "شروع به نوشتن بازتاب خود کن..."
+ "startWriting": "شروع به نوشتن بازتاب خود کنید..."
},
"connections": {
"title": "اتصالات",
@@ -552,8 +552,8 @@ export default {
"noMigrationRequired": "بدون نیاز به مهاجرت",
"allItemsCompatible": "همه موارد ({count}) با پیکربندی جدید سازگار هستند.",
"migrationRequired": "مهاجرت مورد نیاز است",
- "itemsNeedMigration": "{count} مورد نیاز به انتقال دارد. لطفا نقشه های زیر را بررسی کنید.",
- "itemTypes": "انواع آیتم ها",
+ "itemsNeedMigration": "{count} مورد نیازمند انتقال است. لطفاً نگاشتهای زیر را بررسی کنید.",
+ "itemTypes": "انواع موارد",
"fields": "فیلدها",
"status": "وضعیت",
"priority": "اولویت",
@@ -563,7 +563,7 @@ export default {
"priorityMigrations": "مهاجرت های اولویت دار",
"noItemsToMigrate": "هیچ موردی برای مهاجرت وجود ندارد.",
"noStatusChanges": "هیچ تغییر وضعیتی شناسایی نشد.",
- "noFieldChanges": "هیچ تغییری در زمینه شناسایی نشد.",
+ "noFieldChanges": "هیچ تغییری در فیلد شناسایی نشد.",
"selectTargetType": "انتخاب نوع هدف...",
"selectTargetStatus": "انتخاب وضعیت هدف...",
"selectTargetPriority": "اولویت هدف را انتخاب کنید...",
@@ -572,7 +572,7 @@ export default {
"item": "مورد",
"items": "موارد",
"kept": "نگهداری می شود",
- "values": "ارزش ها",
+ "values": "مقادیر",
"hiddenDataPreserved": "پنهان (داده ها حفظ می شوند)",
"newRequiredField": "فیلد الزامی جدید",
"enterDefaultValue": "مقدار پیش فرض را وارد کنید...",
@@ -612,7 +612,7 @@ export default {
"whatsNextCreateWorkspace": "اولین فضای کاری خود را ایجاد کنید",
"whatsNextSetupWorkflows": "گردش کار و صفحه نمایش را تنظیم کنید",
"whatsNextInviteTeam": "اعضای تیم را دعوت کنید",
- "whatsNextStartCreating": "شروع به ایجاد آیتم های کاری کنید",
+ "whatsNextStartCreating": "شروع به ایجاد مواردی کاری کنید",
"back": "برگشت",
"next": "بعدی",
"completeSetup": "راه اندازی کامل",
@@ -621,7 +621,7 @@ export default {
"passwordsMustMatch": "گذرواژه ها مطابقت ندارند",
"invalidEmail": "لطفا یک آدرس ایمیل معتبر وارد کنید",
"setupError": "در حین راه اندازی خطایی روی داد. لطفا دوباره امتحان کنید.",
- "goBackEsc": "Go برگشت (Esc)",
+ "goBackEsc": "برگشت (Esc)",
"continueNextStepEnter": "ادامه به مرحله بعدی (Enter)",
"completeSetupEnter": "راه اندازی کامل (Enter)"
},
@@ -635,9 +635,9 @@ export default {
"inProgress": "در حال انجام است",
"completed": "تکمیل شد",
"cancelled": "لغو شد",
- "newChildItem": "آیتم کودک جدید",
+ "newChildItem": "مورد فرزند جدید",
"new": "جدید",
- "issueTitle": "عنوان موضوع",
+ "issueTitle": "عنوان مسئله",
"milestoneName": "نام نقطه عطف",
"workspaceName": "نام {type}",
"workspaceKeyPlaceholder": "کلید فضای کاری (به عنوان مثال، PROJ، TEAM)",
@@ -652,12 +652,12 @@ export default {
"workspacePackTemplate": "بسته توکار",
"workspacePackMeta": "v{version} · مجموعه پیکربندی + محتوا",
"workspacePackError": "بسته های داخلی بارگیری نشد",
- "type": "تایپ کنید",
+ "type": "نوع",
"template": "الگو",
"priority": "اولویت",
"noPriority": "بدون اولویت",
- "assignee": "مأمور",
- "unassigned": "واگذار نشده است",
+ "assignee": "مسئول",
+ "unassigned": "اختصاص داده نشده است",
"dueDate": "سررسید",
"milestoneField": "نقطه عطف",
"noMilestone": "بدون نقطه عطف",
@@ -666,49 +666,49 @@ export default {
"status": "وضعیت",
"category": "دسته بندی",
"noCategory": "بدون دسته",
- "parent": "پدر و مادر",
+ "parent": "والد",
"fillRequiredFields": "لطفا فیلدهای الزامی را پر کنید:",
"selectWorkspaceFirst": "ابتدا یک فضای کاری را انتخاب کنید",
- "createdPartialError": "مورد ایجاد شد، اما تکمیل آن ناموفق بود: {error}. دوباره ایجاد را فشار دهید تا دوباره امتحان کنید.",
+ "createdPartialError": "مورد ایجاد شد، اما تکمیل آن ناموفق بود: {error}. برای تلاش مجدد، دوباره ایجاد را بزنید.",
"create": "ایجاد کنید"
},
"scm": {
- "createBranch": "ایجاد شعبه",
- "createBranchFor": "ایجاد یک شعبه جدید برای {itemKey}",
+ "createBranch": "ایجاد شاخه",
+ "createBranchFor": "ایجاد یک شاخه جدید برای {itemKey}",
"repository": "مخزن",
"selectRepository": "انتخاب یک مخزن...",
- "branchName": "نام شعبه",
- "baseBranch": "شعبه پایه",
- "baseBranchHelp": "شاخه ای برای ایجاد از. به طور پیش فرض به شعبه پیش فرض مخزن می رسد.",
+ "branchName": "نام شاخه",
+ "baseBranch": "شاخه پایه",
+ "baseBranchHelp": "شاخهای که از آن ایجاد میشود. بهطور پیشفرض شاخه پیشفرض مخزن است.",
"creating": "ایجاد...",
- "branchCreatedSuccess": "شعبه با موفقیت ایجاد شد",
+ "branchCreatedSuccess": "شاخه با موفقیت ایجاد شد",
"noReposLinked": "هیچ مخزن مرتبط با این فضای کاری وجود ندارد",
"linkReposHelp": "پیوند مخازن در تنظیمات فضای کاری → کنترل منبع",
"fillAllRequired": "لطفا تمام فیلدهای الزامی را پر کنید",
"failedToLoadRepos": "بارگیری مخازن انجام نشد",
- "failedToCreateBranch": "شعبه ایجاد نشد",
+ "failedToCreateBranch": "شاخه ایجاد نشد",
"createPullRequest": "درخواست کشش ایجاد کنید",
"createMergeRequest": "ایجاد درخواست ادغام",
- "createPRFrom": "ایجاد روابط عمومی از شعبه: {branch}",
- "prTitle": "عنوان روابط عمومی",
+ "createPRFrom": "ایجاد درخواست کشش از شاخه: {branch}",
+ "prTitle": "عنوان درخواست کشش",
"description": "توضیحات",
- "baseBranchPR": "شعبه پایه",
+ "baseBranchPR": "شاخه پایه",
"baseBranchPRHelp": "برای استفاده از شاخه پیش فرض مخزن، خالی بگذارید.",
- "createPR": "روابط عمومی ایجاد کنید",
+ "createPR": "درخواست کشش ایجاد کنید",
"prCreatedSuccess": "درخواست کشش شماره {prNumber} با موفقیت ایجاد شد",
"mrCreatedSuccess": "درخواست ادغام !{prNumber} با موفقیت ایجاد شد",
"failedToCreatePR": "درخواست کشش ایجاد نشد",
- "noBranchLink": "پیوند شعبه ای ارائه نشده است",
- "linkDevResource": "منبع توسعه لینک",
- "linkDevResourceDesc": "یک PR، شعبه یا تعهد را به این مورد متصل کنید",
- "type": "تایپ کنید",
- "pr": "روابط عمومی",
- "branch": "شعبه",
- "commit": "متعهد شوید",
- "prNumber": "شماره روابط عمومی",
- "commitSha": "تعهد SHA",
+ "noBranchLink": "پیوند شاخه ای ارائه نشده است",
+ "linkDevResource": "پیوند منبع توسعه",
+ "linkDevResourceDesc": "یک درخواست کشش، شاخه یا کامیت را به این مورد متصل کنید",
+ "type": "نوع",
+ "pr": "درخواست کشش",
+ "branch": "شاخه",
+ "commit": "کامیت",
+ "prNumber": "شماره درخواست کشش",
+ "commitSha": "کامیت SHA",
"titleOptional": "عنوان (اختیاری)",
- "linkResource": "منبع پیوند",
+ "linkResource": "پیوند منبع",
"linking": "پیوند دادن...",
"failedToCreateLink": "پیوند ایجاد نشد",
"development": "توسعه",
@@ -718,21 +718,21 @@ export default {
"confirmRemoveLink": "آیا مطمئن هستید که می خواهید این پیوند را حذف کنید؟",
"noRepositoriesLinked": "هیچ مخزن به این فضای کاری مرتبط نیست",
"connectYourAccount": "حساب {provider} خود را وصل کنید",
- "connectToCreate": "برای ایجاد شاخهها و کشیدن درخواستها مستقیماً از موارد کاری متصل شوید.",
+ "connectToCreate": "برای ایجاد شاخهها و درخواستهای کشش مستقیماً از موارد کاری متصل شوید.",
"connect": "اتصال {provider}",
"noLinksYet": "هنوز لینک توسعه وجود ندارد",
- "pullRequests": "درخواست ها را بکشید",
+ "pullRequests": "درخواستهای کشش",
"mergeRequests": "درخواست های ادغام",
"branches": "شاخه ها",
- "commits": "متعهد می شود",
- "smartCommitsTitle": "تعهدات هوشمند را پردازش کنید",
- "smartCommitsDescription": "هنگام ادغام، دستورات \"#comment…\" و \"#\" موجود در بدنه درخواست pull و پیامهای commit آن را اعمال کنید.",
- "smartCommitsWarningTitle": "ایمیل های committer تایید نشده پذیرفته می شوند",
- "smartCommitsWarningBody": "اقدامات Smart-commit تحت هویت مطابق با ایمیل git committer اجرا می شوند. Git این فیلد را احراز هویت نمی کند. یک مشارکت کننده می تواند آن را روی هر مقداری تنظیم کند. فقط برای مخازنی که به هر ادغام اعتماد دارید فعال کنید.",
- "smartCommitsUpdateFailed": "تنظیمات commits هوشمند بهروزرسانی نشد"
+ "commits": "کامیتها",
+ "smartCommitsTitle": "کامیتهای هوشمند را پردازش کنید",
+ "smartCommitsDescription": "هنگام ادغام، دستورات \"#comment…\" و \"#\" موجود در بدنه درخواست کشش و پیامهای کامیت آن را اعمال کنید.",
+ "smartCommitsWarningTitle": "ایمیلهای committer تأییدنشده پذیرفته میشوند",
+ "smartCommitsWarningBody": "اقدامات کامیت هوشمند با هویت مطابق ایمیل committer گیت اجرا میشوند. گیت این فیلد را احراز هویت نمیکند و یک مشارکتکننده میتواند آن را روی هر مقداری تنظیم کند. فقط برای مخازنی که به هر ادغام آنها اعتماد دارید فعال کنید.",
+ "smartCommitsUpdateFailed": "تنظیمات کامیتهای هوشمند بهروزرسانی نشد"
},
"organization": {
- "editOrganization": "سازمان ویرایش",
+ "editOrganization": "ویرایش سازمان",
"newOrganization": "سازمان جدید",
"organizationName": "نام سازمان",
"email": "ایمیل",
@@ -768,19 +768,19 @@ export default {
"failedToSearch": "جستجوی صفحات انجام نشد",
"refreshed": "پیوند به روز شد",
"linked": "صفحه پیوند داده شد",
- "removed": "لینک حذف شد",
+ "removed": "پیوند حذف شد",
"disconnected": "ادغام قطع شد",
"providerManager": "ارائه دهندگان یکپارچه سازی",
"providerManagerDesc": "ارائه دهندگان ادغام خارجی را پیکربندی کنید",
"addProvider": "ارائه دهنده را اضافه کنید",
"editProvider": "ویرایش ارائه دهنده",
"providerType": "نوع ارائه دهنده",
- "oauthClientId": "OAuth مشتری ID",
- "oauthClientSecret": "OAuth راز مشتری",
- "callbackUrl": "پاسخ به تماس URL",
+ "oauthClientId": "شناسه مشتری OAuth",
+ "oauthClientSecret": "راز مشتری OAuth",
+ "callbackUrl": "URL کالبک",
"callbackUrlHint": "این URL را در تنظیمات برنامه ادغام خود کپی کنید",
"providerConfig": "پیکربندی ارائه دهنده (JSON)",
- "notion": "مفهوم",
+ "notion": "Notion",
"noProviders": "هیچ ارائه دهنده یکپارچه سازی پیکربندی نشده است",
"selectProvider": "ارائه دهنده را انتخاب کنید",
"page": "صفحه",
@@ -788,7 +788,7 @@ export default {
},
"supportQueue": {
"title": "صف",
- "description": "تریاژ تعیین نشده، انتظار و بلیت های معوقه",
+ "description": "تریاژ تخصیصنیافته، در انتظار و بلیتهای بکلاگ",
"loading": "در حال بارگیری صفها…",
"loadFailed": "بارگیری صف های پشتیبانی انجام نشد",
"empty": "هیچ بلیطی در این صف وجود ندارد",
@@ -798,9 +798,9 @@ export default {
"bulkBar": "{n} انتخاب شد",
"bulkAssignMe": "به من اختصاص دهید",
"bulkAssignTeam": "به تیم اختصاص دهید",
- "bulkApplyTeam": "درخواست کنید",
+ "bulkApplyTeam": "اعمال",
"bulkTransition": "وضعیت را تنظیم کنید",
- "bulkApplyStatus": "درخواست کنید",
+ "bulkApplyStatus": "اعمال",
"bulkDelete": "حذف کنید",
"bulkDeleteConfirm": "{n} بلیطهای انتخابی حذف شود؟",
"bulkDeleteSuccess": "بلیطهای {n} حذف شد",
@@ -834,7 +834,7 @@ export default {
"title": "صفحه انتقال",
"moveTo": "انتقال به {status}",
"comment": "نظر دهید",
- "commentPlaceholder": "اضافه کردن نظر (اختیاری)",
+ "commentPlaceholder": "افزودن نظر (اختیاری)",
"confirm": "حرکت کنید",
"failed": "انتقال کامل نشد.",
"missingFields": "برای ادامه، فیلدهای لازم را پر کنید:"
diff --git a/frontend/src/lib/locales/fa/mobile.js b/frontend/src/lib/locales/fa/mobile.js
index c19fe4828..481fb07ea 100644
--- a/frontend/src/lib/locales/fa/mobile.js
+++ b/frontend/src/lib/locales/fa/mobile.js
@@ -3,7 +3,7 @@ export default {
"common": {
"loadFailed": "بارگیری نشد.",
"empty": "اینجا هنوز چیزی نیست",
- "noMatches": "هیچ مسابقه ای وجود ندارد.",
+ "noMatches": "نتیجهای یافت نشد.",
"noOptions": "هیچ گزینه ای در دسترس نیست.",
"unread": "خوانده نشده",
"saving": "در حال ذخیره…",
@@ -23,11 +23,11 @@ export default {
},
"myWork": {
"title": "کار من",
- "watched": "تماشا کرد",
+ "watched": "تماشاشده",
"recent": "اخیر",
"loadFailed": "کار شما بارگیری نشد.",
"noAssigned": "در حال حاضر چیزی به شما اختصاص داده نشده است.",
- "noWatched": "شما هیچ آیتمی را تماشا نمی کنید.",
+ "noWatched": "هیچ موردی را تماشا نمیکنید.",
"noRecent": "هیچ فعالیت اخیری وجود ندارد."
},
"personal": {
@@ -53,10 +53,10 @@ export default {
"blocked": "اعلان ها مسدود شده است. آنها را برای Windshift در تنظیمات دستگاه خود فعال کنید.",
"enabled": "اعلان ها روشن است",
"enable": "اعلان ها را فعال کنید",
- "caughtUp": "همه شما گرفتار شده اید"
+ "caughtUp": "همه را خواندهاید"
},
"timer": {
- "running": "در حال دویدن",
+ "running": "در حال اجرا",
"stop": "توقف کنید",
"idle": "بدون تایمر",
"startHelp": "یکی را از صفحه جزئیات یک مورد کاری شروع کنید.",
@@ -84,7 +84,7 @@ export default {
"cancelEditing": "لغو ویرایش",
"pageTitle": "عنوان صفحه",
"contentLabel": "محتوای صفحه (Markdown)",
- "ancestors": "صفحات اجدادی",
+ "ancestors": "صفحات والد",
"empty": "این صفحه خالی است",
"children": "صفحات فرعی"
},
@@ -100,14 +100,14 @@ export default {
"keepEditing": "به ویرایش ادامه دهید",
"assigneesFailed": "مسئولین بارگیری نشدند.",
"deleted": "این مورد حذف شد.",
- "parents": "موارد والدین",
+ "parents": "موارد والد",
"editTitleDescription": "عنوان و توضیحات را ویرایش کنید",
"linkedCount": "{count} پیوند داده شد",
- "watching": "تماشا کردن",
+ "watching": "در حال تماشا",
"watch": "تماشا کنید",
"children": "موارد فرعی",
"addChild": "افزودن مورد فرعی",
- "commitsPullRequests": "درخواستها را متعهد میکند و میکشد",
+ "commitsPullRequests": "کامیتها و درخواستهای کشش",
"codingAgent": "عامل کدنویسی",
"noStatuses": "گزینه وضعیت وجود ندارد",
"noAssignees": "کاربران قابل تخصیص وجود ندارد"
@@ -115,14 +115,14 @@ export default {
"create": {
"action": "مورد ایجاد کنید",
"personal": "وظیفه شخصی جدید",
- "child": "زیرمجموعه جدید",
+ "child": "زیرمورد جدید",
"item": "مورد جدید",
"requiredField": "{field} مورد نیاز است.",
- "invalidStoryPoints": "نقاط داستان باید یک عدد معتبر باشد.",
+ "invalidStoryPoints": "امتیاز داستان باید یک عدد معتبر باشد.",
"invalidEstimate": "تخمین باید یک مدت زمان معتبر باشد.",
"customField": "فیلد سفارشی",
"failed": "مورد ایجاد نشد.",
- "loadingParent": "در حال بارگیری والدین…",
+ "loadingParent": "در حال بارگیری والد…",
"parentFailed": "مورد والد بارگیری نشد.",
"under": "زیر",
"taskTitle": "عنوان وظیفه",
@@ -140,7 +140,7 @@ export default {
"palette": {
"title": "پالت فرمان",
"close": "پالت فرمان را ببندید",
- "placeholder": "دستورات جستجو، آیتم ها، صفحات…",
+ "placeholder": "جستجوی دستورات، موارد، صفحات…",
"help": "برای جستجو تایپ کنید یا مقصدی را انتخاب کنید.",
"item": "مورد",
"tools": "ابزار",
diff --git a/frontend/src/lib/locales/fa/navigation.js b/frontend/src/lib/locales/fa/navigation.js
index 5473a97bd..3a48ba718 100644
--- a/frontend/src/lib/locales/fa/navigation.js
+++ b/frontend/src/lib/locales/fa/navigation.js
@@ -15,13 +15,13 @@ export default {
"aiChat": "چت هوش مصنوعی",
"terminal": "ترمینال",
"admin": "مدیر",
- "delegatedAdmin": "ادمین تفویض شده",
+ "delegatedAdmin": "مدیر تفویضشده",
"delegatedAdminSubtitle": "مناطق اختصاص داده شده به شما را مدیریت کنید",
"delegatedAdminUnauthorized": "شما به هیچ یک از مناطق مدیریت واگذار شده دسترسی ندارید.",
"notifications": "اطلاعیه ها",
"profile": "نمایه",
"expand": "گسترش دهید",
- "collapse": "فرو ریختن",
+ "collapse": "جمع کردن",
"manageWorkspaces": "مدیریت فضاهای کاری",
"manageWorkspacesSubtitle": "فضاهای کاری را ایجاد، ویرایش و سازماندهی کنید",
"searchWorkspaces": "جستجو در فضاهای کاری...",
@@ -77,7 +77,7 @@ export default {
},
"collections": {
"label": "مجموعه ها",
- "description": "مجموعهها و نماهای آیتمهای کاری را مدیریت کنید"
+ "description": "مجموعهها و نماهای موردهای کاری را مدیریت کنید"
},
"adminPanel": {
"label": "پنل مدیریت",
@@ -136,7 +136,7 @@ export default {
"description": "پروژه های ردیابی زمان را مدیریت کنید"
},
"logTime": {
- "label": "زمان ثبت نام",
+ "label": "ثبت زمان",
"description": "به سرعت یک ورودی زمان جدید اضافه کنید"
},
"startTimer": {
@@ -148,7 +148,7 @@ export default {
"description": "ردیابی زمان فعلی را متوقف کنید"
},
"createWorkItem": {
- "label": "ایجاد آیتم کاری",
+ "label": "ایجاد مورد کار",
"description": "یک مورد یا کار جدید ایجاد کنید"
},
"createWorkspace": {
@@ -156,12 +156,12 @@ export default {
"description": "یک فضای کاری پروژه جدید ایجاد کنید"
},
"createMilestone": {
- "label": "Milestone ایجاد کنید",
+ "label": "افزودن نقطه عطف",
"description": "یک نقطه عطف پروژه جدید ایجاد کنید"
},
"createCollection": {
"label": "ایجاد مجموعه",
- "description": "یک مجموعه آیتم کاری جدید ایجاد کنید"
+ "description": "یک مجموعه مورد کار جدید ایجاد کنید"
},
"adminCustomFields": {
"label": "فیلدهای سفارشی",
@@ -173,11 +173,11 @@ export default {
},
"adminHierarchyLevels": {
"label": "سطوح سلسله مراتبی",
- "description": "سطوح سلسله مراتب آیتم کاری را پیکربندی کنید"
+ "description": "سطوح سلسله مراتب موارد کار را پیکربندی کنید"
},
"adminItemTypes": {
- "label": "انواع آیتم ها",
- "description": "انواع آیتم های کاری را با نمادها و رنگ ها مدیریت کنید"
+ "label": "انواع موارد",
+ "description": "انواع مورد کار را با نمادها و رنگها مدیریت کنید"
},
"adminPriorities": {
"label": "اولویت ها",
@@ -189,7 +189,7 @@ export default {
},
"adminStatuses": {
"label": "وضعیت ها",
- "description": "وضعیت آیتم های کاری فردی را مدیریت کنید"
+ "description": "وضعیت موارد کار را مدیریت کنید"
},
"adminStatusCategories": {
"label": "دسته بندی وضعیت",
@@ -208,8 +208,8 @@ export default {
"description": "انواع پیوند بین موارد کاری را مدیریت کنید"
},
"adminScmProviders": {
- "label": "SCM ارائه دهندگان",
- "description": "پیکربندی GitHub، GitLab، Gitea، و Bitbucket ادغام"
+ "label": "ارائهدهندگان SCM",
+ "description": "پیکربندی ادغام GitHub، GitLab، Gitea و Bitbucket"
},
"adminAttachments": {
"label": "پیوست ها",
@@ -220,8 +220,8 @@ export default {
"description": "ماژولهای ردیابی زمان و تست را فعال یا غیرفعال کنید"
},
"adminThemes": {
- "label": "تنظیمات تم",
- "description": "تم ها و ظاهر برنامه را مدیریت کنید"
+ "label": "تنظیمات پوسته",
+ "description": "پوستهها و ظاهر برنامه را مدیریت کنید"
},
"adminUsers": {
"label": "مدیریت کاربر",
@@ -252,7 +252,7 @@ export default {
"description": "فیدهای تقویم و اجرای افزونه را پیکربندی کنید"
},
"adminSystemImport": {
- "label": "واردات سیستم",
+ "label": "درونریزی سیستم",
"description": "داده ها را از سیستم های دیگر وارد کنید"
},
"adminAssets": {
@@ -260,7 +260,7 @@ export default {
"description": "پیکربندی انواع و دستههای دارایی"
},
"adminWorkspaces": {
- "label": "ادمین فضاهای کاری",
+ "label": "مدیر فضاهای کاری",
"description": "فضاهای کاری و تنظیمات را مدیریت کنید"
},
"adminNotifications": {
@@ -284,8 +284,8 @@ export default {
"description": "برنامه ریزی و ردیابی اسپرینت"
},
"createItem": {
- "label": "ایجاد آیتم",
- "description": "یک آیتم کاری جدید ایجاد کنید"
+ "label": "ایجاد مورد",
+ "description": "یک مورد کاری جدید ایجاد کنید"
},
"myProfile": {
"label": "نمایه من",
@@ -308,11 +308,11 @@ export default {
"description": "سازمان های مشتری را مدیریت کنید"
},
"goToWorkspace": {
- "label": "Go به {name}",
+ "label": "برو به {name}",
"description": "به فضای کاری {name} بروید"
},
"workspaceOverview": {
- "label": "{name} نمای کلی",
+ "label": "نمای کلی {name}",
"description": "مشاهده داشبورد فضای کاری با آمار و نمودار"
}
}
@@ -326,29 +326,29 @@ export default {
"recentItems": "موارد اخیر",
"myTasks": "وظایف من",
"assignedToMe": "به من اختصاص داده شده است",
- "openTasks": "Tasks را باز کنید",
+ "openTasks": "وظایف باز",
"overdueItems": "اقلام عقب افتاده",
- "upcomingDeadlines": "مهلت های آینده",
+ "upcomingDeadlines": "مهلتهای آینده",
"activeIterations": "تکرارهای فعال",
- "inProgressMilestones": "نقاط عطف در حال پیشرفت",
+ "inProgressMilestones": "نقاط عطف در حال انجام",
"noRecentActivity": "هیچ فعالیت اخیری وجود ندارد",
"recentItemsHint": "مواردی که بهروزرسانی میکنید در اینجا ظاهر میشوند",
"noActiveIterations": "بدون تکرار فعال",
"iterationTimelinesHint": "جدول زمانی تکرار در اینجا ظاهر می شود",
- "noUpcomingDeadlines": "بدون ضرب الاجل آینده",
+ "noUpcomingDeadlines": "مهلت آیندهای وجود ندارد",
"dueDatesHint": "موارد دارای تاریخ سررسید در اینجا ظاهر می شوند",
"noOpenTasks": "هیچ کار باز به شما محول نشده است",
- "allCaughtUp": "همه شما گرفتار شده اید!",
+ "allCaughtUp": "همه را خواندهاید!",
"noOverdueItems": "بدون اقلام معوق",
"loadingRecentItems": "در حال بارگیری موارد اخیر...",
"loadingTasks": "در حال بارگیری وظایف شما...",
"loadingOverdueItems": "در حال بارگیری اقلام عقب افتاده...",
"workItemStatusOverview": "نمای کلی وضعیت مورد کار",
- "statusOpen": "باز کنید",
+ "statusOpen": "باز",
"statusInProgress": "در حال انجام است",
- "statusClosed": "بسته شد",
+ "statusClosed": "بسته",
"quickActions": "اقدامات سریع",
- "createWorkItem": "ایجاد آیتم کاری",
+ "createWorkItem": "ایجاد مورد کار",
"createWorkItemDesc": "ردیابی یک مورد کاری جدید را شروع کنید",
"manageMilestones": "نقاط عطف را مدیریت کنید",
"manageMilestonesDesc": "نقاط عطف را مشاهده و سازماندهی کنید",
@@ -365,27 +365,27 @@ export default {
"noRecentlyEdited": "هیچ موردی اخیراً ویرایش نشده است",
"noRecentlyCommented": "هیچ موردی که اخیراً نظر داده نشده است",
"quickAccess": "دسترسی سریع",
- "quickAccessHint": "{shortcut} را فشار دهید تا پالت فرمان باز شود",
+ "quickAccessHint": "{shortcut} را بزنید تا پالت فرمان باز شود",
"upcomingMilestones": "نقاط عطف آینده",
- "watching": "تماشا کردن",
+ "watching": "در حال تماشا",
"recentWorkspaces": "فضاهای کاری اخیر",
"noRecentWorkspaces": "فضای کاری اخیر وجود ندارد",
"goodMorning": "صبح بخیر",
"goodAfternoon": "ظهر بخیر",
"goodEvening": "عصر بخیر",
"goodNight": "شب بخیر",
- "dueIn": "موعد مقرر در {days} روز است",
+ "dueIn": "سررسید تا {days} روز دیگر",
"dueToday": "سررسید امروز",
"overdue": "{days} روز عقب افتاده است",
"done": "{done}/{total} انجام شد",
- "there": "وجود دارد",
+ "there": "دوست عزیز",
"doneEditing": "ویرایش انجام شد",
"customize": "سفارشی کنید",
"editModeHint": "حالت ویرایش: اضافه کردن، تغییر نام، ترتیب مجدد، یا حذف بخش ها و ویجت ها",
"sections": {
"yourDay": "روز شما",
"yourDayDescription": "خواندن سریع در مورد آنچه نیاز به توجه شما دارد",
- "work": "کار کنید",
+ "work": "کار",
"workDescription": "لیست شخصی و مواردی که به شما اختصاص داده شده است",
"workspaces": "فضاهای کاری",
"workspacesDescription": "دوباره به داخل بپر",
@@ -396,15 +396,15 @@ export default {
"rename": "تغییر نام بخش",
"deleteMessage": "این بخش حذف شود؟ تمام ویجت های موجود در آن نیز حذف خواهند شد.",
"noWidgets": "هنوز ویجتی در این بخش وجود ندارد",
- "addWidgetsHint": "برای افزودن ویجت ها، Customize را انتخاب کنید",
+ "addWidgetsHint": "برای افزودن ویجتها، سفارشیسازی را انتخاب کنید",
"none": "هیچ بخش پیکربندی نشده است",
"noneHint": "برای افزودن بخش داشبورد، ویرایش را انتخاب کنید"
},
"customization": {
- "widgets": "ابزارک ها",
+ "widgets": "ویجتها",
"activity": "فعالیت",
"activityDescription": "جلسات توجیهی، جریانهای فعالیت، و اعلانها",
- "work": "کار کنید",
+ "work": "کار",
"workDescription": "موارد، نقاط عطف و کارهایی که به شما محول شده است",
"navigation": "ناوبری",
"navigationDescription": "دسترسی سریع به فضاهای کاری",
@@ -438,7 +438,7 @@ export default {
},
"watchedItems": {
"name": "موارد تماشا شده",
- "description": "مواردی که دنبال می کنید"
+ "description": "مواردی که تماشا میکنید"
},
"upcomingMilestones": {
"name": "نقاط عطف آینده",
@@ -463,9 +463,9 @@ export default {
"personalEmpty": "لیست کارهای شخصی شما خالی است",
"noWorkspaces": "هنوز فضای کاری وجود ندارد",
"createWorkspace": "یکی ایجاد کنید",
- "workspaceAvatar": "{name} آواتار",
+ "workspaceAvatar": "آواتار {name}",
"visited": "بازدید شده {date}",
- "watchedEmpty": "شما هیچ آیتمی را تماشا نمی کنید",
+ "watchedEmpty": "هیچ موردی را تماشا نمیکنید",
"noUpcomingMilestones": "هیچ نقطه عطف آینده وجود ندارد",
"milestoneDone": "{done} از {total} انجام شد",
"daysOverdue": "{count} روز تاخیر",
@@ -505,14 +505,14 @@ export default {
"widgets": {
"stats": {
"name": "بررسی اجمالی آمار",
- "description": "مجموعه ها و تعداد آیتم ها بر اساس دسته وضعیت"
+ "description": "مجموعه ها و تعداد موارد بر اساس دسته وضعیت"
},
"completionChart": {
"name": "نمودار تکمیل",
"description": "موارد تکمیل شده در چهار هفته گذشته"
},
"createdChart": {
- "name": "نمودار خلقت",
+ "name": "نمودار ایجاد",
"description": "موارد ایجاد شده در هفت روز گذشته"
},
"milestoneProgress": {
@@ -520,8 +520,8 @@ export default {
"description": "نقاط عطف فعال و پیشرفت آنها"
},
"storyPointsByAssignee": {
- "name": "نکات داستانی توسط مامور",
- "description": "باز کردن نقاط داستان اختصاص داده شده به هر عضو"
+ "name": "امتیاز داستان بر اساس مسئول",
+ "description": "باز کردن امتیاز داستان اختصاص داده شده به هر عضو"
},
"recentItems": {
"name": "موارد اخیر",
@@ -553,26 +553,26 @@ export default {
},
"supportMetrics": {
"name": "معیارهای پشتیبانی",
- "description": "عقب ماندگی، اولین پاسخ، وضوح، و مطابقت SLA برای بلیط های مشتری"
+ "description": "عقبماندگی، اولین پاسخ، زمان حل، و رعایت SLA برای بلیطهای مشتری"
},
"zammadSupportOverview": {
- "name": "Zammad نمای کلی پشتیبانی",
+ "name": "نمای کلی پشتیبانی Zammad",
"description": "وضعیت بلیت پیوندی در سراسر فضای کاری و تغییرات مشاهده شده"
}
},
"customization": {
- "widgets": "ابزارک ها",
+ "widgets": "ویجتها",
"builtIn": "ویجت های داخلی",
"builtInDescription": "معیارها و نمودارهای فضای کاری اصلی",
"additional": "ویجت های اضافی",
- "additionalDescription": "لیست ها، برنامه ها و ابزارک های آزمایشی",
+ "additionalDescription": "فهرستها، برنامهها و ویجتهای آزمایشی",
"defaultWidth": "عرض پیشفرض: {width} از 3",
"tipTitle": "نکته",
"tip": "یک ویجت را به هر بخش در صفحه اصلی فضای کاری بکشید."
}
},
"search": {
- "title": "جستجو کنید",
+ "title": "جستجو",
"subtitle": "در تمام فضاهای کاری با گزینه های فیلتر پیشرفته جستجو کنید",
"searchPlaceholder": "جستجو...",
"searchItems": "جستجوی موارد...",
@@ -589,7 +589,7 @@ export default {
},
"about": {
"title": "درباره Windshift",
- "subtitle": "یک پلت فرم مدیریت کار جامع که برای تیم های مدرن طراحی شده است",
+ "subtitle": "یک پلتفرم مدیریت کار جامع که برای تیم های مدرن طراحی شده است",
"whatIs": "Windshift چیست؟",
"description": "Windshift یک برنامه مدیریت کار قدرتمند است که ردیابی پروژه، مدیریت آزمایش، ردیابی زمان و همکاری تیمی را در یک پلتفرم یکپارچه گرد هم میآورد. ساخته شده با فناوری های مدرن و طراحی شده برای انعطاف پذیری، با گردش کار منحصر به فرد تیم شما سازگار است.",
"keyFeatures": "ویژگی های کلیدی",
@@ -600,8 +600,8 @@ export default {
"timeTracking": "ردیابی زمان",
"timeTrackingDesc": "ردیابی زمان صرف شده برای پروژه ها و وظایف با گزارش و تجزیه و تحلیل دقیق.",
"builtWith": "کتابخانه های قابل توجه",
- "libSvelte": "فریم ورک Frontend",
- "libTailwind": "فریم ورک Utility-first CSS",
+ "libSvelte": "فریمورک فرانتاند",
+ "libTailwind": "فریمورک Utility-first CSS",
"libMilkdown": "ویرایشگر متن غنی",
"libExcalidraw": "نمودارها و ترسیم",
"libMeltUI": "اجزای اولیه UI",
@@ -625,19 +625,19 @@ export default {
"createWorkspaceBtn": "ایجاد فضای کاری",
"createFirstWorkItem": "اولین مورد کاری خود را ایجاد کنید",
"trackTasks": "وظایف، اشکالات، ویژگیها و موارد دیگر را ردیابی کنید",
- "createWorkItemBtn": "ایجاد آیتم کاری",
- "dismissAssistant": "اخراج دستیار",
- "dismissOnboarding": "رد کردن ورود",
+ "createWorkItemBtn": "ایجاد مورد کار",
+ "dismissAssistant": "بستن دستیار",
+ "dismissOnboarding": "رد کردن راهنمای شروع",
"getStartedMember": "در اینجا فضاهای کاری در دسترس شما هستند",
"selectWorkspace": "برای شروع یک فضای کاری انتخاب کنید",
- "browseAllWorkspaces": "همه {count} فضاهای کاری را مرور کنید",
+ "browseAllWorkspaces": "مرور همه {count} فضای کاری",
"noWorkspacesAvailable": "هنوز هیچ فضای کاری در دسترس نیست. لطفاً برای دسترسی به یک فضای کاری با سرپرست خود تماس بگیرید."
},
"navConfig": {
"configureTitle": "پیکربندی ناوبری",
"scopeWorkspace": "پیشفرض فضای کاری — {name}",
"scopeCollection": "مجموعه — {name}",
- "collectionScopeHelp": "این ضامنها پیشفرض فضای کاری این مجموعه را لغو میکنند. ابزارها و تست ها از تنظیمات فضای کاری پیروی می کنند.",
+ "collectionScopeHelp": "این بازنویسیها پیشفرض فضای کاری این مجموعه را لغو میکنند. ابزارها و تستها از تنظیمات فضای کاری پیروی میکنند.",
"inheritedBadge": "پیروی از پیشفرض فضای کاری - یک نمای را تغییر دهید تا آن را لغو کنید.",
"resetToInherited": "بازنشانی به پیش فرض فضای کاری",
"alwaysVisible": "همیشه قابل مشاهده است",
diff --git a/frontend/src/lib/locales/fa/pages.js b/frontend/src/lib/locales/fa/pages.js
index b4a629ad3..204ae08e9 100644
--- a/frontend/src/lib/locales/fa/pages.js
+++ b/frontend/src/lib/locales/fa/pages.js
@@ -25,7 +25,7 @@ export default {
"empty": "هنوز هیچ تجدیدنظری وجود ندارد.",
"loadError": "سابقه بازبینی بارگیری نشد.",
"restoreTitle": "نسخه شماره {rev} بازیابی شود؟",
- "restoreMessage": "با این کار محتوای ویرایش انتخاب شده جایگزین بدنه صفحه فعلی می شود و یک ویرایش جدید ایجاد می کند که بازیابی را ضبط می کند.",
+ "restoreMessage": "با این کار محتوای ویرایش انتخاب شده جایگزین بدنه صفحه فعلی می شود و یک ویرایش جدید ایجاد میکند که بازیابی را ثبت میکند.",
"restoreConfirm": "بازیابی کنید",
"restoreAction": "بازیابی #{rev}",
"restoring": "در حال بازیابی…",
@@ -68,7 +68,7 @@ export default {
"archiveConfirm": "آرشیو",
"archivedOpenAria": "مشاهده صفحات آرشیو شده",
"archivedHeading": "صفحات آرشیو شده",
- "archivedSubtitle": "صفحاتی را که قبلاً بایگانی شده اند را بررسی و بازیابی کنید.",
+ "archivedSubtitle": "صفحاتی که قبلاً بایگانی شدهاند را بررسی و بازیابی کنید.",
"archivedBack": "بازگشت به صفحات",
"archivedEmpty": "هیچ صفحه آرشیو شده ای وجود ندارد",
"archivedColTitle": "عنوان",
@@ -82,10 +82,10 @@ export default {
"archivedLoadError": "صفحات بایگانی شده بارگیری نشد",
"archivedUnarchiveError": "لغو بایگانی صفحه انجام نشد",
"moveTitle": "انتقال \"{title}\"",
- "moveSubtitle": "یک والدین جدید انتخاب کنید صفحات زیر صفحه فعلی پنهان می شوند زیرا یک چرخه ایجاد می کنند.",
+ "moveSubtitle": "یک والد جدید انتخاب کنید. صفحات زیر صفحه فعلی پنهان میشوند زیرا یک چرخه ایجاد میکنند.",
"moveWorkspaceLabel": "فضای کاری مقصد",
"moveWorkspacePlaceholder": "انتخاب یک فضای کاری…",
- "moveParentLabel": "صفحه والدین",
+ "moveParentLabel": "صفحه والد",
"moveSearchPlaceholder": "جستجوی صفحات…",
"moveRoot": "ریشه فضای کاری",
"moveCrossWorkspaceSummary": "صفحات این زیردرخت: {count}.",
@@ -98,16 +98,16 @@ export default {
"permsEffectiveAccess": "دسترسی موثر شما: {level}",
"permsEffectiveAccessNone": "هیچ کدام",
"permsLoading": "در حال بارگیری…",
- "permsInheritLabel": "مجوزها را از اجداد به ارث ببرید",
- "permsInheritHint": "وقتی وراثت روشن است و هیچ کمک مالی صریحی وجود ندارد، مجوزهای نقش فضای کاری تصمیم می گیرند. شکستن وراثت بدون کمک هزینه، صفحه را به مدیران محدود می کند.",
- "permsExplicitGrants": "کمک های مالی صریح",
- "permsEmptyGrantsTitle": "هیچ کمک مالی صریحی در این صفحه وجود ندارد.",
+ "permsInheritLabel": "مجوزها را از والد بالاتر به ارث ببرید",
+ "permsInheritHint": "وقتی وراثت روشن است و هیچ مجوز صریحی وجود ندارد، مجوزهای نقش فضای کاری تعیینکنندهاند. شکستن وراثت بدون مجوز، صفحه را به مدیران محدود میکند.",
+ "permsExplicitGrants": "مجوزهای صریح",
+ "permsEmptyGrantsTitle": "هیچ مجوز صریحی در این صفحه وجود ندارد.",
"permsEmptyGrantsDescription": "نقشهای وراثت و فضای کاری همچنان اعمال میشوند.",
- "permsColumnPrincipal": "اصلی",
+ "permsColumnPrincipal": "موجودیت",
"permsColumnLevel": "سطح",
"permsRemove": "حذف کنید",
"permsRemoveTitle": "مجوز حذف شود؟",
- "permsRemoveMessage": "این کمک هزینه از صفحه حذف خواهد شد. بعداً می توانید دوباره آن را اضافه کنید.",
+ "permsRemoveMessage": "این مجوز از صفحه حذف خواهد شد. بعداً میتوانید دوباره آن را اضافه کنید.",
"permsRemoveConfirm": "حذف کنید",
"permsRemoveCancel": "لغو کنید",
"permsClose": "بستن",
@@ -121,10 +121,10 @@ export default {
"permsPickUser": "یک کاربر انتخاب کنید",
"permsPickGroup": "یک گروه انتخاب کنید",
"permsPickRole": "نقشی را انتخاب کنید",
- "permsErrorNoPrincipal": "قبل از اضافه کردن کمک هزینه، یک اصل را انتخاب کنید",
+ "permsErrorNoPrincipal": "قبل از افزودن مجوز، یک موجودیت را انتخاب کنید",
"permsErrorLoad": "مجوزها بارگیری نشد",
"permsErrorInherit": "وراثت بهروزرسانی نشد",
- "permsErrorGrant": "اجازه افزودن ناموفق بود",
+ "permsErrorGrant": "افزودن مجوز ناموفق بود",
"permsErrorRevoke": "لغو نشد",
"labelsTitle": "برچسب ها",
"labelsAdd": "برچسب اضافه کنید",
diff --git a/frontend/src/lib/locales/fa/teams.js b/frontend/src/lib/locales/fa/teams.js
index 3509b91be..7fc2f7998 100644
--- a/frontend/src/lib/locales/fa/teams.js
+++ b/frontend/src/lib/locales/fa/teams.js
@@ -1,11 +1,11 @@
export default {
"teams": {
"title": "تیم ها",
- "subtitle": "تیم ها، اعضا و چرخش های حین تماس را مدیریت کنید",
+ "subtitle": "تیمها، اعضا و چرخشهای کشیک را مدیریت کنید",
"name": "نام",
"description": "توضیحات",
"descriptionOptional": "توضیحات (اختیاری)",
- "namePlaceholder": "به عنوان مثال پلت فرم در تماس",
+ "namePlaceholder": "به عنوان مثال پلتفرم کشیک",
"descriptionPlaceholder": "خلاصه اختیاری این تیم",
"members": "اعضا",
"member": "عضو",
@@ -26,7 +26,7 @@ export default {
"updated": "تیم به روز شد",
"deleted": "تیم حذف شد",
"failedToLoad": "بارگیری تیم ها انجام نشد",
- "failedToSave": "نجات تیم ناموفق بود",
+ "failedToSave": "ذخیره تیم ناموفق بود",
"failedToDelete": "تیم حذف نشد",
"loading": "در حال بارگیری…",
"empty": "هنوز تیمی وجود ندارد",
@@ -37,9 +37,9 @@ export default {
"identityTitle": "هویت",
"identitySubtitle": "یک نماد و رنگ را انتخاب کنید یا یک آواتار سفارشی آپلود کنید.",
"directMembers": "اعضای مستقیم",
- "mappedGroups": "گروه های نقشه برداری شده",
- "resolvedMembers": "اعضای حل شده",
- "resolvedMembersHint": "اتحادیه اعضای مستقیم و اعضای گروه های نقشه برداری شده",
+ "mappedGroups": "گروههای نگاشتشده",
+ "resolvedMembers": "اعضای نهایی",
+ "resolvedMembersHint": "ترکیب اعضای مستقیم و اعضای گروههای نگاشتشده",
"addMembers": "اضافه کردن اعضا",
"addMember": "اضافه کردن عضو",
"pickUserFirst": "ابتدا یک کاربر را انتخاب کنید",
@@ -56,7 +56,7 @@ export default {
"memberRemoved": "عضو حذف شد",
"failedToRemoveMember": "عضو حذف نشد",
"noDirectMembers": "هنوز هیچ عضو مستقیمی وجود ندارد",
- "noResolvedMembers": "هیچ عضو حل شده ای وجود ندارد",
+ "noResolvedMembers": "هیچ عضو نهایی وجود ندارد",
"source": "منبع",
"sourceDirect": "مستقیم",
"sourceGroup": "گروه",
@@ -89,9 +89,9 @@ export default {
"created": "تقویم ایجاد شد",
"updated": "تقویم به روز شد",
"deleted": "تقویم حذف شد",
- "loadFailed": "ساعات سرویس بارگیری نشد",
+ "loadFailed": "ساعات خدمات بارگیری نشد",
"timezone": "منطقه زمانی",
- "noCalendars": "هنوز تقویم ساعات سرویس دهی وجود ندارد.",
+ "noCalendars": "هنوز تقویم ساعات خدمات وجود ندارد.",
"previewImpact": "پیش نمایش تاثیر",
"impactTitle": "تأثیر ویرایش «{name}»",
"impactFailed": "پیش نمایش ضربه بارگیری نشد",
@@ -99,7 +99,7 @@ export default {
"noImpact": "هیچ فضای کاری محدودی در حال حاضر به این تقویم ارجاع نمی دهد."
},
"oncall": {
- "schedules": "برنامه های حین تماس",
+ "schedules": "برنامههای کشیک",
"addSchedule": "برنامه را اضافه کنید",
"noSchedules": "هنوز هیچ برنامه ای برای تماس وجود ندارد",
"createSchedule": "ایجاد برنامه",
@@ -164,7 +164,7 @@ export default {
"profile": {
"leave": {
"title": "ترک کنید",
- "subtitle": "زمان استراحت خود را برنامه ریزی کنید و جایگزینی را انتخاب کنید که شیفت های حین خدمت شما را پوشش دهد.",
+ "subtitle": "زمان استراحت خود را برنامهریزی کنید و جایگزینی را انتخاب کنید که شیفتهای کشیک شما را پوشش دهد.",
"tabLabel": "ترک کنید",
"scheduleLeave": "مرخصی را برنامه ریزی کنید",
"editLeave": "ویرایش مرخصی",
diff --git a/frontend/src/lib/locales/fa/testing.js b/frontend/src/lib/locales/fa/testing.js
index e2805d54b..6f73db5fe 100644
--- a/frontend/src/lib/locales/fa/testing.js
+++ b/frontend/src/lib/locales/fa/testing.js
@@ -1,6 +1,6 @@
export default {
"testing": {
- "title": "تست کردن",
+ "title": "تست",
"subtitle": "موارد تست و اجرای آزمایشی را مدیریت کنید",
"testCases": "موارد تست",
"testCase": "مورد تست",
@@ -12,24 +12,24 @@ export default {
"createTestCase": "ایجاد پرونده آزمایشی",
"createTestPlan": "ایجاد طرح تست",
"createTestRun": "اجرای آزمایشی را ایجاد کنید",
- "deleteTestCase": "حذف تست مورد",
+ "deleteTestCase": "حذف مورد تست",
"deleteTestPlan": "حذف طرح تست",
"deleteTestPlanConfirm": "آیا مطمئنید که می خواهید این طرح آزمایشی را حذف کنید؟ این قابل واگرد نیست.",
"addTestPlan": "اضافه کردن طرح تست",
"createFirstTestPlan": "اولین برنامه آزمایشی خود را برای سازماندهی موارد آزمایشی ایجاد کنید",
"lastRun": "آخرین اجرا",
- "neverRun": "هرگز اجرا نکنید",
+ "neverRun": "هرگز اجرا نشده",
"deleteFolder": "حذف پوشه",
"deleteStep": "مرحله را حذف کنید",
"steps": "مراحل",
"addStep": "مرحله را اضافه کنید",
"expected": "نتیجه مورد انتظار",
"actual": "نتیجه واقعی",
- "passed": "گذشت",
+ "passed": "موفق",
"failed": "شکست خورد",
"blocked": "مسدود شده است",
"skipped": "رد شد",
- "notRun": "اجرا نمی شود",
+ "notRun": "اجرا نشده",
"actualResult": "نتیجه واقعی",
"editTestPlan": "ویرایش طرح تست",
"execute": "اجرا کنید",
@@ -51,18 +51,18 @@ export default {
"data": "داده ها",
"noDataSpecified": "هیچ داده ای مشخص نشده است",
"recordResult": "ثبت نتیجه",
- "pass": "پاس",
- "fail": "شکست بخورد",
- "skip": "پرش کنید",
+ "pass": "موفق",
+ "fail": "ناموفق",
+ "skip": "رد کردن",
"actualResultPlaceholder": "در واقع چه اتفاقی افتاد؟",
"notesPlaceholder": "نکات یا مشاهدات تکمیلی ...",
- "linkIssue": "مشکل پیوند",
+ "linkIssue": "پیوند مسئله",
"linked": "پیوند داده شده است",
"stepFailedNoIssue": "این مرحله ناموفق بود اما مشکلی مرتبط نیست.",
"linkExistingItem": "مورد موجود را پیوند دهید",
"searchItemsToLink": "جستجوی موارد برای پیوند...",
"or": "یا",
- "createNewIssue": "ایجاد شماره جدید",
+ "createNewIssue": "ایجاد مسئله جدید",
"nextStep": "مرحله بعدی",
"noTestSteps": "بدون مراحل تست",
"noTestStepsDescription": "این مورد آزمایشی هنوز هیچ مرحله تعریف شده ای ندارد. می توانید مراحلی را اضافه کنید تا آن را قابل اجرا کنید.",
@@ -151,10 +151,10 @@ export default {
"createTestRunSubtitle": "اجرای آزمایشی جدید را از طرح آزمایشی شروع کنید",
"selectTestPlan": "طرح تست را انتخاب کنید",
"selectTestPlanPlaceholder": "انتخاب طرح تست...",
- "runName": "نام را اجرا کنید",
- "runNamePlaceholder": "به عنوان مثال، رگرسیون Sprint 5",
+ "runName": "نام اجرا",
+ "runNamePlaceholder": "به عنوان مثال، رگرسیون اسپرینت ۵",
"selectAssigneeOptional": "انتخاب گیرنده (اختیاری)",
- "createRun": "Run را ایجاد کنید",
+ "createRun": "ایجاد اجرا",
"deleteTestRun": "اجرای تست را حذف کنید",
"deleteRunConfirm": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟",
"failedToDeleteRun": "اجرای آزمایشی حذف نشد",
@@ -176,27 +176,27 @@ export default {
"templateName": "نام الگو",
"templateNamePlaceholder": "به عنوان مثال، الگوی رگرسیون اسپرینت",
"createTemplate": "ایجاد الگو",
- "deleteTemplate": "حذف قالب",
+ "deleteTemplate": "حذف الگو",
"deleteTemplateConfirm": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟ با این کار، اجرای آزمایشی موجود از این الگو حذف نمیشود.",
"noTemplatesYet": "هنوز هیچ قالبی وجود ندارد",
"createTemplatesHint": "برای شروع سریع اجرای آزمایشی با تنظیمات از پیش تعریف شده، الگوهایی ایجاد کنید",
"createTemplateToReuse": "یک الگو برای شروع سریع اجرای آزمایشی با تنظیمات از پیش تعریف شده ایجاد کنید.",
- "executeTemplate": "قالب را اجرا کنید",
+ "executeTemplate": "الگو را اجرا کنید",
"templateNameRequired": "نام الگو نمی تواند خالی باشد",
"failedToUpdateTemplate": "الگو به روز رسانی نشد. لطفا دوباره امتحان کنید.",
"failedToDeleteTemplate": "حذف الگو انجام نشد. لطفا دوباره امتحان کنید.",
"failedToStartExecution": "شروع اجرا ناموفق بود. لطفا دوباره امتحان کنید.",
"templateInformation": "اطلاعات الگو",
- "templateDescriptionPlaceholder": "توضیحاتی برای این قالب اضافه کنید...",
+ "templateDescriptionPlaceholder": "توضیحاتی برای این الگو اضافه کنید...",
"noDescription": "هیچ توضیحی ارائه نشده است",
- "executionsCount": "اعدام ها ({count})",
+ "executionsCount": "اجرا ها ({count})",
"newExecution": "اجرای جدید",
"results": "نتایج",
"progress": "پیشرفت",
- "noExecutionsYet": "هنوز اعدام نشده",
+ "noExecutionsYet": "هنوز اجرایی انجام نشده",
"clickExecuteTemplate": "برای ایجاد اولین اجرای آزمایشی خود از این الگو، روی «اجرای الگو» کلیک کنید",
"quickStats": "آمار سریع",
- "totalExecutions": "مجموع اعدام ها",
+ "totalExecutions": "مجموع اجرا ها",
"testPlanDetails": "جزئیات طرح تست",
"templateNotFound": "الگو پیدا نشد",
"backToTemplates": "بازگشت به الگوها",
@@ -219,15 +219,15 @@ export default {
"workItemsCoveredByTests": "اقلام کاری تحت پوشش تست ها",
"itemsWithoutTestCoverage": "اقلام بدون پوشش تست",
"selectWorkspacesAndTypes": "فضاهای کاری و انواع موارد را برای درج در گزارش انتخاب کنید",
- "selectWorkspaces": "Workspaces را انتخاب کنید",
+ "selectWorkspaces": "فضاهای کاری را انتخاب کنید",
"allWorkspaces": "همه فضاهای کاری",
- "itemTypes": "انواع آیتم ها",
+ "itemTypes": "انواع موارد",
"selectItemTypes": "انواع مورد را انتخاب کنید",
"allItemTypes": "همه انواع اقلام",
"testSetsSubtitle": "موارد تست را در برنامه های اجرایی سازماندهی کنید",
"selectMilestone": "انتخاب نقطه عطف...",
- "setName": "نام را تنظیم کنید",
- "setNamePlaceholder": "به عنوان مثال، طرح تست Sprint 5",
+ "setName": "نام مجموعه",
+ "setNamePlaceholder": "به عنوان مثال، طرح تست اسپرینت ۵",
"createSet": "ایجاد مجموعه",
"deleteTestSet": "حذف مجموعه تست",
"deleteSetConfirm": "آیا مطمئن هستید که می خواهید \"{name}\" را حذف کنید؟",
@@ -267,7 +267,7 @@ export default {
"failures": "شکست ها",
"coverage": "پوشش",
"totalRuns": "مجموع اجراها",
- "passRate": "نرخ پاس",
+ "passRate": "نرخ موفقیت",
"avgDuration": "میانگین مدت",
"resultsDistribution": "توزیع نتایج",
"noResultsData": "هیچ داده نتیجه ای وجود ندارد",
@@ -284,14 +284,14 @@ export default {
"runsCount": "{count} اجرا می شود",
"runsCount_one": "{count} اجرا شود",
"runsCount_other": "{count} اجرا می شود",
- "passRateTrend": "روند نرخ عبور - آخرین {days} روز",
+ "passRateTrend": "روند نرخ موفقیت - آخرین {days} روز",
"recentFailuresSubtitle": "خطاهای تست در {days} روز گذشته",
"blockedTestsSubtitle": "آزمایشهای مسدود شده در {days} روز گذشته",
"noFailures": "بدون شکست",
- "allTestsPassing": "همه آزمون ها قبول می شوند",
+ "allTestsPassing": "همه تستها موفق هستند",
"noBlockedTestsTitle": "بدون تست مسدود شده",
- "allTestsUnblocked": "تمامی تست ها رفع انسداد هستند",
- "run": "اجرا کنید",
+ "allTestsUnblocked": "هیچ تستی مسدود نیست",
+ "run": "اجرا",
"failedAt": "ناموفق در",
"reason": "دلیل",
"noReasonProvided": "دلیلی ارائه نشده است",
@@ -302,10 +302,10 @@ export default {
"noItemsMatchingRequirements": "هیچ موردی مطابق با انواع نیازهای پیکربندی شده وجود ندارد",
"testResults": "نتایج آزمون",
"resultsSummary": "خلاصه نتایج",
- "exportResults": "نتایج صادرات",
+ "exportResults": "نتایج برونریزی",
"noDefinedSteps": "هیچ مرحله ای برای این مورد آزمایشی تعریف نشده است",
"successRate": "میزان موفقیت",
- "runInformation": "اطلاعات را اجرا کنید",
+ "runInformation": "اطلاعات اجرا",
"stepResults": "نتایج مرحله",
"stepNumber": "مرحله {number}",
"noResultsYet": "هنوز هیچ نتیجه ای وجود ندارد",
@@ -317,16 +317,16 @@ export default {
"testRunSummary": "خلاصه اجرای تست",
"printLoading": "در حال آماده سازی خلاصه اجرای آزمایشی برای چاپ…",
"backToRun": "بازگشت به اجرای آزمایشی",
- "noResultsForExport": "هیچ نتیجه ای برای صادرات در دسترس نیست",
+ "noResultsForExport": "هیچ نتیجه ای برای برونریزی در دسترس نیست",
"stepsNotExecuted": "{count} مراحل به صورت جداگانه اجرا نشدند",
"stepsNotExecuted_one": "مرحله {count} به صورت جداگانه اجرا نشد",
"stepsNotExecuted_other": "{count} مراحل به صورت جداگانه اجرا نشدند",
"caseFormat": "قالب پرونده",
"formatSteps": "مراحل",
- "formatBDD": "BDD (غربال)",
+ "formatBDD": "BDD (Gherkin)",
"formatImmutableNote": "پس از ایجاد نمی توان قالب را تغییر داد.",
"titleFromScenarioNote": "عنوان از نام سناریو گرفته شده است.",
- "gherkinLabel": "سناریو (غربال)",
+ "gherkinLabel": "سناریو (Gherkin)",
"gherkinRequired": "منبع Gherkin برای تست BDD مورد نیاز است.",
"validateGherkin": "اعتبار سنجی",
"gherkinValid": "فایل ویژگی معتبر",
@@ -354,7 +354,7 @@ export default {
"noExampleResults": "هیچ نتیجه نمونه ای برای این مورد در این اجرا یافت نشد.",
"failedToSaveExample": "نتیجه نمونه ذخیره نشد.",
"hideExampleSteps": "پنهان کردن مراحل",
- "showExampleSteps": "نمایش {count} مراحل"
+ "showExampleSteps": "نمایش {count} مرحله"
},
"testCase": {
"preview": "پیش نمایش پرونده تست",
@@ -370,7 +370,7 @@ export default {
"action": "اقدام",
"data": "داده ها",
"expectedResult": "نتیجه مورد انتظار",
- "recentExecutions": "اعدام های اخیر",
+ "recentExecutions": "اجرا های اخیر",
"noExecutions": "این مورد آزمایشی در هیچ آزمایشی اخیر اجرا نشده است.",
"set": "تنظیم کنید",
"template": "الگو",
diff --git a/frontend/src/lib/locales/fa/time.js b/frontend/src/lib/locales/fa/time.js
index 71bf4cf6b..ea928ee39 100644
--- a/frontend/src/lib/locales/fa/time.js
+++ b/frontend/src/lib/locales/fa/time.js
@@ -2,12 +2,12 @@ export default {
"time": {
"title": "ردیابی زمان",
"subtitle": "پیگیری زمان صرف شده برای موارد کاری",
- "logTime": "زمان ثبت نام",
+ "logTime": "ثبت زمان",
"editTimeEntry": "ویرایش زمان ورود",
"updateEntry": "به روز رسانی ورودی",
"timeSpent": "زمان صرف شده",
"remaining": "باقی مانده است",
- "estimate": "تخمین بزنید",
+ "estimate": "تخمین",
"originalEstimate": "برآورد اصلی",
"hours": "ساعت",
"minutes": "دقیقه",
@@ -21,11 +21,11 @@ export default {
"timeTrackingProject": "پروژه ردیابی زمان",
"noCustomer": "بدون مشتری",
"workItemOptional": "مورد کاری (اختیاری)",
- "whatDidYouWorkOn": "روی چه چیزی کار کردی؟",
+ "whatDidYouWorkOn": "روی چه چیزی کار کردید؟",
"start": "شروع کنید",
"end": "پایان",
"duration": "مدت زمان",
- "durationHelperText": "برای محاسبه خودکار زمان پایان، زمان شروع + مدت زمان (2 ساعت) را وارد کنید، یا زمان های شروع + پایان را برای محاسبه خودکار مدت زمان وارد کنید. قالبهای زمانی: 1 ساعت، 30 دقیقه، 1:30 دقیقه، 2:15 دقیقه، 1 روز (=8 ساعت)",
+ "durationHelperText": "برای محاسبه خودکار زمان پایان، زمان شروع + مدت زمان (2 ساعت) را وارد کنید، یا زمان های شروع + پایان را برای محاسبه خودکار مدت زمان وارد کنید. قالبهای زمانی: ۱ ساعت، ۳۰ دقیقه، ۱:۳۰، ۲:۱۵، ۱ روز (=۸ ساعت)",
"pomodoro": {
"title": "تنظیمات Pomodoro",
"subtitle": "رفتار تایمر دسکتاپ و ثبت خودکار زمان را پیکربندی کنید.",
@@ -62,7 +62,7 @@ export default {
"subtitle": "مروری بر جدول زمانی هفتگی",
"total": "مجموع",
"noEntries": "هیچ ورودی زمانی در این هفته وجود ندارد. برای شروع پروژه اضافه کنید.",
- "projectItem": "پروژه / آیتم کاری",
+ "projectItem": "پروژه / مورد کاری",
"addProject": "افزودن پروژه به جدول زمانی...",
"removeProject": "حذف از جدول زمانی",
"showWeekends": "آخر هفته ها"
@@ -102,9 +102,9 @@ export default {
},
"reports": {
"title": "گزارش ها",
- "subtitle": "داده های ردیابی زمان و گزارش های صادراتی خود را تجزیه و تحلیل کنید",
- "exportCSV": "صادرات CSV",
- "exportPDF": "صادرات PDF",
+ "subtitle": "داده های ردیابی زمان و گزارش های برونریزی خود را تجزیه و تحلیل کنید",
+ "exportCSV": "برونریزی CSV",
+ "exportPDF": "برونریزی PDF",
"filters": "فیلترها",
"customer": "مشتری",
"allCustomers": "همه مشتریان",
@@ -142,7 +142,7 @@ export default {
"backToReports": "بازگشت به گزارشات"
},
"timer": {
- "goToWorkItem": "Go برای مورد کاری: {title}",
+ "goToWorkItem": "برو به مورد کاری: {title}",
"expandTimer": "تایمر را گسترش دهید",
"collapseTimer": "تایمر جمع کردن",
"project": "پروژه",
@@ -166,7 +166,7 @@ export default {
"unknownCustomer": "مشتری ناشناس",
"project": "پروژه",
"customer": "مشتری",
- "rate": "امتیاز دهید",
+ "rate": "نرخ",
"projectName": "نام پروژه",
"descriptionOptional": "توضیحات (اختیاری)",
"hourlyRateOptional": "نرخ ساعتی (اختیاری)"
@@ -174,7 +174,7 @@ export default {
"calendar": {
"title": "تقویم هفتگی",
"itemCount": "{count} مورد",
- "exportWeekToICS": "هفته صادرات به ICS",
+ "exportWeekToICS": "هفته برونریزی به ICS",
"myWorkItems": "موارد کار من",
"dragToSchedule": "موارد را بکشید تا آنها را زمان بندی کنید",
"noWorkItems": "هیچ مورد کاری اختصاص داده نشده است",
@@ -192,8 +192,8 @@ export default {
"addTimeEntry": "یک ورودی زمان جدید اضافه کنید",
"failedToSave": "ذخیره زمان ورود ناموفق بود. لطفا ورودی خود را بررسی کنید.",
"confirmDelete": "آیا مطمئن هستید که می خواهید این ورودی زمانی را حذف کنید؟",
- "needProjects": "شما باید قبل از زمان ثبت نام، پروژه های فعال ایجاد کنید.",
- "goToProjects": "Go به پروژه ها",
+ "needProjects": "شما باید قبل از ثبت زمان، پروژههای فعال ایجاد کنید.",
+ "goToProjects": "برو به پروژهها",
"startSetupWizard": "ویزارد راه اندازی",
"applyFiltersTitle": "فیلترهای انتخاب شده را در لیست ورودی های زمان اعمال کنید",
"clearFiltersTitle": "همه فیلترها را پاک کنید و تمام ورودیهای زمان را نشان دهید",
diff --git a/frontend/src/lib/locales/fa/ui.js b/frontend/src/lib/locales/fa/ui.js
index 8e553a817..e0124c976 100644
--- a/frontend/src/lib/locales/fa/ui.js
+++ b/frontend/src/lib/locales/fa/ui.js
@@ -22,15 +22,15 @@ export default {
"noUsersAvailable": "هیچ کاربری در دسترس نیست",
"assignTo": "اختصاص به",
"unassigned": "واگذار نشده است",
- "assignee": "مأمور",
+ "assignee": "مسئول",
"user": "کاربر",
"group": "گروه",
"searchUser": "جستجوی کاربر...",
"searchGroup": "جستجوی گروه...",
- "agentOnline": "نماینده آنلاین - یک دونده زنده آیتم های اختصاص داده شده را انتخاب می کند",
- "agentOffline": "عامل آفلاین - استخر دونده آن رانر زنده ندارد. موارد اختصاص داده شده در صف قرار می گیرند",
- "agentLocal": "Agent روی این سرور اجرا می شود",
- "agentUnbound": "هیچ عاملی در این فضای کاری الزام آور نیست - اختصاص دادن اجرا را شروع نمی کند",
+ "agentOnline": "عامل آنلاین — یک رانر زنده موارد اختصاص داده شده را برمیدارد",
+ "agentOffline": "عامل آفلاین - استخر رانر آن رانر زنده ندارد. موارد اختصاص داده شده در صف قرار می گیرند",
+ "agentLocal": "عامل روی این سرور اجرا میشود",
+ "agentUnbound": "هیچ عاملی به این فضای کاری متصل نیست - اختصاص دادن، اجرا را شروع نمیکند",
"selectGroup": "گروه را انتخاب کنید",
"selectCategories": "دسته ها را انتخاب کنید",
"removeCategory": "حذف دسته",
@@ -42,7 +42,7 @@ export default {
"searchWorkspaces": "جستجو در فضاهای کاری...",
"noWorkspacesFound": "هیچ فضای کاری یافت نشد",
"selectConfigurationSet": "مجموعه تنظیمات را انتخاب کنید",
- "searchConfigurationSets": "مجموعه های پیکربندی جستجو...",
+ "searchConfigurationSets": "جستجوی مجموعههای پیکربندی...",
"configurationSets": "مجموعه های پیکربندی",
"defaultConfiguration": "پیکربندی پیش فرض",
"defaultConfigurationDescription": "از تنظیمات پیش فرض فضای کاری استفاده می کند",
@@ -50,10 +50,10 @@ export default {
"entityAlreadyAssigned": "{label} قبلاً اختصاص داده شده است",
"itemType": "نوع مورد",
"priorities": "اولویت ها",
- "itemTypes": "انواع آیتم ها",
+ "itemTypes": "انواع مورد",
"level": "سطح {level}",
"assigned": "اختصاص داده شده است",
- "noEntitiesAssigned": "{entities} اختصاص داده نشده است",
+ "noEntitiesAssigned": "هیچ {entities} اختصاص داده نشده است",
"available": "موجود است",
"noEntitiesMatchSearch": "هیچ {entities} با جستجوی شما مطابقت ندارد",
"allEntitiesAssigned": "همه {entities} اختصاص داده شده است",
@@ -84,7 +84,7 @@ export default {
"identifier": "شناسه"
},
"fieldCategories": {
- "basic": "زمینه های پایه",
+ "basic": "فیلدهای پایه",
"dates": "فیلدهای تاریخ",
"people": "مردم",
"workflow": "گردش کار",
@@ -109,15 +109,15 @@ export default {
"description": "سطح اولویت"
},
"type": {
- "name": "تایپ کنید",
+ "name": "نوع",
"description": "نوع مورد"
},
"assignee": {
- "name": "مأمور",
+ "name": "مسئول",
"description": "کاربر اختصاص داده شده"
},
"reporter": {
- "name": "خبرنگار",
+ "name": "گزارشدهنده",
"description": "چه کسی مورد را گزارش کرد"
},
"createdAt": {
@@ -137,20 +137,20 @@ export default {
"description": "وقتی کار شروع می شود"
},
"estimate": {
- "name": "تخمین بزنید",
+ "name": "تخمین",
"description": "تلاش برآورد شده"
},
"openChildCount": {
- "name": "باز کردن تعداد فرزندان",
- "description": "کودکان را در وضعیت تکمیل نشده هدایت کنید"
+ "name": "تعداد فرزندان باز",
+ "description": "فرزندان مستقیم که در وضعیت تکمیلشده نیستند"
},
"openDescendantCount": {
- "name": "باز کردن تعداد فرزندان",
- "description": "فرزندان در هر عمقی که در وضعیت کامل نیستند"
+ "name": "تعداد فرزندان باز",
+ "description": "فرزندان در هر عمقی که در وضعیت تکمیلشده نیستند"
},
"labels": {
"name": "برچسب ها",
- "description": "برچسب های اقلام"
+ "description": "برچسبهای موارد"
},
"sprint": {
"name": "اسپرینت",
@@ -158,19 +158,19 @@ export default {
},
"iteration": {
"name": "تکرار",
- "description": "تکرار مرتبط (دوی سرعت، انتشار و غیره)"
+ "description": "تکرار مرتبط (اسپرینت، انتشار و غیره)"
},
"milestone": {
"name": "نقطه عطف",
"description": "نقطه عطف هدف"
},
"parent": {
- "name": "پدر و مادر",
+ "name": "والد",
"description": "مورد والد"
},
"children": {
- "name": "بچه ها",
- "description": "وسایل کودک"
+ "name": "فرزندان",
+ "description": "موارد فرزند"
},
"links": {
"name": "پیوندها",
@@ -210,7 +210,7 @@ export default {
"milestonesSelected_one": "{count} نقطه عطف انتخاب شد",
"milestonesSelected_other": "{count} نقطه عطف انتخاب شد",
"noMilestonesFound": "هیچ نقطه عطفی پیدا نشد",
- "showCompletedMilestones": "نمایش کامل شد",
+ "showCompletedMilestones": "نمایش تکمیلشدهها",
"selectIteration": "تکرار را انتخاب کنید",
"noIteration": "بدون تکرار",
"selectPriority": "اولویت را انتخاب کنید",
@@ -218,7 +218,7 @@ export default {
"loadingPriorities": "در حال بارگیری اولویت ها...",
"noPrioritiesConfigured": "هیچ اولویتی پیکربندی نشده است",
"selectProject": "پروژه را انتخاب کنید",
- "linkRepositories": "مخازن پیوند",
+ "linkRepositories": "پیوند مخازن",
"selectRepositoriesFrom": "انتخاب مخازن از {provider}",
"searchRepositories": "جستجو در مخازن...",
"loadingRepositories": "در حال بارگیری مخازن...",
@@ -232,15 +232,15 @@ export default {
"selectScreen": "صفحه نمایش را انتخاب کنید",
"searchTestCases": "جستجوی موارد آزمایشی...",
"selectWorkflow": "گردش کار را انتخاب کنید",
- "selectConditionSet": "تنظیم شرط را انتخاب کنید",
+ "selectConditionSet": "مجموعه شرایط را انتخاب کنید",
"selectApprovalSet": "مجموعه تایید را انتخاب کنید"
},
"editors": {
"enterText": "متن را وارد کنید...",
"selectDate": "انتخاب تاریخ...",
"clickToChangeColor": "برای تغییر رنگ کلیک کنید",
- "saveEnter": "ذخیره (ورود)",
- "cancelEscape": "لغو (فرار)",
+ "saveEnter": "ذخیره (Enter)",
+ "cancelEscape": "لغو (Escape)",
"availableFields": "فیلدهای موجود",
"selectedFields": "فیلدهای انتخاب شده",
"dragFieldsToAdd": "فیلدها را بکشید تا آنها را اضافه کنید",
@@ -251,10 +251,10 @@ export default {
"allFieldsAdded": "تمام فیلدهای موجود اضافه شده است",
"bold": "پررنگ (Ctrl+B)",
"italic": "مورب (Ctrl+I)",
- "strikethrough": "ضربه زدن",
+ "strikethrough": "خطخوردگی",
"inlineCode": "کد درون خطی",
- "bulletList": "لیست گلوله",
- "numberedList": "لیست شماره گذاری شده",
+ "bulletList": "فهرست نقطهای",
+ "numberedList": "فهرست شمارهگذاریشده",
"insertImage": "درج تصویر",
"userNotFound": "کاربر پیدا نشد",
"multipleUsersMatch": "چند کاربر مطابقت دارند",
@@ -271,9 +271,9 @@ export default {
"diagramRenderError": "نمودار ارائه نشد",
"diagramLoadError": "نمودار بارگیری نشد",
"diagramSaveError": "نمودار ذخیره نشد",
- "mermaidRendering": "نمودار رندرینگ",
- "mermaidParseError": "خطای تجزیه پری دریایی",
- "mermaidEmpty": "بلوک پری دریایی خالی",
+ "mermaidRendering": "در حال رندر نمودار Mermaid",
+ "mermaidParseError": "خطای تجزیه Mermaid",
+ "mermaidEmpty": "بلوک Mermaid خالی",
"useProvider": "ویرایش با {label}",
"useRichText": "از ویرایشگر متن غنی استفاده کنید",
"providerActive": "{label} فعال است",
@@ -296,18 +296,18 @@ export default {
"dismissAllNotifications": "آیا مطمئن هستید که میخواهید همه اعلانها را رد کنید؟ این قابل واگرد نیست.",
"removeAvatar": "آیا مطمئن هستید که می خواهید عکس نمایه خود را حذف کنید؟",
"revokeCalendarFeed": "آیا مطمئنید که میخواهید فید تقویم URL خود را لغو کنید؟ هر تقویمی که از این URL استفاده کند همگامسازی متوقف میشود.",
- "deleteTheme": "آیا مطمئن هستید که می خواهید این موضوع را حذف کنید؟ این قابل واگرد نیست.",
+ "deleteTheme": "آیا مطمئن هستید که می خواهید این پوسته را حذف کنید؟ این قابل واگرد نیست.",
"resetBoardConfig": "آیا مطمئن هستید که می خواهید پیکربندی برد پیش فرض را بازنشانی کنید؟ با این کار پیکربندی سفارشی شما حذف می شود.",
"deleteCustomField": "آیا مطمئن هستید که می خواهید فیلد سفارشی \"{name}\" را حذف کنید؟ این باعث حذف آن از تمام پروژه ها می شود.",
"deleteLinkType": "آیا مطمئن هستید که می خواهید این نوع پیوند را حذف کنید؟ با این کار تمام پیوندهای این نوع نیز حذف می شود.",
"deleteAsset": "آیا مطمئن هستید که می خواهید این دارایی را حذف کنید؟",
"deleteAssetSet": "آیا مطمئن هستید که می خواهید این مجموعه دارایی را حذف کنید؟ با این کار تمام داراییها، انواع و دستههای موجود در آن حذف میشود.",
"deleteAssetType": "آیا مطمئن هستید که می خواهید این نوع دارایی را حذف کنید؟ داراییهایی که از این نوع استفاده میکنند، دیگر نوع خاصی ندارند.",
- "deleteCategory": "آیا مطمئن هستید که می خواهید این دسته را حذف کنید؟ دسته های فرزند به والدین منتقل می شوند.",
+ "deleteCategory": "آیا مطمئن هستید که می خواهید این دسته را حذف کنید؟ دسته های فرزند به والد منتقل می شوند.",
"revokeRole": "آیا مطمئنید که می خواهید این نقش را لغو کنید؟",
"quitApplication": "آیا مطمئن هستید که می خواهید از برنامه خارج شوید؟ سرور خاموش خواهد شد.",
"deleteConnection": "آیا مطمئن هستید که می خواهید این اتصال را حذف کنید؟ این عمل قابل لغو نیست.",
- "deleteWidget": "این بخش حذف شود؟ تمام ویجت های این بخش حذف خواهند شد.",
+ "deleteWidget": "این ویجت حذف شود؟ این ویجت از این بخش حذف خواهد شد.",
"deleteScreen": "آیا مطمئن هستید که می خواهید صفحه نمایش \"{name}\" را حذف کنید؟ این روی تمام فضاهای کاری که از این صفحه استفاده می کنند تأثیر می گذارد."
},
"alerts": {
@@ -319,7 +319,7 @@ export default {
"startTimerFromItem": "لطفاً یک تایمر از داخل یک مورد کاری برای ارائه زمینه شروع کنید.",
"cannotDeleteDefaultScreen": "نمی توان صفحه پیش فرض را حذف کرد. این صفحه برای فضاهای کاری بدون مجموعه پیکربندی لازم است.",
"applicationShuttingDown": "برنامه در حال خاموش شدن است...",
- "pdfExportComingSoon": "PDF صادرات به زودی برای نمای بلوک زمانی",
+ "pdfExportComingSoon": "PDF برونریزی به زودی برای نمای بلوکی جدول زمانی",
"configUpdatedSuccess": "مجموعه پیکربندی با موفقیت به روز شد. همه موارد کاری در حال حاضر از وضعیتهای گردش کار جدید استفاده میکنند.",
"failedToSave": "ذخیره نشد: {error}",
"failedToDelete": "حذف نشد: {error}",
@@ -333,14 +333,14 @@ export default {
"failedToApplyConfig": "تغییر پیکربندی اعمال نشد: {error}",
"failedToAddManager": "مدیر اضافه نشد: {error}",
"failedToRemoveManager": "مدیر حذف نشد: {error}",
- "failedToSaveWorkspace": "پروژه ذخیره نشد. لطفا ورودی خود را بررسی کنید و دوباره امتحان کنید.",
+ "failedToSaveWorkspace": "فضای کاری ذخیره نشد. لطفاً ورودی خود را بررسی کنید و دوباره امتحان کنید.",
"failedToResetConfig": "پیکربندی بازنشانی نشد: {error}",
"failedToToggleStatus": "تغییر وضعیت نوع پیوند انجام نشد: {error}",
"failedToAssignRole": "نقش تعیین نشد: {error}",
"failedToRevokeRole": "نقش لغو نشد: {error}",
- "failedToUpdateRole": "نقش همه افراد بهروزرسانی نشد: {error}",
+ "failedToUpdateRole": "بهروزرسانی نقش همه کاربران ناموفق بود: {error}",
"failedToLoadFields": "فیلدها بارگیری نشد: {error}",
- "failedToSaveFields": "تکالیف فیلد ذخیره نشد: {error}",
+ "failedToSaveFields": "تخصیصهای فیلد ذخیره نشد: {error}",
"errorAddingTestCase": "خطا در افزودن مورد آزمایشی: {error}",
"failedToCreateLabel": "برچسب ایجاد نشد: {error}",
"failedToSaveLayout": "تغییرات طرح بندی ذخیره نشد",
@@ -378,16 +378,16 @@ export default {
"itemsPerPage": "موارد در هر صفحه:",
"previousPage": "صفحه قبلی",
"nextPage": "صفحه بعدی",
- "goToPage": "Go به صفحه {page}",
+ "goToPage": "برو به صفحه {page}",
"pageOf": "صفحه {current} از {total}"
},
"userAvatar": {
"myWorkspace": "فضای کاری من",
"myWorkspaceSubtitle": "فضای کاری شخصی برای کارها و یادداشت ها",
- "profileSubtitle": "پروفایل و تنظیمات خود را مدیریت کنید",
+ "profileSubtitle": "نمایه و تنظیمات خود را مدیریت کنید",
"security": "امنیت",
- "securitySubtitle": "رمزهای عبور، نشانههای 2FA و API را مدیریت کنید",
- "themeTitle": "موضوع: {mode}",
+ "securitySubtitle": "رمزهای عبور، توکنهای 2FA و API را مدیریت کنید",
+ "themeTitle": "پوسته: {mode}",
"themeLight": "نور",
"themeDark": "تاریک",
"themeSystem": "سیستم",
@@ -397,7 +397,7 @@ export default {
},
"aria": {
"close": "بستن",
- "dragToReorder": "برای سفارش مجدد بکشید",
+ "dragToReorder": "برای جابهجایی بکشید",
"refresh": "تازه کردن",
"removeField": "حذف فیلد",
"removeFromSection": "حذف از بخش",
@@ -405,7 +405,7 @@ export default {
"removeCurrentStep": "مرحله فعلی را حذف کنید",
"dismissNotification": "رد اطلاعیه",
"mainNavigation": "ناوبری اصلی",
- "resizeNavigation": "تغییر اندازه نوار کناری پیمایش",
+ "resizeNavigation": "تغییر اندازه نوار کناری ناوبری",
"sidebarResizeHint": "برای تغییر اندازه بکشید. برای بازنشانی دوبار کلیک کنید.",
"mentionUsers": "کاربران را ذکر کنید",
"notifications": "اطلاعیه ها",
@@ -425,7 +425,7 @@ export default {
"widgets": {
"stats": {
"collections": "مجموعه ها",
- "totalItems": "مجموع اقلام"
+ "totalItems": "مجموع موارد"
},
"removeWidget": "ویجت را حذف کنید",
"defaultWidth": "پیشفرض: {width}/{columns} عرض",
@@ -443,7 +443,7 @@ export default {
"rowCount5": "5 ردیف",
"rowCount10": "10 ردیف",
"rowCount15": "15 ردیف",
- "rowCountAll": "همه ردیف ها",
+ "rowCountAll": "همه ردیفها",
"narrowWidth": "باریک (عرض 1/3)",
"mediumWidth": "متوسط (2/3 عرض)",
"fullWidth": "عرض کامل",
@@ -454,11 +454,11 @@ export default {
},
"completionChart": {
"title": "نمودار تکمیل",
- "emptyMessage": "هیچ داده تکمیلی موجود نیست"
+ "emptyMessage": "داده تکمیلشده موجود نیست"
},
"createdChart": {
- "title": "نمودار ایجاد شد",
- "emptyMessage": "هیچ داده ایجاد موجود نیست"
+ "title": "نمودار ایجاد",
+ "emptyMessage": "داده ایجادشده موجود نیست"
},
"recentItems": {
"loadingText": "در حال بارگیری موارد اخیر...",
@@ -499,11 +499,11 @@ export default {
},
"overdueItems": {
"loadingStatus": "در حال بارگیری...",
- "itemCount": "{count} موارد عقب افتاده",
+ "itemCount": "{count} مورد عقبافتاده",
"refreshAriaLabel": "موارد عقب افتاده را تازه کنید",
- "loadingText": "در حال بارگیری اقلام عقب افتاده...",
- "emptyTitle": "بدون اقلام معوق",
- "emptySubtitle": "همه موارد در مسیر هستند",
+ "loadingText": "در حال بارگیری موارد عقبافتاده...",
+ "emptyTitle": "مورد معوقی وجود ندارد",
+ "emptySubtitle": "همه موارد طبق برنامه پیش میروند",
"loadError": "موارد عقب افتاده بارگیری نشد",
"daysOverdue": "{days} روز عقب افتاده است"
},
@@ -511,10 +511,10 @@ export default {
"loadingStatus": "در حال بارگیری...",
"itemCount": "{count} در راه است",
"refreshAriaLabel": "مهلت های آینده را به روز کنید",
- "loadingText": "بارگیری ضرب الاجل های آینده...",
- "emptyTitle": "بدون ضرب الاجل آینده",
+ "loadingText": "در حال بارگیری مهلتهای آینده...",
+ "emptyTitle": "مهلت آیندهای وجود ندارد",
"emptySubtitle": "موارد دارای تاریخ سررسید در اینجا ظاهر می شوند",
- "loadError": "مهلت های آتی بارگیری نشد"
+ "loadError": "مهلتهای آینده بارگیری نشد"
},
"iterationTimeline": {
"loadingStatus": "در حال بارگیری...",
@@ -534,20 +534,20 @@ export default {
"emptyTitle": "هیچ الزامی پیکربندی نشده است",
"emptyDescription": "برای مشاهده دادههای پوشش، انواع نیازمندیها را در گزارشهای آزمایشی پیکربندی کنید.",
"chartAria": "تجزیه پوشش تست",
- "covered": "پوشیده شده است",
- "notCovered": "پوشیده نشده است",
+ "covered": "پوشش داده شده",
+ "notCovered": "بدون پوشش",
"requirementCount": "{covered} از {total} مورد نیاز",
"requirements": "{count} مورد نیاز",
"requirements_other": "{count} مورد نیاز",
"requirements_one": "{count} مورد نیاز",
- "linkedCases": "موارد آزمایشی را به هم مرتبط کرده اند"
+ "linkedCases": "موارد آزمایشی مرتبط"
}
},
"recurrence": {
"title": "عود",
"description": "قوانین وظایف تکراری را مدیریت کنید",
"frequency": "فرکانس",
- "interval": "هر بار تکرار کنید",
+ "interval": "فاصله تکرار",
"daily": "روزانه",
"weekly": "هفتگی",
"monthly": "ماهانه",
@@ -563,12 +563,12 @@ export default {
"previewLoading": "در حال بارگیری پیش نمایش...",
"previewError": "پیش نمایش بارگیری نشد",
"copySettings": "کپی از قالب",
- "copyAssignee": "واگذارنده را کپی کنید",
- "copyPriority": "اولویت کپی",
+ "copyAssignee": "مسئول را کپی کنید",
+ "copyPriority": "کپی اولویت",
"copyCustomFields": "فیلدهای سفارشی را کپی کنید",
"copyDescription": "توضیحات را کپی کنید",
- "leadTime": "تولید پیش رو (روزها)",
- "statusOnCreate": "وضعیت در حال ایجاد",
+ "leadTime": "زمان پیشروی (روزها)",
+ "statusOnCreate": "وضعیت هنگام ایجاد",
"active": "فعال",
"inactive": "غیر فعال",
"instances": "نمونه های تولید شده",
@@ -577,8 +577,8 @@ export default {
"generating": "در حال تولید...",
"generated": "{count} نمونه تولید شد",
"addRecurrence": "تکرار اضافه کنید",
- "noRule": "بدون تنظیم مجدد",
- "setUp": "تنظیم مجدد",
+ "noRule": "بدون تنظیم",
+ "setUp": "تنظیم تکرار",
"editRule": "ویرایش تکرار",
"deleteRule": "حذف تکرار",
"deleteConfirm": "آیا مطمئن هستید که می خواهید این قانون تکرار را حذف کنید؟ نمونه های تولید شده تحت تأثیر قرار نمی گیرند.",
@@ -610,13 +610,13 @@ export default {
"wed": "چهارشنبه",
"thu": "پنج شنبه",
"fri": "جمعه",
- "sat": "نشست",
- "sun": "خورشید"
+ "sat": "شنبه",
+ "sun": "یکشنبه"
},
"footer": {
- "platformName": "Windshift پلتفرم مدیریت کار",
+ "platformName": "پلتفرم مدیریت کار Windshift",
"aboutWindshift": "درباره Windshift",
- "apiReference": "API مرجع",
+ "apiReference": "مرجع API",
"licenses": "مجوزها",
"reportProblem": "یک مشکل را گزارش کنید"
}
diff --git a/frontend/src/lib/locales/fa/workflows.js b/frontend/src/lib/locales/fa/workflows.js
index 8e1f1fcee..6bbf28a32 100644
--- a/frontend/src/lib/locales/fa/workflows.js
+++ b/frontend/src/lib/locales/fa/workflows.js
@@ -17,7 +17,7 @@ export default {
"transitionCount": "انتقال: {count}",
"defaults": {
"open": {
- "name": "باز کنید",
+ "name": "باز",
"description": "مورد کاری جدید، هنوز شروع نشده است"
},
"inProgress": {
@@ -38,7 +38,7 @@ export default {
"subtitle": "سطوح اولویت را با نمادها و رنگ ها پیکربندی کنید",
"priority": "اولویت",
"priorities_one": "اولویت {count}",
- "priorities_other": "{count} اولویتها",
+ "priorities_other": "{count} اولویت",
"createPriority": "اولویت ایجاد کنید",
"editPriority": "ویرایش اولویت",
"deletePriority": "حذف اولویت",
@@ -126,12 +126,12 @@ export default {
"fromAllStatuses": "انتقال از هر وضعیت دیگر را مجاز کنید",
"transitionHint4": "\"همه\" را در یک وضعیت علامت بزنید تا امکان انتقال از هر وضعیت دیگر فراهم شود",
"filterStatuses": "فیلتر وضعیت ها",
- "transitionHelp": "کمک انتقال",
+ "transitionHelp": "راهنمای انتقال",
"noStatusesMatchFilter": "هیچ وضعیتی با فیلتر شما مطابقت ندارد"
},
"screens": {
"title": "صفحه نمایش ها",
- "subtitle": "طرحبندی میدانی را برای مسائل و پروژهها تعریف کنید",
+ "subtitle": "طرحبندی فیلدها را برای مسائل و پروژهها تعریف کنید",
"screen": "صفحه نمایش",
"screens": "{count} صفحه نمایش",
"screens_one": "صفحه نمایش {count}",
@@ -198,15 +198,15 @@ export default {
"title": "مجموعه شرایط",
"subtitle": "شرایطی را تعریف کنید که انتقال گردش کار را محدود می کند",
"add": "مجموعه شرایط را اضافه کنید",
- "new": "ست وضعیت جدید",
- "empty": "هیچ شرطی تعیین نمی شود",
+ "new": "مجموعه شرایط جدید",
+ "empty": "هیچ شرطی تعریف نشده است",
"emptyDesc": "برای محدود کردن انتقالهای گردش کار بر اساس نقشهای کاربر، گروهها، مقادیر فیلد یا اسکریپتها، مجموعههای شرطی ایجاد کنید.",
"createFirst": "ایجاد مجموعه شرایط",
"searchPlaceholder": "شرایط جستجو تنظیم می شود...",
"noMatchingResults": "هیچ مجموعه شرطی با جستجوی شما مطابقت ندارد.",
"workflow": "گردش کار",
"transitions": "انتقال ها",
- "general": "ژنرال",
+ "general": "عمومی",
"name": "نام",
"namePlaceholder": "به عنوان مثال، محدودیت های برنامه نویس",
"description": "توضیحات",
@@ -228,7 +228,7 @@ export default {
"removeConditions": "تمام شرایط را حذف کنید",
"removeCondition": "شرایط را حذف کنید",
"logicMode": "حالت منطقی",
- "type": "تایپ کنید",
+ "type": "نوع",
"role": "نقش",
"group": "گروه",
"selectGroup": "انتخاب گروه...",
@@ -239,7 +239,7 @@ export default {
"scriptReference": "مرجع اسکریپت",
"scriptReferenceDesc": "متغیرها و ویژگی های موجود در شرایط اسکریپت.",
"scriptRefVariable": "متغیر",
- "scriptRefType": "تایپ کنید",
+ "scriptRefType": "نوع",
"scriptRefDescription": "توضیحات",
"scriptRefAlwaysPresent": "همیشه حاضر",
"scriptRefIfSet": "اگر تنظیم شود",
@@ -253,7 +253,7 @@ export default {
"userField": "فیلد کاربری",
"selectUserField": "انتخاب فیلد کاربری...",
"conditionMode": "حالت",
- "modeCondition": "وضعیت",
+ "modeCondition": "شرط",
"modeValidator": "اعتبار سنجی",
"modeConditionDesc": "در صورت شکست قانون، انتقال را پنهان می کند",
"modeValidatorDesc": "هنگام تلاش برای انتقال، خطا را نشان می دهد",
@@ -263,7 +263,7 @@ export default {
},
"approvalSets": {
"title": "مجموعه های تایید",
- "subtitle": "تاییدیه های چند مرحله ای که دروازه را از وضعیت خارج می کند.",
+ "subtitle": "تاییدیههای چند مرحلهای که انتقالها از یک وضعیت را کنترل میکنند.",
"add": "مجموعه تایید را اضافه کنید",
"new": "مجموعه تایید جدید",
"empty": "بدون مجموعه تایید",
@@ -273,7 +273,7 @@ export default {
"noMatchingResults": "هیچ مجموعه تأییدی با جستجوی شما مطابقت ندارد.",
"workflow": "گردش کار",
"statuses": "وضعیت ها",
- "general": "ژنرال",
+ "general": "عمومی",
"name": "نام",
"namePlaceholder": "به عنوان مثال، تأیید انتشار استاندارد",
"description": "توضیحات",
@@ -311,14 +311,14 @@ export default {
"quorumAll": "همه (هر تایید کننده باید تایید کند)",
"quorumCount": "تعداد (دقیقا N تایید کننده)",
"quorumPercent": "درصد (N٪ از مجموعه، گرد شده)",
- "quorumCountValue": "بشمار",
+ "quorumCountValue": "تعداد",
"quorumPercentValue": "درصد (1-100)",
"rejectionPolicy": "رد کردن",
"rejectionAnyFails": "هر گونه رد مرحله را شکست می دهد",
"rejectionRequiresQuorum": "برای شکست نیاز به حد نصاب است",
"approverSource": "منبع تایید کننده",
- "approverSourceCreator": "خالق مورد",
- "approverSourceAssignee": "واگذارنده فعلی",
+ "approverSourceCreator": "ایجادکننده مورد",
+ "approverSourceAssignee": "مسئول فعلی",
"approverSourceCurrentUser": "شخصی که باعث تایید شد",
"approverSourceUser": "کاربر خاص",
"approverSourceRegularField": "فیلد معمولی (assignee_id، creator_id،…)",
@@ -334,9 +334,9 @@ export default {
"allowSelfApproval": "تأیید خود را مجاز کنید - به همان کاربر اجازه دهید هم مورد را انتقال دهد و هم آن را تأیید کند",
"onLeave": "در مرخصی تایید کننده",
"onLeaveUseSubstitute": "استفاده از جایگزین (پیشفرض)",
- "onLeaveUseSubstituteDesc": "به بازیکن تعویضی که در رکورد مرخصی ثبت شده احترام می گذارد. اگر جایگزینی پیکربندی نشود، دوباره به حالت تشدید میرود.",
+ "onLeaveUseSubstituteDesc": "به جایگزینی که در رکورد مرخصی ثبت شده احترام میگذارد. اگر جایگزینی پیکربندی نشود، دوباره به حالت تشدید میرود.",
"onLeaveSkip": "از تأیید کننده عبور کنید",
- "onLeaveSkipDesc": "کاربر در مرخصی را از استخر رها کنید. در صورت خالی شدن استخر تشدید می شود.",
+ "onLeaveSkipDesc": "کاربر در مرخصی را از استخر حذف کنید. در صورت خالی شدن استخر تشدید میشود.",
"onLeaveKeep": "تایید کننده نگه دارید",
"onLeaveKeepDesc": "آنها را در استخر رها می کند. تایید کننده اصلی باید با وجود دور بودن پاسخ دهد.",
"fallbackTitle": "اگر تایید کننده نتواند تصمیم بگیرد",
@@ -344,8 +344,8 @@ export default {
"fallbackConnector": "اگر قانون مرخصی بالا یک استخر خالی ایجاد کند (هیچ جایگزینی وجود ندارد، یا پرش استخر را تخلیه میکند)، بهجای انتظار برای تایمر، تشدید بلافاصله شروع به کار میکند.",
"escalation": "وقتی هیچ تصمیمی به موقع نمی رسد",
"escalationDisabled": "بدون تشدید",
- "escalationDisabledDesc": "بی نهایت صبر کن مرحله هرگز به طور خودکار حل نمی شود. یک مدیر باید دخالت کند",
- "escalationActionReassignDesc": "گام را به شخص، نقش یا گروه دیگری بسپارید. پس از هر تایم اوت زنجیر شده تا حداکثر تشدید مجدد مسلح شوید.",
+ "escalationDisabledDesc": "برای همیشه صبر کنید. مرحله هرگز بهطور خودکار حل نمیشود. یک مدیر باید دخالت کند.",
+ "escalationActionReassignDesc": "گام را به شخص، نقش یا گروه دیگری بسپارید. پس از هر تایماوت زنجیرهای تا حداکثر تشدید، مجدداً فعال میشود.",
"escalationActionSkipStepDesc": "مرحله تایید شده را علامت بزنید و اجازه دهید درخواست در زنجیره ادامه یابد.",
"escalationActionAutoRejectDesc": "درخواست را رد کنید و انتقال رد پیکربندی شده را فعال کنید.",
"escalationAfterHours": "افزایش پس از (ساعت)",
@@ -355,8 +355,8 @@ export default {
"escalationActionAutoReject": "رد خودکار درخواست",
"escalationTarget": "هدف تشدید",
"maxEscalations": "حداکثر تشدید (خالی = نامحدود)",
- "chainedNote": "در صورت استفاده مجدد، escalation_due_at بعد از هر بازه زمانی تا این سقف، مجدداً مسلح می شود.",
- "overrideWarningTitle": "سر به بالا: این انتقال نیز با شرایط بسته می شود",
+ "chainedNote": "در صورت استفاده مجدد، escalation_due_at بعد از هر بازه زمانی تا این سقف، مجدداً فعال میشود.",
+ "overrideWarningTitle": "توجه: این انتقال نیز با شرایط کنترل میشود",
"overrideWarningBody": "هنگامی که موتور تأیید انتقال را روشن می کند، شرایط انتقالی که توسط تأییدیه انجام می شود، بی سر و صدا دور زده می شود. این شرایط همچنان برای تلاش مستقیم کاربر (که تأیید به هر حال مسدود می شود) اجرا می شود. برای جلوگیری از غافلگیری، حذف آن شرایط یا انتقال آنها به مرحله انتقال را در نظر بگیرید.",
"overrideWarningLearnMore": "قوانین شرایط تحت تأثیر را ببینید",
"overrideWarningCondReverseTitle": "توجه: یک مجموعه تأیید این انتقال را هدایت می کند",
diff --git a/frontend/src/lib/locales/fa/workspace.js b/frontend/src/lib/locales/fa/workspace.js
index cdf698884..cfc5bc212 100644
--- a/frontend/src/lib/locales/fa/workspace.js
+++ b/frontend/src/lib/locales/fa/workspace.js
@@ -5,8 +5,8 @@ export default {
"workspace": "فضای کار",
"template": "الگو",
"restricted": "محدود شده است",
- "visibility": "دید",
- "open": "باز کنید",
+ "visibility": "قابلیت مشاهده",
+ "open": "باز",
"workspaces_one": "{count} فضای کاری",
"workspaces_other": "{count} فضای کاری",
"createWorkspace": "ایجاد فضای کاری",
@@ -35,7 +35,7 @@ export default {
"unassignedCustomers": "مشتریان تعیین نشده",
"customerCount": "{count} مشتری",
"customerCount_one": "{count} مشتری",
- "customerCount_other": "{count} مشتریان",
+ "customerCount_other": "{count} مشتری",
"failedToLoadCustomers": "بارگیری مشتریان انجام نشد",
"failedToLoadOrganisations": "بارگیری سازمان ها انجام نشد",
"failedToAssignCustomer": "تخصیص مشتری به سازمان انجام نشد",
@@ -53,7 +53,7 @@ export default {
"noOrganisationsFound": "هیچ سازمانی یافت نشد",
"noCustomersFound": "مشتری پیدا نشد",
"unassigned": "اختصاص داده نشده است",
- "allCustomersAssigned": "همه مشتریان به سازمان ها منصوب می شوند",
+ "allCustomersAssigned": "همه مشتریان به سازمانها اختصاص داده میشوند",
"searchCustomers": "جستجوی مشتریان...",
"tryAdjustingSearch": "سعی کنید جستجوی خود را تنظیم کنید",
"dragCustomersHere": "مشتریان را به اینجا بکشید تا آنها را به این سازمان اختصاص دهید",
@@ -62,7 +62,7 @@ export default {
"sharing": "اشتراک گذاری",
"sharingMode": "درخواست اشتراک گذاری",
"sharingModeHelp": "کنترل می کند که آیا درخواست های مطرح شده توسط مخاطبین این سازمان با سازمان به اشتراک گذاشته می شود.",
- "sharingDisabled": "از کار افتاده است",
+ "sharingDisabled": "غیرفعال",
"sharingRequesterChoice": "مخاطبین در هر درخواست انتخاب می کنند",
"sharingAutomatic": "همیشه با سازمان به اشتراک گذاشته می شود",
"sharingAudience": "چه کسی می تواند درخواست های مشترک را ببیند",
@@ -73,7 +73,7 @@ export default {
"sharingSaved": "درخواست اشتراک به روز شد",
"sharingSaveFailed": "درخواست اشتراکگذاری بهروزرسانی نشد",
"contactLevels": "سطوح تماس",
- "contact": "تماس بگیرید",
+ "contact": "مخاطب",
"linked": "پیوند داده شده:",
"loadMore": "بارگیری بیشتر ({count} باقی مانده)",
"searchHintOrganisations": "از جستجو برای یافتن سریع سازمان استفاده کنید",
@@ -96,7 +96,7 @@ export default {
"metadata": {
"created": "ایجاد شده:",
"updated": "به روز شده:",
- "linkedUser": "کاربر لینک شده:"
+ "linkedUser": "کاربر پیوندشده:"
},
"contacts": "مخاطبین",
"backToCustomers": "بازگشت به مشتریان",
@@ -108,7 +108,7 @@ export default {
}
},
"items": {
- "requesterOpenTickets": "سایر بلیط های باز از این درخواست کننده",
+ "requesterOpenTickets": "سایر بلیتهای باز این درخواستکننده",
"requesterOpenTicketsHelp": "سایر بلیتهای باز از همان درخواستکننده - این مکالمه ممکن است متعلق به یکی از آنها باشد. ادغام کنید تا یک رشته باقی بماند.",
"requesterOpenTicketsEmpty": "هیچ بلیط باز دیگری از این درخواست کننده وجود ندارد.",
"findDuplicates": "موارد تکراری را پیدا کنید",
@@ -128,10 +128,10 @@ export default {
"item": "مورد",
"items_one": "{count} مورد",
"items_other": "{count} مورد",
- "createItem": "ایجاد آیتم",
+ "createItem": "ایجاد مورد",
"editItem": "ویرایش مورد",
"deleteItem": "حذف مورد",
- "viewItem": "مشاهده آیتم",
+ "viewItem": "مشاهده مورد",
"selectTeam": "تیم را انتخاب کنید",
"noTeam": "بدون تیم",
"participants": "شرکت کنندگان",
@@ -150,39 +150,39 @@ export default {
"incidentAcknowledged": "تصدیق کرد",
"incidentUnack": "عدم تصدیق",
"incidentUnacknowledged": "حادثه تایید نشده",
- "incidentResolve": "حل کند",
+ "incidentResolve": "حل کردن",
"incidentResolved": "حل شد",
- "incidentTriggered": "باعث شد",
+ "incidentTriggered": "فعال شد",
"incidentLowUrgency": "فوریت کم",
"incidentPolicy": "سیاست",
- "incidentTriggeredAt": "باعث شد",
- "incidentAckedBy": "تایید شده توسط",
+ "incidentTriggeredAt": "زمان فعالسازی",
+ "incidentAckedBy": "تصدیقشده توسط",
"incidentResolvedBy": "حل شده توسط",
- "incidentRepeat": "پاس تشدید",
+ "incidentRepeat": "تکرار تشدید",
"incidentActionFailed": "اقدام حادثه ناموفق بود",
"incidentResponderRequired": "شما برای این حادثه آماده نیستید",
"sla": {
"title": "سطوح خدمات",
"recalculating": "در حال محاسبه مجدد",
"dueOn": "سررسید {date}",
- "breached": "شکسته شد",
+ "breached": "نقض شد",
"warning": "هشدار",
"paused": "مکث کرد",
- "withinHours": "در ساعات سرویس دهی",
+ "withinHours": "در ساعات خدمات",
"outsideHours": "خارج از ساعت خدمات",
"elapsedOfGoal": "{elapsed} از {goal} هدف گذشته است",
- "notRunning": "بدون چرخه دویدن",
+ "notRunning": "بدون چرخه فعال",
"noGoal": "هیچ هدفی برای این مورد مطابقت ندارد",
"completedCycles": "چرخه های تکمیل شده ({count})",
"coverageDiscrepancies": {
- "sla_wider": "این SLA زمان را خارج از ساعات سرویس تیم محدود میشمارد.",
+ "sla_wider": "این SLA زمان را خارج از ساعات خدمات تیم محدود میشمارد.",
"team_wider": "تیم در مدت زمانی که SLA مستثنی است، پرسنل می شود.",
- "both": "SLA و ساعات سرویس تیم در هر دو جهت متفاوت است."
+ "both": "SLA و ساعات خدمات تیم در هر دو جهت متفاوت است."
},
"coverageNotes": {
"sla_outside_team_service_hours": "SLA زمانی را محاسبه میکند که تیم کار نمیکند.",
"team_service_hours_outside_sla": "زمان پرسنل تیم از SLA مستثنی است.",
- "sla_and_team_service_hours_differ": "SLA و ساعات سرویس تیم هر دو متفاوت است."
+ "sla_and_team_service_hours_differ": "SLA و ساعات خدمات تیم هر دو متفاوت است."
}
},
"itemKey": "کلید",
@@ -191,27 +191,27 @@ export default {
"itemType": "نوع مورد",
"itemStatus": "وضعیت",
"itemPriority": "اولویت",
- "assignee": "مأمور",
- "reporter": "خبرنگار",
+ "assignee": "مسئول",
+ "reporter": "گزارشدهنده",
"dueDate": "سررسید",
"startDate": "تاریخ شروع",
- "estimate": "تخمین بزنید",
+ "estimate": "تخمین",
"timeSpent": "زمان صرف شده",
"remaining": "باقی مانده است",
- "parent": "پدر و مادر",
- "children": "بچه ها",
+ "parent": "والد",
+ "children": "فرزندان",
"subtasks": "وظایف فرعی",
"linkedItems": "موارد مرتبط",
"attachments": "پیوست ها",
"comments": "نظرات",
"activity": "فعالیت",
"history": "تاریخچه",
- "selectAssignee": "واگذارنده را انتخاب کنید",
- "inheritProject": "پروژه ارث بری",
+ "selectAssignee": "مسئول را انتخاب کنید",
+ "inheritProject": "ارثبری پروژه",
"inheritProjectFrom": "ارث بردن از {name}",
"projectInherited": "{name} (ارثی)",
"noProject": "بدون پروژه",
- "setProject": "پروژه را انتخاب کنید",
+ "setProject": "تعیین پروژه",
"failedToSaveLabels": "برچسبها ذخیره نشدند",
"approvals": {
"title": "تاییدیه ها",
@@ -265,7 +265,7 @@ export default {
"comment": "نظر دهید",
"commentPlaceholder": "نظر اختیاری…",
"auditLog": "گزارش حسابرسی",
- "userNumber": "کاربر شماره{id}",
+ "userNumber": "کاربر #{id}",
"system": "سیستم"
},
"noItems": "هیچ موردی یافت نشد",
@@ -276,23 +276,23 @@ export default {
"itemDeleted": "مورد با موفقیت حذف شد",
"deleted": "این مورد حذف شد.",
"itemTypeChanged": "نوع مورد تغییر کرد",
- "subtasksCreated": "{count} کار فرعی ایجاد کرد",
- "subtasksCreated_one": "زیر کار {count} ایجاد کرد",
- "subtasksCreated_other": "وظایف فرعی {count} ایجاد کرد",
+ "subtasksCreated": "{count} زیرکار ایجاد شد",
+ "subtasksCreated_one": "زیرکار {count} ایجاد شد",
+ "subtasksCreated_other": "{count} زیرکار ایجاد شد",
"noChildItemType": "هیچ نوع مورد فرزندی در دسترس نیست",
- "subtasksCreateFailed": "وظایف فرعی ایجاد نشد",
+ "subtasksCreateFailed": "زیرکارها ایجاد نشدند",
"assignedToYou": "به شما اختصاص داده شده است",
"createdByYou": "توسط شما ایجاد شده است",
"recentlyViewed": "اخیرا مشاهده شده است",
"recentlyUpdated": "به تازگی به روز شده است",
"timeTracking": "ردیابی زمان",
"details": "جزئیات",
- "agentLog": "گزارش نماینده",
+ "agentLog": "گزارش عامل",
"agentLogEmpty": "هنوز هیچ عاملی برای این مورد اجرا نشده است",
"agentLogTriggeredBy": "تحریک شده توسط",
"agentLogWaiting": "در انتظار خروجی…",
- "agentRunSingular": "اجرا کنید",
- "agentRunPlural": "اجرا می شود",
+ "agentRunSingular": "اجرا",
+ "agentRunPlural": "اجراها",
"agentRerunLabel": "عامل را دوباره اجرا کنید",
"agentRerunStarting": "شروع…",
"agentRerunBusy": "اجرا در حال انجام است",
@@ -304,7 +304,7 @@ export default {
"lastUpdated": "آخرین به روز رسانی",
"healthOverview": "سلامت مورد",
"healthOverviewDescription": "سیگنالها بر اساس فعالیت اخیر، تاریخ سررسید و سابقه وضعیت.",
- "activityHealthCompleted": "کامل",
+ "activityHealthCompleted": "تکمیلشده",
"activityHealthUnknown": "ناشناس",
"activityHealthStale": "کهنه",
"activityHealthActive": "فعال",
@@ -315,7 +315,7 @@ export default {
"activityIdleDays_other": "{count} روز بیکار",
"lastActivityAt": "آخرین فعالیت {date}",
"activityUnavailable": "هیچ مهر زمانی فعالیت در دسترس نیست",
- "dueHealthCompleted": "کامل",
+ "dueHealthCompleted": "تکمیلشده",
"dueHealthUnscheduled": "برنامه ریزی نشده است",
"dueHealthOverdue": "عقب افتاده",
"dueHealthToday": "سررسید امروز",
@@ -335,29 +335,29 @@ export default {
"statusDurationsRetry": "دوباره امتحان کنید",
"statusDurationsEmpty": "هیچ سابقه وضعیتی هنوز در دسترس نیست.",
"currentStatus": "فعلی",
- "durationLessThanMinute": "< 1 متر",
+ "durationLessThanMinute": "< ۱ دقیقه",
"timeline": "جدول زمانی",
"by": "توسط",
"workItemInformation": "اطلاعات مورد کار",
"id": "ID",
- "type": "تایپ کنید",
+ "type": "نوع",
"workItem": "مورد کار",
"noProjectConfigured": "هیچ پروژه ای برای ردیابی زمان پیکربندی نشده است",
"setDefaultProject": "یک پروژه پیشفرض را در تنظیمات فضای کاری یا مورد برای ثبت زمان تنظیم کنید",
"timeEntries": "ورودی های زمان",
"startTimer": "تایمر را شروع کنید",
- "logTime": "زمان ثبت نام",
+ "logTime": "ثبت زمان",
"startTimerTitle": "ردیابی زمان برای این مورد کاری را شروع کنید",
"logTimeTitle": "زمان ثبت دستی روی این مورد کار کرده است",
"noTimeLogged": "هنوز زمانی ثبت نشده است",
- "logged": "وارد شده است",
- "loggedOf": "وارد شده از",
+ "logged": "ثبتشده است",
+ "loggedOf": "ثبتشده از",
"estimated": "برآورد شده است",
- "includeChildItems": "شامل وسایل کودک",
+ "includeChildItems": "شامل موارد فرزند",
"rollupTruncated": "محدود به اولین {max} مورد فرزند",
"rollupItemCount": "در میان {count} موارد جمع شده است",
- "rollupItemCount_one": "روی آیتم {count} پیچید",
- "rollupItemCount_other": "در میان {count} موارد جمع شده است",
+ "rollupItemCount_one": "روی {count} مورد جمع شده است",
+ "rollupItemCount_other": "روی {count} مورد جمع شده است",
"workItemDetails": "جزئیات مورد کار",
"fullDetails": "جزئیات کامل",
"errorLoadingWorkItem": "خطا در بارگیری مورد کاری",
@@ -374,29 +374,29 @@ export default {
"deleteTimeEntryConfirm": "آیا مطمئن هستید که می خواهید این ورودی زمانی را حذف کنید؟ این عمل قابل لغو نیست.",
"noDescription": "بدون شرح",
"itemCopiedAs": "مورد کاری با موفقیت به عنوان {key} کپی شد",
- "clickToViewCopied": "برای مشاهده آیتم کپی شده کلیک کنید",
+ "clickToViewCopied": "برای مشاهده مورد کپیشده کلیک کنید",
"failedToCopy": "کپی مورد ناموفق بود",
"moveWorkspaceMenu": "به فضای کاری حرکت کنید",
"moveWorkspaceTitle": "انتقال \"{title}\"",
"moveWorkspaceSubtitle": "پیکربندی مقصد را انتخاب کنید، سپس هر فیلد را قبل از حرکت مرور کنید.",
"moveWorkspaceDestination": "فضای کاری مقصد",
"moveWorkspaceDestinationPlaceholder": "انتخاب یک فضای کاری…",
- "moveWorkspaceLoadingPreview": "پیشنمایش حرکت دقیق ساختمان…",
+ "moveWorkspaceLoadingPreview": "در حال بارگیری پیشنمایش دقیق انتقال…",
"moveWorkspaceNewKeyHint": "پس از تأیید، شماره مقصد بعدی در دسترس تعیین می شود.",
- "moveWorkspaceChildrenDetached": "{count} فرزندان مستقیم به ریشه های فضای کاری منبع تبدیل می شوند",
+ "moveWorkspaceChildrenDetached": "{count} فرزند مستقیم به موارد ریشه فضای کاری مبدأ تبدیل میشوند",
"moveWorkspaceDeadKeyWarning": "{key} حل نخواهد شد و هرگز مجدداً استفاده نخواهد شد.",
"moveWorkspaceNoPriority": "بدون اولویت",
- "moveWorkspaceConfirm": "انتقال آیتم",
+ "moveWorkspaceConfirm": "انتقال مورد",
"moveWorkspaceCancel": "لغو کنید",
"moveWorkspaceMoving": "در حال حرکت…",
"moveWorkspaceSuccess": "مورد به عنوان {key} منتقل شد",
"moveWorkspaceLoadError": "فضاهای کاری مقصد بارگیری نشد",
- "moveWorkspacePreviewError": "ساخت پیش نمایش حرکت ناموفق بود",
+ "moveWorkspacePreviewError": "بارگیری پیشنمایش انتقال ناموفق بود",
"moveWorkspaceError": "انتقال مورد انجام نشد",
"mergeMenu": "موارد تکراری را در این ادغام کنید",
"mergeTitle": "موارد تکراری را در این بلیط ادغام کنید",
"mergeDuplicateLabel": "بلیط تکراری",
- "mergeHelp": "جستجوی بلیط تکراری نظرات، پیوستها و رشته ایمیل آن به اینجا منتقل میشوند و نسخه تکراری پیوندی به این بلیط را نشان میدهد.",
+ "mergeHelp": "نظرات، پیوستها و رشته ایمیل بلیط تکراری به اینجا منتقل میشوند و نسخه تکراری پیوندی به این بلیط را نشان میدهد.",
"mergeDifferentRequester": "این بلیط ها متقاضیان مختلفی دارند. نظرات تکراری به اینجا منتقل میشوند اما خصوصی علامتگذاری میشوند و فایلهای آن، رشته ایمیل و شرکتکنندگان در نسخه تکراری باقی میمانند.",
"mergeSelfError": "یک بلیط را نمی توان در خودش ادغام کرد",
"mergeConfirm": "ادغام",
@@ -409,7 +409,7 @@ export default {
"splitNewTitlePlaceholder": "این پیگیری برای چیست؟",
"splitSelectComments": "نظرات را برای انتقال انتخاب کنید",
"splitNoComments": "هیچ نظری برای تقسیم وجود ندارد",
- "splitTitleRequired": "یک عنوان برای زیر تیکت جدید لازم است",
+ "splitTitleRequired": "عنوان زیربلیت جدید لازم است",
"splitSelectionRequired": "حداقل یک نظر را برای تفکیک انتخاب کنید",
"splitConfirm": "ایجاد زیربلیط",
"splitWorking": "در حال ایجاد…",
@@ -421,76 +421,76 @@ export default {
"deleteWorkItem": "حذف مورد کاری",
"confirmDeleteItem": "آیا مطمئن هستید که می خواهید \"{title}\" را حذف کنید؟ این عمل قابل لغو نیست.",
"failedToDelete": "مورد حذف نشد",
- "deleteItemWithChildren": "حذف آیتم با کودکان",
+ "deleteItemWithChildren": "حذف مورد با فرزندان",
"itemHasChildren": "این مورد {count} مورد فرزند دارد.",
"itemHasChildrenSingular": "این مورد دارای 1 مورد فرزند است.",
"deleteAllOption": "حذف همه موارد ({count})",
"deleteAllDescription": "این مورد و همه فرزندان آن را برای همیشه حذف کنید",
- "reparentOption": "فرزندان را اصلاح کنید",
+ "reparentOption": "تغییر والد فرزندان",
"reparentDescription": "فرزندان را به والد این مورد منتقل کنید، سپس فقط این مورد را حذف کنید",
"typeToConfirm": "برای تأیید حذف، «{title}» را تایپ کنید",
"confirmationPlaceholder": "برای تایید عنوان را تایپ کنید...",
"deleteAllItems": "حذف همه موارد",
"reparentAndDelete": "تغییر والد و حذف",
- "reparentFailed": "در تربیت فرزندان ناموفق بود",
+ "reparentFailed": "تغییر والد فرزندان ناموفق بود",
"cascadeDeleteFailed": "درخت مورد حذف نشد",
- "deletedItemsCount": "{count} مورد را حذف کرد",
- "reparentedAndDeleted": "بچهها دوباره والدین شدند و مورد حذف شد",
- "selectNewParent": "انتخاب والدین جدید برای فرزندان",
+ "deletedItemsCount": "{count} مورد حذف شد",
+ "reparentedAndDeleted": "فرزندان دوباره والد شدند و مورد حذف شد",
+ "selectNewParent": "انتخاب والد جدید برای فرزندان",
"selectNewParentPlaceholder": "یک مورد والد را انتخاب کنید...",
- "makeRootItem": "موارد ریشه (بدون والدین) بسازید",
+ "makeRootItem": "موارد ریشه (بدون والد) بسازید",
"reparentLevelHint": "فقط نشان دادن موارد در همان سطح سلسله مراتبی",
"noOtherItemsAtLevel": "هیچ مورد دیگری در این سطح وجود ندارد - «ساخت موارد ریشه» را انتخاب کنید یا از بالا انتخاب کنید",
- "reparentToGrandparent": "کودکان به پدربزرگ و مادربزرگ منتقل خواهند شد",
- "childrenWillBecomeRoot": "کودکان به آیتم های ریشه تبدیل می شوند",
- "failedToUpdateWatchStatus": "وضعیت ساعت بهروزرسانی نشد",
+ "reparentToGrandparent": "فرزندان به والد بالاتر منتقل خواهند شد",
+ "childrenWillBecomeRoot": "فرزندان به موارد ریشه تبدیل میشوند",
+ "failedToUpdateWatchStatus": "وضعیت تماشا بهروزرسانی نشد",
"copyWorkItem": "کپی مورد کار",
- "unwatchWorkItem": "لغو پیگیری مورد",
- "watchWorkItem": "ساعت کاری مورد",
+ "unwatchWorkItem": "لغو تماشای مورد",
+ "watchWorkItem": "تماشای مورد",
"watchers": "ناظران",
"watchersEmpty": "هنوز کسی این مورد را تماشا نکرده است.",
"watcherAdd": "ناظر را اضافه کنید",
"watcherRemove": "ناظر را حذف کنید",
"watcherYou": "(شما)",
"watcherPickUser": "کاربری را برای افزودن انتخاب کنید",
- "watchersAddFailed": "تماشاگر اضافه نشد",
+ "watchersAddFailed": "ناظر اضافه نشد",
"watchersRemoveFailed": "ناظر حذف نشد",
- "noSubIssueTypes": "هیچ نوع موضوع فرعی موجود نیست",
- "cannotCreateChildItems": "نمی توان موارد کار کودک را برای این سطح مورد ایجاد کرد.",
+ "noSubIssueTypes": "هیچ نوع زیرموردی موجود نیست",
+ "cannotCreateChildItems": "نمی توان موارد کار فرزند را برای این سطح مورد ایجاد کرد.",
"workItems": "اقلام کار",
"linkedTo": "مرتبط به",
- "goToLinkedWorkItem": "Go به مورد کاری مرتبط",
- "goTo": "Go به {title}",
- "noParent": "بدون پدر و مادر",
+ "goToLinkedWorkItem": "برو به مورد کاری مرتبط",
+ "goTo": "برو به {title}",
+ "noParent": "بدون والد",
"setParent": "تنظیم والد",
- "changeParent": "تغییر پدر و مادر",
+ "changeParent": "تغییر والد",
"searchForParentItem": "جستجوی مورد والد...",
"showingItemsFromLevel": "فقط نمایش موارد از سطح سلسله مراتب {level}",
"oneLevelAbove": "یک سطح بالاتر از {name}",
"searchParentAcrossWorkspaces": "مورد والد را در فضاهای کاری جستجو کنید",
"removeParent": "حذف والد",
- "noItemsAtLevel": "هیچ موردی در سطح سلسله مراتب یافت نشد {level}",
+ "noItemsAtLevel": "هیچ موردی در سطح سلسله مراتب {level} یافت نشد",
"failedToUpdateParent": "به روز رسانی والد انجام نشد",
"failedToRemoveParent": "حذف والد انجام نشد",
"clickToCopyKey": "برای کپی کردن کلید در کلیپ بورد کلیک کنید",
- "hierarchyMismatchTitle": "این مورد دیگر مناسب والدینش نیست",
- "hierarchyMismatchDescription": "{type} در سطح {currentLevel} پیکربندی شده است، در حالی که والد موجود آن نیز در سطح {parentLevel} است. پیوند حفظ شده است، اما اکنون برای فرزندآوری مجدد به یک والد سطح {requiredLevel} نیاز است. یک نوع مورد سطح {compatibleLevel} را برای کار با سطح والد فعلی انتخاب کنید.",
+ "hierarchyMismatchTitle": "این مورد دیگر مناسب والدش نیست",
+ "hierarchyMismatchDescription": "{type} در سطح {currentLevel} پیکربندی شده است، در حالی که والد موجود آن نیز در سطح {parentLevel} است. پیوند حفظ شده است، اما اکنون برای تغییر والد مجدد به یک والد سطح {requiredLevel} نیاز است. یک نوع مورد سطح {compatibleLevel} را برای کار با سطح والد فعلی انتخاب کنید.",
"chooseCompatibleType": "نوع سازگار را انتخاب کنید",
"parentPickerMismatchTitle": "پیکربندی سلسله مراتب فعلی با این پیوند ذخیره شده متفاوت است",
- "parentPickerMismatchDescription": "{type} اکنون والدین سطح {requiredLevel} را میپذیرد. والد موجود شما در سطح {currentParentLevel} است. برای انتخاب والدین دیگری در آن سطح، ابتدا از نوع مورد سطح {compatibleLevel} استفاده کنید.",
+ "parentPickerMismatchDescription": "{type} اکنون والد سطح {requiredLevel} را میپذیرد. والد موجود شما در سطح {currentParentLevel} است. برای انتخاب والد دیگری در آن سطح، ابتدا از نوع مورد سطح {compatibleLevel} استفاده کنید.",
"compatibleTypeHint": "یک نوع سطح {compatibleLevel} با والد سطح فعلی {parentLevel} مطابقت دارد. پیوندهای موجود با تغییر نوع در جای خود باقی می مانند.",
"hierarchyLevelLabel": "سطح سلسله مراتب {level}",
- "genericSubtaskLevelLabel": "زیر وظیفه عمومی · هر سطح والدین",
- "genericSubtaskParentHint": "وظایف فرعی عمومی را می توان به زیر هر آیتم سلسله مراتبی معمولی منتقل کرد.",
- "fitsCurrentParent": "متناسب با والدین فعلی",
+ "genericSubtaskLevelLabel": "زیر وظیفه عمومی · هر سطح والد",
+ "genericSubtaskParentHint": "زیرکارهای عمومی را میتوان زیر هر مورد سلسلهمراتبی معمولی منتقل کرد.",
+ "fitsCurrentParent": "متناسب با والد فعلی",
"enterDescription": "توضیحات را وارد کنید...",
"clickToEditDescription": "برای ویرایش توضیحات کلیک کنید",
"clickToAddDescription": "برای افزودن توضیحات کلیک کنید",
"noDescriptionProvided": "هیچ توضیحی ارائه نشده است - برای افزودن یکی کلیک کنید",
"addLink": "پیوند اضافه کنید",
"addPage": "افزودن صفحه",
- "createChild": "ایجاد کودک",
- "child": "کودک",
+ "createChild": "ایجاد فرزند",
+ "child": "فرزند",
"attachFile": "فایل را پیوست کنید",
"attach": "ضمیمه کنید",
"newDiagram": "نمودار جدید",
@@ -501,7 +501,7 @@ export default {
"clickToEditTitle": "برای ویرایش عنوان کلیک کنید",
"searchTestCases": "جستجوی موارد آزمایشی...",
"searchWorkItems": "جستجوی موارد کاری...",
- "loadingLinks": "در حال بارگیری لینک ها...",
+ "loadingLinks": "در حال بارگیری پیوندها...",
"removeLink": "حذف پیوند",
"linkType": "نوع پیوند",
"chooseRelationshipType": "انتخاب نوع رابطه...",
@@ -514,18 +514,18 @@ export default {
"linkedPages": "صفحات",
"pagePickerPlaceholder": "جستجوی صفحات…",
"selectLinkTypeToSearch": "یک نوع پیوند را برای شروع جستجو انتخاب کنید.",
- "childWorkItems": "اقلام کار کودک",
- "loadingChildItems": "در حال بارگیری وسایل کار کودک...",
+ "childWorkItems": "موارد کار فرزند",
+ "loadingChildItems": "در حال بارگیری موارد کار فرزند...",
"setStatus": "وضعیت را تنظیم کنید",
"unassigned": "اختصاص داده نشده است",
"milestone": "نقطه عطف",
"iteration": "تکرار",
"labels": "برچسب ها",
"addLabel": "+ افزودن برچسب",
- "storyPoints": "نکات داستانی",
+ "storyPoints": "امتیاز داستان",
"storyPointsChildRollup": "{points} امتیاز از {count} مورد فرزند{plural}",
"project": "پروژه",
- "clickToViewDetails": "برای مشاهده جزئیات کالا کلیک کنید",
+ "clickToViewDetails": "برای مشاهده جزئیات مورد کلیک کنید",
"itemLinkCopied": "پیوند مورد در کلیپ بورد کپی شد",
"failedToCopyToClipboard": "در کلیپ بورد کپی نشد",
"copyError": "خطای کپی",
@@ -556,8 +556,8 @@ export default {
"deleteComment": "حذف نظر",
"editPlaceholder": "نظر خود را ویرایش کنید...",
"writePlaceholder": "افزودن نظر...",
- "markdownSupported": "Markdown پشتیبانی میشود",
- "posting": "ارسال کردن...",
+ "markdownSupported": "از Markdown پشتیبانی میشود",
+ "posting": "در حال ارسال...",
"comment": "نظر دهید",
"noComments": "هنوز نظری وجود ندارد",
"beFirstToComment": "اولین نفری باشید که در مورد این مورد نظر می دهد.",
@@ -565,8 +565,8 @@ export default {
"internalNoteHint": "در پورتال قابل مشاهده نیست",
"internalNoteHintGeneral": "فقط برای اعضای تیم قابل مشاهده است",
"internal": "داخلی",
- "oldestFirst": "اول قدیمی ترین",
- "newestFirst": "اول جدیدترین",
+ "oldestFirst": "قدیمیترین ابتدا",
+ "newestFirst": "جدیدترین ابتدا",
"agentAuthored": "توسط یک عامل هوش مصنوعی نوشته شده است",
"agentOwnedBy": "عامل هوش مصنوعی متعلق به {owner}",
"addReaction": "واکنش را اضافه کنید",
@@ -575,14 +575,14 @@ export default {
"reactionThumbsUp": "شست بالا",
"reactionCheck": "انجام شد",
"reactionEyes": "دیده می شود",
- "reactionHeart": "با تشکر",
- "reactionLaugh": "بخند",
+ "reactionHeart": "قلب",
+ "reactionLaugh": "خنده",
"reactionHooray": "هورا"
},
"todo": {
"failedToCreate": "ایجاد کار ناموفق بود",
"confirmDelete": "آیا مطمئن هستید که می خواهید این کار را حذف کنید؟",
- "deleteTask": "Task را حذف کنید",
+ "deleteTask": "حذف وظیفه",
"failedToDelete": "وظیفه حذف نشد",
"loadingTasks": "در حال بارگیری وظایف...",
"myPersonalTasks": "وظایف شخصی من",
@@ -653,12 +653,12 @@ export default {
"noQuery": "بدون پرس و جو",
"noFiltersApplied": "هیچ فیلتری اعمال نشده است",
"selectType": "نوع را انتخاب کنید",
- "associateWorkspace": "فضای کاری همکار",
+ "associateWorkspace": "فضای کاری مرتبط",
"changeWorkspace": "فضای کاری را تغییر دهید",
- "changeWorkspaceAssociation": "تغییر انجمن فضای کاری",
+ "changeWorkspaceAssociation": "تغییر ارتباط فضای کاری",
"associateWithWorkspace": "با یک فضای کاری ارتباط برقرار کنید",
"workspaceAssociationDesc": "انتخاب یک فضای کاری این مجموعه را به آن فضای کاری محدود می کند. برای جهانی نگه داشتن آن، آن را بدون اختصاص بگذارید.",
- "saveAssociation": "ذخیره انجمن",
+ "saveAssociation": "ذخیره ارتباط",
"workspaceAssociationNote": "فقط یک فضای کاری می تواند در یک زمان مرتبط شود. حذف انتخاب، مجموعه را به نمای کلی تبدیل می کند.",
"categoryClearedOnAssociation": "دسته انتخابی پاک می شود زیرا دسته ها فقط برای مجموعه های جهانی در دسترس هستند.",
"searchWorkspace": "جستجوی فضای کاری...",
@@ -685,12 +685,12 @@ export default {
"toggleSelection": "انتخاب را تغییر دهید",
"selectItems": "موارد را انتخاب کنید",
"bulkSelected": "{count} انتخاب شد",
- "bulkSelectHint": "موارد را برای اعمال کنشهای انبوه انتخاب کنید",
- "bulkSetStatus": "حرکت به",
- "bulkSetAssignee": "مأمور",
+ "bulkSelectHint": "موارد را برای اعمال اقدامهای انبوه انتخاب کنید",
+ "bulkSetStatus": "انتقال به",
+ "bulkSetAssignee": "مسئول",
"bulkSetPriority": "اولویت",
"bulkLabels": "برچسب ها",
- "bulkLabelsHint": "برچسبها را روی {count} موارد انتخابی اضافه یا حذف کنید",
+ "bulkLabelsHint": "برچسبها را روی {count} مورد انتخابی اضافه یا حذف کنید",
"bulkLabelsApply": "برچسب ها را اعمال کنید",
"bulkClear": "پاک کردن",
"bulkDone": "انجام شد",
@@ -700,13 +700,13 @@ export default {
"bulkUpdateFailed": "به روز رسانی انبوه انجام نشد",
"bulkLabelSuccess": "برچسبهای بهروزرسانیشده در {count} مورد",
"bulkLabelPartial": "برچسبها در مورد {count} بهروزرسانی شد، {failed} ناموفق بود",
- "sharedViews": "دیدگاه های مشترک",
+ "sharedViews": "نماهای مشترک",
"saveSharedView": "ذخیره به عنوان نمای مشترک",
- "sharedViewNamePlaceholder": "مشاهده نام",
- "noSharedViews": "هنوز هیچ دیدگاه مشترکی وجود ندارد",
- "sharedViewSaved": "مشاهده ذخیره شد",
- "sharedViewDeleted": "مشاهده حذف شد",
- "sharedViewRenamed": "مشاهده تغییر نام داد",
+ "sharedViewNamePlaceholder": "نام نما",
+ "noSharedViews": "هنوز نمای مشترکی وجود ندارد",
+ "sharedViewSaved": "نما ذخیره شد",
+ "sharedViewDeleted": "نما حذف شد",
+ "sharedViewRenamed": "نام نما تغییر کرد",
"sharedViewSaveFailed": "نما ذخیره نشد",
"sharedViewDeleteFailed": "نما حذف نشد",
"sharedViewReorderFailed": "امکان تغییر ترتیب نماها وجود ندارد",
@@ -746,37 +746,37 @@ export default {
"builderRecoveryDropped": "برخی از بخشهای درخواست شما (مانند NOT، گروههای OR یا فیلدهای پشتیبانینشده) قابل بازسازی نبودند و حذف شدند.",
"searchItemsTitle": "جستجوی موارد",
"enterSearchText": "متن جستجو را وارد کنید...",
- "apply": "درخواست کنید",
- "board": "هیئت مدیره",
- "backlog": "عقب ماندگی",
+ "apply": "اعمال",
+ "board": "برد",
+ "backlog": "بکلاگ",
"configure": "پیکربندی کنید",
"map": "نقشه",
"roadmap": "نقشه راه",
- "publicBoard": "هیئت عمومی",
+ "publicBoard": "برد عمومی",
"publish": "منتشر کنید",
"publicBoardSharing": {
- "title": "تابلوی عمومی را به اشتراک بگذارید",
- "subtitle": "این مجموعه را به عنوان تابلوی کانبان فقط خواندنی منتشر کنید.",
+ "title": "برد عمومی را به اشتراک بگذارید",
+ "subtitle": "این مجموعه را به عنوان برد کانبان فقط خواندنی منتشر کنید.",
"enable": "اشتراک گذاری عمومی را فعال کنید",
- "enableHint": "هر کسی که پیوند را داشته باشد میتواند بدون ورود به سیستم، تابلو را مشاهده کند.",
- "boardUrl": "تخته URL",
+ "enableHint": "هر کسی که پیوند را داشته باشد میتواند بدون ورود به سیستم، برد را مشاهده کند.",
+ "boardUrl": "URL برد",
"slugHint": "از ۳ تا ۶۴ حروف کوچک، اعداد و خط فاصله استفاده کنید.",
"copyLink": "لینک عمومی را کپی کنید",
"copied": "کپی شده!",
- "openBoard": "تخته باز",
+ "openBoard": "باز کردن برد",
"milestoneSwimlanes": "کارت ها را بر اساس نقطه عطف گروه بندی کنید",
- "milestoneSwimlanesHint": "بینندگان عمومی نقاط عطف شنا را می بینند. آنها نمی توانند گروه بندی را تغییر دهند یا کارت ها را بکشند.",
+ "milestoneSwimlanesHint": "بینندگان عمومی خطوط شنای نقاط عطف را میبینند. آنها نمی توانند گروه بندی را تغییر دهند یا کارت ها را بکشند.",
"scopeNote": "کوئری مجموعه باید شامل یک محدوده WorkspaceKey باشد. شما باید یک مدیر فضای کاری در هر فضای کاری ارجاعی باشید.",
"save": "اشتراک گذاری را ذخیره کنید",
"disable": "اشتراک گذاری را غیرفعال کنید",
"saveError": "تنظیمات اشتراکگذاری عمومی ذخیره نشد."
},
- "mapSwimlanes": "شناگران",
+ "mapSwimlanes": "خطوط شنا",
"mapSwimlaneDimension": "گروه کارت توسط",
"mapSwimlaneOff": "خاموش",
"mapSwimlaneStatus": "وضعیت",
"mapSwimlaneStatusCategory": "دسته وضعیت",
- "mapSwimlaneAssignee": "مأمور",
+ "mapSwimlaneAssignee": "مسئول",
"mapSwimlanePriority": "اولویت",
"mapSwimlaneIteration": "تکرار",
"mapSwimlaneMilestone": "نقطه عطف",
@@ -797,19 +797,19 @@ export default {
"roadmapToday": "امروز",
"roadmapHierarchyMode": "تاریخ های سلسله مراتبی",
"roadmapHierarchyOff": "خاموش",
- "roadmapRollup": "رول کردن",
- "roadmapRolldown": "رول پایین",
+ "roadmapRollup": "جمعبندی",
+ "roadmapRolldown": "تفکیک",
"roadmapAdjustRelatedDates": "تاریخ های مرتبط را تنظیم کنید",
- "roadmapRollupAdjustmentHint": "پس از ویرایش تاریخ فرزند، تاریخهای والدین را بهروزرسانی کنید.",
- "roadmapRolldownAdjustmentHint": "تاریخهای تک فرزندی را که خارج از والدین ویرایششده قرار دارند، منتقل کنید.",
+ "roadmapRollupAdjustmentHint": "پس از ویرایش تاریخ فرزند، تاریخهای والد را بهروزرسانی کنید.",
+ "roadmapRolldownAdjustmentHint": "تاریخهای تک فرزندی را که خارج از والد ویرایششده قرار دارند، منتقل کنید.",
"roadmapHierarchyCanonicalHint": "برای استفاده از زمانبندی سلسله مراتبی، تاریخ شروع و تاریخ پایان را در بالا انتخاب کنید.",
"roadmapHierarchyLoadError": "تاریخ های سلسله مراتب بارگیری نشد. دوباره امتحان کنید.",
"roadmapHierarchyTruncated": "این سلسله مراتب برای تنظیم ایمن بیش از حد بزرگ است.",
"roadmapHierarchyNotReady": "تاریخ های سلسله مراتب هنوز در حال بارگیری هستند. دوباره ویرایش را امتحان کنید.",
"roadmapDateUpdateError": "نمیتوان تاریخهای نقشه راه را بهروزرسانی کرد. دوباره امتحان کنید.",
- "roadmapUnscheduledHint": "{count} موارد نیاز به تاریخ دارند — یک ردیف جدول زمانی را برای زمانبندی انتخاب کنید.",
+ "roadmapUnscheduledHint": "{count} مورد نیاز به تاریخ دارند — یک ردیف جدول زمانی را برای زمانبندی انتخاب کنید.",
"roadmapUnscheduledHint_one": "{count} مورد نیاز به تاریخ دارد — ردیف جدول زمانی آن را برای زمانبندی انتخاب کنید.",
- "roadmapUnscheduledHint_other": "{count} موارد نیاز به تاریخ دارند — یک ردیف جدول زمانی را برای زمانبندی انتخاب کنید.",
+ "roadmapUnscheduledHint_other": "{count} مورد نیاز به تاریخ دارند — یک ردیف جدول زمانی را برای زمانبندی انتخاب کنید.",
"roadmapItems": "موارد ({count})",
"roadmapScheduleItem": "برنامه زمانی {title}",
"noItemsInBacklog": "هیچ موردی در بک لاگ وجود ندارد",
@@ -817,21 +817,21 @@ export default {
"showingItemsFromBacklog": "نمایش {count} موارد از بک لاگ",
"dragItemsHere": "موارد را برای افزودن به این سرعت به اینجا بکشید",
"backlogItemActions": "اقدامات بک لاگ برای {title}",
- "toBeginningOfBacklog": "تا آغاز عقب ماندگی",
- "sendToEndOfBacklog": "ارسال به انتهای مطالب عقب افتاده",
+ "toBeginningOfBacklog": "تا آغاز بکلاگ",
+ "sendToEndOfBacklog": "ارسال به انتهای بکلاگ",
"assignToIteration": "اختصاص به تکرار…",
- "movedToBeginningOfBacklog": "\"{title}\" را به ابتدای لیست عقب ماندگی منتقل کرد",
+ "movedToBeginningOfBacklog": "\"{title}\" را به ابتدای لیست بکلاگ منتقل کرد",
"sentToEndOfBacklog": "«{title}» را به انتهای بک لاگ ارسال کرد",
"assignedToIteration": "\"{title}\" به {iteration} اختصاص داده شد",
- "backlogActionFailed": "مورد عقب مانده به روز رسانی نشد. لطفا دوباره امتحان کنید.",
+ "backlogActionFailed": "مورد بکلاگ به روز رسانی نشد. لطفا دوباره امتحان کنید.",
"loadingStoryMap": "در حال بارگیری نقشه داستان...",
"rootLevel": "سطح ریشه",
"currentLevel": "سطح فعلی",
"showingItems": "نمایش {count} {type}{plural}",
"childItems": "{count} مورد فرزند{plural}",
- "childWorkItems": "اقلام کار کودک ({count})",
- "noChildItems": "هنوز مورد کودک وجود ندارد",
- "noChildItemsLowest": "بدون آیتم فرزند (پایین ترین سطح سلسله مراتبی)",
+ "childWorkItems": "اقلام کار فرزند ({count})",
+ "noChildItems": "هنوز مورد فرزند وجود ندارد",
+ "noChildItemsLowest": "بدون مورد فرزند (پایینترین سطح سلسلهمراتبی)",
"addCard": "کارت اضافه کنید",
"collapseColumn": "جمع کردن ستون",
"expandColumn": "بزرگ کردن ستون ({name})",
@@ -840,7 +840,7 @@ export default {
"selectWorkspace": "فضای کاری را انتخاب کنید",
"selectItemType": "نوع مورد را انتخاب کنید",
"noTypesAvailable": "هیچ نوع موجود نیست",
- "drillDown": "برای نشان دادن بچهها به عنوان ستون فقرات، آن را تمرین کنید",
+ "drillDown": "برای نمایش فرزندان بهعنوان ساختار اصلی، به عمق بروید",
"noTopLevelItems": "هیچ مورد سطح بالایی یافت نشد",
"noTopLevelItemsDesc": "چند مورد کاری ایجاد کنید تا نقشه داستان خود را ببینید",
"workspaceNotFound": "فضای کاری پیدا نشد.",
@@ -870,23 +870,23 @@ export default {
"itemsShown": "{count} نشان داده شده است",
"boardSummary": "نمایش {itemCount} موارد کاری در ستون {columnCount}",
"allItems": "همه موارد",
- "transition_failed": "انتقال وضعیت ناموفق بود. تابلو به روز شده است.",
+ "transition_failed": "انتقال وضعیت ناموفق بود. برد بهروزرسانی شد.",
"anotherWorkspace": "یک فضای کاری دیگر",
"collectionFiltersReason": "فیلترهای مجموعه",
"workspaceFilterReason": "فیلتر فضای کاری فعلی",
"cardCreatedOutsideView": "کارت در {workspace} ایجاد شد، اما توسط {reason} پنهان شد.",
"cardCreatedSuccess": "کارت ایجاد شد",
- "boardItemsTruncated": "برخی از آیتم های تخته پنهان هستند. برای نمایش همه آنها، «بارگذاری بیشتر» را انتخاب کنید.",
- "combinedBoardMoveUnsupported": "شنا و وضعیت را جداگانه تغییر دهید.",
- "swimlaneMoveFailed": "نمی توان مورد را به آن شناگر منتقل کرد.",
- "itemTypeLaneHint": "{type} شناگر",
+ "boardItemsTruncated": "برخی از موارد برد پنهان هستند. برای نمایش همه آنها، «بارگذاری بیشتر» را انتخاب کنید.",
+ "combinedBoardMoveUnsupported": "خط شنا و وضعیت را جداگانه تغییر دهید.",
+ "swimlaneMoveFailed": "نمی توان مورد را به آن خط شنا منتقل کرد.",
+ "itemTypeLaneHint": "{type} خط شنا",
"itemTypeLaneUnassignedHint": "موارد بدون والد {type}",
"itemTypeLaneUnassignedVisibleHint": "موارد بدون والد قابل مشاهده {type}",
- "milestoneLaneHint": "مایل استون شنا",
+ "milestoneLaneHint": "خط شنای نقطه عطف",
"milestoneLaneUnassignedHint": "موارد بدون نقطه عطف",
"milestoneLaneHiddenCompletedHint": "کارت های نقاط عطف تکمیل شده",
"milestoneLaneOpenFromCompletedHint": "مسائل مربوط به نقاط عطف تکمیل شده را باز کنید",
- "milestoneLaneConfirmTitle": "تکالیف نقطه عطف حذف شود؟",
+ "milestoneLaneConfirmTitle": "تخصیصهای نقطه عطف حذف شوند؟",
"milestoneLaneConfirmAssign": "انتقال این کارت فقط {milestone} را نگه می دارد و {milestones} را حذف می کند.",
"milestoneLaneConfirmUnassign": "انتقال این کارت به اختصاصنیافته، {milestones} را حذف میکند.",
"milestoneLaneConfirmAction": "کارت را جابجا کنید",
@@ -895,16 +895,16 @@ export default {
"manual_sort_unavailable": "برای مرتب کردن دستی کارت ها، به حالت رتبه تغییر دهید.",
"blockedBy": "مسدود شده توسط",
"blocking": "مسدود کردن",
- "blockersCount": "مسدود کننده های {count}",
+ "blockersCount": "مسدودکنندههای {count}",
"blockersCount_one": "مسدود کننده {count}",
- "blockersCount_other": "{count} مسدود کننده ها",
+ "blockersCount_other": "{count} مسدودکننده",
"blockingCount": "{count} مسدود کردن",
"blockingCount_one": "{count} مسدود کردن",
"blockingCount_other": "{count} مسدود کردن"
},
"links": {
"title": "پیوندها",
- "subtitle": "لینک های مورد را مدیریت کنید",
+ "subtitle": "پیوندهای مورد را مدیریت کنید",
"addLink": "پیوند اضافه کنید",
"removeLink": "حذف پیوند",
"linkText": "متن پیوند",
@@ -912,7 +912,7 @@ export default {
},
"workspaceSettings": {
"tabs": {
- "general": "ژنرال",
+ "general": "عمومی",
"appearance": "ظاهر",
"categories": "دسته بندی ها",
"members": "اعضا",
@@ -923,7 +923,7 @@ export default {
"actionCredentials": "اعتبارنامه اقدام",
"recurrence": "عود",
"templates": "قالب ها",
- "cannedResponses": "پاسخ های کنسرو شده",
+ "cannedResponses": "پاسخهای آماده",
"serviceLevels": "سطوح خدمات",
"removeWorkspace": "فضای کاری را بردارید"
},
@@ -941,9 +941,9 @@ export default {
"sourceControl": "مخازن و کنترل منبع را به هم متصل کنید",
"codingAgents": "عوامل برنامه نویسی و مهارت های آنها را پیکربندی کنید",
"issueSync": "مسائل خارجی را در این فضای کاری همگام کنید",
- "actionCredentials": "نشانههای رمزگذاریشده API که اقدامات این فضای کاری میتواند استفاده کند",
+ "actionCredentials": "توکنهای رمزگذاریشده API که اقدامات این فضای کاری میتواند استفاده کند",
"recurrence": "قوانین موارد تکرار شونده را مدیریت کنید",
- "templates": "داربست های توصیفی قابل استفاده مجدد برای اقلام جدید",
+ "templates": "الگوهای توضیحات قابل استفاده مجدد برای موارد جدید",
"cannedResponses": "تکههای پاسخ قابل استفاده مجدد برای عوامل پشتیبانی",
"serviceLevels": "تقویم، معیارها، و گزارش در سطح خدمات",
"danger": "این فضای کاری را برای همیشه حذف کنید"
@@ -957,7 +957,7 @@ export default {
"teams": "دسترسی تیم",
"report": "گزارش دهید"
},
- "metricsTitle": "SLA معیارها",
+ "metricsTitle": "معیارهای SLA",
"metricsSubtitle": "تعاریفی که مدت زمان کار را با شرایط شروع، مکث و توقف و اهداف مرتب شده اندازه گیری می کند.",
"createMetric": "متریک جدید",
"editMetric": "ویرایش متریک",
@@ -983,7 +983,7 @@ export default {
"time": "زمان باقی مانده",
"dueDate": "سررسید"
},
- "order": "سفارش دهید",
+ "order": "ترتیب",
"metricActive": "متریک فعال است",
"conditions": "شرایط",
"conditionsHelp": "هر شرطی در یک گروه آن گروه را فعال می کند. تقدم توقف، سپس مکث و سپس شروع است.",
@@ -1003,13 +1003,13 @@ export default {
"categoryEntered": "دسته وضعیت وارد شد",
"categoryExited": "دسته وضعیت خارج شد",
"categoryCurrent": "دسته فعلی است",
- "assigneeSet": "مجموعه مامور",
+ "assigneeSet": "مجموعه مسئول",
"resolutionSet": "حل شد",
"commentByCustomer": "نظر عمومی توسط مشتری",
- "commentByAgent": "نظر عمومی توسط نماینده"
+ "commentByAgent": "نظر عمومی توسط عامل"
},
"goals": "اهداف",
- "goalQueryPlaceholder": "پرس و جو QL، به عنوان مثال. اولویت = بالا",
+ "goalQueryPlaceholder": "پرسوجوی QL، به عنوان مثال priority = high",
"goalQueryOptionalHint": "اختیاری - برای مطابقت با همه بلیط ها، آن را خالی بگذارید.",
"addGoal": "هدف را اضافه کنید",
"addTarget": "هدف را اضافه کنید",
@@ -1020,8 +1020,8 @@ export default {
"hours": "ساعت",
"days": "روز"
},
- "thresholdsTitle": "SLA آستانه های هشدار",
- "thresholdsSubtitle": "آستانههای درصدی هدف که رویدادهای هشداردهنده sla را برای قوانین اعلان و اتوماسیون ایجاد میکنند.",
+ "thresholdsTitle": "آستانههای هشدار SLA",
+ "thresholdsSubtitle": "آستانههای درصدی هدف که رویدادهای هشداردهنده SLA را برای قوانین اعلان و اتوماسیون ایجاد میکنند.",
"createThreshold": "آستانه جدید",
"editThreshold": "آستانه ویرایش",
"deleteThreshold": "حذف آستانه",
@@ -1041,51 +1041,51 @@ export default {
"recalculationsSubtitle": "کار محاسبه مجدد SLA در انتظار و یک ماشه دستی برای یک متریک یا کل فضای کاری.",
"startRecalculation": "شروع مجدد محاسبه",
"recalculationScope": "دوباره محاسبه کنید",
- "recalculationStarted": "محاسبه مجدد در صف برای {count} متریک(های)",
+ "recalculationStarted": "محاسبه مجدد برای {count} معیار در صف قرار گرفت",
"recalculationFailed": "شروع مجدد محاسبه انجام نشد",
"loadRecalculationsFailed": "کار محاسبه مجدد بارگیری نشد",
"noRecalculations": "بدون کار محاسبه مجدد معلق",
- "jobKind": "مهربان",
+ "jobKind": "نوع",
"jobKinds": {
- "recalcItem": "محاسبه مجدد آیتم",
+ "recalcItem": "محاسبه مجدد مورد",
"recalcMetric": "محاسبه مجدد متریک",
"recalcCalendar": "محاسبه مجدد تقویم"
},
"jobTarget": "هدف",
"attempts": "تلاش ها",
- "jobState": "ایالت",
+ "jobState": "وضعیت",
"jobFailed": "شکست خورد",
"jobPending": "در انتظار",
"dueAt": "سررسید در",
"bindingsTitle": "دسترسی تیم",
- "bindingsSubtitle": "تیمهایی که این فضای کاری ممکن است از ساعات سرویس استفاده کنند. ایجاد یا حذف یک الزام آور به حقوق مدیریت هم در تیم و هم در فضای کاری نیاز دارد.",
- "createBinding": "یک تیم را مقید کنید",
+ "bindingsSubtitle": "تیمهایی که این فضای کاری ممکن است از ساعات خدمات آنها استفاده کند. ایجاد یا حذف یک تخصیص به دسترسی مدیریت هم در تیم و هم در فضای کاری نیاز دارد.",
+ "createBinding": "افزودن تیم",
"removeBinding": "اتصال را بردارید",
"removeBindingConfirm": "اتصال به \"{name}\" حذف شود؟ این قابل واگرد نیست.",
- "bindingCreated": "تیم مقید است",
- "bindingRemoved": "صحافی حذف شد",
- "bindingDenied": "شما باید تیم و این فضای کاری را مدیریت کنید یا یک مدیر جهانی باشید تا یک الزام آور را تغییر دهید.",
+ "bindingCreated": "تیم افزوده شد",
+ "bindingRemoved": "تخصیص حذف شد",
+ "bindingDenied": "شما باید تیم و این فضای کاری را مدیریت کنید یا یک مدیر جهانی باشید تا یک تخصیص را تغییر دهید.",
"removeBindingBlocked": "در حالی که یک هدف SLA هنوز از یکی از تقویمهای تیم استفاده میکند، این اتصال حذف نمیشود.",
"loadBindingsFailed": "پیوندهای تیم بارگیری نشد",
- "noBindings": "هنوز هیچ تیمی به این فضای کاری محدود نشده است.",
+ "noBindings": "هنوز هیچ تیمی به این فضای کاری متصل نشده است.",
"boundTeam": "تیم",
"availableCalendars": "تقویم های موجود",
"selectTeam": "یک تیم انتخاب کنید",
"selectTeamRequired": "یک تیم را برای اتصال انتخاب کنید.",
- "bindingConsentHelp": "هم تیم و هم فضای کاری باید رضایت دهند. هر دو را مدیریت کنید یا یک مدیر جهانی باشید.",
- "reportTitle": "SLA گزارش مطابقت",
+ "bindingConsentHelp": "هم تیم و هم فضای کاری باید تأیید کنند. هر دو را مدیریت کنید یا یک مدیر جهانی باشید.",
+ "reportTitle": "گزارش مطابقت SLA",
"reportSubtitle": "مجموعهای تکمیلشده، نقضشده، و در حال انجام در هر متریک، با فهرست چرخههای نقضشده برای پنجره انتخابشده.",
- "exportCsv": "صادرات CSV",
+ "exportCsv": "برونریزی CSV",
"from": "از",
"to": "به",
- "apply": "درخواست کنید",
- "currentStateNote": "شمارش های در حال انجام و نقض در حال حاضر وضعیت فعلی هستند. تعداد تکمیل شده و نقض شده از پنجره انتخاب شده و عکس های فوری چرخه ذخیره شده استفاده می کند.",
+ "apply": "اعمال",
+ "currentStateNote": "شمارشهای در حال انجام و نقضشده وضعیت فعلی هستند. تعداد تکمیل شده و نقض شده از پنجره انتخاب شده و عکس های فوری چرخه ذخیره شده استفاده می کند.",
"noReportData": "هیچ چرخه تکمیل شده در این پنجره وجود ندارد.",
"metric": "متریک",
"ongoing": "در حال انجام است",
"currentlyBreached": "در حال حاضر نقض شده است",
"completed": "تکمیل شد",
- "breached": "شکسته شد",
+ "breached": "نقض شد",
"avgElapsed": "میانگین سپری شده / هدف",
"breachedItems": "موارد نقض شده",
"stoppedAt": "متوقف شد",
@@ -1131,7 +1131,7 @@ export default {
"setDefault": "به عنوان تقویم پیش فرض فضای کاری تنظیم کنید",
"applyToOngoing": "این تغییر را در چرخه های در حال انجام نیز اعمال کنید",
"applyToOngoingHint": "هر چرخه در حال انجامی را که از این تقویم در این فضای کاری استفاده می کند، دوباره محاسبه می کند.",
- "applyToOngoingTeamHint": "هر چرخه جاری که از این تقویم استفاده می کند، در هر فضای کاری محدود به این تیم، دوباره محاسبه می کند.",
+ "applyToOngoingTeamHint": "هر چرخه جاری که از این تقویم استفاده می کند، در هر فضای کاری متصل به این تیم دوباره محاسبه میکند.",
"applyToOngoingImpact": "در حال حاضر این {cycles} چرخه(های) در حال انجام در {workspaces} فضای کاری است.",
"applyToOngoingNoImpact": "هیچ فضای کاری محدودی در حال حاضر به این تقویم ارجاع نمی دهد.",
"saveAndRecalculate": "ذخیره و دوباره محاسبه کنید",
@@ -1153,15 +1153,15 @@ export default {
"accessDeniedDescription": "برای دسترسی به تنظیمات به مجوزهای مدیر فضای کاری نیاز دارید.",
"backToWorkspace": "بازگشت به فضای کاری",
"actionCredentials": {
- "description": "نشانههای رمزگذاریشده API که بهجای ذخیره کردن نشانهها به صورت درون خطی، توسط قابلیتهای عمل HTTP این فضای کاری ارجاع داده شدهاند. اسرار فقط برای نوشتن هستند و قابل خواندن نیستند.",
+ "description": "توکنهای رمزگذاریشده API که بهجای ذخیره کردن توکنها به صورت درون خطی، توسط قابلیتهای عمل HTTP این فضای کاری ارجاع داده شدهاند. اسرار فقط برای نوشتن هستند و قابل خواندن نیستند.",
"empty": "هنوز هیچ اعتبارنامه ای در این فضای کاری موجود نیست.",
"ownedHere": "این فضای کاری",
"inherited": "به ارث رسیده است",
- "inheritedHelp": "توسط یک مدیر سیستم مدیریت می شود - اعتبار جهانی و مشترک فقط در صفحه قابلیت های عملکرد سیستم قابل ویرایش است.",
- "managedByAdmin": "ادمین سیستم",
+ "inheritedHelp": "توسط یک مدیر سیستم مدیریت می شود - اعتبارنامه جهانی و مشترک فقط در صفحه قابلیتهای اقدام سیستم قابل ویرایش است.",
+ "managedByAdmin": "مدیر سیستم",
"pinnedHelp": "اعتبارنامه فقط برای این فضای کاری ذخیره می شود.",
"noPermissionTitle": "اعتبارنامه اقدام در دسترس نیست",
- "noPermissionBody": "برای مدیریت اعتبار عملیات آن به مجوز action.credential.manage در این فضای کاری نیاز دارید."
+ "noPermissionBody": "برای مدیریت اعتبارنامه اقدام آن به مجوز action.credential.manage در این فضای کاری نیاز دارید."
},
"basicInformation": "اطلاعات پایه",
"workspaceName": "نام فضای کاری",
@@ -1170,8 +1170,8 @@ export default {
"workspaceKeyPlaceholder": "به عنوان مثال، DEV، TEST، PROD",
"workspaceKeyHelp": "برای پیشوندهای مورد استفاده می شود (به عنوان مثال، DEV-123). فقط حروف بزرگ و اعداد.",
"workspaceKeyImmutable": "برای پیشوندهای مورد استفاده می شود (به عنوان مثال، DEV-123). پس از ایجاد قابل تغییر نیست.",
- "workspaceKeyPersonalHint": "برای پیشوندهای مورد استفاده می شود (به عنوان مثال، P1-12). فضاهای کاری شخصی می توانند آن را تغییر دهند. کلیدهای آیتم با آن تغییر می کنند.",
- "invalidWorkspaceKey": "کلید فضای کاری باید 2-10 حرف یا رقم باشد (A-Z، 0-9).",
+ "workspaceKeyPersonalHint": "برای پیشوندهای مورد استفاده می شود (به عنوان مثال، P1-12). فضاهای کاری شخصی می توانند آن را تغییر دهند. کلیدهای مورد با آن تغییر می کنند.",
+ "invalidWorkspaceKey": "کلید فضای کاری باید ۲ تا ۱۰ حرف یا رقم باشد (A-Z، 0-9).",
"description": "توضیحات",
"descriptionPlaceholder": "توضیحات اختیاری برای این فضای کاری",
"defaultTimeProject": "پروژه پیشفرض ردیابی زمان",
@@ -1180,15 +1180,15 @@ export default {
"defaultView": "نمای پیش فرض فضای کاری",
"defaultViewHelp": "نمای پیش فرض هنگام ورود به این فضای کاری نمایش داده می شود.",
"activeWorkspace": "فضای کاری فعال",
- "activeWorkspaceHelp": "در صورت غیرفعال بودن، فقط ادمین های سیستم و مدیران فضای کاری می توانند به این فضای کاری دسترسی داشته باشند. تمام داده ها حفظ می شود.",
+ "activeWorkspaceHelp": "در صورت غیرفعال بودن، فقط مدیران سیستم و مدیران فضای کاری می توانند به این فضای کاری دسترسی داشته باشند. تمام داده ها حفظ می شود.",
"enableInternalComments": "فعال کردن نظرات داخلی",
"enableInternalCommentsHint": "اجازه علامت گذاری نظرات به عنوان یادداشت های داخلی در همه موارد، نه فقط درخواست های پورتال.",
"availableAsTemplate": "به عنوان الگو موجود است",
"availableAsTemplateHelp": "سازندگان فضای کاری می توانند یک فضای کاری جدید را از یک کپی از مجموعه پیکربندی این فضای کاری، الگوهای مورد کاری و موارد فعلی شروع کنند. اعضا، تاریخچه و فایل ها هرگز کپی نمی شوند.",
"views": {
- "board": "هیئت مدیره",
- "backlog": "عقب ماندگی",
- "list": "فهرست کنید",
+ "board": "برد",
+ "backlog": "بکلاگ",
+ "list": "فهرست",
"tree": "درخت",
"map": "نقشه",
"overview": "نمای کلی"
@@ -1241,7 +1241,7 @@ export default {
"failedToUploadAvatar": "آواتار آپلود نشد: {error}"
},
"lookAndFeel": {
- "title": "نگاه کنید و احساس کنید",
+ "title": "ظاهر و حس",
"subtitle": "ظاهر و چیدمان فضای کاری خود را سفارشی کنید",
"gradientTitle": "پس زمینه و گرادیان",
"gradientDescription": "یک طرح رنگی برای فضای کاری خود انتخاب کنید",
@@ -1258,7 +1258,7 @@ export default {
"failedToSave": "تنظیمات ظاهر و احساس ذخیره نشد: {error}",
"logo": "لوگو",
"currentLogo": "لوگوی فعلی",
- "noLogoSet": "بدون تنظیم لوگو",
+ "noLogoSet": "لوگویی تنظیم نشده است",
"uploadLogo": "لوگو را بارگذاری کنید",
"logoRecommendation": "توصیه میشود: PNG یا SVG با پسزمینه شفاف. حداکثر ارتفاع در هدر: 40-50 پیکسل.",
"lightLogo": "لوگو حالت نور",
@@ -1267,52 +1267,52 @@ export default {
},
"issueSync": {
"title": "همگامسازی مسائل GitHub",
- "subtitle": "مشکلات GitHub را در این فضای کاری به عنوان موارد همگامسازی کنید",
+ "subtitle": "مسائل GitHub را در این فضای کاری بهعنوان موارد همگامسازی کنید",
"noConfig": "همگام سازی مشکل برای این فضای کاری پیکربندی نشده است.",
"noConfigDescription": "یک مخزن را پیوند دهید و نحوه همگام سازی مسائل GitHub را در موارد Windshift پیکربندی کنید.",
"configure": "پیکربندی همگامسازی مسائل",
"enabled": "همگام سازی فعال شد",
"enabledDescription": "وقتی فعال باشد، GitHub مسائل به صورت دورهای در این فضای کاری همگامسازی میشوند.",
"repository": "مخزن",
- "repositoryDescription": "یک مخزن پیوندی را برای همگام سازی مشکلات از آن انتخاب کنید.",
+ "repositoryDescription": "یک مخزن پیوندی را برای همگامسازی مسائل از آن انتخاب کنید.",
"selectRepository": "یک مخزن انتخاب کنید",
"statusMapping": "نگاشت وضعیت",
- "statusMappingDescription": "نقشه GitHub وضعیت به Windshift وضعیت.",
- "workflowBypassWarning": "حالتهای همگامسازی شده GitHub قوانین گردش کار را لغو میکنند. تغییرات وضعیت ایجاد شده توسط همگامسازی مشکل میتواند از انتقال، شرایط، اعتبارسنجیها و تأییدیهها رد شود.",
+ "statusMappingDescription": "وضعیت GitHub را به وضعیت Windshift نگاشت کنید.",
+ "workflowBypassWarning": "وضعیتهای همگامسازیشده GitHub قوانین گردش کار را دور میزنند. تغییرات وضعیت ایجادشده توسط همگامسازی مسئله میتواند از انتقالها، شرایط، اعتبارسنجیها و تأییدیهها عبور کند.",
"githubOpen": "GitHub \"باز\"",
"githubClosed": "GitHub \"بسته\"",
- "mapsTo": "نقشه ها به",
+ "mapsTo": "نگاشت به",
"selectStatus": "وضعیت را انتخاب کنید",
"reverseStatusMapping": "نگاشت وضعیت معکوس",
- "reverseStatusMappingDescription": "وضعیت Windshift را برای بازگرداندن به حالت GitHub برگردانید.",
+ "reverseStatusMappingDescription": "نگاشت معکوس وضعیت Windshift به وضعیت GitHub را پیکربندی کنید.",
"labelSync": "همگام سازی برچسب",
"labelSyncDescription": "نحوه رسیدگی به برچسبهای GitHub در مسائل همگامسازی شده.",
"labelModeNone": "هیچ کدام",
"labelModeNoneDescription": "برچسب ها را همگام نکنید.",
"labelModeMirror": "آینه",
"labelModeMirrorDescription": "برچسبهای Windshift را برای مطابقت با برچسبهای GitHub بهطور خودکار ایجاد کنید.",
- "labelModeMapped": "نقشه برداری شده است",
+ "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 نقطه عطف",
+ "filterLabelsDescription": "فقط مسائلی را همگامسازی کنید که یکی از این برچسبهای GitHub را دارند. برای همگامسازی همه خالی بگذارید.",
+ "filterLabelsPlaceholder": "یک نام برچسب را تایپ کرده و Enter را بزنید",
+ "assigneeMapping": "نگاشت مسئول",
+ "assigneeMappingDescription": "نامهای کاربری GitHub را به کاربران Windshift نگاشت کنید.",
+ "githubUsername": "نام کاربری GitHub",
+ "windshiftUser": "کاربر Windshift",
+ "addMapping": "نگاشت را اضافه کنید",
+ "milestoneMapping": "نگاشت نقطه عطف",
+ "milestoneMappingDescription": "نقاط عطف GitHub را به نقاط عطف Windshift نگاشت کنید.",
+ "githubMilestone": "نقطه عطف GitHub",
+ "windshiftMilestone": "نقطه عطف Windshift",
"itemType": "نوع مورد",
- "itemTypeDescription": "نوع مورد را برای مشکلات همگامسازی شده انتخاب کنید. این تعیین می کند که کدام وضعیت گردش کار برای نقشه برداری در دسترس است.",
+ "itemTypeDescription": "نوع مورد را برای مسائل همگامسازیشده انتخاب کنید. این تعیین میکند که کدام وضعیت گردش کار برای نگاشت در دسترس است.",
"selectItemType": "یک نوع مورد را انتخاب کنید",
"selectItemTypeHint": "برای پیکربندی نگاشت وضعیت، یک نوع مورد را در بالا انتخاب کنید.",
"defaultPriority": "اولویت پیش فرض",
- "defaultPriorityDescription": "اولویت استفاده برای مسائل تازه وارد شده.",
+ "defaultPriorityDescription": "اولویت استفاده برای مسائل تازه درونریزیشده.",
"comments": "همگام سازی نظرات",
- "commentsDescription": "نظرات Windshift را به شماره پیوند شده GitHub برگردانید.",
+ "commentsDescription": "نظرات Windshift را به مسئله پیوندشده GitHub برگردانید.",
"syncStatus": "وضعیت همگام سازی",
"lastSync": "آخرین همگام سازی",
"lastSyncError": "آخرین خطای همگام سازی",
@@ -1322,9 +1322,9 @@ export default {
"syncTriggered": "همگام سازی با موفقیت فعال شد",
"noLinkedRepos": "هیچ مخزن به این فضای کاری مرتبط نیست. ابتدا یک مخزن را در تنظیمات کنترل منبع پیوند دهید.",
"save": "ذخیره پیکربندی",
- "saved": "مشکل پیکربندی همگامسازی ذخیره شد",
- "deleted": "مشکل پیکربندی همگامسازی حذف شد",
- "confirmDelete": "آیا مطمئن هستید که می خواهید پیکربندی همگام سازی مشکل را حذف کنید؟ موارد همگامسازی شده باقی میمانند اما دیگر بهروزرسانی نمیشوند.",
+ "saved": "پیکربندی همگامسازی مسئله ذخیره شد",
+ "deleted": "پیکربندی همگامسازی مسئله حذف شد",
+ "confirmDelete": "آیا مطمئن هستید که میخواهید پیکربندی همگامسازی مسئله را حذف کنید؟ موارد همگامسازیشده باقی میمانند اما دیگر بهروزرسانی نمیشوند.",
"deleteConfig": "پیکربندی را حذف کنید",
"never": "هرگز",
"noErrors": "بدون خطا"
diff --git a/frontend/src/lib/locales/fa/zammad.js b/frontend/src/lib/locales/fa/zammad.js
index ce580de5b..adc1abdab 100644
--- a/frontend/src/lib/locales/fa/zammad.js
+++ b/frontend/src/lib/locales/fa/zammad.js
@@ -22,17 +22,17 @@ export default {
"refreshAllTicketsAlreadyRunning": "همگام سازی Zammad در سطح سیستم از قبل در حال اجرا است",
"refreshAllTicketsFailed": "همگامسازی بلیتهای Zammad در سراسر سیستم انجام نشد",
"metadataSummary": "{groups} گروه های پیکربندی شده و {states} وضعیت بلیت موجود است",
- "slug": "حلزون حرکت کردن",
- "baseUrl": "پایه URL",
- "apiToken": "نشانه API",
- "apiTokenDescription": "برای این اتصال سیستم از یک نشانه Zammad API استفاده کنید.",
- "apiTokenAvailable": "نشانه API موجود است",
- "apiTokenMissing": "نشانه API وجود ندارد",
+ "slug": "اسلاگ",
+ "baseUrl": "URL پایه",
+ "apiToken": "توکن API",
+ "apiTokenDescription": "برای این اتصال سیستم از یک توکن Zammad API استفاده کنید.",
+ "apiTokenAvailable": "توکن API موجود است",
+ "apiTokenMissing": "توکن API وجود ندارد",
"authMethod": "روش احراز هویت",
"oauth": "OAuth",
"oauthDescription": "این اتصال را با Zammad OAuth مجاز کنید.",
- "oauthClientId": "OAuth مشتری ID",
- "oauthClientSecret": "OAuth راز مشتری",
+ "oauthClientId": "شناسه مشتری OAuth",
+ "oauthClientSecret": "راز مشتری OAuth",
"secretStored": "ایمن ذخیره می شود - خالی بگذارید تا بدون تغییر بماند",
"oauthPending": "OAuth مجوز در انتظار است",
"oauthConnectedStatus": "OAuth متصل شد",
@@ -49,11 +49,11 @@ export default {
"allowedGroups": "گروه های بلیت مجاز",
"unverifiedGroup": "گروه تایید نشده (ID {id})",
"allowedGroupIds": "گروه های مجاز (ID:name)",
- "correlationField": "زمینه همبستگی",
+ "correlationField": "فیلد همبستگی",
"correlationFieldHint": "این فیلد نوشتاری را در بلیطهای Zammad ایجاد کنید تا با تلاشهای مجدد، بلیطی که قبلاً ایجاد شده است را پیدا کنید.",
- "completionStatus": "Windshift وضعیت تکمیل",
+ "completionStatus": "وضعیت تکمیل Windshift",
"noAutomaticCompletion": "به صورت خودکار تکمیل نشود",
- "closedStates": "حالت های بسته Zammad",
+ "closedStates": "وضعیتهای بسته Zammad",
"closedStateIds": "بسته Zammad وضعیت IDs",
"allWorkspaces": "اجازه دادن به همه فضاهای کاری",
"allowedWorkspaces": "فضاهای کاری مجاز",
@@ -75,7 +75,7 @@ export default {
"loadOwnersFailed": "بارگیری مالکان Zammad انجام نشد",
"ticketCreated": "Zammad بلیط ایجاد شد",
"ticketCreationStarted": "Zammad ایجاد بلیط از قبل در حال انجام است",
- "ticketCreationInProgress": "ساخت بلیت در حال انجام است. پس از پیوند بلیط، بازخوانی در دسترس است.",
+ "ticketCreationInProgress": "ساخت بلیط در حال انجام است. پس از پیوند بلیط، بازخوانی در دسترس است.",
"ticketCreateFailed": "بلیت Zammad ایجاد نشد",
"linkExistingTicket": "پیوند بلیط موجود",
"linkExistingTicketConfirm": "یک بلیط Zammad موجود را با شماره بلیط آن پیوند دهید.",
@@ -92,11 +92,11 @@ export default {
"retrySync": "همگام سازی را دوباره امتحان کنید",
"refreshTicket": "بازخوانی وضعیت بلیط",
"syncFailedNoTicket": "همگام سازی انجام نشد. پس از پیوند یک بلیط Zammad، بازخوانی در دسترس است.",
- "creationUncertainNoTicket": "ساخت بلیت نتیجه نامشخصی دارد. Zammad را علامت بزنید و در صورت نیاز بلیط موجود را با شماره پیوند دهید.",
- "removeTicketLink": "حذف تکلیف",
+ "creationUncertainNoTicket": "ساخت بلیط نتیجه نامشخصی دارد. Zammad را علامت بزنید و در صورت نیاز بلیط موجود را با شماره پیوند دهید.",
+ "removeTicketLink": "حذف تخصیص",
"removeTicketLinkConfirm": "این تخصیص به Zammad #{number} و فیلد همبستگی Windshift را حذف میکند. خود بلیط Zammad در جای خود باقی می ماند.",
- "ticketLinkRemoved": "Zammad تکلیف بلیت حذف شد",
- "ticketLinkRemoveFailed": "تکلیف بلیت Zammad حذف نشد",
+ "ticketLinkRemoved": "تخصیص بلیت Zammad حذف شد",
+ "ticketLinkRemoveFailed": "تخصیص بلیت Zammad حذف نشد",
"ticketNumber": "Zammad #{number}",
"lastSynced": "همگامسازی شده {time}",
"timeline": {
@@ -117,7 +117,7 @@ export default {
"overview": {
"loading": "در حال بارگیری وضعیت پشتیبانی در کل فضای کاری Zammad…",
"loadFailed": "نمای کلی پشتیبانی Zammad بارگیری نشد",
- "emptyTitle": "بلیت پیوندی Zammad وجود ندارد",
+ "emptyTitle": "هیچ بلیت پیوندی Zammad وجود ندارد",
"emptyDescription": "این فضای کاری هیچ بلیت پیوندی Zammad ندارد.",
"observedHint": "وضعیت بلیط در کل فضای کاری که توسط Windshift در طول همگامسازی مشاهده شد.",
"refresh": "تازه کردن",
@@ -131,8 +131,8 @@ export default {
"metrics": {
"total": "مجموع",
"active": "فعال",
- "closed": "بسته شد",
- "unassigned": "واگذار نشده است",
+ "closed": "بسته",
+ "unassigned": "اختصاص داده نشده است",
"syncFailed": "همگام سازی انجام نشد",
"creationUncertain": "ایجاد نامشخص",
"unknownStatus": "وضعیت نامعلوم"
From 38feb4665bfe4e2514f0f5b7989a8d34bfb39450 Mon Sep 17 00:00:00 2001
From: Stefan Ernst <24554551+stefan-ernst@users.noreply.github.com>
Date: Sun, 8 Nov 2026 15:00:18 +0100
Subject: [PATCH 3/5] feat(i18n): add calendar-aware date picker with Persian
support (WI-2033)
Introduce DatePicker and CalendarGrid on top of Melt UI's headless
createCalendar and @internationalized/date. The grid renders the
calendar implied by the UI locale (Persian for fa) with the locale's
week start and numerals, while the bound value stays a Gregorian
YYYY-MM-DD string so storage and APIs are unchanged.
Promote @internationalized/date to a direct dependency and add the
picker strings to the fully covered locales.
---
frontend/package-lock.json | 1 +
frontend/package.json | 1 +
frontend/src/design-system/viewer/App.svelte | 5 +
.../viewer/pages/DatePickerPage.svelte | 71 +++++
frontend/src/lib/locales/de/ui.js | 8 +
frontend/src/lib/locales/en/ui.js | 8 +
frontend/src/lib/locales/fa/ui.js | 8 +-
frontend/src/lib/locales/fr/ui.js | 8 +
frontend/src/lib/locales/ru/ui.js | 8 +
frontend/src/lib/locales/zh-CN/ui.js | 8 +
frontend/src/lib/pickers/CalendarGrid.svelte | 269 ++++++++++++++++++
frontend/src/lib/pickers/DatePicker.svelte | 254 +++++++++++++++++
12 files changed, 648 insertions(+), 1 deletion(-)
create mode 100644 frontend/src/design-system/viewer/pages/DatePickerPage.svelte
create mode 100644 frontend/src/lib/pickers/CalendarGrid.svelte
create mode 100644 frontend/src/lib/pickers/DatePicker.svelte
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/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.
+
{: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/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'}