From c8f74014707aab83a0481def73d01a3281375bf8 Mon Sep 17 00:00:00 2001 From: Mohamed DevOps <86662184+Mohamed-DevOps@users.noreply.github.com> Date: Thu, 27 Apr 2023 07:41:26 +0200 Subject: [PATCH] chore: add Arabic translation (#2348) * add arabic translation * add arabic locale * add arabic translation * Update ar-SA.json * Update ar-SA.json --- .../assets/translations/ar-SA.json | 422 ++++++++++++++++++ .../lib/startup/tasks/app_widget.dart | 1 + .../packages/flowy_infra/lib/language.dart | 2 + 3 files changed, 425 insertions(+) create mode 100644 frontend/appflowy_flutter/assets/translations/ar-SA.json diff --git a/frontend/appflowy_flutter/assets/translations/ar-SA.json b/frontend/appflowy_flutter/assets/translations/ar-SA.json new file mode 100644 index 0000000000..a1f6446428 --- /dev/null +++ b/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": "تقويم التخطيط بواسطة" + } + } +} diff --git a/frontend/appflowy_flutter/lib/startup/tasks/app_widget.dart b/frontend/appflowy_flutter/lib/startup/tasks/app_widget.dart index d38f12e84b..f28ab7a250 100644 --- a/frontend/appflowy_flutter/lib/startup/tasks/app_widget.dart +++ b/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'), diff --git a/frontend/appflowy_flutter/packages/flowy_infra/lib/language.dart b/frontend/appflowy_flutter/packages/flowy_infra/lib/language.dart index daeba5a95b..d35e07a954 100644 --- a/frontend/appflowy_flutter/packages/flowy_infra/lib/language.dart +++ b/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":