Browse Source

feat(i18n): 添加缺失的翻译键并引入i18n审计脚本

新增蓝牙扫描、工具调用、导航选择、OTA升级等模块的翻译键,覆盖多个语言文件。
添加i18n审计脚本以检测翻译质量问题,包括与基线文件相同但可能是英文的翻译。
引入允许列表文件以排除特定键的审计检查。
weicu
lxm 7 months ago
parent
commit
1ca7c370fd
  1. 310
      lib/core/translations/language/ar_sa.dart
  2. 132
      lib/core/translations/language/bg_bg.dart
  3. 148
      lib/core/translations/language/cs_cz.dart
  4. 172
      lib/core/translations/language/da_dk.dart
  5. 394
      lib/core/translations/language/de_de.dart
  6. 663
      lib/core/translations/language/el_gr.dart
  7. 124
      lib/core/translations/language/en_us.dart
  8. 932
      lib/core/translations/language/es_es.dart
  9. 312
      lib/core/translations/language/et_ee.dart
  10. 715
      lib/core/translations/language/fa_ir.dart
  11. 102
      lib/core/translations/language/fi_fi.dart
  12. 1002
      lib/core/translations/language/fr_fr.dart
  13. 339
      lib/core/translations/language/hi_in.dart
  14. 339
      lib/core/translations/language/hr_hr.dart
  15. 312
      lib/core/translations/language/hu_hu.dart
  16. 736
      lib/core/translations/language/id_id.dart
  17. 102
      lib/core/translations/language/is_is.dart
  18. 340
      lib/core/translations/language/it_it.dart
  19. 273
      lib/core/translations/language/ja_jp.dart
  20. 1195
      lib/core/translations/language/ko_kr.dart
  21. 337
      lib/core/translations/language/lt_lt.dart
  22. 867
      lib/core/translations/language/lv_lv.dart
  23. 719
      lib/core/translations/language/ms_my.dart
  24. 102
      lib/core/translations/language/nb_no.dart
  25. 339
      lib/core/translations/language/nl_nl.dart
  26. 190
      lib/core/translations/language/pl_pl.dart
  27. 318
      lib/core/translations/language/pt_pt.dart
  28. 340
      lib/core/translations/language/ro_ro.dart
  29. 290
      lib/core/translations/language/ru_ru.dart
  30. 312
      lib/core/translations/language/sk_sk.dart
  31. 314
      lib/core/translations/language/sl_si.dart
  32. 1311
      lib/core/translations/language/sr_rs.dart
  33. 100
      lib/core/translations/language/sv_se.dart
  34. 680
      lib/core/translations/language/th_th.dart
  35. 1185
      lib/core/translations/language/tl_ph.dart
  36. 733
      lib/core/translations/language/tr_tr.dart
  37. 843
      lib/core/translations/language/uk_ua.dart
  38. 1505
      lib/core/translations/language/vi_vn.dart
  39. 14
      lib/core/translations/language/zh_cn.dart
  40. 107
      lib/core/translations/language/zh_hk.dart
  41. 107
      lib/core/translations/language/zh_tw.dart
  42. 24
      tools/i18n_allowlist.json
  43. 201
      tools/i18n_audit.py

310
lib/core/translations/language/ar_sa.dart

@ -1,5 +1,4 @@
const Map<String, String> arSA = { const Map<String, String> arSA = {
// 通用 // 通用
'continue': 'متابعة', 'continue': 'متابعة',
'confirm': 'تأكيد', 'confirm': 'تأكيد',
@ -130,8 +129,7 @@ const Map<String, String> arSA = {
"aiAssistantInfo": "aiAssistantInfo":
"مستشار حصري على مدار 24 ساعة للإجابة على الأسئلة وتقديم الاقتراحات", "مستشار حصري على مدار 24 ساعة للإجابة على الأسئلة وتقديم الاقتراحات",
"interpretation": "الترجمة", "interpretation": "الترجمة",
"simultaneousInterpretationInfo": "simultaneousInterpretationInfo": "ترجمة فورية لعدة لغات، سفر خالٍ من القلق",
"ترجمة فورية لعدة لغات، سفر خالٍ من القلق",
"aiCompanion": "رفيق العائلة", "aiCompanion": "رفيق العائلة",
"aiCompanionInfo": "يفهمك ويقدم لك رفقة دافئة", "aiCompanionInfo": "يفهمك ويقدم لك رفقة دافئة",
"homeSlogan": "تواصل مع العالم، أبعد من الصوت", "homeSlogan": "تواصل مع العالم، أبعد من الصوت",
@ -167,6 +165,29 @@ const Map<String, String> arSA = {
'right': 'يمين', 'right': 'يمين',
'checkConnectionStatusFailed': 'فشل التحقق من حالة الاتصال', 'checkConnectionStatusFailed': 'فشل التحقق من حالة الاتصال',
// 蓝牙扫描模块
'bleInitFailedWithError': 'فشل تهيئة البلوتوث: @error',
'needBluetoothAndLocationPermission':
'مطلوبة أذونات البلوتوث والموقع لمسح الأجهزة',
'permissionRequestFailedWithError': 'فشل طلب الإذن: @error',
'needPermission': 'الإذن مطلوب',
'blePermissionDialogContent':
'يتطلب هذا التطبيق أذونات البلوتوث والموقع لمسح الأجهزة. يرجى تمكينها من الإعدادات.',
'needEnableBluetooth': 'فعّل البلوتوث',
'enableBluetoothDialogContent':
'يرجى تفعيل البلوتوث لمسح الأجهزة والاتصال بها.',
'bleScanFailedWithError': 'فشل المسح: @error',
'bleConnectionSuccess': 'تم الاتصال بنجاح',
'bleConnectedToDevice': 'تم الاتصال بـ @device',
'bleConnectionFailedWithError': 'فشل الاتصال: @error',
'bleDisconnected': 'تم قطع الاتصال',
'bleDeviceDisconnected': 'تم قطع اتصال الجهاز',
'bleDisconnectFailedWithError': 'فشل قطع الاتصال: @error',
'signalStrong': 'قوية',
'signalMedium': 'متوسطة',
'signalWeak': 'ضعيفة',
'signalVeryWeak': 'ضعيفة جدًا',
// 发现页 // 发现页
"searchAi": "بحث عن وظائف الذكاء الاصطناعي...", "searchAi": "بحث عن وظائف الذكاء الاصطناعي...",
"exploreSlogan": "سماعات ذكية، إمكانيات لا حصر لها", "exploreSlogan": "سماعات ذكية، إمكانيات لا حصر لها",
@ -241,60 +262,61 @@ const Map<String, String> arSA = {
'totalQuota': 'إجمالي الحصة', 'totalQuota': 'إجمالي الحصة',
'remaining': 'المتبقي', 'remaining': 'المتبقي',
'featureDescription': 'وصف الميزة', 'featureDescription': 'وصف الميزة',
'paymentSuccess': 'تم الدفع بنجاح', 'paymentSuccess': 'تم الدفع بنجاح',
'paymentFailed': 'فشل الدفع', 'paymentFailed': 'فشل الدفع',
'gotIt': 'فهمت', 'gotIt': 'فهمت',
'paymentFailedTryAgain': 'فشل الدفع. يرجى المحاولة مرة أخرى.', 'paymentFailedTryAgain': 'فشل الدفع. يرجى المحاولة مرة أخرى.',
'selectPaymentMethod': 'اختر طريقة الدفع', 'selectPaymentMethod': 'اختر طريقة الدفع',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'فشل إنشاء طلب WeChat', 'wechatOrderCreateFailed': 'فشل إنشاء طلب WeChat',
'alipayOrderCreateFailed': 'فشل إنشاء طلب Alipay', 'alipayOrderCreateFailed': 'فشل إنشاء طلب Alipay',
'appleOrderCreateFailed': 'فشل إنشاء طلب Apple', 'appleOrderCreateFailed': 'فشل إنشاء طلب Apple',
'googleOrderCreateFailed': 'فشل إنشاء طلب Google', 'googleOrderCreateFailed': 'فشل إنشاء طلب Google',
'paypalOrderCreateFailed': 'فشل إنشاء طلب PayPal', 'paypalOrderCreateFailed': 'فشل إنشاء طلب PayPal',
'paymentException': 'استثناء في الدفع', 'paymentException': 'استثناء في الدفع',
'paymentLaunchFailed': 'فشل بدء الدفع', 'paymentLaunchFailed': 'فشل بدء الدفع',
'paymentExceptionWithError': 'استثناء في الدفع: @error', 'paymentExceptionWithError': 'استثناء في الدفع: @error',
'paymentProcessingCheckLater': 'طلبك قيد المعالجة. يرجى التحقق لاحقًا.', 'paymentProcessingCheckLater': 'طلبك قيد المعالجة. يرجى التحقق لاحقًا.',
'paymentResultQueryException': 'فشل الاستعلام عن نتيجة الدفع: @error', 'paymentResultQueryException': 'فشل الاستعلام عن نتيجة الدفع: @error',
'orderConfirmedQuotaRefreshed': 'تم تأكيد الطلب. تم تحديث رصيدك.', 'orderConfirmedQuotaRefreshed': 'تم تأكيد الطلب. تم تحديث رصيدك.',
'paymentCompletedConfirming': 'تم الدفع. جاري التأكيد…', 'paymentCompletedConfirming': 'تم الدفع. جاري التأكيد…',
'paymentCancelled': 'تم إلغاء الدفع', 'paymentCancelled': 'تم إلغاء الدفع',
'paypalOpenedCompleteInBrowser': 'تم فتح PayPal. يرجى إكمال الدفع في متصفحك.', 'paypalOpenedCompleteInBrowser': 'تم فتح PayPal. يرجى إكمال الدفع في متصفحك.',
'paypalOpenFailed': 'تعذر فتح صفحة الدفع عبر PayPal', 'paypalOpenFailed': 'تعذر فتح صفحة الدفع عبر PayPal',
'paymentTestTitle': 'اختبار الدفع', 'paymentTestTitle': 'اختبار الدفع',
'paymentTestOrderInfo': 'معلومات طلب الاختبار', 'paymentTestOrderInfo': 'معلومات طلب الاختبار',
'paymentTestProductId': 'معرّف المنتج', 'paymentTestProductId': 'معرّف المنتج',
'paymentTestProductDescription': 'وصف المنتج', 'paymentTestProductDescription': 'وصف المنتج',
'paymentTestWechatDescription': 'اختبار الدفع عبر WeChat', 'paymentTestWechatDescription': 'اختبار الدفع عبر WeChat',
'paymentTestAlipayDescription': 'اختبار الدفع عبر Alipay', 'paymentTestAlipayDescription': 'اختبار الدفع عبر Alipay',
'paymentTestAmount': 'المبلغ', 'paymentTestAmount': 'المبلغ',
'paymentTestSelectAmount': 'اختر مبلغ الاختبار', 'paymentTestSelectAmount': 'اختر مبلغ الاختبار',
'paying': 'جاري الدفع...', 'paying': 'جاري الدفع...',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'alipayPayWithAmount': 'Alipay ¥@amount', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentStatusTitle': 'حالة الدفع', 'paymentStatusTitle': 'حالة الدفع',
'errorInfoWithMessage': 'خطأ: @message', 'errorInfoWithMessage': 'خطأ: @message',
'retest': 'إعادة الاختبار', 'retest': 'إعادة الاختبار',
'paymentTestInstructionsTitle': 'التعليمات', 'paymentTestInstructionsTitle': 'التعليمات',
'paymentTestInstructionsContent': '1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة', 'paymentTestInstructionsContent':
'startingWechatPayment': 'جاري تشغيل WeChat Pay...', '1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة',
'startingAlipayPayment': 'جاري تشغيل Alipay...', 'startingWechatPayment': 'جاري تشغيل WeChat Pay...',
'wechatPaymentSuccess': 'تم الدفع عبر WeChat Pay بنجاح!', 'startingAlipayPayment': 'جاري تشغيل Alipay...',
'wechatPaymentFailed': 'فشل WeChat Pay', 'wechatPaymentSuccess': 'تم الدفع عبر WeChat Pay بنجاح!',
'wechatPaymentLaunchFailed': 'فشل تشغيل WeChat Pay', 'wechatPaymentFailed': 'فشل WeChat Pay',
'cannotLaunchWechatPayment': 'تعذر تشغيل WeChat Pay', 'wechatPaymentLaunchFailed': 'فشل تشغيل WeChat Pay',
'wechatPaymentException': 'استثناء WeChat Pay', 'cannotLaunchWechatPayment': 'تعذر تشغيل WeChat Pay',
'wechatPaymentTestCompleted': 'اكتمل اختبار WeChat Pay', 'wechatPaymentException': 'استثناء WeChat Pay',
'alipayPaymentSuccess': 'تم الدفع عبر Alipay بنجاح!', 'wechatPaymentTestCompleted': 'اكتمل اختبار WeChat Pay',
'alipayPaymentFailed': 'فشل Alipay', 'alipayPaymentSuccess': 'تم الدفع عبر Alipay بنجاح!',
'alipayPaymentLaunchFailed': 'فشل تشغيل Alipay', 'alipayPaymentFailed': 'فشل Alipay',
'cannotLaunchAlipayPayment': 'تعذر تشغيل Alipay', 'alipayPaymentLaunchFailed': 'فشل تشغيل Alipay',
'alipayPaymentException': 'استثناء Alipay', 'cannotLaunchAlipayPayment': 'تعذر تشغيل Alipay',
'alipayPaymentException': 'استثناء Alipay',
"insufficientIntegral": "نقاط غير كافية", "insufficientIntegral": "نقاط غير كافية",
"insufficientBalanceDesc": "insufficientBalanceDesc":
"الرصيد غير كافٍ، يرجى الانتقال إلى صفحة الشحن المقابلة للشحن", "الرصيد غير كافٍ، يرجى الانتقال إلى صفحة الشحن المقابلة للشحن",
@ -495,15 +517,22 @@ const Map<String, String> arSA = {
'meetingRecordEndAndSave': 'إنهاء التسجيل وحفظه', // 结束录音并保存 'meetingRecordEndAndSave': 'إنهاء التسجيل وحفظه', // 结束录音并保存
'meetingRecordEndWithoutSave': 'إنهاء التسجيل دون حفظ', // 结束录音不保存 'meetingRecordEndWithoutSave': 'إنهاء التسجيل دون حفظ', // 结束录音不保存
'meetingRecordContinueInBackground': 'متابعة التسجيل في الخلفية', // 后台继续录音 'meetingRecordContinueInBackground': 'متابعة التسجيل في الخلفية', // 后台继续录音
'meetingRecordStopTimeout': 'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试 'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试 'meetingRecordStopFailed':
'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'التسجيل جارٍ', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'التسجيل جارٍ', // 录音进行中
'meetingRecordRecordingNotificationBody': 'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'الظهور فوق التطبيقات الأخرى', // 悬浮窗权限 'overlayPermissionTitle': 'الظهور فوق التطبيقات الأخرى', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'جاري النسخ...', 'transcribing': 'جاري النسخ...',
'summarizing': 'جاري التلخيص...', 'summarizing': 'جاري التلخيص...',
'analyzing': 'جاري التحليل...', 'analyzing': 'جاري التحليل...',
@ -528,21 +557,22 @@ const Map<String, String> arSA = {
'selectSummaryTemplate': 'اختر قالب الملخص', 'selectSummaryTemplate': 'اختر قالب الملخص',
'useThisTemplate': 'استخدم هذا القالب', 'useThisTemplate': 'استخدم هذا القالب',
'lastUsed': 'آخر استخدام', 'lastUsed': 'آخر استخدام',
'create': 'إنشاء', 'create': 'إنشاء',
'templateDetails': 'تفاصيل القالب', 'templateDetails': 'تفاصيل القالب',
'tag': 'علامة', 'tag': 'علامة',
'description': 'الوصف', 'description': 'الوصف',
'template': 'قالب', 'template': 'قالب',
'deleteTemplate': 'حذف القالب', 'deleteTemplate': 'حذف القالب',
'deleteTemplateConfirm': 'هل أنت متأكد من أنك تريد حذف هذا القالب؟', 'deleteTemplateConfirm': 'هل أنت متأكد من أنك تريد حذف هذا القالب؟',
'editTemplate': 'تعديل القالب', 'editTemplate': 'تعديل القالب',
'createTemplate': 'إنشاء قالب', 'createTemplate': 'إنشاء قالب',
'name': 'الاسم', 'name': 'الاسم',
'templateContentHint': 'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته', 'templateContentHint':
'inputNameHint': 'يرجى إدخال الاسم', 'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته',
'inputDescHint': 'يرجى إدخال الوصف', 'inputNameHint': 'يرجى إدخال الاسم',
'custom': 'مخصص', 'inputDescHint': 'يرجى إدخال الوصف',
'pleaseEnter': 'يرجى الإدخال', 'custom': 'مخصص',
'pleaseEnter': 'يرجى الإدخال',
'viewAll': 'عرض الكل', 'viewAll': 'عرض الكل',
'recordingLanguage': 'لغة التسجيل', 'recordingLanguage': 'لغة التسجيل',
'chineseSimplified': 'الصينية الماندرين (المبسطة)', 'chineseSimplified': 'الصينية الماندرين (المبسطة)',
@ -565,7 +595,7 @@ const Map<String, String> arSA = {
'fileProcessingFailed': 'فشلت معالجة الملف: {filePath}, خطأ: {error}', 'fileProcessingFailed': 'فشلت معالجة الملف: {filePath}, خطأ: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'حفظ الخريطة الذهنية', 'saveMindMap': 'حفظ الخريطة الذهنية',
'shareMindMap': 'مشاركة الخريطة الذهنية', 'shareMindMap': 'مشاركة الخريطة الذهنية',
'shareSuccess': 'تمت المشاركة بنجاح', 'shareSuccess': 'تمت المشاركة بنجاح',
@ -587,7 +617,7 @@ const Map<String, String> arSA = {
'exportSummary': 'تصدير الملخص', 'exportSummary': 'تصدير الملخص',
'exportAs': 'تصدير كـ', 'exportAs': 'تصدير كـ',
'exportingPDF': 'جاري تصدير PDF...', 'exportingPDF': 'جاري تصدير PDF...',
'export': 'تصدير', 'export': 'تصدير',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'تطبيق على جميع فقرات هذا المتحدث', 'applyToAllParagraphs': 'تطبيق على جميع فقرات هذا المتحدث',
@ -697,18 +727,18 @@ const Map<String, String> arSA = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'لغة غير معروفة', 'meetingUnknownLanguage': 'لغة غير معروفة',
'analysisFailed': 'فشل التحليل، يرجى المحاولة لاحقًا', 'analysisFailed': 'فشل التحليل، يرجى المحاولة لاحقًا',
'transcriptionFailed': 'فشل النسخ، يرجى المحاولة لاحقًا', 'transcriptionFailed': 'فشل النسخ، يرجى المحاولة لاحقًا',
'summaryFailed': 'فشل الملخص، يرجى المحاولة لاحقًا', 'summaryFailed': 'فشل الملخص، يرجى المحاولة لاحقًا',
'summaryFailedShort': 'فشل الملخص', 'summaryFailedShort': 'فشل الملخص',
'transcriptionFailedShort': 'فشل النسخ', 'transcriptionFailedShort': 'فشل النسخ',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'مشغل الصوت غير جاهز، يرجى الانتظار', 'playerNotReady': 'مشغل الصوت غير جاهز، يرجى الانتظار',
'playFailed': 'فشل التشغيل', 'playFailed': 'فشل التشغيل',
'audioFileNotFound': 'ملف الصوت غير موجود', 'audioFileNotFound': 'ملف الصوت غير موجود',
'fetchingAudio': 'جاري جلب الصوت من السحابة...', 'fetchingAudio': 'جاري جلب الصوت من السحابة...',
'playerLoadFailed': 'فشل تحميل مشغل الصوت', 'playerLoadFailed': 'فشل تحميل مشغل الصوت',
// 设置页 // 设置页
"systemSettings": "إعدادات النظام", "systemSettings": "إعدادات النظام",
@ -813,7 +843,8 @@ const Map<String, String> arSA = {
"swipeUpForMore": "اسحب للأعلى لرؤية المزيد", "swipeUpForMore": "اسحب للأعلى لرؤية المزيد",
"callingTool": "أنا أساعدك، يرجى الانتظار!", // 正在帮您,请稍等! "callingTool": "أنا أساعدك، يرجى الانتظار!", // 正在帮您,请稍等!
"voice_interrupt": "مقاطعة صوتية", // 语音打断 "voice_interrupt": "مقاطعة صوتية", // 语音打断
'voice_interrupt_tip': 'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.', 'voice_interrupt_tip':
'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "شغل بعض الموسيقى", // 来点音乐 "presetMusic": "شغل بعض الموسيقى", // 来点音乐
@ -869,6 +900,13 @@ const Map<String, String> arSA = {
'نود معرفة سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.', 'نود معرفة سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.',
'generatedByAi': 'تم إنشاؤه بواسطة AI', 'generatedByAi': 'تم إنشاؤه بواسطة AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:', 'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:',
'playList': 'قائمة التشغيل', 'playList': 'قائمة التشغيل',
@ -889,6 +927,29 @@ const Map<String, String> arSA = {
"bicycling": "ركوب الدراجات", "bicycling": "ركوب الدراجات",
"tsransit": "نقل عام", "tsransit": "نقل عام",
// Agent模块 - 导航选择
'selectNavigationApp': 'اختر تطبيق الملاحة',
'amapMap': 'Amap',
'useAmapNavigation': 'التنقل باستخدام Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'التنقل باستخدام Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'التنقل باستخدام Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'التنقل باستخدام خرائط Apple',
'builtInNavigation': 'الملاحة المدمجة',
'useBuiltInNavigation': 'التنقل باستخدام الخريطة المدمجة',
'navigationStartFailed': 'فشل بدء التنقل',
'cannotPlayMusicListRetryLater':
'تعذر تشغيل قائمة الموسيقى، يرجى المحاولة لاحقًا',
'cannotPlaySong': 'تعذر تشغيل الأغنية',
'openMapError': 'خطأ أثناء فتح الخريطة',
'pleaseInstallAmapApp': 'يرجى تثبيت تطبيق Amap أولاً',
'pleaseInstallBaiduMapApp': 'يرجى تثبيت تطبيق Baidu Maps أولاً',
'appleMapStartFailed': 'فشل تشغيل خرائط Apple',
'appleMapUnavailable': 'خرائط Apple غير متاحة',
'openAppleMapError': 'خطأ أثناء فتح خرائط Apple',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'استعلام عن الطقس:', 'weatherQuery': 'استعلام عن الطقس:',
'highest': 'الأعلى', 'highest': 'الأعلى',
@ -960,8 +1021,18 @@ const Map<String, String> arSA = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "فشل اكتشاف اللغة", "languageDetectionFailed": "فشل اكتشاف اللغة",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'تعطيل النافذة العائمة',
'enableFloatingWindow': 'تمكين النافذة العائمة',
'permissionTip': 'تنبيه الأذونات',
'micPermissionRequiredForRecording': 'إذن الميكروفون مطلوب للتسجيل',
'deleteTranslationRecordError': 'خطأ في حذف سجل الترجمة: @error',
"translationFailed": "فشلت الترجمة", "translationFailed": "فشلت الترجمة",
"translating": "جارٍ الترجمة",
"translate": "ترجمة",
"pleaseInputText": "يرجى إدخال النص", "pleaseInputText": "يرجى إدخال النص",
"inputTextToTranslate": "يرجى إدخال النص المراد ترجمته",
"textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف", "textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1228,7 +1299,8 @@ const Map<String, String> arSA = {
'native.notification.navigation.title': 'التنقل جارٍ', // 导航进行中 'native.notification.navigation.title': 'التنقل جارٍ', // 导航进行中
'native.notification.navigation.keepRunning': 'native.notification.navigation.keepRunning':
'التنقل جارٍ، يرجى إبقاء التطبيق قيد التشغيل', // 正在导航中,请保持应用运行 'التنقل جارٍ، يرجى إبقاء التطبيق قيد التشغيل', // 正在导航中,请保持应用运行
'native.notification.bleAgent.running': 'المساعد الصوتي قيد التشغيل', // 语音助手正在运行 'native.notification.bleAgent.running':
'المساعد الصوتي قيد التشغيل', // 语音助手正在运行
'native.notification.audioRecording.recording': 'native.notification.audioRecording.recording':
'يتم التسجيل، اضغط للعودة إلى التطبيق', // 正在录音,点击返回应用 'يتم التسجيل، اضغط للعودة إلى التطبيق', // 正在录音,点击返回应用
'native.notification.music.waiting': 'في انتظار التشغيل', // 等待播放 'native.notification.music.waiting': 'في انتظار التشغيل', // 等待播放
@ -1371,6 +1443,58 @@ const Map<String, String> arSA = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"أخرج السماعتين، وتأكد من أن مستوى البطارية أعلى من 20%", "أخرج السماعتين، وتأكد من أن مستوى البطارية أعلى من 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'تم العثور على إصدار جديد @version',
'otaConfirmUpdateNow': 'هل تريد التحديث الآن؟',
'otaUpdate': 'تحديث',
'otaUpgradeSuccess': 'تمت الترقية بنجاح',
'otaUpgradeCompleteRepair':
'اكتملت ترقية البرنامج الثابت!\n\nيجب إعادة إقران الجهاز ليعمل بشكل صحيح. هل تريد الانتقال إلى صفحة الإقران الآن؟',
'otaPairLater': 'الإقران لاحقًا',
'otaPairNow': 'الإقران الآن',
'okConfirm': 'موافق',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'خطأ أثناء التحقق من اتصال BLE: @error',
'otaBleNotConnected': 'جهاز BLE غير متصل',
'otaBleNeedConnection':
'تتطلب ترقية البرنامج الثابت اتصال جهاز BLE\nيرجى التأكد من اتصال الجهاز بشكل صحيح ثم المحاولة مرة أخرى',
'otaDeviceInfoUnavailableTitle': 'معلومات الجهاز غير متاحة',
'otaCannotGetDeviceInfo':
'تعذر الحصول على معلومات الجهاز\nيرجى إعادة توصيل الجهاز أو المحاولة لاحقًا',
'otaBleCheckFailed': 'فشل التحقق من اتصال BLE',
'otaCannotGetDeviceInfoCheckConnection':
'تعذر الحصول على معلومات الجهاز، يرجى التحقق من اتصال الجهاز',
'otaCannotGetProductInfoWithName':
'تعذر الحصول على معلومات المنتج، اسم الجهاز: @deviceName',
'otaCannotGetBatteryInfo': 'تعذر الحصول على معلومات بطارية صالحة',
'otaLowBattery': 'البطارية منخفضة',
'otaSingleBatteryLow':
'بطارية الجهاز منخفضة جدًا لترقية البرنامج الثابت\nالمتطلب: يجب أن تكون البطارية أعلى من 20%\nالحالي: @ear @battery%\nيرجى الشحن ثم المحاولة مرة أخرى',
'otaDoubleBatteryLow':
'بطارية الجهاز منخفضة جدًا لترقية البرنامج الثابت\nالمتطلب: يجب أن تكون كلتا السماعتين أعلى من 20%\nالحالي: اليسار @left%، اليمين @right%\nيرجى الشحن ثم المحاولة مرة أخرى',
'otaBatteryCheckFailed': 'فشل التحقق من البطارية',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'يتضمن هذا التحديث تحسينات في الأداء وإصلاحات للأخطاء.',
'otaGetLatestVersionFailed': 'فشل الحصول على معلومات أحدث إصدار',
'otaGetVersionInfoFailed': 'فشل الحصول على معلومات الإصدار',
'otaCheckingDeviceStatus': 'جارٍ التحقق من حالة الجهاز...',
'otaDownloadFailedCheckNetwork': 'فشل التنزيل، يرجى التحقق من اتصال الشبكة',
'otaDownloadFailed': 'فشل التنزيل',
'otaPreparingConnection': 'جارٍ تحضير اتصال الجهاز...',
'otaConnectingDevice': 'جارٍ الاتصال بالجهاز...',
'otaUpgradeStarted': 'بدأت ترقية OTA...',
'otaUpgradeProgressWithPercent': 'تقدم الترقية: @percent%',
'otaUpgradeSuccessComplete': 'اكتملت الترقية بنجاح',
'otaUpgradeFailedWithCode': 'فشلت الترقية، رمز الخطأ: @code',
'otaUpgradeFailedTitle': 'فشلت الترقية',
'otaUpgradeFailedDesc':
'يرجى التحقق من اتصال الجهاز أو حزمة التحديث، رمز الخطأ: @code',
'otaDeviceDisconnected': 'تم قطع اتصال الجهاز',
'otaDeviceConnected': 'تم اتصال الجهاز',
// 音乐模块 // 音乐模块
"noMusic": "لا توجد موسيقى", // 暂无音乐 "noMusic": "لا توجد موسيقى", // 暂无音乐
"noPlayingMusic": "لا توجد موسيقى قيد التشغيل", // 暂无播放音乐 "noPlayingMusic": "لا توجد موسيقى قيد التشغيل", // 暂无播放音乐

132
lib/core/translations/language/bg_bg.dart

@ -167,6 +167,26 @@ const Map<String, String> bgBG = {
'checkConnectionStatusFailed': 'checkConnectionStatusFailed':
'Неуспешна проверка на състоянието на връзката', 'Неуспешна проверка на състоянието на връзката',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Неуспешна инициализация на Bluetooth: @error',
'needBluetoothAndLocationPermission': 'За сканиране на устройства са необходими разрешения за Bluetooth и местоположение',
'permissionRequestFailedWithError': 'Неуспешна заявка за разрешение: @error',
'needPermission': 'Необходимо разрешение',
'blePermissionDialogContent': 'Това приложение изисква разрешения за Bluetooth и местоположение за сканиране на устройства. Моля, включете ги в Настройки.',
'needEnableBluetooth': 'Включете Bluetooth',
'enableBluetoothDialogContent': 'Моля, включете Bluetooth за сканиране и свързване на устройства.',
'bleScanFailedWithError': 'Неуспешно сканиране: @error',
'bleConnectionSuccess': 'Успешно свързване',
'bleConnectedToDevice': 'Свързан към @device',
'bleConnectionFailedWithError': 'Неуспешно свързване: @error',
'bleDisconnected': 'Прекъсната връзка',
'bleDeviceDisconnected': 'Устройството е прекъснато',
'bleDisconnectFailedWithError': 'Неуспешно прекъсване на връзката: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Търсене на AI функции...", "searchAi": "Търсене на AI функции...",
"exploreSlogan": "Интелигентни слушалки, безгранични възможности", "exploreSlogan": "Интелигентни слушалки, безгранични възможности",
@ -563,20 +583,20 @@ const Map<String, String> bgBG = {
// Meeting模块 - 文件操作 // Meeting模块 - 文件操作
'importing': 'Importing...', 'importing': 'Importing...',
'batchImporting': 'Batch importing...', 'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...', 'importingLocalRecordings': 'Импортиране на локални записи...',
'importFailed': 'Import file failed: {filePath}, error: {error}', 'importFailed': 'Неуспешен импорт на файл: {filePath}, грешка: {error}',
'importSuccess': 'Successfully imported {count} local recordings', 'importSuccess': 'Успешно импортирани {count} локални записа',
'importError': 'Import failed: {error}', 'importError': 'Неуспешен импорт: {error}',
'pleaseSelectAudioFile': 'Please select audio file', 'pleaseSelectAudioFile': 'Моля, изберете аудио файл',
'shareAudio': 'Share Meeting Audio', 'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!', 'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}', 'shareFailed': 'Неуспешно споделяне: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'Неуспешна обработка на файл: {filePath}, грешка: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Запази интелектуална карта', 'saveMindMap': 'Запази интелектуална карта',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Успешно споделяне',
// Meeting模块 - AI问答 // Meeting模块 - AI问答
'askAI': 'Ask AI ...', 'askAI': 'Ask AI ...',
@ -612,9 +632,9 @@ const Map<String, String> bgBG = {
// Meeting模块 - 云端同步 // Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud', 'syncToCloud': 'Sync to Cloud',
'syncToCloudTip': 'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', 'Автоматично синхронизирайте записите си в облака. Можете да възпроизвеждате, управлявате и споделяте записи чрез всяко приложение VOITRANS или VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP', 'syncToVoitransApp': 'Синхронизирай с VOITRANS APP',
'transcriptionRecord': 'Transcription Record', 'transcriptionRecord': 'Запис на транскрипция',
// Meeting模块 - 我的页面 // Meeting模块 - 我的页面
'transcriptionRecords': 'Записи на транскрипции', 'transcriptionRecords': 'Записи на транскрипции',
@ -701,7 +721,7 @@ const Map<String, String> bgBG = {
'purchase': 'Покупка', 'purchase': 'Покупка',
// Meeting模块 - 录音语言 // Meeting模块 - 录音语言
'recordLanguage': 'Recording Language', 'recordLanguage': 'Език на записа',
'cantonese': 'Cantonese', 'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect', 'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect', 'shanghai': 'Shanghai Dialect',
@ -731,7 +751,7 @@ const Map<String, String> bgBG = {
"memberService": "Member Service", "memberService": "Member Service",
"bindRewardTitle": "Rewards", "bindRewardTitle": "Rewards",
"bindRewardSimpleDesc": "bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.", "Наградата за първо свързване на устройство е издадена. Натиснете ОК за затваряне.",
"joinDevice": "Свързано устройство:", "joinDevice": "Свързано устройство:",
"accountId": "ID на акаунта:", "accountId": "ID на акаунта:",
"systemSetting": "Системни настройки", "systemSetting": "Системни настройки",
@ -883,6 +903,13 @@ const Map<String, String> bgBG = {
'Искаме да знаем причината за доклада ви, можете да опишете проблема, с който сте се сблъскали.', 'Искаме да знаем причината за доклада ви, можете да опишете проблема, с който сте се сблъскали.',
'generatedByAi': 'Генерирано от AI', 'generatedByAi': 'Генерирано от AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Ето някои препоръчани музики:', 'recommendedMusic': 'Ето някои препоръчани музики:',
'playList': 'Плейлист', 'playList': 'Плейлист',
@ -903,6 +930,28 @@ const Map<String, String> bgBG = {
"bicycling": "Колоездене", "bicycling": "Колоездене",
"tsransit": "Обществен транспорт", "tsransit": "Обществен транспорт",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Неуспешно стартиране на навигацията',
'cannotPlayMusicListRetryLater': 'Не може да се възпроизведе музикалният списък, моля опитайте отново по-късно',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Грешка при отваряне на картата',
'pleaseInstallAmapApp': 'Моля, първо инсталирайте приложението Amap',
'pleaseInstallBaiduMapApp': 'Моля, първо инсталирайте приложението Baidu Maps',
'appleMapStartFailed': 'Неуспешно стартиране на Apple Maps',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Грешка при отваряне на Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Заявка за времето:', 'weatherQuery': 'Заявка за времето:',
'highest': 'Най-висока', 'highest': 'Най-висока',
@ -975,8 +1024,18 @@ const Map<String, String> bgBG = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Неуспешно откриване на езика", "languageDetectionFailed": "Неуспешно откриване на езика",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Изключи плаващ прозорец',
'enableFloatingWindow': 'Включи плаващ прозорец',
'permissionTip': 'Съвет за разрешение',
'micPermissionRequiredForRecording': 'За записване е необходимо разрешение за микрофон',
'deleteTranslationRecordError': 'Грешка при изтриване на запис за превод: @error',
"translationFailed": "Неуспешен превод", "translationFailed": "Неуспешен превод",
"translating": "Превеждане",
"translate": "Преведи",
"pleaseInputText": "Моля въведете текст", "pleaseInputText": "Моля въведете текст",
"inputTextToTranslate": "Моля, въведете текста за превод",
"textTooLong": "Текстът е твърде дълъг, макс 5000 символа", "textTooLong": "Текстът е твърде дълъг, макс 5000 символа",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1143,9 +1202,9 @@ const Map<String, String> bgBG = {
// 权限模块 // 权限模块
'meetingStoragePermission': 'Storage', 'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation': 'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.', 'Нуждаем се от достъп до разрешения за съхранение, за да можете да избирате и качвате аудио файлове.',
'meetingStoragePermissionPermanentDenial': 'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'Установихме, че сте отказали постоянно разрешението за съхранение. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за съхранение.',
'getPermissionStatusFailed': 'getPermissionStatusFailed':
'Неуспешно получаване на състоянието на разрешенията', 'Неуспешно получаване на състоянието на разрешенията',
'communicationPermissions': 'Разрешения за комуникация', 'communicationPermissions': 'Разрешения за комуникация',
@ -1414,6 +1473,49 @@ const Map<String, String> bgBG = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Извадете двете слушалки и се уверете, че батерията на двете е над 20%", "Извадете двете слушалки и се уверете, че батерията на двете е над 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Успешна актуализация',
'otaUpgradeCompleteRepair': 'Актуализацията на фърмуера е завършена!\n\nУстройството трябва да бъде сдвоено отново, за да работи правилно. Да отидете на страницата за сдвояване сега?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection': 'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo': 'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection': 'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName': 'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow': 'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow': 'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork': 'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc': 'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Няма музика", // 暂无音乐 "noMusic": "Няма музика", // 暂无音乐
"noPlayingMusic": "Няма възпроизвеждаща се музика", // 暂无播放音乐 "noPlayingMusic": "Няма възпроизвеждаща се музика", // 暂无播放音乐

148
lib/core/translations/language/cs_cz.dart

@ -166,6 +166,26 @@ const Map<String, String> csCZ = {
'right': 'Pravý', 'right': 'Pravý',
'checkConnectionStatusFailed': 'Kontrola stavu připojení selhala', 'checkConnectionStatusFailed': 'Kontrola stavu připojení selhala',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Inicializace Bluetooth selhala: @error',
'needBluetoothAndLocationPermission': 'Pro vyhledávání zařízení jsou vyžadována oprávnění Bluetooth a polohy',
'permissionRequestFailedWithError': 'Žádost o oprávnění selhala: @error',
'needPermission': 'Vyžadováno oprávnění',
'blePermissionDialogContent': 'Tato aplikace vyžaduje oprávnění Bluetooth a polohy pro vyhledávání zařízení. Povolte je prosím v Nastavení.',
'needEnableBluetooth': 'Zapnout Bluetooth',
'enableBluetoothDialogContent': 'Zapněte prosím Bluetooth pro vyhledávání a připojení zařízení.',
'bleScanFailedWithError': 'Vyhledávání selhalo: @error',
'bleConnectionSuccess': 'Připojení úspěšné',
'bleConnectedToDevice': 'Připojeno k @device',
'bleConnectionFailedWithError': 'Připojení selhalo: @error',
'bleDisconnected': 'Odpojeno',
'bleDeviceDisconnected': 'Zařízení odpojeno',
'bleDisconnectFailedWithError': 'Odpojení selhalo: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Hledat AI funkce...", "searchAi": "Hledat AI funkce...",
"exploreSlogan": "Chytrá sluchátka, nekonečné možnosti", "exploreSlogan": "Chytrá sluchátka, nekonečné možnosti",
@ -420,28 +440,28 @@ const Map<String, String> csCZ = {
'guideAwakenSuccess': 'Skvělé! Lily je vzhůru – požádejte ji o pomoc.', 'guideAwakenSuccess': 'Skvělé! Lily je vzhůru – požádejte ji o pomoc.',
'confirmInput': 'Potvrdit vstup', 'confirmInput': 'Potvrdit vstup',
'guideClickSendPrefix': 'Klepněte na odeslat, ', 'guideClickSendPrefix': 'Klepněte na odeslat, ',
'guideWeatherStart': 'Řekněte Lily: „Jaké je dnes počasí?“', 'guideWeatherStart': 'Řekněte Lily: „Jaké je dnes počasí?"',
'guideWeatherInput': 'Jaké je dnes počasí?', 'guideWeatherInput': 'Jaké je dnes počasí?',
'guideWeatherSend': 'Lily nahlásí počasí v reálném čase', 'guideWeatherSend': 'Lily nahlásí počasí v reálném čase',
'guideWeatherEnd': 'Lily může hlásit počasí živě – zkuste jiné příkazy', 'guideWeatherEnd': 'Lily může hlásit počasí živě – zkuste jiné příkazy',
'guideMusicStart': 'Řekněte Lily: „Zahraj nějaký rock“', 'guideMusicStart': 'Řekněte Lily: „Zahraj nějaký rock"',
'guideMusicInput': 'Zahraj nějaký rock', 'guideMusicInput': 'Zahraj nějaký rock',
'guideMusicSend': 'Lily pro vás najde hudbu', 'guideMusicSend': 'Lily pro vás najde hudbu',
'guideMusicEnd': 'Lily našla hudbu – zkuste jiné příkazy', 'guideMusicEnd': 'Lily našla hudbu – zkuste jiné příkazy',
'guideNavStart': 'Řekněte Lily: „Naviguj na letiště Šen-čen“', 'guideNavStart': 'Řekněte Lily: „Naviguj na letiště Šen-čen"',
'guideNavInput': 'Naviguj na letiště Šen-čen', 'guideNavInput': 'Naviguj na letiště Šen-čen',
'guideNavSend': 'Lily naplánuje trasu', 'guideNavSend': 'Lily naplánuje trasu',
'guideNavEnd': 'Navigace nastavena – zkuste jiné příkazy', 'guideNavEnd': 'Navigace nastavena – zkuste jiné příkazy',
'guideMeetingStart': 'guideMeetingStart':
'Řekněte Lily: „Vytvoř připomínku schůzky na zítra ve 3 odpoledne“', 'Řekněte Lily: „Vytvoř připomínku schůzky na zítra ve 3 odpoledne"',
'guideMeetingInput': 'Vytvoř připomínku schůzky na zítra ve 3 odpoledne', 'guideMeetingInput': 'Vytvoř připomínku schůzky na zítra ve 3 odpoledne',
'guideMeetingSend': 'Lily vytvoří připomínku schůzky', 'guideMeetingSend': 'Lily vytvoří připomínku schůzky',
'guideMeetingEnd': 'Připomínka vytvořena – zkuste jiné příkazy', 'guideMeetingEnd': 'Připomínka vytvořena – zkuste jiné příkazy',
'guidePhoneStart': 'Řekněte Lily: „Zavolej mámě“', 'guidePhoneStart': 'Řekněte Lily: „Zavolej mámě"',
'guidePhoneInput': 'Zavolej mámě', 'guidePhoneInput': 'Zavolej mámě',
'guidePhoneSend': 'Lily uskuteční hovor', 'guidePhoneSend': 'Lily uskuteční hovor',
'guidePhoneEnd': 'Hovor zahájen – zkuste jiné příkazy', 'guidePhoneEnd': 'Hovor zahájen – zkuste jiné příkazy',
'guideSmsStart': 'Řekněte Lily: „Pošli tátovi SMS: Přijdu na večeři domů“', 'guideSmsStart': 'Řekněte Lily: „Pošli tátovi SMS: Přijdu na večeři domů"',
'guideSmsInput': 'SMS tátovi: Přijdu na večeři domů', 'guideSmsInput': 'SMS tátovi: Přijdu na večeři domů',
'guideSmsSend': 'Lily odešle zprávu', 'guideSmsSend': 'Lily odešle zprávu',
'guideSmsEnd': 'Zpráva odeslána – hlasové ovládání je pohodlné', 'guideSmsEnd': 'Zpráva odeslána – hlasové ovládání je pohodlné',
@ -546,30 +566,30 @@ const Map<String, String> csCZ = {
'custom': 'Vlastní', 'custom': 'Vlastní',
'pleaseEnter': 'Prosím zadejte', 'pleaseEnter': 'Prosím zadejte',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Jazyk nahrávání',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now', 'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.', 'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc': 'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', 'AI analýza identifikuje klíčové události v nahrávkách a umožňuje vám vybrat důležité události pro generování pomocí AI.',
// Meeting模块 - 文件操作 // Meeting模块 - 文件操作
'importing': 'Importing...', 'importing': 'Importing...',
'batchImporting': 'Batch importing...', 'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...', 'importingLocalRecordings': 'Importování místních nahrávek...',
'importFailed': 'Import file failed: {filePath}, error: {error}', 'importFailed': 'Import souboru selhal: {filePath}, chyba: {error}',
'importSuccess': 'Successfully imported {count} local recordings', 'importSuccess': 'Úspěšně importováno {count} místních nahrávek',
'importError': 'Import failed: {error}', 'importError': 'Import selhal: {error}',
'pleaseSelectAudioFile': 'Please select audio file', 'pleaseSelectAudioFile': 'Vyberte prosím zvukový soubor',
'shareAudio': 'Share Meeting Audio', 'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!', 'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}', 'shareFailed': 'Sdílení selhalo: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'Zpracování souboru selhalo: {filePath}, chyba: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Uložit myšlenkovou mapu', 'saveMindMap': 'Uložit myšlenkovou mapu',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Sdílení úspěšné',
// Meeting模块 - AI问答 // Meeting模块 - AI问答
'askAI': 'Ask AI ...', 'askAI': 'Ask AI ...',
@ -605,9 +625,9 @@ const Map<String, String> csCZ = {
// Meeting模块 - 云端同步 // Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud', 'syncToCloud': 'Sync to Cloud',
'syncToCloudTip': 'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', 'Automaticky synchronizujte nahrávky do cloudu. Nahrávky můžete přehrávat, spravovat a sdílet prostřednictvím libovolné aplikace VOITRANS nebo VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP', 'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record', 'transcriptionRecord': 'Záznam přepisu',
// Meeting模块 - 我的页面 // Meeting模块 - 我的页面
'transcriptionRecords': 'Záznamy přepisů', 'transcriptionRecords': 'Záznamy přepisů',
@ -693,7 +713,7 @@ const Map<String, String> csCZ = {
'purchase': 'Purchase', 'purchase': 'Purchase',
// Meeting模块 - 录音语言 // Meeting模块 - 录音语言
'recordLanguage': 'Recording Language', 'recordLanguage': 'Jazyk nahrávání',
'cantonese': 'Cantonese', 'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect', 'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect', 'shanghai': 'Shanghai Dialect',
@ -723,7 +743,7 @@ const Map<String, String> csCZ = {
"memberService": "Member Service", "memberService": "Member Service",
"bindRewardTitle": "Rewards", "bindRewardTitle": "Rewards",
"bindRewardSimpleDesc": "bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.", "Odměna za první propojení zařízení byla vydána. Klepněte na OK pro zavření.",
"joinDevice": "Připojené zařízení:", "joinDevice": "Připojené zařízení:",
"accountId": "ID účtu:", "accountId": "ID účtu:",
"systemSetting": "Systémová nastavení", "systemSetting": "Systémová nastavení",
@ -783,7 +803,7 @@ const Map<String, String> csCZ = {
"noMacAddress": "Žádná MAC adresa", "noMacAddress": "Žádná MAC adresa",
"licenseCode": "Licenční kód", "licenseCode": "Licenční kód",
"confirmUnbind": "Potvrdit odpojení", "confirmUnbind": "Potvrdit odpojení",
"confirmUnbindMessage": "Opravdu chcete odpojit zařízení „{deviceName}“?", "confirmUnbindMessage": 'Opravdu chcete odpojit zařízení „{deviceName}"?',
"confirmUnbindAction": "Potvrdit odpojení", "confirmUnbindAction": "Potvrdit odpojení",
// Agent模块 - 主界面 // Agent模块 - 主界面
@ -872,6 +892,13 @@ const Map<String, String> csCZ = {
'Chceme znát důvod vašeho hlášení, můžete popsat problém, se kterým jste se setkali.', 'Chceme znát důvod vašeho hlášení, můžete popsat problém, se kterým jste se setkali.',
'generatedByAi': 'Generováno AI', 'generatedByAi': 'Generováno AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Zde jsou některé doporučené hudby:', 'recommendedMusic': 'Zde jsou některé doporučené hudby:',
'playList': 'Playlist', 'playList': 'Playlist',
@ -892,6 +919,28 @@ const Map<String, String> csCZ = {
"bicycling": "Jízda na kole", "bicycling": "Jízda na kole",
"tsransit": "Veřejná doprava", "tsransit": "Veřejná doprava",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Spuštění navigace selhalo',
'cannotPlayMusicListRetryLater': 'Nelze přehrát seznam hudby, zkuste to prosím později',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Chyba při otevírání mapy',
'pleaseInstallAmapApp': 'Nejprve prosím nainstalujte aplikaci Amap',
'pleaseInstallBaiduMapApp': 'Nejprve prosím nainstalujte aplikaci Baidu Maps',
'appleMapStartFailed': 'Spuštění Apple Maps selhalo',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Chyba při otevírání Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Dotaz na počasí:', 'weatherQuery': 'Dotaz na počasí:',
'highest': 'Nejvyšší', 'highest': 'Nejvyšší',
@ -964,8 +1013,18 @@ const Map<String, String> csCZ = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Detekce jazyka selhala", "languageDetectionFailed": "Detekce jazyka selhala",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Zakázat plovoucí okno',
'enableFloatingWindow': 'Povolit plovoucí okno',
'permissionTip': 'Upozornění na oprávnění',
'micPermissionRequiredForRecording': 'Pro nahrávání je vyžadováno oprávnění k mikrofonu',
'deleteTranslationRecordError': 'Chyba při mazání záznamu překladu: @error',
"translationFailed": "Překlad selhal", "translationFailed": "Překlad selhal",
"translating": "Translating",
"translate": "Přeložit",
"pleaseInputText": "Zadejte prosím text", "pleaseInputText": "Zadejte prosím text",
"inputTextToTranslate": "Zadejte text k překladu",
"textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků", "textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1125,9 +1184,9 @@ const Map<String, String> csCZ = {
// 权限模块 // 权限模块
'meetingStoragePermission': 'Storage', 'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation': 'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.', 'Potřebujeme přístup k oprávnění úložiště, abyste mohli vybírat a nahrávat zvukové soubory.',
'meetingStoragePermissionPermanentDenial': 'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'Zjistili jsme, že jste trvale odmítli oprávnění k úložišti. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k úložišti.',
'getPermissionStatusFailed': 'Získání stavu oprávnění selhalo', 'getPermissionStatusFailed': 'Získání stavu oprávnění selhalo',
'communicationPermissions': 'Komunikační oprávnění', 'communicationPermissions': 'Komunikační oprávnění',
'bluetoothPermissions': 'Oprávnění Bluetooth', 'bluetoothPermissions': 'Oprávnění Bluetooth',
@ -1390,6 +1449,49 @@ const Map<String, String> csCZ = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Vyjměte obě sluchátka a ujistěte se, že baterie obou je nad 20%", "Vyjměte obě sluchátka a ujistěte se, že baterie obou je nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Aktualizace úspěšná',
'otaUpgradeCompleteRepair': 'Aktualizace firmwaru dokončena!\n\nPro správné fungování je třeba zařízení znovu spárovat. Přejít na stránku párování?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Chyba při kontrole BLE připojení: @error',
'otaBleNotConnected': 'BLE zařízení nepřipojeno',
'otaBleNeedConnection': 'Aktualizace firmwaru vyžaduje připojení BLE zařízení\nUjistěte se prosím, že je zařízení správně připojeno, a zkuste to znovu',
'otaDeviceInfoUnavailableTitle': 'Informace o zařízení nedostupné',
'otaCannotGetDeviceInfo': 'Nelze získat informace o zařízení\nZnovu připojte zařízení nebo to zkuste později',
'otaBleCheckFailed': 'Kontrola BLE připojení selhala',
'otaCannotGetDeviceInfoCheckConnection': 'Nelze získat informace o zařízení, zkontrolujte prosím připojení zařízení',
'otaCannotGetProductInfoWithName': 'Nelze získat informace o produktu, název zařízení: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow': 'Baterie zařízení je příliš slabá pro aktualizaci firmwaru\nPožadavek: baterie musí být nad 20 %\nAktuálně: @ear @battery %\nNabijte prosím zařízení a zkuste to znovu',
'otaDoubleBatteryLow': 'Baterie zařízení je příliš slabá pro aktualizaci firmwaru\nPožadavek: obě sluchátka musí mít baterii nad 20 %\nAktuálně: Levé @left %, Pravé @right %\nNabijte prosím zařízení a zkuste to znovu',
'otaBatteryCheckFailed': 'Kontrola baterie selhala',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Nepodařilo se získat informace o nejnovější verzi',
'otaGetVersionInfoFailed': 'Nepodařilo se získat informace o verzi',
'otaCheckingDeviceStatus': 'Kontrola stavu zařízení...',
'otaDownloadFailedCheckNetwork': 'Stahování selhalo, zkontrolujte prosím připojení k síti',
'otaDownloadFailed': 'Stahování selhalo',
'otaPreparingConnection': 'Příprava připojení zařízení...',
'otaConnectingDevice': 'Připojování k zařízení...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Aktualizace byla úspěšně dokončena',
'otaUpgradeFailedWithCode': 'Aktualizace selhala, kód chyby: @code',
'otaUpgradeFailedTitle': 'Aktualizace selhala',
'otaUpgradeFailedDesc': 'Zkontrolujte prosím připojení zařízení nebo aktualizační balíček, kód chyby: @code',
'otaDeviceDisconnected': 'Zařízení odpojeno',
'otaDeviceConnected': 'Zařízení připojeno',
// 音乐模块 // 音乐模块
"noMusic": "Žádná hudba", // 暂无音乐 "noMusic": "Žádná hudba", // 暂无音乐
"noPlayingMusic": "Žádná přehrávaná hudba", // 暂无播放音乐 "noPlayingMusic": "Žádná přehrávaná hudba", // 暂无播放音乐

172
lib/core/translations/language/da_dk.dart

@ -166,6 +166,26 @@ const Map<String, String> daDK = {
'right': 'Højre', 'right': 'Højre',
'checkConnectionStatusFailed': 'Kontrol af forbindelsesstatus mislykkedes', 'checkConnectionStatusFailed': 'Kontrol af forbindelsesstatus mislykkedes',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth-initialisering mislykkedes: @error',
'needBluetoothAndLocationPermission': 'Bluetooth- og placeringstilladelser kræves for at scanne enheder',
'permissionRequestFailedWithError': 'Tilladelsesanmodning mislykkedes: @error',
'needPermission': 'Tilladelse påkrævet',
'blePermissionDialogContent': 'Appen kræver Bluetooth- og placeringstilladelser for at scanne enheder. Aktivér dem i Indstillinger.',
'needEnableBluetooth': 'Aktivér Bluetooth',
'enableBluetoothDialogContent': 'Aktivér Bluetooth for at scanne og forbinde enheder.',
'bleScanFailedWithError': 'Scanning mislykkedes: @error',
'bleConnectionSuccess': 'Forbindelse oprettet',
'bleConnectedToDevice': 'Forbundet til @device',
'bleConnectionFailedWithError': 'Forbindelse mislykkedes: @error',
'bleDisconnected': 'Frakoblet',
'bleDeviceDisconnected': 'Enhed frakoblet',
'bleDisconnectFailedWithError': 'Frakobling mislykkedes: @error',
'signalStrong': 'Stærkt signal',
'signalMedium': 'Middel signal',
'signalWeak': 'Svagt signal',
'signalVeryWeak': 'Meget svagt signal',
// 发现页 // 发现页
"searchAi": "Søg AI funktioner...", "searchAi": "Søg AI funktioner...",
"exploreSlogan": "Smarte øretelefoner, uendelige muligheder", "exploreSlogan": "Smarte øretelefoner, uendelige muligheder",
@ -726,7 +746,7 @@ const Map<String, String> daDK = {
"memberService": "Member Service", "memberService": "Member Service",
"bindRewardTitle": "Rewards", "bindRewardTitle": "Rewards",
"bindRewardSimpleDesc": "bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.", "Belønning for første enhedsbinding er udstedt. Tryk OK for at lukke.",
"joinDevice": "Tilsluttet enhed:", "joinDevice": "Tilsluttet enhed:",
"accountId": "Konto-ID:", "accountId": "Konto-ID:",
"systemSetting": "Systemindstillinger", "systemSetting": "Systemindstillinger",
@ -776,19 +796,19 @@ const Map<String, String> daDK = {
"loading": "Indlæser...", "loading": "Indlæser...",
// 设备管理模块 // 设备管理模块
"deviceTypeUnknown": "Unknown Device", "deviceTypeUnknown": "Ukendt enhed",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", "deviceTypeSmartVoiceRecorder": "Smart stemmeoptager",
"deviceTypeSmartEye": "Smart Glasses", "deviceTypeSmartEye": "Smart Glasses",
"unbind": "Afbind", "unbind": "Afbind",
"noDevicesBound": "No devices bound yet", "noDevicesBound": "Ingen enheder bundet endnu",
"pleaseBindDeviceFirst": "Please bind a device first to manage", "pleaseBindDeviceFirst": "Bind venligst en enhed først for at administrere",
"noMacAddress": "No MAC Address", "noMacAddress": "No MAC Address",
"licenseCode": "License Code", "licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind", "confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage": "confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?", "Er du sikker på, at du vil afbinde enheden \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind", "confirmUnbindAction": "Confirm Unbind",
// Agent模块 - 主界面 // Agent模块 - 主界面
@ -819,7 +839,7 @@ const Map<String, String> daDK = {
"loadMoreMessages": "Indlæs flere beskeder...", "loadMoreMessages": "Indlæs flere beskeder...",
"loadFailedClickRetry": "Indlæsning mislykkedes, klik for at prøve igen", "loadFailedClickRetry": "Indlæsning mislykkedes, klik for at prøve igen",
"swipeUpForMore": "Stryg op for mere", "swipeUpForMore": "Stryg op for mere",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "Jeg hjælper dig, vent venligst!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Når aktiveret: AI\'en bliver ikke afbrudt af din stemme, mens den taler, og kan kun håndtere én samtaleomgang ad gangen. For at starte en ny omgang skal du bare sige vækkeordet.', 'voice_interrupt_tip': 'Når aktiveret: AI\'en bliver ikke afbrudt af din stemme, mens den taler, og kan kun håndtere én samtaleomgang ad gangen. For at starte en ny omgang skal du bare sige vækkeordet.',
@ -830,7 +850,7 @@ const Map<String, String> daDK = {
"presetNews": "Today's news", // 今日新闻 "presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食 "presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐 "playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到 "navigationTo": "Hjælp mig venligst med at navigere til", // 导航到
"todayWeather": "How's the weather today?", // 今日天气 "todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻 "todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食 "nearbyFood": "What delicious food is nearby?", // 美食
@ -877,6 +897,13 @@ const Map<String, String> daDK = {
'Vi vil gerne vide årsagen til din rapport, du kan beskrive problemet du stødte på.', 'Vi vil gerne vide årsagen til din rapport, du kan beskrive problemet du stødte på.',
'generatedByAi': 'Genereret af AI', 'generatedByAi': 'Genereret af AI',
// Agent模块 - 工具调用
'toolCall': 'Værktøjskald',
'noResult': 'Intet resultat',
'noToolCallContentToCopy': 'Intet værktøjskald at kopiere',
'toolCallDetails': 'Værktøjskaldsdetaljer:',
'toolCallContentCopied': 'Værktøjskald kopieret til udklipsholder',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Her er nogle anbefalede musikker:', 'recommendedMusic': 'Her er nogle anbefalede musikker:',
'playList': 'Afspilningsliste', 'playList': 'Afspilningsliste',
@ -897,6 +924,28 @@ const Map<String, String> daDK = {
"bicycling": "Cykling", "bicycling": "Cykling",
"tsransit": "Offentlig transport", "tsransit": "Offentlig transport",
// Agent模块 - 导航选择
'selectNavigationApp': 'Vælg navigationsapp',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigér med Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigér med Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigér med Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigér med Apple Maps',
'builtInNavigation': 'Indbygget navigation',
'useBuiltInNavigation': 'Navigér med indbygget kort',
'navigationStartFailed': 'Kunne ikke starte navigation',
'cannotPlayMusicListRetryLater': 'Kan ikke afspille musiklisten, prøv igen senere',
'cannotPlaySong': 'Kan ikke afspille sangen',
'openMapError': 'Fejl ved åbning af kort',
'pleaseInstallAmapApp': 'Installér Amap-appen først',
'pleaseInstallBaiduMapApp': 'Installér Baidu Maps-appen først',
'appleMapStartFailed': 'Apple Maps kunne ikke starte',
'appleMapUnavailable': 'Apple Maps er ikke tilgængeligt',
'openAppleMapError': 'Fejl ved åbning af Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Vejrforespørgsel:', 'weatherQuery': 'Vejrforespørgsel:',
'highest': 'Højeste', 'highest': 'Højeste',
@ -950,8 +999,8 @@ const Map<String, String> daDK = {
"strongWind": "Kraftig vind", "strongWind": "Kraftig vind",
// 翻译模块 - 中间层 // 翻译模块 - 中间层
"pictureTranslation": "Picture Translation", "pictureTranslation": "Billedoversættelse",
"textTranslation": "Text Translation", "textTranslation": "Tekstoversættelse",
// 翻译模块 - 主页 // 翻译模块 - 主页
"translationHistory": "Oversættelseshistorik", "translationHistory": "Oversættelseshistorik",
@ -964,18 +1013,28 @@ const Map<String, String> daDK = {
"me": "Me", "me": "Me",
"counterPart": "Counterpart", "counterPart": "Counterpart",
"bluetoothCallStateError": "bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state", "Sørg venligst for, at Bluetooth-headsettet er forbundet til telefonen og i opkaldstilstand",
"autoDetect": "Auto Detect", // 自动检测 "autoDetect": "Auto Detect", // 自动检测
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Sprogregistrering mislykkedes",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text", // 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Deaktivér flydende vindue',
'enableFloatingWindow': 'Aktivér flydende vindue',
'permissionTip': 'Tilladelsestip',
'micPermissionRequiredForRecording': 'Mikrofontilladelse kræves til optagelse',
'deleteTranslationRecordError': 'Fejl ved sletning af oversættelsespost: @error',
"translationFailed": "Oversættelse mislykkedes",
"translating": "Oversætter",
"translate": "Oversæt",
"pleaseInputText": "Indtast venligst tekst",
"inputTextToTranslate": "Indtast venligst teksten, der skal oversættes",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
"noTranslationHistory": "Ingen oversættelseshistorik", "noTranslationHistory": "Ingen oversættelseshistorik",
"historyRecords": "History Records", "historyRecords": "Historik",
"clearResults": "Clear Results", "clearResults": "Clear Results",
"clearHistory": "Ryd historik", "clearHistory": "Ryd historik",
"clearHistoryConfirm": "clearHistoryConfirm":
@ -988,12 +1047,12 @@ const Map<String, String> daDK = {
// 翻译模块 - 图片翻译 // 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source", "selectImageSource": "Select Image Source",
"imagePreview": "Image Preview", "imagePreview": "Image Preview",
"translationResult": "Translation Result", "translationResult": "Oversættelsesresultat",
"recognitionResult": "Recognition Result", "recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview", "translatedImagePreview": "Forhåndsvisning af oversat billede",
"translatedImageLoadFailed": "Failed to load translated image", "translatedImageLoadFailed": "Kunne ikke indlæse oversat billede",
"pleaseSelectImage": "Please select an image", "pleaseSelectImage": "Vælg venligst et billede",
"imageLoadFailed": "Image load failed", "imageLoadFailed": "Billedindlæsning mislykkedes",
"imageQuality": "Image Quality", "imageQuality": "Image Quality",
"maxSize": "Max Size", "maxSize": "Max Size",
"close": "Close", "close": "Close",
@ -1002,38 +1061,38 @@ const Map<String, String> daDK = {
"setMaxSize": "Set Max Size", "setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx", "currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action", "waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start", "pleaseSelectImageToStart": "Vælg venligst et billede for at starte",
"chooseImage": "Choose Image", "chooseImage": "Choose Image",
"openingCamera": "Opening camera...", "openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...", "openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled", "cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection", "userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image", "translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...", "callingImageTranslateService": "Kalder billedoversættelsestjeneste...",
"savingRecord": "Saving Record", "savingRecord": "Gemmer optegnelse",
"savingTranslationResult": "Saving translation result...", "savingTranslationResult": "Gemmer oversættelsesresultat...",
"translationCompleted": "Translation Completed", "translationCompleted": "Oversættelse fuldført",
"allStepsCompleted": "All steps completed", "allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed", "processingFailed": "Behandling mislykkedes",
"imageProcessingOrTranslationFailed": "imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}", "Billedbehandling eller oversættelse mislykkedes. Prøv venligst igen.\nFejl: {error}",
"imageTooLarge": "Image size exceeds 4MB limit", "imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint": "imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry", "Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result", "emptyTranslationResult": "Billedoversættelses-API returnerede tomt resultat",
"imageTranslationFailedTryLater": "imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later", "Billedoversættelse mislykkedes. Netværksproblem eller hastighedsbegrænsning. Prøv venligst igen senere",
"imageTranslationApiException": "imageTranslationApiException":
"Image translation API exception. Check network and retry", "Billedoversættelses-API undtagelse. Kontroller netværket og prøv igen",
"permissionRequired": "Permission Required", "permissionRequired": "Tilladelse påkrævet",
"cameraPermissionRequired": "Camera permission required to take photos", "cameraPermissionRequired": "Kameratilladelse kræves for at tage billeder",
"photoAlbumPermissionRequired": "photoAlbumPermissionRequired":
"Photo album permission required to pick images", "Fotoalbumtilladelse kræves for at vælge billeder",
"translationDetails": "Translation Details", "translationDetails": "Oversættelsesdetaljer",
"originalImage": "Original Image", "originalImage": "Original Image",
"sourceLanguage": "Source Language", "sourceLanguage": "Source Language",
"targetLanguage": "Target Language", "targetLanguage": "Target Language",
"translationTime": "Translation Time", "translationTime": "Oversættelsestid",
"shareInDevelopment": "Sharing feature under development", "shareInDevelopment": "Sharing feature under development",
// 翻译模块 - 录音文件 // 翻译模块 - 录音文件
@ -1391,6 +1450,49 @@ const Map<String, String> daDK = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Tag begge øretelefoner ud og sørg for at batteriet på begge er over 20%", "Tag begge øretelefoner ud og sørg for at batteriet på begge er over 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Ny version @version fundet',
'otaConfirmUpdateNow': 'Opdatér nu?',
'otaUpdate': 'Opdatér',
'otaUpgradeSuccess': 'Opgradering gennemført',
'otaUpgradeCompleteRepair': 'Firmware-opgradering fuldført!\n\nEnheden skal parres igen. Gå til parringssiden?',
'otaPairLater': 'Par senere',
'otaPairNow': 'Par nu',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Fejl ved BLE-kontrol: @error',
'otaBleNotConnected': 'BLE-enhed ikke forbundet',
'otaBleNeedConnection': 'Firmware-opgradering kræver BLE-forbindelse\nSørg for at enheden er forbundet og prøv igen',
'otaDeviceInfoUnavailableTitle': 'Enhedsinfo utilgængelig',
'otaCannotGetDeviceInfo': 'Kan ikke hente enhedsinfo\nTilslut enheden igen eller prøv senere',
'otaBleCheckFailed': 'BLE-kontrol mislykkedes',
'otaCannotGetDeviceInfoCheckConnection': 'Kan ikke hente enhedsinfo, kontrollér forbindelsen',
'otaCannotGetProductInfoWithName': 'Kan ikke hente produktinfo, enhedsnavn: @deviceName',
'otaCannotGetBatteryInfo': 'Kan ikke hente batteriinfo',
'otaLowBattery': 'Lavt batteri',
'otaSingleBatteryLow': 'Batteriniveau for lavt til opgradering\nKrav: batteri over 20%\nNuværende: @ear @battery%\nOplad og prøv igen',
'otaDoubleBatteryLow': 'Batteriniveau for lavt til opgradering\nKrav: begge ørepropper over 20%\nNuværende: Venstre @left%, Højre @right%\nOplad og prøv igen',
'otaBatteryCheckFailed': 'Batterikontrol mislykkedes',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'Opdateringen indeholder ydelsesforbedringer og fejlrettelser.',
'otaGetLatestVersionFailed': 'Kunne ikke hente seneste version',
'otaGetVersionInfoFailed': 'Kunne ikke hente versionsinfo',
'otaCheckingDeviceStatus': 'Kontrollerer enhedsstatus...',
'otaDownloadFailedCheckNetwork': 'Download mislykkedes, kontrollér netværksforbindelsen',
'otaDownloadFailed': 'Download mislykkedes',
'otaPreparingConnection': 'Forbereder enhedsforbindelse...',
'otaConnectingDevice': 'Forbinder til enhed...',
'otaUpgradeStarted': 'OTA-opgradering startet...',
'otaUpgradeProgressWithPercent': 'Opgraderingsforløb: @percent%',
'otaUpgradeSuccessComplete': 'Opgradering gennemført',
'otaUpgradeFailedWithCode': 'Opgradering mislykkedes, fejlkode: @code',
'otaUpgradeFailedTitle': 'Opgradering mislykkedes',
'otaUpgradeFailedDesc': 'Kontrollér forbindelse eller opdateringspakke, fejlkode: @code',
'otaDeviceDisconnected': 'Enhed frakoblet',
'otaDeviceConnected': 'Enhed forbundet',
// 音乐模块 // 音乐模块
"noMusic": "Ingen musik", // 暂无音乐 "noMusic": "Ingen musik", // 暂无音乐
"noPlayingMusic": "Ingen musik afspilles", // 暂无播放音乐 "noPlayingMusic": "Ingen musik afspilles", // 暂无播放音乐

394
lib/core/translations/language/de_de.dart

@ -1,5 +1,4 @@
const Map<String, String> deDE = { const Map<String, String> deDE = {
// 通用 // 通用
'continue': 'Fortfahren', 'continue': 'Fortfahren',
'confirm': 'Bestätigen', 'confirm': 'Bestätigen',
@ -19,11 +18,11 @@ const Map<String, String> deDE = {
"unknownError": "Unbekannter Fehler", "unknownError": "Unbekannter Fehler",
"asrConnectionFailed": "asrConnectionFailed":
"Verbindung zum Spracherkennungsdienst fehlgeschlagen. Bitte Netzwerk prüfen oder es später erneut versuchen.", "Verbindung zum Spracherkennungsdienst fehlgeschlagen. Bitte Netzwerk prüfen oder es später erneut versuchen.",
"justNow": "Just now", "justNow": "Gerade eben",
"minutesAgo": "@minutes minutes ago", "minutesAgo": "vor @minutes Minuten",
"yesterday": "Yesterday", "yesterday": "Gestern",
"daysAgo": "@days days ago", "daysAgo": "vor @days Tagen",
"hoursAgo": "@hours hours ago", "hoursAgo": "vor @hours Stunden",
// 启动页 // 启动页
"slogan": "Die Welt verbinden, jenseits der Stimme", "slogan": "Die Welt verbinden, jenseits der Stimme",
@ -170,6 +169,30 @@ const Map<String, String> deDE = {
'right': 'Rechts', 'right': 'Rechts',
'checkConnectionStatusFailed': 'Verbindungsstatus-Überprüfung fehlgeschlagen', 'checkConnectionStatusFailed': 'Verbindungsstatus-Überprüfung fehlgeschlagen',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth-Initialisierung fehlgeschlagen: @error',
'needBluetoothAndLocationPermission':
'Bluetooth- und Standortberechtigungen werden zum Scannen benoetigt',
'permissionRequestFailedWithError':
'Berechtigungsanfrage fehlgeschlagen: @error',
'needPermission': 'Berechtigung erforderlich',
'blePermissionDialogContent':
'Die App benoetigt Bluetooth- und Standortberechtigungen zum Scannen von Geraeten. Bitte aktivieren Sie diese in den Einstellungen.',
'needEnableBluetooth': 'Bluetooth aktivieren',
'enableBluetoothDialogContent':
'Bitte aktivieren Sie Bluetooth zum Scannen und Verbinden von Geraeten.',
'bleScanFailedWithError': 'Scan fehlgeschlagen: @error',
'bleConnectionSuccess': 'Verbindung erfolgreich',
'bleConnectedToDevice': 'Verbunden mit @device',
'bleConnectionFailedWithError': 'Verbindung fehlgeschlagen: @error',
'bleDisconnected': 'Getrennt',
'bleDeviceDisconnected': 'Geraet getrennt',
'bleDisconnectFailedWithError': 'Trennung fehlgeschlagen: @error',
'signalStrong': 'Stark',
'signalMedium': 'Mittel',
'signalWeak': 'Schwach',
'signalVeryWeak': 'Sehr schwach',
// 发现页 // 发现页
"searchAi": "KI-Funktionen suchen...", "searchAi": "KI-Funktionen suchen...",
"exploreSlogan": "Intelligente Kopfhörer, unendliche Möglichkeiten", "exploreSlogan": "Intelligente Kopfhörer, unendliche Möglichkeiten",
@ -246,66 +269,72 @@ const Map<String, String> deDE = {
'totalQuota': 'Gesamtkontingent', 'totalQuota': 'Gesamtkontingent',
'remaining': 'Verbleibend', 'remaining': 'Verbleibend',
'featureDescription': 'Funktionsbeschreibung', 'featureDescription': 'Funktionsbeschreibung',
'paymentSuccess': 'Zahlung erfolgreich', 'paymentSuccess': 'Zahlung erfolgreich',
'paymentFailed': 'Zahlung fehlgeschlagen', 'paymentFailed': 'Zahlung fehlgeschlagen',
'gotIt': 'Verstanden', 'gotIt': 'Verstanden',
'paymentFailedTryAgain': 'Zahlung fehlgeschlagen. Bitte versuchen Sie es erneut.', 'paymentFailedTryAgain':
'selectPaymentMethod': 'Zahlungsmethode auswählen', 'Zahlung fehlgeschlagen. Bitte versuchen Sie es erneut.',
'wechatPay': 'WeChat Pay', 'selectPaymentMethod': 'Zahlungsmethode auswählen',
'alipayPay': 'Alipay', 'wechatPay': 'WeChat Pay',
'paypalPay': 'PayPal', 'alipayPay': 'Alipay',
'appleIap': 'Apple IAP', 'paypalPay': 'PayPal',
'googleIap': 'Google IAP', 'appleIap': 'Apple IAP',
'wechatOrderCreateFailed': 'WeChat-Bestellung konnte nicht erstellt werden', 'googleIap': 'Google IAP',
'alipayOrderCreateFailed': 'Alipay-Bestellung konnte nicht erstellt werden', 'wechatOrderCreateFailed': 'WeChat-Bestellung konnte nicht erstellt werden',
'appleOrderCreateFailed': 'Apple-Bestellung konnte nicht erstellt werden', 'alipayOrderCreateFailed': 'Alipay-Bestellung konnte nicht erstellt werden',
'googleOrderCreateFailed': 'Google-Bestellung konnte nicht erstellt werden', 'appleOrderCreateFailed': 'Apple-Bestellung konnte nicht erstellt werden',
'paypalOrderCreateFailed': 'PayPal-Bestellung konnte nicht erstellt werden', 'googleOrderCreateFailed': 'Google-Bestellung konnte nicht erstellt werden',
'paymentException': 'Zahlungsausnahme', 'paypalOrderCreateFailed': 'PayPal-Bestellung konnte nicht erstellt werden',
'paymentLaunchFailed': 'Zahlungsstart fehlgeschlagen', 'paymentException': 'Zahlungsausnahme',
'paymentExceptionWithError': 'Zahlungsausnahme: @error', 'paymentLaunchFailed': 'Zahlungsstart fehlgeschlagen',
'paymentProcessingCheckLater': 'Ihre Bestellung wird bearbeitet. Bitte überprüfen Sie es später.', 'paymentExceptionWithError': 'Zahlungsausnahme: @error',
'paymentResultQueryException': 'Abfrage des Zahlungsergebnisses fehlgeschlagen: @error', 'paymentProcessingCheckLater':
'orderConfirmedQuotaRefreshed': 'Bestellung bestätigt. Ihr Kontingent wurde aktualisiert.', 'Ihre Bestellung wird bearbeitet. Bitte überprüfen Sie es später.',
'paymentCompletedConfirming': 'Zahlung abgeschlossen. Bestätigung läuft…', 'paymentResultQueryException':
'paymentCancelled': 'Zahlung abgebrochen', 'Abfrage des Zahlungsergebnisses fehlgeschlagen: @error',
'paypalOpenedCompleteInBrowser': 'PayPal geöffnet. Bitte schließen Sie die Zahlung in Ihrem Browser ab.', 'orderConfirmedQuotaRefreshed':
'paypalOpenFailed': 'PayPal-Zahlungsseite konnte nicht geöffnet werden', 'Bestellung bestätigt. Ihr Kontingent wurde aktualisiert.',
'paymentTestTitle': 'Zahlungstest', 'paymentCompletedConfirming': 'Zahlung abgeschlossen. Bestätigung läuft…',
'paymentTestOrderInfo': 'Testbestellungsinformationen', 'paymentCancelled': 'Zahlung abgebrochen',
'paymentTestProductId': 'Produkt-ID', 'paypalOpenedCompleteInBrowser':
'paymentTestProductDescription': 'Produktbeschreibung', 'PayPal geöffnet. Bitte schließen Sie die Zahlung in Ihrem Browser ab.',
'paymentTestWechatDescription': 'WeChat Pay-Zahlungstest', 'paypalOpenFailed': 'PayPal-Zahlungsseite konnte nicht geöffnet werden',
'paymentTestAlipayDescription': 'Alipay-Zahlungstest', 'paymentTestTitle': 'Zahlungstest',
'paymentTestAmount': 'Betrag', 'paymentTestOrderInfo': 'Testbestellungsinformationen',
'paymentTestSelectAmount': 'Testbetrag auswählen', 'paymentTestProductId': 'Produkt-ID',
'paying': 'Zahlung wird durchgeführt...', 'paymentTestProductDescription': 'Produktbeschreibung',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestWechatDescription': 'WeChat Pay-Zahlungstest',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAlipayDescription': 'Alipay-Zahlungstest',
'paymentStatusTitle': 'Zahlungsstatus', 'paymentTestAmount': 'Betrag',
'errorInfoWithMessage': 'Fehler: @message', 'paymentTestSelectAmount': 'Testbetrag auswählen',
'retest': 'Erneut testen', 'paying': 'Zahlung wird durchgeführt...',
'paymentTestInstructionsTitle': 'Anleitung', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsContent': '1. Wählen Sie einen Testbetrag (empfohlen: ¥0,01)\n2. Klicken Sie auf die Zahlungsschaltfläche, um zu starten\n3. Schließen Sie die Zahlung in der Zahlungs-App ab\n4. Kehren Sie zurück, um das Ergebnis zu überprüfen', 'alipayPayWithAmount': 'Alipay ¥@amount',
'startingWechatPayment': 'WeChat Pay wird gestartet...', 'paymentStatusTitle': 'Zahlungsstatus',
'startingAlipayPayment': 'Alipay wird gestartet...', 'errorInfoWithMessage': 'Fehler: @message',
'wechatPaymentSuccess': 'WeChat Pay-Zahlung erfolgreich!', 'retest': 'Erneut testen',
'wechatPaymentFailed': 'WeChat Pay-Zahlung fehlgeschlagen', 'paymentTestInstructionsTitle': 'Anleitung',
'wechatPaymentLaunchFailed': 'WeChat Pay konnte nicht gestartet werden', 'paymentTestInstructionsContent':
'cannotLaunchWechatPayment': 'WeChat Pay kann nicht gestartet werden', '1. Wählen Sie einen Testbetrag (empfohlen: ¥0,01)\n2. Klicken Sie auf die Zahlungsschaltfläche, um zu starten\n3. Schließen Sie die Zahlung in der Zahlungs-App ab\n4. Kehren Sie zurück, um das Ergebnis zu überprüfen',
'wechatPaymentException': 'WeChat Pay-Ausnahme', 'startingWechatPayment': 'WeChat Pay wird gestartet...',
'wechatPaymentTestCompleted': 'WeChat Pay-Zahlungstest abgeschlossen', 'startingAlipayPayment': 'Alipay wird gestartet...',
'alipayPaymentSuccess': 'Alipay-Zahlung erfolgreich!', 'wechatPaymentSuccess': 'WeChat Pay-Zahlung erfolgreich!',
'alipayPaymentFailed': 'Alipay-Zahlung fehlgeschlagen', 'wechatPaymentFailed': 'WeChat Pay-Zahlung fehlgeschlagen',
'alipayPaymentLaunchFailed': 'Alipay konnte nicht gestartet werden', 'wechatPaymentLaunchFailed': 'WeChat Pay konnte nicht gestartet werden',
'cannotLaunchAlipayPayment': 'Alipay kann nicht gestartet werden', 'cannotLaunchWechatPayment': 'WeChat Pay kann nicht gestartet werden',
'alipayPaymentException': 'Alipay-Ausnahme', 'wechatPaymentException': 'WeChat Pay-Ausnahme',
"insufficientIntegral": "Insufficient integral", 'wechatPaymentTestCompleted': 'WeChat Pay-Zahlungstest abgeschlossen',
'alipayPaymentSuccess': 'Alipay-Zahlung erfolgreich!',
'alipayPaymentFailed': 'Alipay-Zahlung fehlgeschlagen',
'alipayPaymentLaunchFailed': 'Alipay konnte nicht gestartet werden',
'cannotLaunchAlipayPayment': 'Alipay kann nicht gestartet werden',
'alipayPaymentException': 'Alipay-Ausnahme',
"insufficientIntegral": "Nicht genügend Punkte",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Unzureichendes Guthaben, bitte gehen Sie zur entsprechenden Aufladeseite, um aufzuladen.',
"recharge": 'Go to Recharge', "recharge": 'Aufladen',
"aiMemberExpiredDesc": "aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.', 'Die KI-Mitgliedschaft ist abgelaufen, bitte gehen Sie zur Mitgliedschafts-Aufladeseite, um zu verlängern.',
// 商品模块 - AI商品页 // 商品模块 - AI商品页
'musicAndRecommendation': 'Musik & Empfehlung', 'musicAndRecommendation': 'Musik & Empfehlung',
@ -314,26 +343,28 @@ const Map<String, String> deDE = {
'newsInformation': 'Nachrichten', 'newsInformation': 'Nachrichten',
'communicationAssistant': 'Kommunikationsassistent', 'communicationAssistant': 'Kommunikationsassistent',
'aiHeaderDesc1': 'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.', 'Längeres Gesprächskontingent, mehr Tool-Aufrufe, längerer Kontext.',
'aiHeaderDesc2': 'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.', 'Geeignet für Agent-Q&A, Zusammenfassungen, Analysen und Aufgaben.',
'musicSearchPlaybackControl': 'Music library search and playback control', 'musicSearchPlaybackControl':
'Musikbibliothek durchsuchen und Wiedergabe steuern',
'smartPlaylistAndSimilarRecommendations': 'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations', 'Smarte Playlists und Empfehlungen ähnlicher Songs',
'routePlanningAndCongestionAvoidance': 'routePlanningAndCongestionAvoidance': 'Routenplanung und Stauvermeidung',
'Route planning and congestion avoidance', 'voiceBroadcastAndWaypoints': 'Sprachansagen und Zwischenziele',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', 'realTimeWeatherForecast': 'Echtzeit-Wetter und Vorhersage',
'realTimeWeatherForecast': 'Real-time weather and forecast', 'clothingAdviceAndTravelReminders': 'Kleidungstipps und Reisehinweise',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', 'poiSearchFoodGasParking': 'POI-Suche: Essen / Tanken / Parken',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking', 'ratingsHoursAndDirectRoutes':
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', 'Bewertungen, Öffnungszeiten und direkte Routen',
'hotNewsAndTopicOverview': 'Hot news and topic overview', 'hotNewsAndTopicOverview': 'Top-Nachrichten und Themenübersicht',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', 'longArticleSummariesAndKeyPoints':
'helpCallAndSMS': 'Help with calls and SMS', 'Zusammenfassungen langer Artikel und Kernpunkte',
'helpCallAndSMS': 'Hilfe bei Anrufen und SMS',
'templatedMessagesAndScheduleReminders': 'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders', 'Vorlagen-Nachrichten und Termin-Erinnerungen',
'aiDisclaimer': 'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.', 'Funktionen hängen von Geräteberechtigungen, Dienstverfügbarkeit und Netzwerkbedingungen ab.',
// 商品模块 - 翻译商品页 // 商品模块 - 翻译商品页
'realtimeTranscription': 'Echtzeit-Transkription', 'realtimeTranscription': 'Echtzeit-Transkription',
@ -363,16 +394,16 @@ const Map<String, String> deDE = {
'Audio recording, transcription, keyword search, and auto summary.', 'Audio recording, transcription, keyword search, and auto summary.',
'meetingHeaderDesc2': 'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.', 'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation', 'meetingAutoRecording': 'Automatische Aufnahme und Segmentierung',
'meetingSpeakerTagging': 'Speaker labeling', 'meetingSpeakerTagging': 'Sprecherkennzeichnung',
'meetingLongAudioTranscription': 'Long audio transcription', 'meetingLongAudioTranscription': 'Transkription langer Audios',
'meetingKeyPointSummary': 'Key point extraction', 'meetingKeyPointSummary': 'Kernpunkte extrahieren',
'meetingTopicNameSearch': 'Search by topic/name', 'meetingTopicNameSearch': 'Suche nach Thema/Name',
'meetingTimelineJump': 'Timeline jump', 'meetingTimelineJump': 'Sprung in der Timeline',
'meetingExportSummary': 'Export minutes', 'meetingExportSummary': 'Protokoll exportieren',
'meetingMultiPlatformShare': 'Share across platforms', 'meetingMultiPlatformShare': 'Plattformübergreifend teilen',
'meetingDisclaimer': 'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.', 'In ruhiger Umgebung verwenden; Leistung hängt von Mikrofon und Netzwerk ab.',
// 商品模块 - VIP会员页 // 商品模块 - VIP会员页
'benefitsOverview': 'Übersicht der Vorteile', 'benefitsOverview': 'Übersicht der Vorteile',
@ -548,21 +579,22 @@ const Map<String, String> deDE = {
'selectSummaryTemplate': 'Zusammenfassungsvorlage auswählen', 'selectSummaryTemplate': 'Zusammenfassungsvorlage auswählen',
'useThisTemplate': 'Diese Vorlage verwenden', 'useThisTemplate': 'Diese Vorlage verwenden',
'lastUsed': 'Zuletzt verwendet', 'lastUsed': 'Zuletzt verwendet',
'create': 'Erstellen', 'create': 'Erstellen',
'templateDetails': 'Vorlagendetails', 'templateDetails': 'Vorlagendetails',
'tag': 'Schlagwort', 'tag': 'Schlagwort',
'description': 'Beschreibung', 'description': 'Beschreibung',
'template': 'Vorlage', 'template': 'Vorlage',
'deleteTemplate': 'Vorlage löschen', 'deleteTemplate': 'Vorlage löschen',
'deleteTemplateConfirm': 'Möchten Sie diese Vorlage wirklich löschen?', 'deleteTemplateConfirm': 'Möchten Sie diese Vorlage wirklich löschen?',
'editTemplate': 'Vorlage bearbeiten', 'editTemplate': 'Vorlage bearbeiten',
'createTemplate': 'Vorlage erstellen', 'createTemplate': 'Vorlage erstellen',
'name': 'Name', 'name': 'Name',
'templateContentHint': 'Bitte geben Sie den Vorlageninhalt ein! Tipp: Klicken Sie oben auf die KI-Schaltfläche, um schnell Vorlageninhalt basierend auf dem eingegebenen Namen und der Beschreibung zu generieren', 'templateContentHint':
'inputNameHint': 'Bitte Namen eingeben', 'Bitte geben Sie den Vorlageninhalt ein! Tipp: Klicken Sie oben auf die KI-Schaltfläche, um schnell Vorlageninhalt basierend auf dem eingegebenen Namen und der Beschreibung zu generieren',
'inputDescHint': 'Bitte Beschreibung eingeben', 'inputNameHint': 'Bitte Namen eingeben',
'custom': 'Benutzerdefiniert', 'inputDescHint': 'Bitte Beschreibung eingeben',
'pleaseEnter': 'Bitte eingeben', 'custom': 'Benutzerdefiniert',
'pleaseEnter': 'Bitte eingeben',
'viewAll': 'Alle anzeigen', 'viewAll': 'Alle anzeigen',
'recordingLanguage': 'Aufnahmesprache', 'recordingLanguage': 'Aufnahmesprache',
'chineseSimplified': 'Chinesisch (Vereinfacht)', 'chineseSimplified': 'Chinesisch (Vereinfacht)',
@ -586,7 +618,7 @@ const Map<String, String> deDE = {
'Dateiverarbeitung fehlgeschlagen: {filePath}, Fehler: {error}', 'Dateiverarbeitung fehlgeschlagen: {filePath}, Fehler: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Mindmap speichern', 'saveMindMap': 'Mindmap speichern',
'shareMindMap': 'Mindmap teilen', 'shareMindMap': 'Mindmap teilen',
'shareSuccess': 'Teilen erfolgreich', 'shareSuccess': 'Teilen erfolgreich',
@ -608,7 +640,7 @@ const Map<String, String> deDE = {
'exportSummary': 'Zusammenfassung exportieren', 'exportSummary': 'Zusammenfassung exportieren',
'exportAs': 'Exportieren als', 'exportAs': 'Exportieren als',
'exportingPDF': 'Exportiere PDF...', 'exportingPDF': 'Exportiere PDF...',
'export': 'Exportieren', 'export': 'Exportieren',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Auf alle Absätze dieses Sprechers anwenden', 'applyToAllParagraphs': 'Auf alle Absätze dieses Sprechers anwenden',
@ -720,18 +752,21 @@ const Map<String, String> deDE = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unbekannte Sprache', 'meetingUnknownLanguage': 'Unbekannte Sprache',
'analysisFailed': 'Analyse fehlgeschlagen, bitte versuchen Sie es später erneut', 'analysisFailed':
'transcriptionFailed': 'Transkription fehlgeschlagen, bitte versuchen Sie es später erneut', 'Analyse fehlgeschlagen, bitte versuchen Sie es später erneut',
'summaryFailed': 'Zusammenfassung fehlgeschlagen, bitte versuchen Sie es später erneut', 'transcriptionFailed':
'summaryFailedShort': 'Zusammenfassung fehlgeschlagen', 'Transkription fehlgeschlagen, bitte versuchen Sie es später erneut',
'transcriptionFailedShort': 'Transkription fehlgeschlagen', 'summaryFailed':
'Zusammenfassung fehlgeschlagen, bitte versuchen Sie es später erneut',
'summaryFailedShort': 'Zusammenfassung fehlgeschlagen',
'transcriptionFailedShort': 'Transkription fehlgeschlagen',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Audioplayer ist nicht bereit, bitte warten', 'playerNotReady': 'Audioplayer ist nicht bereit, bitte warten',
'playFailed': 'Wiedergabe fehlgeschlagen', 'playFailed': 'Wiedergabe fehlgeschlagen',
'audioFileNotFound': 'Audiodatei nicht gefunden', 'audioFileNotFound': 'Audiodatei nicht gefunden',
'fetchingAudio': 'Audio wird aus der Cloud abgerufen...', 'fetchingAudio': 'Audio wird aus der Cloud abgerufen...',
'playerLoadFailed': 'Audioplayer konnte nicht geladen werden', 'playerLoadFailed': 'Audioplayer konnte nicht geladen werden',
// 设置页 // 设置页
"systemSettings": "Systemeinstellungen", "systemSettings": "Systemeinstellungen",
@ -743,7 +778,7 @@ const Map<String, String> deDE = {
"memberService": "Member Service", "memberService": "Member Service",
"bindRewardTitle": "Rewards", "bindRewardTitle": "Rewards",
"bindRewardSimpleDesc": "bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.", "Die Prämie für die erste Gerätebindung wurde ausgegeben. Tippen Sie auf OK, um zu schließen.",
"joinDevice": "Verbundenes Gerät:", "joinDevice": "Verbundenes Gerät:",
"accountId": "Konto-ID:", "accountId": "Konto-ID:",
"systemSetting": "Systemeinstellungen", "systemSetting": "Systemeinstellungen",
@ -839,7 +874,8 @@ const Map<String, String> deDE = {
"swipeUpForMore": "Nach oben wischen für mehr", "swipeUpForMore": "Nach oben wischen für mehr",
"callingTool": "Ich helfe Ihnen, bitte warten!", // 正在帮您,请稍等! "callingTool": "Ich helfe Ihnen, bitte warten!", // 正在帮您,请稍等!
"voice_interrupt": "Unterbrechen", // 语音打断 "voice_interrupt": "Unterbrechen", // 语音打断
'voice_interrupt_tip': 'Wenn aktiviert: Die KI wird nicht durch Ihre Stimme unterbrochen, während sie spricht, und kann nur eine Gesprächsrunde gleichzeitig bearbeiten. Um eine neue Runde zu starten, sagen Sie einfach das Aktivierungswort.', 'voice_interrupt_tip':
'Wenn aktiviert: Die KI wird nicht durch Ihre Stimme unterbrochen, während sie spricht, und kann nur eine Gesprächsrunde gleichzeitig bearbeiten. Um eine neue Runde zu starten, sagen Sie einfach das Aktivierungswort.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Musik abspielen", // 来点音乐 "presetMusic": "Musik abspielen", // 来点音乐
@ -897,6 +933,13 @@ const Map<String, String> deDE = {
'Wir möchten den Grund für Ihre Meldung wissen, Sie können das Problem beschreiben, das Sie erlebt haben.', 'Wir möchten den Grund für Ihre Meldung wissen, Sie können das Problem beschreiben, das Sie erlebt haben.',
'generatedByAi': 'Von KI generiert', 'generatedByAi': 'Von KI generiert',
// Agent模块 - 工具调用
'toolCall': 'Werkzeugaufruf',
'noResult': 'Kein Ergebnis',
'noToolCallContentToCopy': 'Kein Werkzeugaufruf-Inhalt zum Kopieren',
'toolCallDetails': 'Werkzeugaufruf-Details:',
'toolCallContentCopied': 'Werkzeugaufruf-Inhalt in Zwischenablage kopiert',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Hier sind einige empfohlene Musik:', 'recommendedMusic': 'Hier sind einige empfohlene Musik:',
'playList': 'Wiedergabeliste', 'playList': 'Wiedergabeliste',
@ -917,6 +960,30 @@ const Map<String, String> deDE = {
"bicycling": "Radfahren", "bicycling": "Radfahren",
"tsransit": "ÖPNV", "tsransit": "ÖPNV",
// Agent模块 - 导航选择
'selectNavigationApp': 'Navigations-App waehlen',
'amapMap': 'Amap',
'useAmapNavigation': 'Mit Amap navigieren',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Mit Baidu Maps navigieren',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Mit Google Maps navigieren',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Mit Apple Maps navigieren',
'builtInNavigation': 'Integrierte Navigation',
'useBuiltInNavigation': 'Mit integrierter Karte navigieren',
'navigationStartFailed': 'Navigation konnte nicht gestartet werden',
'cannotPlayMusicListRetryLater':
'Musikliste kann nicht abgespielt werden, bitte spaeter erneut versuchen',
'cannotPlaySong': 'Lied kann nicht abgespielt werden',
'openMapError': 'Fehler beim Oeffnen der Karte',
'pleaseInstallAmapApp': 'Bitte installieren Sie zuerst die Amap-App',
'pleaseInstallBaiduMapApp':
'Bitte installieren Sie zuerst die Baidu Maps-App',
'appleMapStartFailed': 'Apple Maps konnte nicht gestartet werden',
'appleMapUnavailable': 'Apple Maps nicht verfuegbar',
'openAppleMapError': 'Fehler beim Oeffnen von Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Wetterabfrage:', 'weatherQuery': 'Wetterabfrage:',
'highest': 'Höchste', 'highest': 'Höchste',
@ -989,8 +1056,20 @@ const Map<String, String> deDE = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Spracherkennung fehlgeschlagen", "languageDetectionFailed": "Spracherkennung fehlgeschlagen",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Schwebendes Fenster deaktivieren',
'enableFloatingWindow': 'Schwebendes Fenster aktivieren',
'permissionTip': 'Berechtigungshinweis',
'micPermissionRequiredForRecording':
'Mikrofonberechtigung fuer Aufnahme erforderlich',
'deleteTranslationRecordError':
'Fehler beim Loeschen des Uebersetzungsdatensatzes: @error',
"translationFailed": "Übersetzung fehlgeschlagen", "translationFailed": "Übersetzung fehlgeschlagen",
"translating": "Wird uebersetzt",
"translate": "Uebersetzen",
"pleaseInputText": "Bitte Text eingeben", "pleaseInputText": "Bitte Text eingeben",
"inputTextToTranslate": "Bitte geben Sie den zu übersetzenden Text ein",
"textTooLong": "Text zu lang, max. 5000 Zeichen", "textTooLong": "Text zu lang, max. 5000 Zeichen",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1365,17 +1444,18 @@ const Map<String, String> deDE = {
'bleConnectionFailed': 'BLE-Verbindung fehlgeschlagen', 'bleConnectionFailed': 'BLE-Verbindung fehlgeschlagen',
'deviceAuthorizationFailedCheckCode': 'deviceAuthorizationFailedCheckCode':
'Geräteautorisierung fehlgeschlagen, bitte überprüfen Sie den Autorisierungscode', 'Geräteautorisierung fehlgeschlagen, bitte überprüfen Sie den Autorisierungscode',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideTitle':
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'Manuelle Bluetooth-Aktivierung erforderlich', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Bitte folgen Sie diesen Schritten:', // 请按照以下步骤操作:
'bluetoothGuideStep1': 'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 'Bluetooth aktivieren: Einstellungen → Bluetooth → Einschalten', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2': 'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 'Gerät verbinden: Finden Sie Ihr Gerät unter „Meine Geräte“ und tippen Sie zum Verbinden', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3': 'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程 'Zur App zurückkehren, um den Kopplungsvorgang fortzusetzen', // 返回应用继续配对流程
'bluetoothGuideTip': 'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'Tipp: Sie können das Bluetooth-Symbol im Kontrollzentrum auch lange drücken, um schnell zu den Bluetooth-Einstellungen zu gelangen', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了 'iKnow': 'Verstanden', // 我知道了
// 配对模块 - 绑定奖励 // 配对模块 - 绑定奖励
"firstBindRewardTitle": "Willkommensbonus", "firstBindRewardTitle": "Willkommensbonus",
@ -1416,13 +1496,14 @@ const Map<String, String> deDE = {
"connectionFailed": "Verbindung fehlgeschlagen", "connectionFailed": "Verbindung fehlgeschlagen",
"retryConnection": "Verbindung wiederholen", "retryConnection": "Verbindung wiederholen",
"ota_updateNow": "Jetzt aktualisieren", "ota_updateNow": "Jetzt aktualisieren",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.", "otaVersionInfoFailed":
"Versioninformationen konnten nicht abgerufen werden. Bitte versuchen Sie es später erneut.",
"otaDeviceInfoUnavailable": "otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.", "Geräteinformationen konnten nicht abgerufen werden. Bitte prüfen Sie die Verbindung und versuchen Sie es erneut.",
"otaProductInfoUnavailable": "otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.", "Das Gerät konnte nicht erkannt werden. Bitte verbinden Sie es erneut und versuchen Sie es erneut.",
"otaFirmwareVersionInvalid": "otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.", "Die Firmware-Version ist ungültig. Bitte verbinden Sie das Gerät erneut und versuchen Sie es erneut.",
"keepConnectedDontClose": "keepConnectedDontClose":
"Bitte halten Sie das Gerät verbunden, schließen Sie die App nicht", "Bitte halten Sie das Gerät verbunden, schließen Sie die App nicht",
"doNotDisconnect": "Nicht trennen", "doNotDisconnect": "Nicht trennen",
@ -1431,6 +1512,61 @@ const Map<String, String> deDE = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Entfernen Sie beide Ohrhörer und stellen Sie sicher, dass der Batteriestand über 20% liegt", "Entfernen Sie beide Ohrhörer und stellen Sie sicher, dass der Batteriestand über 20% liegt",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Neue Version @version gefunden',
'otaConfirmUpdateNow': 'Jetzt aktualisieren?',
'otaUpdate': 'Aktualisieren',
'otaUpgradeSuccess': 'Upgrade erfolgreich',
'otaUpgradeCompleteRepair':
'Firmware-Upgrade abgeschlossen!\n\nDas Geraet muss neu gekoppelt werden. Zur Kopplungsseite wechseln?',
'otaPairLater': 'Spaeter koppeln',
'otaPairNow': 'Jetzt koppeln',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Fehler bei der BLE-Verbindungspruefung: @error',
'otaBleNotConnected': 'BLE-Geraet nicht verbunden',
'otaBleNeedConnection':
'Firmware-Upgrade erfordert BLE-Verbindung\nBitte Geraet verbinden und erneut versuchen',
'otaDeviceInfoUnavailableTitle': 'Geraeteinformationen nicht verfuegbar',
'otaCannotGetDeviceInfo':
'Geräteinformationen konnten nicht abgerufen werden\nBitte verbinden Sie das Gerät erneut oder versuchen Sie es später erneut',
'otaBleCheckFailed': 'BLE-Verbindungspruefung fehlgeschlagen',
'otaCannotGetDeviceInfoCheckConnection':
'Geraeteinformationen nicht verfuegbar, bitte Verbindung pruefen',
'otaCannotGetProductInfoWithName':
'Produktinformationen nicht verfuegbar, Geraetename: @deviceName',
'otaCannotGetBatteryInfo': 'Keine gueltigen Batterieinformationen verfuegbar',
'otaLowBattery': 'Niedriger Akkustand',
'otaSingleBatteryLow':
'Akku zu schwach fuer Firmware-Upgrade\nAnforderung: Akku ueber 20%\nAktuell: @ear @battery%\nBitte laden und erneut versuchen',
'otaDoubleBatteryLow':
'Akku zu schwach fuer Firmware-Upgrade\nAnforderung: Beide Ohrhoerer ueber 20%\nAktuell: Links @left%, Rechts @right%\nBitte laden und erneut versuchen',
'otaBatteryCheckFailed': 'Batteriepruefung fehlgeschlagen',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Dieses Update enthaelt Leistungsoptimierungen und Fehlerbehebungen.',
'otaGetLatestVersionFailed':
'Neueste Versionsinformationen konnten nicht abgerufen werden',
'otaGetVersionInfoFailed':
'Versionsinformationen konnten nicht abgerufen werden',
'otaCheckingDeviceStatus': 'Geraetestatus wird geprueft...',
'otaDownloadFailedCheckNetwork':
'Download fehlgeschlagen, bitte Netzwerkverbindung pruefen',
'otaDownloadFailed': 'Download fehlgeschlagen',
'otaPreparingConnection': 'Geraeteverbindung wird vorbereitet...',
'otaConnectingDevice': 'Verbindung zum Geraet wird hergestellt...',
'otaUpgradeStarted': 'OTA-Upgrade gestartet...',
'otaUpgradeProgressWithPercent': 'Upgrade-Fortschritt: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade erfolgreich abgeschlossen',
'otaUpgradeFailedWithCode': 'Upgrade fehlgeschlagen, Fehlercode: @code',
'otaUpgradeFailedTitle': 'Upgrade fehlgeschlagen',
'otaUpgradeFailedDesc':
'Bitte Geraeteverbindung oder Update-Paket pruefen, Fehlercode: @code',
'otaDeviceDisconnected': 'Geraet getrennt',
'otaDeviceConnected': 'Geraet verbunden',
// 音乐模块 // 音乐模块
"noMusic": "Keine Musik", // 暂无音乐 "noMusic": "Keine Musik", // 暂无音乐
"noPlayingMusic": "Keine Musik wird abgespielt", // 暂无播放音乐 "noPlayingMusic": "Keine Musik wird abgespielt", // 暂无播放音乐

663
lib/core/translations/language/el_gr.dart

@ -1,5 +1,4 @@
const Map<String, String> elGR = { const Map<String, String> elGR = {
// 通用 // 通用
'continue': 'Συνέχεια', 'continue': 'Συνέχεια',
'confirm': 'Επιβεβαίωση', 'confirm': 'Επιβεβαίωση',
@ -19,11 +18,11 @@ const Map<String, String> elGR = {
"unknownError": "Άγνωστο σφάλμα", "unknownError": "Άγνωστο σφάλμα",
"asrConnectionFailed": "asrConnectionFailed":
"Η σύνδεση με την υπηρεσία αναγνώρισης ομιλίας απέτυχε. Ελέγξτε το δίκτυο ή δοκιμάστε ξανά αργότερα.", "Η σύνδεση με την υπηρεσία αναγνώρισης ομιλίας απέτυχε. Ελέγξτε το δίκτυο ή δοκιμάστε ξανά αργότερα.",
"justNow": "Just now", "justNow": "Μόλις τώρα",
"minutesAgo": "@minutes minutes ago", "minutesAgo": "Πριν @minutes λεπτά",
"yesterday": "Yesterday", "yesterday": "Χθες",
"daysAgo": "@days days ago", "daysAgo": "Πριν @days ημέρες",
"hoursAgo": "@hours hours ago", "hoursAgo": "Πριν @hours ώρες",
// 启动页 // 启动页
"slogan": "Συνδέοντας τον κόσμο, πέρα από τον ήχο", "slogan": "Συνδέοντας τον κόσμο, πέρα από τον ήχο",
@ -168,6 +167,29 @@ const Map<String, String> elGR = {
'right': 'Δεξιά', 'right': 'Δεξιά',
'checkConnectionStatusFailed': 'Αποτυχία ελέγχου κατάστασης σύνδεσης', 'checkConnectionStatusFailed': 'Αποτυχία ελέγχου κατάστασης σύνδεσης',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Αποτυχία αρχικοποίησης Bluetooth: @error',
'needBluetoothAndLocationPermission':
'Απαιτούνται δικαιώματα Bluetooth και τοποθεσίας για σάρωση συσκευών',
'permissionRequestFailedWithError': 'Αποτυχία αιτήματος δικαιώματος: @error',
'needPermission': 'Απαιτείται δικαίωμα',
'blePermissionDialogContent':
'Αυτή η εφαρμογή χρειάζεται δικαιώματα Bluetooth και τοποθεσίας για σάρωση συσκευών. Ενεργοποιήστε τα στις Ρυθμίσεις.',
'needEnableBluetooth': 'Ενεργοποίηση Bluetooth',
'enableBluetoothDialogContent':
'Ενεργοποιήστε το Bluetooth για σάρωση και σύνδεση συσκευών.',
'bleScanFailedWithError': 'Αποτυχία σάρωσης: @error',
'bleConnectionSuccess': 'Επιτυχής σύνδεση',
'bleConnectedToDevice': 'Συνδέθηκε με @device',
'bleConnectionFailedWithError': 'Αποτυχία σύνδεσης: @error',
'bleDisconnected': 'Αποσυνδέθηκε',
'bleDeviceDisconnected': 'Η συσκευή αποσυνδέθηκε',
'bleDisconnectFailedWithError': 'Αποτυχία αποσύνδεσης: @error',
'signalStrong': 'Δυνατό',
'signalMedium': 'Μέτριο',
'signalWeak': 'Αδύναμο',
'signalVeryWeak': 'Πολύ αδύναμο',
// 发现页 // 发现页
"searchAi": "Αναζήτηση λειτουργιών AI...", "searchAi": "Αναζήτηση λειτουργιών AI...",
"exploreSlogan": "Έξυπνα ακουστικά, απεριόριστες δυνατότητες", "exploreSlogan": "Έξυπνα ακουστικά, απεριόριστες δυνατότητες",
@ -194,7 +216,7 @@ const Map<String, String> elGR = {
"scene": "Σενάρια", "scene": "Σενάρια",
// 用量统计模块 // 用量统计模块
"aiChat": "AI Chat", "aiChat": "Συνομιλία AI",
"translationStats": "Στατιστικά Μετάφρασης", "translationStats": "Στατιστικά Μετάφρασης",
"meetingStats": "Στατιστικά Συνάντησης", "meetingStats": "Στατιστικά Συνάντησης",
"today": "Σήμερα", "today": "Σήμερα",
@ -243,66 +265,71 @@ const Map<String, String> elGR = {
'totalQuota': 'Συνολικό όριο', 'totalQuota': 'Συνολικό όριο',
'remaining': 'Υπόλοιπο', 'remaining': 'Υπόλοιπο',
'featureDescription': 'Περιγραφή λειτουργίας', 'featureDescription': 'Περιγραφή λειτουργίας',
'paymentSuccess': 'Πληρωμή επιτυχής', 'paymentSuccess': 'Πληρωμή επιτυχής',
'paymentFailed': 'Αποτυχία πληρωμής', 'paymentFailed': 'Αποτυχία πληρωμής',
'gotIt': 'Κατάλαβα', 'gotIt': 'Κατάλαβα',
'paymentFailedTryAgain': 'Η πληρωμή απέτυχε. Παρακαλώ δοκιμάστε ξανά.', 'paymentFailedTryAgain': 'Η πληρωμή απέτυχε. Παρακαλώ δοκιμάστε ξανά.',
'selectPaymentMethod': 'Επιλέξτε τρόπο πληρωμής', 'selectPaymentMethod': 'Επιλέξτε τρόπο πληρωμής',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας WeChat Pay', 'wechatOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας WeChat Pay',
'alipayOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Alipay', 'alipayOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Alipay',
'appleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Apple', 'appleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Apple',
'googleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Google', 'googleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Google',
'paypalOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας PayPal', 'paypalOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας PayPal',
'paymentException': 'Εξαίρεση πληρωμής', 'paymentException': 'Εξαίρεση πληρωμής',
'paymentLaunchFailed': 'Αποτυχία εκκίνησης πληρωμής', 'paymentLaunchFailed': 'Αποτυχία εκκίνησης πληρωμής',
'paymentExceptionWithError': 'Εξαίρεση πληρωμής: @error', 'paymentExceptionWithError': 'Εξαίρεση πληρωμής: @error',
'paymentProcessingCheckLater': 'Η παραγγελία σας επεξεργάζεται. Παρακαλώ ελέγξτε αργότερα.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Αποτυχία αναζήτησης αποτελέσματος πληρωμής: @error', 'Η παραγγελία σας επεξεργάζεται. Παρακαλώ ελέγξτε αργότερα.',
'orderConfirmedQuotaRefreshed': 'Η παραγγελία επιβεβαιώθηκε. Το όριό σας ανανεώθηκε.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Η πληρωμή ολοκληρώθηκε. Επιβεβαίωση…', 'Αποτυχία αναζήτησης αποτελέσματος πληρωμής: @error',
'paymentCancelled': 'Η πληρωμή ακυρώθηκε', 'orderConfirmedQuotaRefreshed':
'paypalOpenedCompleteInBrowser': 'Το PayPal άνοιξε. Παρακαλώ ολοκληρώστε την πληρωμή στο πρόγραμμα περιήγησής σας.', 'Η παραγγελία επιβεβαιώθηκε. Το όριό σας ανανεώθηκε.',
'paypalOpenFailed': 'Αδυναμία ανοίγματος σελίδας πληρωμής PayPal', 'paymentCompletedConfirming': 'Η πληρωμή ολοκληρώθηκε. Επιβεβαίωση…',
'paymentTestTitle': 'Δοκιμή Πληρωμής', 'paymentCancelled': 'Η πληρωμή ακυρώθηκε',
'paymentTestOrderInfo': 'Πληροφορίες Δοκιμαστικής Παραγγελίας', 'paypalOpenedCompleteInBrowser':
'paymentTestProductId': 'Αναγνωριστικό Προϊόντος', 'Το PayPal άνοιξε. Παρακαλώ ολοκληρώστε την πληρωμή στο πρόγραμμα περιήγησής σας.',
'paymentTestProductDescription': 'Περιγραφή προϊόντος', 'paypalOpenFailed': 'Αδυναμία ανοίγματος σελίδας πληρωμής PayPal',
'paymentTestWechatDescription': 'Δοκιμή πληρωμής WeChat Pay', 'paymentTestTitle': 'Δοκιμή Πληρωμής',
'paymentTestAlipayDescription': 'Δοκιμή πληρωμής Alipay', 'paymentTestOrderInfo': 'Πληροφορίες Δοκιμαστικής Παραγγελίας',
'paymentTestAmount': 'Ποσό', 'paymentTestProductId': 'Αναγνωριστικό Προϊόντος',
'paymentTestSelectAmount': 'Επιλέξτε ποσό δοκιμής', 'paymentTestProductDescription': 'Περιγραφή προϊόντος',
'paying': 'Πληρωμή...', 'paymentTestWechatDescription': 'Δοκιμή πληρωμής WeChat Pay',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAlipayDescription': 'Δοκιμή πληρωμής Alipay',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAmount': 'Ποσό',
'paymentStatusTitle': 'Κατάσταση πληρωμής', 'paymentTestSelectAmount': 'Επιλέξτε ποσό δοκιμής',
'errorInfoWithMessage': 'Σφάλμα: @message', 'paying': 'Πληρωμή...',
'retest': 'Επανέλεγχος', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsTitle': 'Οδηγίες', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsContent': '1. Επιλέξτε ένα ποσό δοκιμής (προτεινόμενο: ¥0,01)\n2. Κάντε κλικ στο κουμπί πληρωμής για να ξεκινήσετε\n3. Ολοκληρώστε την πληρωμή στην εφαρμογή πληρωμής\n4. Επιστρέψτε για να ελέγξετε το αποτέλεσμα', 'paymentStatusTitle': 'Κατάσταση πληρωμής',
'startingWechatPayment': 'Εκκίνηση WeChat Pay...', 'errorInfoWithMessage': 'Σφάλμα: @message',
'startingAlipayPayment': 'Εκκίνηση Alipay...', 'retest': 'Επανέλεγχος',
'wechatPaymentSuccess': 'WeChat Pay επιτυχής!', 'paymentTestInstructionsTitle': 'Οδηγίες',
'wechatPaymentFailed': 'Αποτυχία WeChat Pay', 'paymentTestInstructionsContent':
'wechatPaymentLaunchFailed': 'Αποτυχία εκκίνησης WeChat Pay', '1. Επιλέξτε ένα ποσό δοκιμής (προτεινόμενο: ¥0,01)\n2. Κάντε κλικ στο κουμπί πληρωμής για να ξεκινήσετε\n3. Ολοκληρώστε την πληρωμή στην εφαρμογή πληρωμής\n4. Επιστρέψτε για να ελέγξετε το αποτέλεσμα',
'cannotLaunchWechatPayment': 'Αδυναμία εκκίνησης WeChat Pay', 'startingWechatPayment': 'Εκκίνηση WeChat Pay...',
'wechatPaymentException': 'Εξαίρεση WeChat Pay', 'startingAlipayPayment': 'Εκκίνηση Alipay...',
'wechatPaymentTestCompleted': 'Η δοκιμή WeChat Pay ολοκληρώθηκε', 'wechatPaymentSuccess': 'WeChat Pay επιτυχής!',
'alipayPaymentSuccess': 'Alipay επιτυχής!', 'wechatPaymentFailed': 'Αποτυχία WeChat Pay',
'alipayPaymentFailed': 'Αποτυχία Alipay', 'wechatPaymentLaunchFailed': 'Αποτυχία εκκίνησης WeChat Pay',
'alipayPaymentLaunchFailed': 'Αποτυχία εκκίνησης Alipay', 'cannotLaunchWechatPayment': 'Αδυναμία εκκίνησης WeChat Pay',
'cannotLaunchAlipayPayment': 'Αδυναμία εκκίνησης Alipay', 'wechatPaymentException': 'Εξαίρεση WeChat Pay',
'alipayPaymentException': 'Εξαίρεση Alipay', 'wechatPaymentTestCompleted': 'Η δοκιμή WeChat Pay ολοκληρώθηκε',
"insufficientIntegral": "Insufficient integral", 'alipayPaymentSuccess': 'Alipay επιτυχής!',
'alipayPaymentFailed': 'Αποτυχία Alipay',
'alipayPaymentLaunchFailed': 'Αποτυχία εκκίνησης Alipay',
'cannotLaunchAlipayPayment': 'Αδυναμία εκκίνησης Alipay',
'alipayPaymentException': 'Εξαίρεση Alipay',
"insufficientIntegral": "Ανεπαρκείς πόντοι",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Ανεπαρκές υπόλοιπο, μεταβείτε στη σελίδα φόρτισης για ανανέωση.',
"recharge": 'Go to Recharge', "recharge": 'Μετάβαση στην ανανέωση',
"aiMemberExpiredDesc": "aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.', 'Η συνδρομή AI έληξε, μεταβείτε στη σελίδα ανανέωσης συνδρομής.',
// 商品模块 - AI商品页 // 商品模块 - AI商品页
'musicAndRecommendation': 'Μουσική & Προτάσεις', 'musicAndRecommendation': 'Μουσική & Προτάσεις',
@ -401,9 +428,9 @@ const Map<String, String> elGR = {
'meet_001_name': 'Meeting Basic 100', 'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500', 'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000', 'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100', 'trans_001_name': 'Μετάφραση Basic 100',
'trans_002_name': 'Translation Basic 500', 'trans_002_name': 'Μετάφραση Basic 500',
'trans_003_name': 'Translation Basic 1000', 'trans_003_name': 'Μετάφραση Basic 1000',
'ai_001_desc': 'ai_001_desc':
'Περιλαμβάνει 100 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', 'Περιλαμβάνει 100 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.',
'ai_002_desc': 'ai_002_desc':
@ -511,16 +538,25 @@ const Map<String, String> elGR = {
'meetingRecordExitMessage': 'Επιλέξτε τι θα κάνετε πριν φύγετε', // 请选择离开后的操作 'meetingRecordExitMessage': 'Επιλέξτε τι θα κάνετε πριν φύγετε', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Τερματισμός και αποθήκευση', // 结束录音并保存 'meetingRecordEndAndSave': 'Τερματισμός και αποθήκευση', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Τερματισμός χωρίς αποθήκευση', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Τερματισμός χωρίς αποθήκευση', // 结束录音不保存
'meetingRecordContinueInBackground': 'Συνέχιση εγγραφής στο παρασκήνιο', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'Έληξε το χρονικό όριο διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音超时,请重试 'Συνέχιση εγγραφής στο παρασκήνιο', // 后台继续录音
'meetingRecordStopFailed': 'Αποτυχία διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Αποτυχία αποθήκευσης της εγγραφής. Δοκιμάστε ξανά.', // 保存录音失败,请重试 'Έληξε το χρονικό όριο διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音超时,请重试
'meetingRecordRecordingNotificationTitle': 'Η εγγραφή είναι σε εξέλιξη', // 录音进行中 'meetingRecordStopFailed':
'meetingRecordRecordingNotificationBody': 'Γίνεται εγγραφή στο παρασκήνιο. Πατήστε για επιστροφή στην εφαρμογή.', // 正在后台录音,点击返回应用 'Αποτυχία διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Αποτυχία αποθήκευσης της εγγραφής. Δοκιμάστε ξανά.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle':
'Η εγγραφή είναι σε εξέλιξη', // 录音进行中
'meetingRecordRecordingNotificationBody':
'Γίνεται εγγραφή στο παρασκήνιο. Πατήστε για επιστροφή στην εφαρμογή.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Εμφάνιση πάνω από άλλες εφαρμογές', // 悬浮窗权限 'overlayPermissionTitle': 'Εμφάνιση πάνω από άλλες εφαρμογές', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Για να εμφανίζουμε τα αποτελέσματα μετάφρασης κατά τη διάρκεια κλήσεων ή μετάφρασης ήχου/βίντεο, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές. Έτσι θα βλέπετε μεταφράσεις σε πραγματικό χρόνο ενώ χρησιμοποιείτε άλλες εφαρμογές.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Για να εμφανίζουμε την αιωρούμενη μπάρα εγγραφής (χρονομετρητής/παύση/συνέχιση) κατά την εγγραφή, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Για να εμφανίζουμε τα αποτελέσματα μετάφρασης κατά τη διάρκεια κλήσεων ή μετάφρασης ήχου/βίντεο, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές. Έτσι θα βλέπετε μεταφράσεις σε πραγματικό χρόνο ενώ χρησιμοποιείτε άλλες εφαρμογές.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Δεν ήταν δυνατή η αυτόματη μετάβαση στις ρυθμίσεις συστήματος. Ανοίξτε τις Ρυθμίσεις και ενεργοποιήστε χειροκίνητα την άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Για να εμφανίζουμε την αιωρούμενη μπάρα εγγραφής (χρονομετρητής/παύση/συνέχιση) κατά την εγγραφή, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Δεν ήταν δυνατή η αυτόματη μετάβαση στις ρυθμίσεις συστήματος. Ανοίξτε τις Ρυθμίσεις και ενεργοποιήστε χειροκίνητα την άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Απομαγνητοφώνηση...', 'transcribing': 'Απομαγνητοφώνηση...',
'summarizing': 'Δημιουργία περίληψης...', 'summarizing': 'Δημιουργία περίληψης...',
'analyzing': 'Ανάλυση...', 'analyzing': 'Ανάλυση...',
@ -545,21 +581,23 @@ const Map<String, String> elGR = {
'selectSummaryTemplate': 'Επιλογή προτύπου περίληψης', 'selectSummaryTemplate': 'Επιλογή προτύπου περίληψης',
'useThisTemplate': 'Χρήση αυτού του προτύπου', 'useThisTemplate': 'Χρήση αυτού του προτύπου',
'lastUsed': 'Τελευταία χρήση', 'lastUsed': 'Τελευταία χρήση',
'create': 'Δημιουργία', 'create': 'Δημιουργία',
'templateDetails': 'Λεπτομέρειες Προτύπου', 'templateDetails': 'Λεπτομέρειες Προτύπου',
'tag': 'Ετικέτα', 'tag': 'Ετικέτα',
'description': 'Περιγραφή', 'description': 'Περιγραφή',
'template': 'Πρότυπο', 'template': 'Πρότυπο',
'deleteTemplate': 'Διαγραφή Προτύπου', 'deleteTemplate': 'Διαγραφή Προτύπου',
'deleteTemplateConfirm': 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το πρότυπο;', 'deleteTemplateConfirm':
'editTemplate': 'Επεξεργασία Προτύπου', 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το πρότυπο;',
'createTemplate': 'Δημιουργία Προτύπου', 'editTemplate': 'Επεξεργασία Προτύπου',
'name': 'Όνομα', 'createTemplate': 'Δημιουργία Προτύπου',
'templateContentHint': 'Παρακαλώ εισάγετε περιεχόμενο προτύπου! Συμβουλή: Κάντε κλικ στο κουμπί AI παραπάνω για γρήγορη δημιουργία περιεχομένου προτύπου βάσει του ονόματος και της περιγραφής που εισάγατε', 'name': 'Όνομα',
'inputNameHint': 'Παρακαλώ εισάγετε όνομα', 'templateContentHint':
'inputDescHint': 'Παρακαλώ εισάγετε περιγραφή', 'Παρακαλώ εισάγετε περιεχόμενο προτύπου! Συμβουλή: Κάντε κλικ στο κουμπί AI παραπάνω για γρήγορη δημιουργία περιεχομένου προτύπου βάσει του ονόματος και της περιγραφής που εισάγατε',
'custom': 'Προσαρμοσμένο', 'inputNameHint': 'Παρακαλώ εισάγετε όνομα',
'pleaseEnter': 'Παρακαλώ εισάγετε', 'inputDescHint': 'Παρακαλώ εισάγετε περιγραφή',
'custom': 'Προσαρμοσμένο',
'pleaseEnter': 'Παρακαλώ εισάγετε',
'viewAll': 'Προβολή όλων', 'viewAll': 'Προβολή όλων',
'recordingLanguage': 'Γλώσσα εγγραφής', 'recordingLanguage': 'Γλώσσα εγγραφής',
'chineseSimplified': 'Κινέζικα (Απλοποιημένα)', 'chineseSimplified': 'Κινέζικα (Απλοποιημένα)',
@ -583,7 +621,7 @@ const Map<String, String> elGR = {
'Αποτυχία επεξεργασίας αρχείου: {filePath}, σφάλμα: {error}', 'Αποτυχία επεξεργασίας αρχείου: {filePath}, σφάλμα: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Αποθήκευση Νοητικού Χάρτη', 'saveMindMap': 'Αποθήκευση Νοητικού Χάρτη',
'shareMindMap': 'Κοινοποίηση χάρτη μυαλού', 'shareMindMap': 'Κοινοποίηση χάρτη μυαλού',
'shareSuccess': 'Επιτυχής κοινοποίηση', 'shareSuccess': 'Επιτυχής κοινοποίηση',
@ -605,7 +643,7 @@ const Map<String, String> elGR = {
'exportSummary': 'Εξαγωγή περίληψης', 'exportSummary': 'Εξαγωγή περίληψης',
'exportAs': 'Εξαγωγή ως', 'exportAs': 'Εξαγωγή ως',
'exportingPDF': 'Εξαγωγή PDF...', 'exportingPDF': 'Εξαγωγή PDF...',
'export': 'Εξαγωγή', 'export': 'Εξαγωγή',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Εφαρμογή σε όλες τις παραγράφους αυτού του ομιλητή', 'applyToAllParagraphs': 'Εφαρμογή σε όλες τις παραγράφους αυτού του ομιλητή',
@ -717,18 +755,20 @@ const Map<String, String> elGR = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Άγνωστη γλώσσα', 'meetingUnknownLanguage': 'Άγνωστη γλώσσα',
'analysisFailed': 'Η ανάλυση απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', 'analysisFailed': 'Η ανάλυση απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα',
'transcriptionFailed': 'Η μεταγραφή απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', 'transcriptionFailed':
'summaryFailed': 'Η σύνοψη απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', 'Η μεταγραφή απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα',
'summaryFailedShort': 'Αποτυχία σύνοψης', 'summaryFailed': 'Η σύνοψη απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα',
'transcriptionFailedShort': 'Αποτυχία μεταγραφής', 'summaryFailedShort': 'Αποτυχία σύνοψης',
'transcriptionFailedShort': 'Αποτυχία μεταγραφής',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Ο αναπαραγωγέας ήχου δεν είναι έτοιμος, παρακαλώ περιμένετε', 'playerNotReady':
'playFailed': 'Αποτυχία αναπαραγωγής', 'Ο αναπαραγωγέας ήχου δεν είναι έτοιμος, παρακαλώ περιμένετε',
'audioFileNotFound': 'Το αρχείο ήχου δεν βρέθηκε', 'playFailed': 'Αποτυχία αναπαραγωγής',
'fetchingAudio': 'Λήψη ήχου από το cloud...', 'audioFileNotFound': 'Το αρχείο ήχου δεν βρέθηκε',
'playerLoadFailed': 'Αποτυχία φόρτωσης αναπαραγωγέα ήχου', 'fetchingAudio': 'Λήψη ήχου από το cloud...',
'playerLoadFailed': 'Αποτυχία φόρτωσης αναπαραγωγέα ήχου',
// 设置页 // 设置页
"systemSettings": "Ρυθμίσεις συστήματος", "systemSettings": "Ρυθμίσεις συστήματος",
@ -737,10 +777,10 @@ const Map<String, String> elGR = {
"translationRecharge": "Περιορέωση μετάφρασης", "translationRecharge": "Περιορέωση μετάφρασης",
"meetingAssistantRecharge": "Περιορέωση βοηθού συνάντησης", "meetingAssistantRecharge": "Περιορέωση βοηθού συνάντησης",
"cloudSync": "Περιορέωση συγχρονισμού στο cloud", "cloudSync": "Περιορέωση συγχρονισμού στο cloud",
"memberService": "Member Service", "memberService": "Υπηρεσία μελών",
"bindRewardTitle": "Rewards", "bindRewardTitle": "Ανταμοιβές",
"bindRewardSimpleDesc": "bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.", "Η ανταμοιβή πρώτης σύνδεσης συσκευής εκδόθηκε. Πατήστε OK για κλείσιμο.",
"joinDevice": "Συνδεδεμένη συσκευή:", "joinDevice": "Συνδεδεμένη συσκευή:",
"accountId": "ID λογαριασμού:", "accountId": "ID λογαριασμού:",
"systemSetting": "Ρυθμίσεις συστήματος", "systemSetting": "Ρυθμίσεις συστήματος",
@ -790,20 +830,20 @@ const Map<String, String> elGR = {
"loading": "Φόρτωση...", "loading": "Φόρτωση...",
// 设备管理模块 // 设备管理模块
"deviceTypeUnknown": "Unknown Device", "deviceTypeUnknown": "Άγνωστη συσκευή",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeClassicBluetoothHeadset": "Κλασικά ακουστικά Bluetooth",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "Ακουστικά BLE Bluetooth",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", "deviceTypeSmartVoiceRecorder": "Έξυπνη συσκευή εγγραφής φωνής",
"deviceTypeSmartEye": "Smart Glasses", "deviceTypeSmartEye": "Έξυπνα γυαλιά",
"unbind": "Αποσύνδεση", "unbind": "Αποσύνδεση",
"noDevicesBound": "No devices bound yet", "noDevicesBound": "Δεν υπάρχουν συνδεδεμένες συσκευές",
"pleaseBindDeviceFirst": "Please bind a device first to manage", "pleaseBindDeviceFirst": "Συνδέστε πρώτα μια συσκευή για διαχείριση",
"noMacAddress": "No MAC Address", "noMacAddress": "Χωρίς διεύθυνση MAC",
"licenseCode": "License Code", "licenseCode": "Κωδικός άδειας",
"confirmUnbind": "Confirm Unbind", "confirmUnbind": "Επιβεβαίωση αποσύνδεσης",
"confirmUnbindMessage": "confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?", "Είστε βέβαιοι ότι θέλετε να αποσυνδέσετε τη συσκευή \"{deviceName}\";",
"confirmUnbindAction": "Confirm Unbind", "confirmUnbindAction": "Επιβεβαίωση αποσύνδεσης",
// Agent模块 - 主界面 // Agent模块 - 主界面
"Lily": "Lily", "Lily": "Lily",
@ -833,21 +873,22 @@ const Map<String, String> elGR = {
"loadMoreMessages": "Φόρτωση περισσότερων μηνυμάτων...", "loadMoreMessages": "Φόρτωση περισσότερων μηνυμάτων...",
"loadFailedClickRetry": "Αποτυχία φόρτωσης, κάντε κλικ για επανάληψη", "loadFailedClickRetry": "Αποτυχία φόρτωσης, κάντε κλικ για επανάληψη",
"swipeUpForMore": "Σύρετε προς τα πάνω για περισσότερα", "swipeUpForMore": "Σύρετε προς τα πάνω για περισσότερα",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "Σας βοηθάω, παρακαλώ περιμένετε!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Διακοπή", // 语音打断
'voice_interrupt_tip': 'Όταν είναι ενεργοποιημένο: Η AI δεν θα διακοπεί από τη φωνή σας κατά τη διάρκεια της ομιλίας και μπορεί να χειριστεί μόνο έναν γύρο συνομιλίας τη φορά. Για να ξεκινήσετε νέο γύρο, απλά πείτε τη λέξη αφύπνισης.', 'voice_interrupt_tip':
'Όταν είναι ενεργοποιημένο: Η AI δεν θα διακοπεί από τη φωνή σας κατά τη διάρκεια της ομιλίας και μπορεί να χειριστεί μόνο έναν γύρο συνομιλίας τη φορά. Για να ξεκινήσετε νέο γύρο, απλά πείτε τη λέξη αφύπνισης.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Παίξε μουσική", // 来点音乐
"presetNavigation": "Navigation to", // 导航 "presetNavigation": "Πλοήγηση σε", // 导航
"presetWeather": "Today's weather", // 今日天气 "presetWeather": "Καιρός σήμερα", // 今日天气
"presetNews": "Today's news", // 今日新闻 "presetNews": "Ειδήσεις σήμερα", // 今日新闻
"presetFood": "Nearby food", // 美食 "presetFood": "Φαγητό κοντά", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐 "playSomeMusic": "Παίξε δημοφιλή μουσική", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到 "navigationTo": "Βοηθήστε με να πλοηγηθώ στο", // 导航到
"todayWeather": "How's the weather today?", // 今日天气 "todayWeather": "Πώς είναι ο καιρός σήμερα;", // 今日天气
"todayNews": "What's the news today?", // 今日新闻 "todayNews": "Ποια είναι τα νέα σήμερα;", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食 "nearbyFood": "Τι νόστιμο φαγητό υπάρχει κοντά;", // 美食
// Agent模块 - 欢迎消息与权限 // Agent模块 - 欢迎消息与权限
'welcomeMessage': 'Γεια σας! Είμαι ο **Lily**, μπορώ να σας βοηθήσω με:\n\n' 'welcomeMessage': 'Γεια σας! Είμαι ο **Lily**, μπορώ να σας βοηθήσω με:\n\n'
@ -893,6 +934,13 @@ const Map<String, String> elGR = {
'Θέλουμε να γνωρίζουμε τον λόγο της αναφοράς σας, μπορείτε να περιγράψετε το πρόβλημα που αντιμετωπίσατε.', 'Θέλουμε να γνωρίζουμε τον λόγο της αναφοράς σας, μπορείτε να περιγράψετε το πρόβλημα που αντιμετωπίσατε.',
'generatedByAi': 'Δημιουργήθηκε από AI', 'generatedByAi': 'Δημιουργήθηκε από AI',
// Agent模块 - 工具调用
'toolCall': 'Κλήση εργαλείου',
'noResult': 'Κανένα αποτέλεσμα',
'noToolCallContentToCopy': 'Δεν υπάρχει περιεχόμενο κλήσης εργαλείου για αντιγραφή',
'toolCallDetails': 'Λεπτομέρειες κλήσης εργαλείου:',
'toolCallContentCopied': 'Το περιεχόμενο κλήσης εργαλείου αντιγράφηκε στο πρόχειρο',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Ορίστε μερικές προτεινόμενες μουσικές:', 'recommendedMusic': 'Ορίστε μερικές προτεινόμενες μουσικές:',
'playList': 'Λίστα αναπαραγωγής', 'playList': 'Λίστα αναπαραγωγής',
@ -913,6 +961,29 @@ const Map<String, String> elGR = {
"bicycling": "Ποδηλασία", "bicycling": "Ποδηλασία",
"tsransit": "Δημόσια συγκοινωνία", "tsransit": "Δημόσια συγκοινωνία",
// Agent模块 - 导航选择
'selectNavigationApp': 'Επιλογή εφαρμογής πλοήγησης',
'amapMap': 'Amap',
'useAmapNavigation': 'Πλοήγηση με Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Πλοήγηση με Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Πλοήγηση με Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Πλοήγηση με Apple Maps',
'builtInNavigation': 'Ενσωματωμένη πλοήγηση',
'useBuiltInNavigation': 'Πλοήγηση με ενσωματωμένο χάρτη',
'navigationStartFailed': 'Αποτυχία εκκίνησης πλοήγησης',
'cannotPlayMusicListRetryLater':
'Δεν είναι δυνατή η αναπαραγωγή της λίστας μουσικής, δοκιμάστε ξανά αργότερα',
'cannotPlaySong': 'Δεν είναι δυνατή η αναπαραγωγή τραγουδιού',
'openMapError': 'Σφάλμα κατά το άνοιγμα του χάρτη',
'pleaseInstallAmapApp': 'Εγκαταστήστε πρώτα την εφαρμογή Amap',
'pleaseInstallBaiduMapApp': 'Εγκαταστήστε πρώτα την εφαρμογή Baidu Maps',
'appleMapStartFailed': 'Αποτυχία εκκίνησης Apple Maps',
'appleMapUnavailable': 'Τα Apple Maps δεν είναι διαθέσιμα',
'openAppleMapError': 'Σφάλμα κατά το άνοιγμα των Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Ερώτημα καιρού:', 'weatherQuery': 'Ερώτημα καιρού:',
'highest': 'Υψηλότερη', 'highest': 'Υψηλότερη',
@ -966,8 +1037,8 @@ const Map<String, String> elGR = {
"strongWind": "Δυνατός άνεμος", "strongWind": "Δυνατός άνεμος",
// 翻译模块 - 中间层 // 翻译模块 - 中间层
"pictureTranslation": "Picture Translation", "pictureTranslation": "Μετάφραση εικόνας",
"textTranslation": "Text Translation", "textTranslation": "Μετάφραση κειμένου",
// 翻译模块 - 主页 // 翻译模块 - 主页
"translationHistory": "Ιστορικό μεταφράσεων", "translationHistory": "Ιστορικό μεταφράσεων",
@ -977,22 +1048,33 @@ const Map<String, String> elGR = {
"phoneUser": "Χρήστης τηλεφώνου", "phoneUser": "Χρήστης τηλεφώνου",
"selectSourceLanguage": "Επιλέξτε γλώσσα προέλευσης", "selectSourceLanguage": "Επιλέξτε γλώσσα προέλευσης",
"selectTargetLanguage": "Επιλέξτε γλώσσα προορισμού", "selectTargetLanguage": "Επιλέξτε γλώσσα προορισμού",
"me": "Me", "me": "Εγώ",
"counterPart": "Counterpart", "counterPart": "Συνομιλητής",
"bluetoothCallStateError": "bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state", "Βεβαιωθείτε ότι τα ακουστικά Bluetooth είναι συνδεδεμένα στο τηλέφωνο και σε κατάσταση κλήσης",
"autoDetect": "Auto Detect", // 自动检测 "autoDetect": "Αυτόματη ανίχνευση", // 自动检测
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Αποτυχία ανίχνευσης γλώσσας",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text", // 翻译模块 - 悬浮窗与权限
"textTooLong": "Text too long, max 5000 characters", 'disableFloatingWindow': 'Απενεργοποίηση αιωρούμενου παραθύρου',
'enableFloatingWindow': 'Ενεργοποίηση αιωρούμενου παραθύρου',
'permissionTip': 'Υπόδειξη δικαιώματος',
'micPermissionRequiredForRecording':
'Απαιτείται δικαίωμα μικροφώνου για εγγραφή',
'deleteTranslationRecordError': 'Σφάλμα κατά τη διαγραφή εγγραφής μετάφρασης: @error',
"translationFailed": "Αποτυχία μετάφρασης",
"translating": "Μετάφραση σε εξέλιξη",
"translate": "Μετάφραση",
"pleaseInputText": "Εισαγάγετε κείμενο",
"inputTextToTranslate": "Παρακαλώ εισαγάγετε το κείμενο προς μετάφραση",
"textTooLong": "Το κείμενο είναι πολύ μεγάλο, μέγιστο 5000 χαρακτήρες",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
"noTranslationHistory": "Δεν υπάρχει ιστορικό μεταφράσεων", "noTranslationHistory": "Δεν υπάρχει ιστορικό μεταφράσεων",
"historyRecords": "History Records", "historyRecords": "Ιστορικό εγγραφών",
"clearResults": "Clear Results", "clearResults": "Εκκαθάριση αποτελεσμάτων",
"clearHistory": "Εκκαθάριση ιστορικού", "clearHistory": "Εκκαθάριση ιστορικού",
"clearHistoryConfirm": "clearHistoryConfirm":
"Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλο το ιστορικό μεταφράσεων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", "Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλο το ιστορικό μεταφράσεων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.",
@ -1002,55 +1084,55 @@ const Map<String, String> elGR = {
"Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εγγραφές μεταφράσεων για αυτή τη συνεδρία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εγγραφές μεταφράσεων για αυτή τη συνεδρία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.",
// 翻译模块 - 图片翻译 // 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source", "selectImageSource": "Επιλογή πηγής εικόνας",
"imagePreview": "Image Preview", "imagePreview": "Προεπισκόπηση εικόνας",
"translationResult": "Translation Result", "translationResult": "Αποτέλεσμα μετάφρασης",
"recognitionResult": "Recognition Result", "recognitionResult": "Αποτέλεσμα αναγνώρισης",
"translatedImagePreview": "Translated Image Preview", "translatedImagePreview": "Προεπισκόπηση μεταφρασμένης εικόνας",
"translatedImageLoadFailed": "Failed to load translated image", "translatedImageLoadFailed": "Αποτυχία φόρτωσης μεταφρασμένης εικόνας",
"pleaseSelectImage": "Please select an image", "pleaseSelectImage": "Επιλέξτε μια εικόνα",
"imageLoadFailed": "Image load failed", "imageLoadFailed": "Αποτυχία φόρτωσης εικόνας",
"imageQuality": "Image Quality", "imageQuality": "Ποιότητα εικόνας",
"maxSize": "Max Size", "maxSize": "Μέγιστο μέγεθος",
"close": "Close", "close": "Κλείσιμο",
"setImageQuality": "Set Image Quality", "setImageQuality": "Ρύθμιση ποιότητας εικόνας",
"currentQuality": "Current quality: @value%", "currentQuality": "Τρέχουσα ποιότητα: @value%",
"setMaxSize": "Set Max Size", "setMaxSize": "Ρύθμιση μέγιστου μεγέθους",
"currentMaxSize": "Current: @pxpx", "currentMaxSize": "Τρέχον: @pxpx",
"waitingForAction": "Waiting for action", "waitingForAction": "Αναμονή ενέργειας",
"pleaseSelectImageToStart": "Please select an image to start", "pleaseSelectImageToStart": "Επιλέξτε μια εικόνα για να ξεκινήσετε",
"chooseImage": "Choose Image", "chooseImage": "Επιλογή εικόνας",
"openingCamera": "Opening camera...", "openingCamera": "Άνοιγμα κάμερας...",
"openingPhotoAlbum": "Opening photo album...", "openingPhotoAlbum": "Άνοιγμα άλμπουμ φωτογραφιών...",
"cancelled": "Cancelled", "cancelled": "Ακυρώθηκε",
"userCancelledSelection": "User cancelled selection", "userCancelledSelection": "Ο χρήστης ακύρωσε την επιλογή",
"translatingImage": "Translating Image", "translatingImage": "Μετάφραση εικόνας",
"callingImageTranslateService": "Calling image translation service...", "callingImageTranslateService": "Κλήση υπηρεσίας μετάφρασης εικόνας...",
"savingRecord": "Saving Record", "savingRecord": "Αποθήκευση εγγραφής",
"savingTranslationResult": "Saving translation result...", "savingTranslationResult": "Αποθήκευση αποτελέσματος μετάφρασης...",
"translationCompleted": "Translation Completed", "translationCompleted": "Η μετάφραση ολοκληρώθηκε",
"allStepsCompleted": "All steps completed", "allStepsCompleted": "Όλα τα βήματα ολοκληρώθηκαν",
"processingFailed": "Processing Failed", "processingFailed": "Αποτυχία επεξεργασίας",
"imageProcessingOrTranslationFailed": "imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}", "Αποτυχία επεξεργασίας ή μετάφρασης εικόνας. Δοκιμάστε ξανά.\nΣφάλμα: {error}",
"imageTooLarge": "Image size exceeds 4MB limit", "imageTooLarge": "Το μέγεθος εικόνας υπερβαίνει το όριο των 4MB",
"imageTooLargeHint": "imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry", "Το μέγεθος εικόνας υπερβαίνει τα 4MB. Μειώστε την ποιότητα ή τις διαστάσεις και δοκιμάστε ξανά",
"emptyTranslationResult": "Image translation API returned empty result", "emptyTranslationResult": "Το API μετάφρασης εικόνας επέστρεψε κενό αποτέλεσμα",
"imageTranslationFailedTryLater": "imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later", "Αποτυχία μετάφρασης εικόνας. Πρόβλημα δικτύου ή όριο αιτημάτων. Δοκιμάστε αργότερα",
"imageTranslationApiException": "imageTranslationApiException":
"Image translation API exception. Check network and retry", "Εξαίρεση API μετάφρασης εικόνας. Ελέγξτε το δίκτυο και δοκιμάστε ξανά",
"permissionRequired": "Permission Required", "permissionRequired": "Απαιτείται δικαίωμα",
"cameraPermissionRequired": "Camera permission required to take photos", "cameraPermissionRequired": "Απαιτείται δικαίωμα κάμερας για λήψη φωτογραφιών",
"photoAlbumPermissionRequired": "photoAlbumPermissionRequired":
"Photo album permission required to pick images", "Απαιτείται δικαίωμα άλμπουμ φωτογραφιών για επιλογή εικόνων",
"translationDetails": "Translation Details", "translationDetails": "Λεπτομέρειες μετάφρασης",
"originalImage": "Original Image", "originalImage": "Αρχική εικόνα",
"sourceLanguage": "Source Language", "sourceLanguage": "Γλώσσα προέλευσης",
"targetLanguage": "Target Language", "targetLanguage": "Γλώσσα προορισμού",
"translationTime": "Translation Time", "translationTime": "Χρόνος μετάφρασης",
"shareInDevelopment": "Sharing feature under development", "shareInDevelopment": "Η λειτουργία κοινοποίησης βρίσκεται υπό ανάπτυξη",
// 翻译模块 - 录音文件 // 翻译模块 - 录音文件
"translateAudioFiles": "Μετάφραση αρχείων ήχου", "translateAudioFiles": "Μετάφραση αρχείων ήχου",
@ -1103,8 +1185,8 @@ const Map<String, String> elGR = {
'deleteAccount': 'Διαγραφή λογαριασμού', 'deleteAccount': 'Διαγραφή λογαριασμού',
'deleteAccountTips': 'deleteAccountTips':
'Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τον λογαριασμό σας; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί', 'Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τον λογαριασμό σας; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί',
'clean': 'Clear Cache', 'clean': 'Εκκαθάριση προσωρινής μνήμης',
'cleanTips': 'Are you sure you want to clear personal cache?', 'cleanTips': 'Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε την προσωπική προσωρινή μνήμη;',
'networkConnectionFailed': 'networkConnectionFailed':
'Αποτυχία σύνδεσης δικτύου, ελέγξτε τις ρυθμίσεις δικτύου και δοκιμάστε ξανά', 'Αποτυχία σύνδεσης δικτύου, ελέγξτε τις ρυθμίσεις δικτύου και δοκιμάστε ξανά',
'serverTemporarilyUnavailable': 'serverTemporarilyUnavailable':
@ -1152,18 +1234,18 @@ const Map<String, String> elGR = {
'Εντοπίστηκε ότι έχετε αρνηθεί μόνιμα το δικαίωμα αποθήκευσης. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, παρακαλώ μεταβείτε στις ρυθμίσεις εφαρμογής για να ενεργοποιήσετε χειροκίνητα το δικαίωμα αποθήκευσης.', 'Εντοπίστηκε ότι έχετε αρνηθεί μόνιμα το δικαίωμα αποθήκευσης. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, παρακαλώ μεταβείτε στις ρυθμίσεις εφαρμογής για να ενεργοποιήσετε χειροκίνητα το δικαίωμα αποθήκευσης.',
'getPermissionStatusFailed': 'Αποτυχία λήψης κατάστασης δικαιωμάτων', 'getPermissionStatusFailed': 'Αποτυχία λήψης κατάστασης δικαιωμάτων',
'communicationPermissions': 'Δικαιώματα επικοινωνίας', 'communicationPermissions': 'Δικαιώματα επικοινωνίας',
'bluetoothPermissions': 'Bluetooth Permissions', 'bluetoothPermissions': 'Δικαιώματα Bluetooth',
'notificationPermissions': 'Notification Permissions', 'notificationPermissions': 'Δικαιώματα ειδοποιήσεων',
'storagePermissions': 'Storage Permissions', 'storagePermissions': 'Δικαιώματα αποθήκευσης',
'microphonePermissions': 'Microphone Permissions', 'microphonePermissions': 'Δικαιώματα μικροφώνου',
'alarmPermissions': 'Alarm Permissions', 'alarmPermissions': 'Δικαιώματα ξυπνητηριού',
'calendarPermissions': 'Δικαιώματα ημερολογίου', 'calendarPermissions': 'Δικαιώματα ημερολογίου',
'locationPermissions': 'Δικαιώματα τοποθεσίας', 'locationPermissions': 'Δικαιώματα τοποθεσίας',
'phone': 'Τηλέφωνο', 'phone': 'Τηλέφωνο',
'sms': 'SMS', 'sms': 'SMS',
'contacts': 'Contacts', 'contacts': 'Επαφές',
'notification': 'Notification', 'notification': 'Ειδοποίηση',
'alarm': 'Alarm', 'alarm': 'Ξυπνητήρι',
'calendarWrite': 'Εγγραφή ημερολογίου', 'calendarWrite': 'Εγγραφή ημερολογίου',
'calendarFullAccess': 'Πλήρης πρόσβαση ημερολογίου', 'calendarFullAccess': 'Πλήρης πρόσβαση ημερολογίου',
'locationInfo': 'Πληροφορίες τοποθεσίας', 'locationInfo': 'Πληροφορίες τοποθεσίας',
@ -1171,7 +1253,7 @@ const Map<String, String> elGR = {
'Χρησιμοποιείται για τη λειτουργία τηλεφωνικών κλήσεων', 'Χρησιμοποιείται για τη λειτουργία τηλεφωνικών κλήσεων',
'smsPermissionDesc': 'Χρησιμοποιείται για τη λειτουργία αποστολής SMS', 'smsPermissionDesc': 'Χρησιμοποιείται για τη λειτουργία αποστολής SMS',
'alarmPermissionDesc': 'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time', 'Χρησιμοποιείται για τη ρύθμιση ακριβών ξυπνητηριών ώστε οι υπενθυμίσεις να ενεργοποιούνται έγκαιρα',
'calendarWritePermissionDesc': 'calendarWritePermissionDesc':
'Χρησιμοποιείται για τη δημιουργία γεγονότων και υπενθυμίσεων ημερολογίου', 'Χρησιμοποιείται για τη δημιουργία γεγονότων και υπενθυμίσεων ημερολογίου',
'calendarFullAccessPermissionDesc': 'calendarFullAccessPermissionDesc':
@ -1192,86 +1274,88 @@ const Map<String, String> elGR = {
'smsPermissionDetailDesc': 'smsPermissionDetailDesc':
'Η λειτουργία αποστολής SMS χρειάζεται δικαίωμα SMS', 'Η λειτουργία αποστολής SMS χρειάζεται δικαίωμα SMS',
'alarmPermissionDetailDesc': 'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time', 'Αυτό το δικαίωμα απαιτείται για τη ρύθμιση ακριβών ξυπνητηριών και τη διασφάλιση ότι οι υπενθυμίσεις ενεργοποιούνται έγκαιρα',
'calendarWritePermissionDetailDesc': 'calendarWritePermissionDetailDesc':
'Η δημιουργία γεγονότων ημερολογίου χρειάζεται δικαίωμα εγγραφής ημερολογίου', 'Η δημιουργία γεγονότων ημερολογίου χρειάζεται δικαίωμα εγγραφής ημερολογίου',
'calendarFullAccessPermissionDetailDesc': 'calendarFullAccessPermissionDetailDesc':
'Η διαχείριση γεγονότων ημερολογίου χρειάζεται πλήρες δικαίωμα ημερολογίου', 'Η διαχείριση γεγονότων ημερολογίου χρειάζεται πλήρες δικαίωμα ημερολογίου',
'locationPermissionDetailDesc': 'locationPermissionDetailDesc':
'Η λήψη πληροφοριών τοποθεσίας χρειάζεται δικαίωμα τοποθεσίας', 'Η λήψη πληροφοριών τοποθεσίας χρειάζεται δικαίωμα τοποθεσίας',
'contactsPermissionDesc': 'Used for accessing contact information', 'contactsPermissionDesc': 'Χρησιμοποιείται για πρόσβαση σε πληροφορίες επαφών',
'contactsPermissionDetailDesc': 'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts', 'Η λειτουργία τηλεφωνικών κλήσεων και SMS χρειάζεται δικαίωμα επαφών για επιλογή επαφών',
'bluetoothPermissionDesc': 'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices', 'Χρησιμοποιείται για σύνδεση και διαχείριση συσκευών Bluetooth',
'bluetoothPermissionDetailDesc': 'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', 'Η σύνδεση με ακουστικά Bluetooth και άλλες συσκευές απαιτεί δικαίωμα Bluetooth',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', 'bluetoothScanPermissionDesc': 'Χρησιμοποιείται για σάρωση κοντινών συσκευών Bluetooth',
'bluetoothScanPermissionDetailDesc': 'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', 'Η σάρωση κοντινών συσκευών Bluetooth απαιτεί δικαίωμα σάρωσης Bluetooth',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', 'bluetoothConnectPermissionDesc': 'Χρησιμοποιείται για σύνδεση σε συσκευές Bluetooth',
'bluetoothConnectPermissionDetailDesc': 'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission', 'Η σύνδεση σε συσκευές Bluetooth απαιτεί δικαίωμα σύνδεσης Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDesc': 'Χρησιμοποιείται για αποστολή μηνυμάτων ειδοποίησης',
'notificationPermissionDetailDesc': 'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages', 'Η εφαρμογή χρειάζεται δικαίωμα ειδοποιήσεων για να σας στέλνει σημαντικές ειδοποιήσεις και μηνύματα',
'appNeedsPermissionForFullFunction': 'appNeedsPermissionForFullFunction':
'Η εφαρμογή χρειάζεται αυτό το δικαίωμα για να παρέχει πλήρη λειτουργικότητα', 'Η εφαρμογή χρειάζεται αυτό το δικαίωμα για να παρέχει πλήρη λειτουργικότητα',
'permanentDenialText': 'permanentDenialText':
'Έχετε αρνηθεί μόνιμα το δικαίωμα {permission}, μεταβείτε στις ρυθμίσεις εφαρμογής για να το ενεργοποιήσετε', 'Έχετε αρνηθεί μόνιμα το δικαίωμα {permission}, μεταβείτε στις ρυθμίσεις εφαρμογής για να το ενεργοποιήσετε',
'goToSettings': 'Μετάβαση στις ρυθμίσεις', 'goToSettings': 'Μετάβαση στις ρυθμίσεις',
'bluetoothScan': 'Bluetooth Scan', 'bluetoothScan': 'Σάρωση Bluetooth',
'bluetoothConnect': 'Bluetooth Connect', 'bluetoothConnect': 'Σύνδεση Bluetooth',
'bluetoothScanExplanation': 'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', 'Η εφαρμογή χρειάζεται δικαίωμα σάρωσης Bluetooth για σάρωση κοντινών συσκευών Bluetooth.',
'bluetoothConnectExplanation': 'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.', 'Η εφαρμογή χρειάζεται δικαίωμα σύνδεσης Bluetooth για σύνδεση σε συσκευές Bluetooth.',
'locationForBluetoothExplanation': 'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.', 'Η εφαρμογή χρειάζεται δικαίωμα τοποθεσίας για σάρωση συσκευών Bluetooth.',
'bluetoothScanPermanentDenial': 'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', 'Το δικαίωμα σάρωσης Bluetooth έχει απορριφθεί μόνιμα, μεταβείτε στις ρυθμίσεις για χειροκίνητη ενεργοποίηση.',
'bluetoothConnectPermanentDenial': 'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', 'Το δικαίωμα σύνδεσης Bluetooth έχει απορριφθεί μόνιμα, μεταβείτε στις ρυθμίσεις για χειροκίνητη ενεργοποίηση.',
'locationPermanentDenial': 'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.', 'Το δικαίωμα τοποθεσίας έχει απορριφθεί μόνιμα, μεταβείτε στις ρυθμίσεις για χειροκίνητη ενεργοποίηση.',
'notificationPermission': 'Notification', 'notificationPermission': 'Ειδοποίηση',
'locationPermission': 'Location', 'locationPermission': 'Τοποθεσία',
'notificationPermissionExplanation': 'notificationPermissionExplanation':
'Notification permission is required to display music playback status.', 'Απαιτείται δικαίωμα ειδοποιήσεων για εμφάνιση κατάστασης αναπαραγωγής μουσικής.',
'locationPermissionExplanation': 'locationPermissionExplanation':
'Location permission is required to get current location.', 'Απαιτείται δικαίωμα τοποθεσίας για λήψη τρέχουσας τοποθεσίας.',
'notificationPermissionPermanentDenial': 'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.', 'Έχετε απορρίψει μόνιμα το δικαίωμα ειδοποιήσεων, μεταβείτε στις ρυθμίσεις για ενεργοποίηση.',
'locationPermissionPermanentDenial': 'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.', 'Έχετε απορρίψει μόνιμα το δικαίωμα τοποθεσίας, μεταβείτε στις ρυθμίσεις για ενεργοποίηση.',
'storagePermission': 'Storage', 'storagePermission': 'Αποθήκευση',
'microphonePermissionExplanation': 'microphonePermissionExplanation':
'We need microphone permission to record audio content.', 'Χρειαζόμαστε δικαίωμα μικροφώνου για εγγραφή ηχητικού περιεχομένου.',
'storagePermissionExplanation': 'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.', 'Χρειαζόμαστε δικαίωμα αποθήκευσης ώστε να μπορείτε να επιλέξετε και να ανεβάσετε αρχεία ήχου.',
'microphonePermissionPermanentDenial': 'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'Το δικαίωμα μικροφώνου έχει απορριφθεί μόνιμα. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, μεταβείτε στις ρυθμίσεις εφαρμογής για χειροκίνητη ενεργοποίηση.',
'storagePermissionPermanentDenial': 'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', 'Το δικαίωμα αποθήκευσης έχει απορριφθεί μόνιμα. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, μεταβείτε στις ρυθμίσεις εφαρμογής για χειροκίνητη ενεργοποίηση.',
'permissionUtilNeed': 'Need ', 'permissionUtilNeed': 'Απαιτείται ',
'permissionUtilPermission': ' Permission', 'permissionUtilPermission': ' Δικαίωμα',
'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestricted': ' Δικαίωμα περιορισμένο',
'permissionUtilRestrictedMessage': 'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', 'Αυτή η λειτουργία δεν είναι διαθέσιμη ή είναι περιορισμένη στην τρέχουσα συσκευή, ελέγξτε τις ρυθμίσεις συσκευής ή τους περιορισμούς συστήματος',
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Πλοήγηση σε εξέλιξη', 'native.notification.navigation.title': 'Πλοήγηση σε εξέλιξη',
'native.notification.navigation.keepRunning': 'Πλοήγηση σε εξέλιξη, διατηρήστε την εφαρμογή ανοιχτή', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'Ο φωνητικός βοηθός εκτελείται', 'Πλοήγηση σε εξέλιξη, διατηρήστε την εφαρμογή ανοιχτή',
'native.notification.audioRecording.recording': 'Εγγραφή ήχου, πατήστε για επιστροφή στην εφαρμογή', 'native.notification.bleAgent.running': 'Ο φωνητικός βοηθός εκτελείται',
'native.notification.music.waiting': 'Αναμονή αναπαραγωγής', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Προηγούμενο', 'Εγγραφή ήχου, πατήστε για επιστροφή στην εφαρμογή',
'native.notification.music.next': 'Επόμενο', 'native.notification.music.waiting': 'Αναμονή αναπαραγωγής',
'native.notification.music.play': 'Αναπαραγωγή', 'native.notification.music.previous': 'Προηγούμενο',
'native.notification.music.pause': 'Παύση', 'native.notification.music.next': 'Επόμενο',
'native.notification.qqMusic.playing': 'Αναπαραγωγή μουσικής', 'native.notification.music.play': 'Αναπαραγωγή',
'native.notification.music.pause': 'Παύση',
'native.notification.qqMusic.playing': 'Αναπαραγωγή μουσικής',
// 版本更新 // 版本更新
'newVersionFound': 'Βρέθηκε νέα έκδοση', // 版本更新对话框标题 'newVersionFound': 'Βρέθηκε νέα έκδοση', // 版本更新对话框标题
@ -1345,27 +1429,27 @@ const Map<String, String> elGR = {
'bleConnectionFailed': 'Αποτυχία σύνδεσης BLE', 'bleConnectionFailed': 'Αποτυχία σύνδεσης BLE',
'deviceAuthorizationFailedCheckCode': 'deviceAuthorizationFailedCheckCode':
'Αποτυχία εξουσιοδότησης συσκευής, ελέγξτε τον κωδικό εξουσιοδότησης', 'Αποτυχία εξουσιοδότησης συσκευής, ελέγξτε τον κωδικό εξουσιοδότησης',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideTitle': 'Απαιτείται χειροκίνητη ενεργοποίηση Bluetooth', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideSteps': 'Ακολουθήστε τα παρακάτω βήματα:', // 请按照以下步骤操作:
'bluetoothGuideStep1': 'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 'Ενεργοποίηση Bluetooth: Ρυθμίσεις → Bluetooth → Ενεργοποίηση', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2': 'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 'Σύνδεση συσκευής: Βρείτε τη συσκευή σας στις "Οι συσκευές μου" και πατήστε για σύνδεση', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3': 'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程 'Επιστρέψτε στην εφαρμογή για να συνεχίσετε τη διαδικασία σύζευξης', // 返回应用继续配对流程
'bluetoothGuideTip': 'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'Συμβουλή: Μπορείτε επίσης να πατήσετε παρατεταμένα το εικονίδιο Bluetooth στο Κέντρο ελέγχου για γρήγορη πρόσβαση στις ρυθμίσεις Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了 'iKnow': 'Κατάλαβα', // 我知道了
// 配对模块 - 绑定奖励 // 配对模块 - 绑定奖励
"firstBindRewardTitle": "Welcome Reward", "firstBindRewardTitle": "Ανταμοιβή καλωσορίσματος",
"firstBindRewardDesc": "You've received binding rewards.", "firstBindRewardDesc": "Λάβατε ανταμοιβές σύνδεσης.",
"vipLevelLabel": "VIP Level:", "vipLevelLabel": "Επίπεδο VIP:",
"expiryLabel": "Expiration:", "expiryLabel": "Λήξη:",
"notActivated": "Not activated", "notActivated": "Δεν έχει ενεργοποιηθεί",
"aiChatCreditsLabel": "AI Chat Credits:", "aiChatCreditsLabel": "Πόντοι συνομιλίας AI:",
"translationCreditsLabel": "Translation Credits:", "translationCreditsLabel": "Πόντοι μετάφρασης:",
"meetingCreditsLabel": "Meeting Credits:", "meetingCreditsLabel": "Πόντοι συνάντησης:",
"ok": "OK", "ok": "OK",
// 用户反馈模块 // 用户反馈模块
@ -1394,13 +1478,13 @@ const Map<String, String> elGR = {
"connectionFailed": "Αποτυχία σύνδεσης", "connectionFailed": "Αποτυχία σύνδεσης",
"retryConnection": "Επανάληψη σύνδεσης", "retryConnection": "Επανάληψη σύνδεσης",
"ota_updateNow": "Ενημέρωση τώρα", "ota_updateNow": "Ενημέρωση τώρα",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.", "otaVersionInfoFailed": "Αποτυχία λήψης πληροφοριών έκδοσης. Δοκιμάστε ξανά αργότερα.",
"otaDeviceInfoUnavailable": "otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.", "Αδυναμία λήψης πληροφοριών συσκευής. Ελέγξτε τη σύνδεση και δοκιμάστε ξανά.",
"otaProductInfoUnavailable": "otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.", "Αδυναμία αναγνώρισης της συσκευής. Επανασυνδέστε και δοκιμάστε ξανά.",
"otaFirmwareVersionInvalid": "otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.", "Η έκδοση firmware είναι μη κανονική. Επανασυνδέστε και δοκιμάστε ξανά.",
"keepConnectedDontClose": "keepConnectedDontClose":
"Διατηρήστε τη συσκευή συνδεδεμένη, μην κλείσετε την εφαρμογή", "Διατηρήστε τη συσκευή συνδεδεμένη, μην κλείσετε την εφαρμογή",
"doNotDisconnect": "Μην αποσυνδέσετε", "doNotDisconnect": "Μην αποσυνδέσετε",
@ -1409,6 +1493,59 @@ const Map<String, String> elGR = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Αφαιρέστε και τα δύο ακουστικά και βεβαιωθείτε ότι η μπαταρία και των δύο είναι πάνω από 20%", "Αφαιρέστε και τα δύο ακουστικά και βεβαιωθείτε ότι η μπαταρία και των δύο είναι πάνω από 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Βρέθηκε νέα έκδοση @version',
'otaConfirmUpdateNow': 'Ενημέρωση τώρα;',
'otaUpdate': 'Ενημέρωση',
'otaUpgradeSuccess': 'Επιτυχής αναβάθμιση',
'otaUpgradeCompleteRepair':
'Η αναβάθμιση firmware ολοκληρώθηκε!\n\nΗ συσκευή χρειάζεται εκ νέου σύζευξη για σωστή λειτουργία. Μετάβαση στη σελίδα σύζευξης τώρα;',
'otaPairLater': 'Σύζευξη αργότερα',
'otaPairNow': 'Σύζευξη τώρα',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Σφάλμα ελέγχου σύνδεσης BLE: @error',
'otaBleNotConnected': 'Η συσκευή BLE δεν είναι συνδεδεμένη',
'otaBleNeedConnection':
'Η αναβάθμιση firmware απαιτεί σύνδεση συσκευής BLE\nΒεβαιωθείτε ότι η συσκευή είναι σωστά συνδεδεμένη και δοκιμάστε ξανά',
'otaDeviceInfoUnavailableTitle': 'Πληροφορίες συσκευής μη διαθέσιμες',
'otaCannotGetDeviceInfo':
'Αδυναμία λήψης πληροφοριών συσκευής\nΕπανασυνδέστε τη συσκευή ή δοκιμάστε αργότερα',
'otaBleCheckFailed': 'Αποτυχία ελέγχου σύνδεσης BLE',
'otaCannotGetDeviceInfoCheckConnection':
'Αδυναμία λήψης πληροφοριών συσκευής, ελέγξτε τη σύνδεση συσκευής',
'otaCannotGetProductInfoWithName':
'Αδυναμία λήψης πληροφοριών προϊόντος, όνομα συσκευής: @deviceName',
'otaCannotGetBatteryInfo': 'Αδυναμία λήψης έγκυρων πληροφοριών μπαταρίας',
'otaLowBattery': 'Χαμηλή μπαταρία',
'otaSingleBatteryLow':
'Η μπαταρία της συσκευής είναι πολύ χαμηλή για αναβάθμιση firmware\nΑπαίτηση: η μπαταρία πρέπει να είναι πάνω από 20%\nΤρέχον: @ear @battery%\nΦορτίστε και δοκιμάστε ξανά',
'otaDoubleBatteryLow':
'Η μπαταρία της συσκευής είναι πολύ χαμηλή για αναβάθμιση firmware\nΑπαίτηση: και τα δύο ακουστικά πρέπει να είναι πάνω από 20%\nΤρέχον: Αριστερό @left%, Δεξί @right%\nΦορτίστε και δοκιμάστε ξανά',
'otaBatteryCheckFailed': 'Αποτυχία ελέγχου μπαταρίας',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Αυτή η ενημέρωση περιλαμβάνει βελτιστοποιήσεις απόδοσης και διορθώσεις σφαλμάτων.',
'otaGetLatestVersionFailed': 'Αποτυχία λήψης πληροφοριών τελευταίας έκδοσης',
'otaGetVersionInfoFailed': 'Αποτυχία λήψης πληροφοριών έκδοσης',
'otaCheckingDeviceStatus': 'Έλεγχος κατάστασης συσκευής...',
'otaDownloadFailedCheckNetwork':
'Αποτυχία λήψης, ελέγξτε τη σύνδεση δικτύου',
'otaDownloadFailed': 'Αποτυχία λήψης',
'otaPreparingConnection': 'Προετοιμασία σύνδεσης συσκευής...',
'otaConnectingDevice': 'Σύνδεση στη συσκευή...',
'otaUpgradeStarted': 'Η αναβάθμιση OTA ξεκίνησε...',
'otaUpgradeProgressWithPercent': 'Πρόοδος αναβάθμισης: @percent%',
'otaUpgradeSuccessComplete': 'Η αναβάθμιση ολοκληρώθηκε επιτυχώς',
'otaUpgradeFailedWithCode': 'Αποτυχία αναβάθμισης, κωδικός σφάλματος: @code',
'otaUpgradeFailedTitle': 'Αποτυχία αναβάθμισης',
'otaUpgradeFailedDesc':
'Ελέγξτε τη σύνδεση συσκευής ή το πακέτο ενημέρωσης, κωδικός σφάλματος: @code',
'otaDeviceDisconnected': 'Η συσκευή αποσυνδέθηκε',
'otaDeviceConnected': 'Η συσκευή συνδέθηκε',
// 音乐模块 // 音乐模块
"noMusic": "Δεν υπάρχει μουσική", // 暂无音乐 "noMusic": "Δεν υπάρχει μουσική", // 暂无音乐
"noPlayingMusic": "Δεν παίζει μουσική", // 暂无播放音乐 "noPlayingMusic": "Δεν παίζει μουσική", // 暂无播放音乐

124
lib/core/translations/language/en_us.dart

@ -1,5 +1,4 @@
const Map<String, String> enUS = { const Map<String, String> enUS = {
// 通用 // 通用
'continue': 'Continue', 'continue': 'Continue',
'confirm': 'Confirm', 'confirm': 'Confirm',
@ -129,7 +128,8 @@ const Map<String, String> enUS = {
"aiAssistant": "AI Assistant", "aiAssistant": "AI Assistant",
"aiAssistantInfo": "24/7 personal consultant for questions and advice", "aiAssistantInfo": "24/7 personal consultant for questions and advice",
"interpretation": "Translation", "interpretation": "Translation",
"simultaneousInterpretationInfo": "Real-time translation for multiple languages", "simultaneousInterpretationInfo":
"Real-time translation for multiple languages",
"aiCompanion": "Parent-child bonding", "aiCompanion": "Parent-child bonding",
"aiCompanionInfo": "Understands you and provides warm companionship", "aiCompanionInfo": "Understands you and provides warm companionship",
"homeSlogan": "Connect the World, Beyond Sound", "homeSlogan": "Connect the World, Beyond Sound",
@ -166,6 +166,29 @@ const Map<String, String> enUS = {
'right': 'Right', 'right': 'Right',
'checkConnectionStatusFailed': 'Failed to check connection status', 'checkConnectionStatusFailed': 'Failed to check connection status',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Search AI features...", "searchAi": "Search AI features...",
"exploreSlogan": "Smart Earbuds, Infinite Possibilities", "exploreSlogan": "Smart Earbuds, Infinite Possibilities",
@ -726,7 +749,8 @@ const Map<String, String> enUS = {
'playerNotReady': 'Audio player is not ready, please wait', 'playerNotReady': 'Audio player is not ready, please wait',
'playFailed': 'Playback failed', 'playFailed': 'Playback failed',
'audioFileNotFound': 'Audio file not found', 'audioFileNotFound': 'Audio file not found',
'fetchingAudio': 'Fetching audio from cloud...', // Prompt shown when local audio file is missing and downloading from cloud 'fetchingAudio':
'Fetching audio from cloud...', // Prompt shown when local audio file is missing and downloading from cloud
'playerLoadFailed': 'Audio player failed to load', 'playerLoadFailed': 'Audio player failed to load',
// 设置页 // 设置页
@ -890,6 +914,13 @@ const Map<String, String> enUS = {
'We want to know the reason for your report, you can describe the problem you encountered.', 'We want to know the reason for your report, you can describe the problem you encountered.',
'generatedByAi': 'Generated by AI', 'generatedByAi': 'Generated by AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Here are some recommended music:', 'recommendedMusic': 'Here are some recommended music:',
'playList': 'Playlist', 'playList': 'Playlist',
@ -912,6 +943,29 @@ const Map<String, String> enUS = {
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Weather Query:', 'weatherQuery': 'Weather Query:',
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
'highest': 'High', 'highest': 'High',
'lowest': 'Low', 'lowest': 'Low',
'futureForecast': 'Future Forecast', 'futureForecast': 'Future Forecast',
@ -982,7 +1036,18 @@ const Map<String, String> enUS = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
"inputTextToTranslate": "Please enter the text to translate",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
@ -1402,6 +1467,59 @@ const Map<String, String> enUS = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Remove both earbuds and ensure battery level is above 20%", "Remove both earbuds and ensure battery level is above 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "No Music", // 暂无音乐 "noMusic": "No Music", // 暂无音乐
"noPlayingMusic": "No Playing Music", // 暂无播放音乐 "noPlayingMusic": "No Playing Music", // 暂无播放音乐

932
lib/core/translations/language/es_es.dart

File diff suppressed because it is too large

312
lib/core/translations/language/et_ee.dart

@ -1,5 +1,4 @@
const Map<String, String> etEE = { const Map<String, String> etEE = {
// 通用 // 通用
'continue': 'Jätka', 'continue': 'Jätka',
'confirm': 'Kinnita', 'confirm': 'Kinnita',
@ -164,6 +163,29 @@ const Map<String, String> etEE = {
'right': 'Parem', 'right': 'Parem',
'checkConnectionStatusFailed': 'Ühenduse oleku kontrollimine ebaõnnestus', 'checkConnectionStatusFailed': 'Ühenduse oleku kontrollimine ebaõnnestus',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Otsi AI funktsioone...", "searchAi": "Otsi AI funktsioone...",
"exploreSlogan": "Nutikad kõrvaklapid, lõputud võimalused", "exploreSlogan": "Nutikad kõrvaklapid, lõputud võimalused",
@ -239,60 +261,64 @@ const Map<String, String> etEE = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Makse edukas', 'paymentSuccess': 'Makse edukas',
'paymentFailed': 'Makse ebaõnnestus', 'paymentFailed': 'Makse ebaõnnestus',
'gotIt': 'Selge', 'gotIt': 'Selge',
'paymentFailedTryAgain': 'Makse ebaõnnestus. Palun proovi uuesti.', 'paymentFailedTryAgain': 'Makse ebaõnnestus. Palun proovi uuesti.',
'selectPaymentMethod': 'Vali makseviis', 'selectPaymentMethod': 'Vali makseviis',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'WeChat Pay tellimuse loomine ebaõnnestus', 'wechatOrderCreateFailed': 'WeChat Pay tellimuse loomine ebaõnnestus',
'alipayOrderCreateFailed': 'Alipay tellimuse loomine ebaõnnestus', 'alipayOrderCreateFailed': 'Alipay tellimuse loomine ebaõnnestus',
'appleOrderCreateFailed': 'Apple tellimuse loomine ebaõnnestus', 'appleOrderCreateFailed': 'Apple tellimuse loomine ebaõnnestus',
'googleOrderCreateFailed': 'Google tellimuse loomine ebaõnnestus', 'googleOrderCreateFailed': 'Google tellimuse loomine ebaõnnestus',
'paypalOrderCreateFailed': 'PayPal tellimuse loomine ebaõnnestus', 'paypalOrderCreateFailed': 'PayPal tellimuse loomine ebaõnnestus',
'paymentException': 'Makse erand', 'paymentException': 'Makse erand',
'paymentLaunchFailed': 'Makse käivitamine ebaõnnestus', 'paymentLaunchFailed': 'Makse käivitamine ebaõnnestus',
'paymentExceptionWithError': 'Makse erand: @error', 'paymentExceptionWithError': 'Makse erand: @error',
'paymentProcessingCheckLater': 'Sinu tellimust töödeldakse. Palun kontrolli hiljem.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Makse tulemuse päring ebaõnnestus: @error', 'Sinu tellimust töödeldakse. Palun kontrolli hiljem.',
'orderConfirmedQuotaRefreshed': 'Tellimus kinnitatud. Sinu kvoot on värskendatud.', 'paymentResultQueryException': 'Makse tulemuse päring ebaõnnestus: @error',
'paymentCompletedConfirming': 'Makse sooritatud. Kinnitamine…', 'orderConfirmedQuotaRefreshed':
'paymentCancelled': 'Makse tühistatud', 'Tellimus kinnitatud. Sinu kvoot on värskendatud.',
'paypalOpenedCompleteInBrowser': 'PayPal avatud. Palun vii makse lõpule brauseris.', 'paymentCompletedConfirming': 'Makse sooritatud. Kinnitamine…',
'paypalOpenFailed': 'PayPal makseleht ei ava', 'paymentCancelled': 'Makse tühistatud',
'paymentTestTitle': 'Makse test', 'paypalOpenedCompleteInBrowser':
'paymentTestOrderInfo': 'Testtellimuse info', 'PayPal avatud. Palun vii makse lõpule brauseris.',
'paymentTestProductId': 'Toote ID', 'paypalOpenFailed': 'PayPal makseleht ei ava',
'paymentTestProductDescription': 'Toote kirjeldus', 'paymentTestTitle': 'Makse test',
'paymentTestWechatDescription': 'WeChat Pay makse test', 'paymentTestOrderInfo': 'Testtellimuse info',
'paymentTestAlipayDescription': 'Alipay makse test', 'paymentTestProductId': 'Toote ID',
'paymentTestAmount': 'Summa', 'paymentTestProductDescription': 'Toote kirjeldus',
'paymentTestSelectAmount': 'Vali testisumma', 'paymentTestWechatDescription': 'WeChat Pay makse test',
'paying': 'Maksmine...', 'paymentTestAlipayDescription': 'Alipay makse test',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAmount': 'Summa',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestSelectAmount': 'Vali testisumma',
'paymentStatusTitle': 'Makse olek', 'paying': 'Maksmine...',
'errorInfoWithMessage': 'Viga: @message', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'retest': 'Kordustest', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsTitle': 'Juhised', 'paymentStatusTitle': 'Makse olek',
'paymentTestInstructionsContent': '1. Vali testisumma (soovitatud: ¥0,01)\n2. Klõpsa maksenupul alustamiseks\n3. Vii makse lõpule makserakenduses\n4. Naase tulemuse kontrollimiseks', 'errorInfoWithMessage': 'Viga: @message',
'startingWechatPayment': 'WeChat Pay käivitamine...', 'retest': 'Kordustest',
'startingAlipayPayment': 'Alipay käivitamine...', 'paymentTestInstructionsTitle': 'Juhised',
'wechatPaymentSuccess': 'WeChat Pay edukas!', 'paymentTestInstructionsContent':
'wechatPaymentFailed': 'WeChat Pay ebaõnnestus', '1. Vali testisumma (soovitatud: ¥0,01)\n2. Klõpsa maksenupul alustamiseks\n3. Vii makse lõpule makserakenduses\n4. Naase tulemuse kontrollimiseks',
'wechatPaymentLaunchFailed': 'WeChat Pay käivitamine ebaõnnestus', 'startingWechatPayment': 'WeChat Pay käivitamine...',
'cannotLaunchWechatPayment': 'WeChat Pay käivitamine ei õnnestu', 'startingAlipayPayment': 'Alipay käivitamine...',
'wechatPaymentException': 'WeChat Pay erand', 'wechatPaymentSuccess': 'WeChat Pay edukas!',
'wechatPaymentTestCompleted': 'WeChat Pay test lõpetatud', 'wechatPaymentFailed': 'WeChat Pay ebaõnnestus',
'alipayPaymentSuccess': 'Alipay edukas!', 'wechatPaymentLaunchFailed': 'WeChat Pay käivitamine ebaõnnestus',
'alipayPaymentFailed': 'Alipay ebaõnnestus', 'cannotLaunchWechatPayment': 'WeChat Pay käivitamine ei õnnestu',
'alipayPaymentLaunchFailed': 'Alipay käivitamine ebaõnnestus', 'wechatPaymentException': 'WeChat Pay erand',
'cannotLaunchAlipayPayment': 'Alipay käivitamine ei õnnestu', 'wechatPaymentTestCompleted': 'WeChat Pay test lõpetatud',
'alipayPaymentException': 'Alipay erand', 'alipayPaymentSuccess': 'Alipay edukas!',
'alipayPaymentFailed': 'Alipay ebaõnnestus',
'alipayPaymentLaunchFailed': 'Alipay käivitamine ebaõnnestus',
'cannotLaunchAlipayPayment': 'Alipay käivitamine ei õnnestu',
'alipayPaymentException': 'Alipay erand',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -534,21 +560,22 @@ const Map<String, String> etEE = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Loo', 'create': 'Loo',
'templateDetails': 'Malli üksikasjad', 'templateDetails': 'Malli üksikasjad',
'tag': 'Silt', 'tag': 'Silt',
'description': 'Kirjeldus', 'description': 'Kirjeldus',
'template': 'Mall', 'template': 'Mall',
'deleteTemplate': 'Kustuta mall', 'deleteTemplate': 'Kustuta mall',
'deleteTemplateConfirm': 'Kas oled kindel, et soovid selle malli kustutada?', 'deleteTemplateConfirm': 'Kas oled kindel, et soovid selle malli kustutada?',
'editTemplate': 'Muuda malli', 'editTemplate': 'Muuda malli',
'createTemplate': 'Loo mall', 'createTemplate': 'Loo mall',
'name': 'Nimi', 'name': 'Nimi',
'templateContentHint': 'Palun sisesta malli sisu! Vihje: Klõpsa ülaloleval AI nupul, et kiiresti genereerida malli sisu sisestatud nime ja kirjelduse põhjal', 'templateContentHint':
'inputNameHint': 'Palun sisesta nimi', 'Palun sisesta malli sisu! Vihje: Klõpsa ülaloleval AI nupul, et kiiresti genereerida malli sisu sisestatud nime ja kirjelduse põhjal',
'inputDescHint': 'Palun sisesta kirjeldus', 'inputNameHint': 'Palun sisesta nimi',
'custom': 'Kohandatud', 'inputDescHint': 'Palun sisesta kirjeldus',
'pleaseEnter': 'Palun sisestage', 'custom': 'Kohandatud',
'pleaseEnter': 'Palun sisestage',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -571,7 +598,7 @@ const Map<String, String> etEE = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Salvesta mõttekaart', 'saveMindMap': 'Salvesta mõttekaart',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -593,7 +620,7 @@ const Map<String, String> etEE = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Ekspordi', 'export': 'Ekspordi',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Rakenda selle kõneleja kõigile lõikudele', 'applyToAllParagraphs': 'Rakenda selle kõneleja kõigile lõikudele',
@ -703,18 +730,18 @@ const Map<String, String> etEE = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analüüs ebaõnnestus, proovi hiljem uuesti', 'analysisFailed': 'Analüüs ebaõnnestus, proovi hiljem uuesti',
'transcriptionFailed': 'Transkriptsioon ebaõnnestus, proovi hiljem uuesti', 'transcriptionFailed': 'Transkriptsioon ebaõnnestus, proovi hiljem uuesti',
'summaryFailed': 'Kokkuvõte ebaõnnestus, proovi hiljem uuesti', 'summaryFailed': 'Kokkuvõte ebaõnnestus, proovi hiljem uuesti',
'summaryFailedShort': 'Kokkuvõte ebaõnnestus', 'summaryFailedShort': 'Kokkuvõte ebaõnnestus',
'transcriptionFailedShort': 'Transkriptsioon ebaõnnestus', 'transcriptionFailedShort': 'Transkriptsioon ebaõnnestus',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Helipleier pole valmis, palun oota', 'playerNotReady': 'Helipleier pole valmis, palun oota',
'playFailed': 'Esitamine ebaõnnestus', 'playFailed': 'Esitamine ebaõnnestus',
'audioFileNotFound': 'Helifaili ei leitud', 'audioFileNotFound': 'Helifaili ei leitud',
'fetchingAudio': 'Helifaili tõmbamine pilvest...', 'fetchingAudio': 'Helifaili tõmbamine pilvest...',
'playerLoadFailed': 'Helipleieri laadimine ebaõnnestus', 'playerLoadFailed': 'Helipleieri laadimine ebaõnnestus',
// 设置页 // 设置页
"systemSettings": "Süsteemi seaded", "systemSettings": "Süsteemi seaded",
@ -820,7 +847,8 @@ const Map<String, String> etEE = {
"swipeUpForMore": "Libista üles rohkema jaoks", "swipeUpForMore": "Libista üles rohkema jaoks",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Kui lubatud: AI-d ei katkesta sinu hääl rääkimise ajal ja see saab korraga käsitleda ainult ühte vestlusvooru. Uue vooru alustamiseks ütle lihtsalt äratussõna.', 'voice_interrupt_tip':
'Kui lubatud: AI-d ei katkesta sinu hääl rääkimise ajal ja see saab korraga käsitleda ainult ühte vestlusvooru. Uue vooru alustamiseks ütle lihtsalt äratussõna.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -876,6 +904,13 @@ const Map<String, String> etEE = {
'Tahame teada teate põhjust, võid kirjeldada probleemi, millega kokku puutusid.', 'Tahame teada teate põhjust, võid kirjeldada probleemi, millega kokku puutusid.',
'generatedByAi': 'AI poolt genereeritud', 'generatedByAi': 'AI poolt genereeritud',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Siin on mõned soovitatud muusikad:', 'recommendedMusic': 'Siin on mõned soovitatud muusikad:',
'playList': 'Esitusloend', 'playList': 'Esitusloend',
@ -896,6 +931,29 @@ const Map<String, String> etEE = {
"bicycling": "Jalgrattasõit", "bicycling": "Jalgrattasõit",
"tsransit": "Ühistransport", "tsransit": "Ühistransport",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Ilma päring:', 'weatherQuery': 'Ilma päring:',
'highest': 'Kõrgeim', 'highest': 'Kõrgeim',
@ -966,8 +1024,19 @@ const Map<String, String> etEE = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Palun sisestage tõlgitav tekst",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1236,17 +1305,19 @@ const Map<String, String> etEE = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigeerimine käib', 'native.notification.navigation.title': 'Navigeerimine käib',
'native.notification.navigation.keepRunning': 'Navigeerimine, hoia rakendust avatuna', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'Hääleassistendi agent töötab', 'Navigeerimine, hoia rakendust avatuna',
'native.notification.audioRecording.recording': 'Heli salvestamine, puuduta rakendusse naasmiseks', 'native.notification.bleAgent.running': 'Hääleassistendi agent töötab',
'native.notification.music.waiting': 'Ootab esitamist', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Eelmine', 'Heli salvestamine, puuduta rakendusse naasmiseks',
'native.notification.music.next': 'Järgmine', 'native.notification.music.waiting': 'Ootab esitamist',
'native.notification.music.play': 'Esita', 'native.notification.music.previous': 'Eelmine',
'native.notification.music.pause': 'Paus', 'native.notification.music.next': 'Järgmine',
'native.notification.qqMusic.playing': 'Muusika esitamine', 'native.notification.music.play': 'Esita',
'native.notification.music.pause': 'Paus',
'native.notification.qqMusic.playing': 'Muusika esitamine',
// 版本更新 // 版本更新
'newVersionFound': 'Leitud uus versioon', // 版本更新对话框标题 'newVersionFound': 'Leitud uus versioon', // 版本更新对话框标题
@ -1380,6 +1451,59 @@ const Map<String, String> etEE = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Võta mõlemad kõrvaklapid välja ja veendu, et mõlema aku on üle 20%", "Võta mõlemad kõrvaklapid välja ja veendu, et mõlema aku on üle 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Muusikat pole", // 暂无音乐 "noMusic": "Muusikat pole", // 暂无音乐
"noPlayingMusic": "Muusikat ei esitata", // 暂无播放音乐 "noPlayingMusic": "Muusikat ei esitata", // 暂无播放音乐

715
lib/core/translations/language/fa_ir.dart

@ -1,5 +1,4 @@
const Map<String, String> faIR = { const Map<String, String> faIR = {
// 通用 // 通用
'continue': 'ادامه', 'continue': 'ادامه',
'confirm': 'تأیید', 'confirm': 'تأیید',
@ -166,6 +165,29 @@ const Map<String, String> faIR = {
'right': 'راست', 'right': 'راست',
'checkConnectionStatusFailed': 'بررسی وضعیت اتصال ناموفق بود', 'checkConnectionStatusFailed': 'بررسی وضعیت اتصال ناموفق بود',
// 蓝牙扫描模块
'bleInitFailedWithError': 'راه‌اندازی بلوتوث ناموفق بود: @error',
'needBluetoothAndLocationPermission':
'برای اسکن دستگاه‌ها به مجوزهای بلوتوث و موقعیت مکانی نیاز است',
'permissionRequestFailedWithError': 'درخواست مجوز ناموفق بود: @error',
'needPermission': 'مجوز مورد نیاز',
'blePermissionDialogContent':
'این برنامه برای اسکن دستگاه‌ها به مجوزهای بلوتوث و موقعیت مکانی نیاز دارد. لطفاً آن‌ها را در تنظیمات فعال کنید.',
'needEnableBluetooth': 'فعال کردن بلوتوث',
'enableBluetoothDialogContent':
'لطفاً برای اسکن و اتصال دستگاه‌ها بلوتوث را فعال کنید.',
'bleScanFailedWithError': 'اسکن ناموفق بود: @error',
'bleConnectionSuccess': 'اتصال موفقیت‌آمیز',
'bleConnectedToDevice': 'متصل به @device',
'bleConnectionFailedWithError': 'اتصال ناموفق بود: @error',
'bleDisconnected': 'قطع شد',
'bleDeviceDisconnected': 'دستگاه قطع شد',
'bleDisconnectFailedWithError': 'قطع اتصال ناموفق بود: @error',
'signalStrong': 'قوی',
'signalMedium': 'متوسط',
'signalWeak': 'ضعیف',
'signalVeryWeak': 'بسیار ضعیف',
// 发现页 // 发现页
"searchAi": "جستجوی ویژگی‌های هوش مصنوعی...", "searchAi": "جستجوی ویژگی‌های هوش مصنوعی...",
"exploreSlogan": "ایربادهای هوشمند، امکانات بی‌پایان", "exploreSlogan": "ایربادهای هوشمند، امکانات بی‌پایان",
@ -191,260 +213,260 @@ const Map<String, String> faIR = {
"scene": "سناریوها", "scene": "سناریوها",
// 用量统计模块 // 用量统计模块
"aiChat": "AI Chat", "aiChat": "چت هوش مصنوعی",
"translationStats": "Translation Statistics", "translationStats": "آمار ترجمه",
"meetingStats": "Meeting Statistics", "meetingStats": "آمار جلسات",
"today": "Today", "today": "امروز",
"thisWeek": "This Week", "thisWeek": "این هفته",
"thisMonth": "This Month", "thisMonth": "این ماه",
"history": "History", "history": "تاریخچه",
"currentSessionStats": "Current Session Stats", "currentSessionStats": "آمار جلسه فعلی",
"translationCount": "Translation Count", "translationCount": "تعداد ترجمه‌ها",
"sessionDuration": "Session Duration", "sessionDuration": "مدت جلسه",
"characters": "Characters", "characters": "کاراکترها",
"recordingDuration": "Recording Duration", "recordingDuration": "مدت ضبط",
"totalApiCalls": "Total API Calls", "totalApiCalls": "مجموع فراخوانی‌های API",
"sessionCount": "Session Count", "sessionCount": "تعداد جلسات",
"totalCharacters": "Total Characters", "totalCharacters": "مجموع کاراکترها",
"apiCallStats": "API Call Stats", "apiCallStats": "آمار فراخوانی API",
"translationApi": "Translation API", "translationApi": "API ترجمه",
"asr": "ASR", "asr": "تشخیص گفتار",
"tts": "TTS", "tts": "تبدیل متن به گفتار",
"dataVolumeStats": "Data Volume Stats", "dataVolumeStats": "آمار حجم داده",
"sourceTextCharacters": "Source Text Characters", "sourceTextCharacters": "کاراکترهای متن مبدأ",
"ttsTextCharacters": "TTS Text Characters", "ttsTextCharacters": "کاراکترهای متن تبدیل به گفتار",
"effectiveAudioDuration": "Effective Audio Duration", "effectiveAudioDuration": "مدت صوتی مؤثر",
"totalSessionDuration": "Total Session Duration", "totalSessionDuration": "مجموع مدت جلسات",
"costStats": "Cost Stats", "costStats": "آمار هزینه",
"estimatedCost": "Estimated Cost", "estimatedCost": "هزینه تخمینی",
"dailyCostThreshold": "Daily Cost Threshold", "dailyCostThreshold": "سقف هزینه روزانه",
"monthlyCostThreshold": "Monthly Cost Threshold", "monthlyCostThreshold": "سقف هزینه ماهانه",
"usageBehaviorStats": "Usage Behavior Stats", "usageBehaviorStats": "آمار رفتار استفاده",
"mostUsedLanguagePair": "Most-used language pair", "mostUsedLanguagePair": "پرکاربردترین جفت زبانی",
"mostUsedMode": "Most-used mode", "mostUsedMode": "پرکاربردترین حالت",
"asrApiCalls": "ASR Calls", "asrApiCalls": "فراخوانی‌های تشخیص گفتار",
"totalAudioDuration": "Total Audio Duration", "totalAudioDuration": "مجموع مدت صوتی",
"audioFileSize": "Audio File Size", "audioFileSize": "حجم فایل صوتی",
"transcriptBytes": "Transcript Bytes", "transcriptBytes": "حجم متن رونویسی",
"loadFailed": "Load Failed", "loadFailed": "بارگذاری ناموفق",
"statsLoadFailedTryLater": "statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.", "بارگذاری آمار ناموفق بود. لطفاً بعداً دوباره تلاش کنید.",
"cleanupComplete": "Cleanup Complete", "cleanupComplete": "پاکسازی کامل شد",
"cleanedOldData": "Cleaned data older than 90 days", "cleanedOldData": "داده‌های قدیمی‌تر از ۹۰ روز پاک شد",
"exportFeature": "Export Feature", "exportFeature": "قابلیت خروجی",
"exportInDevelopment": "Data export is under development", "exportInDevelopment": "خروجی داده‌ها در حال توسعه است",
// 商品模块 - 通用 // 商品模块 - 通用
'availablePackages': 'Available Packages', 'availablePackages': 'بسته‌های موجود',
'remainingQuota': 'Remaining Quota', 'remainingQuota': 'سهمیه باقی‌مانده',
'totalQuota': 'Total Quota', 'totalQuota': 'سهمیه کل',
'remaining': 'Remaining', 'remaining': 'باقی‌مانده',
'featureDescription': 'Feature Description', 'featureDescription': 'توضیحات ویژگی',
'paymentSuccess': 'پرداخت موفق', 'paymentSuccess': 'پرداخت موفق',
'paymentFailed': 'پرداخت ناموفق', 'paymentFailed': 'پرداخت ناموفق',
'gotIt': 'متوجه شدم', 'gotIt': 'متوجه شدم',
'paymentFailedTryAgain': 'پرداخت ناموفق بود. لطفاً دوباره تلاش کنید.', 'paymentFailedTryAgain': 'پرداخت ناموفق بود. لطفاً دوباره تلاش کنید.',
'selectPaymentMethod': 'روش پرداخت را انتخاب کنید', 'selectPaymentMethod': 'روش پرداخت را انتخاب کنید',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'ایجاد سفارش WeChat Pay ناموفق بود', 'wechatOrderCreateFailed': 'ایجاد سفارش WeChat Pay ناموفق بود',
'alipayOrderCreateFailed': 'ایجاد سفارش Alipay ناموفق بود', 'alipayOrderCreateFailed': 'ایجاد سفارش Alipay ناموفق بود',
'appleOrderCreateFailed': 'ایجاد سفارش Apple ناموفق بود', 'appleOrderCreateFailed': 'ایجاد سفارش Apple ناموفق بود',
'googleOrderCreateFailed': 'ایجاد سفارش Google ناموفق بود', 'googleOrderCreateFailed': 'ایجاد سفارش Google ناموفق بود',
'paypalOrderCreateFailed': 'ایجاد سفارش PayPal ناموفق بود', 'paypalOrderCreateFailed': 'ایجاد سفارش PayPal ناموفق بود',
'paymentException': 'استثنای پرداخت', 'paymentException': 'استثنای پرداخت',
'paymentLaunchFailed': 'راه‌اندازی پرداخت ناموفق بود', 'paymentLaunchFailed': 'راه‌اندازی پرداخت ناموفق بود',
'paymentExceptionWithError': 'استثنای پرداخت: @error', 'paymentExceptionWithError': 'استثنای پرداخت: @error',
'paymentProcessingCheckLater': 'سفارش شما در حال پردازش است. لطفاً بعداً بررسی کنید.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'استعلام نتیجه پرداخت ناموفق بود: @error', 'سفارش شما در حال پردازش است. لطفاً بعداً بررسی کنید.',
'orderConfirmedQuotaRefreshed': 'سفارش تأیید شد. سهمیه شما به‌روزرسانی شد.', 'paymentResultQueryException': 'استعلام نتیجه پرداخت ناموفق بود: @error',
'paymentCompletedConfirming': 'پرداخت انجام شد. در حال تأیید…', 'orderConfirmedQuotaRefreshed': 'سفارش تأیید شد. سهمیه شما به‌روزرسانی شد.',
'paymentCancelled': 'پرداخت لغو شد', 'paymentCompletedConfirming': 'پرداخت انجام شد. در حال تأیید…',
'paypalOpenedCompleteInBrowser': 'PayPal باز شد. لطفاً پرداخت را در مرورگر خود تکمیل کنید.', 'paymentCancelled': 'پرداخت لغو شد',
'paypalOpenFailed': 'امکان باز کردن صفحه پرداخت PayPal وجود ندارد', 'paypalOpenedCompleteInBrowser':
'paymentTestTitle': 'تست پرداخت', 'PayPal باز شد. لطفاً پرداخت را در مرورگر خود تکمیل کنید.',
'paymentTestOrderInfo': 'اطلاعات سفارش آزمایشی', 'paypalOpenFailed': 'امکان باز کردن صفحه پرداخت PayPal وجود ندارد',
'paymentTestProductId': 'شناسه محصول', 'paymentTestTitle': 'تست پرداخت',
'paymentTestProductDescription': 'توضیحات محصول', 'paymentTestOrderInfo': 'اطلاعات سفارش آزمایشی',
'paymentTestWechatDescription': 'تست پرداخت WeChat Pay', 'paymentTestProductId': 'شناسه محصول',
'paymentTestAlipayDescription': 'تست پرداخت Alipay', 'paymentTestProductDescription': 'توضیحات محصول',
'paymentTestAmount': 'مبلغ', 'paymentTestWechatDescription': 'تست پرداخت WeChat Pay',
'paymentTestSelectAmount': 'مبلغ آزمایشی را انتخاب کنید', 'paymentTestAlipayDescription': 'تست پرداخت Alipay',
'paying': 'در حال پرداخت...', 'paymentTestAmount': 'مبلغ',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestSelectAmount': 'مبلغ آزمایشی را انتخاب کنید',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paying': 'در حال پرداخت...',
'paymentStatusTitle': 'وضعیت پرداخت', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'errorInfoWithMessage': 'خطا: @message', 'alipayPayWithAmount': 'Alipay ¥@amount',
'retest': 'آزمایش مجدد', 'paymentStatusTitle': 'وضعیت پرداخت',
'paymentTestInstructionsTitle': 'راهنما', 'errorInfoWithMessage': 'خطا: @message',
'paymentTestInstructionsContent': '1. یک مبلغ تست انتخاب کنید (پیشنهاد: ¥0.01)\n2. برای شروع روی دکمه پرداخت کلیک کنید\n3. پرداخت را در اپلیکیشن پرداخت تکمیل کنید\n4. برای بررسی نتیجه بازگردید', 'retest': 'آزمایش مجدد',
'startingWechatPayment': 'در حال راه‌اندازی WeChat Pay...', 'paymentTestInstructionsTitle': 'راهنما',
'startingAlipayPayment': 'در حال راه‌اندازی Alipay...', 'paymentTestInstructionsContent':
'wechatPaymentSuccess': 'WeChat Pay موفق بود!', '1. یک مبلغ تست انتخاب کنید (پیشنهاد: ¥0.01)\n2. برای شروع روی دکمه پرداخت کلیک کنید\n3. پرداخت را در اپلیکیشن پرداخت تکمیل کنید\n4. برای بررسی نتیجه بازگردید',
'wechatPaymentFailed': 'WeChat Pay ناموفق بود', 'startingWechatPayment': 'در حال راه‌اندازی WeChat Pay...',
'wechatPaymentLaunchFailed': 'راه‌اندازی WeChat Pay ناموفق بود', 'startingAlipayPayment': 'در حال راه‌اندازی Alipay...',
'cannotLaunchWechatPayment': 'امکان راه‌اندازی WeChat Pay وجود ندارد', 'wechatPaymentSuccess': 'WeChat Pay موفق بود!',
'wechatPaymentException': 'استثنای WeChat Pay', 'wechatPaymentFailed': 'WeChat Pay ناموفق بود',
'wechatPaymentTestCompleted': 'تست WeChat Pay تکمیل شد', 'wechatPaymentLaunchFailed': 'راه‌اندازی WeChat Pay ناموفق بود',
'alipayPaymentSuccess': 'Alipay موفق بود!', 'cannotLaunchWechatPayment': 'امکان راه‌اندازی WeChat Pay وجود ندارد',
'alipayPaymentFailed': 'Alipay ناموفق بود', 'wechatPaymentException': 'استثنای WeChat Pay',
'alipayPaymentLaunchFailed': 'راه‌اندازی Alipay ناموفق بود', 'wechatPaymentTestCompleted': 'تست WeChat Pay تکمیل شد',
'cannotLaunchAlipayPayment': 'امکان راه‌اندازی Alipay وجود ندارد', 'alipayPaymentSuccess': 'Alipay موفق بود!',
'alipayPaymentException': 'استثنای Alipay', 'alipayPaymentFailed': 'Alipay ناموفق بود',
"insufficientIntegral": "Insufficient integral", 'alipayPaymentLaunchFailed': 'راه‌اندازی Alipay ناموفق بود',
'cannotLaunchAlipayPayment': 'امکان راه‌اندازی Alipay وجود ندارد',
'alipayPaymentException': 'استثنای Alipay',
"insufficientIntegral": "اعتبار ناکافی",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'موجودی ناکافی است، لطفاً به صفحه شارژ مربوطه بروید و شارژ کنید.',
"recharge": 'Go to Recharge', "recharge": 'رفتن به شارژ',
"aiMemberExpiredDesc": "aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.', 'عضویت هوش مصنوعی منقضی شده است، لطفاً به صفحه شارژ عضویت بروید و تمدید کنید.',
// 商品模块 - AI商品页 // 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation', 'musicAndRecommendation': 'موسیقی و توصیه‌ها',
'navigationAndRoutes': 'Navigation & Routes', 'navigationAndRoutes': 'مسیریابی و مسیرها',
'nearbySearch': 'Nearby Search', 'nearbySearch': 'جستجوی نزدیک',
'newsInformation': 'News', 'newsInformation': 'اخبار',
'communicationAssistant': 'Communication Assistant', 'communicationAssistant': 'دستیار ارتباطی',
'aiHeaderDesc1': 'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.', 'سهمیه مکالمه بیشتر، فراخوانی ابزار بیشتر، طول متن گسترده‌تر.',
'aiHeaderDesc2': 'aiHeaderDesc2': 'مناسب برای پرسش و پاسخ، خلاصه‌سازی، تحلیل و اجرای وظایف.',
'Suitable for agent Q&A, summarization, analysis, and task execution.', 'musicSearchPlaybackControl': 'جستجوی کتابخانه موسیقی و کنترل پخش',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations': 'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations', 'لیست پخش هوشمند و توصیه آهنگ‌های مشابه',
'routePlanningAndCongestionAvoidance': 'routePlanningAndCongestionAvoidance': 'برنامه‌ریزی مسیر و اجتناب از ترافیک',
'Route planning and congestion avoidance', 'voiceBroadcastAndWaypoints': 'راهنمای صوتی و تنظیمات نقاط مسیر',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', 'realTimeWeatherForecast': 'آب و هوای بلادرنگ و پیش‌بینی',
'realTimeWeatherForecast': 'Real-time weather and forecast', 'clothingAdviceAndTravelReminders': 'توصیه پوشاک و یادآوری‌های سفر',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', 'poiSearchFoodGasParking': 'جستجوی مکان: غذا / پمپ بنزین / پارکینگ',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking', 'ratingsHoursAndDirectRoutes': 'امتیازات، ساعات کاری و مسیریابی مستقیم',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', 'hotNewsAndTopicOverview': 'اخبار داغ و مرور موضوعات',
'hotNewsAndTopicOverview': 'Hot news and topic overview', 'longArticleSummariesAndKeyPoints': 'خلاصه مقالات طولانی و نکات کلیدی',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', 'helpCallAndSMS': 'کمک در تماس و پیامک',
'helpCallAndSMS': 'Help with calls and SMS', 'templatedMessagesAndScheduleReminders': 'پیام‌های الگو و یادآوری‌های برنامه',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer': 'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.', 'ویژگی‌ها به مجوزهای دستگاه، در دسترس بودن سرویس و شرایط شبکه بستگی دارند.',
// 商品模块 - 翻译商品页 // 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription', 'realtimeTranscription': 'رونویسی بلادرنگ',
'sceneLexicon': 'Scenario Glossary', 'sceneLexicon': 'واژه‌نامه سناریویی',
'subtitleDisplay': 'Subtitles', 'subtitleDisplay': 'زیرنویس‌ها',
'transHeaderDesc1': 'transHeaderDesc1': 'ترجمه همزمان بلادرنگ و ترجمه متن با صدای کم‌تأخیر.',
'Real-time simultaneous interpretation and text translation with low-latency voice.', 'transHeaderDesc2': 'مناسب برای سفر، تجارت، سخنرانی و آموزش.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', 'translateZhEn': 'ترجمه چینی-انگلیسی',
'translateZhEn': 'Chinese-English translation', 'lowLatencyVoiceBroadcast': 'پخش صوتی کم‌تأخیر',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', 'multiLangTextTranslation': 'ترجمه متن چندزبانه',
'multiLangTextTranslation': 'Multilingual text translation', 'termOptimizationContextPreserve': 'بهینه‌سازی اصطلاحات و حفظ زمینه',
'termOptimizationContextPreserve': 'lexiconTourBusinessLife': 'واژه‌نامه‌های سفر/تجارت/زندگی',
'Terminology optimization and context preservation', 'personalVocabularyMemory': 'حافظه واژگان شخصی',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', 'conversationSubtitleLargeText': 'زیرنویس مکالمه / حالت متن بزرگ',
'personalVocabularyMemory': 'Personal vocabulary memory', 'colorHighContrast': 'کنتراست رنگ بالا',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer': 'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.', 'عملکرد ترجمه به میکروفون، تأخیر شبکه و نویز محیط بستگی دارد.',
// 商品模块 - 会议商品页 // 商品模块 - 会议商品页
'meetingRecording': 'Meeting Recording', 'meetingRecording': 'ضبط جلسه',
'transcriptionAndSummary': 'Transcription & Summary', 'transcriptionAndSummary': 'رونویسی و خلاصه',
'keywordSearch': 'Keyword Search', 'keywordSearch': 'جستجوی کلمات کلیدی',
'collaborationSharing': 'Collaboration & Sharing', 'collaborationSharing': 'همکاری و اشتراک‌گذاری',
'meetingHeaderDesc1': 'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'ضبط صدا، رونویسی، جستجوی کلمات کلیدی و خلاصه خودکار برای افزایش بهره‌وری جلسات.',
'meetingHeaderDesc2': 'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.', 'مناسب برای جلسات کاری، یادداشت کلاس و صورت‌جلسه مصاحبه.',
'meetingAutoRecording': 'Auto recording and segmentation', 'meetingAutoRecording': 'ضبط خودکار و بخش‌بندی',
'meetingSpeakerTagging': 'Speaker labeling', 'meetingSpeakerTagging': 'برچسب‌گذاری گوینده',
'meetingLongAudioTranscription': 'Long audio transcription', 'meetingLongAudioTranscription': 'رونویسی صوتی طولانی',
'meetingKeyPointSummary': 'Key point extraction', 'meetingKeyPointSummary': 'استخراج نکات کلیدی',
'meetingTopicNameSearch': 'Search by topic/name', 'meetingTopicNameSearch': 'جستجو بر اساس موضوع/نام',
'meetingTimelineJump': 'Timeline jump', 'meetingTimelineJump': 'پرش در خط زمانی',
'meetingExportSummary': 'Export minutes', 'meetingExportSummary': 'خروجی صورت‌جلسه',
'meetingMultiPlatformShare': 'Share across platforms', 'meetingMultiPlatformShare': 'اشتراک‌گذاری بین پلتفرم‌ها',
'meetingDisclaimer': 'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.', 'در محیط آرام استفاده کنید؛ عملکرد به میکروفون و شبکه بستگی دارد.',
// 商品模块 - VIP会员页 // 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview', 'benefitsOverview': 'مرور مزایا',
'higherQuota': 'Higher usage quota', 'higherQuota': 'سهمیه استفاده بیشتر',
'lowerUnitPrice': 'Lower unit price', 'lowerUnitPrice': 'قیمت واحد کمتر',
'priorityService': 'Priority service', 'priorityService': 'خدمات اولویت‌دار',
'exclusiveSupportChannel': 'Dedicated support channel', 'exclusiveSupportChannel': 'کانال پشتیبانی اختصاصی',
'fastResponse': 'Fast issue response', 'fastResponse': 'پاسخ سریع به مشکلات',
'eventsAndDiscounts': 'Events and discounts', 'eventsAndDiscounts': 'رویدادها و تخفیف‌ها',
'memberExclusiveEvents': 'Member-exclusive events', 'memberExclusiveEvents': 'رویدادهای ویژه اعضا',
'longTermDiscountPlan': 'Long-term discount plan', 'longTermDiscountPlan': 'طرح تخفیف بلندمدت',
'generalPrivileges': 'General privileges', 'generalPrivileges': 'امتیازات عمومی',
'earlyAccessNewFeatures': 'Early access to new features', 'earlyAccessNewFeatures': 'دسترسی زودهنگام به ویژگی‌های جدید',
'crossDeviceSync': 'Cross-device sync', 'crossDeviceSync': 'همگام‌سازی بین دستگاه‌ها',
'vipDisclaimer': 'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.', 'مزایای واقعی به جزئیات بسته بستگی دارد و ممکن است با نسخه‌ها تغییر کند.',
// 商品模块 - 商品名称与描述 // 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100', 'ai_001_name': 'هوش مصنوعی پایه ۱۰۰',
'ai_002_name': 'AI Basic 500', 'ai_002_name': 'هوش مصنوعی پایه ۵۰۰',
'ai_003_name': 'AI Basic 1000', 'ai_003_name': 'هوش مصنوعی پایه ۱۰۰۰',
'meet_001_name': 'Meeting Basic 100', 'meet_001_name': 'جلسه پایه ۱۰۰',
'meet_002_name': 'Meeting Basic 500', 'meet_002_name': 'جلسه پایه ۵۰۰',
'meet_003_name': 'Meeting Basic 1000', 'meet_003_name': 'جلسه پایه ۱۰۰۰',
'trans_001_name': 'Translation Basic 100', 'trans_001_name': 'ترجمه پایه ۱۰۰',
'trans_002_name': 'Translation Basic 500', 'trans_002_name': 'ترجمه پایه ۵۰۰',
'trans_003_name': 'Translation Basic 1000', 'trans_003_name': 'ترجمه پایه ۱۰۰۰',
'ai_001_desc': 'Includes 100 uses. Access core AI features.', 'ai_001_desc': 'شامل ۱۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.', 'ai_002_desc': 'شامل ۵۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.', 'ai_003_desc': 'شامل ۱۰۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', 'meet_001_desc': 'شامل ۱۰۰ ضبط/رونویسی جلسه.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', 'meet_002_desc': 'شامل ۵۰۰ ضبط/رونویسی جلسه.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', 'meet_003_desc': 'شامل ۱۰۰۰ ضبط/رونویسی جلسه.',
'trans_001_desc': 'Includes 100 translations (voice/text).', 'trans_001_desc': 'شامل ۱۰۰ ترجمه (صوتی/متنی).',
'trans_002_desc': 'Includes 500 translations (voice/text).', 'trans_002_desc': 'شامل ۵۰۰ ترجمه (صوتی/متنی).',
'trans_003_desc': 'Includes 1000 translations (voice/text).', 'trans_003_desc': 'شامل ۱۰۰۰ ترجمه (صوتی/متنی).',
// 商品模块 - 页脚 // 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', 'appNameProvider': 'برنامه: VoiTrans · ارائه‌دهنده: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', 'iapCustomerServiceQQLabel': 'خدمات مشتری IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies', 'copyrightVoitrans': '© ۲۰۲۵ Voitrans Technologies',
// 新手引导 // 新手引导
'skip': "رد کردن", 'skip': "رد کردن",
'next': 'Next', 'next': 'بعدی',
'sayLilyHint': 'Say "Lily Lily" to the mic', 'sayLilyHint': 'به میکروفون بگویید «لیلی لیلی»',
'imHere': 'I’m here~', 'imHere': ' من اینجا هستم~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', 'guideWelcomeWakeAI':
'aiReplyCompleted': 'Lily has finished the reply!', 'به Voitrans خوش آمدید! ابتدا هوش مصنوعی «لیلی» را بیدار کنید.',
'aiThinking': 'Lily is thinking…', 'aiReplyCompleted': 'لیلی پاسخ را تمام کرد!',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'aiThinking': 'لیلی در حال فکر کردن است…',
'confirmInput': 'Confirm Input', 'guideAwakenSuccess': 'عالی! لیلی بیدار شد—از او کمک بخواهید.',
'guideClickSendPrefix': 'Tap send, ', 'confirmInput': 'تأیید ورودی',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideClickSendPrefix': 'روی ارسال ضربه بزنید، ',
'guideWeatherInput': 'What’s the weather today?', 'guideWeatherStart': 'به لیلی بگویید: «آب و هوای امروز چطور است؟»',
'guideWeatherSend': 'Lily will report the weather in real time', 'guideWeatherInput': 'آب و هوای امروز چطور است؟',
'guideWeatherEnd': 'Lily can report weather live—try other commands', 'guideWeatherSend': 'لیلی آب و هوا را به صورت بلادرنگ گزارش می‌دهد',
'guideMusicStart': 'Tell Lily: “Play some rock music”', 'guideWeatherEnd':
'guideMusicInput': 'Play some rock music', 'لیلی می‌تواند آب و هوا را گزارش دهد—دستورات دیگر را امتحان کنید',
'guideMusicSend': 'Lily will find music for you', 'guideMusicStart': 'به لیلی بگویید: «کمی موسیقی راک پخش کن»',
'guideMusicEnd': 'Lily found music—try other commands', 'guideMusicInput': 'کمی موسیقی راک پخش کن',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”', 'guideMusicSend': 'لیلی برای شما موسیقی پیدا می‌کند',
'guideNavInput': 'Navigate to Shenzhen Airport', 'guideMusicEnd': 'لیلی موسیقی پیدا کرد—دستورات دیگر را امتحان کنید',
'guideNavSend': 'Lily will plan the route', 'guideNavStart': 'به لیلی بگویید: «مسیریابی به فرودگاه شنژن»',
'guideNavEnd': 'Navigation set—try other commands', 'guideNavInput': 'مسیریابی به فرودگاه شنژن',
'guideNavSend': 'لیلی مسیر را برنامه‌ریزی می‌کند',
'guideNavEnd': 'مسیریابی تنظیم شد—دستورات دیگر را امتحان کنید',
'guideMeetingStart': 'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”', 'به لیلی بگویید: «یک یادآوری جلسه برای ساعت ۳ فردا ایجاد کن»',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow', 'guideMeetingInput': 'یک یادآوری جلسه برای ساعت ۳ فردا ایجاد کن',
'guideMeetingSend': 'Lily will create a meeting reminder', 'guideMeetingSend': 'لیلی یک یادآوری جلسه ایجاد می‌کند',
'guideMeetingEnd': 'Reminder created—try other commands', 'guideMeetingEnd': 'یادآوری ایجاد شد—دستورات دیگر را امتحان کنید',
'guidePhoneStart': 'Tell Lily: “Call Mom”', 'guidePhoneStart': 'به لیلی بگویید: «به مادر زنگ بزن»',
'guidePhoneInput': 'Call Mom', 'guidePhoneInput': 'به مادر زنگ بزن',
'guidePhoneSend': 'Lily will make the call', 'guidePhoneSend': 'لیلی تماس می‌گیرد',
'guidePhoneEnd': 'Call placed—try other commands', 'guidePhoneEnd': 'تماس برقرار شد—دستورات دیگر را امتحان کنید',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”', 'guideSmsStart': 'به لیلی بگویید: «به پدر پیامک بفرست: برای شام خانه هستم»',
'guideSmsInput': 'Text Dad: I’ll be home for dinner', 'guideSmsInput': 'به پدر پیامک بفرست: برای شام خانه هستم',
'guideSmsSend': 'Lily will send the message', 'guideSmsSend': 'لیلی پیام را ارسال می‌کند',
'guideSmsEnd': 'Message sent—voice control is convenient', 'guideSmsEnd': 'پیام ارسال شد—کنترل صوتی راحت است',
// Meeting模块 - 首页与导航 // Meeting模块 - 首页与导航
"startMeeting": "شروع جلسه", "startMeeting": "شروع جلسه",
@ -537,21 +559,22 @@ const Map<String, String> faIR = {
'selectSummaryTemplate': 'انتخاب الگوی خلاصه', 'selectSummaryTemplate': 'انتخاب الگوی خلاصه',
'useThisTemplate': 'استفاده از این الگو', 'useThisTemplate': 'استفاده از این الگو',
'lastUsed': 'آخرین استفاده‌شده', 'lastUsed': 'آخرین استفاده‌شده',
'create': 'ایجاد', 'create': 'ایجاد',
'templateDetails': 'جزئیات قالب', 'templateDetails': 'جزئیات قالب',
'tag': 'برچسب', 'tag': 'برچسب',
'description': 'توضیحات', 'description': 'توضیحات',
'template': 'قالب', 'template': 'قالب',
'deleteTemplate': 'حذف قالب', 'deleteTemplate': 'حذف قالب',
'deleteTemplateConfirm': 'آیا مطمئن هستید که می‌خواهید این قالب را حذف کنید؟', 'deleteTemplateConfirm': 'آیا مطمئن هستید که می‌خواهید این قالب را حذف کنید؟',
'editTemplate': 'ویرایش قالب', 'editTemplate': 'ویرایش قالب',
'createTemplate': 'ایجاد قالب', 'createTemplate': 'ایجاد قالب',
'name': 'نام', 'name': 'نام',
'templateContentHint': 'لطفاً محتوای قالب را وارد کنید! نکته: برای تولید سریع محتوای قالب بر اساس نام و توضیحاتی که وارد کرده‌اید، روی دکمه AI بالا کلیک کنید', 'templateContentHint':
'inputNameHint': 'لطفاً نام را وارد کنید', 'لطفاً محتوای قالب را وارد کنید! نکته: برای تولید سریع محتوای قالب بر اساس نام و توضیحاتی که وارد کرده‌اید، روی دکمه AI بالا کلیک کنید',
'inputDescHint': 'لطفاً توضیحات را وارد کنید', 'inputNameHint': 'لطفاً نام را وارد کنید',
'custom': 'سفارشی', 'inputDescHint': 'لطفاً توضیحات را وارد کنید',
'pleaseEnter': 'لطفا وارد کنید', 'custom': 'سفارشی',
'pleaseEnter': 'لطفا وارد کنید',
'viewAll': 'مشاهده همه', 'viewAll': 'مشاهده همه',
'recordingLanguage': 'زبان ضبط', 'recordingLanguage': 'زبان ضبط',
'chineseSimplified': 'چینی ماندارین (ساده‌شده)', 'chineseSimplified': 'چینی ماندارین (ساده‌شده)',
@ -574,7 +597,7 @@ const Map<String, String> faIR = {
'fileProcessingFailed': 'پردازش فایل ناموفق بود: {filePath}, خطا: {error}', 'fileProcessingFailed': 'پردازش فایل ناموفق بود: {filePath}, خطا: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'ذخیره نقشه ذهنی', 'saveMindMap': 'ذخیره نقشه ذهنی',
'shareMindMap': 'اشتراک‌گذاری نقشه ذهنی', 'shareMindMap': 'اشتراک‌گذاری نقشه ذهنی',
'shareSuccess': 'اشتراک‌گذاری موفقیت‌آمیز بود', 'shareSuccess': 'اشتراک‌گذاری موفقیت‌آمیز بود',
@ -596,7 +619,7 @@ const Map<String, String> faIR = {
'exportSummary': 'خروجی خلاصه', 'exportSummary': 'خروجی خلاصه',
'exportAs': 'خروجی به عنوان', 'exportAs': 'خروجی به عنوان',
'exportingPDF': 'در حال خروجی گرفتن PDF...', 'exportingPDF': 'در حال خروجی گرفتن PDF...',
'export': 'صادر کردن', 'export': 'صادر کردن',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'اعمال روی همه پاراگراف‌های این گوینده', 'applyToAllParagraphs': 'اعمال روی همه پاراگراف‌های این گوینده',
@ -708,18 +731,18 @@ const Map<String, String> faIR = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'زبان ناشناخته', 'meetingUnknownLanguage': 'زبان ناشناخته',
'analysisFailed': 'تحلیل ناموفق بود، لطفاً بعداً دوباره تلاش کنید', 'analysisFailed': 'تحلیل ناموفق بود، لطفاً بعداً دوباره تلاش کنید',
'transcriptionFailed': 'رونویسی ناموفق بود، لطفاً بعداً دوباره تلاش کنید', 'transcriptionFailed': 'رونویسی ناموفق بود، لطفاً بعداً دوباره تلاش کنید',
'summaryFailed': 'خلاصه‌سازی ناموفق بود، لطفاً بعداً دوباره تلاش کنید', 'summaryFailed': 'خلاصه‌سازی ناموفق بود، لطفاً بعداً دوباره تلاش کنید',
'summaryFailedShort': 'خلاصه‌سازی ناموفق', 'summaryFailedShort': 'خلاصه‌سازی ناموفق',
'transcriptionFailedShort': 'رونویسی ناموفق', 'transcriptionFailedShort': 'رونویسی ناموفق',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'پخش‌کننده صدا آماده نیست، لطفاً صبر کنید', 'playerNotReady': 'پخش‌کننده صدا آماده نیست، لطفاً صبر کنید',
'playFailed': 'پخش ناموفق بود', 'playFailed': 'پخش ناموفق بود',
'audioFileNotFound': 'فایل صوتی یافت نشد', 'audioFileNotFound': 'فایل صوتی یافت نشد',
'fetchingAudio': 'در حال دریافت صدا از فضای ابری...', 'fetchingAudio': 'در حال دریافت صدا از فضای ابری...',
'playerLoadFailed': 'بارگذاری پخش‌کننده صدا ناموفق بود', 'playerLoadFailed': 'بارگذاری پخش‌کننده صدا ناموفق بود',
// 设置页 // 设置页
"systemSettings": "تنظیمات سیستم", "systemSettings": "تنظیمات سیستم",
@ -728,10 +751,10 @@ const Map<String, String> faIR = {
"translationRecharge": "شارژ ترجمه", "translationRecharge": "شارژ ترجمه",
"meetingAssistantRecharge": "شارژ کمک‌کننده جلسه", "meetingAssistantRecharge": "شارژ کمک‌کننده جلسه",
"cloudSync": "شارژ همگام‌سازی ابری", "cloudSync": "شارژ همگام‌سازی ابری",
"memberService": "Member Service", "memberService": "خدمات عضویت",
"bindRewardTitle": "Rewards", "bindRewardTitle": "جوایز",
"bindRewardSimpleDesc": "bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.", "جایزه اولین اتصال دستگاه صادر شد. برای بستن روی تأیید ضربه بزنید.",
"joinDevice": "دستگاه متصل:", "joinDevice": "دستگاه متصل:",
"accountId": "شناسه حساب:", "accountId": "شناسه حساب:",
"systemSetting": "تنظیمات سیستم", "systemSetting": "تنظیمات سیستم",
@ -822,8 +845,9 @@ const Map<String, String> faIR = {
"loadFailedClickRetry": "بارگیری ناموفق بود، برای تلاش مجدد کلیک کنید", "loadFailedClickRetry": "بارگیری ناموفق بود، برای تلاش مجدد کلیک کنید",
"swipeUpForMore": "برای مشاهده بیشتر به بالا بکشید", "swipeUpForMore": "برای مشاهده بیشتر به بالا بکشید",
"callingTool": "در حال کمک به شما هستم، لطفاً صبر کنید!", // 正在帮您,请稍等! "callingTool": "در حال کمک به شما هستم، لطفاً صبر کنید!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "قطع صدا", // 语音打断
'voice_interrupt_tip': 'وقتی فعال است: هوش مصنوعی هنگام صحبت کردن توسط صدای شما قطع نمی‌شود و فقط می‌تواند یک دور مکالمه را در هر بار پردازش کند. برای شروع دور جدید، کافی است کلمه بیدارسازی را بگویید.', 'voice_interrupt_tip':
'وقتی فعال است: هوش مصنوعی هنگام صحبت کردن توسط صدای شما قطع نمی‌شود و فقط می‌تواند یک دور مکالمه را در هر بار پردازش کند. برای شروع دور جدید، کافی است کلمه بیدارسازی را بگویید.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "پخش موسیقی", // 来点音乐 "presetMusic": "پخش موسیقی", // 来点音乐
@ -878,6 +902,13 @@ const Map<String, String> faIR = {
'ما می‌خواهیم دلیل گزارش شما را بدانیم، می‌توانید مشکلی را که با آن مواجه شدید توصیف کنید.', 'ما می‌خواهیم دلیل گزارش شما را بدانیم، می‌توانید مشکلی را که با آن مواجه شدید توصیف کنید.',
'generatedByAi': 'تولید شده توسط هوش مصنوعی', 'generatedByAi': 'تولید شده توسط هوش مصنوعی',
// Agent模块 - 工具调用
'toolCall': 'فراخوانی ابزار',
'noResult': 'نتیجه‌ای یافت نشد',
'noToolCallContentToCopy': 'محتوای فراخوانی ابزار برای کپی وجود ندارد',
'toolCallDetails': 'جزئیات فراخوانی ابزار:',
'toolCallContentCopied': 'محتوای فراخوانی ابزار در کلیپ‌بورد کپی شد',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'در اینجا چند موسیقی توصیه‌شده وجود دارد:', 'recommendedMusic': 'در اینجا چند موسیقی توصیه‌شده وجود دارد:',
'playList': 'لیست پخش', 'playList': 'لیست پخش',
@ -898,6 +929,29 @@ const Map<String, String> faIR = {
"bicycling": "دوچرخه‌سواری", "bicycling": "دوچرخه‌سواری",
"tsransit": "حمل و نقل عمومی", "tsransit": "حمل و نقل عمومی",
// Agent模块 - 导航选择
'selectNavigationApp': 'انتخاب برنامه مسیریابی',
'amapMap': 'نقشه Amap',
'useAmapNavigation': 'مسیریابی با Amap',
'baiduMap': 'نقشه بایدو',
'useBaiduNavigation': 'مسیریابی با نقشه بایدو',
'googleMap': 'نقشه گوگل',
'useGoogleNavigation': 'مسیریابی با نقشه گوگل',
'appleMap': 'نقشه اپل',
'useAppleNavigation': 'مسیریابی با نقشه اپل',
'builtInNavigation': 'مسیریابی داخلی',
'useBuiltInNavigation': 'مسیریابی با نقشه داخلی',
'navigationStartFailed': 'شروع مسیریابی ناموفق بود',
'cannotPlayMusicListRetryLater':
'امکان پخش لیست موسیقی نیست، لطفاً بعداً دوباره تلاش کنید',
'cannotPlaySong': 'امکان پخش آهنگ نیست',
'openMapError': 'خطا در باز کردن نقشه',
'pleaseInstallAmapApp': 'لطفاً ابتدا برنامه Amap را نصب کنید',
'pleaseInstallBaiduMapApp': 'لطفاً ابتدا برنامه نقشه بایدو را نصب کنید',
'appleMapStartFailed': 'شروع نقشه اپل ناموفق بود',
'appleMapUnavailable': 'نقشه اپل در دسترس نیست',
'openAppleMapError': 'خطا در باز کردن نقشه اپل',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'استعلام آب و هوا:', 'weatherQuery': 'استعلام آب و هوا:',
'highest': 'حداکثر', 'highest': 'حداکثر',
@ -965,19 +1019,29 @@ const Map<String, String> faIR = {
"me": "من", "me": "من",
"counterPart": "طرف مقابل", "counterPart": "طرف مقابل",
"bluetoothCallStateError": "bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state", "لطفاً مطمئن شوید هدست بلوتوث به تلفن متصل و در حالت تماس است",
"autoDetect": "تشخیص خودکار", // 自动检测 "autoDetect": "تشخیص خودکار", // 自动检测
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "تشخیص زبان ناموفق بود",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text", // 翻译模块 - 悬浮窗与权限
"textTooLong": "Text too long, max 5000 characters", 'disableFloatingWindow': 'غیرفعال کردن پنجره شناور',
'enableFloatingWindow': 'فعال کردن پنجره شناور',
'permissionTip': 'نکته مجوز',
'micPermissionRequiredForRecording': 'مجوز میکروفون برای ضبط الزامی است',
'deleteTranslationRecordError': 'خطا در حذف سابقه ترجمه: @error',
"translationFailed": "ترجمه ناموفق بود",
"translating": "در حال ترجمه",
"translate": "ترجمه",
"pleaseInputText": "لطفاً متن را وارد کنید",
"inputTextToTranslate": "لطفاً متن مورد نظر برای ترجمه را وارد کنید",
"textTooLong": "متن بیش از حد طولانی است، حداکثر ۵۰۰۰ کاراکتر",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
"noTranslationHistory": "تاریخچه ترجمه وجود ندارد", "noTranslationHistory": "تاریخچه ترجمه وجود ندارد",
"historyRecords": "History Records", "historyRecords": "سوابق تاریخچه",
"clearResults": "Clear Results", "clearResults": "پاک کردن نتایج",
"clearHistory": "پاک کردن تاریخچه", "clearHistory": "پاک کردن تاریخچه",
"clearHistoryConfirm": "clearHistoryConfirm":
"آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.", "آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.",
@ -987,28 +1051,28 @@ const Map<String, String> faIR = {
"آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.", "آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.",
// 翻译模块 - 图片翻译 // 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source", "selectImageSource": "انتخاب منبع تصویر",
"imagePreview": "Image Preview", "imagePreview": "پیش‌نمایش تصویر",
"translationResult": "Translation Result", "translationResult": "نتیجه ترجمه",
"recognitionResult": "Recognition Result", "recognitionResult": "نتیجه تشخیص",
"translatedImagePreview": "Translated Image Preview", "translatedImagePreview": "پیش‌نمایش تصویر ترجمه‌شده",
"translatedImageLoadFailed": "Failed to load translated image", "translatedImageLoadFailed": "بارگذاری تصویر ترجمه‌شده ناموفق بود",
"pleaseSelectImage": "Please select an image", "pleaseSelectImage": "لطفاً یک تصویر انتخاب کنید",
"imageLoadFailed": "Image load failed", "imageLoadFailed": "بارگذاری تصویر ناموفق بود",
"imageQuality": "Image Quality", "imageQuality": "کیفیت تصویر",
"maxSize": "Max Size", "maxSize": "حداکثر اندازه",
"close": "Close", "close": "بستن",
"setImageQuality": "Set Image Quality", "setImageQuality": "تنظیم کیفیت تصویر",
"currentQuality": "Current quality: @value%", "currentQuality": "کیفیت فعلی: @value%",
"setMaxSize": "Set Max Size", "setMaxSize": "تنظیم حداکثر اندازه",
"currentMaxSize": "Current: @pxpx", "currentMaxSize": "فعلی: @pxpx",
"waitingForAction": "Waiting for action", "waitingForAction": "در انتظار اقدام",
"pleaseSelectImageToStart": "Please select an image to start", "pleaseSelectImageToStart": "لطفاً برای شروع یک تصویر انتخاب کنید",
"chooseImage": "Choose Image", "chooseImage": "انتخاب تصویر",
"openingCamera": "Opening camera...", "openingCamera": "در حال باز کردن دوربین...",
"openingPhotoAlbum": "Opening photo album...", "openingPhotoAlbum": "در حال باز کردن آلبوم عکس...",
"cancelled": "Cancelled", "cancelled": "لغو شد",
"userCancelledSelection": "User cancelled selection", "userCancelledSelection": "کاربر انتخاب را لغو کرد",
"translatingImage": "Translating Image", "translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...", "callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record", "savingRecord": "Saving Record",
@ -1243,17 +1307,19 @@ const Map<String, String> faIR = {
'permissionUtilConfirm': 'تأیید', 'permissionUtilConfirm': 'تأیید',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'مسیریابی در جریان است', 'native.notification.navigation.title': 'مسیریابی در جریان است',
'native.notification.navigation.keepRunning': 'در حال مسیریابی، اپلیکیشن را باز نگه دارید', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'دستیار صوتی در حال اجراست', 'در حال مسیریابی، اپلیکیشن را باز نگه دارید',
'native.notification.audioRecording.recording': 'در حال ضبط صدا، برای بازگشت به اپلیکیشن ضربه بزنید', 'native.notification.bleAgent.running': 'دستیار صوتی در حال اجراست',
'native.notification.music.waiting': 'در انتظار پخش', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'قبلی', 'در حال ضبط صدا، برای بازگشت به اپلیکیشن ضربه بزنید',
'native.notification.music.next': 'بعدی', 'native.notification.music.waiting': 'در انتظار پخش',
'native.notification.music.play': 'پخش', 'native.notification.music.previous': 'قبلی',
'native.notification.music.pause': 'توقف', 'native.notification.music.next': 'بعدی',
'native.notification.qqMusic.playing': 'در حال پخش موسیقی', 'native.notification.music.play': 'پخش',
'native.notification.music.pause': 'توقف',
'native.notification.qqMusic.playing': 'در حال پخش موسیقی',
// 版本更新 // 版本更新
'newVersionFound': 'نسخه جدید یافت شد', // 版本更新对话框标题 'newVersionFound': 'نسخه جدید یافت شد', // 版本更新对话框标题
@ -1391,6 +1457,59 @@ const Map<String, String> faIR = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"هر دو ایرباد را بردارید و اطمینان حاصل کنید که سطح باتری بالای ۲۰٪ است", "هر دو ایرباد را بردارید و اطمینان حاصل کنید که سطح باتری بالای ۲۰٪ است",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "بدون موسیقی", // 暂无音乐 "noMusic": "بدون موسیقی", // 暂无音乐
"noPlayingMusic": "موسیقی در حال پخش نیست", // 暂无播放音乐 "noPlayingMusic": "موسیقی در حال پخش نیست", // 暂无播放音乐

102
lib/core/translations/language/fi_fi.dart

@ -169,6 +169,26 @@ const Map<String, String> fiFI = {
'right': 'Oikea', 'right': 'Oikea',
'checkConnectionStatusFailed': 'Yhteyden tilan tarkistus epäonnistui', 'checkConnectionStatusFailed': 'Yhteyden tilan tarkistus epäonnistui',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth-alustus epäonnistui: @error',
'needBluetoothAndLocationPermission': 'Bluetooth- ja sijaintiluvat tarvitaan laitteiden etsimiseen',
'permissionRequestFailedWithError': 'Lupapyyntö epäonnistui: @error',
'needPermission': 'Lupa vaaditaan',
'blePermissionDialogContent': 'Sovellus tarvitsee Bluetooth- ja sijaintiluvat laitteiden etsimiseen. Ota ne käyttöön Asetuksissa.',
'needEnableBluetooth': 'Ota Bluetooth käyttöön',
'enableBluetoothDialogContent': 'Ota Bluetooth käyttöön laitteiden etsimistä ja yhdistämistä varten.',
'bleScanFailedWithError': 'Etsintä epäonnistui: @error',
'bleConnectionSuccess': 'Yhdistäminen onnistui',
'bleConnectedToDevice': 'Yhdistetty laitteeseen @device',
'bleConnectionFailedWithError': 'Yhdistäminen epäonnistui: @error',
'bleDisconnected': 'Yhteys katkaistu',
'bleDeviceDisconnected': 'Laitteen yhteys katkaistu',
'bleDisconnectFailedWithError': 'Yhteyden katkaisu epäonnistui: @error',
'signalStrong': 'Vahva signaali',
'signalMedium': 'Keskitason signaali',
'signalWeak': 'Heikko signaali',
'signalVeryWeak': 'Erittäin heikko signaali',
// 发现页 // 发现页
"searchAi": "Etsi AI-toimintoja...", "searchAi": "Etsi AI-toimintoja...",
"exploreSlogan": "Älykkäät kuulokkeet, loputtomat mahdollisuudet", "exploreSlogan": "Älykkäät kuulokkeet, loputtomat mahdollisuudet",
@ -876,6 +896,13 @@ const Map<String, String> fiFI = {
'Haluamme tietää, miksi ilmoitat, voit kuvailla kohtaamaasi ongelmaa.', 'Haluamme tietää, miksi ilmoitat, voit kuvailla kohtaamaasi ongelmaa.',
'generatedByAi': 'AI:n luoma', 'generatedByAi': 'AI:n luoma',
// Agent模块 - 工具调用
'toolCall': 'Työkalukutsu',
'noResult': 'Ei tulosta',
'noToolCallContentToCopy': 'Ei työkalukutsua kopioitavaksi',
'toolCallDetails': 'Työkalukutsun tiedot:',
'toolCallContentCopied': 'Työkalukutsu kopioitu leikepöydälle',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Tässä on joitain suositeltuja kappaleita:', 'recommendedMusic': 'Tässä on joitain suositeltuja kappaleita:',
'playList': 'Soittolista', 'playList': 'Soittolista',
@ -896,6 +923,28 @@ const Map<String, String> fiFI = {
"bicycling": 'Pyörällä', "bicycling": 'Pyörällä',
"tsransit": 'Julkinen liikenne', "tsransit": 'Julkinen liikenne',
// Agent模块 - 导航选择
'selectNavigationApp': 'Valitse navigointisovellus',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigoi Amapilla',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigoi Baidu Mapsilla',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigoi Google Mapsilla',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigoi Apple Mapsilla',
'builtInNavigation': 'Sisäänrakennettu navigointi',
'useBuiltInNavigation': 'Navigoi sisäänrakennetulla kartalla',
'navigationStartFailed': 'Navigoinnin käynnistys epäonnistui',
'cannotPlayMusicListRetryLater': 'Musiikkilistaa ei voi toistaa, yritä myöhemmin',
'cannotPlaySong': 'Kappaletta ei voi toistaa',
'openMapError': 'Virhe kartan avaamisessa',
'pleaseInstallAmapApp': 'Asenna Amap-sovellus ensin',
'pleaseInstallBaiduMapApp': 'Asenna Baidu Maps -sovellus ensin',
'appleMapStartFailed': 'Apple Maps ei käynnistynyt',
'appleMapUnavailable': 'Apple Maps ei ole käytettävissä',
'openAppleMapError': 'Virhe Apple Mapsin avaamisessa',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Säätietojen kysely:', 'weatherQuery': 'Säätietojen kysely:',
'highest': 'Korkein', 'highest': 'Korkein',
@ -966,8 +1015,18 @@ const Map<String, String> fiFI = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Poista kelluva ikkuna käytöstä',
'enableFloatingWindow': 'Ota kelluva ikkuna käyttöön',
'permissionTip': 'Lupavihje',
'micPermissionRequiredForRecording': 'Mikrofonilupa vaaditaan äänitystä varten',
'deleteTranslationRecordError': 'Virhe käännöstietueen poistamisessa: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Käännetään",
"translate": "Käännä",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Syötä käännettävä teksti",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1389,6 +1448,49 @@ const Map<String, String> fiFI = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Poista molemmat kuulokkeet ja varmista, että molempien akun varaus on yli 20%", "Poista molemmat kuulokkeet ja varmista, että molempien akun varaus on yli 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Uusi versio @version löytyi',
'otaConfirmUpdateNow': 'Päivitä nyt?',
'otaUpdate': 'Päivitä',
'otaUpgradeSuccess': 'Päivitys onnistui',
'otaUpgradeCompleteRepair': 'Laiteohjelmiston päivitys valmis!\n\nLaite täytyy parittaa uudelleen. Siirry paritussivulle?',
'otaPairLater': 'Parita myöhemmin',
'otaPairNow': 'Parita nyt',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Virhe BLE-tarkistuksessa: @error',
'otaBleNotConnected': 'BLE-laite ei yhdistetty',
'otaBleNeedConnection': 'Päivitys vaatii BLE-yhteyden\nVarmista että laite on yhdistetty ja yritä uudelleen',
'otaDeviceInfoUnavailableTitle': 'Laitteen tiedot eivät saatavilla',
'otaCannotGetDeviceInfo': 'Laitteen tietoja ei voi hakea\nYhdistä laite uudelleen tai yritä myöhemmin',
'otaBleCheckFailed': 'BLE-tarkistus epäonnistui',
'otaCannotGetDeviceInfoCheckConnection': 'Laitteen tietoja ei voi hakea, tarkista yhteys',
'otaCannotGetProductInfoWithName': 'Tuotetietoja ei voi hakea, laitteen nimi: @deviceName',
'otaCannotGetBatteryInfo': 'Akkutietoja ei voi hakea',
'otaLowBattery': 'Akku vähissä',
'otaSingleBatteryLow': 'Akku liian vähissä päivitykseen\nVaatimus: akku yli 20%\nNykyinen: @ear @battery%\nLataa ja yritä uudelleen',
'otaDoubleBatteryLow': 'Akku liian vähissä päivitykseen\nVaatimus: molemmat kuulokkeet yli 20%\nNykyinen: Vasen @left%, Oikea @right%\nLataa ja yritä uudelleen',
'otaBatteryCheckFailed': 'Akkutarkistus epäonnistui',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'Päivitys sisältää suorituskykyparannuksia ja virhekorjauksia.',
'otaGetLatestVersionFailed': 'Uusimman version haku epäonnistui',
'otaGetVersionInfoFailed': 'Versiotietojen haku epäonnistui',
'otaCheckingDeviceStatus': 'Tarkistetaan laitteen tilaa...',
'otaDownloadFailedCheckNetwork': 'Lataus epäonnistui, tarkista verkkoyhteys',
'otaDownloadFailed': 'Lataus epäonnistui',
'otaPreparingConnection': 'Valmistellaan yhteyttä...',
'otaConnectingDevice': 'Yhdistetään laitteeseen...',
'otaUpgradeStarted': 'OTA-päivitys aloitettu...',
'otaUpgradeProgressWithPercent': 'Päivityksen edistyminen: @percent%',
'otaUpgradeSuccessComplete': 'Päivitys onnistui',
'otaUpgradeFailedWithCode': 'Päivitys epäonnistui, virhekoodi: @code',
'otaUpgradeFailedTitle': 'Päivitys epäonnistui',
'otaUpgradeFailedDesc': 'Tarkista yhteys tai päivityspaketti, virhekoodi: @code',
'otaDeviceDisconnected': 'Laitteen yhteys katkaistu',
'otaDeviceConnected': 'Laite yhdistetty',
// 音乐模块 // 音乐模块
"noMusic": "Ei musiikkia", // 暂无音乐 "noMusic": "Ei musiikkia", // 暂无音乐
"noPlayingMusic": "Ei soitettavaa musiikkia", // 暂无播放音乐 "noPlayingMusic": "Ei soitettavaa musiikkia", // 暂无播放音乐

1002
lib/core/translations/language/fr_fr.dart

File diff suppressed because it is too large

339
lib/core/translations/language/hi_in.dart

@ -1,5 +1,4 @@
const Map<String, String> hiIN = { const Map<String, String> hiIN = {
// 通用 // 通用
'continue': 'जारी रखें', 'continue': 'जारी रखें',
'confirm': 'पुष्टि करें', 'confirm': 'पुष्टि करें',
@ -167,6 +166,29 @@ const Map<String, String> hiIN = {
'right': 'दायां', 'right': 'दायां',
'checkConnectionStatusFailed': 'कनेक्शन स्थिति की जाँच करने में विफल', 'checkConnectionStatusFailed': 'कनेक्शन स्थिति की जाँच करने में विफल',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "एआई फ़ंक्शन खोजें...", "searchAi": "एआई फ़ंक्शन खोजें...",
"exploreSlogan": "स्मार्ट ईयरफोन, अनंत संभावनाएं", "exploreSlogan": "स्मार्ट ईयरफोन, अनंत संभावनाएं",
@ -242,60 +264,64 @@ const Map<String, String> hiIN = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'भुगतान सफल', 'paymentSuccess': 'भुगतान सफल',
'paymentFailed': 'भुगतान विफल', 'paymentFailed': 'भुगतान विफल',
'gotIt': 'समझ गया', 'gotIt': 'समझ गया',
'paymentFailedTryAgain': 'भुगतान विफल। कृपया पुनः प्रयास करें।', 'paymentFailedTryAgain': 'भुगतान विफल। कृपया पुनः प्रयास करें।',
'selectPaymentMethod': 'भुगतान विधि चुनें', 'selectPaymentMethod': 'भुगतान विधि चुनें',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'WeChat ऑर्डर बनाने में विफल', 'wechatOrderCreateFailed': 'WeChat ऑर्डर बनाने में विफल',
'alipayOrderCreateFailed': 'Alipay ऑर्डर बनाने में विफल', 'alipayOrderCreateFailed': 'Alipay ऑर्डर बनाने में विफल',
'appleOrderCreateFailed': 'Apple ऑर्डर बनाने में विफल', 'appleOrderCreateFailed': 'Apple ऑर्डर बनाने में विफल',
'googleOrderCreateFailed': 'Google ऑर्डर बनाने में विफल', 'googleOrderCreateFailed': 'Google ऑर्डर बनाने में विफल',
'paypalOrderCreateFailed': 'PayPal ऑर्डर बनाने में विफल', 'paypalOrderCreateFailed': 'PayPal ऑर्डर बनाने में विफल',
'paymentException': 'भुगतान में समस्या', 'paymentException': 'भुगतान में समस्या',
'paymentLaunchFailed': 'भुगतान शुरू करने में विफल', 'paymentLaunchFailed': 'भुगतान शुरू करने में विफल',
'paymentExceptionWithError': 'भुगतान में समस्या: @error', 'paymentExceptionWithError': 'भुगतान में समस्या: @error',
'paymentProcessingCheckLater': 'आपका ऑर्डर प्रोसेस हो रहा है। कृपया बाद में जाँचें।', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'भुगतान परिणाम की जाँच विफल: @error', 'आपका ऑर्डर प्रोसेस हो रहा है। कृपया बाद में जाँचें।',
'orderConfirmedQuotaRefreshed': 'ऑर्डर की पुष्टि हो गई। आपका कोटा रीफ़्रेश हो गया है।', 'paymentResultQueryException': 'भुगतान परिणाम की जाँच विफल: @error',
'paymentCompletedConfirming': 'भुगतान पूरा हुआ। पुष्टि हो रही है…', 'orderConfirmedQuotaRefreshed':
'paymentCancelled': 'भुगतान रद्द किया गया', 'ऑर्डर की पुष्टि हो गई। आपका कोटा रीफ़्रेश हो गया है।',
'paypalOpenedCompleteInBrowser': 'PayPal खुल गया है। कृपया ब्राउज़र में भुगतान पूरा करें।', 'paymentCompletedConfirming': 'भुगतान पूरा हुआ। पुष्टि हो रही है…',
'paypalOpenFailed': 'PayPal भुगतान पृष्ठ नहीं खोल सकते', 'paymentCancelled': 'भुगतान रद्द किया गया',
'paymentTestTitle': 'भुगतान परीक्षण', 'paypalOpenedCompleteInBrowser':
'paymentTestOrderInfo': 'परीक्षण ऑर्डर जानकारी', 'PayPal खुल गया है। कृपया ब्राउज़र में भुगतान पूरा करें।',
'paymentTestProductId': 'उत्पाद ID', 'paypalOpenFailed': 'PayPal भुगतान पृष्ठ नहीं खोल सकते',
'paymentTestProductDescription': 'उत्पाद विवरण', 'paymentTestTitle': 'भुगतान परीक्षण',
'paymentTestWechatDescription': 'WeChat भुगतान परीक्षण', 'paymentTestOrderInfo': 'परीक्षण ऑर्डर जानकारी',
'paymentTestAlipayDescription': 'Alipay भुगतान परीक्षण', 'paymentTestProductId': 'उत्पाद ID',
'paymentTestAmount': 'राशि', 'paymentTestProductDescription': 'उत्पाद विवरण',
'paymentTestSelectAmount': 'परीक्षण राशि चुनें', 'paymentTestWechatDescription': 'WeChat भुगतान परीक्षण',
'paying': 'भुगतान हो रहा है...', 'paymentTestAlipayDescription': 'Alipay भुगतान परीक्षण',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAmount': 'राशि',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestSelectAmount': 'परीक्षण राशि चुनें',
'paymentStatusTitle': 'भुगतान स्थिति', 'paying': 'भुगतान हो रहा है...',
'errorInfoWithMessage': 'त्रुटि: @message', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'retest': 'पुनः परीक्षण', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsTitle': 'निर्देश', 'paymentStatusTitle': 'भुगतान स्थिति',
'paymentTestInstructionsContent': '1. परीक्षण राशि चुनें (अनुशंसित: ¥0.01)\n2. शुरू करने के लिए भुगतान बटन दबाएँ\n3. भुगतान ऐप में भुगतान पूरा करें\n4. परिणाम जाँचने के लिए वापस आएँ', 'errorInfoWithMessage': 'त्रुटि: @message',
'startingWechatPayment': 'WeChat Pay खोल रहे हैं...', 'retest': 'पुनः परीक्षण',
'startingAlipayPayment': 'Alipay खोल रहे हैं...', 'paymentTestInstructionsTitle': 'निर्देश',
'wechatPaymentSuccess': 'WeChat Pay भुगतान सफल!', 'paymentTestInstructionsContent':
'wechatPaymentFailed': 'WeChat Pay भुगतान विफल', '1. परीक्षण राशि चुनें (अनुशंसित: ¥0.01)\n2. शुरू करने के लिए भुगतान बटन दबाएँ\n3. भुगतान ऐप में भुगतान पूरा करें\n4. परिणाम जाँचने के लिए वापस आएँ',
'wechatPaymentLaunchFailed': 'WeChat Pay खोलने में विफल', 'startingWechatPayment': 'WeChat Pay खोल रहे हैं...',
'cannotLaunchWechatPayment': 'WeChat Pay नहीं खोल सकते', 'startingAlipayPayment': 'Alipay खोल रहे हैं...',
'wechatPaymentException': 'WeChat Pay में समस्या', 'wechatPaymentSuccess': 'WeChat Pay भुगतान सफल!',
'wechatPaymentTestCompleted': 'WeChat Pay भुगतान परीक्षण पूरा', 'wechatPaymentFailed': 'WeChat Pay भुगतान विफल',
'alipayPaymentSuccess': 'Alipay भुगतान सफल!', 'wechatPaymentLaunchFailed': 'WeChat Pay खोलने में विफल',
'alipayPaymentFailed': 'Alipay भुगतान विफल', 'cannotLaunchWechatPayment': 'WeChat Pay नहीं खोल सकते',
'alipayPaymentLaunchFailed': 'Alipay खोलने में विफल', 'wechatPaymentException': 'WeChat Pay में समस्या',
'cannotLaunchAlipayPayment': 'Alipay नहीं खोल सकते', 'wechatPaymentTestCompleted': 'WeChat Pay भुगतान परीक्षण पूरा',
'alipayPaymentException': 'Alipay में समस्या', 'alipayPaymentSuccess': 'Alipay भुगतान सफल!',
'alipayPaymentFailed': 'Alipay भुगतान विफल',
'alipayPaymentLaunchFailed': 'Alipay खोलने में विफल',
'cannotLaunchAlipayPayment': 'Alipay नहीं खोल सकते',
'alipayPaymentException': 'Alipay में समस्या',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -493,19 +519,28 @@ const Map<String, String> hiIN = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'रिकॉर्डिंग से बाहर निकलें', // 退出录音 'meetingRecordExitTitle': 'रिकॉर्डिंग से बाहर निकलें', // 退出录音
'meetingRecordExitMessage': 'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作 'meetingRecordExitMessage':
'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作
'meetingRecordEndAndSave': 'रिकॉर्डिंग समाप्त करें और सहेजें', // 结束录音并保存 'meetingRecordEndAndSave': 'रिकॉर्डिंग समाप्त करें और सहेजें', // 结束录音并保存
'meetingRecordEndWithoutSave': 'बिना सहेजे रिकॉर्डिंग समाप्त करें', // 结束录音不保存 'meetingRecordEndWithoutSave': 'बिना सहेजे रिकॉर्डिंग समाप्त करें', // 结束录音不保存
'meetingRecordContinueInBackground': 'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试 'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音
'meetingRecordStopFailed': 'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试 'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试
'meetingRecordStopFailed':
'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'रिकॉर्डिंग चल रही है', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'रिकॉर्डिंग चल रही है', // 录音进行中
'meetingRecordRecordingNotificationBody': 'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'अन्य ऐप्स के ऊपर दिखाएँ', // 悬浮窗权限 'overlayPermissionTitle': 'अन्य ऐप्स के ऊपर दिखाएँ', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -530,21 +565,22 @@ const Map<String, String> hiIN = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'बनाएँ', 'create': 'बनाएँ',
'templateDetails': 'टेम्पलेट विवरण', 'templateDetails': 'टेम्पलेट विवरण',
'tag': 'टैग', 'tag': 'टैग',
'description': 'विवरण', 'description': 'विवरण',
'template': 'टेम्पलेट', 'template': 'टेम्पलेट',
'deleteTemplate': 'टेम्पलेट हटाएँ', 'deleteTemplate': 'टेम्पलेट हटाएँ',
'deleteTemplateConfirm': 'क्या आप वाकई इस टेम्पलेट को हटाना चाहते हैं?', 'deleteTemplateConfirm': 'क्या आप वाकई इस टेम्पलेट को हटाना चाहते हैं?',
'editTemplate': 'टेम्पलेट संपादित करें', 'editTemplate': 'टेम्पलेट संपादित करें',
'createTemplate': 'टेम्पलेट बनाएँ', 'createTemplate': 'टेम्पलेट बनाएँ',
'name': 'नाम', 'name': 'नाम',
'templateContentHint': 'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ', 'templateContentHint':
'inputNameHint': 'कृपया नाम दर्ज करें', 'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ',
'inputDescHint': 'कृपया विवरण दर्ज करें', 'inputNameHint': 'कृपया नाम दर्ज करें',
'custom': 'कस्टम', 'inputDescHint': 'कृपया विवरण दर्ज करें',
'pleaseEnter': 'कृपया दर्ज करें', 'custom': 'कस्टम',
'pleaseEnter': 'कृपया दर्ज करें',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -567,7 +603,7 @@ const Map<String, String> hiIN = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'माइंड मैप सहेजें', 'saveMindMap': 'माइंड मैप सहेजें',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -589,7 +625,7 @@ const Map<String, String> hiIN = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'निर्यात', 'export': 'निर्यात',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'इस वक्ता के सभी अनुच्छेदों पर लागू करें', 'applyToAllParagraphs': 'इस वक्ता के सभी अनुच्छेदों पर लागू करें',
@ -699,18 +735,18 @@ const Map<String, String> hiIN = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'विश्लेषण विफल, कृपया बाद में पुनः प्रयास करें', 'analysisFailed': 'विश्लेषण विफल, कृपया बाद में पुनः प्रयास करें',
'transcriptionFailed': 'ट्रांसक्रिप्शन विफल, कृपया बाद में पुनः प्रयास करें', 'transcriptionFailed': 'ट्रांसक्रिप्शन विफल, कृपया बाद में पुनः प्रयास करें',
'summaryFailed': 'सारांश विफल, कृपया बाद में पुनः प्रयास करें', 'summaryFailed': 'सारांश विफल, कृपया बाद में पुनः प्रयास करें',
'summaryFailedShort': 'सारांश विफल', 'summaryFailedShort': 'सारांश विफल',
'transcriptionFailedShort': 'ट्रांसक्रिप्शन विफल', 'transcriptionFailedShort': 'ट्रांसक्रिप्शन विफल',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'ऑडियो प्लेयर तैयार नहीं है, कृपया प्रतीक्षा करें', 'playerNotReady': 'ऑडियो प्लेयर तैयार नहीं है, कृपया प्रतीक्षा करें',
'playFailed': 'चलाने में विफल', 'playFailed': 'चलाने में विफल',
'audioFileNotFound': 'ऑडियो फ़ाइल नहीं मिली', 'audioFileNotFound': 'ऑडियो फ़ाइल नहीं मिली',
'fetchingAudio': 'क्लाउड से ऑडियो प्राप्त कर रहे हैं...', 'fetchingAudio': 'क्लाउड से ऑडियो प्राप्त कर रहे हैं...',
'playerLoadFailed': 'ऑडियो प्लेयर लोड होने में विफल', 'playerLoadFailed': 'ऑडियो प्लेयर लोड होने में विफल',
// 设置页 // 设置页
"systemSettings": "सिस्टम सेटिंग्स", "systemSettings": "सिस्टम सेटिंग्स",
@ -817,7 +853,8 @@ const Map<String, String> hiIN = {
"swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें", "swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।', 'voice_interrupt_tip':
'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -873,6 +910,13 @@ const Map<String, String> hiIN = {
'हम जानना चाहते हैं कि आप क्यों रिपोर्ट कर रहे हैं, आप जिस समस्या का सामना कर रहे हैं उसका वर्णन कर सकते हैं।', 'हम जानना चाहते हैं कि आप क्यों रिपोर्ट कर रहे हैं, आप जिस समस्या का सामना कर रहे हैं उसका वर्णन कर सकते हैं।',
'generatedByAi': 'एआई द्वारा उत्पन्न', 'generatedByAi': 'एआई द्वारा उत्पन्न',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:', 'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:',
'playList': 'प्लेलिस्ट', 'playList': 'प्लेलिस्ट',
@ -893,6 +937,29 @@ const Map<String, String> hiIN = {
"bicycling": "साइकिल चलाना", "bicycling": "साइकिल चलाना",
"tsransit": "पारगमन", "tsransit": "पारगमन",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'मौसम की स्थिति की पूछताछ:', 'weatherQuery': 'मौसम की स्थिति की पूछताछ:',
'highest': 'उच्चतम', 'highest': 'उच्चतम',
@ -964,8 +1031,19 @@ const Map<String, String> hiIN = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "कृपया अनुवाद करने के लिए पाठ दर्ज करें",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1241,17 +1319,19 @@ const Map<String, String> hiIN = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'नेविगेशन जारी है', 'native.notification.navigation.title': 'नेविगेशन जारी है',
'native.notification.navigation.keepRunning': 'नेविगेट कर रहे हैं, ऐप चालू रखें', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'वॉयस असिस्टेंट एजेंट चल रहा है', 'नेविगेट कर रहे हैं, ऐप चालू रखें',
'native.notification.audioRecording.recording': 'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें', 'native.notification.bleAgent.running': 'वॉयस असिस्टेंट एजेंट चल रहा है',
'native.notification.music.waiting': 'चलाने की प्रतीक्षा में', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'पिछला', 'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें',
'native.notification.music.next': 'अगला', 'native.notification.music.waiting': 'चलाने की प्रतीक्षा में',
'native.notification.music.play': 'चलाएँ', 'native.notification.music.previous': 'पिछला',
'native.notification.music.pause': 'रोकें', 'native.notification.music.next': 'अगला',
'native.notification.qqMusic.playing': 'संगीत चल रहा है', 'native.notification.music.play': 'चलाएँ',
'native.notification.music.pause': 'रोकें',
'native.notification.qqMusic.playing': 'संगीत चल रहा है',
// 版本更新 // 版本更新
'newVersionFound': 'नया संस्करण मिला', // 版本更新对话框标题 'newVersionFound': 'नया संस्करण मिला', // 版本更新对话框标题
@ -1391,6 +1471,59 @@ const Map<String, String> hiIN = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 20% से ऊपर है", "दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 20% से ऊपर है",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "कोई संगीत नहीं", // 暂无音乐 "noMusic": "कोई संगीत नहीं", // 暂无音乐
"noPlayingMusic": "कोई संगीत नहीं चल रहा है", // 暂无播放音乐 "noPlayingMusic": "कोई संगीत नहीं चल रहा है", // 暂无播放音乐

339
lib/core/translations/language/hr_hr.dart

@ -1,5 +1,4 @@
const Map<String, String> hrHR = { const Map<String, String> hrHR = {
// 通用 // 通用
'continue': 'Nastavi', 'continue': 'Nastavi',
'confirm': 'Potvrdi', 'confirm': 'Potvrdi',
@ -170,6 +169,29 @@ const Map<String, String> hrHR = {
'right': 'Desno', 'right': 'Desno',
'checkConnectionStatusFailed': 'Provjera statusa veze nije uspjela', 'checkConnectionStatusFailed': 'Provjera statusa veze nije uspjela',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Traži AI funkcije...", "searchAi": "Traži AI funkcije...",
"exploreSlogan": "Pametne slušalice, beskonačne mogućnosti", "exploreSlogan": "Pametne slušalice, beskonačne mogućnosti",
@ -246,60 +268,65 @@ const Map<String, String> hrHR = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Plaćanje uspješno', 'paymentSuccess': 'Plaćanje uspješno',
'paymentFailed': 'Plaćanje nije uspjelo', 'paymentFailed': 'Plaćanje nije uspjelo',
'gotIt': 'Razumijem', 'gotIt': 'Razumijem',
'paymentFailedTryAgain': 'Plaćanje nije uspjelo. Pokušajte ponovno.', 'paymentFailedTryAgain': 'Plaćanje nije uspjelo. Pokušajte ponovno.',
'selectPaymentMethod': 'Odaberite način plaćanja', 'selectPaymentMethod': 'Odaberite način plaćanja',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Stvaranje WeChat narudžbe nije uspjelo', 'wechatOrderCreateFailed': 'Stvaranje WeChat narudžbe nije uspjelo',
'alipayOrderCreateFailed': 'Stvaranje Alipay narudžbe nije uspjelo', 'alipayOrderCreateFailed': 'Stvaranje Alipay narudžbe nije uspjelo',
'appleOrderCreateFailed': 'Stvaranje Apple narudžbe nije uspjelo', 'appleOrderCreateFailed': 'Stvaranje Apple narudžbe nije uspjelo',
'googleOrderCreateFailed': 'Stvaranje Google narudžbe nije uspjelo', 'googleOrderCreateFailed': 'Stvaranje Google narudžbe nije uspjelo',
'paypalOrderCreateFailed': 'Stvaranje PayPal narudžbe nije uspjelo', 'paypalOrderCreateFailed': 'Stvaranje PayPal narudžbe nije uspjelo',
'paymentException': 'Iznimka pri plaćanju', 'paymentException': 'Iznimka pri plaćanju',
'paymentLaunchFailed': 'Pokretanje plaćanja nije uspjelo', 'paymentLaunchFailed': 'Pokretanje plaćanja nije uspjelo',
'paymentExceptionWithError': 'Iznimka pri plaćanju: @error', 'paymentExceptionWithError': 'Iznimka pri plaćanju: @error',
'paymentProcessingCheckLater': 'Vaša narudžba se obrađuje. Provjerite kasnije.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Neuspješno dohvaćanje rezultata plaćanja: @error', 'Vaša narudžba se obrađuje. Provjerite kasnije.',
'orderConfirmedQuotaRefreshed': 'Narudžba je potvrđena. Vaša kvota je osvježena.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…', 'Neuspješno dohvaćanje rezultata plaćanja: @error',
'paymentCancelled': 'Plaćanje je otkazano', 'orderConfirmedQuotaRefreshed':
'paypalOpenedCompleteInBrowser': 'PayPal je otvoren. Molimo dovršite plaćanje u pregledniku.', 'Narudžba je potvrđena. Vaša kvota je osvježena.',
'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje', 'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…',
'paymentTestTitle': 'Test plaćanja', 'paymentCancelled': 'Plaćanje je otkazano',
'paymentTestOrderInfo': 'Informacije o testnoj narudžbi', 'paypalOpenedCompleteInBrowser':
'paymentTestProductId': 'ID proizvoda', 'PayPal je otvoren. Molimo dovršite plaćanje u pregledniku.',
'paymentTestProductDescription': 'Opis proizvoda', 'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje',
'paymentTestWechatDescription': 'Test WeChat plaćanja', 'paymentTestTitle': 'Test plaćanja',
'paymentTestAlipayDescription': 'Test Alipay plaćanja', 'paymentTestOrderInfo': 'Informacije o testnoj narudžbi',
'paymentTestAmount': 'Iznos', 'paymentTestProductId': 'ID proizvoda',
'paymentTestSelectAmount': 'Odaberite testni iznos', 'paymentTestProductDescription': 'Opis proizvoda',
'paying': 'Plaćanje...', 'paymentTestWechatDescription': 'Test WeChat plaćanja',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAlipayDescription': 'Test Alipay plaćanja',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAmount': 'Iznos',
'paymentStatusTitle': 'Status plaćanja', 'paymentTestSelectAmount': 'Odaberite testni iznos',
'errorInfoWithMessage': 'Greška: @message', 'paying': 'Plaćanje...',
'retest': 'Ponovo testiraj', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsTitle': 'Upute', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsContent': '1. Odaberite testni iznos (preporučeno: ¥0.01)\n2. Kliknite gumb za plaćanje za početak\n3. Dovršite plaćanje u aplikaciji za plaćanje\n4. Vratite se da provjerite rezultat', 'paymentStatusTitle': 'Status plaćanja',
'startingWechatPayment': 'Pokretanje WeChat Pay-a...', 'errorInfoWithMessage': 'Greška: @message',
'startingAlipayPayment': 'Pokretanje Alipay-a...', 'retest': 'Ponovo testiraj',
'wechatPaymentSuccess': 'WeChat Pay plaćanje uspješno!', 'paymentTestInstructionsTitle': 'Upute',
'wechatPaymentFailed': 'WeChat Pay plaćanje nije uspjelo', 'paymentTestInstructionsContent':
'wechatPaymentLaunchFailed': 'Pokretanje WeChat Pay-a nije uspjelo', '1. Odaberite testni iznos (preporučeno: ¥0.01)\n2. Kliknite gumb za plaćanje za početak\n3. Dovršite plaćanje u aplikaciji za plaćanje\n4. Vratite se da provjerite rezultat',
'cannotLaunchWechatPayment': 'Nije moguće pokrenuti WeChat Pay', 'startingWechatPayment': 'Pokretanje WeChat Pay-a...',
'wechatPaymentException': 'WeChat Pay iznimka', 'startingAlipayPayment': 'Pokretanje Alipay-a...',
'wechatPaymentTestCompleted': 'Test WeChat Pay plaćanja je završen', 'wechatPaymentSuccess': 'WeChat Pay plaćanje uspješno!',
'alipayPaymentSuccess': 'Alipay plaćanje uspješno!', 'wechatPaymentFailed': 'WeChat Pay plaćanje nije uspjelo',
'alipayPaymentFailed': 'Alipay plaćanje nije uspjelo', 'wechatPaymentLaunchFailed': 'Pokretanje WeChat Pay-a nije uspjelo',
'alipayPaymentLaunchFailed': 'Pokretanje Alipay-a nije uspjelo', 'cannotLaunchWechatPayment': 'Nije moguće pokrenuti WeChat Pay',
'cannotLaunchAlipayPayment': 'Nije moguće pokrenuti Alipay', 'wechatPaymentException': 'WeChat Pay iznimka',
'alipayPaymentException': 'Alipay iznimka', 'wechatPaymentTestCompleted': 'Test WeChat Pay plaćanja je završen',
'alipayPaymentSuccess': 'Alipay plaćanje uspješno!',
'alipayPaymentFailed': 'Alipay plaćanje nije uspjelo',
'alipayPaymentLaunchFailed': 'Pokretanje Alipay-a nije uspjelo',
'cannotLaunchAlipayPayment': 'Nije moguće pokrenuti Alipay',
'alipayPaymentException': 'Alipay iznimka',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -497,19 +524,27 @@ const Map<String, String> hrHR = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Izađi iz snimanja', // 退出录音 'meetingRecordExitTitle': 'Izađi iz snimanja', // 退出录音
'meetingRecordExitMessage': 'Odaberite što učiniti prije izlaska', // 请选择离开后的操作 'meetingRecordExitMessage':
'Odaberite što učiniti prije izlaska', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Završi i spremi', // 结束录音并保存 'meetingRecordEndAndSave': 'Završi i spremi', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Završi bez spremanja', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Završi bez spremanja', // 结束录音不保存
'meetingRecordContinueInBackground': 'Nastavi snimanje u pozadini', // 后台继续录音 'meetingRecordContinueInBackground': 'Nastavi snimanje u pozadini', // 后台继续录音
'meetingRecordStopTimeout': 'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试 'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试 'meetingRecordStopFailed':
'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Snimanje je u tijeku', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Snimanje je u tijeku', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Snimanje u pozadini. Dodirnite za povratak u aplikaciju.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Snimanje u pozadini. Dodirnite za povratak u aplikaciju.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Prikaz preko drugih aplikacija', // 悬浮窗权限 'overlayPermissionTitle': 'Prikaz preko drugih aplikacija', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Za prikaz rezultata prijevoda tijekom poziva ili prijevoda zvuka/videa potrebna je dozvola za prikaz preko drugih aplikacija. Tako možete vidjeti prijevod u stvarnom vremenu dok koristite druge aplikacije.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Za prikaz plutajuće trake snimanja (mjerač vremena/pauza/nastavi) tijekom snimanja potrebna je dozvola za prikaz preko drugih aplikacija.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Za prikaz rezultata prijevoda tijekom poziva ili prijevoda zvuka/videa potrebna je dozvola za prikaz preko drugih aplikacija. Tako možete vidjeti prijevod u stvarnom vremenu dok koristite druge aplikacije.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Nije moguće automatski otvoriti postavke sustava. Otvorite Postavke i ručno omogućite dozvolu za prikaz preko drugih aplikacija.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Za prikaz plutajuće trake snimanja (mjerač vremena/pauza/nastavi) tijekom snimanja potrebna je dozvola za prikaz preko drugih aplikacija.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nije moguće automatski otvoriti postavke sustava. Otvorite Postavke i ručno omogućite dozvolu za prikaz preko drugih aplikacija.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -534,21 +569,23 @@ const Map<String, String> hrHR = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Stvori', 'create': 'Stvori',
'templateDetails': 'Pojedinosti predloška', 'templateDetails': 'Pojedinosti predloška',
'tag': 'Oznaka', 'tag': 'Oznaka',
'description': 'Opis', 'description': 'Opis',
'template': 'Predložak', 'template': 'Predložak',
'deleteTemplate': 'Obriši predložak', 'deleteTemplate': 'Obriši predložak',
'deleteTemplateConfirm': 'Jeste li sigurni da želite obrisati ovaj predložak?', 'deleteTemplateConfirm':
'editTemplate': 'Uredi predložak', 'Jeste li sigurni da želite obrisati ovaj predložak?',
'createTemplate': 'Stvori predložak', 'editTemplate': 'Uredi predložak',
'name': 'Naziv', 'createTemplate': 'Stvori predložak',
'templateContentHint': 'Molimo unesite sadržaj predloška! Savjet: Kliknite na AI gumb iznad za brzo generiranje sadržaja predloška na temelju naziva i opisa koje ste unijeli', 'name': 'Naziv',
'inputNameHint': 'Molimo unesite naziv', 'templateContentHint':
'inputDescHint': 'Molimo unesite opis', 'Molimo unesite sadržaj predloška! Savjet: Kliknite na AI gumb iznad za brzo generiranje sadržaja predloška na temelju naziva i opisa koje ste unijeli',
'custom': 'Prilagođeno', 'inputNameHint': 'Molimo unesite naziv',
'pleaseEnter': 'Molimo unesite', 'inputDescHint': 'Molimo unesite opis',
'custom': 'Prilagođeno',
'pleaseEnter': 'Molimo unesite',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -571,7 +608,7 @@ const Map<String, String> hrHR = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Spremi mentalnu mapu', 'saveMindMap': 'Spremi mentalnu mapu',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -593,7 +630,7 @@ const Map<String, String> hrHR = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Izvoz', 'export': 'Izvoz',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Primijeni na sve odlomke ovog govornika', 'applyToAllParagraphs': 'Primijeni na sve odlomke ovog govornika',
@ -703,18 +740,19 @@ const Map<String, String> hrHR = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije', 'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije',
'transcriptionFailed': 'Transkripcija nije uspjela, pokušajte ponovno kasnije', 'transcriptionFailed':
'summaryFailed': 'Sažetak nije uspio, pokušajte ponovno kasnije', 'Transkripcija nije uspjela, pokušajte ponovno kasnije',
'summaryFailedShort': 'Sažetak nije uspio', 'summaryFailed': 'Sažetak nije uspio, pokušajte ponovno kasnije',
'transcriptionFailedShort': 'Transkripcija nije uspjela', 'summaryFailedShort': 'Sažetak nije uspio',
'transcriptionFailedShort': 'Transkripcija nije uspjela',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Audio reproduktor nije spreman, molimo pričekajte', 'playerNotReady': 'Audio reproduktor nije spreman, molimo pričekajte',
'playFailed': 'Reprodukcija nije uspjela', 'playFailed': 'Reprodukcija nije uspjela',
'audioFileNotFound': 'Audio datoteka nije pronađena', 'audioFileNotFound': 'Audio datoteka nije pronađena',
'fetchingAudio': 'Dohvaćanje audio zapisa iz oblaka...', 'fetchingAudio': 'Dohvaćanje audio zapisa iz oblaka...',
'playerLoadFailed': 'Audio reproduktor se nije uspio učitati', 'playerLoadFailed': 'Audio reproduktor se nije uspio učitati',
// 设置页 // 设置页
"systemSettings": "Postavke sustava", "systemSettings": "Postavke sustava",
@ -821,7 +859,8 @@ const Map<String, String> hrHR = {
"swipeUpForMore": "Prijeđite prstom prema gore za više", "swipeUpForMore": "Prijeđite prstom prema gore za više",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Kada je uključeno: AI neće biti prekinut vašim glasom dok govori i može obraditi samo jedan krug razgovora odjednom. Za početak novog kruga, samo izgovorite riječ za buđenje.', 'voice_interrupt_tip':
'Kada je uključeno: AI neće biti prekinut vašim glasom dok govori i može obraditi samo jedan krug razgovora odjednom. Za početak novog kruga, samo izgovorite riječ za buđenje.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -877,6 +916,13 @@ const Map<String, String> hrHR = {
'Želimo znati razlog vaše prijave, možete opisati problem s kojim ste se suočili.', 'Želimo znati razlog vaše prijave, možete opisati problem s kojim ste se suočili.',
'generatedByAi': 'Generirano od strane AI', 'generatedByAi': 'Generirano od strane AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Evo nekoliko preporučenih pjesama:', 'recommendedMusic': 'Evo nekoliko preporučenih pjesama:',
'playList': 'Popis pjesama', 'playList': 'Popis pjesama',
@ -897,6 +943,29 @@ const Map<String, String> hrHR = {
"bicycling": "Biciklizam", "bicycling": "Biciklizam",
"tsransit": "Javni prijevoz", "tsransit": "Javni prijevoz",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Upit o vremenskim uvjetima:', 'weatherQuery': 'Upit o vremenskim uvjetima:',
'highest': 'Najviša', 'highest': 'Najviša',
@ -968,8 +1037,19 @@ const Map<String, String> hrHR = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Unesite tekst za prijevod",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1244,17 +1324,19 @@ const Map<String, String> hrHR = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija u tijeku', 'native.notification.navigation.title': 'Navigacija u tijeku',
'native.notification.navigation.keepRunning': 'Navigacija, držite aplikaciju pokrenutom', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'Glasovni asistent je pokrenut', 'Navigacija, držite aplikaciju pokrenutom',
'native.notification.audioRecording.recording': 'Snimanje zvuka, dodirnite za povratak u aplikaciju', 'native.notification.bleAgent.running': 'Glasovni asistent je pokrenut',
'native.notification.music.waiting': 'Čekanje na reprodukciju', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Prethodna', 'Snimanje zvuka, dodirnite za povratak u aplikaciju',
'native.notification.music.next': 'Sljedeća', 'native.notification.music.waiting': 'Čekanje na reprodukciju',
'native.notification.music.play': 'Reproduciraj', 'native.notification.music.previous': 'Prethodna',
'native.notification.music.pause': 'Pauza', 'native.notification.music.next': 'Sljedeća',
'native.notification.qqMusic.playing': 'Reprodukcija glazbe', 'native.notification.music.play': 'Reproduciraj',
'native.notification.music.pause': 'Pauza',
'native.notification.qqMusic.playing': 'Reprodukcija glazbe',
// 版本更新 // 版本更新
'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题 'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题
@ -1396,6 +1478,59 @@ const Map<String, String> hrHR = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Izvadite obje slušalice i provjerite je li baterija obje iznad 20%", "Izvadite obje slušalice i provjerite je li baterija obje iznad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Nema glazbe", // 暂无音乐 "noMusic": "Nema glazbe", // 暂无音乐
"noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐 "noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐

312
lib/core/translations/language/hu_hu.dart

@ -1,5 +1,4 @@
const Map<String, String> huHU = { const Map<String, String> huHU = {
// 通用 // 通用
'continue': 'Folytatás', 'continue': 'Folytatás',
'confirm': 'Megerősítés', 'confirm': 'Megerősítés',
@ -172,6 +171,29 @@ const Map<String, String> huHU = {
'checkConnectionStatusFailed': 'checkConnectionStatusFailed':
'A kapcsolat állapotának ellenőrzése sikertelen', 'A kapcsolat állapotának ellenőrzése sikertelen',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "AI funkciók keresése...", "searchAi": "AI funkciók keresése...",
"exploreSlogan": "Okos fülhallgatók, végtelen lehetőségek", "exploreSlogan": "Okos fülhallgatók, végtelen lehetőségek",
@ -246,60 +268,64 @@ const Map<String, String> huHU = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Fizetés sikeres', 'paymentSuccess': 'Fizetés sikeres',
'paymentFailed': 'Fizetés sikertelen', 'paymentFailed': 'Fizetés sikertelen',
'gotIt': 'Értem', 'gotIt': 'Értem',
'paymentFailedTryAgain': 'Fizetés sikertelen. Kérjük, próbálja újra.', 'paymentFailedTryAgain': 'Fizetés sikertelen. Kérjük, próbálja újra.',
'selectPaymentMethod': 'Fizetési mód kiválasztása', 'selectPaymentMethod': 'Fizetési mód kiválasztása',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'WeChat Pay rendelés létrehozása sikertelen', 'wechatOrderCreateFailed': 'WeChat Pay rendelés létrehozása sikertelen',
'alipayOrderCreateFailed': 'Alipay rendelés létrehozása sikertelen', 'alipayOrderCreateFailed': 'Alipay rendelés létrehozása sikertelen',
'appleOrderCreateFailed': 'Apple rendelés létrehozása sikertelen', 'appleOrderCreateFailed': 'Apple rendelés létrehozása sikertelen',
'googleOrderCreateFailed': 'Google rendelés létrehozása sikertelen', 'googleOrderCreateFailed': 'Google rendelés létrehozása sikertelen',
'paypalOrderCreateFailed': 'PayPal rendelés létrehozása sikertelen', 'paypalOrderCreateFailed': 'PayPal rendelés létrehozása sikertelen',
'paymentException': 'Fizetési kivétel', 'paymentException': 'Fizetési kivétel',
'paymentLaunchFailed': 'Fizetés indítása sikertelen', 'paymentLaunchFailed': 'Fizetés indítása sikertelen',
'paymentExceptionWithError': 'Fizetési kivétel: @error', 'paymentExceptionWithError': 'Fizetési kivétel: @error',
'paymentProcessingCheckLater': 'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Nem sikerült lekérdezni a fizetés eredményét: @error', 'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.',
'orderConfirmedQuotaRefreshed': 'Rendelés megerősítve. A kvótája frissült.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Fizetés befejezve. Megerősítés folyamatban…', 'Nem sikerült lekérdezni a fizetés eredményét: @error',
'paymentCancelled': 'Fizetés megszakítva', 'orderConfirmedQuotaRefreshed': 'Rendelés megerősítve. A kvótája frissült.',
'paypalOpenedCompleteInBrowser': 'PayPal megnyitva. Kérjük, fejezze be a fizetést a böngészőben.', 'paymentCompletedConfirming': 'Fizetés befejezve. Megerősítés folyamatban…',
'paypalOpenFailed': 'Nem sikerült megnyitni a PayPal fizetési oldalt', 'paymentCancelled': 'Fizetés megszakítva',
'paymentTestTitle': 'Fizetési teszt', 'paypalOpenedCompleteInBrowser':
'paymentTestOrderInfo': 'Teszt rendelési információ', 'PayPal megnyitva. Kérjük, fejezze be a fizetést a böngészőben.',
'paymentTestProductId': 'Termékazonosító', 'paypalOpenFailed': 'Nem sikerült megnyitni a PayPal fizetési oldalt',
'paymentTestProductDescription': 'Termékleírás', 'paymentTestTitle': 'Fizetési teszt',
'paymentTestWechatDescription': 'WeChat Pay fizetési teszt', 'paymentTestOrderInfo': 'Teszt rendelési információ',
'paymentTestAlipayDescription': 'Alipay fizetési teszt', 'paymentTestProductId': 'Termékazonosító',
'paymentTestAmount': 'Összeg', 'paymentTestProductDescription': 'Termékleírás',
'paymentTestSelectAmount': 'Válassza ki a teszt összeget', 'paymentTestWechatDescription': 'WeChat Pay fizetési teszt',
'paying': 'Fizetés...', 'paymentTestAlipayDescription': 'Alipay fizetési teszt',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAmount': 'Összeg',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestSelectAmount': 'Válassza ki a teszt összeget',
'paymentStatusTitle': 'Fizetés állapota', 'paying': 'Fizetés...',
'errorInfoWithMessage': 'Hiba: @message', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'retest': 'Újratesztelés', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsTitle': 'Útmutató', 'paymentStatusTitle': 'Fizetés állapota',
'paymentTestInstructionsContent': '1. Válasszon egy teszt összeget (ajánlott: ¥0,01)\n2. Kattintson a fizetés gombra az indításhoz\n3. Fejezze be a fizetést a fizetési alkalmazásban\n4. Térjen vissza az eredmény ellenőrzéséhez', 'errorInfoWithMessage': 'Hiba: @message',
'startingWechatPayment': 'WeChat Pay indítása...', 'retest': 'Újratesztelés',
'startingAlipayPayment': 'Alipay indítása...', 'paymentTestInstructionsTitle': 'Útmutató',
'wechatPaymentSuccess': 'WeChat Pay sikeres!', 'paymentTestInstructionsContent':
'wechatPaymentFailed': 'WeChat Pay sikertelen', '1. Válasszon egy teszt összeget (ajánlott: ¥0,01)\n2. Kattintson a fizetés gombra az indításhoz\n3. Fejezze be a fizetést a fizetési alkalmazásban\n4. Térjen vissza az eredmény ellenőrzéséhez',
'wechatPaymentLaunchFailed': 'WeChat Pay indítása sikertelen', 'startingWechatPayment': 'WeChat Pay indítása...',
'cannotLaunchWechatPayment': 'Nem sikerült elindítani a WeChat Pay-t', 'startingAlipayPayment': 'Alipay indítása...',
'wechatPaymentException': 'WeChat Pay kivétel', 'wechatPaymentSuccess': 'WeChat Pay sikeres!',
'wechatPaymentTestCompleted': 'WeChat Pay teszt befejezve', 'wechatPaymentFailed': 'WeChat Pay sikertelen',
'alipayPaymentSuccess': 'Alipay sikeres!', 'wechatPaymentLaunchFailed': 'WeChat Pay indítása sikertelen',
'alipayPaymentFailed': 'Alipay sikertelen', 'cannotLaunchWechatPayment': 'Nem sikerült elindítani a WeChat Pay-t',
'alipayPaymentLaunchFailed': 'Alipay indítása sikertelen', 'wechatPaymentException': 'WeChat Pay kivétel',
'cannotLaunchAlipayPayment': 'Nem sikerült elindítani az Alipay-t', 'wechatPaymentTestCompleted': 'WeChat Pay teszt befejezve',
'alipayPaymentException': 'Alipay kivétel', 'alipayPaymentSuccess': 'Alipay sikeres!',
'alipayPaymentFailed': 'Alipay sikertelen',
'alipayPaymentLaunchFailed': 'Alipay indítása sikertelen',
'cannotLaunchAlipayPayment': 'Nem sikerült elindítani az Alipay-t',
'alipayPaymentException': 'Alipay kivétel',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -543,21 +569,22 @@ const Map<String, String> huHU = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Létrehozás', 'create': 'Létrehozás',
'templateDetails': 'Sablon részletei', 'templateDetails': 'Sablon részletei',
'tag': 'Címke', 'tag': 'Címke',
'description': 'Leírás', 'description': 'Leírás',
'template': 'Sablon', 'template': 'Sablon',
'deleteTemplate': 'Sablon törlése', 'deleteTemplate': 'Sablon törlése',
'deleteTemplateConfirm': 'Biztosan törölni szeretné ezt a sablont?', 'deleteTemplateConfirm': 'Biztosan törölni szeretné ezt a sablont?',
'editTemplate': 'Sablon szerkesztése', 'editTemplate': 'Sablon szerkesztése',
'createTemplate': 'Sablon létrehozása', 'createTemplate': 'Sablon létrehozása',
'name': 'Név', 'name': 'Név',
'templateContentHint': 'Kérjük, adja meg a sablon tartalmát! Tipp: Kattintson a fenti AI gombra, hogy gyorsan generáljon sablontartalmat a megadott név és leírás alapján', 'templateContentHint':
'inputNameHint': 'Kérjük, adjon meg nevet', 'Kérjük, adja meg a sablon tartalmát! Tipp: Kattintson a fenti AI gombra, hogy gyorsan generáljon sablontartalmat a megadott név és leírás alapján',
'inputDescHint': 'Kérjük, adjon meg leírást', 'inputNameHint': 'Kérjük, adjon meg nevet',
'custom': 'Egyéni', 'inputDescHint': 'Kérjük, adjon meg leírást',
'pleaseEnter': 'Kérjük, adja meg', 'custom': 'Egyéni',
'pleaseEnter': 'Kérjük, adja meg',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -580,7 +607,7 @@ const Map<String, String> huHU = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Gondolattérkép mentése', 'saveMindMap': 'Gondolattérkép mentése',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -602,7 +629,7 @@ const Map<String, String> huHU = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Exportálás', 'export': 'Exportálás',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Alkalmazás a beszélő összes bekezdésére', 'applyToAllParagraphs': 'Alkalmazás a beszélő összes bekezdésére',
@ -712,18 +739,18 @@ const Map<String, String> huHU = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Az elemzés sikertelen, kérjük, próbálja újra később', 'analysisFailed': 'Az elemzés sikertelen, kérjük, próbálja újra később',
'transcriptionFailed': 'Az átírás sikertelen, kérjük, próbálja újra később', 'transcriptionFailed': 'Az átírás sikertelen, kérjük, próbálja újra később',
'summaryFailed': 'Az összefoglalás sikertelen, kérjük, próbálja újra később', 'summaryFailed': 'Az összefoglalás sikertelen, kérjük, próbálja újra később',
'summaryFailedShort': 'Összefoglalás sikertelen', 'summaryFailedShort': 'Összefoglalás sikertelen',
'transcriptionFailedShort': 'Átírás sikertelen', 'transcriptionFailedShort': 'Átírás sikertelen',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'A hanglejátszó nem áll készen, kérjük, várjon', 'playerNotReady': 'A hanglejátszó nem áll készen, kérjük, várjon',
'playFailed': 'Lejátszás sikertelen', 'playFailed': 'Lejátszás sikertelen',
'audioFileNotFound': 'Hangfájl nem található', 'audioFileNotFound': 'Hangfájl nem található',
'fetchingAudio': 'Hanganyag letöltése a felhőből...', 'fetchingAudio': 'Hanganyag letöltése a felhőből...',
'playerLoadFailed': 'A hanglejátszó betöltése sikertelen', 'playerLoadFailed': 'A hanglejátszó betöltése sikertelen',
// 设置页 // 设置页
"systemSettings": "Rendszerbeállítások", "systemSettings": "Rendszerbeállítások",
@ -832,7 +859,8 @@ const Map<String, String> huHU = {
"swipeUpForMore": "Húzza felfelé a továbbiakért", "swipeUpForMore": "Húzza felfelé a továbbiakért",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Ha engedélyezve van: Az AI nem szakítható meg a hangjával beszéd közben, és egyszerre csak egy beszélgetési kört tud kezelni. Új kör indításához mondja ki az ébresztő szót.', 'voice_interrupt_tip':
'Ha engedélyezve van: Az AI nem szakítható meg a hangjával beszéd közben, és egyszerre csak egy beszélgetési kört tud kezelni. Új kör indításához mondja ki az ébresztő szót.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -888,6 +916,13 @@ const Map<String, String> huHU = {
'Szeretnénk tudni a jelentés okát, leírhatja a tapasztalt problémát.', 'Szeretnénk tudni a jelentés okát, leírhatja a tapasztalt problémát.',
'generatedByAi': 'AI által generált', 'generatedByAi': 'AI által generált',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Itt van néhány ajánlott zene:', 'recommendedMusic': 'Itt van néhány ajánlott zene:',
'playList': 'Lejátszási lista', 'playList': 'Lejátszási lista',
@ -908,6 +943,29 @@ const Map<String, String> huHU = {
"bicycling": "Kerékpározás", "bicycling": "Kerékpározás",
"tsransit": "Tömegközlekedés", "tsransit": "Tömegközlekedés",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Időjárási körülmények lekérdezése:', 'weatherQuery': 'Időjárási körülmények lekérdezése:',
'highest': 'Legmagasabb', 'highest': 'Legmagasabb',
@ -979,8 +1037,19 @@ const Map<String, String> huHU = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Kérjük, adja meg a lefordítandó szöveget",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1255,17 +1324,19 @@ const Map<String, String> huHU = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigálás folyamatban', 'native.notification.navigation.title': 'Navigálás folyamatban',
'native.notification.navigation.keepRunning': 'Navigálás, tartsa nyitva az alkalmazást', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'A hangasszisztens ügynök fut', 'Navigálás, tartsa nyitva az alkalmazást',
'native.notification.audioRecording.recording': 'Hangfelvétel folyamatban, koppintson az alkalmazásba való visszatéréshez', 'native.notification.bleAgent.running': 'A hangasszisztens ügynök fut',
'native.notification.music.waiting': 'Lejátszásra vár', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Előző', 'Hangfelvétel folyamatban, koppintson az alkalmazásba való visszatéréshez',
'native.notification.music.next': 'Következő', 'native.notification.music.waiting': 'Lejátszásra vár',
'native.notification.music.play': 'Lejátszás', 'native.notification.music.previous': 'Előző',
'native.notification.music.pause': 'Szünet', 'native.notification.music.next': 'Következő',
'native.notification.qqMusic.playing': 'Zene lejátszása', 'native.notification.music.play': 'Lejátszás',
'native.notification.music.pause': 'Szünet',
'native.notification.qqMusic.playing': 'Zene lejátszása',
// 版本更新 // 版本更新
'newVersionFound': 'Új verzió található', // 版本更新对话框标题 'newVersionFound': 'Új verzió található', // 版本更新对话框标题
@ -1407,6 +1478,59 @@ const Map<String, String> huHU = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van", "Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Nincs zene", // 暂无音乐 "noMusic": "Nincs zene", // 暂无音乐
"noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐 "noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐

736
lib/core/translations/language/id_id.dart

File diff suppressed because it is too large

102
lib/core/translations/language/is_is.dart

@ -169,6 +169,26 @@ const Map<String, String> isIS = {
'right': 'Hægri', 'right': 'Hægri',
'checkConnectionStatusFailed': 'Athugun á tengingarstöðu mistókst', 'checkConnectionStatusFailed': 'Athugun á tengingarstöðu mistókst',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth ræsing mistókst: @error',
'needBluetoothAndLocationPermission': 'Bluetooth- og staðsetningarheimildir þarf til að leita að tækjum',
'permissionRequestFailedWithError': 'Heimildarbeiðni mistókst: @error',
'needPermission': 'Heimild nauðsynleg',
'blePermissionDialogContent': 'Forritið þarf Bluetooth- og staðsetningarheimildir til að leita að tækjum. Virkjaðu þær í Stillingum.',
'needEnableBluetooth': 'Virkja Bluetooth',
'enableBluetoothDialogContent': 'Virkjaðu Bluetooth til að leita að og tengja tæki.',
'bleScanFailedWithError': 'Leit mistókst: @error',
'bleConnectionSuccess': 'Tenging tókst',
'bleConnectedToDevice': 'Tengt við @device',
'bleConnectionFailedWithError': 'Tenging mistókst: @error',
'bleDisconnected': 'Aftengt',
'bleDeviceDisconnected': 'Tæki aftengt',
'bleDisconnectFailedWithError': 'Aftenging mistókst: @error',
'signalStrong': 'Sterkt merki',
'signalMedium': 'Miðlungs merki',
'signalWeak': 'Veikt merki',
'signalVeryWeak': 'Mjög veikt merki',
// 发现页 // 发现页
"searchAi": "Leita að gervigreindareiginleikum...", "searchAi": "Leita að gervigreindareiginleikum...",
"exploreSlogan": "Snjallheyrnartól, óendanlegir möguleikar", "exploreSlogan": "Snjallheyrnartól, óendanlegir möguleikar",
@ -883,6 +903,13 @@ const Map<String, String> isIS = {
'Við viljum vita hvers vegna þú ert að tilkynna, þú getur lýst vandamálinu sem þú lendir í.', 'Við viljum vita hvers vegna þú ert að tilkynna, þú getur lýst vandamálinu sem þú lendir í.',
'generatedByAi': 'Myndað af gervigreind', 'generatedByAi': 'Myndað af gervigreind',
// Agent模块 - 工具调用
'toolCall': 'Verkfærakall',
'noResult': 'Engin niðurstaða',
'noToolCallContentToCopy': 'Ekkert verkfærakall til að afrita',
'toolCallDetails': 'Upplýsingar um verkfærakall:',
'toolCallContentCopied': 'Verkfærakall afritað á klippiborð',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Hér eru nokkur lög sem mælt er með:', 'recommendedMusic': 'Hér eru nokkur lög sem mælt er með:',
'playList': 'Spilunarlisti', 'playList': 'Spilunarlisti',
@ -903,6 +930,28 @@ const Map<String, String> isIS = {
"bicycling": 'Hjólreiðar', "bicycling": 'Hjólreiðar',
"tsransit": 'Almenningssamgöngur', "tsransit": 'Almenningssamgöngur',
// Agent模块 - 导航选择
'selectNavigationApp': 'Veldu leiðsögn',
'amapMap': 'Amap',
'useAmapNavigation': 'Nota Amap leiðsögn',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Nota Baidu Maps leiðsögn',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Nota Google Maps leiðsögn',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Nota Apple Maps leiðsögn',
'builtInNavigation': 'Innbyggð leiðsögn',
'useBuiltInNavigation': 'Nota innbyggða leiðsögn',
'navigationStartFailed': 'Ekki tókst að hefja leiðsögn',
'cannotPlayMusicListRetryLater': 'Get ekki spilað tónlistalista, reyndu aftur síðar',
'cannotPlaySong': 'Get ekki spilað lag',
'openMapError': 'Villa við opnun korts',
'pleaseInstallAmapApp': 'Settu upp Amap appið fyrst',
'pleaseInstallBaiduMapApp': 'Settu upp Baidu Maps appið fyrst',
'appleMapStartFailed': 'Apple Maps ræstist ekki',
'appleMapUnavailable': 'Apple Maps er ekki tiltækt',
'openAppleMapError': 'Villa við opnun Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Fyrirspurn um veðurskilyrði:', 'weatherQuery': 'Fyrirspurn um veðurskilyrði:',
'highest': 'Hæst', 'highest': 'Hæst',
@ -975,8 +1024,18 @@ const Map<String, String> isIS = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Slökkva á fljótandi glugga',
'enableFloatingWindow': 'Virkja fljótandi glugga',
'permissionTip': 'Heimildaábending',
'micPermissionRequiredForRecording': 'Hljóðnemaheimild þarf til upptöku',
'deleteTranslationRecordError': 'Villa við eyðingu þýðingarfærslu: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Þýði",
"translate": "Þýða",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Vinsamlegast sláðu inn texta til að þýða",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1397,6 +1456,49 @@ const Map<String, String> isIS = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Taktu báðar heyrnartólin úr og gakktu úr skugga um að rafhlaðan á báðum sé yfir 20%", "Taktu báðar heyrnartólin úr og gakktu úr skugga um að rafhlaðan á báðum sé yfir 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Ný útgáfa @version fannst',
'otaConfirmUpdateNow': 'Uppfæra núna?',
'otaUpdate': 'Uppfæra',
'otaUpgradeSuccess': 'Uppfærsla tókst',
'otaUpgradeCompleteRepair': 'Hugbúnaðaruppfærsla lokið!\n\nTækið þarf að para aftur. Fara á pörunarsíðu?',
'otaPairLater': 'Para síðar',
'otaPairNow': 'Para núna',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Villa í BLE-athugun: @error',
'otaBleNotConnected': 'BLE-tæki ekki tengt',
'otaBleNeedConnection': 'Uppfærsla krefst BLE-tengingar\nGakktu úr skugga um að tækið sé tengt og reyndu aftur',
'otaDeviceInfoUnavailableTitle': 'Tækjaupplýsingar ekki tiltækar',
'otaCannotGetDeviceInfo': 'Get ekki sótt tækjaupplýsingar\nTengdu tækið aftur eða reyndu síðar',
'otaBleCheckFailed': 'BLE-athugun mistókst',
'otaCannotGetDeviceInfoCheckConnection': 'Get ekki sótt tækjaupplýsingar, athugaðu tengingu',
'otaCannotGetProductInfoWithName': 'Get ekki sótt vöruupplýsingar, tækjanafn: @deviceName',
'otaCannotGetBatteryInfo': 'Get ekki sótt rafhlöðuupplýsingar',
'otaLowBattery': 'Lítil rafhlaða',
'otaSingleBatteryLow': 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: rafhlaða yfir 20%\nNúverandi: @ear @battery%\nHladdu og reyndu aftur',
'otaDoubleBatteryLow': 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: báðir heyrnartólar yfir 20%\nNúverandi: Vinstri @left%, Hægri @right%\nHladdu og reyndu aftur',
'otaBatteryCheckFailed': 'Rafhlöðuathugun mistókst',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'Uppfærslan inniheldur afkastabætingar og villuleiðréttingar.',
'otaGetLatestVersionFailed': 'Ekki tókst að sækja nýjustu útgáfu',
'otaGetVersionInfoFailed': 'Ekki tókst að sækja útgáfuupplýsingar',
'otaCheckingDeviceStatus': 'Athuga stöðu tækis...',
'otaDownloadFailedCheckNetwork': 'Niðurhal mistókst, athugaðu nettengingu',
'otaDownloadFailed': 'Niðurhal mistókst',
'otaPreparingConnection': 'Undirbý tengingu...',
'otaConnectingDevice': 'Tengi við tæki...',
'otaUpgradeStarted': 'OTA-uppfærsla hafin...',
'otaUpgradeProgressWithPercent': 'Framvinda uppfærslu: @percent%',
'otaUpgradeSuccessComplete': 'Uppfærsla lokið',
'otaUpgradeFailedWithCode': 'Uppfærsla mistókst, villukóði: @code',
'otaUpgradeFailedTitle': 'Uppfærsla mistókst',
'otaUpgradeFailedDesc': 'Athugaðu tengingu eða uppfærslupakka, villukóði: @code',
'otaDeviceDisconnected': 'Tæki aftengt',
'otaDeviceConnected': 'Tæki tengt',
// 音乐模块 // 音乐模块
"noMusic": "Engin tónlist", // 暂无音乐 "noMusic": "Engin tónlist", // 暂无音乐
"noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐 "noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐

340
lib/core/translations/language/it_it.dart

@ -1,5 +1,4 @@
const Map<String, String> itIT = { const Map<String, String> itIT = {
// 通用 // 通用
'continue': 'Continua', 'continue': 'Continua',
'confirm': 'Conferma', 'confirm': 'Conferma',
@ -172,6 +171,29 @@ const Map<String, String> itIT = {
'checkConnectionStatusFailed': 'checkConnectionStatusFailed':
'Verifica dello stato della connessione fallita', 'Verifica dello stato della connessione fallita',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Inizializzazione Bluetooth fallita: @error',
'needBluetoothAndLocationPermission':
'Sono necessari i permessi Bluetooth e posizione per scansionare i dispositivi',
'permissionRequestFailedWithError': 'Richiesta permessi fallita: @error',
'needPermission': 'Permesso necessario',
'blePermissionDialogContent':
'Questa app necessita dei permessi Bluetooth e posizione per scansionare i dispositivi. Attivarli nelle Impostazioni.',
'needEnableBluetooth': 'Attivare il Bluetooth',
'enableBluetoothDialogContent':
'Attivare il Bluetooth per scansionare e connettere i dispositivi.',
'bleScanFailedWithError': 'Scansione fallita: @error',
'bleConnectionSuccess': 'Connessione riuscita',
'bleConnectedToDevice': 'Connesso a @device',
'bleConnectionFailedWithError': 'Connessione fallita: @error',
'bleDisconnected': 'Disconnesso',
'bleDeviceDisconnected': 'Dispositivo disconnesso',
'bleDisconnectFailedWithError': 'Disconnessione fallita: @error',
'signalStrong': 'Forte',
'signalMedium': 'Medio',
'signalWeak': 'Debole',
'signalVeryWeak': 'Molto debole',
// 发现页 // 发现页
"searchAi": "Cerca funzioni AI...", "searchAi": "Cerca funzioni AI...",
"exploreSlogan": "Auricolari intelligenti, possibilità infinite", "exploreSlogan": "Auricolari intelligenti, possibilità infinite",
@ -247,60 +269,65 @@ const Map<String, String> itIT = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Pagamento riuscito', 'paymentSuccess': 'Pagamento riuscito',
'paymentFailed': 'Pagamento non riuscito', 'paymentFailed': 'Pagamento non riuscito',
'gotIt': 'Capito', 'gotIt': 'Capito',
'paymentFailedTryAgain': 'Pagamento non riuscito. Riprova.', 'paymentFailedTryAgain': 'Pagamento non riuscito. Riprova.',
'selectPaymentMethod': 'Seleziona il metodo di pagamento', 'selectPaymentMethod': 'Seleziona il metodo di pagamento',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': "Impossibile creare l'ordine WeChat", 'wechatOrderCreateFailed': "Impossibile creare l'ordine WeChat",
'alipayOrderCreateFailed': "Impossibile creare l'ordine Alipay", 'alipayOrderCreateFailed': "Impossibile creare l'ordine Alipay",
'appleOrderCreateFailed': "Impossibile creare l'ordine Apple", 'appleOrderCreateFailed': "Impossibile creare l'ordine Apple",
'googleOrderCreateFailed': "Impossibile creare l'ordine Google", 'googleOrderCreateFailed': "Impossibile creare l'ordine Google",
'paypalOrderCreateFailed': "Impossibile creare l'ordine PayPal", 'paypalOrderCreateFailed': "Impossibile creare l'ordine PayPal",
'paymentException': 'Eccezione di pagamento', 'paymentException': 'Eccezione di pagamento',
'paymentLaunchFailed': 'Avvio del pagamento non riuscito', 'paymentLaunchFailed': 'Avvio del pagamento non riuscito',
'paymentExceptionWithError': 'Eccezione di pagamento: @error', 'paymentExceptionWithError': 'Eccezione di pagamento: @error',
'paymentProcessingCheckLater': 'Il tuo ordine è in fase di elaborazione. Controlla più tardi.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Impossibile interrogare il risultato del pagamento: @error', 'Il tuo ordine è in fase di elaborazione. Controlla più tardi.',
'orderConfirmedQuotaRefreshed': 'Ordine confermato. La tua quota è stata aggiornata.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Pagamento completato. Conferma in corso…', 'Impossibile interrogare il risultato del pagamento: @error',
'paymentCancelled': 'Pagamento annullato', 'orderConfirmedQuotaRefreshed':
'paypalOpenedCompleteInBrowser': 'PayPal aperto. Completa il pagamento nel tuo browser.', 'Ordine confermato. La tua quota è stata aggiornata.',
'paypalOpenFailed': 'Impossibile aprire la pagina di pagamento PayPal', 'paymentCompletedConfirming': 'Pagamento completato. Conferma in corso…',
'paymentTestTitle': 'Test di pagamento', 'paymentCancelled': 'Pagamento annullato',
'paymentTestOrderInfo': 'Informazioni ordine di prova', 'paypalOpenedCompleteInBrowser':
'paymentTestProductId': 'ID prodotto', 'PayPal aperto. Completa il pagamento nel tuo browser.',
'paymentTestProductDescription': 'Descrizione del prodotto', 'paypalOpenFailed': 'Impossibile aprire la pagina di pagamento PayPal',
'paymentTestWechatDescription': 'Test di pagamento WeChat Pay', 'paymentTestTitle': 'Test di pagamento',
'paymentTestAlipayDescription': 'Test di pagamento Alipay', 'paymentTestOrderInfo': 'Informazioni ordine di prova',
'paymentTestAmount': 'Importo', 'paymentTestProductId': 'ID prodotto',
'paymentTestSelectAmount': "Seleziona l'importo di prova", 'paymentTestProductDescription': 'Descrizione del prodotto',
'paying': 'Pagamento in corso...', 'paymentTestWechatDescription': 'Test di pagamento WeChat Pay',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAlipayDescription': 'Test di pagamento Alipay',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAmount': 'Importo',
'paymentStatusTitle': 'Stato del pagamento', 'paymentTestSelectAmount': "Seleziona l'importo di prova",
'errorInfoWithMessage': 'Errore: @message', 'paying': 'Pagamento in corso...',
'retest': 'Ripeti il test', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsTitle': 'Istruzioni', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsContent': "1. Seleziona un importo di prova (consigliato: ¥0,01)\n2. Clicca il pulsante di pagamento per iniziare\n3. Completa il pagamento nell'app di pagamento\n4. Torna per verificare il risultato", 'paymentStatusTitle': 'Stato del pagamento',
'startingWechatPayment': 'Avvio di WeChat Pay...', 'errorInfoWithMessage': 'Errore: @message',
'startingAlipayPayment': 'Avvio di Alipay...', 'retest': 'Ripeti il test',
'wechatPaymentSuccess': 'Pagamento WeChat Pay riuscito!', 'paymentTestInstructionsTitle': 'Istruzioni',
'wechatPaymentFailed': 'Pagamento WeChat Pay non riuscito', 'paymentTestInstructionsContent':
'wechatPaymentLaunchFailed': 'Impossibile avviare WeChat Pay', "1. Seleziona un importo di prova (consigliato: ¥0,01)\n2. Clicca il pulsante di pagamento per iniziare\n3. Completa il pagamento nell'app di pagamento\n4. Torna per verificare il risultato",
'cannotLaunchWechatPayment': 'Impossibile avviare WeChat Pay', 'startingWechatPayment': 'Avvio di WeChat Pay...',
'wechatPaymentException': 'Eccezione WeChat Pay', 'startingAlipayPayment': 'Avvio di Alipay...',
'wechatPaymentTestCompleted': 'Test di pagamento WeChat Pay completato', 'wechatPaymentSuccess': 'Pagamento WeChat Pay riuscito!',
'alipayPaymentSuccess': 'Pagamento Alipay riuscito!', 'wechatPaymentFailed': 'Pagamento WeChat Pay non riuscito',
'alipayPaymentFailed': 'Pagamento Alipay non riuscito', 'wechatPaymentLaunchFailed': 'Impossibile avviare WeChat Pay',
'alipayPaymentLaunchFailed': 'Impossibile avviare Alipay', 'cannotLaunchWechatPayment': 'Impossibile avviare WeChat Pay',
'cannotLaunchAlipayPayment': 'Impossibile avviare Alipay', 'wechatPaymentException': 'Eccezione WeChat Pay',
'alipayPaymentException': 'Eccezione Alipay', 'wechatPaymentTestCompleted': 'Test di pagamento WeChat Pay completato',
'alipayPaymentSuccess': 'Pagamento Alipay riuscito!',
'alipayPaymentFailed': 'Pagamento Alipay non riuscito',
'alipayPaymentLaunchFailed': 'Impossibile avviare Alipay',
'cannotLaunchAlipayPayment': 'Impossibile avviare Alipay',
'alipayPaymentException': 'Eccezione Alipay',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -502,16 +529,24 @@ const Map<String, String> itIT = {
'meetingRecordExitMessage': 'Scegli cosa fare prima di uscire', // 请选择离开后的操作 'meetingRecordExitMessage': 'Scegli cosa fare prima di uscire', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Termina e salva', // 结束录音并保存 'meetingRecordEndAndSave': 'Termina e salva', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Termina senza salvare', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Termina senza salvare', // 结束录音不保存
'meetingRecordContinueInBackground': 'Continua a registrare in background', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试 'Continua a registrare in background', // 后台继续录音
'meetingRecordStopFailed': 'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试 'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Registrazione in corso', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Registrazione in corso', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Registrazione in background. Tocca per tornare all\'app.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Registrazione in background. Tocca per tornare all\'app.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Mostra sopra altre app', // 悬浮窗权限 'overlayPermissionTitle': 'Mostra sopra altre app', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Per mostrare i risultati della traduzione durante le chiamate o la traduzione audio/video, ci serve l\'autorizzazione di overlay. In questo modo puoi vedere le traduzioni in tempo reale mentre usi altre app.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Per mostrare la barra fluttuante di registrazione (timer/pausa/riprendi) durante la registrazione, ci serve l\'autorizzazione di overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Per mostrare i risultati della traduzione durante le chiamate o la traduzione audio/video, ci serve l\'autorizzazione di overlay. In questo modo puoi vedere le traduzioni in tempo reale mentre usi altre app.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Impossibile aprire automaticamente le impostazioni di sistema. Apri Impostazioni e abilita manualmente l\'autorizzazione di overlay.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Per mostrare la barra fluttuante di registrazione (timer/pausa/riprendi) durante la registrazione, ci serve l\'autorizzazione di overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Impossibile aprire automaticamente le impostazioni di sistema. Apri Impostazioni e abilita manualmente l\'autorizzazione di overlay.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -536,21 +571,22 @@ const Map<String, String> itIT = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Crea', 'create': 'Crea',
'templateDetails': 'Dettagli del modello', 'templateDetails': 'Dettagli del modello',
'tag': 'Etichetta', 'tag': 'Etichetta',
'description': 'Descrizione', 'description': 'Descrizione',
'template': 'Modello', 'template': 'Modello',
'deleteTemplate': 'Elimina modello', 'deleteTemplate': 'Elimina modello',
'deleteTemplateConfirm': 'Sei sicuro di voler eliminare questo modello?', 'deleteTemplateConfirm': 'Sei sicuro di voler eliminare questo modello?',
'editTemplate': 'Modifica modello', 'editTemplate': 'Modifica modello',
'createTemplate': 'Crea modello', 'createTemplate': 'Crea modello',
'name': 'Nome', 'name': 'Nome',
'templateContentHint': 'Inserisci il contenuto del modello! Suggerimento: Clicca il pulsante IA qui sopra per generare rapidamente il contenuto del modello in base al nome e alla descrizione inseriti', 'templateContentHint':
'inputNameHint': 'Inserisci un nome', 'Inserisci il contenuto del modello! Suggerimento: Clicca il pulsante IA qui sopra per generare rapidamente il contenuto del modello in base al nome e alla descrizione inseriti',
'inputDescHint': 'Inserisci una descrizione', 'inputNameHint': 'Inserisci un nome',
'custom': 'Personalizzato', 'inputDescHint': 'Inserisci una descrizione',
'pleaseEnter': 'Si prega di inserire', 'custom': 'Personalizzato',
'pleaseEnter': 'Si prega di inserire',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -573,7 +609,7 @@ const Map<String, String> itIT = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Salva mappa mentale', 'saveMindMap': 'Salva mappa mentale',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -595,7 +631,7 @@ const Map<String, String> itIT = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Esporta', 'export': 'Esporta',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Applica a tutti i paragrafi di questo relatore', 'applyToAllParagraphs': 'Applica a tutti i paragrafi di questo relatore',
@ -705,18 +741,18 @@ const Map<String, String> itIT = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analisi non riuscita, riprova più tardi', 'analysisFailed': 'Analisi non riuscita, riprova più tardi',
'transcriptionFailed': 'Trascrizione non riuscita, riprova più tardi', 'transcriptionFailed': 'Trascrizione non riuscita, riprova più tardi',
'summaryFailed': 'Riepilogo non riuscito, riprova più tardi', 'summaryFailed': 'Riepilogo non riuscito, riprova più tardi',
'summaryFailedShort': 'Riepilogo non riuscito', 'summaryFailedShort': 'Riepilogo non riuscito',
'transcriptionFailedShort': 'Trascrizione non riuscita', 'transcriptionFailedShort': 'Trascrizione non riuscita',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Il lettore audio non è pronto, attendere', 'playerNotReady': 'Il lettore audio non è pronto, attendere',
'playFailed': 'Riproduzione non riuscita', 'playFailed': 'Riproduzione non riuscita',
'audioFileNotFound': 'File audio non trovato', 'audioFileNotFound': 'File audio non trovato',
'fetchingAudio': 'Recupero audio dal cloud...', 'fetchingAudio': 'Recupero audio dal cloud...',
'playerLoadFailed': 'Caricamento del lettore audio non riuscito', 'playerLoadFailed': 'Caricamento del lettore audio non riuscito',
// 设置页 // 设置页
"systemSettings": "Impostazioni di sistema", "systemSettings": "Impostazioni di sistema",
@ -827,7 +863,8 @@ const Map<String, String> itIT = {
"swipeUpForMore": "Scorri verso l'alto per vedere di più", "swipeUpForMore": "Scorri verso l'alto per vedere di più",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': "Quando abilitato: l'IA non verrà interrotta dalla tua voce mentre parla e potrà gestire solo un turno di conversazione alla volta. Per iniziare un nuovo turno, basta pronunciare la parola di attivazione.", 'voice_interrupt_tip':
"Quando abilitato: l'IA non verrà interrotta dalla tua voce mentre parla e potrà gestire solo un turno di conversazione alla volta. Per iniziare un nuovo turno, basta pronunciare la parola di attivazione.",
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -884,6 +921,14 @@ const Map<String, String> itIT = {
'Vogliamo sapere perché stai segnalando, puoi descrivere il problema che hai riscontrato.', 'Vogliamo sapere perché stai segnalando, puoi descrivere il problema che hai riscontrato.',
'generatedByAi': 'Generato da AI', 'generatedByAi': 'Generato da AI',
// Agent模块 - 工具调用
'toolCall': 'Chiamata strumento',
'noResult': 'Nessun risultato',
'noToolCallContentToCopy':
'Nessun contenuto della chiamata strumento da copiare',
'toolCallDetails': 'Dettagli chiamata strumento:',
'toolCallContentCopied': 'Contenuto copiato negli appunti',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Ecco alcuni brani musicali consigliati:', 'recommendedMusic': 'Ecco alcuni brani musicali consigliati:',
'playList': 'Playlist', 'playList': 'Playlist',
@ -904,6 +949,29 @@ const Map<String, String> itIT = {
"bicycling": "In bicicletta", "bicycling": "In bicicletta",
"tsransit": "Trasporto pubblico", "tsransit": "Trasporto pubblico",
// Agent模块 - 导航选择
'selectNavigationApp': 'Seleziona app di navigazione',
'amapMap': 'Amap',
'useAmapNavigation': 'Naviga con Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Naviga con Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Naviga con Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Naviga con Apple Maps',
'builtInNavigation': 'Navigazione integrata',
'useBuiltInNavigation': 'Naviga con mappa integrata',
'navigationStartFailed': 'Avvio navigazione fallito',
'cannotPlayMusicListRetryLater':
'Impossibile riprodurre la playlist, riprovare piu tardi',
'cannotPlaySong': 'Impossibile riprodurre il brano',
'openMapError': 'Errore durante l apertura della mappa',
'pleaseInstallAmapApp': 'Installare prima l app Amap',
'pleaseInstallBaiduMapApp': 'Installare prima l app Baidu Maps',
'appleMapStartFailed': 'Avvio Apple Maps fallito',
'appleMapUnavailable': 'Apple Maps non disponibile',
'openAppleMapError': 'Errore durante l apertura di Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Interrogazione delle condizioni meteorologiche:', 'weatherQuery': 'Interrogazione delle condizioni meteorologiche:',
'highest': 'Massima', 'highest': 'Massima',
@ -976,8 +1044,20 @@ const Map<String, String> itIT = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disattiva finestra mobile',
'enableFloatingWindow': 'Attiva finestra mobile',
'permissionTip': 'Suggerimento permessi',
'micPermissionRequiredForRecording':
'Permesso microfono necessario per la registrazione',
'deleteTranslationRecordError':
'Errore durante l eliminazione del record di traduzione: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Traduzione in corso",
"translate": "Traduci",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Inserisci il testo da tradurre",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1256,17 +1336,20 @@ const Map<String, String> itIT = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigazione in corso', 'native.notification.navigation.title': 'Navigazione in corso',
'native.notification.navigation.keepRunning': "Navigazione in corso, mantieni l'app attiva", 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': "L'agente assistente vocale è in esecuzione", "Navigazione in corso, mantieni l'app attiva",
'native.notification.audioRecording.recording': "Registrazione audio in corso, tocca per tornare all'app", 'native.notification.bleAgent.running':
'native.notification.music.waiting': 'In attesa di riproduzione', "L'agente assistente vocale è in esecuzione",
'native.notification.music.previous': 'Indietro', 'native.notification.audioRecording.recording':
'native.notification.music.next': 'Avanti', "Registrazione audio in corso, tocca per tornare all'app",
'native.notification.music.play': 'Riproduci', 'native.notification.music.waiting': 'In attesa di riproduzione',
'native.notification.music.pause': 'Pausa', 'native.notification.music.previous': 'Indietro',
'native.notification.qqMusic.playing': 'Riproduzione musica in corso', 'native.notification.music.next': 'Avanti',
'native.notification.music.play': 'Riproduci',
'native.notification.music.pause': 'Pausa',
'native.notification.qqMusic.playing': 'Riproduzione musica in corso',
// 版本更新 // 版本更新
'newVersionFound': 'Nuova versione trovata', // 版本更新对话框标题 'newVersionFound': 'Nuova versione trovata', // 版本更新对话框标题
@ -1408,6 +1491,59 @@ const Map<String, String> itIT = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Rimuovi entrambi gli auricolari e assicurati che la batteria di entrambi sia superiore al 20%", "Rimuovi entrambi gli auricolari e assicurati che la batteria di entrambi sia superiore al 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Nuova versione @version trovata',
'otaConfirmUpdateNow': 'Aggiornare ora?',
'otaUpdate': 'Aggiorna',
'otaUpgradeSuccess': 'Aggiornamento riuscito',
'otaUpgradeCompleteRepair':
'Aggiornamento completato!\n\nIl dispositivo deve essere riassociato. Andare alla pagina di associazione?',
'otaPairLater': 'Associa dopo',
'otaPairNow': 'Associa ora',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Errore nella verifica connessione BLE: @error',
'otaBleNotConnected': 'Dispositivo BLE non connesso',
'otaBleNeedConnection':
'Connessione BLE richiesta\nAssicurarsi che il dispositivo sia connesso e riprovare',
'otaDeviceInfoUnavailableTitle': 'Info dispositivo non disponibili',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Verifica connessione BLE fallita',
'otaCannotGetDeviceInfoCheckConnection':
'Impossibile ottenere info dispositivo, verificare la connessione',
'otaCannotGetProductInfoWithName':
'Impossibile ottenere info prodotto, nome dispositivo: @deviceName',
'otaCannotGetBatteryInfo': 'Impossibile ottenere info batteria valide',
'otaLowBattery': 'Batteria scarica',
'otaSingleBatteryLow':
'Batteria troppo scarica\nRequisito: superiore al 20%\nAttuale: @ear @battery%\nCaricare e riprovare',
'otaDoubleBatteryLow':
'Batteria troppo scarica\nRequisito: entrambi gli auricolari superiori al 20%\nAttuale: Sinistro @left%, Destro @right%\nCaricare e riprovare',
'otaBatteryCheckFailed': 'Verifica batteria fallita',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Questo aggiornamento include ottimizzazioni delle prestazioni e correzioni di bug.',
'otaGetLatestVersionFailed': 'Impossibile ottenere la versione piu recente',
'otaGetVersionInfoFailed': 'Impossibile ottenere le info di versione',
'otaCheckingDeviceStatus': 'Verifica stato dispositivo...',
'otaDownloadFailedCheckNetwork':
'Download fallito, verificare la connessione di rete',
'otaDownloadFailed': 'Download fallito',
'otaPreparingConnection': 'Preparazione connessione...',
'otaConnectingDevice': 'Connessione al dispositivo...',
'otaUpgradeStarted': 'Aggiornamento OTA avviato...',
'otaUpgradeProgressWithPercent': 'Progresso: @percent%',
'otaUpgradeSuccessComplete': 'Aggiornamento completato con successo',
'otaUpgradeFailedWithCode': 'Aggiornamento fallito, codice errore: @code',
'otaUpgradeFailedTitle': 'Aggiornamento fallito',
'otaUpgradeFailedDesc':
'Verificare connessione o pacchetto di aggiornamento, codice: @code',
'otaDeviceDisconnected': 'Dispositivo disconnesso',
'otaDeviceConnected': 'Dispositivo connesso',
// 音乐模块 // 音乐模块
"noMusic": "Nessuna musica", // 暂无音乐 "noMusic": "Nessuna musica", // 暂无音乐
"noPlayingMusic": "Nessuna musica in riproduzione", // 暂无播放音乐 "noPlayingMusic": "Nessuna musica in riproduzione", // 暂无播放音乐

273
lib/core/translations/language/ja_jp.dart

@ -1,5 +1,4 @@
const Map<String, String> jaJP = { const Map<String, String> jaJP = {
// 通用 // 通用
'continue': '続ける', 'continue': '続ける',
'confirm': '確認', 'confirm': '確認',
@ -160,6 +159,27 @@ const Map<String, String> jaJP = {
'right': '右', 'right': '右',
'checkConnectionStatusFailed': '接続状態の確認に失敗', 'checkConnectionStatusFailed': '接続状態の確認に失敗',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetoothの初期化に失敗しました: @error',
'needBluetoothAndLocationPermission': 'デバイスをスキャンするにはBluetoothと位置情報の権限が必要です',
'permissionRequestFailedWithError': '権限リクエストが失敗しました: @error',
'needPermission': '権限が必要',
'blePermissionDialogContent':
'デバイスをスキャンするにはBluetoothと位置情報の権限が必要です。設定から有効にしてください。',
'needEnableBluetooth': 'Bluetoothを有効にしてください',
'enableBluetoothDialogContent': 'デバイスをスキャン・接続するにはBluetoothを有効にしてください。',
'bleScanFailedWithError': 'スキャン失敗: @error',
'bleConnectionSuccess': '接続成功',
'bleConnectedToDevice': '@device に接続しました',
'bleConnectionFailedWithError': '接続失敗: @error',
'bleDisconnected': '切断されました',
'bleDeviceDisconnected': 'デバイスが切断されました',
'bleDisconnectFailedWithError': '切断失敗: @error',
'signalStrong': '強い',
'signalMedium': '普通',
'signalWeak': '弱い',
'signalVeryWeak': '非常に弱い',
// 发现页 // 发现页
"searchAi": "AI機能を検索...", "searchAi": "AI機能を検索...",
"exploreSlogan": "スマートイヤホン、無限の可能性", "exploreSlogan": "スマートイヤホン、無限の可能性",
@ -234,60 +254,61 @@ const Map<String, String> jaJP = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': '支払い成功', 'paymentSuccess': '支払い成功',
'paymentFailed': '支払い失敗', 'paymentFailed': '支払い失敗',
'gotIt': '了解', 'gotIt': '了解',
'paymentFailedTryAgain': '支払いに失敗しました。もう一度お試しください。', 'paymentFailedTryAgain': '支払いに失敗しました。もう一度お試しください。',
'selectPaymentMethod': '支払い方法を選択', 'selectPaymentMethod': '支払い方法を選択',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'WeChat Pay注文の作成に失敗しました', 'wechatOrderCreateFailed': 'WeChat Pay注文の作成に失敗しました',
'alipayOrderCreateFailed': 'Alipay注文の作成に失敗しました', 'alipayOrderCreateFailed': 'Alipay注文の作成に失敗しました',
'appleOrderCreateFailed': 'Apple注文の作成に失敗しました', 'appleOrderCreateFailed': 'Apple注文の作成に失敗しました',
'googleOrderCreateFailed': 'Google注文の作成に失敗しました', 'googleOrderCreateFailed': 'Google注文の作成に失敗しました',
'paypalOrderCreateFailed': 'PayPal注文の作成に失敗しました', 'paypalOrderCreateFailed': 'PayPal注文の作成に失敗しました',
'paymentException': '支払い例外', 'paymentException': '支払い例外',
'paymentLaunchFailed': '支払いの起動に失敗しました', 'paymentLaunchFailed': '支払いの起動に失敗しました',
'paymentExceptionWithError': '支払い例外:@error', 'paymentExceptionWithError': '支払い例外:@error',
'paymentProcessingCheckLater': 'ご注文は処理中です。後で確認してください。', 'paymentProcessingCheckLater': 'ご注文は処理中です。後で確認してください。',
'paymentResultQueryException': '支払い結果の照会に失敗しました:@error', 'paymentResultQueryException': '支払い結果の照会に失敗しました:@error',
'orderConfirmedQuotaRefreshed': '注文が確認されました。クォータが更新されました。', 'orderConfirmedQuotaRefreshed': '注文が確認されました。クォータが更新されました。',
'paymentCompletedConfirming': '支払い完了。確認中…', 'paymentCompletedConfirming': '支払い完了。確認中…',
'paymentCancelled': '支払いがキャンセルされました', 'paymentCancelled': '支払いがキャンセルされました',
'paypalOpenedCompleteInBrowser': 'PayPalが開きました。ブラウザで支払いを完了してください。', 'paypalOpenedCompleteInBrowser': 'PayPalが開きました。ブラウザで支払いを完了してください。',
'paypalOpenFailed': 'PayPal支払いページを開けません', 'paypalOpenFailed': 'PayPal支払いページを開けません',
'paymentTestTitle': '支払いテスト', 'paymentTestTitle': '支払いテスト',
'paymentTestOrderInfo': 'テスト注文情報', 'paymentTestOrderInfo': 'テスト注文情報',
'paymentTestProductId': '商品ID', 'paymentTestProductId': '商品ID',
'paymentTestProductDescription': '商品説明', 'paymentTestProductDescription': '商品説明',
'paymentTestWechatDescription': 'WeChat Pay支払いテスト', 'paymentTestWechatDescription': 'WeChat Pay支払いテスト',
'paymentTestAlipayDescription': 'Alipay支払いテスト', 'paymentTestAlipayDescription': 'Alipay支払いテスト',
'paymentTestAmount': '金額', 'paymentTestAmount': '金額',
'paymentTestSelectAmount': 'テスト金額を選択', 'paymentTestSelectAmount': 'テスト金額を選択',
'paying': '支払い中...', 'paying': '支払い中...',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'alipayPayWithAmount': 'Alipay ¥@amount', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentStatusTitle': '支払い状況', 'paymentStatusTitle': '支払い状況',
'errorInfoWithMessage': 'エラー:@message', 'errorInfoWithMessage': 'エラー:@message',
'retest': '再テスト', 'retest': '再テスト',
'paymentTestInstructionsTitle': '手順', 'paymentTestInstructionsTitle': '手順',
'paymentTestInstructionsContent': '1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認', 'paymentTestInstructionsContent':
'startingWechatPayment': 'WeChat Payを起動中...', '1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認',
'startingAlipayPayment': 'Alipayを起動中...', 'startingWechatPayment': 'WeChat Payを起動中...',
'wechatPaymentSuccess': 'WeChat Pay支払い成功!', 'startingAlipayPayment': 'Alipayを起動中...',
'wechatPaymentFailed': 'WeChat Pay支払い失敗', 'wechatPaymentSuccess': 'WeChat Pay支払い成功!',
'wechatPaymentLaunchFailed': 'WeChat Payの起動に失敗しました', 'wechatPaymentFailed': 'WeChat Pay支払い失敗',
'cannotLaunchWechatPayment': 'WeChat Payを起動できません', 'wechatPaymentLaunchFailed': 'WeChat Payの起動に失敗しました',
'wechatPaymentException': 'WeChat Pay例外', 'cannotLaunchWechatPayment': 'WeChat Payを起動できません',
'wechatPaymentTestCompleted': 'WeChat Pay支払いテストが完了しました', 'wechatPaymentException': 'WeChat Pay例外',
'alipayPaymentSuccess': 'Alipay支払い成功!', 'wechatPaymentTestCompleted': 'WeChat Pay支払いテストが完了しました',
'alipayPaymentFailed': 'Alipay支払い失敗', 'alipayPaymentSuccess': 'Alipay支払い成功!',
'alipayPaymentLaunchFailed': 'Alipayの起動に失敗しました', 'alipayPaymentFailed': 'Alipay支払い失敗',
'cannotLaunchAlipayPayment': 'Alipayを起動できません', 'alipayPaymentLaunchFailed': 'Alipayの起動に失敗しました',
'alipayPaymentException': 'Alipay例外', 'cannotLaunchAlipayPayment': 'Alipayを起動できません',
'alipayPaymentException': 'Alipay例外',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -526,21 +547,22 @@ const Map<String, String> jaJP = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': '作成', 'create': '作成',
'templateDetails': 'テンプレートの詳細', 'templateDetails': 'テンプレートの詳細',
'tag': 'タグ', 'tag': 'タグ',
'description': '説明', 'description': '説明',
'template': 'テンプレート', 'template': 'テンプレート',
'deleteTemplate': 'テンプレートを削除', 'deleteTemplate': 'テンプレートを削除',
'deleteTemplateConfirm': 'このテンプレートを削除してもよろしいですか?', 'deleteTemplateConfirm': 'このテンプレートを削除してもよろしいですか?',
'editTemplate': 'テンプレートを編集', 'editTemplate': 'テンプレートを編集',
'createTemplate': 'テンプレートを作成', 'createTemplate': 'テンプレートを作成',
'name': '名前', 'name': '名前',
'templateContentHint': 'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます', 'templateContentHint':
'inputNameHint': '名前を入力してください', 'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます',
'inputDescHint': '説明を入力してください', 'inputNameHint': '名前を入力してください',
'custom': 'カスタム', 'inputDescHint': '説明を入力してください',
'pleaseEnter': '入力してください', 'custom': 'カスタム',
'pleaseEnter': '入力してください',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -563,7 +585,7 @@ const Map<String, String> jaJP = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'マインドマップを保存', 'saveMindMap': 'マインドマップを保存',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -585,7 +607,7 @@ const Map<String, String> jaJP = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'エクスポート', 'export': 'エクスポート',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'この話者のすべての段落に適用', 'applyToAllParagraphs': 'この話者のすべての段落に適用',
@ -694,18 +716,18 @@ const Map<String, String> jaJP = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': '分析に失敗しました。後でもう一度お試しください', 'analysisFailed': '分析に失敗しました。後でもう一度お試しください',
'transcriptionFailed': '文字起こしに失敗しました。後でもう一度お試しください', 'transcriptionFailed': '文字起こしに失敗しました。後でもう一度お試しください',
'summaryFailed': '要約に失敗しました。後でもう一度お試しください', 'summaryFailed': '要約に失敗しました。後でもう一度お試しください',
'summaryFailedShort': '要約失敗', 'summaryFailedShort': '要約失敗',
'transcriptionFailedShort': '文字起こし失敗', 'transcriptionFailedShort': '文字起こし失敗',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'オーディオプレーヤーの準備ができていません。お待ちください', 'playerNotReady': 'オーディオプレーヤーの準備ができていません。お待ちください',
'playFailed': '再生に失敗しました', 'playFailed': '再生に失敗しました',
'audioFileNotFound': '音声ファイルが見つかりません', 'audioFileNotFound': '音声ファイルが見つかりません',
'fetchingAudio': 'クラウドから音声を取得中...', 'fetchingAudio': 'クラウドから音声を取得中...',
'playerLoadFailed': 'オーディオプレーヤーの読み込みに失敗しました', 'playerLoadFailed': 'オーディオプレーヤーの読み込みに失敗しました',
// 设置页 // 设置页
"systemSettings": "システム設定", "systemSettings": "システム設定",
@ -808,7 +830,8 @@ const Map<String, String> jaJP = {
"swipeUpForMore": "上にスワイプしてさらに表示", "swipeUpForMore": "上にスワイプしてさらに表示",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': '有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。', 'voice_interrupt_tip':
'有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -859,6 +882,13 @@ const Map<String, String> jaJP = {
'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。', 'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。',
'generatedByAi': 'AIによって生成', 'generatedByAi': 'AIによって生成',
// Agent模块 - 工具调用
'toolCall': 'ツール呼び出し',
'noResult': '結果なし',
'noToolCallContentToCopy': 'コピーするツール呼び出し内容がありません',
'toolCallDetails': 'ツール呼び出し詳細:',
'toolCallContentCopied': 'ツール呼び出し内容をクリップボードにコピーしました',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'おすすめの音楽をご紹介します:', 'recommendedMusic': 'おすすめの音楽をご紹介します:',
'playList': 'プレイリスト', 'playList': 'プレイリスト',
@ -879,6 +909,28 @@ const Map<String, String> jaJP = {
"bicycling": "自転車", "bicycling": "自転車",
"tsransit": "Transit", "tsransit": "Transit",
// Agent模块 - 导航选择
'selectNavigationApp': 'ナビアプリを選択',
'amapMap': 'Amap',
'useAmapNavigation': 'Amapでナビゲート',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Baidu Mapsでナビゲート',
'googleMap': 'Google マップ',
'useGoogleNavigation': 'Google マップでナビゲート',
'appleMap': 'Apple マップ',
'useAppleNavigation': 'Apple マップでナビゲート',
'builtInNavigation': '内蔵ナビ',
'useBuiltInNavigation': '内蔵地図でナビゲート',
'navigationStartFailed': 'ナビの開始に失敗しました',
'cannotPlayMusicListRetryLater': '音楽リストを再生できません。後でもう一度お試しください',
'cannotPlaySong': '曲を再生できません',
'openMapError': '地図を開く際にエラーが発生しました',
'pleaseInstallAmapApp': 'Amapアプリをインストールしてください',
'pleaseInstallBaiduMapApp': 'Baidu Mapsアプリをインストールしてください',
'appleMapStartFailed': 'Apple マップの起動に失敗しました',
'appleMapUnavailable': 'Apple マップが利用できません',
'openAppleMapError': 'Apple マップを開く際にエラーが発生しました',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': '天気照会:', 'weatherQuery': '天気照会:',
'highest': '最高', 'highest': '最高',
@ -940,10 +992,20 @@ const Map<String, String> jaJP = {
"Please make sure the Bluetooth headset is connected to the phone and in a call state", "Please make sure the Bluetooth headset is connected to the phone and in a call state",
"autoDetect": "Auto Detect", // 自动检测 "autoDetect": "Auto Detect", // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'フローティングウィンドウを無効化',
'enableFloatingWindow': 'フローティングウィンドウを有効化',
'permissionTip': '権限のヒント',
'micPermissionRequiredForRecording': '録音にはマイク権限が必要です',
'deleteTranslationRecordError': '翻訳記録の削除中にエラーが発生しました: @error',
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "翻訳中",
"translate": "翻訳",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "翻訳するテキストを入力してください",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1328,6 +1390,51 @@ const Map<String, String> jaJP = {
"updateContent": "更新内容", "updateContent": "更新内容",
"removeEarbudsEnsureBattery": "両方のイヤホンを取り出し、バッテリーレベルが20%以上であることを確認してください", "removeEarbudsEnsureBattery": "両方のイヤホンを取り出し、バッテリーレベルが20%以上であることを確認してください",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': '新バージョン @version が見つかりました',
'otaConfirmUpdateNow': '今すぐアップデートしますか?',
'otaUpdate': 'アップデート',
'otaUpgradeSuccess': 'アップグレード成功',
'otaUpgradeCompleteRepair':
'ファームウェアのアップグレードが完了しました!\n\nデバイスを再ペアリングする必要があります。ペアリングページに移動しますか?',
'otaPairLater': '後でペアリング',
'otaPairNow': '今すぐペアリング',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'BLE接続状態の確認中にエラーが発生しました:@error',
'otaBleNotConnected': 'BLEデバイス未接続',
'otaBleNeedConnection':
'ファームウェアのアップグレードにはBLEデバイスの接続が必要です\nデバイスが正しく接続されていることを確認してください',
'otaDeviceInfoUnavailableTitle': 'デバイス情報取得不可',
'otaCannotGetDeviceInfo': 'デバイス情報を取得できません\nデバイスを再接続するか、後でもう一度お試しください',
'otaBleCheckFailed': 'BLE接続確認失敗',
'otaCannotGetDeviceInfoCheckConnection': 'デバイス情報を取得できません。接続を確認してください',
'otaCannotGetProductInfoWithName': '製品情報を取得できません。デバイス名: @deviceName',
'otaCannotGetBatteryInfo': '有効なバッテリー情報を取得できません',
'otaLowBattery': 'バッテリー不足',
'otaSingleBatteryLow':
'バッテリー残量が不足しています\n要件:バッテリー残量が20%以上必要です\n現在:@ear @battery%\n充電してから再試行してください',
'otaDoubleBatteryLow':
'バッテリー残量が不足しています\n要件:左右とも20%以上必要です\n現在:左 @left%、右 @right%\n充電してから再試行してください',
'otaBatteryCheckFailed': 'バッテリー確認失敗',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': '本アップデートにはパフォーマンスの最適化とバグ修正が含まれています。',
'otaGetLatestVersionFailed': '最新バージョン情報の取得に失敗しました',
'otaGetVersionInfoFailed': 'バージョン情報の取得に失敗しました',
'otaCheckingDeviceStatus': 'デバイスの状態を確認中...',
'otaDownloadFailedCheckNetwork': 'ダウンロード失敗。ネットワーク接続を確認してください',
'otaDownloadFailed': 'ダウンロード失敗',
'otaPreparingConnection': 'デバイス接続を準備中...',
'otaConnectingDevice': 'デバイスに接続中...',
'otaUpgradeStarted': 'OTAアップグレード開始...',
'otaUpgradeProgressWithPercent': 'アップグレード進捗: @percent%',
'otaUpgradeSuccessComplete': 'アップグレードが完了しました',
'otaUpgradeFailedWithCode': 'アップグレード失敗、エラーコード: @code',
'otaUpgradeFailedTitle': 'アップグレード失敗',
'otaUpgradeFailedDesc': 'デバイス接続またはアップデートパッケージを確認してください。エラーコード: @code',
'otaDeviceDisconnected': 'デバイスが切断されました',
'otaDeviceConnected': 'デバイスが接続されました',
// 音乐模块 // 音乐模块
"noMusic": "音楽がありません", // 暂无音乐 "noMusic": "音楽がありません", // 暂无音乐
"noPlayingMusic": "再生中の音楽がありません", // 暂无播放音乐 "noPlayingMusic": "再生中の音楽がありません", // 暂无播放音乐

1195
lib/core/translations/language/ko_kr.dart

File diff suppressed because it is too large

337
lib/core/translations/language/lt_lt.dart

@ -1,5 +1,4 @@
const Map<String, String> ltLT = { const Map<String, String> ltLT = {
// 通用 // 通用
'continue': 'Tęsti', 'continue': 'Tęsti',
'confirm': 'Patvirtinti', 'confirm': 'Patvirtinti',
@ -169,6 +168,29 @@ const Map<String, String> ltLT = {
'right': 'Dešinė', 'right': 'Dešinė',
'checkConnectionStatusFailed': 'Nepavyko patikrinti ryšio būsenos', 'checkConnectionStatusFailed': 'Nepavyko patikrinti ryšio būsenos',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Ieškoti AI funkcijų...", "searchAi": "Ieškoti AI funkcijų...",
"exploreSlogan": "Išmaniosios ausinės, beribės galimybės", "exploreSlogan": "Išmaniosios ausinės, beribės galimybės",
@ -245,60 +267,65 @@ const Map<String, String> ltLT = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Mokėjimas sėkmingas', 'paymentSuccess': 'Mokėjimas sėkmingas',
'paymentFailed': 'Mokėjimas nepavyko', 'paymentFailed': 'Mokėjimas nepavyko',
'gotIt': 'Supratau', 'gotIt': 'Supratau',
'paymentFailedTryAgain': 'Mokėjimas nepavyko. Bandykite dar kartą.', 'paymentFailedTryAgain': 'Mokėjimas nepavyko. Bandykite dar kartą.',
'selectPaymentMethod': 'Pasirinkite mokėjimo būdą', 'selectPaymentMethod': 'Pasirinkite mokėjimo būdą',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Nepavyko sukurti WeChat Pay užsakymo', 'wechatOrderCreateFailed': 'Nepavyko sukurti WeChat Pay užsakymo',
'alipayOrderCreateFailed': 'Nepavyko sukurti Alipay užsakymo', 'alipayOrderCreateFailed': 'Nepavyko sukurti Alipay užsakymo',
'appleOrderCreateFailed': 'Nepavyko sukurti Apple užsakymo', 'appleOrderCreateFailed': 'Nepavyko sukurti Apple užsakymo',
'googleOrderCreateFailed': 'Nepavyko sukurti Google užsakymo', 'googleOrderCreateFailed': 'Nepavyko sukurti Google užsakymo',
'paypalOrderCreateFailed': 'Nepavyko sukurti PayPal užsakymo', 'paypalOrderCreateFailed': 'Nepavyko sukurti PayPal užsakymo',
'paymentException': 'Mokėjimo išimtis', 'paymentException': 'Mokėjimo išimtis',
'paymentLaunchFailed': 'Mokėjimo paleidimas nepavyko', 'paymentLaunchFailed': 'Mokėjimo paleidimas nepavyko',
'paymentExceptionWithError': 'Mokėjimo išimtis: @error', 'paymentExceptionWithError': 'Mokėjimo išimtis: @error',
'paymentProcessingCheckLater': 'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Nepavyko užklausti mokėjimo rezultato: @error', 'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.',
'orderConfirmedQuotaRefreshed': 'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Mokėjimas baigtas. Patvirtinama…', 'Nepavyko užklausti mokėjimo rezultato: @error',
'paymentCancelled': 'Mokėjimas atšauktas', 'orderConfirmedQuotaRefreshed':
'paypalOpenedCompleteInBrowser': 'PayPal atidarytas. Užbaikite mokėjimą naršyklėje.', 'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.',
'paypalOpenFailed': 'Nepavyko atidaryti PayPal mokėjimo puslapio', 'paymentCompletedConfirming': 'Mokėjimas baigtas. Patvirtinama…',
'paymentTestTitle': 'Mokėjimo testas', 'paymentCancelled': 'Mokėjimas atšauktas',
'paymentTestOrderInfo': 'Testinio užsakymo informacija', 'paypalOpenedCompleteInBrowser':
'paymentTestProductId': 'Produkto ID', 'PayPal atidarytas. Užbaikite mokėjimą naršyklėje.',
'paymentTestProductDescription': 'Produkto aprašymas', 'paypalOpenFailed': 'Nepavyko atidaryti PayPal mokėjimo puslapio',
'paymentTestWechatDescription': 'WeChat Pay mokėjimo testas', 'paymentTestTitle': 'Mokėjimo testas',
'paymentTestAlipayDescription': 'Alipay mokėjimo testas', 'paymentTestOrderInfo': 'Testinio užsakymo informacija',
'paymentTestAmount': 'Suma', 'paymentTestProductId': 'Produkto ID',
'paymentTestSelectAmount': 'Pasirinkite testo sumą', 'paymentTestProductDescription': 'Produkto aprašymas',
'paying': 'Mokama...', 'paymentTestWechatDescription': 'WeChat Pay mokėjimo testas',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAlipayDescription': 'Alipay mokėjimo testas',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAmount': 'Suma',
'paymentStatusTitle': 'Mokėjimo būsena', 'paymentTestSelectAmount': 'Pasirinkite testo sumą',
'errorInfoWithMessage': 'Klaida: @message', 'paying': 'Mokama...',
'retest': 'Pakartotinis testas', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsTitle': 'Instrukcijos', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsContent': '1. Pasirinkite testo sumą (rekomenduojama: ¥0,01)\n2. Spustelėkite mokėjimo mygtuką, kad pradėtumėte\n3. Užbaikite mokėjimą mokėjimo programoje\n4. Grįžkite patikrinti rezultatą', 'paymentStatusTitle': 'Mokėjimo būsena',
'startingWechatPayment': 'Paleidžiamas WeChat Pay...', 'errorInfoWithMessage': 'Klaida: @message',
'startingAlipayPayment': 'Paleidžiamas Alipay...', 'retest': 'Pakartotinis testas',
'wechatPaymentSuccess': 'WeChat Pay sėkmingas!', 'paymentTestInstructionsTitle': 'Instrukcijos',
'wechatPaymentFailed': 'WeChat Pay nepavyko', 'paymentTestInstructionsContent':
'wechatPaymentLaunchFailed': 'Nepavyko paleisti WeChat Pay', '1. Pasirinkite testo sumą (rekomenduojama: ¥0,01)\n2. Spustelėkite mokėjimo mygtuką, kad pradėtumėte\n3. Užbaikite mokėjimą mokėjimo programoje\n4. Grįžkite patikrinti rezultatą',
'cannotLaunchWechatPayment': 'Nepavyko paleisti WeChat Pay', 'startingWechatPayment': 'Paleidžiamas WeChat Pay...',
'wechatPaymentException': 'WeChat Pay išimtis', 'startingAlipayPayment': 'Paleidžiamas Alipay...',
'wechatPaymentTestCompleted': 'WeChat Pay testas baigtas', 'wechatPaymentSuccess': 'WeChat Pay sėkmingas!',
'alipayPaymentSuccess': 'Alipay sėkmingas!', 'wechatPaymentFailed': 'WeChat Pay nepavyko',
'alipayPaymentFailed': 'Alipay nepavyko', 'wechatPaymentLaunchFailed': 'Nepavyko paleisti WeChat Pay',
'alipayPaymentLaunchFailed': 'Nepavyko paleisti Alipay', 'cannotLaunchWechatPayment': 'Nepavyko paleisti WeChat Pay',
'cannotLaunchAlipayPayment': 'Nepavyko paleisti Alipay', 'wechatPaymentException': 'WeChat Pay išimtis',
'alipayPaymentException': 'Alipay išimtis', 'wechatPaymentTestCompleted': 'WeChat Pay testas baigtas',
'alipayPaymentSuccess': 'Alipay sėkmingas!',
'alipayPaymentFailed': 'Alipay nepavyko',
'alipayPaymentLaunchFailed': 'Nepavyko paleisti Alipay',
'cannotLaunchAlipayPayment': 'Nepavyko paleisti Alipay',
'alipayPaymentException': 'Alipay išimtis',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -496,19 +523,27 @@ const Map<String, String> ltLT = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Išeiti iš įrašymo', // 退出录音 'meetingRecordExitTitle': 'Išeiti iš įrašymo', // 退出录音
'meetingRecordExitMessage': 'Pasirinkite, ką daryti prieš išeinant', // 请选择离开后的操作 'meetingRecordExitMessage':
'Pasirinkite, ką daryti prieš išeinant', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Baigti ir išsaugoti', // 结束录音并保存 'meetingRecordEndAndSave': 'Baigti ir išsaugoti', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Baigti neišsaugojus', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Baigti neišsaugojus', // 结束录音不保存
'meetingRecordContinueInBackground': 'Tęsti įrašymą fone', // 后台继续录音 'meetingRecordContinueInBackground': 'Tęsti įrašymą fone', // 后台继续录音
'meetingRecordStopTimeout': 'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试 'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试 'meetingRecordStopFailed':
'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Vyksta įrašymas', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Vyksta įrašymas', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Įrašoma fone. Palieskite, kad grįžtumėte į programą.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Įrašoma fone. Palieskite, kad grįžtumėte į programą.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Rodyti virš kitų programų', // 悬浮窗权限 'overlayPermissionTitle': 'Rodyti virš kitų programų', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Kad galėtume rodyti vertimo rezultatus skambučių arba garso/vaizdo vertimo metu, mums reikia leidimo rodyti virš kitų programų. Tai leis matyti vertimus realiuoju laiku naudojant kitas programas.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Kad įrašymo metu galėtume rodyti plaukiojančią įrašymo juostą (laikmatis/pristabdyti/tęsti), mums reikia leidimo rodyti virš kitų programų.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Kad galėtume rodyti vertimo rezultatus skambučių arba garso/vaizdo vertimo metu, mums reikia leidimo rodyti virš kitų programų. Tai leis matyti vertimus realiuoju laiku naudojant kitas programas.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Nepavyko automatiškai atidaryti sistemos nustatymų. Atidarykite Nustatymus ir rankiniu būdu įjunkite leidimą rodyti virš kitų programų.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Kad įrašymo metu galėtume rodyti plaukiojančią įrašymo juostą (laikmatis/pristabdyti/tęsti), mums reikia leidimo rodyti virš kitų programų.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nepavyko automatiškai atidaryti sistemos nustatymų. Atidarykite Nustatymus ir rankiniu būdu įjunkite leidimą rodyti virš kitų programų.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -533,21 +568,22 @@ const Map<String, String> ltLT = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Sukurti', 'create': 'Sukurti',
'templateDetails': 'Šablono informacija', 'templateDetails': 'Šablono informacija',
'tag': 'Žyma', 'tag': 'Žyma',
'description': 'Aprašymas', 'description': 'Aprašymas',
'template': 'Šablonas', 'template': 'Šablonas',
'deleteTemplate': 'Ištrinti šabloną', 'deleteTemplate': 'Ištrinti šabloną',
'deleteTemplateConfirm': 'Ar tikrai norite ištrinti šį šabloną?', 'deleteTemplateConfirm': 'Ar tikrai norite ištrinti šį šabloną?',
'editTemplate': 'Redaguoti šabloną', 'editTemplate': 'Redaguoti šabloną',
'createTemplate': 'Sukurti šabloną', 'createTemplate': 'Sukurti šabloną',
'name': 'Pavadinimas', 'name': 'Pavadinimas',
'templateContentHint': 'Prašome įvesti šablono turinį! Patarimas: Spustelėkite AI mygtuką viršuje, kad greitai sugeneruotumėte šablono turinį pagal įvestą pavadinimą ir aprašymą', 'templateContentHint':
'inputNameHint': 'Prašome įvesti pavadinimą', 'Prašome įvesti šablono turinį! Patarimas: Spustelėkite AI mygtuką viršuje, kad greitai sugeneruotumėte šablono turinį pagal įvestą pavadinimą ir aprašymą',
'inputDescHint': 'Prašome įvesti aprašymą', 'inputNameHint': 'Prašome įvesti pavadinimą',
'custom': 'Pasirinktinis', 'inputDescHint': 'Prašome įvesti aprašymą',
'pleaseEnter': 'Prašome įvesti', 'custom': 'Pasirinktinis',
'pleaseEnter': 'Prašome įvesti',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -570,7 +606,7 @@ const Map<String, String> ltLT = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Išsaugoti minčių žemėlapį', 'saveMindMap': 'Išsaugoti minčių žemėlapį',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -592,7 +628,7 @@ const Map<String, String> ltLT = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Eksportuoti', 'export': 'Eksportuoti',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Taikyti visoms šio kalbėtojo pastraipoms', 'applyToAllParagraphs': 'Taikyti visoms šio kalbėtojo pastraipoms',
@ -702,18 +738,18 @@ const Map<String, String> ltLT = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analizė nepavyko, bandykite dar kartą vėliau', 'analysisFailed': 'Analizė nepavyko, bandykite dar kartą vėliau',
'transcriptionFailed': 'Transkripcija nepavyko, bandykite dar kartą vėliau', 'transcriptionFailed': 'Transkripcija nepavyko, bandykite dar kartą vėliau',
'summaryFailed': 'Santrauka nepavyko, bandykite dar kartą vėliau', 'summaryFailed': 'Santrauka nepavyko, bandykite dar kartą vėliau',
'summaryFailedShort': 'Santrauka nepavyko', 'summaryFailedShort': 'Santrauka nepavyko',
'transcriptionFailedShort': 'Transkripcija nepavyko', 'transcriptionFailedShort': 'Transkripcija nepavyko',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Garso grotuvas neparuoštas, palaukite', 'playerNotReady': 'Garso grotuvas neparuoštas, palaukite',
'playFailed': 'Atkūrimas nepavyko', 'playFailed': 'Atkūrimas nepavyko',
'audioFileNotFound': 'Garso failas nerastas', 'audioFileNotFound': 'Garso failas nerastas',
'fetchingAudio': 'Gaunamas garso įrašas iš debesies...', 'fetchingAudio': 'Gaunamas garso įrašas iš debesies...',
'playerLoadFailed': 'Garso grotuvo įkėlimas nepavyko', 'playerLoadFailed': 'Garso grotuvo įkėlimas nepavyko',
// 设置页 // 设置页
"systemSettings": "Sistemos nustatymai", "systemSettings": "Sistemos nustatymai",
@ -822,7 +858,8 @@ const Map<String, String> ltLT = {
"swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau", "swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Kai įjungta: AI nebus pertraukiamas jūsų balsu kalbėdamas ir gali apdoroti tik vieną pokalbio raundą vienu metu. Norėdami pradėti naują raundą, tiesiog pasakykite pažadinimo žodį.', 'voice_interrupt_tip':
'Kai įjungta: AI nebus pertraukiamas jūsų balsu kalbėdamas ir gali apdoroti tik vieną pokalbio raundą vienu metu. Norėdami pradėti naują raundą, tiesiog pasakykite pažadinimo žodį.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -878,6 +915,13 @@ const Map<String, String> ltLT = {
'Norėtume sužinoti, kodėl pranešate, galite aprašyti problemą, su kuria susidūrėte.', 'Norėtume sužinoti, kodėl pranešate, galite aprašyti problemą, su kuria susidūrėte.',
'generatedByAi': 'Sugeneruota AI', 'generatedByAi': 'Sugeneruota AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Štai keletas rekomenduojamų dainų:', 'recommendedMusic': 'Štai keletas rekomenduojamų dainų:',
'playList': 'Grojaraštis', 'playList': 'Grojaraštis',
@ -898,6 +942,29 @@ const Map<String, String> ltLT = {
"bicycling": "Važiavimas dviračiu", "bicycling": "Važiavimas dviračiu",
"tsransit": "Viešasis transportas", "tsransit": "Viešasis transportas",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Užklausa apie oro sąlygas:', 'weatherQuery': 'Užklausa apie oro sąlygas:',
'highest': 'Aukščiausia', 'highest': 'Aukščiausia',
@ -970,8 +1037,19 @@ const Map<String, String> ltLT = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Įveskite tekstą, kurį norite išversti",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1245,17 +1323,19 @@ const Map<String, String> ltLT = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija vyksta', 'native.notification.navigation.title': 'Navigacija vyksta',
'native.notification.navigation.keepRunning': 'Navigacija, laikykite programą atidarytą', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'Balso asistento agentas veikia', 'Navigacija, laikykite programą atidarytą',
'native.notification.audioRecording.recording': 'Garso įrašas, bakstelėkite, kad grįžtumėte į programą', 'native.notification.bleAgent.running': 'Balso asistento agentas veikia',
'native.notification.music.waiting': 'Laukiama grojimo', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Ankstesnis', 'Garso įrašas, bakstelėkite, kad grįžtumėte į programą',
'native.notification.music.next': 'Kitas', 'native.notification.music.waiting': 'Laukiama grojimo',
'native.notification.music.play': 'Groti', 'native.notification.music.previous': 'Ankstesnis',
'native.notification.music.pause': 'Pauzė', 'native.notification.music.next': 'Kitas',
'native.notification.qqMusic.playing': 'Grojama muzika', 'native.notification.music.play': 'Groti',
'native.notification.music.pause': 'Pauzė',
'native.notification.qqMusic.playing': 'Grojama muzika',
// 版本更新 // 版本更新
'newVersionFound': 'Rasta nauja versija', // 版本更新对话框标题 'newVersionFound': 'Rasta nauja versija', // 版本更新对话框标题
@ -1397,6 +1477,59 @@ const Map<String, String> ltLT = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%", "Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Nėra muzikos", // 暂无音乐 "noMusic": "Nėra muzikos", // 暂无音乐
"noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐 "noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐

867
lib/core/translations/language/lv_lv.dart

File diff suppressed because it is too large

719
lib/core/translations/language/ms_my.dart

File diff suppressed because it is too large

102
lib/core/translations/language/nb_no.dart

@ -169,6 +169,26 @@ const Map<String, String> nbNO = {
'right': 'Høyre', 'right': 'Høyre',
'checkConnectionStatusFailed': 'Kontroll av tilkoblingsstatus mislyktes', 'checkConnectionStatusFailed': 'Kontroll av tilkoblingsstatus mislyktes',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth-initialisering mislyktes: @error',
'needBluetoothAndLocationPermission': 'Bluetooth- og plasseringstillatelser kreves for å skanne enheter',
'permissionRequestFailedWithError': 'Tillatelsesforespørsel mislyktes: @error',
'needPermission': 'Tillatelse kreves',
'blePermissionDialogContent': 'Appen trenger Bluetooth- og plasseringstillatelser for å skanne enheter. Aktiver dem i Innstillinger.',
'needEnableBluetooth': 'Aktiver Bluetooth',
'enableBluetoothDialogContent': 'Aktiver Bluetooth for å skanne og koble til enheter.',
'bleScanFailedWithError': 'Skanning mislyktes: @error',
'bleConnectionSuccess': 'Tilkobling vellykket',
'bleConnectedToDevice': 'Koblet til @device',
'bleConnectionFailedWithError': 'Tilkobling mislyktes: @error',
'bleDisconnected': 'Frakoblet',
'bleDeviceDisconnected': 'Enhet frakoblet',
'bleDisconnectFailedWithError': 'Frakobling mislyktes: @error',
'signalStrong': 'Sterkt signal',
'signalMedium': 'Middels signal',
'signalWeak': 'Svakt signal',
'signalVeryWeak': 'Veldig svakt signal',
// 发现页 // 发现页
"searchAi": "Søk etter AI-funksjoner...", "searchAi": "Søk etter AI-funksjoner...",
"exploreSlogan": "Smarte ørepropper, uendelige muligheter", "exploreSlogan": "Smarte ørepropper, uendelige muligheter",
@ -877,6 +897,13 @@ const Map<String, String> nbNO = {
'Vi vil gjerne vite hvorfor du rapporterer, du kan beskrive problemet du opplevde.', 'Vi vil gjerne vite hvorfor du rapporterer, du kan beskrive problemet du opplevde.',
'generatedByAi': 'Generert av AI', 'generatedByAi': 'Generert av AI',
// Agent模块 - 工具调用
'toolCall': 'Verktøykall',
'noResult': 'Ingen resultat',
'noToolCallContentToCopy': 'Ingen verktøykall å kopiere',
'toolCallDetails': 'Verktøykalldetaljer:',
'toolCallContentCopied': 'Verktøykall kopiert til utklippstavlen',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Her er noen anbefalte sanger:', 'recommendedMusic': 'Her er noen anbefalte sanger:',
'playList': 'Spilleliste', 'playList': 'Spilleliste',
@ -897,6 +924,28 @@ const Map<String, String> nbNO = {
"bicycling": 'Sykling', "bicycling": 'Sykling',
"tsransit": 'Kollektivtransport', "tsransit": 'Kollektivtransport',
// Agent模块 - 导航选择
'selectNavigationApp': 'Velg navigasjonsapp',
'amapMap': 'Amap',
'useAmapNavigation': 'Naviger med Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Naviger med Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Naviger med Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Naviger med Apple Maps',
'builtInNavigation': 'Innebygd navigasjon',
'useBuiltInNavigation': 'Naviger med innebygd kart',
'navigationStartFailed': 'Kunne ikke starte navigasjon',
'cannotPlayMusicListRetryLater': 'Kan ikke spille musiklisten, prøv igjen senere',
'cannotPlaySong': 'Kan ikke spille sangen',
'openMapError': 'Feil ved åpning av kart',
'pleaseInstallAmapApp': 'Installer Amap-appen først',
'pleaseInstallBaiduMapApp': 'Installer Baidu Maps-appen først',
'appleMapStartFailed': 'Apple Maps kunne ikke starte',
'appleMapUnavailable': 'Apple Maps er ikke tilgjengelig',
'openAppleMapError': 'Feil ved åpning av Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Spør om værforhold:', 'weatherQuery': 'Spør om værforhold:',
'highest': 'Høyeste', 'highest': 'Høyeste',
@ -969,8 +1018,18 @@ const Map<String, String> nbNO = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Deaktiver flytende vindu',
'enableFloatingWindow': 'Aktiver flytende vindu',
'permissionTip': 'Tillatelsestips',
'micPermissionRequiredForRecording': 'Mikrofontillatelse kreves for opptak',
'deleteTranslationRecordError': 'Feil ved sletting av oversettelsespost: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Oversetter",
"translate": "Oversett",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Skriv inn teksten som skal oversettes",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1385,6 +1444,49 @@ const Map<String, String> nbNO = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Ta ut begge øreproppene og sørg for at batterinivået på begge er over 20 %", "Ta ut begge øreproppene og sørg for at batterinivået på begge er over 20 %",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Ny versjon @version funnet',
'otaConfirmUpdateNow': 'Oppdater nå?',
'otaUpdate': 'Oppdater',
'otaUpgradeSuccess': 'Oppgradering vellykket',
'otaUpgradeCompleteRepair': 'Firmware-oppgradering fullført!\n\nEnheten må pares på nytt. Gå til paringssiden?',
'otaPairLater': 'Par senere',
'otaPairNow': 'Par nå',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Feil ved BLE-kontroll: @error',
'otaBleNotConnected': 'BLE-enhet ikke tilkoblet',
'otaBleNeedConnection': 'Firmware-oppgradering krever BLE-tilkobling\nSørg for at enheten er tilkoblet og prøv igjen',
'otaDeviceInfoUnavailableTitle': 'Enhetsinfo utilgjengelig',
'otaCannotGetDeviceInfo': 'Kan ikke hente enhetsinfo\nKoble til enheten igjen eller prøv senere',
'otaBleCheckFailed': 'BLE-kontroll mislyktes',
'otaCannotGetDeviceInfoCheckConnection': 'Kan ikke hente enhetsinfo, sjekk tilkoblingen',
'otaCannotGetProductInfoWithName': 'Kan ikke hente produktinfo, enhetsnavn: @deviceName',
'otaCannotGetBatteryInfo': 'Kan ikke hente batteriinfo',
'otaLowBattery': 'Lavt batteri',
'otaSingleBatteryLow': 'Batterinivå for lavt for oppgradering\nKrav: batteri over 20%\nNåværende: @ear @battery%\nLad og prøv igjen',
'otaDoubleBatteryLow': 'Batterinivå for lavt for oppgradering\nKrav: begge øreproppene over 20%\nNåværende: Venstre @left%, Høyre @right%\nLad og prøv igjen',
'otaBatteryCheckFailed': 'Batterikontroll mislyktes',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'Oppdateringen inneholder ytelsesforbedringer og feilrettinger.',
'otaGetLatestVersionFailed': 'Kunne ikke hente siste versjon',
'otaGetVersionInfoFailed': 'Kunne ikke hente versjonsinfo',
'otaCheckingDeviceStatus': 'Sjekker enhetsstatus...',
'otaDownloadFailedCheckNetwork': 'Nedlasting mislyktes, sjekk nettverkstilkoblingen',
'otaDownloadFailed': 'Nedlasting mislyktes',
'otaPreparingConnection': 'Forbereder enhetstilkobling...',
'otaConnectingDevice': 'Kobler til enhet...',
'otaUpgradeStarted': 'OTA-oppgradering startet...',
'otaUpgradeProgressWithPercent': 'Oppgraderingsforløp: @percent%',
'otaUpgradeSuccessComplete': 'Oppgradering fullført',
'otaUpgradeFailedWithCode': 'Oppgradering mislyktes, feilkode: @code',
'otaUpgradeFailedTitle': 'Oppgradering mislyktes',
'otaUpgradeFailedDesc': 'Sjekk tilkobling eller oppdateringspakke, feilkode: @code',
'otaDeviceDisconnected': 'Enhet frakoblet',
'otaDeviceConnected': 'Enhet tilkoblet',
// 音乐模块 // 音乐模块
"noMusic": "Ingen musikk", // 暂无音乐 "noMusic": "Ingen musikk", // 暂无音乐
"noPlayingMusic": "Ingen musikk spilles av", // 暂无播放音乐 "noPlayingMusic": "Ingen musikk spilles av", // 暂无播放音乐

339
lib/core/translations/language/nl_nl.dart

@ -1,5 +1,4 @@
const Map<String, String> nlNL = { const Map<String, String> nlNL = {
// 通用 // 通用
'continue': 'Doorgaan', 'continue': 'Doorgaan',
'confirm': 'Bevestigen', 'confirm': 'Bevestigen',
@ -169,6 +168,29 @@ const Map<String, String> nlNL = {
'right': 'Rechts', 'right': 'Rechts',
'checkConnectionStatusFailed': 'Controle van verbindingsstatus mislukt', 'checkConnectionStatusFailed': 'Controle van verbindingsstatus mislukt',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth-initialisatie mislukt: @error',
'needBluetoothAndLocationPermission':
'Bluetooth- en locatiemachtigingen zijn vereist om apparaten te scannen',
'permissionRequestFailedWithError': 'Machtigingsverzoek mislukt: @error',
'needPermission': 'Machtiging vereist',
'blePermissionDialogContent':
'Deze app heeft Bluetooth- en locatiemachtigingen nodig om apparaten te scannen. Schakel ze in via Instellingen.',
'needEnableBluetooth': 'Bluetooth inschakelen',
'enableBluetoothDialogContent':
'Schakel Bluetooth in om apparaten te scannen en te verbinden.',
'bleScanFailedWithError': 'Scan mislukt: @error',
'bleConnectionSuccess': 'Verbinding geslaagd',
'bleConnectedToDevice': 'Verbonden met @device',
'bleConnectionFailedWithError': 'Verbinding mislukt: @error',
'bleDisconnected': 'Verbinding verbroken',
'bleDeviceDisconnected': 'Apparaat losgekoppeld',
'bleDisconnectFailedWithError': 'Loskoppelen mislukt: @error',
'signalStrong': 'Sterk',
'signalMedium': 'Gemiddeld',
'signalWeak': 'Zwak',
'signalVeryWeak': 'Zeer zwak',
// 发现页 // 发现页
"searchAi": "Zoek AI-functies...", "searchAi": "Zoek AI-functies...",
"exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden", "exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden",
@ -245,60 +267,64 @@ const Map<String, String> nlNL = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Betaling geslaagd', 'paymentSuccess': 'Betaling geslaagd',
'paymentFailed': 'Betaling mislukt', 'paymentFailed': 'Betaling mislukt',
'gotIt': 'Begrepen', 'gotIt': 'Begrepen',
'paymentFailedTryAgain': 'Betaling mislukt. Probeer het opnieuw.', 'paymentFailedTryAgain': 'Betaling mislukt. Probeer het opnieuw.',
'selectPaymentMethod': 'Selecteer betaalmethode', 'selectPaymentMethod': 'Selecteer betaalmethode',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Kan WeChat-bestelling niet aanmaken', 'wechatOrderCreateFailed': 'Kan WeChat-bestelling niet aanmaken',
'alipayOrderCreateFailed': 'Kan Alipay-bestelling niet aanmaken', 'alipayOrderCreateFailed': 'Kan Alipay-bestelling niet aanmaken',
'appleOrderCreateFailed': 'Kan Apple-bestelling niet aanmaken', 'appleOrderCreateFailed': 'Kan Apple-bestelling niet aanmaken',
'googleOrderCreateFailed': 'Kan Google-bestelling niet aanmaken', 'googleOrderCreateFailed': 'Kan Google-bestelling niet aanmaken',
'paypalOrderCreateFailed': 'Kan PayPal-bestelling niet aanmaken', 'paypalOrderCreateFailed': 'Kan PayPal-bestelling niet aanmaken',
'paymentException': 'Betalingsuitzondering', 'paymentException': 'Betalingsuitzondering',
'paymentLaunchFailed': 'Kan betaling niet starten', 'paymentLaunchFailed': 'Kan betaling niet starten',
'paymentExceptionWithError': 'Betalingsuitzondering: @error', 'paymentExceptionWithError': 'Betalingsuitzondering: @error',
'paymentProcessingCheckLater': 'Uw bestelling wordt verwerkt. Controleer het later.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Kan betalingsresultaat niet opvragen: @error', 'Uw bestelling wordt verwerkt. Controleer het later.',
'orderConfirmedQuotaRefreshed': 'Bestelling bevestigd. Uw tegoed is bijgewerkt.', 'paymentResultQueryException': 'Kan betalingsresultaat niet opvragen: @error',
'paymentCompletedConfirming': 'Betaling voltooid. Bevestigen…', 'orderConfirmedQuotaRefreshed':
'paymentCancelled': 'Betaling geannuleerd', 'Bestelling bevestigd. Uw tegoed is bijgewerkt.',
'paypalOpenedCompleteInBrowser': 'PayPal geopend. Voltooi de betaling in uw browser.', 'paymentCompletedConfirming': 'Betaling voltooid. Bevestigen…',
'paypalOpenFailed': 'Kan PayPal-betaalpagina niet openen', 'paymentCancelled': 'Betaling geannuleerd',
'paymentTestTitle': 'Betalingstest', 'paypalOpenedCompleteInBrowser':
'paymentTestOrderInfo': 'Testbestelgegevens', 'PayPal geopend. Voltooi de betaling in uw browser.',
'paymentTestProductId': 'Product-ID', 'paypalOpenFailed': 'Kan PayPal-betaalpagina niet openen',
'paymentTestProductDescription': 'Productbeschrijving', 'paymentTestTitle': 'Betalingstest',
'paymentTestWechatDescription': 'WeChat-betalingstest', 'paymentTestOrderInfo': 'Testbestelgegevens',
'paymentTestAlipayDescription': 'Alipay-betalingstest', 'paymentTestProductId': 'Product-ID',
'paymentTestAmount': 'Bedrag', 'paymentTestProductDescription': 'Productbeschrijving',
'paymentTestSelectAmount': 'Selecteer testbedrag', 'paymentTestWechatDescription': 'WeChat-betalingstest',
'paying': 'Betalen...', 'paymentTestAlipayDescription': 'Alipay-betalingstest',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAmount': 'Bedrag',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestSelectAmount': 'Selecteer testbedrag',
'paymentStatusTitle': 'Betalingsstatus', 'paying': 'Betalen...',
'errorInfoWithMessage': 'Fout: @message', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'retest': 'Opnieuw testen', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsTitle': 'Instructies', 'paymentStatusTitle': 'Betalingsstatus',
'paymentTestInstructionsContent': '1. Selecteer een testbedrag (aanbevolen: ¥0.01)\n2. Klik op de betaalknop om te starten\n3. Voltooi de betaling in de betaal-app\n4. Keer terug om het resultaat te controleren', 'errorInfoWithMessage': 'Fout: @message',
'startingWechatPayment': 'WeChat Pay starten...', 'retest': 'Opnieuw testen',
'startingAlipayPayment': 'Alipay starten...', 'paymentTestInstructionsTitle': 'Instructies',
'wechatPaymentSuccess': 'WeChat Pay-betaling geslaagd!', 'paymentTestInstructionsContent':
'wechatPaymentFailed': 'WeChat Pay mislukt', '1. Selecteer een testbedrag (aanbevolen: ¥0.01)\n2. Klik op de betaalknop om te starten\n3. Voltooi de betaling in de betaal-app\n4. Keer terug om het resultaat te controleren',
'wechatPaymentLaunchFailed': 'Kan WeChat Pay niet starten', 'startingWechatPayment': 'WeChat Pay starten...',
'cannotLaunchWechatPayment': 'Kan WeChat Pay niet starten', 'startingAlipayPayment': 'Alipay starten...',
'wechatPaymentException': 'WeChat Pay-uitzondering', 'wechatPaymentSuccess': 'WeChat Pay-betaling geslaagd!',
'wechatPaymentTestCompleted': 'WeChat Pay-test voltooid', 'wechatPaymentFailed': 'WeChat Pay mislukt',
'alipayPaymentSuccess': 'Alipay-betaling geslaagd!', 'wechatPaymentLaunchFailed': 'Kan WeChat Pay niet starten',
'alipayPaymentFailed': 'Alipay mislukt', 'cannotLaunchWechatPayment': 'Kan WeChat Pay niet starten',
'alipayPaymentLaunchFailed': 'Kan Alipay niet starten', 'wechatPaymentException': 'WeChat Pay-uitzondering',
'cannotLaunchAlipayPayment': 'Kan Alipay niet starten', 'wechatPaymentTestCompleted': 'WeChat Pay-test voltooid',
'alipayPaymentException': 'Alipay-uitzondering', 'alipayPaymentSuccess': 'Alipay-betaling geslaagd!',
'alipayPaymentFailed': 'Alipay mislukt',
'alipayPaymentLaunchFailed': 'Kan Alipay niet starten',
'cannotLaunchAlipayPayment': 'Kan Alipay niet starten',
'alipayPaymentException': 'Alipay-uitzondering',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -496,19 +522,28 @@ const Map<String, String> nlNL = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Opname verlaten', // 退出录音 'meetingRecordExitTitle': 'Opname verlaten', // 退出录音
'meetingRecordExitMessage': 'Kies wat je wilt doen voordat je vertrekt', // 请选择离开后的操作 'meetingRecordExitMessage':
'Kies wat je wilt doen voordat je vertrekt', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Beëindigen en opslaan', // 结束录音并保存 'meetingRecordEndAndSave': 'Beëindigen en opslaan', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Beëindigen zonder op te slaan', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Beëindigen zonder op te slaan', // 结束录音不保存
'meetingRecordContinueInBackground': 'Opname op de achtergrond voortzetten', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'Time-out bij het stoppen van de opname. Probeer het opnieuw.', // 结束录音超时,请重试 'Opname op de achtergrond voortzetten', // 后台继续录音
'meetingRecordStopFailed': 'Kan de opname niet stoppen. Probeer het opnieuw.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Kan de opname niet opslaan. Probeer het opnieuw.', // 保存录音失败,请重试 'Time-out bij het stoppen van de opname. Probeer het opnieuw.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Kan de opname niet stoppen. Probeer het opnieuw.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Kan de opname niet opslaan. Probeer het opnieuw.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Opname bezig', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Opname bezig', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Opname op de achtergrond. Tik om terug te keren naar de app.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Opname op de achtergrond. Tik om terug te keren naar de app.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Weergeven over andere apps', // 悬浮窗权限 'overlayPermissionTitle': 'Weergeven over andere apps', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Om vertaalresultaten tijdens gesprekken of audio-/videotranslatie te tonen, hebben we overlay-machtiging nodig. Zo kun je realtime vertalingen zien terwijl je andere apps gebruikt.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Om tijdens het opnemen de zwevende opnamebalk (timer/pauze/hervatten) te tonen, hebben we overlay-machtiging nodig.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Om vertaalresultaten tijdens gesprekken of audio-/videotranslatie te tonen, hebben we overlay-machtiging nodig. Zo kun je realtime vertalingen zien terwijl je andere apps gebruikt.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Kan de systeeminstellingen niet automatisch openen. Open Instellingen en schakel de overlay-machtiging handmatig in.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Om tijdens het opnemen de zwevende opnamebalk (timer/pauze/hervatten) te tonen, hebben we overlay-machtiging nodig.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Kan de systeeminstellingen niet automatisch openen. Open Instellingen en schakel de overlay-machtiging handmatig in.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -533,21 +568,22 @@ const Map<String, String> nlNL = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Aanmaken', 'create': 'Aanmaken',
'templateDetails': 'Sjabloondetails', 'templateDetails': 'Sjabloondetails',
'tag': 'Label', 'tag': 'Label',
'description': 'Beschrijving', 'description': 'Beschrijving',
'template': 'Sjabloon', 'template': 'Sjabloon',
'deleteTemplate': 'Sjabloon verwijderen', 'deleteTemplate': 'Sjabloon verwijderen',
'deleteTemplateConfirm': 'Weet u zeker dat u dit sjabloon wilt verwijderen?', 'deleteTemplateConfirm': 'Weet u zeker dat u dit sjabloon wilt verwijderen?',
'editTemplate': 'Sjabloon bewerken', 'editTemplate': 'Sjabloon bewerken',
'createTemplate': 'Sjabloon aanmaken', 'createTemplate': 'Sjabloon aanmaken',
'name': 'Naam', 'name': 'Naam',
'templateContentHint': 'Voer de inhoud van het sjabloon in! Tip: Klik op de AI-knop hierboven om snel sjablooninhoud te genereren op basis van de naam en beschrijving die u hebt ingevoerd', 'templateContentHint':
'inputNameHint': 'Voer een naam in', 'Voer de inhoud van het sjabloon in! Tip: Klik op de AI-knop hierboven om snel sjablooninhoud te genereren op basis van de naam en beschrijving die u hebt ingevoerd',
'inputDescHint': 'Voer een beschrijving in', 'inputNameHint': 'Voer een naam in',
'custom': 'Aangepast', 'inputDescHint': 'Voer een beschrijving in',
'pleaseEnter': 'Voer alstublieft in', 'custom': 'Aangepast',
'pleaseEnter': 'Voer alstublieft in',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -570,7 +606,7 @@ const Map<String, String> nlNL = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Mindmap opslaan', 'saveMindMap': 'Mindmap opslaan',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -592,7 +628,7 @@ const Map<String, String> nlNL = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Exporteren', 'export': 'Exporteren',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': "Toepassen op alle alinea's van deze spreker", 'applyToAllParagraphs': "Toepassen op alle alinea's van deze spreker",
@ -702,18 +738,18 @@ const Map<String, String> nlNL = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analyse mislukt, probeer het later opnieuw', 'analysisFailed': 'Analyse mislukt, probeer het later opnieuw',
'transcriptionFailed': 'Transcriptie mislukt, probeer het later opnieuw', 'transcriptionFailed': 'Transcriptie mislukt, probeer het later opnieuw',
'summaryFailed': 'Samenvatting mislukt, probeer het later opnieuw', 'summaryFailed': 'Samenvatting mislukt, probeer het later opnieuw',
'summaryFailedShort': 'Samenvatting mislukt', 'summaryFailedShort': 'Samenvatting mislukt',
'transcriptionFailedShort': 'Transcriptie mislukt', 'transcriptionFailedShort': 'Transcriptie mislukt',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Audiospeler is niet gereed, even geduld', 'playerNotReady': 'Audiospeler is niet gereed, even geduld',
'playFailed': 'Afspelen mislukt', 'playFailed': 'Afspelen mislukt',
'audioFileNotFound': 'Audiobestand niet gevonden', 'audioFileNotFound': 'Audiobestand niet gevonden',
'fetchingAudio': 'Audio ophalen uit de cloud...', 'fetchingAudio': 'Audio ophalen uit de cloud...',
'playerLoadFailed': 'Audiospeler kan niet laden', 'playerLoadFailed': 'Audiospeler kan niet laden',
// 设置页 // 设置页
"systemSettings": "Systeeminstellingen", "systemSettings": "Systeeminstellingen",
@ -820,7 +856,8 @@ const Map<String, String> nlNL = {
"swipeUpForMore": "Veeg omhoog voor meer", "swipeUpForMore": "Veeg omhoog voor meer",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Wanneer ingeschakeld: De AI wordt niet onderbroken door uw stem terwijl deze spreekt en kan slechts één gespreksronde tegelijk verwerken. Om een nieuwe ronde te starten, zeg gewoon het activeringswoord.', 'voice_interrupt_tip':
'Wanneer ingeschakeld: De AI wordt niet onderbroken door uw stem terwijl deze spreekt en kan slechts één gespreksronde tegelijk verwerken. Om een nieuwe ronde te starten, zeg gewoon het activeringswoord.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -877,6 +914,14 @@ const Map<String, String> nlNL = {
'We willen weten waarom u rapporteert, u kunt het probleem dat u tegenkwam beschrijven.', 'We willen weten waarom u rapporteert, u kunt het probleem dat u tegenkwam beschrijven.',
'generatedByAi': 'Gegenereerd door AI', 'generatedByAi': 'Gegenereerd door AI',
// Agent模块 - 工具调用
'toolCall': 'Gereedschapsoproep',
'noResult': 'Geen resultaat',
'noToolCallContentToCopy':
'Geen inhoud van gereedschapsoproep om te kopieren',
'toolCallDetails': 'Details gereedschapsoproep:',
'toolCallContentCopied': 'Inhoud gekopieerd naar klembord',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Hier zijn enkele aanbevolen muziekstukken:', 'recommendedMusic': 'Hier zijn enkele aanbevolen muziekstukken:',
'playList': 'Afspeellijst', 'playList': 'Afspeellijst',
@ -897,6 +942,29 @@ const Map<String, String> nlNL = {
"bicycling": 'Fietsen', "bicycling": 'Fietsen',
"tsransit": 'Openbaar vervoer', "tsransit": 'Openbaar vervoer',
// Agent模块 - 导航选择
'selectNavigationApp': 'Navigatie-app selecteren',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigeren met Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigeren met Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigeren met Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigeren met Apple Maps',
'builtInNavigation': 'Ingebouwde navigatie',
'useBuiltInNavigation': 'Navigeren met ingebouwde kaart',
'navigationStartFailed': 'Navigatie starten mislukt',
'cannotPlayMusicListRetryLater':
'Kan muzieklijst niet afspelen, probeer het later opnieuw',
'cannotPlaySong': 'Kan nummer niet afspelen',
'openMapError': 'Fout bij openen van kaart',
'pleaseInstallAmapApp': 'Installeer eerst de Amap-app',
'pleaseInstallBaiduMapApp': 'Installeer eerst de Baidu Maps-app',
'appleMapStartFailed': 'Apple Maps starten mislukt',
'appleMapUnavailable': 'Apple Maps niet beschikbaar',
'openAppleMapError': 'Fout bij openen van Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Weersomstandigheden opvragen:', 'weatherQuery': 'Weersomstandigheden opvragen:',
'highest': 'Hoogste', 'highest': 'Hoogste',
@ -968,8 +1036,19 @@ const Map<String, String> nlNL = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Zwevend venster uitschakelen',
'enableFloatingWindow': 'Zwevend venster inschakelen',
'permissionTip': 'Machtigingstip',
'micPermissionRequiredForRecording':
'Microfoonmachtiging vereist voor opname',
'deleteTranslationRecordError': 'Fout bij verwijderen vertaalrecord: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Vertalen",
"translate": "Vertaal",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Voer de tekst in om te vertalen",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1247,17 +1326,18 @@ const Map<String, String> nlNL = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigatie actief', 'native.notification.navigation.title': 'Navigatie actief',
'native.notification.navigation.keepRunning': 'Navigeren, houd de app actief', 'native.notification.navigation.keepRunning': 'Navigeren, houd de app actief',
'native.notification.bleAgent.running': 'Spraakassistent is actief', 'native.notification.bleAgent.running': 'Spraakassistent is actief',
'native.notification.audioRecording.recording': 'Audio opnemen, tik om terug te keren naar de app', 'native.notification.audioRecording.recording':
'native.notification.music.waiting': 'Wachten op afspelen', 'Audio opnemen, tik om terug te keren naar de app',
'native.notification.music.previous': 'Vorige', 'native.notification.music.waiting': 'Wachten op afspelen',
'native.notification.music.next': 'Volgende', 'native.notification.music.previous': 'Vorige',
'native.notification.music.play': 'Afspelen', 'native.notification.music.next': 'Volgende',
'native.notification.music.pause': 'Pauzeren', 'native.notification.music.play': 'Afspelen',
'native.notification.qqMusic.playing': 'Muziek afspelen', 'native.notification.music.pause': 'Pauzeren',
'native.notification.qqMusic.playing': 'Muziek afspelen',
// 版本更新 // 版本更新
'newVersionFound': 'Nieuwe versie gevonden', // 版本更新对话框标题 'newVersionFound': 'Nieuwe versie gevonden', // 版本更新对话框标题
@ -1397,6 +1477,59 @@ const Map<String, String> nlNL = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Haal beide oortjes eruit en zorg ervoor dat de batterij van beide meer dan 20% is", "Haal beide oortjes eruit en zorg ervoor dat de batterij van beide meer dan 20% is",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Nieuwe versie @version gevonden',
'otaConfirmUpdateNow': 'Nu bijwerken?',
'otaUpdate': 'Bijwerken',
'otaUpgradeSuccess': 'Upgrade geslaagd',
'otaUpgradeCompleteRepair':
'Firmware-update voltooid!\n\nHet apparaat moet opnieuw worden gekoppeld. Naar koppelingspagina?',
'otaPairLater': 'Later koppelen',
'otaPairNow': 'Nu koppelen',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Fout bij controle BLE-verbinding: @error',
'otaBleNotConnected': 'BLE-apparaat niet verbonden',
'otaBleNeedConnection':
'BLE-verbinding vereist\nZorg dat het apparaat verbonden is en probeer opnieuw',
'otaDeviceInfoUnavailableTitle': 'Apparaatinfo niet beschikbaar',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE-verbindingscontrole mislukt',
'otaCannotGetDeviceInfoCheckConnection':
'Kan apparaatinfo niet ophalen, controleer de verbinding',
'otaCannotGetProductInfoWithName':
'Kan productinfo niet ophalen, apparaatnaam: @deviceName',
'otaCannotGetBatteryInfo': 'Kan geen geldige batterij-info ophalen',
'otaLowBattery': 'Batterij bijna leeg',
'otaSingleBatteryLow':
'Batterij te laag\nVereiste: boven 20%\nHuidig: @ear @battery%\nLaad op en probeer opnieuw',
'otaDoubleBatteryLow':
'Batterij te laag\nVereiste: beide oordopjes boven 20%\nHuidig: Links @left%, Rechts @right%\nLaad op en probeer opnieuw',
'otaBatteryCheckFailed': 'Batterijcontrole mislukt',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Deze update bevat prestatieverbeteringen en bugfixes.',
'otaGetLatestVersionFailed': 'Kan nieuwste versie niet ophalen',
'otaGetVersionInfoFailed': 'Kan versie-info niet ophalen',
'otaCheckingDeviceStatus': 'Apparaatstatus controleren...',
'otaDownloadFailedCheckNetwork':
'Download mislukt, controleer de netwerkverbinding',
'otaDownloadFailed': 'Download mislukt',
'otaPreparingConnection': 'Verbinding voorbereiden...',
'otaConnectingDevice': 'Verbinden met apparaat...',
'otaUpgradeStarted': 'OTA-upgrade gestart...',
'otaUpgradeProgressWithPercent': 'Voortgang: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade succesvol voltooid',
'otaUpgradeFailedWithCode': 'Upgrade mislukt, foutcode: @code',
'otaUpgradeFailedTitle': 'Upgrade mislukt',
'otaUpgradeFailedDesc':
'Controleer de verbinding of het updatepakket, foutcode: @code',
'otaDeviceDisconnected': 'Apparaat losgekoppeld',
'otaDeviceConnected': 'Apparaat verbonden',
// 音乐模块 // 音乐模块
"noMusic": "Geen muziek", // 暂无音乐 "noMusic": "Geen muziek", // 暂无音乐
"noPlayingMusic": "Geen muziek aan het afspelen", // 暂无播放音乐 "noPlayingMusic": "Geen muziek aan het afspelen", // 暂无播放音乐

190
lib/core/translations/language/pl_pl.dart

@ -19,11 +19,11 @@ const Map<String, String> plPL = {
"unknownError": "Nieznany błąd", "unknownError": "Nieznany błąd",
"asrConnectionFailed": "asrConnectionFailed":
"Nie udało się połączyć z usługą rozpoznawania mowy. Sprawdź sieć lub spróbuj ponownie później.", "Nie udało się połączyć z usługą rozpoznawania mowy. Sprawdź sieć lub spróbuj ponownie później.",
"justNow": "Just now", "justNow": "Przed chwilą",
"minutesAgo": "@minutes minutes ago", "minutesAgo": "@minutes min temu",
"yesterday": "Yesterday", "yesterday": "Wczoraj",
"daysAgo": "@days days ago", "daysAgo": "@days dni temu",
"hoursAgo": "@hours hours ago", "hoursAgo": "@hours godz. temu",
// 启动页 // 启动页
"slogan": "Łącząc świat, poza dźwiękiem", "slogan": "Łącząc świat, poza dźwiękiem",
@ -170,6 +170,26 @@ const Map<String, String> plPL = {
'checkConnectionStatusFailed': 'checkConnectionStatusFailed':
'Sprawdzenie stanu połączenia nie powiodło się', 'Sprawdzenie stanu połączenia nie powiodło się',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Inicjalizacja Bluetooth nie powiodła się: @error',
'needBluetoothAndLocationPermission': 'Uprawnienia Bluetooth i lokalizacji są wymagane do skanowania urządzeń',
'permissionRequestFailedWithError': 'Żądanie uprawnień nie powiodło się: @error',
'needPermission': 'Wymagane uprawnienia',
'blePermissionDialogContent': 'Ta aplikacja wymaga uprawnień Bluetooth i lokalizacji do skanowania urządzeń. Włącz je w Ustawieniach.',
'needEnableBluetooth': 'Włącz Bluetooth',
'enableBluetoothDialogContent': 'Włącz Bluetooth, aby skanować i łączyć urządzenia.',
'bleScanFailedWithError': 'Skanowanie nie powiodło się: @error',
'bleConnectionSuccess': 'Połączenie udane',
'bleConnectedToDevice': 'Połączono z @device',
'bleConnectionFailedWithError': 'Połączenie nie powiodło się: @error',
'bleDisconnected': 'Rozłączono',
'bleDeviceDisconnected': 'Urządzenie rozłączone',
'bleDisconnectFailedWithError': 'Rozłączenie nie powiodło się: @error',
'signalStrong': 'Silny',
'signalMedium': 'Średni',
'signalWeak': 'Słaby',
'signalVeryWeak': 'Bardzo słaby',
// 发现页 // 发现页
"searchAi": "Szukaj funkcji AI...", "searchAi": "Szukaj funkcji AI...",
"exploreSlogan": "Inteligentne słuchawki, nieskończone możliwości", "exploreSlogan": "Inteligentne słuchawki, nieskończone możliwości",
@ -197,48 +217,48 @@ const Map<String, String> plPL = {
"scene": "Scenariusz", "scene": "Scenariusz",
// 用量统计模块 // 用量统计模块
"aiChat": "AI Chat", "aiChat": "Czat AI",
"translationStats": "Translation Statistics", "translationStats": "Statystyki tłumaczeń",
"meetingStats": "Meeting Statistics", "meetingStats": "Statystyki spotkań",
"today": "Today", "today": "Dzisiaj",
"thisWeek": "This Week", "thisWeek": "Ten tydzień",
"thisMonth": "This Month", "thisMonth": "Ten miesiąc",
"history": "History", "history": "Historia",
"currentSessionStats": "Current Session Stats", "currentSessionStats": "Statystyki bieżącej sesji",
"translationCount": "Translation Count", "translationCount": "Liczba tłumaczeń",
"sessionDuration": "Session Duration", "sessionDuration": "Czas trwania sesji",
"characters": "Characters", "characters": "Znaki",
"recordingDuration": "Recording Duration", "recordingDuration": "Czas nagrywania",
"totalApiCalls": "Total API Calls", "totalApiCalls": "Łączna liczba wywołań API",
"sessionCount": "Session Count", "sessionCount": "Liczba sesji",
"totalCharacters": "Total Characters", "totalCharacters": "Łączna liczba znaków",
"apiCallStats": "API Call Stats", "apiCallStats": "Statystyki wywołań API",
"translationApi": "Translation API", "translationApi": "API tłumaczeń",
"asr": "ASR", "asr": "ASR",
"tts": "TTS", "tts": "TTS",
"dataVolumeStats": "Data Volume Stats", "dataVolumeStats": "Statystyki wolumenu danych",
"sourceTextCharacters": "Source Text Characters", "sourceTextCharacters": "Znaki tekstu źródłowego",
"ttsTextCharacters": "TTS Text Characters", "ttsTextCharacters": "Znaki tekstu TTS",
"effectiveAudioDuration": "Effective Audio Duration", "effectiveAudioDuration": "Efektywny czas trwania audio",
"totalSessionDuration": "Total Session Duration", "totalSessionDuration": "Łączny czas trwania sesji",
"costStats": "Cost Stats", "costStats": "Statystyki kosztów",
"estimatedCost": "Estimated Cost", "estimatedCost": "Szacowany koszt",
"dailyCostThreshold": "Daily Cost Threshold", "dailyCostThreshold": "Dzienny limit kosztów",
"monthlyCostThreshold": "Monthly Cost Threshold", "monthlyCostThreshold": "Miesięczny limit kosztów",
"usageBehaviorStats": "Usage Behavior Stats", "usageBehaviorStats": "Statystyki zachowań użytkownika",
"mostUsedLanguagePair": "Most-used language pair", "mostUsedLanguagePair": "Najczęściej używana para językowa",
"mostUsedMode": "Most-used mode", "mostUsedMode": "Najczęściej używany tryb",
"asrApiCalls": "ASR Calls", "asrApiCalls": "Wywołania ASR",
"totalAudioDuration": "Total Audio Duration", "totalAudioDuration": "Łączny czas trwania audio",
"audioFileSize": "Audio File Size", "audioFileSize": "Rozmiar pliku audio",
"transcriptBytes": "Transcript Bytes", "transcriptBytes": "Rozmiar transkrypcji",
"loadFailed": "Load Failed", "loadFailed": "Ładowanie nie powiodło się",
"statsLoadFailedTryLater": "statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.", "Ładowanie statystyk nie powiodło się. Spróbuj ponownie później.",
"cleanupComplete": "Cleanup Complete", "cleanupComplete": "Czyszczenie zakończone",
"cleanedOldData": "Cleaned data older than 90 days", "cleanedOldData": "Wyczyszczono dane starsze niż 90 dni",
"exportFeature": "Export Feature", "exportFeature": "Funkcja eksportu",
"exportInDevelopment": "Data export is under development", "exportInDevelopment": "Eksport danych jest w trakcie rozwoju",
// 商品模块 - 通用 // 商品模块 - 通用
'availablePackages': 'Available Packages', 'availablePackages': 'Available Packages',
@ -882,6 +902,13 @@ const Map<String, String> plPL = {
'Chcielibyśmy wiedzieć, dlaczego zgłaszasz, możesz opisać problem, z którym się spotkałeś.', 'Chcielibyśmy wiedzieć, dlaczego zgłaszasz, możesz opisać problem, z którym się spotkałeś.',
'generatedByAi': 'Wygenerowano przez AI', 'generatedByAi': 'Wygenerowano przez AI',
// Agent模块 - 工具调用
'toolCall': 'Wywołanie narzędzia',
'noResult': 'Brak wyniku',
'noToolCallContentToCopy': 'Brak treści wywołania narzędzia do skopiowania',
'toolCallDetails': 'Szczegóły wywołania narzędzia:',
'toolCallContentCopied': 'Treść wywołania narzędzia skopiowana do schowka',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Oto kilka polecanych utworów:', 'recommendedMusic': 'Oto kilka polecanych utworów:',
'playList': 'Lista odtwarzania', 'playList': 'Lista odtwarzania',
@ -902,6 +929,28 @@ const Map<String, String> plPL = {
"bicycling": 'Rowerem', "bicycling": 'Rowerem',
"tsransit": 'Transport publiczny', "tsransit": 'Transport publiczny',
// Agent模块 - 导航选择
'selectNavigationApp': 'Wybierz aplikację nawigacyjną',
'amapMap': 'Amap',
'useAmapNavigation': 'Nawiguj z Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Nawiguj z Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Nawiguj z Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Nawiguj z Apple Maps',
'builtInNavigation': 'Wbudowana nawigacja',
'useBuiltInNavigation': 'Nawiguj z wbudowaną mapą',
'navigationStartFailed': 'Nie udało się uruchomić nawigacji',
'cannotPlayMusicListRetryLater': 'Nie można odtworzyć listy muzyki, spróbuj ponownie później',
'cannotPlaySong': 'Nie można odtworzyć utworu',
'openMapError': 'Błąd otwierania mapy',
'pleaseInstallAmapApp': 'Najpierw zainstaluj aplikację Amap',
'pleaseInstallBaiduMapApp': 'Najpierw zainstaluj aplikację Baidu Maps',
'appleMapStartFailed': 'Nie udało się uruchomić Apple Maps',
'appleMapUnavailable': 'Apple Maps niedostępne',
'openAppleMapError': 'Błąd otwierania Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Zapytanie o warunki pogodowe:', 'weatherQuery': 'Zapytanie o warunki pogodowe:',
'highest': 'Najwyższa', 'highest': 'Najwyższa',
@ -974,8 +1023,18 @@ const Map<String, String> plPL = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Wyłącz pływające okno',
'enableFloatingWindow': 'Włącz pływające okno',
'permissionTip': 'Wskazówka dotycząca uprawnień',
'micPermissionRequiredForRecording': 'Uprawnienie do mikrofonu jest wymagane do nagrywania',
'deleteTranslationRecordError': 'Błąd usuwania rekordu tłumaczenia: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Tłumaczenie",
"translate": "Tłumacz",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Wprowadź tekst do przetłumaczenia",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1405,6 +1464,49 @@ const Map<String, String> plPL = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Wyjmij obie słuchawki i upewnij się, że poziom naładowania baterii obu wynosi ponad 20%", "Wyjmij obie słuchawki i upewnij się, że poziom naładowania baterii obu wynosi ponad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Znaleziono nową wersję @version',
'otaConfirmUpdateNow': 'Zaktualizować teraz?',
'otaUpdate': 'Aktualizuj',
'otaUpgradeSuccess': 'Aktualizacja zakończona sukcesem',
'otaUpgradeCompleteRepair': 'Aktualizacja firmware zakończona!\n\nUrządzenie wymaga ponownego sparowania, aby działać poprawnie. Przejść do strony parowania?',
'otaPairLater': 'Sparuj później',
'otaPairNow': 'Sparuj teraz',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Błąd sprawdzania połączenia BLE: @error',
'otaBleNotConnected': 'Urządzenie BLE niepodłączone',
'otaBleNeedConnection': 'Aktualizacja firmware wymaga połączenia BLE\nUpewnij się, że urządzenie jest prawidłowo podłączone i spróbuj ponownie',
'otaDeviceInfoUnavailableTitle': 'Informacje o urządzeniu niedostępne',
'otaCannotGetDeviceInfo': 'Nie można uzyskać informacji o urządzeniu\nPodłącz ponownie urządzenie lub spróbuj później',
'otaBleCheckFailed': 'Sprawdzanie połączenia BLE nie powiodło się',
'otaCannotGetDeviceInfoCheckConnection': 'Nie można uzyskać informacji o urządzeniu, sprawdź połączenie',
'otaCannotGetProductInfoWithName': 'Nie można uzyskać informacji o produkcie, nazwa urządzenia: @deviceName',
'otaCannotGetBatteryInfo': 'Nie można uzyskać prawidłowych informacji o baterii',
'otaLowBattery': 'Niski poziom baterii',
'otaSingleBatteryLow': 'Poziom baterii urządzenia zbyt niski do aktualizacji firmware\nWymaganie: bateria musi być powyżej 20%\nAktualnie: @ear @battery%\nNaładuj i spróbuj ponownie',
'otaDoubleBatteryLow': 'Poziom baterii urządzenia zbyt niski do aktualizacji firmware\nWymaganie: obie słuchawki muszą mieć powyżej 20%\nAktualnie: Lewa @left%, Prawa @right%\nNaładuj i spróbuj ponownie',
'otaBatteryCheckFailed': 'Sprawdzanie baterii nie powiodło się',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'Ta aktualizacja zawiera optymalizacje wydajności i poprawki błędów.',
'otaGetLatestVersionFailed': 'Nie udało się pobrać informacji o najnowszej wersji',
'otaGetVersionInfoFailed': 'Nie udało się pobrać informacji o wersji',
'otaCheckingDeviceStatus': 'Sprawdzanie stanu urządzenia...',
'otaDownloadFailedCheckNetwork': 'Pobieranie nie powiodło się, sprawdź połączenie sieciowe',
'otaDownloadFailed': 'Pobieranie nie powiodło się',
'otaPreparingConnection': 'Przygotowywanie połączenia z urządzeniem...',
'otaConnectingDevice': 'Łączenie z urządzeniem...',
'otaUpgradeStarted': 'Aktualizacja OTA rozpoczęta...',
'otaUpgradeProgressWithPercent': 'Postęp aktualizacji: @percent%',
'otaUpgradeSuccessComplete': 'Aktualizacja zakończona pomyślnie',
'otaUpgradeFailedWithCode': 'Aktualizacja nie powiodła się, kod błędu: @code',
'otaUpgradeFailedTitle': 'Aktualizacja nie powiodła się',
'otaUpgradeFailedDesc': 'Sprawdź połączenie urządzenia lub pakiet aktualizacji, kod błędu: @code',
'otaDeviceDisconnected': 'Urządzenie rozłączone',
'otaDeviceConnected': 'Urządzenie podłączone',
// 音乐模块 // 音乐模块
"noMusic": "Brak muzyki", // 暂无音乐 "noMusic": "Brak muzyki", // 暂无音乐
"noPlayingMusic": "Brak odtwarzanej muzyki", // 暂无播放音乐 "noPlayingMusic": "Brak odtwarzanej muzyki", // 暂无播放音乐

318
lib/core/translations/language/pt_pt.dart

@ -1,5 +1,4 @@
const Map<String, String> ptPT = { const Map<String, String> ptPT = {
// 通用 // 通用
'continue': 'Continuar', 'continue': 'Continuar',
'confirm': 'Confirmar', 'confirm': 'Confirmar',
@ -172,6 +171,30 @@ const Map<String, String> ptPT = {
'right': 'Direita', 'right': 'Direita',
'checkConnectionStatusFailed': 'Falha ao verificar o estado da conexão', 'checkConnectionStatusFailed': 'Falha ao verificar o estado da conexão',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Falha na inicializacao do Bluetooth: @error',
'needBluetoothAndLocationPermission':
'Sao necessarias permissoes de Bluetooth e localizacao para procurar dispositivos',
'permissionRequestFailedWithError':
'Falha na solicitacao de permissao: @error',
'needPermission': 'Permissao necessaria',
'blePermissionDialogContent':
'Este aplicativo precisa de permissoes de Bluetooth e localizacao para procurar dispositivos. Ative-as nas Configuracoes.',
'needEnableBluetooth': 'Ativar Bluetooth',
'enableBluetoothDialogContent':
'Ative o Bluetooth para procurar e conectar dispositivos.',
'bleScanFailedWithError': 'Falha na busca: @error',
'bleConnectionSuccess': 'Conexao bem-sucedida',
'bleConnectedToDevice': 'Conectado a @device',
'bleConnectionFailedWithError': 'Falha na conexao: @error',
'bleDisconnected': 'Desconectado',
'bleDeviceDisconnected': 'Dispositivo desconectado',
'bleDisconnectFailedWithError': 'Falha ao desconectar: @error',
'signalStrong': 'Forte',
'signalMedium': 'Medio',
'signalWeak': 'Fraco',
'signalVeryWeak': 'Muito fraco',
// 发现页 // 发现页
"searchAi": "Pesquisar funções de IA...", "searchAi": "Pesquisar funções de IA...",
"exploreSlogan": "Auriculares inteligentes, possibilidades infinitas", "exploreSlogan": "Auriculares inteligentes, possibilidades infinitas",
@ -248,60 +271,65 @@ const Map<String, String> ptPT = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Pagamento bem-sucedido', 'paymentSuccess': 'Pagamento bem-sucedido',
'paymentFailed': 'Pagamento falhou', 'paymentFailed': 'Pagamento falhou',
'gotIt': 'Entendido', 'gotIt': 'Entendido',
'paymentFailedTryAgain': 'Pagamento falhou. Por favor, tente novamente.', 'paymentFailedTryAgain': 'Pagamento falhou. Por favor, tente novamente.',
'selectPaymentMethod': 'Selecione o método de pagamento', 'selectPaymentMethod': 'Selecione o método de pagamento',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Falha ao criar pedido do WeChat', 'wechatOrderCreateFailed': 'Falha ao criar pedido do WeChat',
'alipayOrderCreateFailed': 'Falha ao criar pedido do Alipay', 'alipayOrderCreateFailed': 'Falha ao criar pedido do Alipay',
'appleOrderCreateFailed': 'Falha ao criar pedido da Apple', 'appleOrderCreateFailed': 'Falha ao criar pedido da Apple',
'googleOrderCreateFailed': 'Falha ao criar pedido do Google', 'googleOrderCreateFailed': 'Falha ao criar pedido do Google',
'paypalOrderCreateFailed': 'Falha ao criar pedido do PayPal', 'paypalOrderCreateFailed': 'Falha ao criar pedido do PayPal',
'paymentException': 'Exceção de pagamento', 'paymentException': 'Exceção de pagamento',
'paymentLaunchFailed': 'Falha ao iniciar o pagamento', 'paymentLaunchFailed': 'Falha ao iniciar o pagamento',
'paymentExceptionWithError': 'Exceção de pagamento: @error', 'paymentExceptionWithError': 'Exceção de pagamento: @error',
'paymentProcessingCheckLater': 'O seu pedido está a ser processado. Por favor, verifique mais tarde.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Falha ao consultar o resultado do pagamento: @error', 'O seu pedido está a ser processado. Por favor, verifique mais tarde.',
'orderConfirmedQuotaRefreshed': 'Pedido confirmado. A sua quota foi atualizada.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Pagamento concluído. A confirmar…', 'Falha ao consultar o resultado do pagamento: @error',
'paymentCancelled': 'Pagamento cancelado', 'orderConfirmedQuotaRefreshed':
'paypalOpenedCompleteInBrowser': 'PayPal aberto. Por favor, conclua o pagamento no seu navegador.', 'Pedido confirmado. A sua quota foi atualizada.',
'paypalOpenFailed': 'Não é possível abrir a página de pagamento do PayPal', 'paymentCompletedConfirming': 'Pagamento concluído. A confirmar…',
'paymentTestTitle': 'Teste de pagamento', 'paymentCancelled': 'Pagamento cancelado',
'paymentTestOrderInfo': 'Informações do pedido de teste', 'paypalOpenedCompleteInBrowser':
'paymentTestProductId': 'ID do produto', 'PayPal aberto. Por favor, conclua o pagamento no seu navegador.',
'paymentTestProductDescription': 'Descrição do produto', 'paypalOpenFailed': 'Não é possível abrir a página de pagamento do PayPal',
'paymentTestWechatDescription': 'Teste de pagamento via WeChat', 'paymentTestTitle': 'Teste de pagamento',
'paymentTestAlipayDescription': 'Teste de pagamento via Alipay', 'paymentTestOrderInfo': 'Informações do pedido de teste',
'paymentTestAmount': 'Montante', 'paymentTestProductId': 'ID do produto',
'paymentTestSelectAmount': 'Selecione o montante de teste', 'paymentTestProductDescription': 'Descrição do produto',
'paying': 'A pagar...', 'paymentTestWechatDescription': 'Teste de pagamento via WeChat',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAlipayDescription': 'Teste de pagamento via Alipay',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAmount': 'Montante',
'paymentStatusTitle': 'Estado do pagamento', 'paymentTestSelectAmount': 'Selecione o montante de teste',
'errorInfoWithMessage': 'Erro: @message', 'paying': 'A pagar...',
'retest': 'Testar novamente', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsTitle': 'Instruções', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsContent': '1. Selecione um montante de teste (recomendado: ¥0.01)\n2. Clique no botão de pagamento para iniciar\n3. Conclua o pagamento na aplicação de pagamento\n4. Volte para verificar o resultado', 'paymentStatusTitle': 'Estado do pagamento',
'startingWechatPayment': 'A iniciar o WeChat Pay...', 'errorInfoWithMessage': 'Erro: @message',
'startingAlipayPayment': 'A iniciar o Alipay...', 'retest': 'Testar novamente',
'wechatPaymentSuccess': 'Pagamento via WeChat Pay bem-sucedido!', 'paymentTestInstructionsTitle': 'Instruções',
'wechatPaymentFailed': 'Falha no WeChat Pay', 'paymentTestInstructionsContent':
'wechatPaymentLaunchFailed': 'Falha ao iniciar o WeChat Pay', '1. Selecione um montante de teste (recomendado: ¥0.01)\n2. Clique no botão de pagamento para iniciar\n3. Conclua o pagamento na aplicação de pagamento\n4. Volte para verificar o resultado',
'cannotLaunchWechatPayment': 'Não é possível iniciar o WeChat Pay', 'startingWechatPayment': 'A iniciar o WeChat Pay...',
'wechatPaymentException': 'Exceção do WeChat Pay', 'startingAlipayPayment': 'A iniciar o Alipay...',
'wechatPaymentTestCompleted': 'Teste do WeChat Pay concluído', 'wechatPaymentSuccess': 'Pagamento via WeChat Pay bem-sucedido!',
'alipayPaymentSuccess': 'Pagamento via Alipay bem-sucedido!', 'wechatPaymentFailed': 'Falha no WeChat Pay',
'alipayPaymentFailed': 'Falha no Alipay', 'wechatPaymentLaunchFailed': 'Falha ao iniciar o WeChat Pay',
'alipayPaymentLaunchFailed': 'Falha ao iniciar o Alipay', 'cannotLaunchWechatPayment': 'Não é possível iniciar o WeChat Pay',
'cannotLaunchAlipayPayment': 'Não é possível iniciar o Alipay', 'wechatPaymentException': 'Exceção do WeChat Pay',
'alipayPaymentException': 'Exceção do Alipay', 'wechatPaymentTestCompleted': 'Teste do WeChat Pay concluído',
'alipayPaymentSuccess': 'Pagamento via Alipay bem-sucedido!',
'alipayPaymentFailed': 'Falha no Alipay',
'alipayPaymentLaunchFailed': 'Falha ao iniciar o Alipay',
'cannotLaunchAlipayPayment': 'Não é possível iniciar o Alipay',
'alipayPaymentException': 'Exceção do Alipay',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -545,21 +573,22 @@ const Map<String, String> ptPT = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Criar', 'create': 'Criar',
'templateDetails': 'Detalhes do modelo', 'templateDetails': 'Detalhes do modelo',
'tag': 'Etiqueta', 'tag': 'Etiqueta',
'description': 'Descrição', 'description': 'Descrição',
'template': 'Modelo', 'template': 'Modelo',
'deleteTemplate': 'Eliminar modelo', 'deleteTemplate': 'Eliminar modelo',
'deleteTemplateConfirm': 'Tem a certeza de que deseja eliminar este modelo?', 'deleteTemplateConfirm': 'Tem a certeza de que deseja eliminar este modelo?',
'editTemplate': 'Editar modelo', 'editTemplate': 'Editar modelo',
'createTemplate': 'Criar modelo', 'createTemplate': 'Criar modelo',
'name': 'Nome', 'name': 'Nome',
'templateContentHint': 'Por favor, insira o conteúdo do modelo! Dica: Clique no botão de IA acima para gerar rapidamente o conteúdo do modelo com base no nome e na descrição que introduziu', 'templateContentHint':
'inputNameHint': 'Por favor, insira o nome', 'Por favor, insira o conteúdo do modelo! Dica: Clique no botão de IA acima para gerar rapidamente o conteúdo do modelo com base no nome e na descrição que introduziu',
'inputDescHint': 'Por favor, insira a descrição', 'inputNameHint': 'Por favor, insira o nome',
'custom': 'Personalizado', 'inputDescHint': 'Por favor, insira a descrição',
'pleaseEnter': 'Por favor, insira', 'custom': 'Personalizado',
'pleaseEnter': 'Por favor, insira',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -582,7 +611,7 @@ const Map<String, String> ptPT = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Guardar mapa mental', 'saveMindMap': 'Guardar mapa mental',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -604,7 +633,7 @@ const Map<String, String> ptPT = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Exportar', 'export': 'Exportar',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Aplicar a todos os parágrafos deste orador', 'applyToAllParagraphs': 'Aplicar a todos os parágrafos deste orador',
@ -714,18 +743,18 @@ const Map<String, String> ptPT = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Análise falhou, por favor tente mais tarde', 'analysisFailed': 'Análise falhou, por favor tente mais tarde',
'transcriptionFailed': 'Transcrição falhou, por favor tente mais tarde', 'transcriptionFailed': 'Transcrição falhou, por favor tente mais tarde',
'summaryFailed': 'Resumo falhou, por favor tente mais tarde', 'summaryFailed': 'Resumo falhou, por favor tente mais tarde',
'summaryFailedShort': 'Resumo falhou', 'summaryFailedShort': 'Resumo falhou',
'transcriptionFailedShort': 'Transcrição falhou', 'transcriptionFailedShort': 'Transcrição falhou',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'O reprodutor de áudio não está pronto, por favor aguarde', 'playerNotReady': 'O reprodutor de áudio não está pronto, por favor aguarde',
'playFailed': 'Reprodução falhou', 'playFailed': 'Reprodução falhou',
'audioFileNotFound': 'Ficheiro de áudio não encontrado', 'audioFileNotFound': 'Ficheiro de áudio não encontrado',
'fetchingAudio': 'A obter áudio da nuvem...', 'fetchingAudio': 'A obter áudio da nuvem...',
'playerLoadFailed': 'Falha ao carregar o reprodutor de áudio', 'playerLoadFailed': 'Falha ao carregar o reprodutor de áudio',
// 设置页 // 设置页
"systemSettings": "Definições do Sistema", "systemSettings": "Definições do Sistema",
@ -835,7 +864,8 @@ const Map<String, String> ptPT = {
"swipeUpForMore": "Deslize para cima para ver mais", "swipeUpForMore": "Deslize para cima para ver mais",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Quando ativado: A IA não será interrompida pela sua voz enquanto fala e só poderá lidar com uma ronda de conversa de cada vez. Para iniciar uma nova ronda, basta dizer a palavra de ativação.', 'voice_interrupt_tip':
'Quando ativado: A IA não será interrompida pela sua voz enquanto fala e só poderá lidar com uma ronda de conversa de cada vez. Para iniciar uma nova ronda, basta dizer a palavra de ativação.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -891,6 +921,14 @@ const Map<String, String> ptPT = {
'Gostaríamos de saber o motivo da sua denúncia, pode descrever o problema que encontrou.', 'Gostaríamos de saber o motivo da sua denúncia, pode descrever o problema que encontrou.',
'generatedByAi': 'Gerado por IA', 'generatedByAi': 'Gerado por IA',
// Agent模块 - 工具调用
'toolCall': 'Chamada de ferramenta',
'noResult': 'Sem resultado',
'noToolCallContentToCopy':
'Sem conteudo de chamada de ferramenta para copiar',
'toolCallDetails': 'Detalhes da chamada de ferramenta:',
'toolCallContentCopied': 'Conteudo copiado para a area de transferencia',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Aqui estão algumas músicas recomendadas:', 'recommendedMusic': 'Aqui estão algumas músicas recomendadas:',
'playList': 'Lista de Reprodução', 'playList': 'Lista de Reprodução',
@ -911,6 +949,29 @@ const Map<String, String> ptPT = {
"bicycling": "De bicicleta", "bicycling": "De bicicleta",
"tsransit": "Transportes Públicos", "tsransit": "Transportes Públicos",
// Agent模块 - 导航选择
'selectNavigationApp': 'Selecionar aplicativo de navegacao',
'amapMap': 'Amap',
'useAmapNavigation': 'Navegar com Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navegar com Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navegar com Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navegar com Apple Maps',
'builtInNavigation': 'Navegacao integrada',
'useBuiltInNavigation': 'Navegar com mapa integrado',
'navigationStartFailed': 'Falha ao iniciar a navegacao',
'cannotPlayMusicListRetryLater':
'Nao foi possivel reproduzir a lista de musicas, tente novamente mais tarde',
'cannotPlaySong': 'Nao foi possivel reproduzir a musica',
'openMapError': 'Erro ao abrir o mapa',
'pleaseInstallAmapApp': 'Instale primeiro o aplicativo Amap',
'pleaseInstallBaiduMapApp': 'Instale primeiro o aplicativo Baidu Maps',
'appleMapStartFailed': 'Falha ao iniciar Apple Maps',
'appleMapUnavailable': 'Apple Maps indisponivel',
'openAppleMapError': 'Erro ao abrir Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'A consultar as condições meteorológicas:', 'weatherQuery': 'A consultar as condições meteorológicas:',
'highest': 'Máxima', 'highest': 'Máxima',
@ -983,8 +1044,20 @@ const Map<String, String> ptPT = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Desativar janela flutuante',
'enableFloatingWindow': 'Ativar janela flutuante',
'permissionTip': 'Dica de permissao',
'micPermissionRequiredForRecording':
'Permissao de microfone necessaria para gravacao',
'deleteTranslationRecordError':
'Erro ao excluir registro de traducao: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "A traduzir",
"translate": "Traduzir",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Introduza o texto a traduzir",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1261,17 +1334,20 @@ const Map<String, String> ptPT = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navegação em curso', 'native.notification.navigation.title': 'Navegação em curso',
'native.notification.navigation.keepRunning': 'A navegar, mantenha a aplicação em execução', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'O assistente de voz está em execução', 'A navegar, mantenha a aplicação em execução',
'native.notification.audioRecording.recording': 'A gravar áudio, toque para voltar à aplicação', 'native.notification.bleAgent.running':
'native.notification.music.waiting': 'A aguardar reprodução', 'O assistente de voz está em execução',
'native.notification.music.previous': 'Anterior', 'native.notification.audioRecording.recording':
'native.notification.music.next': 'Seguinte', 'A gravar áudio, toque para voltar à aplicação',
'native.notification.music.play': 'Reproduzir', 'native.notification.music.waiting': 'A aguardar reprodução',
'native.notification.music.pause': 'Pausa', 'native.notification.music.previous': 'Anterior',
'native.notification.qqMusic.playing': 'A reproduzir música', 'native.notification.music.next': 'Seguinte',
'native.notification.music.play': 'Reproduzir',
'native.notification.music.pause': 'Pausa',
'native.notification.qqMusic.playing': 'A reproduzir música',
// 版本更新 // 版本更新
'newVersionFound': 'Nova Versão Encontrada', // 版本更新对话框标题 'newVersionFound': 'Nova Versão Encontrada', // 版本更新对话框标题
@ -1413,6 +1489,60 @@ const Map<String, String> ptPT = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Retire ambos os auriculares e certifique-se de que a bateria de ambos está acima de 20%", "Retire ambos os auriculares e certifique-se de que a bateria de ambos está acima de 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Nova versao @version encontrada',
'otaConfirmUpdateNow': 'Atualizar agora?',
'otaUpdate': 'Atualizar',
'otaUpgradeSuccess': 'Atualizacao bem-sucedida',
'otaUpgradeCompleteRepair':
'Atualizacao concluida!\n\nO dispositivo precisa ser emparelhado novamente. Ir para emparelhamento?',
'otaPairLater': 'Emparelhar depois',
'otaPairNow': 'Emparelhar agora',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Erro ao verificar conexao BLE: @error',
'otaBleNotConnected': 'Dispositivo BLE nao conectado',
'otaBleNeedConnection':
'Conexao BLE necessaria\nVerifique a conexao e tente novamente',
'otaDeviceInfoUnavailableTitle': 'Informacoes do dispositivo indisponiveis',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Verificacao de conexao BLE falhou',
'otaCannotGetDeviceInfoCheckConnection':
'Nao foi possivel obter informacoes, verifique a conexao',
'otaCannotGetProductInfoWithName':
'Nao foi possivel obter informacoes do produto, nome: @deviceName',
'otaCannotGetBatteryInfo':
'Nao foi possivel obter informacoes de bateria validas',
'otaLowBattery': 'Bateria fraca',
'otaSingleBatteryLow':
'Bateria muito baixa\nRequisito: acima de 20%\nAtual: @ear @battery%\nCarregue e tente novamente',
'otaDoubleBatteryLow':
'Bateria muito baixa\nRequisito: ambos acima de 20%\nAtual: Esquerdo @left%, Direito @right%\nCarregue e tente novamente',
'otaBatteryCheckFailed': 'Verificacao de bateria falhou',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Esta atualizacao inclui otimizacoes de desempenho e correcoes de bugs.',
'otaGetLatestVersionFailed': 'Falha ao obter a versao mais recente',
'otaGetVersionInfoFailed': 'Falha ao obter informacoes de versao',
'otaCheckingDeviceStatus': 'Verificando status do dispositivo...',
'otaDownloadFailedCheckNetwork':
'Download falhou, verifique a conexao de rede',
'otaDownloadFailed': 'Download falhou',
'otaPreparingConnection': 'Preparando conexao do dispositivo...',
'otaConnectingDevice': 'Conectando ao dispositivo...',
'otaUpgradeStarted': 'Atualizacao OTA iniciada...',
'otaUpgradeProgressWithPercent': 'Progresso: @percent%',
'otaUpgradeSuccessComplete': 'Atualizacao concluida com sucesso',
'otaUpgradeFailedWithCode': 'Atualizacao falhou, codigo de erro: @code',
'otaUpgradeFailedTitle': 'Atualizacao falhou',
'otaUpgradeFailedDesc':
'Verifique a conexao ou o pacote de atualizacao, codigo: @code',
'otaDeviceDisconnected': 'Dispositivo desconectado',
'otaDeviceConnected': 'Dispositivo conectado',
// 音乐模块 // 音乐模块
"noMusic": "Sem Música", // 暂无音乐 "noMusic": "Sem Música", // 暂无音乐
"noPlayingMusic": "Nenhuma música a tocar", // 暂无播放音乐 "noPlayingMusic": "Nenhuma música a tocar", // 暂无播放音乐

340
lib/core/translations/language/ro_ro.dart

@ -1,5 +1,4 @@
const Map<String, String> roRO = { const Map<String, String> roRO = {
// 通用 // 通用
'continue': 'Continuă', 'continue': 'Continuă',
'confirm': 'Confirmă', 'confirm': 'Confirmă',
@ -172,6 +171,29 @@ const Map<String, String> roRO = {
'right': 'Dreapta', 'right': 'Dreapta',
'checkConnectionStatusFailed': 'Verificarea stării conexiunii a eșuat', 'checkConnectionStatusFailed': 'Verificarea stării conexiunii a eșuat',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Initializarea Bluetooth a esuat: @error',
'needBluetoothAndLocationPermission':
'Sunt necesare permisiuni Bluetooth si locatie pentru scanare',
'permissionRequestFailedWithError': 'Solicitarea permisiunii a esuat: @error',
'needPermission': 'Permisiune necesara',
'blePermissionDialogContent':
'Aplicatia necesita permisiuni Bluetooth si locatie pentru scanarea dispozitivelor. Activati-le din Setari.',
'needEnableBluetooth': 'Activati Bluetooth',
'enableBluetoothDialogContent':
'Activati Bluetooth pentru a scana si conecta dispozitive.',
'bleScanFailedWithError': 'Scanare esuata: @error',
'bleConnectionSuccess': 'Conectare reusita',
'bleConnectedToDevice': 'Conectat la @device',
'bleConnectionFailedWithError': 'Conectare esuata: @error',
'bleDisconnected': 'Deconectat',
'bleDeviceDisconnected': 'Dispozitiv deconectat',
'bleDisconnectFailedWithError': 'Deconectare esuata: @error',
'signalStrong': 'Puternic',
'signalMedium': 'Mediu',
'signalWeak': 'Slab',
'signalVeryWeak': 'Foarte slab',
// 发现页 // 发现页
"searchAi": "Căutați funcții AI...", "searchAi": "Căutați funcții AI...",
"exploreSlogan": "Căști inteligente, posibilități infinite", "exploreSlogan": "Căști inteligente, posibilități infinite",
@ -247,60 +269,65 @@ const Map<String, String> roRO = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Plată reușită', 'paymentSuccess': 'Plată reușită',
'paymentFailed': 'Plata a eșuat', 'paymentFailed': 'Plata a eșuat',
'gotIt': 'Am înțeles', 'gotIt': 'Am înțeles',
'paymentFailedTryAgain': 'Plata a eșuat. Vă rugăm să reîncercați.', 'paymentFailedTryAgain': 'Plata a eșuat. Vă rugăm să reîncercați.',
'selectPaymentMethod': 'Selectați metoda de plată', 'selectPaymentMethod': 'Selectați metoda de plată',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Crearea comenzii WeChat Pay a eșuat', 'wechatOrderCreateFailed': 'Crearea comenzii WeChat Pay a eșuat',
'alipayOrderCreateFailed': 'Crearea comenzii Alipay a eșuat', 'alipayOrderCreateFailed': 'Crearea comenzii Alipay a eșuat',
'appleOrderCreateFailed': 'Crearea comenzii Apple a eșuat', 'appleOrderCreateFailed': 'Crearea comenzii Apple a eșuat',
'googleOrderCreateFailed': 'Crearea comenzii Google a eșuat', 'googleOrderCreateFailed': 'Crearea comenzii Google a eșuat',
'paypalOrderCreateFailed': 'Crearea comenzii PayPal a eșuat', 'paypalOrderCreateFailed': 'Crearea comenzii PayPal a eșuat',
'paymentException': 'Excepție la plată', 'paymentException': 'Excepție la plată',
'paymentLaunchFailed': 'Lansarea plății a eșuat', 'paymentLaunchFailed': 'Lansarea plății a eșuat',
'paymentExceptionWithError': 'Excepție la plată: @error', 'paymentExceptionWithError': 'Excepție la plată: @error',
'paymentProcessingCheckLater': 'Comanda dvs. este în curs de procesare. Verificați mai târziu.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Interogarea rezultatului plății a eșuat: @error', 'Comanda dvs. este în curs de procesare. Verificați mai târziu.',
'orderConfirmedQuotaRefreshed': 'Comanda a fost confirmată. Cota dvs. a fost reîmprospătată.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Plată finalizată. Se confirmă…', 'Interogarea rezultatului plății a eșuat: @error',
'paymentCancelled': 'Plată anulată', 'orderConfirmedQuotaRefreshed':
'paypalOpenedCompleteInBrowser': 'PayPal deschis. Vă rugăm să finalizați plata în browser.', 'Comanda a fost confirmată. Cota dvs. a fost reîmprospătată.',
'paypalOpenFailed': 'Nu se poate deschide pagina de plată PayPal', 'paymentCompletedConfirming': 'Plată finalizată. Se confirmă…',
'paymentTestTitle': 'Test de plată', 'paymentCancelled': 'Plată anulată',
'paymentTestOrderInfo': 'Informații comandă de test', 'paypalOpenedCompleteInBrowser':
'paymentTestProductId': 'ID produs', 'PayPal deschis. Vă rugăm să finalizați plata în browser.',
'paymentTestProductDescription': 'Descrierea produsului', 'paypalOpenFailed': 'Nu se poate deschide pagina de plată PayPal',
'paymentTestWechatDescription': 'Test plată WeChat Pay', 'paymentTestTitle': 'Test de plată',
'paymentTestAlipayDescription': 'Test plată Alipay', 'paymentTestOrderInfo': 'Informații comandă de test',
'paymentTestAmount': 'Sumă', 'paymentTestProductId': 'ID produs',
'paymentTestSelectAmount': 'Selectați suma de test', 'paymentTestProductDescription': 'Descrierea produsului',
'paying': 'Se plătește...', 'paymentTestWechatDescription': 'Test plată WeChat Pay',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAlipayDescription': 'Test plată Alipay',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAmount': 'Sumă',
'paymentStatusTitle': 'Starea plății', 'paymentTestSelectAmount': 'Selectați suma de test',
'errorInfoWithMessage': 'Eroare: @message', 'paying': 'Se plătește...',
'retest': 'Retestare', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsTitle': 'Instrucțiuni', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsContent': '1. Selectați o sumă de test (recomandat: ¥0,01)\n2. Faceți clic pe butonul de plată pentru a începe\n3. Finalizați plata în aplicația de plată\n4. Reveniți pentru a verifica rezultatul', 'paymentStatusTitle': 'Starea plății',
'startingWechatPayment': 'Se lansează WeChat Pay...', 'errorInfoWithMessage': 'Eroare: @message',
'startingAlipayPayment': 'Se lansează Alipay...', 'retest': 'Retestare',
'wechatPaymentSuccess': 'WeChat Pay reușit!', 'paymentTestInstructionsTitle': 'Instrucțiuni',
'wechatPaymentFailed': 'WeChat Pay eșuat', 'paymentTestInstructionsContent':
'wechatPaymentLaunchFailed': 'Lansarea WeChat Pay a eșuat', '1. Selectați o sumă de test (recomandat: ¥0,01)\n2. Faceți clic pe butonul de plată pentru a începe\n3. Finalizați plata în aplicația de plată\n4. Reveniți pentru a verifica rezultatul',
'cannotLaunchWechatPayment': 'Nu se poate lansa WeChat Pay', 'startingWechatPayment': 'Se lansează WeChat Pay...',
'wechatPaymentException': 'Excepție WeChat Pay', 'startingAlipayPayment': 'Se lansează Alipay...',
'wechatPaymentTestCompleted': 'Test WeChat Pay finalizat', 'wechatPaymentSuccess': 'WeChat Pay reușit!',
'alipayPaymentSuccess': 'Alipay reușit!', 'wechatPaymentFailed': 'WeChat Pay eșuat',
'alipayPaymentFailed': 'Alipay eșuat', 'wechatPaymentLaunchFailed': 'Lansarea WeChat Pay a eșuat',
'alipayPaymentLaunchFailed': 'Lansarea Alipay a eșuat', 'cannotLaunchWechatPayment': 'Nu se poate lansa WeChat Pay',
'cannotLaunchAlipayPayment': 'Nu se poate lansa Alipay', 'wechatPaymentException': 'Excepție WeChat Pay',
'alipayPaymentException': 'Excepție Alipay', 'wechatPaymentTestCompleted': 'Test WeChat Pay finalizat',
'alipayPaymentSuccess': 'Alipay reușit!',
'alipayPaymentFailed': 'Alipay eșuat',
'alipayPaymentLaunchFailed': 'Lansarea Alipay a eșuat',
'cannotLaunchAlipayPayment': 'Nu se poate lansa Alipay',
'alipayPaymentException': 'Excepție Alipay',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Insufficient balance, please go to the corresponding recharge page to recharge.',
@ -501,16 +528,24 @@ const Map<String, String> roRO = {
'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作 'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Încheie și salvează', // 结束录音并保存 'meetingRecordEndAndSave': 'Încheie și salvează', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Încheie fără a salva', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Încheie fără a salva', // 结束录音不保存
'meetingRecordContinueInBackground': 'Continuă înregistrarea în fundal', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'A expirat timpul pentru oprirea înregistrării. Încearcă din nou.', // 结束录音超时,请重试 'Continuă înregistrarea în fundal', // 后台继续录音
'meetingRecordStopFailed': 'Nu s-a putut opri înregistrarea. Încearcă din nou.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Nu s-a putut salva înregistrarea. Încearcă din nou.', // 保存录音失败,请重试 'A expirat timpul pentru oprirea înregistrării. Încearcă din nou.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Nu s-a putut opri înregistrarea. Încearcă din nou.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Nu s-a putut salva înregistrarea. Încearcă din nou.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Înregistrare în curs', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Înregistrare în curs', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Se înregistrează în fundal. Atinge pentru a reveni la aplicație.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Se înregistrează în fundal. Atinge pentru a reveni la aplicație.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Afișare peste alte aplicații', // 悬浮窗权限 'overlayPermissionTitle': 'Afișare peste alte aplicații', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Pentru a afișa rezultatele traducerii în timpul apelurilor sau al traducerii audio/video, avem nevoie de permisiunea de suprapunere. Astfel poți vedea traduceri în timp real în timp ce folosești alte aplicații.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Pentru a afișa bara flotantă de înregistrare (cronometru/pauză/continuă) în timpul înregistrării, avem nevoie de permisiunea de suprapunere.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Pentru a afișa rezultatele traducerii în timpul apelurilor sau al traducerii audio/video, avem nevoie de permisiunea de suprapunere. Astfel poți vedea traduceri în timp real în timp ce folosești alte aplicații.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Nu se pot deschide automat setările de sistem. Deschide Setări și activează manual permisiunea de suprapunere.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Pentru a afișa bara flotantă de înregistrare (cronometru/pauză/continuă) în timpul înregistrării, avem nevoie de permisiunea de suprapunere.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nu se pot deschide automat setările de sistem. Deschide Setări și activează manual permisiunea de suprapunere.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -535,21 +570,22 @@ const Map<String, String> roRO = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Creează', 'create': 'Creează',
'templateDetails': 'Detalii șablon', 'templateDetails': 'Detalii șablon',
'tag': 'Etichetă', 'tag': 'Etichetă',
'description': 'Descriere', 'description': 'Descriere',
'template': 'Șablon', 'template': 'Șablon',
'deleteTemplate': 'Șterge șablon', 'deleteTemplate': 'Șterge șablon',
'deleteTemplateConfirm': 'Sunteți sigur că doriți să ștergeți acest șablon?', 'deleteTemplateConfirm': 'Sunteți sigur că doriți să ștergeți acest șablon?',
'editTemplate': 'Editează șablon', 'editTemplate': 'Editează șablon',
'createTemplate': 'Creează șablon', 'createTemplate': 'Creează șablon',
'name': 'Nume', 'name': 'Nume',
'templateContentHint': 'Vă rugăm să introduceți conținutul șablonului! Sfat: Faceți clic pe butonul AI de mai sus pentru a genera rapid conținutul șablonului pe baza numelui și descrierii introduse', 'templateContentHint':
'inputNameHint': 'Vă rugăm să introduceți numele', 'Vă rugăm să introduceți conținutul șablonului! Sfat: Faceți clic pe butonul AI de mai sus pentru a genera rapid conținutul șablonului pe baza numelui și descrierii introduse',
'inputDescHint': 'Vă rugăm să introduceți descrierea', 'inputNameHint': 'Vă rugăm să introduceți numele',
'custom': 'Personalizat', 'inputDescHint': 'Vă rugăm să introduceți descrierea',
'pleaseEnter': 'Vă rugăm introduceți', 'custom': 'Personalizat',
'pleaseEnter': 'Vă rugăm introduceți',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -572,7 +608,7 @@ const Map<String, String> roRO = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Salvează harta mentală', 'saveMindMap': 'Salvează harta mentală',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -594,7 +630,7 @@ const Map<String, String> roRO = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Exportă', 'export': 'Exportă',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Aplică la toate paragrafele acestui vorbitor', 'applyToAllParagraphs': 'Aplică la toate paragrafele acestui vorbitor',
@ -704,18 +740,19 @@ const Map<String, String> roRO = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiza a eșuat, vă rugăm să reîncercați mai târziu', 'analysisFailed': 'Analiza a eșuat, vă rugăm să reîncercați mai târziu',
'transcriptionFailed': 'Transcrierea a eșuat, vă rugăm să reîncercați mai târziu', 'transcriptionFailed':
'summaryFailed': 'Rezumatul a eșuat, vă rugăm să reîncercați mai târziu', 'Transcrierea a eșuat, vă rugăm să reîncercați mai târziu',
'summaryFailedShort': 'Rezumat eșuat', 'summaryFailed': 'Rezumatul a eșuat, vă rugăm să reîncercați mai târziu',
'transcriptionFailedShort': 'Transcriere eșuată', 'summaryFailedShort': 'Rezumat eșuat',
'transcriptionFailedShort': 'Transcriere eșuată',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Playerul audio nu este pregătit, vă rugăm așteptați', 'playerNotReady': 'Playerul audio nu este pregătit, vă rugăm așteptați',
'playFailed': 'Redarea a eșuat', 'playFailed': 'Redarea a eșuat',
'audioFileNotFound': 'Fișierul audio nu a fost găsit', 'audioFileNotFound': 'Fișierul audio nu a fost găsit',
'fetchingAudio': 'Se descarcă audio din cloud...', 'fetchingAudio': 'Se descarcă audio din cloud...',
'playerLoadFailed': 'Playerul audio nu a putut fi încărcat', 'playerLoadFailed': 'Playerul audio nu a putut fi încărcat',
// 设置页 // 设置页
"systemSettings": "Setări de sistem", "systemSettings": "Setări de sistem",
@ -823,7 +860,8 @@ const Map<String, String> roRO = {
"swipeUpForMore": "Glisați în sus pentru mai mult", "swipeUpForMore": "Glisați în sus pentru mai mult",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Când este activat: AI-ul nu va fi întrerupt de vocea dvs. în timp ce vorbește și poate gestiona doar o rundă de conversație pe rând. Pentru a începe o rundă nouă, spuneți cuvântul de activare.', 'voice_interrupt_tip':
'Când este activat: AI-ul nu va fi întrerupt de vocea dvs. în timp ce vorbește și poate gestiona doar o rundă de conversație pe rând. Pentru a începe o rundă nouă, spuneți cuvântul de activare.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -880,6 +918,13 @@ const Map<String, String> roRO = {
'Dorim să știm de ce raportați, puteți descrie problema pe care ați întâmpinat-o.', 'Dorim să știm de ce raportați, puteți descrie problema pe care ați întâmpinat-o.',
'generatedByAi': 'Generat de AI', 'generatedByAi': 'Generat de AI',
// Agent模块 - 工具调用
'toolCall': 'Apel instrument',
'noResult': 'Niciun rezultat',
'noToolCallContentToCopy': 'Nu exista continut de apel instrument de copiat',
'toolCallDetails': 'Detalii apel instrument:',
'toolCallContentCopied': 'Continut copiat in clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Iată câteva melodii recomandate:', 'recommendedMusic': 'Iată câteva melodii recomandate:',
'playList': 'Listă de redare', 'playList': 'Listă de redare',
@ -900,6 +945,29 @@ const Map<String, String> roRO = {
"bicycling": "Cu bicicleta", "bicycling": "Cu bicicleta",
"tsransit": "Transport public", "tsransit": "Transport public",
// Agent模块 - 导航选择
'selectNavigationApp': 'Selectati aplicatia de navigare',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigare cu Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigare cu Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigare cu Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigare cu Apple Maps',
'builtInNavigation': 'Navigare integrata',
'useBuiltInNavigation': 'Navigare cu harta integrata',
'navigationStartFailed': 'Pornirea navigarii a esuat',
'cannotPlayMusicListRetryLater':
'Nu se poate reda lista de muzica, incercati mai tarziu',
'cannotPlaySong': 'Nu se poate reda melodia',
'openMapError': 'Eroare la deschiderea hartii',
'pleaseInstallAmapApp': 'Instalati mai intai aplicatia Amap',
'pleaseInstallBaiduMapApp': 'Instalati mai intai aplicatia Baidu Maps',
'appleMapStartFailed': 'Pornirea Apple Maps a esuat',
'appleMapUnavailable': 'Apple Maps indisponibil',
'openAppleMapError': 'Eroare la deschiderea Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Se interoghează condițiile meteo:', 'weatherQuery': 'Se interoghează condițiile meteo:',
'highest': 'Maximă', 'highest': 'Maximă',
@ -972,8 +1040,20 @@ const Map<String, String> roRO = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Dezactivare fereastra plutitoare',
'enableFloatingWindow': 'Activare fereastra plutitoare',
'permissionTip': 'Sfat privind permisiunile',
'micPermissionRequiredForRecording':
'Este necesara permisiunea microfonului pentru inregistrare',
'deleteTranslationRecordError':
'Eroare la stergerea inregistrarii de traducere: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Se traduce",
"translate": "Traducere",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Introduceți textul de tradus",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1250,17 +1330,19 @@ const Map<String, String> roRO = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigare în curs', 'native.notification.navigation.title': 'Navigare în curs',
'native.notification.navigation.keepRunning': 'Navigare în curs, mențineți aplicația deschisă', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'Asistentul vocal funcționează', 'Navigare în curs, mențineți aplicația deschisă',
'native.notification.audioRecording.recording': 'Se înregistrează audio, atingeți pentru a reveni la aplicație', 'native.notification.bleAgent.running': 'Asistentul vocal funcționează',
'native.notification.music.waiting': 'Așteaptă redarea', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Anterior', 'Se înregistrează audio, atingeți pentru a reveni la aplicație',
'native.notification.music.next': 'Următorul', 'native.notification.music.waiting': 'Așteaptă redarea',
'native.notification.music.play': 'Redare', 'native.notification.music.previous': 'Anterior',
'native.notification.music.pause': 'Pauză', 'native.notification.music.next': 'Următorul',
'native.notification.qqMusic.playing': 'Se redă muzică', 'native.notification.music.play': 'Redare',
'native.notification.music.pause': 'Pauză',
'native.notification.qqMusic.playing': 'Se redă muzică',
// 版本更新 // 版本更新
'newVersionFound': 'Versiune nouă găsită', // 版本更新对话框标题 'newVersionFound': 'Versiune nouă găsită', // 版本更新对话框标题
@ -1401,6 +1483,60 @@ const Map<String, String> roRO = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Scoateți ambele căști și asigurați-vă că bateria ambelor este peste 20%", "Scoateți ambele căști și asigurați-vă că bateria ambelor este peste 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Versiune noua @version gasita',
'otaConfirmUpdateNow': 'Actualizare acum?',
'otaUpdate': 'Actualizare',
'otaUpgradeSuccess': 'Actualizare reusita',
'otaUpgradeCompleteRepair':
'Actualizare finalizata!\n\nDispozitivul trebuie re-asociat. Pagina de asociere?',
'otaPairLater': 'Imperechere mai tarziu',
'otaPairNow': 'Imperechere acum',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Eroare la verificarea conexiunii BLE: @error',
'otaBleNotConnected': 'Dispozitiv BLE neconectat',
'otaBleNeedConnection':
'Conexiune BLE necesara\nVerificati conexiunea si incercati din nou',
'otaDeviceInfoUnavailableTitle': 'Informatii dispozitiv indisponibile',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Verificarea conexiunii BLE a esuat',
'otaCannotGetDeviceInfoCheckConnection':
'Nu se pot obtine informatii, verificati conexiunea',
'otaCannotGetProductInfoWithName':
'Nu se pot obtine informatii produs, nume: @deviceName',
'otaCannotGetBatteryInfo':
'Nu se pot obtine informatii valide despre baterie',
'otaLowBattery': 'Baterie scazuta',
'otaSingleBatteryLow':
'Baterie prea scazuta\nCerinta: peste 20%\nActual: @ear @battery%\nIncarcati si incercati din nou',
'otaDoubleBatteryLow':
'Baterie prea scazuta\nCerinta: ambele casti peste 20%\nActual: Stanga @left%, Dreapta @right%\nIncarcati si incercati din nou',
'otaBatteryCheckFailed': 'Verificarea bateriei a esuat',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Aceasta actualizare include optimizari de performanta si remedieri de erori.',
'otaGetLatestVersionFailed': 'Nu s-a putut obtine ultima versiune',
'otaGetVersionInfoFailed': 'Nu s-au putut obtine informatiile de versiune',
'otaCheckingDeviceStatus': 'Se verifica starea dispozitivului...',
'otaDownloadFailedCheckNetwork':
'Descarcare esuata, verificati conexiunea la retea',
'otaDownloadFailed': 'Descarcare esuata',
'otaPreparingConnection': 'Se pregateste conexiunea...',
'otaConnectingDevice': 'Se conecteaza la dispozitiv...',
'otaUpgradeStarted': 'Actualizare OTA inceputa...',
'otaUpgradeProgressWithPercent': 'Progres: @percent%',
'otaUpgradeSuccessComplete': 'Actualizare finalizata cu succes',
'otaUpgradeFailedWithCode': 'Actualizare esuata, cod eroare: @code',
'otaUpgradeFailedTitle': 'Actualizare esuata',
'otaUpgradeFailedDesc':
'Verificati conexiunea sau pachetul de actualizare, cod: @code',
'otaDeviceDisconnected': 'Dispozitiv deconectat',
'otaDeviceConnected': 'Dispozitiv conectat',
// 音乐模块 // 音乐模块
"noMusic": "Fără muzică", // 暂无音乐 "noMusic": "Fără muzică", // 暂无音乐
"noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐 "noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐

290
lib/core/translations/language/ru_ru.dart

@ -1,5 +1,4 @@
const Map<String, String> ruRU = { const Map<String, String> ruRU = {
// 通用 // 通用
'continue': 'Продолжить', 'continue': 'Продолжить',
'confirm': 'Подтвердить', 'confirm': 'Подтвердить',
@ -169,6 +168,29 @@ const Map<String, String> ruRU = {
'right': 'Право', 'right': 'Право',
'checkConnectionStatusFailed': 'Не удалось проверить статус подключения', 'checkConnectionStatusFailed': 'Не удалось проверить статус подключения',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Инициализация Bluetooth не удалась: @error',
'needBluetoothAndLocationPermission':
'Для сканирования устройств требуются разрешения Bluetooth и местоположения',
'permissionRequestFailedWithError': 'Ошибка запроса разрешения: @error',
'needPermission': 'Требуется разрешение',
'blePermissionDialogContent':
'Приложению требуются разрешения Bluetooth и местоположения. Включите их в настройках.',
'needEnableBluetooth': 'Включите Bluetooth',
'enableBluetoothDialogContent':
'Включите Bluetooth для сканирования и подключения устройств.',
'bleScanFailedWithError': 'Ошибка сканирования: @error',
'bleConnectionSuccess': 'Подключение успешно',
'bleConnectedToDevice': 'Подключено к @device',
'bleConnectionFailedWithError': 'Ошибка подключения: @error',
'bleDisconnected': 'Отключено',
'bleDeviceDisconnected': 'Устройство отключено',
'bleDisconnectFailedWithError': 'Ошибка отключения: @error',
'signalStrong': 'Сильный',
'signalMedium': 'Средний',
'signalWeak': 'Слабый',
'signalVeryWeak': 'Очень слабый',
// 发现页 // 发现页
"searchAi": "Поиск функций AI...", "searchAi": "Поиск функций AI...",
"exploreSlogan": "Умные наушники, безграничные возможности", "exploreSlogan": "Умные наушники, безграничные возможности",
@ -245,60 +267,63 @@ const Map<String, String> ruRU = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Оплата прошла успешно', 'paymentSuccess': 'Оплата прошла успешно',
'paymentFailed': 'Оплата не удалась', 'paymentFailed': 'Оплата не удалась',
'gotIt': 'Понятно', 'gotIt': 'Понятно',
'paymentFailedTryAgain': 'Оплата не удалась. Попробуйте ещё раз.', 'paymentFailedTryAgain': 'Оплата не удалась. Попробуйте ещё раз.',
'selectPaymentMethod': 'Выберите способ оплаты', 'selectPaymentMethod': 'Выберите способ оплаты',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Не удалось создать заказ WeChat', 'wechatOrderCreateFailed': 'Не удалось создать заказ WeChat',
'alipayOrderCreateFailed': 'Не удалось создать заказ Alipay', 'alipayOrderCreateFailed': 'Не удалось создать заказ Alipay',
'appleOrderCreateFailed': 'Не удалось создать заказ Apple', 'appleOrderCreateFailed': 'Не удалось создать заказ Apple',
'googleOrderCreateFailed': 'Не удалось создать заказ Google', 'googleOrderCreateFailed': 'Не удалось создать заказ Google',
'paypalOrderCreateFailed': 'Не удалось создать заказ PayPal', 'paypalOrderCreateFailed': 'Не удалось создать заказ PayPal',
'paymentException': 'Ошибка оплаты', 'paymentException': 'Ошибка оплаты',
'paymentLaunchFailed': 'Не удалось запустить оплату', 'paymentLaunchFailed': 'Не удалось запустить оплату',
'paymentExceptionWithError': 'Ошибка оплаты: @error', 'paymentExceptionWithError': 'Ошибка оплаты: @error',
'paymentProcessingCheckLater': 'Ваш заказ обрабатывается. Проверьте позже.', 'paymentProcessingCheckLater': 'Ваш заказ обрабатывается. Проверьте позже.',
'paymentResultQueryException': 'Не удалось запросить результат оплаты: @error', 'paymentResultQueryException':
'orderConfirmedQuotaRefreshed': 'Заказ подтверждён. Ваша квота обновлена.', 'Не удалось запросить результат оплаты: @error',
'paymentCompletedConfirming': 'Оплата завершена. Подтверждение…', 'orderConfirmedQuotaRefreshed': 'Заказ подтверждён. Ваша квота обновлена.',
'paymentCancelled': 'Оплата отменена', 'paymentCompletedConfirming': 'Оплата завершена. Подтверждение…',
'paypalOpenedCompleteInBrowser': 'PayPal открыт. Завершите оплату в браузере.', 'paymentCancelled': 'Оплата отменена',
'paypalOpenFailed': 'Не удалось открыть страницу оплаты PayPal', 'paypalOpenedCompleteInBrowser':
'paymentTestTitle': 'Тест оплаты', 'PayPal открыт. Завершите оплату в браузере.',
'paymentTestOrderInfo': 'Информация о тестовом заказе', 'paypalOpenFailed': 'Не удалось открыть страницу оплаты PayPal',
'paymentTestProductId': 'ID товара', 'paymentTestTitle': 'Тест оплаты',
'paymentTestProductDescription': 'Описание товара', 'paymentTestOrderInfo': 'Информация о тестовом заказе',
'paymentTestWechatDescription': 'Тест оплаты через WeChat', 'paymentTestProductId': 'ID товара',
'paymentTestAlipayDescription': 'Тест оплаты через Alipay', 'paymentTestProductDescription': 'Описание товара',
'paymentTestAmount': 'Сумма', 'paymentTestWechatDescription': 'Тест оплаты через WeChat',
'paymentTestSelectAmount': 'Выберите тестовую сумму', 'paymentTestAlipayDescription': 'Тест оплаты через Alipay',
'paying': 'Оплата...', 'paymentTestAmount': 'Сумма',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestSelectAmount': 'Выберите тестовую сумму',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paying': 'Оплата...',
'paymentStatusTitle': 'Статус оплаты', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'errorInfoWithMessage': 'Ошибка: @message', 'alipayPayWithAmount': 'Alipay ¥@amount',
'retest': 'Повторный тест', 'paymentStatusTitle': 'Статус оплаты',
'paymentTestInstructionsTitle': 'Инструкция', 'errorInfoWithMessage': 'Ошибка: @message',
'paymentTestInstructionsContent': '1. Выберите тестовую сумму (рекомендуется: ¥0.01)\n2. Нажмите кнопку оплаты для начала\n3. Завершите оплату в приложении для оплаты\n4. Вернитесь, чтобы проверить результат', 'retest': 'Повторный тест',
'startingWechatPayment': 'Запуск WeChat Pay...', 'paymentTestInstructionsTitle': 'Инструкция',
'startingAlipayPayment': 'Запуск Alipay...', 'paymentTestInstructionsContent':
'wechatPaymentSuccess': 'Оплата через WeChat Pay прошла успешно!', '1. Выберите тестовую сумму (рекомендуется: ¥0.01)\n2. Нажмите кнопку оплаты для начала\n3. Завершите оплату в приложении для оплаты\n4. Вернитесь, чтобы проверить результат',
'wechatPaymentFailed': 'Оплата через WeChat Pay не удалась', 'startingWechatPayment': 'Запуск WeChat Pay...',
'wechatPaymentLaunchFailed': 'Не удалось запустить WeChat Pay', 'startingAlipayPayment': 'Запуск Alipay...',
'cannotLaunchWechatPayment': 'Невозможно запустить WeChat Pay', 'wechatPaymentSuccess': 'Оплата через WeChat Pay прошла успешно!',
'wechatPaymentException': 'Ошибка WeChat Pay', 'wechatPaymentFailed': 'Оплата через WeChat Pay не удалась',
'wechatPaymentTestCompleted': 'Тест оплаты WeChat Pay завершён', 'wechatPaymentLaunchFailed': 'Не удалось запустить WeChat Pay',
'alipayPaymentSuccess': 'Оплата через Alipay прошла успешно!', 'cannotLaunchWechatPayment': 'Невозможно запустить WeChat Pay',
'alipayPaymentFailed': 'Оплата через Alipay не удалась', 'wechatPaymentException': 'Ошибка WeChat Pay',
'alipayPaymentLaunchFailed': 'Не удалось запустить Alipay', 'wechatPaymentTestCompleted': 'Тест оплаты WeChat Pay завершён',
'cannotLaunchAlipayPayment': 'Невозможно запустить Alipay', 'alipayPaymentSuccess': 'Оплата через Alipay прошла успешно!',
'alipayPaymentException': 'Ошибка Alipay', 'alipayPaymentFailed': 'Оплата через Alipay не удалась',
'alipayPaymentLaunchFailed': 'Не удалось запустить Alipay',
'cannotLaunchAlipayPayment': 'Невозможно запустить Alipay',
'alipayPaymentException': 'Ошибка Alipay',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
"Insufficient balance, please go to the corresponding recharge page to recharge.", "Insufficient balance, please go to the corresponding recharge page to recharge.",
@ -544,21 +569,22 @@ const Map<String, String> ruRU = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Создать', 'create': 'Создать',
'templateDetails': 'Детали шаблона', 'templateDetails': 'Детали шаблона',
'tag': 'Тег', 'tag': 'Тег',
'description': 'Описание', 'description': 'Описание',
'template': 'Шаблон', 'template': 'Шаблон',
'deleteTemplate': 'Удалить шаблон', 'deleteTemplate': 'Удалить шаблон',
'deleteTemplateConfirm': 'Вы уверены, что хотите удалить этот шаблон?', 'deleteTemplateConfirm': 'Вы уверены, что хотите удалить этот шаблон?',
'editTemplate': 'Редактировать шаблон', 'editTemplate': 'Редактировать шаблон',
'createTemplate': 'Создать шаблон', 'createTemplate': 'Создать шаблон',
'name': 'Название', 'name': 'Название',
'templateContentHint': 'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания', 'templateContentHint':
'inputNameHint': 'Пожалуйста, введите название', 'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания',
'inputDescHint': 'Пожалуйста, введите описание', 'inputNameHint': 'Пожалуйста, введите название',
'custom': 'Пользовательский', 'inputDescHint': 'Пожалуйста, введите описание',
'pleaseEnter': 'Пожалуйста, введите', 'custom': 'Пользовательский',
'pleaseEnter': 'Пожалуйста, введите',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -581,7 +607,7 @@ const Map<String, String> ruRU = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Сохранить интеллект-карту', 'saveMindMap': 'Сохранить интеллект-карту',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -603,7 +629,7 @@ const Map<String, String> ruRU = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Экспорт', 'export': 'Экспорт',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Применить ко всем абзацам этого говорящего', 'applyToAllParagraphs': 'Применить ко всем абзацам этого говорящего',
@ -713,18 +739,18 @@ const Map<String, String> ruRU = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Анализ не удался, попробуйте позже', 'analysisFailed': 'Анализ не удался, попробуйте позже',
'transcriptionFailed': 'Транскрипция не удалась, попробуйте позже', 'transcriptionFailed': 'Транскрипция не удалась, попробуйте позже',
'summaryFailed': 'Не удалось создать сводку, попробуйте позже', 'summaryFailed': 'Не удалось создать сводку, попробуйте позже',
'summaryFailedShort': 'Сводка не удалась', 'summaryFailedShort': 'Сводка не удалась',
'transcriptionFailedShort': 'Транскрипция не удалась', 'transcriptionFailedShort': 'Транскрипция не удалась',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Аудиоплеер не готов, подождите', 'playerNotReady': 'Аудиоплеер не готов, подождите',
'playFailed': 'Ошибка воспроизведения', 'playFailed': 'Ошибка воспроизведения',
'audioFileNotFound': 'Аудиофайл не найден', 'audioFileNotFound': 'Аудиофайл не найден',
'fetchingAudio': 'Получение аудио из облака...', 'fetchingAudio': 'Получение аудио из облака...',
'playerLoadFailed': 'Не удалось загрузить аудиоплеер', 'playerLoadFailed': 'Не удалось загрузить аудиоплеер',
// 设置页 // 设置页
"systemSettings": "Системные настройки", "systemSettings": "Системные настройки",
@ -830,7 +856,8 @@ const Map<String, String> ruRU = {
"swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше", "swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.', 'voice_interrupt_tip':
'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -886,6 +913,13 @@ const Map<String, String> ruRU = {
'Мы хотим знать причину вашей жалобы, вы можете описать проблему, с которой столкнулись.', 'Мы хотим знать причину вашей жалобы, вы можете описать проблему, с которой столкнулись.',
'generatedByAi': 'Сгенерировано AI', 'generatedByAi': 'Сгенерировано AI',
// Agent模块 - 工具调用
'toolCall': 'Вызов инструмента',
'noResult': 'Нет результатов',
'noToolCallContentToCopy': 'Нет содержимого вызова для копирования',
'toolCallDetails': 'Детали вызова инструмента:',
'toolCallContentCopied': 'Содержимое скопировано в буфер обмена',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Вот несколько рекомендованных композиций:', 'recommendedMusic': 'Вот несколько рекомендованных композиций:',
'playList': 'Плейлист', 'playList': 'Плейлист',
@ -906,6 +940,29 @@ const Map<String, String> ruRU = {
"bicycling": "На велосипеде", "bicycling": "На велосипеде",
"tsransit": "Общественный транспорт", "tsransit": "Общественный транспорт",
// Agent模块 - 导航选择
'selectNavigationApp': 'Выберите навигатор',
'amapMap': 'Amap',
'useAmapNavigation': 'Навигация через Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Навигация через Baidu Maps',
'googleMap': 'Google Карты',
'useGoogleNavigation': 'Навигация через Google Карты',
'appleMap': 'Apple Карты',
'useAppleNavigation': 'Навигация через Apple Карты',
'builtInNavigation': 'Встроенная навигация',
'useBuiltInNavigation': 'Навигация по встроенной карте',
'navigationStartFailed': 'Не удалось запустить навигацию',
'cannotPlayMusicListRetryLater':
'Не удаётся воспроизвести плейлист, попробуйте позже',
'cannotPlaySong': 'Не удаётся воспроизвести песню',
'openMapError': 'Ошибка при открытии карты',
'pleaseInstallAmapApp': 'Установите приложение Amap',
'pleaseInstallBaiduMapApp': 'Установите приложение Baidu Maps',
'appleMapStartFailed': 'Не удалось запустить Apple Карты',
'appleMapUnavailable': 'Apple Карты недоступны',
'openAppleMapError': 'Ошибка при открытии Apple Карт',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Запрос погодных условий:', 'weatherQuery': 'Запрос погодных условий:',
'highest': 'Макс.', 'highest': 'Макс.',
@ -978,8 +1035,19 @@ const Map<String, String> ruRU = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Отключить плавающее окно',
'enableFloatingWindow': 'Включить плавающее окно',
'permissionTip': 'Подсказка о разрешениях',
'micPermissionRequiredForRecording':
'Для записи требуется разрешение микрофона',
'deleteTranslationRecordError': 'Ошибка при удалении записи перевода: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Перевод",
"translate": "Перевести",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Введите текст для перевода",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1259,7 +1327,8 @@ const Map<String, String> ruRU = {
'native.notification.navigation.title': 'Навигация запущена', // 导航进行中 'native.notification.navigation.title': 'Навигация запущена', // 导航进行中
'native.notification.navigation.keepRunning': 'native.notification.navigation.keepRunning':
'Идёт навигация, держите приложение запущенным', // 正在导航中,请保持应用运行 'Идёт навигация, держите приложение запущенным', // 正在导航中,请保持应用运行
'native.notification.bleAgent.running': 'Голосовой помощник работает', // 语音助手正在运行 'native.notification.bleAgent.running':
'Голосовой помощник работает', // 语音助手正在运行
'native.notification.audioRecording.recording': 'native.notification.audioRecording.recording':
'Идёт запись, нажмите чтобы вернуться в приложение', // 正在录音,点击返回应用 'Идёт запись, нажмите чтобы вернуться в приложение', // 正在录音,点击返回应用
'native.notification.music.waiting': 'Ожидание воспроизведения', // 等待播放 'native.notification.music.waiting': 'Ожидание воспроизведения', // 等待播放
@ -1409,6 +1478,59 @@ const Map<String, String> ruRU = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Извлеките оба наушника и убедитесь, что уровень заряда батареи в обоих превышает 20%", "Извлеките оба наушника и убедитесь, что уровень заряда батареи в обоих превышает 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Найдена новая версия @version',
'otaConfirmUpdateNow': 'Обновить сейчас?',
'otaUpdate': 'Обновить',
'otaUpgradeSuccess': 'Обновление успешно',
'otaUpgradeCompleteRepair':
'Обновление прошивки завершено!\n\nУстройство необходимо повторно сопрячь. Перейти на страницу сопряжения?',
'otaPairLater': 'Сопрячь позже',
'otaPairNow': 'Сопрячь сейчас',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Ошибка проверки BLE-соединения: @error',
'otaBleNotConnected': 'BLE-устройство не подключено',
'otaBleNeedConnection':
'Требуется BLE-подключение\nУбедитесь, что устройство подключено, и повторите',
'otaDeviceInfoUnavailableTitle': 'Информация об устройстве недоступна',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Проверка BLE-соединения не удалась',
'otaCannotGetDeviceInfoCheckConnection':
'Не удаётся получить информацию, проверьте подключение',
'otaCannotGetProductInfoWithName':
'Не удаётся получить информацию о продукте, устройство: @deviceName',
'otaCannotGetBatteryInfo': 'Не удаётся получить данные о батарее',
'otaLowBattery': 'Низкий заряд',
'otaSingleBatteryLow':
'Заряд слишком низкий\nТребование: выше 20%\nТекущий: @ear @battery%\nЗарядите и повторите',
'otaDoubleBatteryLow':
'Заряд слишком низкий\nТребование: оба наушника выше 20%\nТекущий: Левый @left%, Правый @right%\nЗарядите и повторите',
'otaBatteryCheckFailed': 'Проверка батареи не удалась',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Это обновление включает оптимизацию производительности и исправление ошибок.',
'otaGetLatestVersionFailed':
'Не удалось получить информацию о последней версии',
'otaGetVersionInfoFailed': 'Не удалось получить информацию о версии',
'otaCheckingDeviceStatus': 'Проверка состояния устройства...',
'otaDownloadFailedCheckNetwork': 'Загрузка не удалась, проверьте сеть',
'otaDownloadFailed': 'Загрузка не удалась',
'otaPreparingConnection': 'Подготовка подключения...',
'otaConnectingDevice': 'Подключение к устройству...',
'otaUpgradeStarted': 'OTA-обновление начато...',
'otaUpgradeProgressWithPercent': 'Прогресс: @percent%',
'otaUpgradeSuccessComplete': 'Обновление успешно завершено',
'otaUpgradeFailedWithCode': 'Обновление не удалось, код ошибки: @code',
'otaUpgradeFailedTitle': 'Обновление не удалось',
'otaUpgradeFailedDesc':
'Проверьте подключение или пакет обновления, код: @code',
'otaDeviceDisconnected': 'Устройство отключено',
'otaDeviceConnected': 'Устройство подключено',
// 音乐模块 // 音乐模块
"noMusic": "Нет музыки", // 暂无音乐 "noMusic": "Нет музыки", // 暂无音乐
"noPlayingMusic": "Нет воспроизводимой музыки", // 暂无播放音乐 "noPlayingMusic": "Нет воспроизводимой музыки", // 暂无播放音乐

312
lib/core/translations/language/sk_sk.dart

@ -1,5 +1,4 @@
const Map<String, String> skSK = { const Map<String, String> skSK = {
// 通用 // 通用
'continue': 'Pokračovať', 'continue': 'Pokračovať',
'confirm': 'Potvrdiť', 'confirm': 'Potvrdiť',
@ -169,6 +168,29 @@ const Map<String, String> skSK = {
'right': 'Vpravo', 'right': 'Vpravo',
'checkConnectionStatusFailed': 'Kontrola stavu pripojenia zlyhala', 'checkConnectionStatusFailed': 'Kontrola stavu pripojenia zlyhala',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Hľadať AI funkcie...", "searchAi": "Hľadať AI funkcie...",
"exploreSlogan": "Inteligentné slúchadlá, nekonečné možnosti", "exploreSlogan": "Inteligentné slúchadlá, nekonečné možnosti",
@ -245,60 +267,64 @@ const Map<String, String> skSK = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Platba úspešná', 'paymentSuccess': 'Platba úspešná',
'paymentFailed': 'Platba zlyhala', 'paymentFailed': 'Platba zlyhala',
'gotIt': 'Rozumiem', 'gotIt': 'Rozumiem',
'paymentFailedTryAgain': 'Platba zlyhala. Skúste to znova.', 'paymentFailedTryAgain': 'Platba zlyhala. Skúste to znova.',
'selectPaymentMethod': 'Vyberte spôsob platby', 'selectPaymentMethod': 'Vyberte spôsob platby',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Vytvorenie objednávky WeChat zlyhalo', 'wechatOrderCreateFailed': 'Vytvorenie objednávky WeChat zlyhalo',
'alipayOrderCreateFailed': 'Vytvorenie objednávky Alipay zlyhalo', 'alipayOrderCreateFailed': 'Vytvorenie objednávky Alipay zlyhalo',
'appleOrderCreateFailed': 'Vytvorenie objednávky Apple zlyhalo', 'appleOrderCreateFailed': 'Vytvorenie objednávky Apple zlyhalo',
'googleOrderCreateFailed': 'Vytvorenie objednávky Google zlyhalo', 'googleOrderCreateFailed': 'Vytvorenie objednávky Google zlyhalo',
'paypalOrderCreateFailed': 'Vytvorenie objednávky PayPal zlyhalo', 'paypalOrderCreateFailed': 'Vytvorenie objednávky PayPal zlyhalo',
'paymentException': 'Výnimka platby', 'paymentException': 'Výnimka platby',
'paymentLaunchFailed': 'Spustenie platby zlyhalo', 'paymentLaunchFailed': 'Spustenie platby zlyhalo',
'paymentExceptionWithError': 'Výnimka platby: @error', 'paymentExceptionWithError': 'Výnimka platby: @error',
'paymentProcessingCheckLater': 'Vaša objednávka sa spracováva. Skontrolujte neskôr.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Nepodarilo sa zistiť výsledok platby: @error', 'Vaša objednávka sa spracováva. Skontrolujte neskôr.',
'orderConfirmedQuotaRefreshed': 'Objednávka potvrdená. Váš limit bol obnovený.', 'paymentResultQueryException': 'Nepodarilo sa zistiť výsledok platby: @error',
'paymentCompletedConfirming': 'Platba dokončená. Potvrdzovanie…', 'orderConfirmedQuotaRefreshed':
'paymentCancelled': 'Platba bola zrušená', 'Objednávka potvrdená. Váš limit bol obnovený.',
'paypalOpenedCompleteInBrowser': 'PayPal je otvorený. Dokončite platbu v prehliadači.', 'paymentCompletedConfirming': 'Platba dokončená. Potvrdzovanie…',
'paypalOpenFailed': 'Nie je možné otvoriť platobnú stránku PayPal', 'paymentCancelled': 'Platba bola zrušená',
'paymentTestTitle': 'Test platby', 'paypalOpenedCompleteInBrowser':
'paymentTestOrderInfo': 'Informácie o testovacej objednávke', 'PayPal je otvorený. Dokončite platbu v prehliadači.',
'paymentTestProductId': 'ID produktu', 'paypalOpenFailed': 'Nie je možné otvoriť platobnú stránku PayPal',
'paymentTestProductDescription': 'Popis produktu', 'paymentTestTitle': 'Test platby',
'paymentTestWechatDescription': 'Test platby WeChat', 'paymentTestOrderInfo': 'Informácie o testovacej objednávke',
'paymentTestAlipayDescription': 'Test platby Alipay', 'paymentTestProductId': 'ID produktu',
'paymentTestAmount': 'Suma', 'paymentTestProductDescription': 'Popis produktu',
'paymentTestSelectAmount': 'Vyberte testovaciu sumu', 'paymentTestWechatDescription': 'Test platby WeChat',
'paying': 'Platba prebieha...', 'paymentTestAlipayDescription': 'Test platby Alipay',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAmount': 'Suma',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestSelectAmount': 'Vyberte testovaciu sumu',
'paymentStatusTitle': 'Stav platby', 'paying': 'Platba prebieha...',
'errorInfoWithMessage': 'Chyba: @message', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'retest': 'Znova otestovať', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsTitle': 'Pokyny', 'paymentStatusTitle': 'Stav platby',
'paymentTestInstructionsContent': '1. Vyberte testovaciu sumu (odporúčané: ¥0.01)\n2. Kliknite na tlačidlo platby pre spustenie\n3. Dokončite platbu v platobnej aplikácii\n4. Vráťte sa a skontrolujte výsledok', 'errorInfoWithMessage': 'Chyba: @message',
'startingWechatPayment': 'Spúšťanie WeChat Pay...', 'retest': 'Znova otestovať',
'startingAlipayPayment': 'Spúšťanie Alipay...', 'paymentTestInstructionsTitle': 'Pokyny',
'wechatPaymentSuccess': 'Platba WeChat Pay úspešná!', 'paymentTestInstructionsContent':
'wechatPaymentFailed': 'Platba WeChat Pay zlyhala', '1. Vyberte testovaciu sumu (odporúčané: ¥0.01)\n2. Kliknite na tlačidlo platby pre spustenie\n3. Dokončite platbu v platobnej aplikácii\n4. Vráťte sa a skontrolujte výsledok',
'wechatPaymentLaunchFailed': 'Spustenie WeChat Pay zlyhalo', 'startingWechatPayment': 'Spúšťanie WeChat Pay...',
'cannotLaunchWechatPayment': 'Nie je možné spustiť WeChat Pay', 'startingAlipayPayment': 'Spúšťanie Alipay...',
'wechatPaymentException': 'Výnimka WeChat Pay', 'wechatPaymentSuccess': 'Platba WeChat Pay úspešná!',
'wechatPaymentTestCompleted': 'Test platby WeChat Pay dokončený', 'wechatPaymentFailed': 'Platba WeChat Pay zlyhala',
'alipayPaymentSuccess': 'Platba Alipay úspešná!', 'wechatPaymentLaunchFailed': 'Spustenie WeChat Pay zlyhalo',
'alipayPaymentFailed': 'Platba Alipay zlyhala', 'cannotLaunchWechatPayment': 'Nie je možné spustiť WeChat Pay',
'alipayPaymentLaunchFailed': 'Spustenie Alipay zlyhalo', 'wechatPaymentException': 'Výnimka WeChat Pay',
'cannotLaunchAlipayPayment': 'Nie je možné spustiť Alipay', 'wechatPaymentTestCompleted': 'Test platby WeChat Pay dokončený',
'alipayPaymentException': 'Výnimka Alipay', 'alipayPaymentSuccess': 'Platba Alipay úspešná!',
'alipayPaymentFailed': 'Platba Alipay zlyhala',
'alipayPaymentLaunchFailed': 'Spustenie Alipay zlyhalo',
'cannotLaunchAlipayPayment': 'Nie je možné spustiť Alipay',
'alipayPaymentException': 'Výnimka Alipay',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
"Insufficient balance, please go to the corresponding recharge page to recharge.", "Insufficient balance, please go to the corresponding recharge page to recharge.",
@ -541,21 +567,22 @@ const Map<String, String> skSK = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Vytvoriť', 'create': 'Vytvoriť',
'templateDetails': 'Podrobnosti šablóny', 'templateDetails': 'Podrobnosti šablóny',
'tag': 'Štítok', 'tag': 'Štítok',
'description': 'Popis', 'description': 'Popis',
'template': 'Šablóna', 'template': 'Šablóna',
'deleteTemplate': 'Odstrániť šablónu', 'deleteTemplate': 'Odstrániť šablónu',
'deleteTemplateConfirm': 'Ste si istí, že chcete odstrániť túto šablónu?', 'deleteTemplateConfirm': 'Ste si istí, že chcete odstrániť túto šablónu?',
'editTemplate': 'Upraviť šablónu', 'editTemplate': 'Upraviť šablónu',
'createTemplate': 'Vytvoriť šablónu', 'createTemplate': 'Vytvoriť šablónu',
'name': 'Názov', 'name': 'Názov',
'templateContentHint': 'Prosím zadajte obsah šablóny! Tip: Kliknite na tlačidlo AI vyššie pre rýchle vygenerovanie obsahu šablóny na základe zadaného názvu a popisu', 'templateContentHint':
'inputNameHint': 'Prosím zadajte názov', 'Prosím zadajte obsah šablóny! Tip: Kliknite na tlačidlo AI vyššie pre rýchle vygenerovanie obsahu šablóny na základe zadaného názvu a popisu',
'inputDescHint': 'Prosím zadajte popis', 'inputNameHint': 'Prosím zadajte názov',
'custom': 'Vlastné', 'inputDescHint': 'Prosím zadajte popis',
'pleaseEnter': 'Prosím zadajte', 'custom': 'Vlastné',
'pleaseEnter': 'Prosím zadajte',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -578,7 +605,7 @@ const Map<String, String> skSK = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Uložiť myšlienkovú mapu', 'saveMindMap': 'Uložiť myšlienkovú mapu',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -600,7 +627,7 @@ const Map<String, String> skSK = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Exportovať', 'export': 'Exportovať',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Použiť na všetky odseky tohto rečníka', 'applyToAllParagraphs': 'Použiť na všetky odseky tohto rečníka',
@ -710,18 +737,18 @@ const Map<String, String> skSK = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analýza zlyhala, skúste to znova neskôr', 'analysisFailed': 'Analýza zlyhala, skúste to znova neskôr',
'transcriptionFailed': 'Prepis zlyhal, skúste to znova neskôr', 'transcriptionFailed': 'Prepis zlyhal, skúste to znova neskôr',
'summaryFailed': 'Zhrnutie zlyhalo, skúste to znova neskôr', 'summaryFailed': 'Zhrnutie zlyhalo, skúste to znova neskôr',
'summaryFailedShort': 'Zhrnutie zlyhalo', 'summaryFailedShort': 'Zhrnutie zlyhalo',
'transcriptionFailedShort': 'Prepis zlyhal', 'transcriptionFailedShort': 'Prepis zlyhal',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Zvukový prehrávač nie je pripravený, prosím počkajte', 'playerNotReady': 'Zvukový prehrávač nie je pripravený, prosím počkajte',
'playFailed': 'Prehrávanie zlyhalo', 'playFailed': 'Prehrávanie zlyhalo',
'audioFileNotFound': 'Zvukový súbor sa nenašiel', 'audioFileNotFound': 'Zvukový súbor sa nenašiel',
'fetchingAudio': 'Načítavanie zvuku z cloudu...', 'fetchingAudio': 'Načítavanie zvuku z cloudu...',
'playerLoadFailed': 'Zvukový prehrávač sa nepodarilo načítať', 'playerLoadFailed': 'Zvukový prehrávač sa nepodarilo načítať',
// 设置页 // 设置页
"systemSettings": "Systémové nastavenia", "systemSettings": "Systémové nastavenia",
@ -826,7 +853,8 @@ const Map<String, String> skSK = {
"swipeUpForMore": "Potiahnite nahor pre viac", "swipeUpForMore": "Potiahnite nahor pre viac",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Keď je zapnuté: AI nebude prerušený vaším hlasom počas rozprávania a môže spracovať iba jedno kolo konverzácie naraz. Pre začatie nového kola stačí povedať aktivačné slovo.', 'voice_interrupt_tip':
'Keď je zapnuté: AI nebude prerušený vaším hlasom počas rozprávania a môže spracovať iba jedno kolo konverzácie naraz. Pre začatie nového kola stačí povedať aktivačné slovo.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -882,6 +910,13 @@ const Map<String, String> skSK = {
'Chceme vedieť dôvod vášho hlásenia, môžete opísať problém, s ktorým ste sa stretli.', 'Chceme vedieť dôvod vášho hlásenia, môžete opísať problém, s ktorým ste sa stretli.',
'generatedByAi': 'Vygenerované AI', 'generatedByAi': 'Vygenerované AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Tu sú niektoré odporúčané skladby:', 'recommendedMusic': 'Tu sú niektoré odporúčané skladby:',
'playList': 'Zoznam skladieb', 'playList': 'Zoznam skladieb',
@ -902,6 +937,29 @@ const Map<String, String> skSK = {
"bicycling": "Bicyklovanie", "bicycling": "Bicyklovanie",
"tsransit": "Verejná doprava", "tsransit": "Verejná doprava",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Dotaz na poveternostné podmienky:', 'weatherQuery': 'Dotaz na poveternostné podmienky:',
'highest': 'Najvyššia', 'highest': 'Najvyššia',
@ -973,8 +1031,19 @@ const Map<String, String> skSK = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Zadajte text na preklad",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1247,17 +1316,19 @@ const Map<String, String> skSK = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigácia prebieha', 'native.notification.navigation.title': 'Navigácia prebieha',
'native.notification.navigation.keepRunning': 'Navigácia, ponechajte aplikáciu spustenú', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'Hlasový asistent je spustený', 'Navigácia, ponechajte aplikáciu spustenú',
'native.notification.audioRecording.recording': 'Nahrávanie zvuku, ťuknite pre návrat do aplikácie', 'native.notification.bleAgent.running': 'Hlasový asistent je spustený',
'native.notification.music.waiting': 'Čakanie na prehranie', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Predchádzajúca', 'Nahrávanie zvuku, ťuknite pre návrat do aplikácie',
'native.notification.music.next': 'Ďalšia', 'native.notification.music.waiting': 'Čakanie na prehranie',
'native.notification.music.play': 'Prehrať', 'native.notification.music.previous': 'Predchádzajúca',
'native.notification.music.pause': 'Pozastaviť', 'native.notification.music.next': 'Ďalšia',
'native.notification.qqMusic.playing': 'Prehrávanie hudby', 'native.notification.music.play': 'Prehrať',
'native.notification.music.pause': 'Pozastaviť',
'native.notification.qqMusic.playing': 'Prehrávanie hudby',
// 版本更新 // 版本更新
'newVersionFound': 'Nájdená nová verzia', // 版本更新对话框标题 'newVersionFound': 'Nájdená nová verzia', // 版本更新对话框标题
@ -1398,6 +1469,59 @@ const Map<String, String> skSK = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%", "Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Žiadna hudba", // 暂无音乐 "noMusic": "Žiadna hudba", // 暂无音乐
"noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐 "noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐

314
lib/core/translations/language/sl_si.dart

@ -1,5 +1,4 @@
const Map<String, String> slSI = { const Map<String, String> slSI = {
// 通用 // 通用
'continue': 'Nadaljuj', 'continue': 'Nadaljuj',
'confirm': 'Potrdi', 'confirm': 'Potrdi',
@ -169,6 +168,29 @@ const Map<String, String> slSI = {
'right': 'Desno', 'right': 'Desno',
'checkConnectionStatusFailed': 'Preverjanje stanja povezave ni uspelo', 'checkConnectionStatusFailed': 'Preverjanje stanja povezave ni uspelo',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Išči funkcije AI...", "searchAi": "Išči funkcije AI...",
"exploreSlogan": "Pametne slušalke, neskončne možnosti", "exploreSlogan": "Pametne slušalke, neskončne možnosti",
@ -245,60 +267,65 @@ const Map<String, String> slSI = {
'totalQuota': 'Total Quota', 'totalQuota': 'Total Quota',
'remaining': 'Remaining', 'remaining': 'Remaining',
'featureDescription': 'Feature Description', 'featureDescription': 'Feature Description',
'paymentSuccess': 'Plačilo uspešno', 'paymentSuccess': 'Plačilo uspešno',
'paymentFailed': 'Plačilo ni uspelo', 'paymentFailed': 'Plačilo ni uspelo',
'gotIt': 'Razumem', 'gotIt': 'Razumem',
'paymentFailedTryAgain': 'Plačilo ni uspelo. Poskusite znova.', 'paymentFailedTryAgain': 'Plačilo ni uspelo. Poskusite znova.',
'selectPaymentMethod': 'Izberite način plačila', 'selectPaymentMethod': 'Izberite način plačila',
'wechatPay': 'WeChat Pay', 'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay', 'alipayPay': 'Alipay',
'paypalPay': 'PayPal', 'paypalPay': 'PayPal',
'appleIap': 'Apple IAP', 'appleIap': 'Apple IAP',
'googleIap': 'Google IAP', 'googleIap': 'Google IAP',
'wechatOrderCreateFailed': 'Ustvarjanje naročila WeChat ni uspelo', 'wechatOrderCreateFailed': 'Ustvarjanje naročila WeChat ni uspelo',
'alipayOrderCreateFailed': 'Ustvarjanje naročila Alipay ni uspelo', 'alipayOrderCreateFailed': 'Ustvarjanje naročila Alipay ni uspelo',
'appleOrderCreateFailed': 'Ustvarjanje naročila Apple ni uspelo', 'appleOrderCreateFailed': 'Ustvarjanje naročila Apple ni uspelo',
'googleOrderCreateFailed': 'Ustvarjanje naročila Google ni uspelo', 'googleOrderCreateFailed': 'Ustvarjanje naročila Google ni uspelo',
'paypalOrderCreateFailed': 'Ustvarjanje naročila PayPal ni uspelo', 'paypalOrderCreateFailed': 'Ustvarjanje naročila PayPal ni uspelo',
'paymentException': 'Izjema pri plačilu', 'paymentException': 'Izjema pri plačilu',
'paymentLaunchFailed': 'Zagon plačila ni uspel', 'paymentLaunchFailed': 'Zagon plačila ni uspel',
'paymentExceptionWithError': 'Izjema pri plačilu: @error', 'paymentExceptionWithError': 'Izjema pri plačilu: @error',
'paymentProcessingCheckLater': 'Vaše naročilo se obdeluje. Preverite pozneje.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Poizvedba o rezultatu plačila ni uspela: @error', 'Vaše naročilo se obdeluje. Preverite pozneje.',
'orderConfirmedQuotaRefreshed': 'Naročilo je potrjeno. Vaša kvota je bila osvežena.', 'paymentResultQueryException':
'paymentCompletedConfirming': 'Plačilo je zaključeno. Potrjevanje…', 'Poizvedba o rezultatu plačila ni uspela: @error',
'paymentCancelled': 'Plačilo je preklicano', 'orderConfirmedQuotaRefreshed':
'paypalOpenedCompleteInBrowser': 'PayPal je odprt. Prosimo dokončajte plačilo v brskalniku.', 'Naročilo je potrjeno. Vaša kvota je bila osvežena.',
'paypalOpenFailed': 'Ni mogoče odpreti strani za plačilo PayPal', 'paymentCompletedConfirming': 'Plačilo je zaključeno. Potrjevanje…',
'paymentTestTitle': 'Test plačila', 'paymentCancelled': 'Plačilo je preklicano',
'paymentTestOrderInfo': 'Informacije o testnem naročilu', 'paypalOpenedCompleteInBrowser':
'paymentTestProductId': 'ID izdelka', 'PayPal je odprt. Prosimo dokončajte plačilo v brskalniku.',
'paymentTestProductDescription': 'Opis izdelka', 'paypalOpenFailed': 'Ni mogoče odpreti strani za plačilo PayPal',
'paymentTestWechatDescription': 'Test plačila WeChat', 'paymentTestTitle': 'Test plačila',
'paymentTestAlipayDescription': 'Test plačila Alipay', 'paymentTestOrderInfo': 'Informacije o testnem naročilu',
'paymentTestAmount': 'Znesek', 'paymentTestProductId': 'ID izdelka',
'paymentTestSelectAmount': 'Izberite testni znesek', 'paymentTestProductDescription': 'Opis izdelka',
'paying': 'Plačevanje...', 'paymentTestWechatDescription': 'Test plačila WeChat',
'wechatPayWithAmount': 'WeChat Pay ¥@amount', 'paymentTestAlipayDescription': 'Test plačila Alipay',
'alipayPayWithAmount': 'Alipay ¥@amount', 'paymentTestAmount': 'Znesek',
'paymentStatusTitle': 'Stanje plačila', 'paymentTestSelectAmount': 'Izberite testni znesek',
'errorInfoWithMessage': 'Napaka: @message', 'paying': 'Plačevanje...',
'retest': 'Ponovno testiraj', 'wechatPayWithAmount': 'WeChat Pay ¥@amount',
'paymentTestInstructionsTitle': 'Navodila', 'alipayPayWithAmount': 'Alipay ¥@amount',
'paymentTestInstructionsContent': '1. Izberite testni znesek (priporočeno: ¥0.01)\n2. Kliknite gumb za plačilo za začetek\n3. Dokončajte plačilo v aplikaciji za plačila\n4. Vrnite se in preverite rezultat', 'paymentStatusTitle': 'Stanje plačila',
'startingWechatPayment': 'Zaganjanje WeChat Pay...', 'errorInfoWithMessage': 'Napaka: @message',
'startingAlipayPayment': 'Zaganjanje Alipay...', 'retest': 'Ponovno testiraj',
'wechatPaymentSuccess': 'Plačilo WeChat Pay uspešno!', 'paymentTestInstructionsTitle': 'Navodila',
'wechatPaymentFailed': 'Plačilo WeChat Pay ni uspelo', 'paymentTestInstructionsContent':
'wechatPaymentLaunchFailed': 'Zagon WeChat Pay ni uspel', '1. Izberite testni znesek (priporočeno: ¥0.01)\n2. Kliknite gumb za plačilo za začetek\n3. Dokončajte plačilo v aplikaciji za plačila\n4. Vrnite se in preverite rezultat',
'cannotLaunchWechatPayment': 'Ni mogoče zagnati WeChat Pay', 'startingWechatPayment': 'Zaganjanje WeChat Pay...',
'wechatPaymentException': 'Izjema WeChat Pay', 'startingAlipayPayment': 'Zaganjanje Alipay...',
'wechatPaymentTestCompleted': 'Test plačila WeChat Pay je zaključen', 'wechatPaymentSuccess': 'Plačilo WeChat Pay uspešno!',
'alipayPaymentSuccess': 'Plačilo Alipay uspešno!', 'wechatPaymentFailed': 'Plačilo WeChat Pay ni uspelo',
'alipayPaymentFailed': 'Plačilo Alipay ni uspelo', 'wechatPaymentLaunchFailed': 'Zagon WeChat Pay ni uspel',
'alipayPaymentLaunchFailed': 'Zagon Alipay ni uspel', 'cannotLaunchWechatPayment': 'Ni mogoče zagnati WeChat Pay',
'cannotLaunchAlipayPayment': 'Ni mogoče zagnati Alipay', 'wechatPaymentException': 'Izjema WeChat Pay',
'alipayPaymentException': 'Izjema Alipay', 'wechatPaymentTestCompleted': 'Test plačila WeChat Pay je zaključen',
'alipayPaymentSuccess': 'Plačilo Alipay uspešno!',
'alipayPaymentFailed': 'Plačilo Alipay ni uspelo',
'alipayPaymentLaunchFailed': 'Zagon Alipay ni uspel',
'cannotLaunchAlipayPayment': 'Ni mogoče zagnati Alipay',
'alipayPaymentException': 'Izjema Alipay',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "insufficientBalanceDesc":
"Insufficient balance, please go to the corresponding recharge page to recharge.", "Insufficient balance, please go to the corresponding recharge page to recharge.",
@ -540,21 +567,23 @@ const Map<String, String> slSI = {
'selectSummaryTemplate': 'Select Summary Template', 'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template', 'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used', 'lastUsed': 'Last Used',
'create': 'Ustvari', 'create': 'Ustvari',
'templateDetails': 'Podrobnosti predloge', 'templateDetails': 'Podrobnosti predloge',
'tag': 'Oznaka', 'tag': 'Oznaka',
'description': 'Opis', 'description': 'Opis',
'template': 'Predloga', 'template': 'Predloga',
'deleteTemplate': 'Izbriši predlogo', 'deleteTemplate': 'Izbriši predlogo',
'deleteTemplateConfirm': 'Ali ste prepričani, da želite izbrisati to predlogo?', 'deleteTemplateConfirm':
'editTemplate': 'Uredi predlogo', 'Ali ste prepričani, da želite izbrisati to predlogo?',
'createTemplate': 'Ustvari predlogo', 'editTemplate': 'Uredi predlogo',
'name': 'Ime', 'createTemplate': 'Ustvari predlogo',
'templateContentHint': 'Prosimo vnesite vsebino predloge! Namig: Kliknite gumb AI zgoraj za hitro ustvarjanje vsebine predloge na podlagi vnesenega imena in opisa', 'name': 'Ime',
'inputNameHint': 'Prosimo vnesite ime', 'templateContentHint':
'inputDescHint': 'Prosimo vnesite opis', 'Prosimo vnesite vsebino predloge! Namig: Kliknite gumb AI zgoraj za hitro ustvarjanje vsebine predloge na podlagi vnesenega imena in opisa',
'custom': 'Po meri', 'inputNameHint': 'Prosimo vnesite ime',
'pleaseEnter': 'Prosimo vnesite', 'inputDescHint': 'Prosimo vnesite opis',
'custom': 'Po meri',
'pleaseEnter': 'Prosimo vnesite',
'viewAll': 'View All', 'viewAll': 'View All',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
@ -577,7 +606,7 @@ const Map<String, String> slSI = {
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Shrani miselni zemljevid', 'saveMindMap': 'Shrani miselni zemljevid',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Share Success',
@ -599,7 +628,7 @@ const Map<String, String> slSI = {
'exportSummary': 'Export Summary', 'exportSummary': 'Export Summary',
'exportAs': 'Export As', 'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...', 'exportingPDF': 'Exporting PDF...',
'export': 'Izvozi', 'export': 'Izvozi',
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Uporabi za vse odstavke tega govorca', 'applyToAllParagraphs': 'Uporabi za vse odstavke tega govorca',
@ -709,18 +738,18 @@ const Map<String, String> slSI = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiza ni uspela, poskusite znova pozneje', 'analysisFailed': 'Analiza ni uspela, poskusite znova pozneje',
'transcriptionFailed': 'Prepis ni uspel, poskusite znova pozneje', 'transcriptionFailed': 'Prepis ni uspel, poskusite znova pozneje',
'summaryFailed': 'Povzetek ni uspel, poskusite znova pozneje', 'summaryFailed': 'Povzetek ni uspel, poskusite znova pozneje',
'summaryFailedShort': 'Povzetek ni uspel', 'summaryFailedShort': 'Povzetek ni uspel',
'transcriptionFailedShort': 'Prepis ni uspel', 'transcriptionFailedShort': 'Prepis ni uspel',
// Meeting模块 - 播放器 // Meeting模块 - 播放器
'playerNotReady': 'Zvočni predvajalnik ni pripravljen, prosimo počakajte', 'playerNotReady': 'Zvočni predvajalnik ni pripravljen, prosimo počakajte',
'playFailed': 'Predvajanje ni uspelo', 'playFailed': 'Predvajanje ni uspelo',
'audioFileNotFound': 'Zvočna datoteka ni bila najdena', 'audioFileNotFound': 'Zvočna datoteka ni bila najdena',
'fetchingAudio': 'Pridobivanje zvoka iz oblaka...', 'fetchingAudio': 'Pridobivanje zvoka iz oblaka...',
'playerLoadFailed': 'Zvočni predvajalnik se ni uspel naložiti', 'playerLoadFailed': 'Zvočni predvajalnik se ni uspel naložiti',
// 设置页 // 设置页
"systemSettings": "Sistemske nastavitve", "systemSettings": "Sistemske nastavitve",
@ -827,7 +856,8 @@ const Map<String, String> slSI = {
"swipeUpForMore": "Povlecite navzgor za več", "swipeUpForMore": "Povlecite navzgor za več",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Ko je vklopljeno: AI ne bo prekinjen z vašim glasom med govorjenjem in lahko obdela le en krog pogovora naenkrat. Za začetek novega kroga preprosto izgovorite prebujeno besedo.', 'voice_interrupt_tip':
'Ko je vklopljeno: AI ne bo prekinjen z vašim glasom med govorjenjem in lahko obdela le en krog pogovora naenkrat. Za začetek novega kroga preprosto izgovorite prebujeno besedo.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -884,6 +914,13 @@ const Map<String, String> slSI = {
'Želimo vedeti, zakaj prijavljate, lahko opišete težavo, s katero ste se soočili.', 'Želimo vedeti, zakaj prijavljate, lahko opišete težavo, s katero ste se soočili.',
'generatedByAi': 'Generirano s strani AI', 'generatedByAi': 'Generirano s strani AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:', 'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:',
'playList': 'Seznam predvajanja', 'playList': 'Seznam predvajanja',
@ -904,6 +941,29 @@ const Map<String, String> slSI = {
"bicycling": "Kolesarjenje", "bicycling": "Kolesarjenje",
"tsransit": "Javni prevoz", "tsransit": "Javni prevoz",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Poizvedba o vremenskih razmerah:', 'weatherQuery': 'Poizvedba o vremenskih razmerah:',
'highest': 'Najvišja', 'highest': 'Najvišja',
@ -976,8 +1036,19 @@ const Map<String, String> slSI = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Vnesite besedilo za prevod",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1251,17 +1322,19 @@ const Map<String, String> slSI = {
'permissionUtilConfirm': 'OK', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija poteka', 'native.notification.navigation.title': 'Navigacija poteka',
'native.notification.navigation.keepRunning': 'Navigacija, ohranite aplikacijo zagnano', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'Glasovni pomočnik deluje', 'Navigacija, ohranite aplikacijo zagnano',
'native.notification.audioRecording.recording': 'Snemanje zvoka, tapnite za vrnitev v aplikacijo', 'native.notification.bleAgent.running': 'Glasovni pomočnik deluje',
'native.notification.music.waiting': 'Čakanje na predvajanje', 'native.notification.audioRecording.recording':
'native.notification.music.previous': 'Prejšnja', 'Snemanje zvoka, tapnite za vrnitev v aplikacijo',
'native.notification.music.next': 'Naslednja', 'native.notification.music.waiting': 'Čakanje na predvajanje',
'native.notification.music.play': 'Predvajaj', 'native.notification.music.previous': 'Prejšnja',
'native.notification.music.pause': 'Premor', 'native.notification.music.next': 'Naslednja',
'native.notification.qqMusic.playing': 'Predvajanje glasbe', 'native.notification.music.play': 'Predvajaj',
'native.notification.music.pause': 'Premor',
'native.notification.qqMusic.playing': 'Predvajanje glasbe',
// 版本更新 // 版本更新
'newVersionFound': 'Najdena nova različica', // 版本更新对话框标题 'newVersionFound': 'Najdena nova različica', // 版本更新对话框标题
@ -1402,6 +1475,59 @@ const Map<String, String> slSI = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%", "Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Ni glasbe", // 暂无音乐 "noMusic": "Ni glasbe", // 暂无音乐
"noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐 "noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐

1311
lib/core/translations/language/sr_rs.dart

File diff suppressed because it is too large

100
lib/core/translations/language/sv_se.dart

@ -161,6 +161,26 @@ const Map<String, String> svSE = {
'right': 'Höger', 'right': 'Höger',
'checkConnectionStatusFailed': 'Kontroll av anslutningsstatus misslyckades', 'checkConnectionStatusFailed': 'Kontroll av anslutningsstatus misslyckades',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth-initiering misslyckades: @error',
'needBluetoothAndLocationPermission': 'Bluetooth- och platsbehörigheter krävs för att söka enheter',
'permissionRequestFailedWithError': 'Behörighetsförfrågan misslyckades: @error',
'needPermission': 'Behörighet krävs',
'blePermissionDialogContent': 'Appen behöver Bluetooth- och platsbehörigheter för att söka enheter. Aktivera dem i Inställningar.',
'needEnableBluetooth': 'Aktivera Bluetooth',
'enableBluetoothDialogContent': 'Aktivera Bluetooth för att söka och ansluta enheter.',
'bleScanFailedWithError': 'Sökning misslyckades: @error',
'bleConnectionSuccess': 'Anslutningen lyckades',
'bleConnectedToDevice': 'Ansluten till @device',
'bleConnectionFailedWithError': 'Anslutning misslyckades: @error',
'bleDisconnected': 'Frånkopplad',
'bleDeviceDisconnected': 'Enheten frånkopplad',
'bleDisconnectFailedWithError': 'Frånkoppling misslyckades: @error',
'signalStrong': 'Stark signal',
'signalMedium': 'Medelsignal',
'signalWeak': 'Svag signal',
'signalVeryWeak': 'Mycket svag signal',
// 发现页 // 发现页
"searchAi": "Sök AI-funktioner...", "searchAi": "Sök AI-funktioner...",
"exploreSlogan": "Smarta hörlurar, oändliga möjligheter", "exploreSlogan": "Smarta hörlurar, oändliga möjligheter",
@ -823,6 +843,13 @@ const Map<String, String> svSE = {
'reportDescriptionHint': 'Vi vill veta varför du anmäler, du kan beskriva problemet du stött på.', 'reportDescriptionHint': 'Vi vill veta varför du anmäler, du kan beskriva problemet du stött på.',
'generatedByAi': 'Genererad av AI', 'generatedByAi': 'Genererad av AI',
// Agent模块 - 工具调用
'toolCall': 'Verktygsamtal',
'noResult': 'Inget resultat',
'noToolCallContentToCopy': 'Inget verktygsamtal att kopiera',
'toolCallDetails': 'Detaljer om verktygsamtal:',
'toolCallContentCopied': 'Verktygsamtal kopierat till urklipp',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Här är några rekommenderade låtar:', 'recommendedMusic': 'Här är några rekommenderade låtar:',
'playList': 'Spellista', 'playList': 'Spellista',
@ -843,6 +870,28 @@ const Map<String, String> svSE = {
"bicycling": "Cykling", "bicycling": "Cykling",
"tsransit": "Kollektivtrafik", "tsransit": "Kollektivtrafik",
// Agent模块 - 导航选择
'selectNavigationApp': 'Välj navigeringsapp',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigera med Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigera med Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigera med Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigera med Apple Maps',
'builtInNavigation': 'Inbyggd navigation',
'useBuiltInNavigation': 'Navigera med inbyggd karta',
'navigationStartFailed': 'Kunde inte starta navigering',
'cannotPlayMusicListRetryLater': 'Kan inte spela musiklistan, försök igen senare',
'cannotPlaySong': 'Kan inte spela låten',
'openMapError': 'Fel vid öppning av karta',
'pleaseInstallAmapApp': 'Installera Amap-appen först',
'pleaseInstallBaiduMapApp': 'Installera Baidu Maps-appen först',
'appleMapStartFailed': 'Apple Maps kunde inte startas',
'appleMapUnavailable': 'Apple Maps är inte tillgängligt',
'openAppleMapError': 'Fel vid öppning av Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Söker väderinformation:', 'weatherQuery': 'Söker väderinformation:',
'highest': 'Högsta', 'highest': 'Högsta',
@ -903,10 +952,20 @@ const Map<String, String> svSE = {
"bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state",
"autoDetect": "Auto Detect", // 自动检测 "autoDetect": "Auto Detect", // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Inaktivera flytande fönster',
'enableFloatingWindow': 'Aktivera flytande fönster',
'permissionTip': 'Behörighetstips',
'micPermissionRequiredForRecording': 'Mikrofonbehörighet krävs för inspelning',
'deleteTranslationRecordError': 'Fel vid radering av översättningspost: @error',
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Översätter",
"translate": "Översätt",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Ange texten som ska översättas",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1253,6 +1312,47 @@ const Map<String, String> svSE = {
"updateContent": "Uppdateringsinnehåll", "updateContent": "Uppdateringsinnehåll",
"removeEarbudsEnsureBattery": "Ta ut båda hörlurarna och se till att batterinivån är över 20 % på båda", "removeEarbudsEnsureBattery": "Ta ut båda hörlurarna och se till att batterinivån är över 20 % på båda",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Ny version @version hittad',
'otaConfirmUpdateNow': 'Uppdatera nu?',
'otaUpdate': 'Uppdatera',
'otaUpgradeSuccess': 'Uppgradering lyckades',
'otaUpgradeCompleteRepair': 'Firmware-uppgradering klar!\n\nEnheten måste parkopplas igen. Gå till parkopplingssidan?',
'otaPairLater': 'Parkoppla senare',
'otaPairNow': 'Parkoppla nu',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Fel vid BLE-kontroll: @error',
'otaBleNotConnected': 'BLE-enhet inte ansluten',
'otaBleNeedConnection': 'Firmware-uppgradering kräver BLE-anslutning\nSäkerställ att enheten är ansluten och försök igen',
'otaDeviceInfoUnavailableTitle': 'Enhetsinformation otillgänglig',
'otaCannotGetDeviceInfo': 'Kan inte hämta enhetsinformation\nÅteranslut enheten eller försök igen senare',
'otaBleCheckFailed': 'BLE-kontroll misslyckades',
'otaCannotGetDeviceInfoCheckConnection': 'Kan inte hämta enhetsinformation, kontrollera anslutningen',
'otaCannotGetProductInfoWithName': 'Kan inte hämta produktinfo, enhetsnamn: @deviceName',
'otaCannotGetBatteryInfo': 'Kan inte hämta batteriinformation',
'otaLowBattery': 'Låg batterinivå',
'otaSingleBatteryLow': 'Batterinivå för låg för uppgradering\nKrav: batteri över 20%\nNuvarande: @ear @battery%\nLadda och försök igen',
'otaDoubleBatteryLow': 'Batterinivå för låg för uppgradering\nKrav: båda öronsnäckorna över 20%\nNuvarande: Vänster @left%, Höger @right%\nLadda och försök igen',
'otaBatteryCheckFailed': 'Batterikontroll misslyckades',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'Uppdateringen innehåller prestandaförbättringar och felkorrigeringar.',
'otaGetLatestVersionFailed': 'Kunde inte hämta senaste versionen',
'otaGetVersionInfoFailed': 'Kunde inte hämta versionsinformation',
'otaCheckingDeviceStatus': 'Kontrollerar enhetsstatus...',
'otaDownloadFailedCheckNetwork': 'Nedladdning misslyckades, kontrollera nätverksanslutningen',
'otaDownloadFailed': 'Nedladdning misslyckades',
'otaPreparingConnection': 'Förbereder enhetsanslutning...',
'otaConnectingDevice': 'Ansluter till enhet...',
'otaUpgradeStarted': 'OTA-uppgradering startad...',
'otaUpgradeProgressWithPercent': 'Uppgraderingsförlopp: @percent%',
'otaUpgradeSuccessComplete': 'Uppgradering slutförd',
'otaUpgradeFailedWithCode': 'Uppgradering misslyckades, felkod: @code',
'otaUpgradeFailedTitle': 'Uppgradering misslyckades',
'otaUpgradeFailedDesc': 'Kontrollera anslutning eller uppdateringspaket, felkod: @code',
'otaDeviceDisconnected': 'Enheten frånkopplad',
'otaDeviceConnected': 'Enheten ansluten',
// 音乐模块 // 音乐模块
"noMusic": "Ingen musik", // 暂无音乐 "noMusic": "Ingen musik", // 暂无音乐
"noPlayingMusic": "Ingen musik spelas", // 暂无播放音乐 "noPlayingMusic": "Ingen musik spelas", // 暂无播放音乐

680
lib/core/translations/language/th_th.dart

File diff suppressed because it is too large

1185
lib/core/translations/language/tl_ph.dart

File diff suppressed because it is too large

733
lib/core/translations/language/tr_tr.dart

File diff suppressed because it is too large

843
lib/core/translations/language/uk_ua.dart

File diff suppressed because it is too large

1505
lib/core/translations/language/vi_vn.dart

File diff suppressed because it is too large

14
lib/core/translations/language/zh_cn.dart

@ -1,5 +1,4 @@
const Map<String, String> zhCN = { const Map<String, String> zhCN = {
// 通用 // 通用
'continue': '继续', 'continue': '继续',
'confirm': '确认', 'confirm': '确认',
@ -504,10 +503,8 @@ const Map<String, String> zhCN = {
'overlayPermissionTitle': '悬浮窗权限', 'overlayPermissionTitle': '悬浮窗权限',
'overlayPermissionTranslationDesc': 'overlayPermissionTranslationDesc':
'为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。', '为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。',
'overlayPermissionRecordingDesc': 'overlayPermissionRecordingDesc': '为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。',
'为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。', 'overlayPermissionOpenSettingsFailed': '无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。',
'overlayPermissionOpenSettingsFailed':
'无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。',
'transcribing': '正在转写...', 'transcribing': '正在转写...',
'summarizing': '正在总结...', 'summarizing': '正在总结...',
'analyzing': '正在分析...', 'analyzing': '正在分析...',
@ -966,6 +963,7 @@ const Map<String, String> zhCN = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "语言检测失败", "languageDetectionFailed": "语言检测失败",
"inputTextToTranslate": "请输入待翻译的文本",
"translationFailed": "翻译失败", "translationFailed": "翻译失败",
"translating": "正在翻译", "translating": "正在翻译",
"translate": "翻译", "translate": "翻译",
@ -1337,8 +1335,10 @@ const Map<String, String> zhCN = {
'otaCannotGetProductInfoWithName': '无法获取产品信息,设备名称: @deviceName', 'otaCannotGetProductInfoWithName': '无法获取产品信息,设备名称: @deviceName',
'otaCannotGetBatteryInfo': '无法获取有效的电量信息', 'otaCannotGetBatteryInfo': '无法获取有效的电量信息',
'otaLowBattery': '电量不足', 'otaLowBattery': '电量不足',
'otaSingleBatteryLow': '设备电量不足,无法进行固件升级\n升级要求:设备电量需大于20%\n当前电量:@ear @battery%\n请充电后再试', 'otaSingleBatteryLow':
'otaDoubleBatteryLow': '设备电量不足,无法进行固件升级\n升级要求:左右耳电量均需大于20%\n当前电量:左耳 @left%,右耳 @right%\n请充电后再试', '设备电量不足,无法进行固件升级\n升级要求:设备电量需大于20%\n当前电量:@ear @battery%\n请充电后再试',
'otaDoubleBatteryLow':
'设备电量不足,无法进行固件升级\n升级要求:左右耳电量均需大于20%\n当前电量:左耳 @left%,右耳 @right%\n请充电后再试',
'otaBatteryCheckFailed': '电量检查失败', 'otaBatteryCheckFailed': '电量检查失败',
// OTA升级模块 - 升级状态 // OTA升级模块 - 升级状态

107
lib/core/translations/language/zh_hk.dart

@ -1,5 +1,4 @@
const Map<String, String> zhHK = { const Map<String, String> zhHK = {
// 通用 // 通用
'continue': '繼續', 'continue': '繼續',
'confirm': '確認', 'confirm': '確認',
@ -160,6 +159,26 @@ const Map<String, String> zhHK = {
'right': '右', 'right': '右',
'checkConnectionStatusFailed': '檢查連接狀態失敗', 'checkConnectionStatusFailed': '檢查連接狀態失敗',
// 蓝牙扫描模块
'bleInitFailedWithError': '藍牙初始化失敗: @error',
'needBluetoothAndLocationPermission': '需要藍牙和位置權限才能掃描裝置',
'permissionRequestFailedWithError': '權限請求失敗: @error',
'needPermission': '需要權限',
'blePermissionDialogContent': '應用需要藍牙和位置權限才能掃描裝置。請在設定中手動開啟權限。',
'needEnableBluetooth': '需要開啟藍牙',
'enableBluetoothDialogContent': '請開啟藍牙以掃描和連接裝置。',
'bleScanFailedWithError': '掃描失敗: @error',
'bleConnectionSuccess': '連接成功',
'bleConnectedToDevice': '已連接到 @device',
'bleConnectionFailedWithError': '連接失敗: @error',
'bleDisconnected': '已斷開連接',
'bleDeviceDisconnected': '裝置已斷開連接',
'bleDisconnectFailedWithError': '斷開連接失敗: @error',
'signalStrong': '信號強',
'signalMedium': '信號中等',
'signalWeak': '信號弱',
'signalVeryWeak': '信號很弱',
// 发现页 // 发现页
"searchAi": "搜尋AI功能...", "searchAi": "搜尋AI功能...",
"exploreSlogan": "智能耳機,無限可能", "exploreSlogan": "智能耳機,無限可能",
@ -675,7 +694,7 @@ const Map<String, String> zhHK = {
'playerNotReady': '音頻播放器未準備好,請稍候', 'playerNotReady': '音頻播放器未準備好,請稍候',
'playFailed': '播放失敗', 'playFailed': '播放失敗',
'audioFileNotFound': '音頻文件不存在', 'audioFileNotFound': '音頻文件不存在',
'fetchingAudio': '正在從雲端獲取音頻...', 'fetchingAudio': '正在從雲端獲取音頻...',
'playerLoadFailed': '音頻播放器加載失敗', 'playerLoadFailed': '音頻播放器加載失敗',
// 设置页 // 设置页
@ -777,7 +796,7 @@ const Map<String, String> zhHK = {
"swipeUpForMore": "向上滑動查看更多", "swipeUpForMore": "向上滑動查看更多",
"callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等! "callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等!
"voice_interrupt": "語音打斷", // 语音打断 "voice_interrupt": "語音打斷", // 语音打断
'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。', 'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": '來點音樂', // 来点音乐 "presetMusic": '來點音樂', // 来点音乐
@ -828,6 +847,13 @@ const Map<String, String> zhHK = {
'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。', 'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。',
'generatedByAi': '由AI生成', 'generatedByAi': '由AI生成',
// Agent模块 - 工具调用
'toolCall': '工具調用',
'noResult': '無結果',
'noToolCallContentToCopy': '沒有工具調用內容可以複製',
'toolCallDetails': '工具調用詳情:',
'toolCallContentCopied': '工具調用內容已複製到剪貼板',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': '以下是一些推薦的音樂:', 'recommendedMusic': '以下是一些推薦的音樂:',
'playList': '播放清單', 'playList': '播放清單',
@ -848,6 +874,28 @@ const Map<String, String> zhHK = {
"bicycling": "騎行", "bicycling": "騎行",
"tsransit": "公共交通", "tsransit": "公共交通",
// Agent模块 - 导航选择
'selectNavigationApp': '選擇導航軟件',
'amapMap': '高德地圖',
'useAmapNavigation': '使用高德地圖導航',
'baiduMap': '百度地圖',
'useBaiduNavigation': '使用百度地圖導航',
'googleMap': 'Google 地圖',
'useGoogleNavigation': '使用 Google 地圖導航',
'appleMap': 'Apple 地圖',
'useAppleNavigation': '使用 Apple 地圖導航',
'builtInNavigation': '內置導航',
'useBuiltInNavigation': '使用內置地圖導航',
'navigationStartFailed': '啟動導航失敗',
'cannotPlayMusicListRetryLater': '無法播放音樂列表,請稍後重試',
'cannotPlaySong': '無法播放歌曲',
'openMapError': '打開地圖時發生錯誤',
'pleaseInstallAmapApp': '請先安裝高德地圖應用',
'pleaseInstallBaiduMapApp': '請先安裝百度地圖應用',
'appleMapStartFailed': 'Apple 地圖啟動失敗',
'appleMapUnavailable': 'Apple 地圖不可用',
'openAppleMapError': '打開 Apple 地圖時發生錯誤',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': '查詢天氣情況:', 'weatherQuery': '查詢天氣情況:',
'highest': '最高', 'highest': '最高',
@ -908,10 +956,20 @@ const Map<String, String> zhHK = {
"bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態',
"autoDetect": '自動檢測', // 自动检测 "autoDetect": '自動檢測', // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': '禁用懸浮窗',
'enableFloatingWindow': '啟用懸浮窗',
'permissionTip': '權限提示',
'micPermissionRequiredForRecording': '需要麥克風權限才能使用錄音功能',
'deleteTranslationRecordError': '刪除翻譯記錄時發生錯誤: @error',
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": '語言檢測失敗', "languageDetectionFailed": '語言檢測失敗',
"translationFailed": '翻譯失敗', "translationFailed": '翻譯失敗',
"translating": "正在翻譯",
"translate": "翻譯",
"pleaseInputText": '請輸入文本', "pleaseInputText": '請輸入文本',
"inputTextToTranslate": "請輸入待翻譯的文本",
"textTooLong": '文本過長,最多5000字符', "textTooLong": '文本過長,最多5000字符',
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1258,6 +1316,49 @@ const Map<String, String> zhHK = {
"updateContent": "更新內容", "updateContent": "更新內容",
"removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態", "removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': '發現新版本 @version',
'otaConfirmUpdateNow': '是否立即更新?',
'otaUpdate': '更新',
'otaUpgradeSuccess': '升級成功',
'otaUpgradeCompleteRepair': '固件升級已完成!\n\n裝置需要重新配對才能正常使用,現在跳轉到配對頁面嗎?',
'otaPairLater': '稍後配對',
'otaPairNow': '立即配對',
'okConfirm': '確定',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': '檢查BLE連接狀態時發生錯誤:@error',
'otaBleNotConnected': 'BLE裝置未連接',
'otaBleNeedConnection': '固件升級需要連接BLE裝置\n請確保裝置已正確連接後再試',
'otaDeviceInfoUnavailableTitle': '裝置資訊不可用',
'otaCannotGetDeviceInfo': '無法獲取裝置資訊\n請重新連接裝置或稍後再試',
'otaBleCheckFailed': 'BLE連接檢查失敗',
'otaCannotGetDeviceInfoCheckConnection': '無法獲取裝置資訊,請檢查裝置連接',
'otaCannotGetProductInfoWithName': '無法獲取產品資訊,裝置名稱: @deviceName',
'otaCannotGetBatteryInfo': '無法獲取有效的電量資訊',
'otaLowBattery': '電量不足',
'otaSingleBatteryLow':
'裝置電量不足,無法進行固件升級\n升級要求:裝置電量需大於20%\n當前電量:@ear @battery%\n請充電後再試',
'otaDoubleBatteryLow':
'裝置電量不足,無法進行固件升級\n升級要求:左右耳電量均需大於20%\n當前電量:左耳 @left%,右耳 @right%\n請充電後再試',
'otaBatteryCheckFailed': '電量檢查失敗',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': '本次更新包含性能優化和錯誤修復。',
'otaGetLatestVersionFailed': '獲取最新版本資訊失敗',
'otaGetVersionInfoFailed': '獲取版本資訊失敗',
'otaCheckingDeviceStatus': '正在檢查裝置狀態...',
'otaDownloadFailedCheckNetwork': '下載失敗,請檢查網絡連接',
'otaDownloadFailed': '下載失敗',
'otaPreparingConnection': '準備裝置連接...',
'otaConnectingDevice': '正在連接裝置...',
'otaUpgradeStarted': 'OTA升級已開始...',
'otaUpgradeProgressWithPercent': '升級進度: @percent%',
'otaUpgradeSuccessComplete': '升級成功完成',
'otaUpgradeFailedWithCode': '升級失敗,錯誤碼:@code',
'otaUpgradeFailedTitle': '升級失敗',
'otaUpgradeFailedDesc': '請檢查裝置連接或升級包,錯誤碼:@code',
'otaDeviceDisconnected': '裝置連接斷開',
'otaDeviceConnected': '裝置連接成功',
// 音乐模块 // 音乐模块
"noMusic": "暫無音樂", // 暂无音乐 "noMusic": "暫無音樂", // 暂无音乐
"noPlayingMusic": "暫無播放音樂", // 暂无播放音乐 "noPlayingMusic": "暫無播放音樂", // 暂无播放音乐

107
lib/core/translations/language/zh_tw.dart

@ -1,5 +1,4 @@
const Map<String, String> zhTW = { const Map<String, String> zhTW = {
// 通用 // 通用
'continue': '繼續', 'continue': '繼續',
'confirm': '確認', 'confirm': '確認',
@ -160,6 +159,26 @@ const Map<String, String> zhTW = {
'right': '右', 'right': '右',
'checkConnectionStatusFailed': '檢查連接狀態失敗', 'checkConnectionStatusFailed': '檢查連接狀態失敗',
// 蓝牙扫描模块
'bleInitFailedWithError': '藍牙初始化失敗: @error',
'needBluetoothAndLocationPermission': '需要藍牙和位置權限才能掃描裝置',
'permissionRequestFailedWithError': '權限請求失敗: @error',
'needPermission': '需要權限',
'blePermissionDialogContent': '應用程式需要藍牙和位置權限才能掃描裝置。請在設定中手動開啟權限。',
'needEnableBluetooth': '需要開啟藍牙',
'enableBluetoothDialogContent': '請開啟藍牙以掃描和連線裝置。',
'bleScanFailedWithError': '掃描失敗: @error',
'bleConnectionSuccess': '連線成功',
'bleConnectedToDevice': '已連線到 @device',
'bleConnectionFailedWithError': '連線失敗: @error',
'bleDisconnected': '已中斷連線',
'bleDeviceDisconnected': '裝置已中斷連線',
'bleDisconnectFailedWithError': '中斷連線失敗: @error',
'signalStrong': '訊號強',
'signalMedium': '訊號中等',
'signalWeak': '訊號弱',
'signalVeryWeak': '訊號極弱',
// 发现页 // 发现页
"searchAi": "搜尋AI功能...", "searchAi": "搜尋AI功能...",
"exploreSlogan": "智能耳機,無限可能", "exploreSlogan": "智能耳機,無限可能",
@ -675,7 +694,7 @@ const Map<String, String> zhTW = {
'playerNotReady': '音頻播放器未準備好,請稍候', 'playerNotReady': '音頻播放器未準備好,請稍候',
'playFailed': '播放失敗', 'playFailed': '播放失敗',
'audioFileNotFound': '音頻文件不存在', 'audioFileNotFound': '音頻文件不存在',
'fetchingAudio': '正在從雲端獲取音訊...', 'fetchingAudio': '正在從雲端獲取音訊...',
'playerLoadFailed': '音頻播放器加載失敗', 'playerLoadFailed': '音頻播放器加載失敗',
// 设置页 // 设置页
@ -777,7 +796,7 @@ const Map<String, String> zhTW = {
"swipeUpForMore": "向上滑動查看更多", "swipeUpForMore": "向上滑動查看更多",
"callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等! "callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等!
"voice_interrupt": "語音打斷", // 语音打断 "voice_interrupt": "語音打斷", // 语音打断
'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。', 'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": '來點音樂', // 来点音乐 "presetMusic": '來點音樂', // 来点音乐
@ -828,6 +847,13 @@ const Map<String, String> zhTW = {
'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。', 'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。',
'generatedByAi': '由AI生成', 'generatedByAi': '由AI生成',
// Agent模块 - 工具调用
'toolCall': '工具呼叫',
'noResult': '無結果',
'noToolCallContentToCopy': '沒有工具呼叫內容可以複製',
'toolCallDetails': '工具呼叫詳情:',
'toolCallContentCopied': '工具呼叫內容已複製到剪貼簿',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': '以下是一些推薦的音樂:', 'recommendedMusic': '以下是一些推薦的音樂:',
'playList': '播放清單', 'playList': '播放清單',
@ -848,6 +874,28 @@ const Map<String, String> zhTW = {
"bicycling": "騎行", "bicycling": "騎行",
"tsransit": "公共交通", "tsransit": "公共交通",
// Agent模块 - 导航选择
'selectNavigationApp': '選擇導航軟體',
'amapMap': '高德地圖',
'useAmapNavigation': '使用高德地圖導航',
'baiduMap': '百度地圖',
'useBaiduNavigation': '使用百度地圖導航',
'googleMap': 'Google 地圖',
'useGoogleNavigation': '使用 Google 地圖導航',
'appleMap': 'Apple 地圖',
'useAppleNavigation': '使用 Apple 地圖導航',
'builtInNavigation': '內建導航',
'useBuiltInNavigation': '使用內建地圖導航',
'navigationStartFailed': '啟動導航失敗',
'cannotPlayMusicListRetryLater': '無法播放音樂清單,請稍後重試',
'cannotPlaySong': '無法播放歌曲',
'openMapError': '開啟地圖時發生錯誤',
'pleaseInstallAmapApp': '請先安裝高德地圖應用程式',
'pleaseInstallBaiduMapApp': '請先安裝百度地圖應用程式',
'appleMapStartFailed': 'Apple 地圖啟動失敗',
'appleMapUnavailable': 'Apple 地圖無法使用',
'openAppleMapError': '開啟 Apple 地圖時發生錯誤',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': '查詢天氣情況:', 'weatherQuery': '查詢天氣情況:',
'highest': '最高', 'highest': '最高',
@ -908,10 +956,20 @@ const Map<String, String> zhTW = {
"bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態',
"autoDetect": '自動檢測', // 自动检测 "autoDetect": '自動檢測', // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': '停用懸浮視窗',
'enableFloatingWindow': '啟用懸浮視窗',
'permissionTip': '權限提示',
'micPermissionRequiredForRecording': '需要麥克風權限才能使用錄音功能',
'deleteTranslationRecordError': '刪除翻譯記錄時發生錯誤: @error',
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": '語言檢測失敗', "languageDetectionFailed": '語言檢測失敗',
"translationFailed": '翻譯失敗', "translationFailed": '翻譯失敗',
"translating": "正在翻譯",
"translate": "翻譯",
"pleaseInputText": '請輸入文本', "pleaseInputText": '請輸入文本',
"inputTextToTranslate": "請輸入待翻譯的文字",
"textTooLong": '文本過長,最多5000字符', "textTooLong": '文本過長,最多5000字符',
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1258,6 +1316,49 @@ const Map<String, String> zhTW = {
"updateContent": "更新內容", "updateContent": "更新內容",
"removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態", "removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': '發現新版本 @version',
'otaConfirmUpdateNow': '是否立即更新?',
'otaUpdate': '更新',
'otaUpgradeSuccess': '升級成功',
'otaUpgradeCompleteRepair': '韌體升級已完成!\n\n裝置需要重新配對才能正常使用,現在跳轉到配對頁面嗎?',
'otaPairLater': '稍後配對',
'otaPairNow': '立即配對',
'okConfirm': '確定',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': '檢查BLE連線狀態時發生錯誤:@error',
'otaBleNotConnected': 'BLE裝置未連線',
'otaBleNeedConnection': '韌體升級需要連接BLE裝置\n請確保裝置已正確連接後再試',
'otaDeviceInfoUnavailableTitle': '裝置資訊無法取得',
'otaCannotGetDeviceInfo': '無法取得裝置資訊\n請重新連線裝置或稍後再試',
'otaBleCheckFailed': 'BLE連線檢查失敗',
'otaCannotGetDeviceInfoCheckConnection': '無法取得裝置資訊,請檢查裝置連線',
'otaCannotGetProductInfoWithName': '無法取得產品資訊,裝置名稱: @deviceName',
'otaCannotGetBatteryInfo': '無法取得有效的電量資訊',
'otaLowBattery': '電量不足',
'otaSingleBatteryLow':
'裝置電量不足,無法進行韌體升級\n升級要求:裝置電量需大於20%\n目前電量:@ear @battery%\n請充電後再試',
'otaDoubleBatteryLow':
'裝置電量不足,無法進行韌體升級\n升級要求:左右耳電量均需大於20%\n目前電量:左耳 @left%,右耳 @right%\n請充電後再試',
'otaBatteryCheckFailed': '電量檢查失敗',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': '本次更新包含效能最佳化和錯誤修復。',
'otaGetLatestVersionFailed': '取得最新版本資訊失敗',
'otaGetVersionInfoFailed': '取得版本資訊失敗',
'otaCheckingDeviceStatus': '正在檢查裝置狀態...',
'otaDownloadFailedCheckNetwork': '下載失敗,請檢查網路連線',
'otaDownloadFailed': '下載失敗',
'otaPreparingConnection': '準備裝置連線...',
'otaConnectingDevice': '正在連線裝置...',
'otaUpgradeStarted': 'OTA升級已開始...',
'otaUpgradeProgressWithPercent': '升級進度: @percent%',
'otaUpgradeSuccessComplete': '升級成功完成',
'otaUpgradeFailedWithCode': '升級失敗,錯誤碼:@code',
'otaUpgradeFailedTitle': '升級失敗',
'otaUpgradeFailedDesc': '請檢查裝置連線或升級套件,錯誤碼:@code',
'otaDeviceDisconnected': '裝置連線中斷',
'otaDeviceConnected': '裝置連線成功',
// 音乐模块 // 音乐模块
"noMusic": "暫無音樂", // 暂无音乐 "noMusic": "暫無音樂", // 暂无音乐
"noPlayingMusic": "暫無播放音樂", // 暂无播放音乐 "noPlayingMusic": "暫無播放音樂", // 暂无播放音乐

24
tools/i18n_allowlist.json

@ -0,0 +1,24 @@
[
"Lily",
"paypalPay",
"wechatPay",
"alipayPay",
"appleIap",
"googleIap",
"wechatPayWithAmount",
"alipayPayWithAmount",
"amapMap",
"baiduMap",
"googleMap",
"appleMap",
"native.notification.appName",
"copyrightVoitrans",
"voitransPrivateCloud",
"aiChatCreditsLabel",
"translationCreditsLabel",
"meetingCreditsLabel",
"vipLevelLabel",
"error",
"errorInfoWithMessage"
]

201
tools/i18n_audit.py

@ -0,0 +1,201 @@
import argparse
import glob
import json
import os
from collections import Counter
def _unesc(s: str) -> str:
if "\\" in s:
return s.encode("utf-8").decode("unicode_escape")
return s
def _skip_ws_and_comments(text: str, i: int) -> int:
n = len(text)
while i < n:
ch = text[i]
if ch.isspace():
i += 1
continue
if text.startswith("//", i):
j = text.find("\n", i + 2)
i = n if j == -1 else j + 1
continue
if text.startswith("/*", i):
j = text.find("*/", i + 2)
i = n if j == -1 else j + 2
continue
break
return i
def _parse_string_literal(text: str, i: int) -> tuple[str, int]:
quote = text[i]
i += 1
n = len(text)
buf: list[str] = []
while i < n:
ch = text[i]
if ch == "\\" and i + 1 < n:
buf.append(ch)
buf.append(text[i + 1])
i += 2
continue
if ch == quote:
i += 1
break
buf.append(ch)
i += 1
raw = "".join(buf)
return _unesc(raw), i
def _parse_dart_map(file_path: str) -> dict[str, str]:
with open(file_path, "r", encoding="utf-8") as f:
text = f.read()
start = text.find("{")
end = text.rfind("}")
if start == -1 or end == -1 or end <= start:
return {}
text = text[start + 1 : end]
out: dict[str, str] = {}
i = 0
n = len(text)
while i < n:
i = _skip_ws_and_comments(text, i)
if i >= n:
break
if text[i] not in ("'", '"'):
i += 1
continue
key, i = _parse_string_literal(text, i)
i = _skip_ws_and_comments(text, i)
if i >= n or text[i] != ":":
continue
i += 1
i = _skip_ws_and_comments(text, i)
if i >= n or text[i] not in ("'", '"'):
continue
parts: list[str] = []
while i < n and text[i] in ("'", '"'):
part, i = _parse_string_literal(text, i)
parts.append(part)
i = _skip_ws_and_comments(text, i)
out[key] = "".join(parts)
return out
def _ascii_letter_ratio(s: str) -> float:
if not s:
return 0.0
letters = sum(1 for ch in s if ("a" <= ch.lower() <= "z"))
return letters / max(1, len(s))
def _looks_english_sentence(s: str) -> bool:
if len(s.strip()) < 4:
return False
ratio = _ascii_letter_ratio(s)
if ratio < 0.35:
return False
s_low = s.lower()
common = [
"please",
"failed",
"success",
"error",
"connect",
"connection",
"device",
"network",
"download",
"upload",
"translate",
"translation",
"record",
"permission",
"enable",
"disable",
"check",
"try again",
]
return any(w in s_low for w in common)
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
"--dir",
default=os.path.join("lib", "core", "translations", "language"),
help="Directory containing language dart files",
)
parser.add_argument(
"--baseline",
default="en_us.dart",
help="Baseline dart file to compare values against",
)
parser.add_argument(
"--allowlist",
default="",
help="Path to JSON array of keys allowed to keep identical baseline values",
)
parser.add_argument(
"--mode",
choices=["exact", "englishy"],
default="englishy",
help="exact: value equals baseline; englishy: value equals baseline and looks English",
)
args = parser.parse_args()
lang_dir = args.dir
dart_files = sorted(glob.glob(os.path.join(lang_dir, "*.dart")))
if not dart_files:
raise SystemExit(f"No dart files found in {lang_dir}")
allowlist: set[str] = set()
if args.allowlist:
with open(args.allowlist, "r", encoding="utf-8") as f:
allowlist = set(json.load(f))
parsed = {os.path.basename(p): _parse_dart_map(p) for p in dart_files}
if args.baseline not in parsed:
raise SystemExit(f"baseline not found: {args.baseline}")
baseline = parsed[args.baseline]
result: dict[str, dict] = {"baseline": args.baseline, "mode": args.mode, "files": {}}
global_counter: Counter[str] = Counter()
for fn, kv in parsed.items():
if fn == args.baseline:
continue
issues: list[dict] = []
for k, v in kv.items():
if k in allowlist:
continue
bv = baseline.get(k)
if bv is None:
continue
if v != bv:
continue
if args.mode == "englishy" and not _looks_english_sentence(v):
continue
issues.append({"key": k, "value": v})
global_counter[k] += 1
result["files"][fn] = {"count": len(issues), "items": issues}
result["summary"] = {
"file_count": len(dart_files),
"non_baseline_file_count": len(dart_files) - 1,
"files_with_issues": sum(1 for f in result["files"].values() if f["count"] > 0),
"total_issues": sum(f["count"] for f in result["files"].values()),
"most_common_keys": [{"key": k, "count": c} for k, c in global_counter.most_common(50)],
}
print(json.dumps(result, ensure_ascii=False, indent=2))
return 0
if __name__ == "__main__":
raise SystemExit(main())
Loading…
Cancel
Save