From f37f21a46eef01a6fb336d865fbf296258d9cf1d Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Tue, 21 Oct 2025 17:07:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=A4=9A=E8=AF=AD=E8=A8=80=E6=94=AF?= =?UTF-8?q?=E6=8C=81):=20=E6=B7=BB=E5=8A=A0=E9=98=BF=E6=8B=89=E4=BC=AF?= =?UTF-8?q?=E8=AF=AD=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在设置控制器和翻译模块中添加阿拉伯语选项和映射 --- lib/core/translations/app_translations.dart | 3 + lib/core/translations/language/ar_sa.dart | 1160 +++++++++++++++++ .../controllers/settings_controller.dart | 1 + 3 files changed, 1164 insertions(+) create mode 100644 lib/core/translations/language/ar_sa.dart diff --git a/lib/core/translations/app_translations.dart b/lib/core/translations/app_translations.dart index 1d8c86957..2e73724ed 100644 --- a/lib/core/translations/app_translations.dart +++ b/lib/core/translations/app_translations.dart @@ -41,6 +41,7 @@ import 'language/lv_lv.dart'; // 新增拉脱维亚语导入 import 'language/et_ee.dart'; // 新增爱沙尼亚语导入 import 'language/is_is.dart'; // 新增塞尔维亚语(拉丁)导入 import 'language/sr_rs.dart'; // 新增冰岛语导入 +import 'language/ar_sa.dart'; // 新增阿拉伯语导入 class AppTranslations extends Translations { static const fallbackLocale = Locale('zh', 'CN'); @@ -129,6 +130,7 @@ class AppTranslations extends Translations { const Locale('et', 'EE'), // 爱沙尼亚语 const Locale('sr', 'RS'), // 塞尔维亚语 const Locale('is', 'IS'), // 新增冰岛语支持 + const Locale('ar', 'SA'), // 新增阿拉伯语支持 ]; /// 语言代码映射表,用于处理各种标准语言代码格式 @@ -327,5 +329,6 @@ class AppTranslations extends Translations { 'et_EE': etEE, // 爱沙尼亚语 'sr_RS': srRS, // 新增塞尔维亚语(拉丁)映射 'is_IS': isIS, // 新增冰岛语映射 + 'ar_SA': arSA, // 新增阿拉伯语映射 }; } diff --git a/lib/core/translations/language/ar_sa.dart b/lib/core/translations/language/ar_sa.dart new file mode 100644 index 000000000..c6038de67 --- /dev/null +++ b/lib/core/translations/language/ar_sa.dart @@ -0,0 +1,1160 @@ +const Map arSA = { + // 通用 + 'continue': 'متابعة', + 'confirm': 'تأكيد', + 'cancel': 'إلغاء', + 'retry': 'إعادة المحاولة', + 'error': 'خطأ', + 'success': 'نجاح', + 'connected': 'متصل', + 'connecting': 'جاري الاتصال...', + 'connectionFailure': 'فشل الاتصال', + 'unconnected': 'غير متصل', + 'search': 'بحث', + "requestCancellation": "تم إلغاء الطلب", + "connectionTimeout": "انتهت مهلة الاتصال", + "requestTimeout": "انتهت مهلة الطلب", + "responseTimeout": "انتهت مهلة الاستجابة", + "unknownError": "خطأ غير معروف", + + // 启动页 + "slogan": "تواصل مع العالم، أبعد من مجرد صوت", + "sloganInfo": "خبير صوتي بالذكاء الاصطناعي · في أي وقت وفي أي مكان", + + // 底部导航 + "home": "الرئيسية", + "explore": "اكتشف", + "settings": "الإعدادات", + + // 语言 + "followingSystem": "متابعة النظام", + "chinese": "الصينية", + "english": "الإنجليزية", + "spanish": "الإسبانية", + "portuguese": "البرتغالية", + "traditionalChinese": "الصينية التقليدية", + "japanese": "اليابانية", + "korean": "الكورية", + "french": "الفرنسية", + "german": "الألمانية", + "russian": "الروسية", + "vietnamese": "الفيتنامية", + "italian": "الإيطالية", + "hindi": "الهندية", + "indonesian": "الإندونيسية", + "thai": "التايلاندية", + "malay": "الماليزية", + "turkish": "التركية", + "polish": "البولندية", + "filipino": "الفلبينية", + "dutch": "الهولندية", + "swedish": "السويدية", + "danish": "الدانمركية", + "finnish": "الفنلندية", + "czech": "التشيكية", + "hungarian": "المجرية", + "norwegian": "النرويجية", + "romanian": "الرومانية", + "ukrainian": "الأوكرانية", + "greek": "اليونانية", + "bulgarian": "البلغارية", + "croatian": "الكرواتية", + "slovak": "السلوفاكية", + "slovenian": "السلوفينية", + "lithuanian": "الليتوانية", + "latvian": "اللاتفية", + "estonian": "الإستونية", + "serbian": "الصربية", + "icelandic": "الآيسلندية", + + // 登录页 + "welcome": "أهلاً بك", + "loginTips": + "يرجى استخدام رقم الهاتف أو البريد الإلكتروني لتسجيل الدخول/التسجيل", + "accountNumber": "رقم الهاتف أو البريد الإلكتروني", + "verificationCode": "رمز التحقق", + "getCode": "الحصول على الرمز", + "reacquireAfter": "إعادة الإرسال بعد s ثانية", + "otherWays": "أو سجل الدخول باستخدام الطرق التالية", + "expressConsent": "تسجيل الدخول/التسجيل يعني موافقتك على", + "and": " و ", + "userAgreement": "《اتفاقية المستخدم》", + "privacyPolicy": "《سياسة الخصوصية》", + 'selectCountry': 'اختر الدولة/المنطقة', + "email": "البريد الإلكتروني", + "phoneNumber": "رقم الهاتف", + "pleaseEnterContactInfo": "يرجى إدخال رقم الهاتف أو البريد الإلكتروني", + "invalidEmailFormat": "تنسيق البريد الإلكتروني غير صحيح", + "invalidPhoneFormat": "تنسيق رقم الهاتف غير صحيح", + "tip": "نصيحة", + "pleaseEnterCompleteCode": "يرجى إدخال رمز التحقق بالكامل", + "loginFailed": "فشل تسجيل الدخول، يرجى المحاولة مرة أخرى", + 'pleaseAcceptPrivacyPolicy': + 'يرجى قراءة والموافقة على سياسة الخصوصية واتفاقية المستخدم أولاً', + "enterVerificationCode": "أدخل رمز التحقق", + "verificationCodeSentTo": "تم إرسال رمز التحقق إلى", + "resendVerificationCode": "إعادة إرسال رمز التحقق", + "login": "تسجيل الدخول", + "usePasswordLogin": "استخدام كلمة المرور لتسجيل الدخول", + + // 隐私政策弹窗 + "loginDeclaration": "إعلان Voitrans", + "welcomeToThisApp": "مرحبًا بك في Voitrans، يرجى القراءة بعناية", + "privacyPolicyText": + "، بالنقر على 'أوافق وأدخل'، فإنك تقر بأنك قد قرأت ووافقت على الاتفاقيات المذكورة أعلاه. النقر على 'لا أوافق' سيؤدي إلى الخروج من التطبيق.", + "disagree": "لا أوافق", + "agreeAndEnter": "أوافق وأدخل", + + // 首页 + "deviceStatus": "حالة الجهاز", + "reconnect": "إعادة الاتصال", + "connectingDevice": "جاري الاتصال بالجهاز...", + "connectedTo": "متصل بـ", + "signal": "الإشارة", + "deviceId": "معرف الجهاز", + "firmwareVersion": "إصدار البرنامج الثابت", + "disconnectedDevice": "الجهاز غير متصل، انقر على الزر أدناه للاتصال", + "connectDevice": "توصيل الجهاز", + "topAiExperiences": "أفضل تجارب الذكاء الاصطناعي", + "aiAssistant": "مساعد الذكاء الاصطناعي الشامل", + "aiAssistantInfo": + "مستشار حصري على مدار 24 ساعة للإجابة على الأسئلة وتقديم الاقتراحات", + "simultaneousInterpretation": "الترجمة الفورية", + "simultaneousInterpretationInfo": + "ترجمة فورية لأكثر من 80 لغة، سفر خالٍ من القلق", + "aiCompanion": "رفيق العائلة", + "aiCompanionInfo": "يفهمك ويقدم لك رفقة دافئة", + "homeSlogan": "تواصل مع العالم، أبعد من الصوت", + "turnEarphones": "يرجى فتح علبة شحن سماعات الأذن ووضعها في أذنيك", + "currentlyConnected": "متصل حاليًا:", + "unsystemSetup": "اذهب إلى إعدادات النظام", + "talkLater": "سنتحدث لاحقًا", + "initializing": "جاري التهيئة...", + "bluetoothInitializationFailure": "فشل تهيئة خدمة البلوتوث", + "checkingPermissions": "جاري التحقق من الأذونات...", + "lackPermissions": "أذونات البلوتوث مفقودة", + "searchingDevice": "جاري البحث عن الجهاز...", + "findConnectedDevice": "تم العثور على جهاز متصل", + "notFound": "لم يتم العثور على أجهزة بلوتوث متصلة", + "initializationFailure": "فشل التهيئة", + "connectedDevice": "متصل بالجهاز:", + "failedRefreshDevice": "فشل تحديث الجهاز", + "noDeviceFound": "لم يتم العثور على جهاز متصل", + "failedDeviceInformation": "لا يمكن الحصول على معلومات الجهاز", + "unknownEquipment": "جهاز غير معروف", + "zeroSignal": "لا توجد إشارة", + "good": "جيد", + "fine": "جيد جدًا", + "excellent": "ممتاز", + "unknown": "غير معروف", + 'bluetoothTurnedOff': 'البلوتوث مغلق، يرجى تشغيله', + 'bluetoothOff': 'البلوتوث مغلق', + 'leftEar': 'الأذن اليسرى', + 'rightEar': 'الأذن اليمنى', + 'chargingCase': 'علبة الشحن', + 'left': 'يسار', + 'right': 'يمين', + 'checkConnectionStatusFailed': 'فشل التحقق من حالة الاتصال', + + // 发现页 + "searchAi": "بحث عن وظائف الذكاء الاصطناعي...", + "exploreSlogan": "سماعات ذكية، إمكانيات لا حصر لها", + "exploreSlogan1": "رفقة ذكية، إمكانيات لا حصر لها", + "exploreSlogan2": "نظارات ذكية، إمكانيات لا حصر لها", + "exploreAi": "استكشف وظائف الذكاء الاصطناعي التي يقدمها Voitrans", + "aiFunction": "وظائف الذكاء الاصطناعي", + "allRoundAssistant": "مساعد شامل", + "allRoundAssistantInfo": "يساعدك على حل جميع أنواع المشاكل", + "simultaneousTranslation": "الترجمة الفورية", + "faceToFaceTranslation": "الترجمة وجهًا لوجه", + 'audioVideoTranslation': 'ترجمة الصوت والفيديو', + 'callTranslation': 'ترجمة المكالمات', + "simultaneousTranslationInfo": "ترجمة فورية لأكثر من 80 لغة", + "aiGirlfriend": "رفيق العائلة", + "aiGirlfriendInfo": "رفقة ذكية، دردشة في أي وقت", + "healthConsultant": "دردشة ذكاء اصطناعي متعددة الوظائف", + "healthConsultantInfo": "يوفر المزيد من وظائف الدردشة بالذكاء الاصطناعي", + "conferenceAssistant": "مساعد اجتماعات الأعمال", + "conferenceAssistantInfo": + "تسجيل محاضر الاجتماعات في الوقت الفعلي، ترجمة متعددة اللغات", + "studyAssistant": "مساعد تعلم اللغة", + "studyAssistantInfo": "تصحيح النطق، ممارسة المحادثة في الوقت الفعلي", + "travelTranslator": "مساعد ترجمة السفر", + "travelTranslatorInfo": "ترجمة صوتية فورية، مقدمة عن مناطق الجذب السياحي", + "beSearching": "جاري البحث:", + "noAssistantFound": "لم يتم العثور على مساعد الذكاء الاصطناعي المقابل", + "scene": "مشهد", + "youHaveSelected": "لقد اخترت:", + "newFunction": "وظيفة جديدة", + "youChoseTry": "لقد اخترت التجربة", + "aiSinger": "وضع مغني الذكاء الاصطناعي", + "aiSingerInfo": + "غنِ أي أغنية بصوت فنانك المفضل، حتى الأغاني التي كتبتها بنفسك", + "popularFunction": "مشاهد الوظائف الشائعة", + "tryNow": "جرب الآن", + + // 商务会议助手页 + "startMeeting": "بدء الاجتماع", + 'edit': 'تعديل', + 'delete': 'حذف', + 'noContent': 'لا يوجد محتوى', + 'editMeetingTitle': 'تعديل عنوان الاجتماع (اختياري)', + 'meetingTitle': 'عنوان الاجتماع (اختياري)', + 'maxCharacters': '50 حرفًا كحد أقصى', + 'meeting': 'اجتماع', + 'recordingDetails': 'تفاصيل التسجيل', + 'aiSummary': 'ملخص الذكاء الاصطناعي', + 'meetingTranscript': 'نص الاجتماع', + + // Meeting模块 - 导航和基础功能 + 'files': 'ملفات', + 'mine': 'ملفاتي', + 'connect': 'اتصال', + 'allFiles': 'كل الملفات', + 'searchInAllFiles': 'بحث في كل الملفات', + 'from': 'من', + 'sortBy': 'فرز حسب', + 'creationTime': 'وقت الإنشاء', + 'bluetoothConnection': 'اتصال بلوتوث', + 'meetingReconnect': 'إعادة الاتصال', + 'searching': 'جاري البحث...', + 'searchFailed': 'فشل البحث، يرجى التحقق مما إذا كان البلوتوث مفتوحًا', + 'aiPenNotFound': 'لم يتم العثور على جهاز AI PEN', + 'connectedToAiPen': 'متصل بجهاز AI PEN', + 'checkingNewFiles': 'التحقق من وجود ملفات جديدة للاستيراد', + 'startingWifi': 'جاري تشغيل Wi-Fi...', + 'newFilesDetected': 'تم اكتشاف ملفات جديدة، جاري التحضير للاستيراد', + 'noNewFiles': 'لا توجد ملفات جديدة للاستيراد', + 'connectingWifi': 'جاري الاتصال بـ Wi-Fi...', + 'wifiConnected': 'تم الاتصال بـ Wi-Fi بنجاح', + 'downloadingFiles': 'جاري تنزيل الملفات...', + 'downloadingFileProgress': + 'إجمالي {total} ملفات، جاري تنزيل الملف رقم {current}', + 'downloadComplete': 'اكتمل التنزيل', + 'downloadCompleteInfo': + 'اكتمل التنزيل، إجمالي {count} ملفات، سيعود تلقائيًا بعد ثانيتين', + + // Meeting模块 - 录音功能 + 'startRecording': 'بدء التسجيل', + 'liveRecording': 'تسجيل مباشر', + 'audioVideoRecording': 'تسجيل صوت وفيديو', + 'callRecording': 'تسجيل المكالمات', + 'importAudio': 'استيراد صوت', + 'transcribing': 'جاري النسخ...', + 'summarizing': 'جاري التلخيص...', + 'analyzing': 'جاري التحليل...', + 'summaryComplete': 'اكتمل التلخيص', + 'generate': 'إنشاء', + 'overview': 'نظرة عامة', + 'transcription': 'نسخ', + 'summary': 'ملخص', + 'mindMap': 'خريطة ذهنية', + 'editSpeaker': 'تعديل', + 'nameSpeaker': 'تسمية المتحدث', + + // Meeting模块 - 我的页面 + 'transcriptionRecords': 'سجلات النسخ', + 'templateCommunity': 'مجتمع القوالب', + 'comingSoon': 'قريبًا', + 'integration': 'تكامل', + 'voitransPrivateCloud': 'سحابة VOITRANS الخاصة', + 'enabled': 'مفعل', + 'disabled': 'معطل', + 'myVoitransDevice': 'جهازي VOITRANS', + 'helpAndFeedback': 'المساعدة والملاحظات', + 'aboutVoitrans': 'حول VOITRANS', + 'meetingDays': 'أيام', + 'meetingHours': 'ساعات', + 'voitransAiMember': 'عضو Voitrans AI', + 'unlockStarterMember': 'فتح عضوية Starter', + 'bindDeviceToActivate': 'اربط جهاز Voitrans لتفعيل عضوية Starter', + 'unlockNow': 'افتح الآن', + + // Meeting模块 - 会员功能 + 'comparison': 'مقارنة', + 'detailedInfo': 'معلومات مفصلة', + 'monthlyTranscriptionTime': 'مدة النسخ الشهرية', + 'unlimited': 'غير محدود', + 'professionalTemplates': 'قوالب احترافية', + 'limited': 'محدود', + 'fullTemplates': 'قوالب كاملة', + 'professionalTerms': 'مصطلحات احترافية', + 'customTemplates': 'قوالب مخصصة', + 'visualMindMap': 'خريطة ذهنية مرئية', + 'speakerIdentification': 'تمييز المتحدثين', + 'aiVoiceEnhancement': 'تحسين الصوت بالذكاء الاصطناعي', + 'audioImport': 'استيراد الصوت', + 'multipleExportFormats': 'يدعم تنسيقات تصدير متعددة', + 'professionalSummaryTemplates': 'قوالب ملخصات احترافية', + 'professionalTemplateDesc': + 'تصميم قوالب احترافية لزيادة كفاءة عملك. مصممة خصيصًا لتلبية احتياجات الصناعة.', + 'customTemplateDesc': + 'يمكنك تخصيص مطالبات الملخص وفقًا لاحتياجاتك واستخدامها لإنشاء الملخصات المطلوبة.', + 'askAiDesc': + 'استخرج معلومات أعمق بذكاء من التسجيلات، وأنشئ جداول بيانات، واستنتاجات مناقشات رئيسية، وقوائم مهام، ورسائل بريد إلكتروني للتقارير بنقرة واحدة.', + 'visualMindMapDesc': + 'تجاوز الملخص - استخدم الخرائط الذهنية لتنظيم وتصور النقاط الرئيسية، وفهم النص الكامل بشكل أكثر فعالية.', + 'templateCommunityDesc': + 'اكتشف وشارك واحصل على الإلهام من مكتبة القوالب التي أنشأها المستخدمون.', + 'speakerIdentificationDesc': + 'سيدعم نسخ الصوت تمييز المتحدثين، مما يعيد محتوى الاجتماعات أو المكالمات الهاتفية بشكل أكثر سهولة. وفي الوقت نفسه، سيكون الملخص أكثر دقة.', + 'privateCloudSyncDesc': + 'سيتم تخزين بياناتك مثل التسجيلات والنسخ بأمان في خادم سحابي مخصص، مع تشفير كامل أثناء التحميل والتنزيل لضمان أمان الخصوصية.', + 'aiVoiceEnhancementDesc': + 'يدعم تحسين الصوت بالذكاء الاصطناعي إعدادات تقليل الضوضاء متعددة المستويات، ويزيل ضوضاء الخلفية بذكاء، ويعزز وضوح الكلام، ويحسن تأثير تشغيل الصوت.', + 'audioImportDesc': + 'يمكنك بسهولة استيراد ملفات الصوت من التطبيقات المحلية أو تطبيقات الطرف الثالث، مثل المذكرات الصوتية و Google Drive.', + 'multipleExportFormatsDesc': + 'صدّر تسجيلاتك الصوتية ونصوص النسخ والملخصات بتنسيقات مختلفة (TXT، PDF، JPEG) لتلبية احتياجاتك.', + + // Meeting模块 - 升级会员 + 'upgradeMembership': 'قم بترقية عضويتك', + 'yearlySubscription': 'اشتراك سنوي', + 'monthlySubscription': 'اشتراك شهري', + 'proMonthly': 'Pro ¥60/شهر', + 'proMonthlyDesc': + 'تجربة مجانية لمدة 7 أيام، ثم ¥800/سنة. يمكنك الإلغاء في أي وقت قبل انتهاء الفترة التجريبية.', + 'sevenDayTrial': 'تجربة مجانية لمدة 7 أيام', + 'unlimitedMonthly': 'Unlimited ¥120/شهر', + 'unlimitedMonthlyDesc': + 'تجربة مجانية لمدة 7 أيام، ثم ¥1600/سنة. يمكنك الإلغاء في أي وقت قبل انتهاء الفترة التجريبية.', + 'trialNote': + '*تجربة مجانية لمدة 7 أيام، ثم تتم المحاسبة سنويًا، يمكنك الإلغاء في أي وقت.', + 'proPrice': 'Pro ¥120', + 'proMonthlyPrice': '¥120/شهر', + 'subscribe': 'اشتراك', + 'unlimitedPrice': 'Unlimited ¥198', + 'unlimitedMonthlyPrice': '¥198/شهر', + 'upgradeNote': + '*بعد ترقية اشتراكك، سيتم حساب فرق سعر الأيام المتبقية من اشتراكك الأصلي تلقائيًا وإعادته إلى حساب الدفع الخاص بك', + 'buyMoreTranscriptionTime': 'شراء المزيد من وقت النسخ', + 'sixThousandMinutes': '6,000 دقيقة', + 'threeThousandMinutes': '3,000 دقيقة', + 'sixHundredMinutes': '600 دقيقة', + 'oneHundredTwentyMinutes': '120 دقيقة', + 'validityPeriod': '*فترة الصلاحية:', + 'validityNote': 'يتم التفعيل فور الشراء، وصالح لمدة عامين بعد التفعيل.', + 'purchase': 'شراء', + + // Meeting模块 - 模版和生成 + 'selectSummaryTemplate': 'اختر قالب الملخص', + 'useThisTemplate': 'استخدم هذا القالب', + 'lastUsed': 'آخر استخدام', + 'viewAll': 'عرض الكل', + 'recordingLanguage': 'لغة التسجيل', + 'chineseSimplified': 'الصينية الماندرين (المبسطة)', + 'meetingGenerateNow': 'أنشئ الآن', + 'keyEventsAnalyzed': 'تم تحليل {count} حدثًا رئيسيًا.', + 'aiAnalysisDesc': + 'يحدد تحليل الذكاء الاصطناعي الأحداث الرئيسية في التسجيل، مما يتيح لك تحديد الأحداث المهمة لإنشاء الذكاء الاصطناعي.', + + // Meeting模块 - 文件操作和状态 + 'importing': 'جاري الاستيراد...', + 'batchImporting': 'جاري الاستيراد دفعة واحدة...', + 'importingLocalRecordings': 'جاري استيراد التسجيلات المحلية...', + 'importFailed': 'فشل استيراد الملف: {filePath}, خطأ: {error}', + 'importSuccess': 'تم استيراد {count} تسجيلات محلية بنجاح', + 'importError': 'فشل الاستيراد: {error}', + 'pleaseSelectAudioFile': 'يرجى تحديد ملف صوتي', + 'shareAudio': 'مشاركة صوت الاجتماع', + 'shareComplete': 'اكتملت المشاركة!', + 'shareFailed': 'فشلت المشاركة: {error}', + 'fileProcessingFailed': 'فشلت معالجة الملف: {filePath}, خطأ: {error}', + + // 翻译模块 - Meeting相关 + 'meetingUnknownLanguage': 'لغة غير معروفة', + + // 权限相关 - Meeting相关 + 'meetingStoragePermission': 'تخزين', + 'meetingStoragePermissionExplanation': + 'نحتاج إلى إذن الوصول إلى التخزين حتى تتمكن من تحديد وتحميل الملفات الصوتية.', + 'meetingStoragePermissionPermanentDenial': + 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق وتمكين إذن التخزين يدويًا.', + + // Meeting模块 - 思维导图相关 + 'shareMindMap': 'مشاركة الخريطة الذهنية', + 'shareSuccess': 'تمت المشاركة بنجاح', + + // Meeting模块 - AI相关 + 'askAI': 'اسأل الذكاء الاصطناعي...', + 'askAIPrompt': 'بماذا يمكنني مساعدتك اليوم؟', + 'continueAsk': 'متابعة السؤال', + 'todoList': 'قائمة المهام', + 'extractConclusion': 'استخلاص النتائج', + 'generateKeyIndicators': 'إنشاء مؤشرات رئيسية', + + // Meeting模块 - 更多操作相关 + 'reSummarize': 'إعادة التلخيص', + + // Meeting模块 - 录音语言相关 + 'recordLanguage': 'لغة التسجيل', + 'cantonese': 'الكانتونية', + 'sichuan': 'السيتشوانية', + 'shanghai': 'الشنغهاينية', + + // Meeting模块 - 分享相关 + 'shareLink': 'مشاركة الرابط', + 'copyTranscript': 'نسخ النص', + 'copySummary': 'نسخ الملخص', + 'exportAudio': 'تصدير الصوت', + 'exportTranscript': 'تصدير النص', + 'shareMeetingAudio': 'مشاركة صوت الاجتماع', + 'exportSummary': 'تصدير الملخص', + 'exportAs': 'تصدير كـ', + 'exportingPDF': 'جاري تصدير PDF...', + + // Meeting模块 - 发言者相关 + 'nameCurrentSpeaker': 'تسمية المتحدث الحالي', + 'recentlyUsedNames': 'الأسماء المستخدمة مؤخرًا', + 'applyToCurrentParagraph': 'تطبيق على الفقرة الحالية', + 'totalTime': 'الإجمالي', + 'summarySpeakerWillBeUpdatedAutomatically': + 'سيتم تحديث المتحدث في الملخص تلقائيًا', + + // Meeting模块 - 云端同步相关 + 'syncToCloud': 'مزامنة إلى السحابة', + 'syncToCloudTip': + 'قم بمزامنة تسجيلاتك تلقائيًا إلى السحابة، ويمكنك تشغيلها وإدارتها ومشاركتها عبر أي تطبيق VOITRANS أو VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'مزامنة تطبيق VOITRANS', + 'transcriptionRecord': 'سجل النسخ', + + // Meeting模块 - 总结页面相关 + 'dateAndTime': 'التاريخ والوقت', + 'location': 'الموقع', + 'attendees': 'الحضور', + 'inputLocation': 'أدخل الموقع', + 'inputAttendees': 'أدخل الحضور', + + // 设置页 + "systemSettings": "إعدادات النظام", + "premiumMember": "عضو مميز", + "joinDevice": "الجهاز المتصل:", + "accountId": "معرف الحساب:", + "systemSetting": "إعدادات النظام", + "languageSetting": "إعدادات اللغة", + "darkMode": "الوضع الداكن", + "darkModeInfo": "تبديل المظهر الفاتح والداكن للتطبيق", + "backups": "النسخ الاحتياطي والاستعادة", + "backupsInfo": "نسخ احتياطي للإعدادات وسجل تفاعلات الذكاء الاصطناعي", + "lastBackup": "آخر نسخ احتياطي:", + "privacySettings": "إعدادات الخصوصية", + "privacySettingsInfo": "إدارة جمع البيانات والأذونات", + "permissionManagement": "إدارة الأذونات", + "permissionManagementInfo": "إدارة إعدادات أذونات التطبيق", + "aboutApplication": "حول التطبيق", + "versions": "الإصدار", + "checkUpdates": "التحقق من التحديثات", + "selectLanguage": "اختر اللغة", + "voiceService": "خدمة الصوت", + "voiceServiceInfo": "اختر خدمات التعرف على الكلام وتوليفه", + "selectVoiceService": "اختر خدمة الصوت", + "azureVoiceService": "خدمة Azure الصوتية", + "azureVoiceServiceInfo": + "خدمة صوتية سحابية من Microsoft، تدعم توليف الكلام والتعرف عليه بجودة عالية", + "flutterVoiceService": "خدمة Flutter الصوتية المحلية", + "flutterVoiceServiceInfo": + "خدمة صوتية محلية على الجهاز، يمكن استخدامها بدون اتصال بالإنترنت", + 'timbreService': 'خدمة النبرة', + 'timbreServiceInfo': 'اختر خدمة توليف الكلام بالنبرة', + 'defaultTimbre': 'النبرة الافتراضية', + 'microsoftCloudTimbreService': 'خدمة النبرة السحابية من Microsoft', + 'voiceClone': 'استنساخ الصوت', + 'AIsettings': 'إعدادات الذكاء الاصطناعي', + 'selecttimbre': 'اختر النبرة', + 'pleaseRead': 'يرجى القراءة بصوت عالٍ', + 'completeRecording': 'إكمال التسجيل', + "firmwareUpgrade": "ترقية البرنامج الثابت", + "bleHeadsetFirmwareUpgrade": "ترقية إصدار البرنامج الثابت لسماعة BLE", + "deviceManagement": "إدارة الأجهزة", + "manageConnectedDevices": "إدارة أجهزة البلوتوث المرتبطة", + + //设置setting_controller + // 版本更新相关 + 'currentLatestVersion': 'هذا هو أحدث إصدار حاليًا {version}', + 'checkUpdateFailed': 'فشل التحقق من التحديثات', + 'networkErrorRetry': 'خطأ في الشبكة، يرجى المحاولة مرة أخرى لاحقًا', + + // 设备管理相关 + // 'clearPairedDevices': 'مسح الأجهزة المقترنة', + // 'clearPairedDevicesConfirm': 'هل أنت متأكد من أنك تريد مسح جميع الأجهزة المقترنة؟', + // 'clearPairedDevicesSuccess': 'تم مسح الأجهزة المقترنة بنجاح', + // 'clearPairedDevicesFailed': 'فشل مسح الأجهزة المقترنة', + + // 设置页面 - 实时语音对话 + "realtimeVoiceChat": "محادثة صوتية في الوقت الفعلي", + "realtimeVoiceChatInfo": "تجربة وظيفة التفاعل الصوتي الذكي (معاينة الميزة)", + "loading": "جاري التحميل...", + + //设备管理页面 + "deviceTypeUnknown": "جهاز غير معروف", + "deviceTypeClassicBluetoothHeadset": "سماعة بلوتوث كلاسيكية", + "deviceTypeBleBluetoothHeadset": "سماعة بلوتوث BLE", + "deviceTypeSmartVoiceRecorder": "مسجل صوت ذكي", + "deviceTypeSmartEye": "نظارات ذكية", + "unbind": "إلغاء الربط", + "noDevicesBound": "لا توجد أجهزة مرتبطة بعد", + "pleaseBindDeviceFirst": "يرجى ربط جهاز أولاً قبل الإدارة", + "noMacAddress": "لا يوجد عنوان MAC", + "licenseCode": "رمز الترخيص", + "confirmUnbind": "تأكيد إلغاء الربط", + "confirmUnbindMessage": + "هل أنت متأكد من أنك تريد إلغاء ربط الجهاز \"{deviceName}\"؟", + "confirmUnbindAction": "تأكيد إلغاء الربط", + + //Agent 模块 + // agent View + "XiaoYan": "شياو يان", + "clearChatHistory": "مسح سجل الدردشة", + "online": "متصل", + "inputMessage": "أدخل رسالة...", + "imListening": "أنا أستمع...", + "canStartTalking": "يمكنك البدء في التحدث", + "addQuestionAboutImage": "أضف سؤالاً أو وصفًا للصورة...", + "summarizeImageContent": "تلخيص محتوى الصورة", + "extractImageText": "استخراج النص من الصورة", + "translateImageText": "ترجمة النص من الصورة", + "recording": "جاري التسجيل...", + "holdToSpeak": "اضغط مطولاً للتحدث", + "takePhoto": "التقاط صورة", + "photoAlbum": "ألبوم الصور", + "makeCall": "إجراء مكالمة", + "aiVoiceCall": "مكالمة صوتية بالذكاء الاصطناعي", + "inCall": "جاري الاتصال...", + "aiReplying": "الذكاء الاصطناعي يجيب...", + "waitingToStart": "في انتظار البدء...", + "clickToStartCall": "انقر لبدء المكالمة", + "listeningToYou": "أستمع إليك...", + "processing": "جاري المعالجة...", + "loadMoreMessages": "تحميل المزيد من الرسائل...", + "loadFailedClickRetry": "فشل التحميل، انقر لإعادة المحاولة", + "swipeUpForMore": "اسحب لأعلى للمزيد", + + // 预设提示词 + "presetMusic": "شغل بعض الموسيقى", + "presetNavigation": "اذهب إلى", + "presetWeather": "طقس اليوم", + "presetNews": "أخبار اليوم", + "presetFood": "طعام قريب", + "playSomeMusic": "شغل بعض موسيقى البوب", + "navigationTo": "يرجى مساعدتي في التنقل إلى", + "todayWeather": "كيف هو طقس اليوم؟", + "todayNews": "ما هي أخبار اليوم؟", + "nearbyFood": "ما هي الأطعمة الجيدة القريبة؟", + + // Agent controller + 'welcomeMessage': 'مرحباً! أنا **شياو يان**، يمكنني مساعدتك في:\n\n' + '• الإجابة على الأسئلة وتقديم المعلومات\n\n' + '• الترجمة الصوتية الفورية\n\n' + '• التوصية بالموسيقى والبودكاست\n\n' + '• المذكرات الصوتية والتذكيرات\n\n' + '• التحكم في وظائف سماعة الرأس\n\n' + 'هل هناك أي شيء يمكنني مساعدتك به؟', + 'microphonePermission': 'ميكروفون', + 'voiceRecognitionPermissionText': + 'تتطلب وظيفة التعرف على الصوت الوصول إلى الميكروفون.', + 'voiceTranslationPermissionText': + 'تتطلب وظيفة التعرف على الصوت والترجمة الوصول إلى الميكروفون.', + 'phoneCallPermissionText': + 'تتطلب وظيفة إجراء المكالمات الوصول إلى الميكروفون للمكالمات الصوتية.', + 'permissionDeniedText': + 'لقد رفضت إذن الميكروفون بشكل دائم، يرجى الانتقال إلى إعدادات النظام لتمكينه.', + 'startVoiceInput': 'بدء الإدخال الصوتي', + 'startPhoneCallMode': 'بدء وضع إجراء المكالمات، بدء الإدخال الصوتي', + + // Agent 全屏编辑器 + 'fullScreenEditorHint': 'اكتب رسالتك هنا...', + 'characterCount': '{count} حرفًا', + + // 消息长按操作 + 'copy': 'نسخ', + 'copySuccess': 'تم النسخ بنجاح', + 'report': 'إبلاغ', + 'submitSuccess': 'تم الإرسال بنجاح', + 'submitFailed': 'فشل الإرسال', + 'reportSubmitted': 'تم إرسال البلاغ، وسنتعامل معه في أقرب وقت ممكن', + 'harmfulUnsafe': 'ضار/غير آمن', + 'pornographicVulgar': 'إباحي/مبتذل', + 'misleadingAttack': 'مضلل/هجومي', + 'illegalCriminal': 'غير قانوني/إجرامي', + 'privacyRelated': 'متعلق بالخصوصية', + 'copyrightViolation': + 'ينتهك حقوق الطبع والنشر الخاصة بي، أو حقوق السمعة، وما إلى ذلك.', + 'other': 'أخرى', + 'reportDescriptionHint': + 'نريد أن نعرف سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.', + + //Message_bubble + 'generatedByAi': 'تم إنشاؤه بواسطة الذكاء الاصطناعي', + + //音乐卡片 music_card + 'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:', + 'playList': 'قائمة التشغيل', + 'moreMusic': 'المزيد من الموسيقى', + + //导航卡片 navigation_card + 'kilometers': 'كيلومتر', + 'meters': 'متر', + 'hours': 'ساعات', + 'minutes': 'دقائق', + 'seconds': 'ثواني', + 'navigating': 'جاري التنقل', + 'currentLocation': 'الموقع الحالي', + 'approximate': 'تقريبًا', + 'enterRoad': 'دخول', + "driving": "قيادة", + "walking": "مشي", + "bicycling": "ركوب الدراجات", + "tsransit": "نقل عام", + + //天气卡片 weather_card + 'weatherQuery': 'الاستعلام عن أحوال الطقس:', + 'highest': 'الأعلى', + 'lowest': 'الأدنى', + 'futureForecast': 'توقعات مستقبلية', + 'hotWeatherTip': + 'اليوم حار، يرجى اتخاذ الاحتياطات اللازمة ضد ضربة الشمس وشرب الكثير من الماء', + 'coldWeatherTip': + 'درجة الحرارة منخفضة اليوم، يرجى الحفاظ على الدفء عند الخروج لتجنب نزلات البرد', + 'rainyWeatherTip': + 'هناك أمطار اليوم، يرجى أخذ مظلة عند الخروج والانتباه لسلامة السفر', + 'snowyWeatherTip': + 'هناك ثلوج اليوم، الطريق زلق، يرجى الانتباه للسلامة واتخاذ تدابير الدفء', + 'foggyWeatherTip': + 'هناك ضباب اليوم، الرؤية منخفضة، يرجى ارتداء قناع عند الخروج', + 'windyWeatherTip': + 'الرياح قوية اليوم، يرجى الانتباه للسلامة وتأمين متعلقاتك عند الخروج', + 'sunnyWeatherTip': + 'الشمس مشرقة اليوم والأشعة فوق البنفسجية قوية، يرجى استخدام واقي الشمس عند الخروج', + 'temperatureDifferenceTip': + 'فرق درجة الحرارة بين النهار والليل كبير اليوم، يرجى إضافة أو إزالة الملابس حسب الحاجة', + 'comfortableWeatherTip': 'الطقس لطيف اليوم، وهو وقت جيد للأنشطة الخارجية', + "monday": "الاثنين", + "tuesday": "الثلاثاء", + "wednesday": "الأربعاء", + "thursday": "الخميس", + "friday": "الجمعة", + "saturday": "السبت", + "sunday": "الأحد", + // 天气描述 + "sunny": "مشمس", + "partlyCloudy": "غائم جزئيًا", + "partlySunny": "مشمس جزئيًا", + "cloudy": "غائم", + "overcast": "ملبد بالغيوم", + "shower": "زخات مطر", + "thundershower": "عواصف رعدية", + "lightRain": "مطر خفيف", + "moderateRain": "مطر متوسط", + "heavyRain": "مطر غزير", + "rainstorm": "عاصفة مطرية", + "snowShower": "زخات ثلج", + "lightSnow": "ثلج خفيف", + "moderateSnow": "ثلج متوسط", + "heavySnow": "ثلج كثيف", + "blizzard": "عاصفة ثلجية", + "fog": "ضباب", + "haze": "ضباب دخاني", + "strongWind": "رياح قوية", + + //编辑个人信息页 + "editProfile": "تعديل الملف الشخصي", + "avatar": "الصورة الرمزية", + "nickname": "اللقب", + "save": "حفظ", + "about": "حول", + "enterNickname": "يرجى إدخال لقب", + "notSet": "لم يتم التعيين", + "accountSetting": "إعدادات الحساب", + "logout": "تسجيل الخروج", + "logoutTips": "هل أنت متأكد من أنك تريد تسجيل الخروج من الحساب الحالي؟", + 'deleteAccount': 'حذف الحساب', + 'deleteAccountTips': + 'هل أنت متأكد من أنك تريد حذف حسابك بشكل دائم؟ هذا الإجراء لا يمكن التراجع عنه', + 'clean': 'مسح ذاكرة التخزين المؤقت', + 'cleanTips': 'هل أنت متأكد من أنك تريد مسح ذاكرة التخزين المؤقت الشخصية؟', + + // Profile 错误信息 + 'networkConnectionFailed': + 'فشل الاتصال بالشبكة، يرجى التحقق من إعدادات الشبكة والمحاولة مرة أخرى', + 'serverTemporarilyUnavailable': + 'الخادم غير متاح مؤقتًا، يرجى المحاولة مرة أخرى لاحقًا', + 'loginExpiredPleaseRelogin': + 'انتهت صلاحية تسجيل الدخول، يرجى تسجيل الدخول مرة أخرى', + 'noPermissionForThisOperation': 'لا يوجد إذن لتنفيذ هذه العملية', + 'requestedResourceNotFound': 'المورد المطلوب غير موجود', + 'imageProcessingFailedPleaseReselect': + 'فشلت معالجة الصورة، يرجى إعادة تحديد الصورة', + 'operationFailedPleaseRetry': 'فشلت العملية، يرجى المحاولة مرة أخرى', + 'serverReturnedError': 'أرجع الخادم خطأ', + 'serverError': 'خطأ في الخادم', + 'networkConnectionFailedCheckSettings': + 'فشل الاتصال بالشبكة، يرجى التحقق من إعدادات الشبكة', + 'serverInternalErrorRetryLater': + 'خطأ داخلي في الخادم، يرجى المحاولة مرة أخرى لاحقًا', + + // Profile 用户交互 + 'imageCompressionFailed': 'فشل ضغط الصورة', + 'avatarUpdateFailed': 'فشل تحديث الصورة الرمزية', + 'usernameCannotBeEmpty': 'لا يمكن أن يكون اسم المستخدم فارغًا', + 'saveSuccess': 'تم الحفظ بنجاح', + 'personalInfoUpdated': 'تم تحديث المعلومات الشخصية', + 'saveFailed': 'فشل الحفظ', + 'loggedOut': 'تم تسجيل الخروج', + 'logoutFailedRetry': 'فشل تسجيل الخروج، يرجى المحاولة مرة أخرى', + 'accountPermanentlyDeleted': 'تم حذف الحساب بشكل دائم', + 'deleteAccountFailedRetry': 'فشل حذف الحساب، يرجى المحاولة مرة أخرى', + + // 账号服务相关 + 'clearUserDataFailed': 'فشل مسح بيانات المستخدم', + 'deleteUserDataFailed': 'فشل حذف بيانات المستخدم', + 'thirdPartyLogoutSuccess': 'تم تسجيل الخروج من الطرف الثالث بنجاح', + 'thirdPartyLogoutFailed': 'فشل تسجيل الخروج من الطرف الثالث', + 'signOutProcessError': 'حدث خطأ أثناء عملية تسجيل الخروج', + 'deleteAccountProcessError': 'حدث خطأ أثناء عملية حذف الحساب', + 'userDataClearSuccess': 'تم مسح بيانات المستخدم بنجاح', + 'allUserDataClearSuccess': 'تم مسح جميع بيانات المستخدم بنجاح', + 'accountServiceInitialized': 'تم تهيئة خدمة الحساب', + + // 权限管理页面 + 'getPermissionStatusFailed': 'فشل الحصول على حالة الإذن', + 'communicationPermissions': 'أذونات الاتصال', + 'bluetoothPermissions': 'أذونات البلوتوث', + 'notificationPermissions': 'أذونات الإشعارات', + 'storagePermissions': 'أذونات التخزين', + 'microphonePermissions': 'أذونات الميكروفون', + 'alarmPermissions': 'أذونات المنبه', + 'calendarPermissions': 'أذونات التقويم', + 'locationPermissions': 'أذونات الموقع', + 'phone': 'هاتف', + 'sms': 'رسائل قصيرة', + 'contacts': 'جهات الاتصال', + 'notification': 'إشعار', + 'alarm': 'منبه', + 'calendarWrite': 'كتابة التقويم', + 'calendarFullAccess': 'الوصول الكامل للتقويم', + 'locationInfo': 'معلومات الموقع', + 'phonePermissionDesc': 'يستخدم لوظيفة إجراء المكالمات', + 'smsPermissionDesc': 'يستخدم لوظيفة إرسال الرسائل القصيرة', + 'alarmPermissionDesc': + 'يستخدم لضبط المنبهات الدقيقة لضمان إطلاق التذكيرات في الوقت المحدد', + 'calendarWritePermissionDesc': 'يستخدم لإنشاء أحداث التقويم والتذكيرات', + 'calendarFullAccessPermissionDesc': + 'يستخدم لقراءة وإدارة أحداث التقويم والتذكيرات', + 'locationPermissionDesc': 'يستخدم للحصول على معلومات الموقع الحالية', + 'appFunctionNeeds': 'تحتاج وظيفة التطبيق', + 'authorized': 'مرخص', + 'unauthorized': 'غير مرخص', + 'needOpenInSystemSettings': 'يجب تمكينه في إعدادات النظام', + 'partialAuthorization': 'ترخيص جزئي', + 'unknownStatus': 'حالة غير معروفة', + 'permissionGranted': 'تم منح الإذن', + 'permissionRequestError': 'خطأ أثناء طلب الإذن', + 'phonePermissionDetailDesc': 'تتطلب وظيفة إجراء المكالمات إذن الهاتف', + 'smsPermissionDetailDesc': + 'تتطلب وظيفة إرسال الرسائل القصيرة إذن الرسائل القصيرة', + 'alarmPermissionDetailDesc': + 'يتطلب ضبط المنبهات الدقيقة هذا الإذن لضمان إطلاق التذكيرات في الوقت المحدد', + 'calendarWritePermissionDetailDesc': + 'يتطلب إنشاء أحداث التقويم إذن كتابة التقويم', + 'calendarFullAccessPermissionDetailDesc': + 'تتطلب إدارة أحداث التقويم إذن التقويم الكامل', + 'locationPermissionDetailDesc': 'يتطلب الحصول على معلومات الموقع إذن الموقع', + 'contactsPermissionDesc': 'يستخدم للوصول إلى معلومات جهات الاتصال', + 'contactsPermissionDetailDesc': + 'تتطلب وظائف إجراء المكالمات وإرسال الرسائل القصيرة إذن جهات الاتصال لتحديد جهات الاتصال', + 'bluetoothPermissionDesc': 'يستخدم لتوصيل وإدارة أجهزة البلوتوث', + 'bluetoothPermissionDetailDesc': + 'يتطلب توصيل أجهزة مثل سماعات البلوتوث إذن البلوتوث', + 'bluetoothScanPermissionDesc': 'يستخدم لمسح أجهزة البلوتوث القريبة', + 'bluetoothScanPermissionDetailDesc': + 'يتطلب مسح أجهزة البلوتوث القريبة إذن مسح البلوتوث', + 'bluetoothConnectPermissionDesc': 'يستخدم لتوصيل أجهزة البلوتوث', + 'bluetoothConnectPermissionDetailDesc': + 'يتطلب توصيل أجهزة البلوتوث إذن اتصال البلوتوث', + 'notificationPermissionDesc': 'يستخدم لإرسال رسائل الإشعارات', + 'notificationPermissionDetailDesc': + 'يحتاج التطبيق إلى إذن الإشعارات لإرسال تذكيرات ورسائل مهمة إليك', + 'appNeedsPermissionForFullFunction': + 'يحتاج التطبيق إلى هذا الإذن لتوفير وظائف كاملة', + 'permanentDenialText': + 'لقد رفضت إذن {permission} بشكل دائم، يرجى الانتقال إلى إعدادات التطبيق لتمكينه', + 'goToSettings': 'اذهب إلى الإعدادات', + + // 权限申请 + 'bluetoothScan': 'مسح البلوتوث', + 'bluetoothConnect': 'اتصال البلوتوث', + 'bluetoothScanExplanation': + 'لمسح أجهزة البلوتوث القريبة، يحتاج التطبيق إلى الحصول على إذن مسح البلوتوث.', + 'bluetoothConnectExplanation': + 'لتوصيل أجهزة البلوتوث، يحتاج التطبيق إلى الحصول على إذن اتصال البلوتوث.', + 'locationForBluetoothExplanation': + 'لمسح أجهزة البلوتوث، يحتاج التطبيق إلى الحصول على إذن معلومات الموقع.', + 'bluetoothScanPermanentDenial': + 'تم رفض إذن مسح البلوتوث بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكينه يدويًا.', + 'bluetoothConnectPermanentDenial': + 'تم رفض إذن اتصال البلوتوث بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكينه يدويًا.', + 'locationPermanentDenial': + 'تم رفض إذن معلومات الموقع بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكينه يدويًا.', + 'notificationPermission': 'إشعار', + 'locationPermission': 'الموقع', + 'notificationPermissionExplanation': + 'مطلوب إذن الإشعار لعرض حالة تشغيل الموسيقى.', + 'locationPermissionExplanation': 'مطلوب إذن الموقع للحصول على الموقع الحالي.', + 'notificationPermissionPermanentDenial': + 'لقد رفضت إذن الإشعار بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكين الإذن.', + 'locationPermissionPermanentDenial': + 'لقد رفضت إذن الموقع بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكين الإذن.', + 'storagePermission': 'تخزين', + 'microphonePermissionExplanation': + 'نحتاج إلى الوصول إلى إذن الميكروفون حتى تتمكن من تسجيل محتوى صوتي.', + 'storagePermissionExplanation': + 'نحتاج إلى الوصول إلى إذن التخزين حتى تتمكن من تحديد وتحميل الملفات الصوتية.', + 'microphonePermissionPermanentDenial': + 'تم اكتشاف أنك رفضت إذن التسجيل بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق وتمكين إذن الميكروفون يدويًا.', + 'storagePermissionPermanentDenial': + 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق وتمكين إذن التخزين يدويًا.', + + //permission_util.dart + 'permissionUtilNeed': 'بحاجة إلى', + 'permissionUtilPermission': 'إذن', + 'permissionUtilRestricted': 'الإذن مقيد', + 'permissionUtilRestrictedMessage': + 'هذه الميزة غير متوفرة أو مقيدة على الجهاز الحالي، يرجى التحقق من إعدادات الجهاز أو قيود النظام', + 'permissionUtilConfirm': 'تأكيد', + + // 版本更新对话框 + 'newVersionFound': 'تم العثور على إصدار جديد', + 'remindLater': 'تذكير لاحقًا', + 'updateNow': 'تحديث الآن', + 'checkUpdate': 'التحقق من التحديثات', + 'updateFailed': 'فشل التحديث', + 'cannotOpenAppStore': + 'لا يمكن فتح متجر التطبيقات، يرجى الانتقال يدويًا إلى متجر التطبيقات للتحديث', + 'updateErrorRetry': + 'حدث خطأ أثناء عملية التحديث، يرجى المحاولة مرة أخرى لاحقًا', + + //国家列表 + "邮箱": "البريد الإلكتروني", + "中国": "الصين", + "美国": "الولايات المتحدة", + "加拿大": "كندا", + "俄罗斯": "روسيا", + "英国": "المملكة المتحدة", + "德国": "ألمانيا", + "意大利": "إيطاليا", + "法国": "فرنسا", + "西班牙": "إسبانيا", + "南非": "جنوب أفريقيا", + "沙特阿拉伯": "المملكة العربية السعودية", + "土耳其": "تركيا", + "日本": "اليابان", + "韩国": "كوريا الجنوبية", + "新加坡": "سنغافورة", + "马来西亚": "ماليزيا", + "泰国": "تايلاند", + "越南": "فيتنام", + "印度": "الهند", + "巴基斯坦": "باكستان", + "菲律宾": "الفلبين", + "印度尼西亚": "إندونيسيا", + "阿联酋": "الإمارات العربية المتحدة", + "墨西哥": "المكسيك", + "巴西": "البرازيل", + "阿根廷": "الأرجنتين", + "澳大利亚": "أستراليا", + "新西兰": "نيوزيلندا", + "中国香港": "هونغ كونغ الصينية", + "中国澳门": "ماكاو الصينية", + "中国台湾": "تايوان الصينية", + "埃及": "مصر", + "希腊": "اليونان", + "荷兰": "هولندا", + "比利时": "بلجيكا", + "匈牙利": "المجر", + "罗马尼亚": "رومانيا", + "瑞士": "سويسرا", + "奥地利": "النمسا", + "丹麦": "الدنمارك", + "瑞典": "السويد", + "挪威": "النرويج", + "波兰": "بولندا", + "秘鲁": "بيرو", + "智利": "تشيلي", + "哥伦比亚": "كولومبيا", + "委内瑞拉": "فنزويلا", + "葡萄牙": "البرتغال", + "卢森堡": "لوكسمبورغ", + "爱尔兰": "أيرلندا", + "冰岛": "أيسلندا", + "阿尔巴尼亚": "ألبانيا", + "马耳他": "مالطا", + "塞浦路斯": "قبرص", + "芬兰": "فنلندا", + "保加利亚": "بلغاريا", + "立陶宛": "ليتوانيا", + "拉脱维亚": "لاتفيا", + "爱沙尼亚": "إستونيا", + "乌克兰": "أوكرانيا", + "塞尔维亚": "صربيا", + "克罗地亚": "كرواتيا", + "斯洛文尼亚": "سلوفينيا", + "捷克": "التشيك", + "斯洛伐克": "سلوفاكيا", + "危地马拉": "غواتيمالا", + "萨尔瓦多": "السلفادور", + "洪都拉斯": "هندوراس", + "尼加拉瓜": "نيكاراغوا", + "哥斯达黎加": "كوستاريكا", + "巴拿马": "بنما", + "海地": "هايتي", + "玻利维亚": "بوليفيا", + "厄瓜多尔": "الإكوادور", + "巴拉圭": "باراغواي", + "乌拉圭": "أوروغواي", + "摩洛哥": "المغرب", + "阿尔及利亚": "الجزائر", + "突尼斯": "تونس", + "尼日利亚": "نيجيريا", + "加纳": "غانا", + "埃塞俄比亚": "إثيوبيا", + "肯尼亚": "كينيا", + "坦桑尼亚": "تنزانيا", + "乌干达": "أوغندا", + "孟加拉国": "بنغلاديش", + "以色列": "إسرائيل", + "黎巴嫩": "لبنان", + "约旦": "الأردن", + "伊拉克": "العراق", + "科威特": "الكويت", + "巴林": "البحرين", + "卡塔尔": "قطر", + "阿曼": "عمان", + "阿富汗": "أفغانستان", + "斯里兰卡": "سريلانكا", + "缅甸": "ميانمار", + "尼泊尔": "نيبال", + "蒙古": "منغوليا", + "柬埔寨": "كمبوديا", + "老挝": "لاوس", + "文莱": "بروناي", + "东帝汶": "تيمور الشرقية", + "斐济": "فيجي", + "所罗门群岛": "جزر سليمان", + + // 翻译模块 + // 翻译主页 (translation_view.dart) + "translationHistory": "سجل الترجمة", + "enableRecording": "هل تريد تمكين التسجيل؟", + "viewAudioFiles": "عرض ملفات التسجيل", + "headsetUser": "مستخدم سماعة الرأس", + "phoneUser": "مستخدم الهاتف", + "selectSourceLanguage": "اختر اللغة المصدر", + "selectTargetLanguage": "اختر اللغة الهدف", + + // 翻译历史页 (translation_history_view.dart) + "noTranslationHistory": "لا يوجد سجل حتى الآن", + "clearHistory": "مسح السجل", + "clearHistoryConfirm": + "هل أنت متأكد من أنك تريد مسح كل سجل الترجمة؟ هذا الإجراء لا يمكن التراجع عنه.", + "unknownLanguage": "لغة غير معروفة", + "deleteSessionRecord": "حذف سجل الجلسة", + "deleteSessionConfirm": + "هل أنت متأكد من أنك تريد حذف جميع سجلات الترجمة لهذه الجلسة؟ هذا الإجراء لا يمكن التراجع عنه.", + + // 翻译录音文件列表页 (translation_list_view.dart) + "translateAudioFiles": "ترجمة ملفات التسجيل", + "noAudioFiles": "لا توجد ملفات صوتية حتى الآن", + "calculating": "جاري الحساب...", + "playing": "جاري التشغيل...", + "paused": "متوقف مؤقتًا", + "clickToPlay": "انقر للتشغيل", + "rename": "إعادة تسمية", + "smartTranscription": "نسخ ذكي", + "renameAudioFile": "إعادة تسمية ملف الصوت", + "enterNewFileName": "يرجى إدخال اسم ملف جديد", + + // 翻译详情页 (translation_detail_view.dart) + "originalRecord": "السجل الأصلي", + "recordSummary": "ملخص السجل", + "clickToGenerateSummary": "انقر على الزر أدناه لإنشاء ملخص الجلسة", + "summaryContent": "محتوى الملخص", + "copied": "تم النسخ", + "summaryCopiledToClipboard": "تم نسخ الملخص إلى الحافظة", + "extractSummary": "استخراج الملخص", + "summaryGenerated": "تم إنشاء الملخص", + "generating": "جاري الإنشاء...", + "regenerate": "إعادة الإنشاء", + "summaryTimeoutMessage": + "انتهت مهلة طلب إنشاء الملخص، قد يكون ذلك بسبب مشكلة في الشبكة أو انشغال الخادم.", + "deleteTranslationRecord": "حذف سجل الترجمة", + "deleteTranslationConfirm": + "هل أنت متأكد من أنك تريد حذف سجل الترجمة هذا؟ هذا الإجراء لا يمكن التراجع عنه.", + "originalText": "النص الأصلي", + "translatedText": "النص المترجم", + "sessionSummary": "ملخص الجلسة", + "cannotShare": "لا يمكن المشاركة", + "generateSummaryFirst": "يرجى إنشاء ملخص أولاً", + "translationSessionRecord": "سجل جلسة الترجمة", + + // 配对模块 + // 配对页面 (pairing_view.dart & pairing_view_new.dart) + "devicePairing": "اقتران الجهاز", + "connectYourDeepSoundHeadset": "قم بتوصيل سماعة Voitrans الخاصة بك", + "bind": "ربط", + "authorizeBind": "تفويض الربط", + "enterCode": "يرجى إدخال الرمز", + "autoInputCode": "إدخال الرمز تلقائيًا", + "skipBinding": "تخطي الربط", + "rescan": "إعادة المسح", + "skip": "تخطي", + "verifyingDevice": "جاري التحقق من الجهاز...", + "confirmBinding": "تأكيد الربط", + "associatingDevice": "جاري ربط الجهاز...", + "goToBluetoothSettings": "الانتقال إلى إعدادات البلوتوث", + 'bluetooth': 'بلوتوث', + + // 配对状态文本 + "readyToPair": "جاهز لبدء الاقتران", + "preparingPairingEnvironment": "جاري تحضير بيئة الاقتران...", + "connectDeepSoundViaSystemBluetooth": + "يرجى توصيل جهاز Voitrans عبر بلوتوث النظام أولاً", + "deviceBindingConfirm": "تأكيد ربط الجهاز...", + "establishingDeviceAssociation": "جاري إنشاء ارتباط الجهاز...", + "waitingCompletePairing": "يرجى الانتظار، جاري إكمال الاقتران...", + "pairingSuccessRedirecting": + "نجح الاقتران! سيتم التوجيه إلى الصفحة الرئيسية قريبًا...", + + // 配对错误状态文本 + "ensureConnectedDeepSoundDevice": "يرجى التأكد من توصيل جهاز Voitrans", + "deviceAlreadyBoundToOtherAccount": "هذا الجهاز مرتبط بالفعل بحساب آخر", + "deviceAssociationFailed": "فشل ارتباط الجهاز، يرجى المحاولة مرة أخرى", + "scanTimeoutEnsureDeviceNearby": + "انتهت مهلة المسح، يرجى التأكد من أن الجهاز قريب", + "networkError": "خطأ في الشبكة", + "authorizationFailedCheckCode": "فشل التفويض، يرجى التحقق من صحة رمز التفويض", + "pairingFailedRetry": "فشل الاقتران، يرجى المحاولة مرة أخرى", + + // 配对控制器相关 + 'pleaseEnableBluetooth': 'يرجى تمكين البلوتوث', + 'deviceDisconnected': 'تم فصل الجهاز', + 'readyToStartPairing': 'جاهز لبدء الاقتران', + 'checkingEnvironment': 'جاري فحص البيئة...', + 'ensureHeadsetOnAndPairingMode': + 'يرجى التأكد من تشغيل سماعة الرأس وفي وضع الاقتران', + 'establishingSecureConnection': 'جاري إنشاء اتصال آمن...', + 'needManualBindingAuthCode': 'مطلوب رمز تفويض الربط اليدوي...', + 'pairingSuccessful': 'نجح الاقتران!', + 'enableBluetooth': 'تمكين البلوتوث', + 'grantPermissions': 'منح الأذونات', + 'retryAssociation': 'إعادة الارتباط', + 'retryAuthorization': 'إعادة التفويض', + 'pleaseGrantNecessaryPermissions': 'يرجى منح الأذونات اللازمة', + 'checkFailedRetry': 'فشل الفحص، يرجى المحاولة مرة أخرى', + 'pleaseConnectDeepSoundDevice': 'يرجى توصيل جهاز Voitrans', + 'verificationFailedRetry': 'فشل التحقق، يرجى المحاولة مرة أخرى', + 'invalidDeviceAddress': 'عنوان الجهاز غير صالح', + 'bleDeviceAssociationFailed': 'فشل ارتباط جهاز BLE', + 'deviceAssociationFailedRetry': 'فشل ارتباط الجهاز، يرجى المحاولة مرة أخرى', + 'bleConnectionTimeoutRetry': + 'انتهت مهلة اتصال BLE، يرجى إعادة تشغيل سماعة الرأس والمحاولة مرة أخرى', + 'blePairingStartupFailed': 'فشل بدء اقتران BLE', + 'bleConnectionFailed': 'فشل اتصال BLE', + 'deviceAuthorizationFailedCheckCode': + 'فشل تفويض الجهاز، يرجى التحقق من رمز التفويض', + + // iOS蓝牙引导窗 + 'bluetoothGuideTitle': 'يجب تمكين البلوتوث يدويًا', + 'bluetoothGuideSteps': 'يرجى اتباع الخطوات التالية:', + 'bluetoothGuideStep1': 'تمكين البلوتوث: الإعدادات ← البلوتوث ← تشغيل', + 'bluetoothGuideStep2': + 'توصيل الجهاز: ابحث عن جهازك في "أجهزتي" وانقر للاتصال', + 'bluetoothGuideStep3': 'العودة إلى التطبيق لمتابعة عملية الاقتران', + 'bluetoothGuideTip': + 'نصيحة: يمكنك أيضًا الضغط لفترة طويلة على أيقونة البلوتوث في مركز التحكم للوصول بسرعة إلى إعدادات البلوتوث', + 'iKnow': 'حسنًا', + + //用户反馈页 + "feedback": "ملاحظات المستخدم", + 'feedbackInfo': 'قدم ملاحظات أو اقتراحات', + 'feedbackDescription': 'يرجى وصف المشكلة التي واجهتها أو اقتراحك', + 'feedbackHint': 'يرجى إدخال ملاحظاتك...', + 'feedbackRequired': 'يرجى إدخال محتوى الملاحظات', + 'contactInfo': 'معلومات الاتصال', + 'contactHint': 'البريد الإلكتروني/رقم الهاتف، حتى نتمكن من الاتصال بك', + 'submit': 'إرسال', + 'feedbackSubmitSuccess': 'تم إرسال الملاحظات بنجاح، شكرًا لك على ملاحظاتك!', + 'feedbackSubmitFailed': 'فشل إرسال الملاحظات، يرجى المحاولة مرة أخرى لاحقًا', + + // OTA升级模块 + "upgradeExitConfirm": + "التحديث قيد التقدم حاليًا، الخروج سيقطع عملية التحديث، هل أنت متأكد من أنك تريد الخروج؟", + "deviceModel": "طراز الجهاز", + "unknownDevice": "جهاز غير معروف", + "currentFirmwareVersion": "إصدار البرنامج الثابت الحالي", + "latestFirmwareVersion": "أحدث إصدار للبرنامج الثابت", + "ota_newVersionFound": "تم العثور على إصدار جديد", + "latestVersion": "هذا هو أحدث إصدار بالفعل", + "gettingDeviceInfo": "جاري الحصول على معلومات الجهاز...", + "keepDeviceConnected": "يرجى إبقاء الجهاز متصلاً", + "connectionFailed": "فشل الاتصال", + "retryConnection": "إعادة محاولة الاتصال", + "ota_updateNow": "تحديث الآن", + "keepConnectedDontClose": "يرجى إبقاء الجهاز متصلاً، لا تغلق التطبيق", + "doNotDisconnect": "يرجى عدم قطع الاتصال", + "charging": "جاري الشحن", + "updateContent": "محتوى التحديث", + "removeEarbudsEnsureBattery": + "أخرج كلتا سماعتي الأذن وتأكد من أن مستوى البطارية في كل منهما أعلى من 20%", + + // 音乐列表页面 + "noMusic": "لا توجد موسيقى", + "noPlayingMusic": "لا توجد موسيقى قيد التشغيل", + "unknownSong": "أغنية غير معروفة", + "unknownArtist": "فنان غير معروف", + "playAll": "تشغيل الكل", + + // 语言名称 + "中文(简体)": "الصينية (المبسطة)", + "中文(繁体)": "الصينية (التقليدية)", + "中文(香港繁体)": "الصينية (هونغ كونغ التقليدية)", + "日语": "اليابانية", + "韩语": "الكورية", + "法语": "الفرنسية", + "西班牙语": "الإسبانية", + "葡萄牙语": "البرتغالية", + "意大利语": "الإيطالية", + "德语": "الألمانية", + "俄语": "الروسية", + "波兰语": "البولندية", + "荷兰语": "الهولندية", + "瑞典语": "السويدية", + "捷克语": "التشيكية", + "现代希腊语": "اليونانية الحديثة", + "罗马尼亚语": "الرومانية", + "匈牙利语": "المجرية", + "乌克兰语": "الأوكرانية", + "丹麦语": "الدانمركية", + "芬兰语": "الفنلندية", + "挪威语": "النرويجية", + "克罗地亚语": "الكرواتية", + "加泰隆语": "الكتالونية", + "阿拉伯语": "العربية", + "泰语": "التايلاندية", + "越南语": "الفيتنامية", + "印尼语": "الإندونيسية", + "印地语": "الهندية", + "土耳其语": "التركية", + "马来语": "الماليزية", + "孟加拉语": "البنغالية", + "泰米尔语": "التاميلية", + "泰卢固语": "التيلجو", + "马拉提语": "الماراثية", + "乌尔都语": "الأردية", + "波斯语": "الفارسية", + "斯瓦希里语": "السواحيلية", + + // 时间相关 + "justNow": "الآن", + "minutesAgo": "منذ @minutes دقيقة", + "yesterday": "أمس", +}; diff --git a/lib/modules/settings/controllers/settings_controller.dart b/lib/modules/settings/controllers/settings_controller.dart index a3c69dee7..48ec63019 100644 --- a/lib/modules/settings/controllers/settings_controller.dart +++ b/lib/modules/settings/controllers/settings_controller.dart @@ -36,6 +36,7 @@ class SettingsController extends GetxController { LanguageModel(name: 'french', alias: 'Français', value: 'fr_FR'), // 添加法语选项 LanguageModel(name: 'german', alias: 'Deutsch', value: 'de_DE'), // 添加德语选项 LanguageModel(name: 'russian', alias: 'Русский', value: 'ru_RU'), // 添加俄语选项 + LanguageModel(name: 'arabic', alias: 'العربية', value: 'ar_SA'), // 阿拉伯语 LanguageModel( name: 'vietnamese', alias: 'Tiếng Việt', value: 'vi_VN'), // 添加越南语选项 LanguageModel(