Browse Source

chore: add Arabic translation (#2348)

* add arabic translation

* add arabic locale

* add arabic translation

* Update ar-SA.json

* Update ar-SA.json
Mohamed DevOps 2 years ago
parent
commit
c8f7401470

+ 422 - 0
frontend/appflowy_flutter/assets/translations/ar-SA.json

@@ -0,0 +1,422 @@
+{
+    "appName": "AppFlowy",
+    "defaultUsername": "أنا",
+    "welcomeText": "مرحبًا بك في @: appName",
+    "githubStarText": "نجمة على GitHub",
+    "subscribeNewsletterText": "اشترك في النشرة الإخبارية",
+    "letsGoButtonText": "بداية سريعة",
+    "title": "عنوان",
+    "signUp": {
+        "buttonText": "اشتراك",
+        "title": "قم بالتسجيل في @: appName",
+        "getStartedText": "البدء",
+        "emptyPasswordError": "لا يمكن أن تكون كلمة المرور فارغة",
+        "repeatPasswordEmptyError": "إعادة كلمة المرور لا يمكن أن تكون فارغة",
+        "unmatchedPasswordError": "تكرار كلمة المرور ليس هو نفسه كلمة المرور",
+        "alreadyHaveAnAccount": "هل لديك حساب؟",
+        "emailHint": "بريد إلكتروني",
+        "passwordHint": "كلمة المرور",
+        "repeatPasswordHint": "اعد كلمة السر"
+    },
+    "signIn": {
+        "loginTitle": "تسجيل الدخول إلى @: appName",
+        "loginButtonText": "تسجيل الدخول",
+        "buttonText": "تسجيل الدخول",
+        "forgotPassword": "هل نسيت كلمة السر؟",
+        "emailHint": "بريد إلكتروني",
+        "passwordHint": "كلمة المرور",
+        "dontHaveAnAccount": "ليس لديك حساب؟",
+        "repeatPasswordEmptyError": "إعادة كلمة المرور لا يمكن أن تكون فارغة",
+        "unmatchedPasswordError": "تكرار كلمة المرور ليس هو نفسه كلمة المرور"
+    },
+    "workspace": {
+        "create": "قم بإنشاء مساحة عمل",
+        "hint": "مساحة العمل",
+        "notFoundError": "مساحة العمل غير موجودة"
+    },
+    "shareAction": {
+        "buttonText": "مشاركه",
+        "workInProgress": "قريباً",
+        "markdown": "Markdown",
+        "copyLink": "نسخ الرابط"
+    },
+    "moreAction": {
+        "small": "صغير",
+        "medium": "متوسط",
+        "large": "كبير",
+        "fontSize": "حجم الخط",
+        "import": "استيراد"
+    },
+    "disclosureAction": {
+        "rename": "إعادة تسمية",
+        "delete": "يمسح",
+        "duplicate": "كرر"
+    },
+    "blankPageTitle": "صفحة فارغة",
+    "newPageText": "صفحة جديدة",
+    "trash": {
+        "text": "المهملات",
+        "restoreAll": "استعادة الكل",
+        "deleteAll": "حذف الكل",
+        "pageHeader": {
+            "fileName": "اسم الملف",
+            "lastModified": "آخر تعديل",
+            "created": "تم انشاؤها"
+        }
+    },
+    "deletePagePrompt": {
+        "text": "هذه الصفحة في المهملات",
+        "restore": "استعادة الصفحة",
+        "deletePermanent": "الحذف بشكل نهائي"
+    },
+    "dialogCreatePageNameHint": "اسم الصفحة",
+    "questionBubble": {
+        "shortcuts": "الاختصارات",
+        "whatsNew": "ما هو الجديد؟",
+        "help": "المساعدة والدعم",
+        "markdown": "Markdown",
+        "debug": {
+            "name": "معلومات التصحيح",
+            "success": "تم نسخ معلومات التصحيح إلى الحافظة!",
+            "fail": "تعذر نسخ معلومات التصحيح إلى الحافظة"
+        }
+    },
+    "menuAppHeader": {
+        "addPageTooltip": "أضف صفحة في الداخل بسرعة",
+        "defaultNewPageName": "بدون عنوان",
+        "renameDialog": "إعادة تسمية"
+    },
+    "toolbar": {
+        "undo": "الغاء التحميل",
+        "redo": "إعادة",
+        "bold": "عريض",
+        "italic": "مائل",
+        "underline": "تسطير",
+        "strike": "يتوسطه خط",
+        "numList": "قائمة مرقمة",
+        "bulletList": "قائمة نقطية",
+        "checkList": "قائمة تدقيق",
+        "inlineCode": "رمز مضمّن",
+        "quote": "كتلة اقتباس",
+        "header": "رأس",
+        "highlight": "تسليط الضوء",
+        "color": "لون"
+    },
+    "tooltip": {
+        "lightMode": "قم بالتبديل إلى وضع الإضاءة",
+        "darkMode": "قم بالتبديل إلى الوضع الداكن",
+        "openAsPage": "فتح كصفحة",
+        "addNewRow": "أضف صفًا جديدًا",
+        "openMenu": "انقر لفتح القائمة",
+        "viewDataBase": "عرض قاعدة البيانات",
+        "referencePage": "تمت الإشارة إلى هذا {name}"
+    },
+    "sideBar": {
+        "closeSidebar": "إغلاق الشريط الجانبي",
+        "openSidebar": "فتح الشريط الجانبي"
+    },
+    "notifications": {
+        "export": {
+            "markdown": "تم تصدير ملاحظة إلى Markdown",
+            "path": "Documents/flowy"
+        }
+    },
+    "contactsPage": {
+        "title": "جهات الاتصال",
+        "whatsHappening": "ماذا يحدث هذا الاسبوع؟",
+        "addContact": "إضافة جهة اتصال",
+        "editContact": "تحرير جهة الاتصال"
+    },
+    "button": {
+        "OK": "نعم",
+        "Done": "منتهي",
+        "Cancel": "إلغاء",
+        "signIn": "تسجيل الدخول",
+        "signOut": "خروج",
+        "complete": "مكتمل",
+        "save": "حفظ",
+        "generate": "يولد",
+        "esc": "خروج",
+        "keep": "ابقاء",
+        "tryAgain": "حاول ثانية",
+        "discard": "تجاهل",
+        "replace": "يستبدل",
+        "insertBelow": "إدراج أدناه"
+    },
+    "label": {
+        "welcome": "مرحباً!",
+        "firstName": "الاسم الأول",
+        "middleName": "الاسم الأوسط",
+        "lastName": "اسم العائلة",
+        "stepX": "الخطوة {X}"
+    },
+    "oAuth": {
+        "err": {
+            "failedTitle": "غير قادر على الاتصال بحسابك.",
+            "failedMsg": "يرجى التأكد من إكمال عملية تسجيل الدخول في متصفحك."
+        },
+        "google": {
+            "title": "تسجيل الدخول إلى GOOGLE",
+            "instruction1": "لاستيراد جهات اتصال Google الخاصة بك ، ستحتاج إلى ترخيص هذا التطبيق باستخدام متصفح الويب الخاص بك.",
+            "instruction2": "انسخ هذا الرمز إلى الحافظة الخاصة بك عن طريق النقر فوق الرمز أو تحديد النص:",
+            "instruction3": "انتقل إلى الرابط التالي في متصفح الويب الخاص بك ، وأدخل الرمز أعلاه:",
+            "instruction4": "اضغط على الزر أدناه عند الانتهاء من التسجيل:"
+        }
+    },
+    "settings": {
+        "title": "إعدادات",
+        "menu": {
+            "appearance": "مظهر",
+            "language": "لغة",
+            "user": "مستخدم",
+            "files": "الملفات",
+            "open": "أفتح الإعدادات"
+        },
+        "appearance": {
+            "themeMode": {
+                "label": "وضع السمة",
+                "light": "وضع الضوء",
+                "dark": "الوضع الداكن",
+                "system": "التكيف مع النظام"
+            },
+            "theme": "سمة"
+        },
+        "files": {
+            "defaultLocation": "أين يتم تخزين بياناتك الآن",
+            "doubleTapToCopy": "انقر نقرًا مزدوجًا لنسخ المسار",
+            "restoreLocation": "استعادة المسار الافتراضي AppFlowy",
+            "customizeLocation": "افتح مجلدًا آخر",
+            "restartApp": "يرجى إعادة تشغيل التطبيق لتصبح التغييرات سارية المفعول.",
+            "exportDatabase": "تصدير قاعدة البيانات",
+            "selectFiles": "حدد الملفات التي تريد تصديرها",
+            "createNewFolder": "انشاء مجلد جديد",
+            "createNewFolderDesc": "أخبرنا بالمكان الذي تريد تخزين بياناتك فيه",
+            "open": "يفتح",
+            "openFolder": "افتح مجلدًا موجودًا",
+            "openFolderDesc": "اقرأها واكتبها في مجلد AppFlowy الموجود لديك",
+            "folderHintText": "إسم الملف",
+            "location": "إنشاء مجلد جديد",
+            "locationDesc": "اختر اسمًا لمجلد بيانات AppFlowy",
+            "browser": "تصفح",
+            "create": "يخلق",
+            "folderPath": "مسار لتخزين المجلد الخاص بك",
+            "locationCannotBeEmpty": "لا يمكن أن يكون المسار فارغًا",
+            "pathCopiedSnackbar": "تم نسخ مسار تخزين الملفات إلى الحافظة!"
+        },
+        "user": {
+            "name": "اسم",
+            "icon": "أيقونة",
+            "selectAnIcon": "حدد أيقونة",
+            "pleaseInputYourOpenAIKey": "الرجاء إدخال مفتاح OpenAI الخاص بك"
+        }
+    },
+    "grid": {
+        "settings": {
+            "filter": "منقي",
+            "sort": "نوع",
+            "sortBy": "ترتيب حسب",
+            "Properties": "ملكيات",
+            "group": "مجموعة",
+            "addFilter": "أضف عامل تصفية",
+            "deleteFilter": "حذف عامل التصفية",
+            "filterBy": "مصنف بواسطة...",
+            "typeAValue": "اكتب قيمة ...",
+            "layout": "تَخطِيط"
+        },
+        "textFilter": {
+            "contains": "يتضمن",
+            "doesNotContain": "لا يحتوي",
+            "endsWith": "ينتهي بـ",
+            "startWith": "ابدا ب",
+            "is": "يكون",
+            "isNot": "ليس",
+            "isEmpty": "فارغ",
+            "isNotEmpty": "ليس فارغا",
+            "choicechipPrefix": {
+                "isNot": "لا",
+                "startWith": "ابدا ب",
+                "endWith": "ينتهي بـ",
+                "isEmpty": "فارغ",
+                "isNotEmpty": "ليس فارغا"
+            }
+        },
+        "checkboxFilter": {
+            "isChecked": "التحقق",
+            "isUnchecked": "لم يتم التحقق منه",
+            "choicechipPrefix": {
+                "is": "يكون"
+            }
+        },
+        "checklistFilter": {
+            "isComplete": "كاملة",
+            "isIncomplted": "غير مكتمل"
+        },
+        "singleSelectOptionFilter": {
+            "is": "يكون",
+            "isNot": "ليس",
+            "isEmpty": "فارغ",
+            "isNotEmpty": "ليس فارغا"
+        },
+        "multiSelectOptionFilter": {
+            "contains": "يتضمن",
+            "doesNotContain": "لا يحتوي",
+            "isEmpty": "فارغ",
+            "isNotEmpty": "ليس فارغا"
+        },
+        "field": {
+            "hide": "يخفي",
+            "insertLeft": "أدخل اليسار",
+            "insertRight": "أدخل اليمين",
+            "duplicate": "ينسخ",
+            "delete": "يمسح",
+            "textFieldName": "نص",
+            "checkboxFieldName": "خانة اختيار",
+            "dateFieldName": "تاريخ",
+            "numberFieldName": "أعداد",
+            "singleSelectFieldName": "يختار",
+            "multiSelectFieldName": "تحديد متعدد",
+            "urlFieldName": "URL",
+            "checklistFieldName": "قائمة تدقيق",
+            "numberFormat": "تنسيق الأرقام",
+            "dateFormat": "صيغة التاريخ",
+            "includeTime": "أضف الوقت",
+            "dateFormatFriendly": "شهر يوم سنه",
+            "dateFormatISO": "سنة شهر يوم",
+            "dateFormatLocal": "شهر يوم سنه",
+            "dateFormatUS": "سنة شهر يوم",
+            "dateFormatDayMonthYear": "يوم شهر سنة",
+            "timeFormat": "تنسيق الوقت",
+            "invalidTimeFormat": "تنسيق غير صالح",
+            "timeFormatTwelveHour": "12 ساعة",
+            "timeFormatTwentyFourHour": "24 ساعة",
+            "addSelectOption": "أضف خيارًا",
+            "optionTitle": "خيارات",
+            "addOption": "إضافة خيار",
+            "editProperty": "تحرير الملكية",
+            "newProperty": "خاصية جديدة",
+            "deleteFieldPromptMessage": "هل أنت متأكد؟ سيتم حذف هذه الخاصية"
+        },
+        "sort": {
+            "ascending": "تصاعدي",
+            "descending": "تنازلي",
+            "deleteSort": "حذف الفرز",
+            "addSort": "أضف نوعًا"
+        },
+        "row": {
+            "duplicate": "مكرره",
+            "delete": "يمسح",
+            "textPlaceholder": "فارغ",
+            "copyProperty": "نسخ الممتلكات إلى الحافظة",
+            "count": "عدد",
+            "newRow": "صف جديد"
+        },
+        "selectOption": {
+            "create": "يخلق",
+            "purpleColor": "أرجواني",
+            "pinkColor": "لون القرنفل",
+            "lightPinkColor": "وردي فاتح",
+            "orangeColor": "البرتقالي",
+            "yellowColor": "أصفر",
+            "limeColor": "جير",
+            "greenColor": "أخضر",
+            "aquaColor": "أكوا",
+            "blueColor": "أزرق",
+            "deleteTag": "حذف العلامة",
+            "colorPanelTitle": "الألوان",
+            "panelTitle": "حدد خيارًا أو أنشئ خيارًا",
+            "searchOption": "ابحث عن خيار"
+        },
+        "checklist": {
+            "panelTitle": "أضف عنصرًا"
+        },
+        "menuName": "شبكة",
+        "referencedGridPrefix": "نظرا ل"
+    },
+    "document": {
+        "menuName": "وثيقة",
+        "date": {
+            "timeHintTextInTwelveHour": "01:00 مساءً",
+            "timeHintTextInTwentyFourHour": "13:00"
+        },
+        "slashMenu": {
+            "board": {
+                "selectABoardToLinkTo": "حدد لوحة للارتباط بها",
+                "createANewBoard": "قم بإنشاء لوحة جديدة"
+            },
+            "grid": {
+                "selectAGridToLinkTo": "حدد الشبكة للارتباط بها",
+                "createANewGrid": "قم بإنشاء شبكة جديدة"
+            }
+        },
+        "plugins": {
+            "referencedBoard": "المجلس المشار إليه",
+            "referencedGrid": "الشبكة المشار إليها",
+            "autoGeneratorMenuItemName": "كاتب OpenAI",
+            "autoGeneratorTitleName": "OpenAI: اطلب من الذكاء الاصطناعي كتابة أي شيء ...",
+            "autoGeneratorLearnMore": "يتعلم أكثر",
+            "autoGeneratorGenerate": "يولد",
+            "autoGeneratorHintText": "اسأل OpenAI ...",
+            "autoGeneratorCantGetOpenAIKey": "لا يمكن الحصول على مفتاح OpenAI",
+            "smartEdit": "مساعدي الذكاء الاصطناعي",
+            "openAI": "OpenAI",
+            "smartEditFixSpelling": "أصلح التهجئة",
+            "warning": "⚠️ يمكن أن تكون استجابات الذكاء الاصطناعي غير دقيقة أو مضللة.",
+            "smartEditSummarize": "لخص",
+            "smartEditCouldNotFetchResult": "تعذر جلب النتيجة من OpenAI",
+            "smartEditCouldNotFetchKey": "تعذر جلب مفتاح OpenAI",
+            "smartEditDisabled": "قم بتوصيل OpenAI في الإعدادات",
+            "discardResponse": "هل تريد تجاهل استجابات الذكاء الاصطناعي؟",
+            "cover": {
+                "changeCover": "تبديل الغطاء",
+                "colors": "الألوان",
+                "images": "الصور",
+                "clearAll": "امسح الكل",
+                "abstract": "خلاصة",
+                "addCover": "أضف الغلاف",
+                "addLocalImage": "أضف الصورة المحلية",
+                "invalidImageUrl": "عنوان URL للصورة غير صالح",
+                "failedToAddImageToGallery": "فشل في إضافة الصورة إلى المعرض",
+                "enterImageUrl": "أدخل عنوان URL للصورة",
+                "add": "يضيف",
+                "back": "خلف",
+                "saveToGallery": "حفظ في المعرض",
+                "removeIcon": "إزالة الرمز",
+                "pasteImageUrl": "لصق عنوان URL للصورة",
+                "or": "أو",
+                "pickFromFiles": "اختر من الملفات",
+                "couldNotFetchImage": "تعذر جلب الصورة",
+                "imageSavingFailed": "فشل حفظ الصورة",
+                "addIcon": "إضافة أيقونة",
+                "coverRemoveAlert": "ستتم إزالته من الغلاف بعد حذفه.",
+                "alertDialogConfirmation": "هل أنت متأكد أنك تريد الاستمرار؟"
+            },
+            "mathEquation": {
+                "addMathEquation": "أضف معادلة رياضية",
+                "editMathEquation": "تحرير المعادلة الرياضية"
+            }
+        }
+    },
+    "board": {
+        "column": {
+            "create_new_card": "جديد"
+        },
+        "menuName": "سبورة",
+        "referencedBoardPrefix": "نظرا ل"
+    },
+    "calendar": {
+        "menuName": "تقويم",
+        "defaultNewCalendarTitle": "بدون عنوان",
+        "navigation": {
+            "today": "اليوم",
+            "jumpToday": "انتقل إلى اليوم",
+            "previousMonth": "الشهر الماضى",
+            "nextMonth": "الشهر القادم"
+        },
+        "settings": {
+            "showWeekNumbers": "إظهار أرقام الأسبوع",
+            "showWeekends": "عرض عطلات نهاية الأسبوع",
+            "firstDayOfWeek": "اليوم الأول من الأسبوع",
+            "layoutDateField": "تقويم التخطيط بواسطة"
+        }
+    }
+}

+ 1 - 0
frontend/appflowy_flutter/lib/startup/tasks/app_widget.dart

@@ -28,6 +28,7 @@ class InitAppWidgetTask extends LaunchTask {
       EasyLocalization(
         supportedLocales: const [
           // In alphabetical order
+          Locale('ar', 'AR'),
           Locale('ca', 'ES'),
           Locale('de', 'DE'),
           Locale('en'),

+ 2 - 0
frontend/appflowy_flutter/packages/flowy_infra/lib/language.dart

@@ -16,6 +16,8 @@ String languageFromLocale(Locale locale) {
       }
 
     // Then in alphabetical order
+    case "ar":
+      return "العربية";
     case "ca":
       return "Català";
     case "de":