Browse Source

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

新增蓝牙扫描、工具调用、导航选择、OTA升级等模块的翻译键,覆盖多个语言文件。
添加i18n审计脚本以检测翻译质量问题,包括与基线文件相同但可能是英文的翻译。
引入允许列表文件以排除特定键的审计检查。
weicu
lxm 8 months ago
parent
commit
1ca7c370fd
  1. 152
      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. 252
      lib/core/translations/language/de_de.dart
  6. 501
      lib/core/translations/language/el_gr.dart
  7. 124
      lib/core/translations/language/en_us.dart
  8. 766
      lib/core/translations/language/es_es.dart
  9. 142
      lib/core/translations/language/et_ee.dart
  10. 543
      lib/core/translations/language/fa_ir.dart
  11. 102
      lib/core/translations/language/fi_fi.dart
  12. 854
      lib/core/translations/language/fr_fr.dart
  13. 169
      lib/core/translations/language/hi_in.dart
  14. 175
      lib/core/translations/language/hr_hr.dart
  15. 142
      lib/core/translations/language/hu_hu.dart
  16. 566
      lib/core/translations/language/id_id.dart
  17. 102
      lib/core/translations/language/is_is.dart
  18. 174
      lib/core/translations/language/it_it.dart
  19. 115
      lib/core/translations/language/ja_jp.dart
  20. 1037
      lib/core/translations/language/ko_kr.dart
  21. 169
      lib/core/translations/language/lt_lt.dart
  22. 703
      lib/core/translations/language/lv_lv.dart
  23. 549
      lib/core/translations/language/ms_my.dart
  24. 102
      lib/core/translations/language/nb_no.dart
  25. 167
      lib/core/translations/language/nl_nl.dart
  26. 190
      lib/core/translations/language/pl_pl.dart
  27. 152
      lib/core/translations/language/pt_pt.dart
  28. 174
      lib/core/translations/language/ro_ro.dart
  29. 136
      lib/core/translations/language/ru_ru.dart
  30. 142
      lib/core/translations/language/sk_sk.dart
  31. 148
      lib/core/translations/language/sl_si.dart
  32. 1145
      lib/core/translations/language/sr_rs.dart
  33. 100
      lib/core/translations/language/sv_se.dart
  34. 506
      lib/core/translations/language/th_th.dart
  35. 1023
      lib/core/translations/language/tl_ph.dart
  36. 563
      lib/core/translations/language/tr_tr.dart
  37. 673
      lib/core/translations/language/uk_ua.dart
  38. 1337
      lib/core/translations/language/vi_vn.dart
  39. 14
      lib/core/translations/language/zh_cn.dart
  40. 103
      lib/core/translations/language/zh_hk.dart
  41. 103
      lib/core/translations/language/zh_tw.dart
  42. 24
      tools/i18n_allowlist.json
  43. 201
      tools/i18n_audit.py

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

@ -1,5 +1,4 @@
const Map<String, String> arSA = {
// 通用
'continue': 'متابعة',
'confirm': 'تأكيد',
@ -130,8 +129,7 @@ const Map<String, String> arSA = {
"aiAssistantInfo":
"مستشار حصري على مدار 24 ساعة للإجابة على الأسئلة وتقديم الاقتراحات",
"interpretation": "الترجمة",
"simultaneousInterpretationInfo":
"ترجمة فورية لعدة لغات، سفر خالٍ من القلق",
"simultaneousInterpretationInfo": "ترجمة فورية لعدة لغات، سفر خالٍ من القلق",
"aiCompanion": "رفيق العائلة",
"aiCompanionInfo": "يفهمك ويقدم لك رفقة دافئة",
"homeSlogan": "تواصل مع العالم، أبعد من الصوت",
@ -167,6 +165,29 @@ const Map<String, String> arSA = {
'right': 'يمين',
'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": "بحث عن وظائف الذكاء الاصطناعي...",
"exploreSlogan": "سماعات ذكية، إمكانيات لا حصر لها",
@ -281,7 +302,8 @@ const Map<String, String> arSA = {
'errorInfoWithMessage': 'خطأ: @message',
'retest': 'إعادة الاختبار',
'paymentTestInstructionsTitle': 'التعليمات',
'paymentTestInstructionsContent': '1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة',
'paymentTestInstructionsContent':
'1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة',
'startingWechatPayment': 'جاري تشغيل WeChat Pay...',
'startingAlipayPayment': 'جاري تشغيل Alipay...',
'wechatPaymentSuccess': 'تم الدفع عبر WeChat Pay بنجاح!',
@ -495,15 +517,22 @@ const Map<String, String> arSA = {
'meetingRecordEndAndSave': 'إنهاء التسجيل وحفظه', // 结束录音并保存
'meetingRecordEndWithoutSave': 'إنهاء التسجيل دون حفظ', // 结束录音不保存
'meetingRecordContinueInBackground': 'متابعة التسجيل في الخلفية', // 后台继续录音
'meetingRecordStopTimeout': 'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试
'meetingRecordStopFailed': 'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试
'meetingRecordStopTimeout':
'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'التسجيل جارٍ', // 录音进行中
'meetingRecordRecordingNotificationBody': 'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用
'meetingRecordRecordingNotificationBody':
'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'الظهور فوق التطبيقات الأخرى', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc': 'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed': 'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'overlayPermissionTranslationDesc':
'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc':
'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'جاري النسخ...',
'summarizing': 'جاري التلخيص...',
'analyzing': 'جاري التحليل...',
@ -538,7 +567,8 @@ const Map<String, String> arSA = {
'editTemplate': 'تعديل القالب',
'createTemplate': 'إنشاء قالب',
'name': 'الاسم',
'templateContentHint': 'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته',
'templateContentHint':
'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته',
'inputNameHint': 'يرجى إدخال الاسم',
'inputDescHint': 'يرجى إدخال الوصف',
'custom': 'مخصص',
@ -813,7 +843,8 @@ const Map<String, String> arSA = {
"swipeUpForMore": "اسحب للأعلى لرؤية المزيد",
"callingTool": "أنا أساعدك، يرجى الانتظار!", // 正在帮您,请稍等!
"voice_interrupt": "مقاطعة صوتية", // 语音打断
'voice_interrupt_tip': 'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.',
'voice_interrupt_tip':
'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.',
// Agent模块 - 预设提示词
"presetMusic": "شغل بعض الموسيقى", // 来点音乐
@ -869,6 +900,13 @@ const Map<String, String> arSA = {
'نود معرفة سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.',
'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模块 - 音乐卡片
'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:',
'playList': 'قائمة التشغيل',
@ -889,6 +927,29 @@ const Map<String, String> arSA = {
"bicycling": "ركوب الدراجات",
"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模块 - 天气卡片
'weatherQuery': 'استعلام عن الطقس:',
'highest': 'الأعلى',
@ -960,8 +1021,18 @@ const Map<String, String> arSA = {
// 翻译模块 - 文本翻译
"languageDetectionFailed": "فشل اكتشاف اللغة",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'تعطيل النافذة العائمة',
'enableFloatingWindow': 'تمكين النافذة العائمة',
'permissionTip': 'تنبيه الأذونات',
'micPermissionRequiredForRecording': 'إذن الميكروفون مطلوب للتسجيل',
'deleteTranslationRecordError': 'خطأ في حذف سجل الترجمة: @error',
"translationFailed": "فشلت الترجمة",
"translating": "جارٍ الترجمة",
"translate": "ترجمة",
"pleaseInputText": "يرجى إدخال النص",
"inputTextToTranslate": "يرجى إدخال النص المراد ترجمته",
"textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف",
// 翻译模块 - 历史记录
@ -1228,7 +1299,8 @@ const Map<String, String> arSA = {
'native.notification.navigation.title': 'التنقل جارٍ', // 导航进行中
'native.notification.navigation.keepRunning':
'التنقل جارٍ، يرجى إبقاء التطبيق قيد التشغيل', // 正在导航中,请保持应用运行
'native.notification.bleAgent.running': 'المساعد الصوتي قيد التشغيل', // 语音助手正在运行
'native.notification.bleAgent.running':
'المساعد الصوتي قيد التشغيل', // 语音助手正在运行
'native.notification.audioRecording.recording':
'يتم التسجيل، اضغط للعودة إلى التطبيق', // 正在录音,点击返回应用
'native.notification.music.waiting': 'في انتظار التشغيل', // 等待播放
@ -1371,6 +1443,58 @@ const Map<String, String> arSA = {
"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": "لا توجد موسيقى", // 暂无音乐
"noPlayingMusic": "لا توجد موسيقى قيد التشغيل", // 暂无播放音乐

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

@ -167,6 +167,26 @@ const Map<String, String> bgBG = {
'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 функции...",
"exploreSlogan": "Интелигентни слушалки, безгранични възможности",
@ -563,20 +583,20 @@ const Map<String, String> bgBG = {
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'importingLocalRecordings': 'Импортиране на локални записи...',
'importFailed': 'Неуспешен импорт на файл: {filePath}, грешка: {error}',
'importSuccess': 'Успешно импортирани {count} локални записа',
'importError': 'Неуспешен импорт: {error}',
'pleaseSelectAudioFile': 'Моля, изберете аудио файл',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
'shareFailed': 'Неуспешно споделяне: {error}',
'fileProcessingFailed': 'Неуспешна обработка на файл: {filePath}, грешка: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Запази интелектуална карта',
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
'shareSuccess': 'Успешно споделяне',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
@ -612,9 +632,9 @@ const Map<String, String> bgBG = {
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'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).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
'Автоматично синхронизирайте записите си в облака. Можете да възпроизвеждате, управлявате и споделяте записи чрез всяко приложение VOITRANS или VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Синхронизирай с VOITRANS APP',
'transcriptionRecord': 'Запис на транскрипция',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Записи на транскрипции',
@ -701,7 +721,7 @@ const Map<String, String> bgBG = {
'purchase': 'Покупка',
// Meeting模块 - 录音语言
'recordLanguage': 'Recording Language',
'recordLanguage': 'Език на записа',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
@ -731,7 +751,7 @@ const Map<String, String> bgBG = {
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"Наградата за първо свързване на устройство е издадена. Натиснете ОК за затваряне.",
"joinDevice": "Свързано устройство:",
"accountId": "ID на акаунта:",
"systemSetting": "Системни настройки",
@ -883,6 +903,13 @@ const Map<String, String> bgBG = {
'Искаме да знаем причината за доклада ви, можете да опишете проблема, с който сте се сблъскали.',
'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模块 - 音乐卡片
'recommendedMusic': 'Ето някои препоръчани музики:',
'playList': 'Плейлист',
@ -903,6 +930,28 @@ const Map<String, String> bgBG = {
"bicycling": "Колоездене",
"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模块 - 天气卡片
'weatherQuery': 'Заявка за времето:',
'highest': 'Най-висока',
@ -975,8 +1024,18 @@ const Map<String, String> bgBG = {
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Неуспешно откриване на езика",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Изключи плаващ прозорец',
'enableFloatingWindow': 'Включи плаващ прозорец',
'permissionTip': 'Съвет за разрешение',
'micPermissionRequiredForRecording': 'За записване е необходимо разрешение за микрофон',
'deleteTranslationRecordError': 'Грешка при изтриване на запис за превод: @error',
"translationFailed": "Неуспешен превод",
"translating": "Превеждане",
"translate": "Преведи",
"pleaseInputText": "Моля въведете текст",
"inputTextToTranslate": "Моля, въведете текста за превод",
"textTooLong": "Текстът е твърде дълъг, макс 5000 символа",
// 翻译模块 - 历史记录
@ -1143,9 +1202,9 @@ const Map<String, String> bgBG = {
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'Нуждаем се от достъп до разрешения за съхранение, за да можете да избирате и качвате аудио файлове.',
'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':
'Неуспешно получаване на състоянието на разрешенията',
'communicationPermissions': 'Разрешения за комуникация',
@ -1414,6 +1473,49 @@ const Map<String, String> bgBG = {
"removeEarbudsEnsureBattery":
"Извадете двете слушалки и се уверете, че батерията на двете е над 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": "Няма музика", // 暂无音乐
"noPlayingMusic": "Няма възпроизвеждаща се музика", // 暂无播放音乐

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

@ -166,6 +166,26 @@ const Map<String, String> csCZ = {
'right': 'Pravý',
'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...",
"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.',
'confirmInput': 'Potvrdit vstup',
'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í?',
'guideWeatherSend': 'Lily nahlásí počasí v reálném čase',
'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',
'guideMusicSend': 'Lily pro vás najde hudbu',
'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',
'guideNavSend': 'Lily naplánuje trasu',
'guideNavEnd': 'Navigace nastavena – zkuste jiné příkazy',
'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',
'guideMeetingSend': 'Lily vytvoří připomínku schůzky',
'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ě',
'guidePhoneSend': 'Lily uskuteční hovor',
'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ů',
'guideSmsSend': 'Lily odešle zprávu',
'guideSmsEnd': 'Zpráva odeslána – hlasové ovládání je pohodlné',
@ -546,30 +566,30 @@ const Map<String, String> csCZ = {
'custom': 'Vlastní',
'pleaseEnter': 'Prosím zadejte',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'recordingLanguage': 'Jazyk nahrávání',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'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模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'importingLocalRecordings': 'Importování místních nahrávek...',
'importFailed': 'Import souboru selhal: {filePath}, chyba: {error}',
'importSuccess': 'Úspěšně importováno {count} místních nahrávek',
'importError': 'Import selhal: {error}',
'pleaseSelectAudioFile': 'Vyberte prosím zvukový soubor',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
'shareFailed': 'Sdílení selhalo: {error}',
'fileProcessingFailed': 'Zpracování souboru selhalo: {filePath}, chyba: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Uložit myšlenkovou mapu',
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
'shareSuccess': 'Sdílení úspěšné',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
@ -605,9 +625,9 @@ const Map<String, String> csCZ = {
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'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',
'transcriptionRecord': 'Transcription Record',
'transcriptionRecord': 'Záznam přepisu',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Záznamy přepisů',
@ -693,7 +713,7 @@ const Map<String, String> csCZ = {
'purchase': 'Purchase',
// Meeting模块 - 录音语言
'recordLanguage': 'Recording Language',
'recordLanguage': 'Jazyk nahrávání',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
@ -723,7 +743,7 @@ const Map<String, String> csCZ = {
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"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í:",
"accountId": "ID účtu:",
"systemSetting": "Systémová nastavení",
@ -783,7 +803,7 @@ const Map<String, String> csCZ = {
"noMacAddress": "Žádná MAC adresa",
"licenseCode": "Licenční kód",
"confirmUnbind": "Potvrdit odpojení",
"confirmUnbindMessage": "Opravdu chcete odpojit zařízení „{deviceName}“?",
"confirmUnbindMessage": 'Opravdu chcete odpojit zařízení „{deviceName}"?',
"confirmUnbindAction": "Potvrdit odpojení",
// 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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Zde jsou některé doporučené hudby:',
'playList': 'Playlist',
@ -892,6 +919,28 @@ const Map<String, String> csCZ = {
"bicycling": "Jízda na kole",
"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模块 - 天气卡片
'weatherQuery': 'Dotaz na počasí:',
'highest': 'Nejvyšší',
@ -964,8 +1013,18 @@ const Map<String, String> csCZ = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Přeložit",
"pleaseInputText": "Zadejte prosím text",
"inputTextToTranslate": "Zadejte text k překladu",
"textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků",
// 翻译模块 - 历史记录
@ -1125,9 +1184,9 @@ const Map<String, String> csCZ = {
// 权限模块
'meetingStoragePermission': 'Storage',
'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':
'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',
'communicationPermissions': 'Komunikační oprávnění',
'bluetoothPermissions': 'Oprávnění Bluetooth',
@ -1390,6 +1449,49 @@ const Map<String, String> csCZ = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"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',
'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...",
"exploreSlogan": "Smarte øretelefoner, uendelige muligheder",
@ -726,7 +746,7 @@ const Map<String, String> daDK = {
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"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:",
"accountId": "Konto-ID:",
"systemSetting": "Systemindstillinger",
@ -776,19 +796,19 @@ const Map<String, String> daDK = {
"loading": "Indlæser...",
// 设备管理模块
"deviceTypeUnknown": "Unknown Device",
"deviceTypeUnknown": "Ukendt enhed",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartVoiceRecorder": "Smart stemmeoptager",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Afbind",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noDevicesBound": "Ingen enheder bundet endnu",
"pleaseBindDeviceFirst": "Bind venligst en enhed først for at administrere",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"Er du sikker på, at du vil afbinde enheden \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
// Agent模块 - 主界面
@ -819,7 +839,7 @@ const Map<String, String> daDK = {
"loadMoreMessages": "Indlæs flere beskeder...",
"loadFailedClickRetry": "Indlæsning mislykkedes, klik for at prøve igen",
"swipeUpForMore": "Stryg op for mere",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"callingTool": "Jeg hjælper dig, vent venligst!", // 正在帮您,请稍等!
"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.',
@ -830,7 +850,7 @@ const Map<String, String> daDK = {
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"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?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"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å.',
'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模块 - 音乐卡片
'recommendedMusic': 'Her er nogle anbefalede musikker:',
'playList': 'Afspilningsliste',
@ -897,6 +924,28 @@ const Map<String, String> daDK = {
"bicycling": "Cykling",
"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模块 - 天气卡片
'weatherQuery': 'Vejrforespørgsel:',
'highest': 'Højeste',
@ -950,8 +999,8 @@ const Map<String, String> daDK = {
"strongWind": "Kraftig vind",
// 翻译模块 - 中间层
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
"pictureTranslation": "Billedoversættelse",
"textTranslation": "Tekstoversættelse",
// 翻译模块 - 主页
"translationHistory": "Oversættelseshistorik",
@ -964,18 +1013,28 @@ const Map<String, String> daDK = {
"me": "Me",
"counterPart": "Counterpart",
"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", // 自动检测
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"languageDetectionFailed": "Sprogregistrering mislykkedes",
// 翻译模块 - 悬浮窗与权限
'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",
// 翻译模块 - 历史记录
"noTranslationHistory": "Ingen oversættelseshistorik",
"historyRecords": "History Records",
"historyRecords": "Historik",
"clearResults": "Clear Results",
"clearHistory": "Ryd historik",
"clearHistoryConfirm":
@ -988,12 +1047,12 @@ const Map<String, String> daDK = {
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"translationResult": "Oversættelsesresultat",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"translatedImagePreview": "Forhåndsvisning af oversat billede",
"translatedImageLoadFailed": "Kunne ikke indlæse oversat billede",
"pleaseSelectImage": "Vælg venligst et billede",
"imageLoadFailed": "Billedindlæsning mislykkedes",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
@ -1002,38 +1061,38 @@ const Map<String, String> daDK = {
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"pleaseSelectImageToStart": "Vælg venligst et billede for at starte",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"callingImageTranslateService": "Kalder billedoversættelsestjeneste...",
"savingRecord": "Gemmer optegnelse",
"savingTranslationResult": "Gemmer oversættelsesresultat...",
"translationCompleted": "Oversættelse fuldført",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"processingFailed": "Behandling mislykkedes",
"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",
"imageTooLargeHint":
"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":
"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":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"Billedoversættelses-API undtagelse. Kontroller netværket og prøv igen",
"permissionRequired": "Tilladelse påkrævet",
"cameraPermissionRequired": "Kameratilladelse kræves for at tage billeder",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"Fotoalbumtilladelse kræves for at vælge billeder",
"translationDetails": "Oversættelsesdetaljer",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"translationTime": "Oversættelsestid",
"shareInDevelopment": "Sharing feature under development",
// 翻译模块 - 录音文件
@ -1391,6 +1450,49 @@ const Map<String, String> daDK = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Ingen musik afspilles", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> deDE = {
// 通用
'continue': 'Fortfahren',
'confirm': 'Bestätigen',
@ -19,11 +18,11 @@ const Map<String, String> deDE = {
"unknownError": "Unbekannter Fehler",
"asrConnectionFailed":
"Verbindung zum Spracherkennungsdienst fehlgeschlagen. Bitte Netzwerk prüfen oder es später erneut versuchen.",
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
"justNow": "Gerade eben",
"minutesAgo": "vor @minutes Minuten",
"yesterday": "Gestern",
"daysAgo": "vor @days Tagen",
"hoursAgo": "vor @hours Stunden",
// 启动页
"slogan": "Die Welt verbinden, jenseits der Stimme",
@ -170,6 +169,30 @@ const Map<String, String> deDE = {
'right': 'Rechts',
'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...",
"exploreSlogan": "Intelligente Kopfhörer, unendliche Möglichkeiten",
@ -249,7 +272,8 @@ const Map<String, String> deDE = {
'paymentSuccess': 'Zahlung erfolgreich',
'paymentFailed': 'Zahlung fehlgeschlagen',
'gotIt': 'Verstanden',
'paymentFailedTryAgain': 'Zahlung fehlgeschlagen. Bitte versuchen Sie es erneut.',
'paymentFailedTryAgain':
'Zahlung fehlgeschlagen. Bitte versuchen Sie es erneut.',
'selectPaymentMethod': 'Zahlungsmethode auswählen',
'wechatPay': 'WeChat Pay',
'alipayPay': 'Alipay',
@ -264,12 +288,16 @@ const Map<String, String> deDE = {
'paymentException': 'Zahlungsausnahme',
'paymentLaunchFailed': 'Zahlungsstart fehlgeschlagen',
'paymentExceptionWithError': 'Zahlungsausnahme: @error',
'paymentProcessingCheckLater': 'Ihre Bestellung wird bearbeitet. Bitte überprüfen Sie es später.',
'paymentResultQueryException': 'Abfrage des Zahlungsergebnisses fehlgeschlagen: @error',
'orderConfirmedQuotaRefreshed': 'Bestellung bestätigt. Ihr Kontingent wurde aktualisiert.',
'paymentProcessingCheckLater':
'Ihre Bestellung wird bearbeitet. Bitte überprüfen Sie es später.',
'paymentResultQueryException':
'Abfrage des Zahlungsergebnisses fehlgeschlagen: @error',
'orderConfirmedQuotaRefreshed':
'Bestellung bestätigt. Ihr Kontingent wurde aktualisiert.',
'paymentCompletedConfirming': 'Zahlung abgeschlossen. Bestätigung läuft…',
'paymentCancelled': 'Zahlung abgebrochen',
'paypalOpenedCompleteInBrowser': 'PayPal geöffnet. Bitte schließen Sie die Zahlung in Ihrem Browser ab.',
'paypalOpenedCompleteInBrowser':
'PayPal geöffnet. Bitte schließen Sie die Zahlung in Ihrem Browser ab.',
'paypalOpenFailed': 'PayPal-Zahlungsseite konnte nicht geöffnet werden',
'paymentTestTitle': 'Zahlungstest',
'paymentTestOrderInfo': 'Testbestellungsinformationen',
@ -286,7 +314,8 @@ const Map<String, String> deDE = {
'errorInfoWithMessage': 'Fehler: @message',
'retest': 'Erneut testen',
'paymentTestInstructionsTitle': 'Anleitung',
'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',
'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',
'startingWechatPayment': 'WeChat Pay wird gestartet...',
'startingAlipayPayment': 'Alipay wird gestartet...',
'wechatPaymentSuccess': 'WeChat Pay-Zahlung erfolgreich!',
@ -300,12 +329,12 @@ const Map<String, String> deDE = {
'alipayPaymentLaunchFailed': 'Alipay konnte nicht gestartet werden',
'cannotLaunchAlipayPayment': 'Alipay kann nicht gestartet werden',
'alipayPaymentException': 'Alipay-Ausnahme',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "Nicht genügend Punkte",
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
'Unzureichendes Guthaben, bitte gehen Sie zur entsprechenden Aufladeseite, um aufzuladen.',
"recharge": 'Aufladen',
"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商品页
'musicAndRecommendation': 'Musik & Empfehlung',
@ -314,26 +343,28 @@ const Map<String, String> deDE = {
'newsInformation': 'Nachrichten',
'communicationAssistant': 'Kommunikationsassistent',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Längeres Gesprächskontingent, mehr Tool-Aufrufe, längerer Kontext.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Geeignet für Agent-Q&A, Zusammenfassungen, Analysen und Aufgaben.',
'musicSearchPlaybackControl':
'Musikbibliothek durchsuchen und Wiedergabe steuern',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'Smarte Playlists und Empfehlungen ähnlicher Songs',
'routePlanningAndCongestionAvoidance': 'Routenplanung und Stauvermeidung',
'voiceBroadcastAndWaypoints': 'Sprachansagen und Zwischenziele',
'realTimeWeatherForecast': 'Echtzeit-Wetter und Vorhersage',
'clothingAdviceAndTravelReminders': 'Kleidungstipps und Reisehinweise',
'poiSearchFoodGasParking': 'POI-Suche: Essen / Tanken / Parken',
'ratingsHoursAndDirectRoutes':
'Bewertungen, Öffnungszeiten und direkte Routen',
'hotNewsAndTopicOverview': 'Top-Nachrichten und Themenübersicht',
'longArticleSummariesAndKeyPoints':
'Zusammenfassungen langer Artikel und Kernpunkte',
'helpCallAndSMS': 'Hilfe bei Anrufen und SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Vorlagen-Nachrichten und Termin-Erinnerungen',
'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',
@ -363,16 +394,16 @@ const Map<String, String> deDE = {
'Audio recording, transcription, keyword search, and auto summary.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingAutoRecording': 'Automatische Aufnahme und Segmentierung',
'meetingSpeakerTagging': 'Sprecherkennzeichnung',
'meetingLongAudioTranscription': 'Transkription langer Audios',
'meetingKeyPointSummary': 'Kernpunkte extrahieren',
'meetingTopicNameSearch': 'Suche nach Thema/Name',
'meetingTimelineJump': 'Sprung in der Timeline',
'meetingExportSummary': 'Protokoll exportieren',
'meetingMultiPlatformShare': 'Plattformübergreifend teilen',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
'In ruhiger Umgebung verwenden; Leistung hängt von Mikrofon und Netzwerk ab.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Übersicht der Vorteile',
@ -558,7 +589,8 @@ const Map<String, String> deDE = {
'editTemplate': 'Vorlage bearbeiten',
'createTemplate': 'Vorlage erstellen',
'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':
'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',
'inputNameHint': 'Bitte Namen eingeben',
'inputDescHint': 'Bitte Beschreibung eingeben',
'custom': 'Benutzerdefiniert',
@ -720,9 +752,12 @@ const Map<String, String> deDE = {
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unbekannte Sprache',
'analysisFailed': 'Analyse fehlgeschlagen, bitte versuchen Sie es später erneut',
'transcriptionFailed': 'Transkription fehlgeschlagen, bitte versuchen Sie es später erneut',
'summaryFailed': 'Zusammenfassung fehlgeschlagen, bitte versuchen Sie es später erneut',
'analysisFailed':
'Analyse fehlgeschlagen, bitte versuchen Sie es später erneut',
'transcriptionFailed':
'Transkription fehlgeschlagen, bitte versuchen Sie es später erneut',
'summaryFailed':
'Zusammenfassung fehlgeschlagen, bitte versuchen Sie es später erneut',
'summaryFailedShort': 'Zusammenfassung fehlgeschlagen',
'transcriptionFailedShort': 'Transkription fehlgeschlagen',
@ -743,7 +778,7 @@ const Map<String, String> deDE = {
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"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:",
"accountId": "Konto-ID:",
"systemSetting": "Systemeinstellungen",
@ -839,7 +874,8 @@ const Map<String, String> deDE = {
"swipeUpForMore": "Nach oben wischen für mehr",
"callingTool": "Ich helfe Ihnen, bitte warten!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Hier sind einige empfohlene Musik:',
'playList': 'Wiedergabeliste',
@ -917,6 +960,30 @@ const Map<String, String> deDE = {
"bicycling": "Radfahren",
"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模块 - 天气卡片
'weatherQuery': 'Wetterabfrage:',
'highest': 'Höchste',
@ -989,8 +1056,20 @@ const Map<String, String> deDE = {
// 翻译模块 - 文本翻译
"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",
"translating": "Wird uebersetzt",
"translate": "Uebersetzen",
"pleaseInputText": "Bitte Text eingeben",
"inputTextToTranslate": "Bitte geben Sie den zu übersetzenden Text ein",
"textTooLong": "Text zu lang, max. 5000 Zeichen",
// 翻译模块 - 历史记录
@ -1365,17 +1444,18 @@ const Map<String, String> deDE = {
'bleConnectionFailed': 'BLE-Verbindung fehlgeschlagen',
'deviceAuthorizationFailedCheckCode':
'Geräteautorisierung fehlgeschlagen, bitte überprüfen Sie den Autorisierungscode',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideTitle':
'Manuelle Bluetooth-Aktivierung erforderlich', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Bitte folgen Sie diesen Schritten:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'Bluetooth aktivieren: Einstellungen → Bluetooth → Einschalten', // 开启蓝牙:设置 → 蓝牙 → 开启
'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':
'Return to app to continue pairing process', // 返回应用继续配对流程
'Zur App zurückkehren, um den Kopplungsvorgang fortzusetzen', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
'Tipp: Sie können das Bluetooth-Symbol im Kontrollzentrum auch lange drücken, um schnell zu den Bluetooth-Einstellungen zu gelangen', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'Verstanden', // 我知道了
// 配对模块 - 绑定奖励
"firstBindRewardTitle": "Willkommensbonus",
@ -1416,13 +1496,14 @@ const Map<String, String> deDE = {
"connectionFailed": "Verbindung fehlgeschlagen",
"retryConnection": "Verbindung wiederholen",
"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":
"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":
"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":
"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":
"Bitte halten Sie das Gerät verbunden, schließen Sie die App nicht",
"doNotDisconnect": "Nicht trennen",
@ -1431,6 +1512,61 @@ const Map<String, String> deDE = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Keine Musik wird abgespielt", // 暂无播放音乐

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

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

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

@ -1,5 +1,4 @@
const Map<String, String> enUS = {
// 通用
'continue': 'Continue',
'confirm': 'Confirm',
@ -129,7 +128,8 @@ const Map<String, String> enUS = {
"aiAssistant": "AI Assistant",
"aiAssistantInfo": "24/7 personal consultant for questions and advice",
"interpretation": "Translation",
"simultaneousInterpretationInfo": "Real-time translation for multiple languages",
"simultaneousInterpretationInfo":
"Real-time translation for multiple languages",
"aiCompanion": "Parent-child bonding",
"aiCompanionInfo": "Understands you and provides warm companionship",
"homeSlogan": "Connect the World, Beyond Sound",
@ -166,6 +166,29 @@ const Map<String, String> enUS = {
'right': 'Right',
'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...",
"exploreSlogan": "Smart Earbuds, Infinite Possibilities",
@ -726,7 +749,8 @@ const Map<String, String> enUS = {
'playerNotReady': 'Audio player is not ready, please wait',
'playFailed': 'Playback failed',
'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',
// 设置页
@ -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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Here are some recommended music:',
'playList': 'Playlist',
@ -912,6 +943,29 @@ const Map<String, String> enUS = {
// Agent模块 - 天气卡片
'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',
'lowest': 'Low',
'futureForecast': 'Future Forecast',
@ -982,7 +1036,18 @@ const Map<String, String> enUS = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
@ -1402,6 +1467,59 @@ const Map<String, String> enUS = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "No Playing Music", // 暂无播放音乐

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

File diff suppressed because it is too large

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

@ -1,5 +1,4 @@
const Map<String, String> etEE = {
// 通用
'continue': 'Jätka',
'confirm': 'Kinnita',
@ -164,6 +163,29 @@ const Map<String, String> etEE = {
'right': 'Parem',
'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...",
"exploreSlogan": "Nutikad kõrvaklapid, lõputud võimalused",
@ -257,12 +279,15 @@ const Map<String, String> etEE = {
'paymentException': 'Makse erand',
'paymentLaunchFailed': 'Makse käivitamine ebaõnnestus',
'paymentExceptionWithError': 'Makse erand: @error',
'paymentProcessingCheckLater': 'Sinu tellimust töödeldakse. Palun kontrolli hiljem.',
'paymentProcessingCheckLater':
'Sinu tellimust töödeldakse. Palun kontrolli hiljem.',
'paymentResultQueryException': 'Makse tulemuse päring ebaõnnestus: @error',
'orderConfirmedQuotaRefreshed': 'Tellimus kinnitatud. Sinu kvoot on värskendatud.',
'orderConfirmedQuotaRefreshed':
'Tellimus kinnitatud. Sinu kvoot on värskendatud.',
'paymentCompletedConfirming': 'Makse sooritatud. Kinnitamine…',
'paymentCancelled': 'Makse tühistatud',
'paypalOpenedCompleteInBrowser': 'PayPal avatud. Palun vii makse lõpule brauseris.',
'paypalOpenedCompleteInBrowser':
'PayPal avatud. Palun vii makse lõpule brauseris.',
'paypalOpenFailed': 'PayPal makseleht ei ava',
'paymentTestTitle': 'Makse test',
'paymentTestOrderInfo': 'Testtellimuse info',
@ -279,7 +304,8 @@ const Map<String, String> etEE = {
'errorInfoWithMessage': 'Viga: @message',
'retest': 'Kordustest',
'paymentTestInstructionsTitle': 'Juhised',
'paymentTestInstructionsContent': '1. Vali testisumma (soovitatud: ¥0,01)\n2. Klõpsa maksenupul alustamiseks\n3. Vii makse lõpule makserakenduses\n4. Naase tulemuse kontrollimiseks',
'paymentTestInstructionsContent':
'1. Vali testisumma (soovitatud: ¥0,01)\n2. Klõpsa maksenupul alustamiseks\n3. Vii makse lõpule makserakenduses\n4. Naase tulemuse kontrollimiseks',
'startingWechatPayment': 'WeChat Pay käivitamine...',
'startingAlipayPayment': 'Alipay käivitamine...',
'wechatPaymentSuccess': 'WeChat Pay edukas!',
@ -544,7 +570,8 @@ const Map<String, String> etEE = {
'editTemplate': 'Muuda malli',
'createTemplate': 'Loo mall',
'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':
'Palun sisesta malli sisu! Vihje: Klõpsa ülaloleval AI nupul, et kiiresti genereerida malli sisu sisestatud nime ja kirjelduse põhjal',
'inputNameHint': 'Palun sisesta nimi',
'inputDescHint': 'Palun sisesta kirjeldus',
'custom': 'Kohandatud',
@ -820,7 +847,8 @@ const Map<String, String> etEE = {
"swipeUpForMore": "Libista üles rohkema jaoks",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Siin on mõned soovitatud muusikad:',
'playList': 'Esitusloend',
@ -896,6 +931,29 @@ const Map<String, String> etEE = {
"bicycling": "Jalgrattasõit",
"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模块 - 天气卡片
'weatherQuery': 'Ilma päring:',
'highest': 'Kõrgeim',
@ -966,8 +1024,19 @@ const Map<String, String> etEE = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Palun sisestage tõlgitav tekst",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1238,9 +1307,11 @@ const Map<String, String> etEE = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigeerimine käib',
'native.notification.navigation.keepRunning': 'Navigeerimine, hoia rakendust avatuna',
'native.notification.navigation.keepRunning':
'Navigeerimine, hoia rakendust avatuna',
'native.notification.bleAgent.running': 'Hääleassistendi agent töötab',
'native.notification.audioRecording.recording': 'Heli salvestamine, puuduta rakendusse naasmiseks',
'native.notification.audioRecording.recording':
'Heli salvestamine, puuduta rakendusse naasmiseks',
'native.notification.music.waiting': 'Ootab esitamist',
'native.notification.music.previous': 'Eelmine',
'native.notification.music.next': 'Järgmine',
@ -1380,6 +1451,59 @@ const Map<String, String> etEE = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Muusikat ei esitata", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> faIR = {
// 通用
'continue': 'ادامه',
'confirm': 'تأیید',
@ -166,6 +165,29 @@ const Map<String, String> faIR = {
'right': 'راست',
'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": "جستجوی ویژگی‌های هوش مصنوعی...",
"exploreSlogan": "ایربادهای هوشمند، امکانات بی‌پایان",
@ -191,55 +213,55 @@ const Map<String, String> faIR = {
"scene": "سناریوها",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed",
"aiChat": "چت هوش مصنوعی",
"translationStats": "آمار ترجمه",
"meetingStats": "آمار جلسات",
"today": "امروز",
"thisWeek": "این هفته",
"thisMonth": "این ماه",
"history": "تاریخچه",
"currentSessionStats": "آمار جلسه فعلی",
"translationCount": "تعداد ترجمه‌ها",
"sessionDuration": "مدت جلسه",
"characters": "کاراکترها",
"recordingDuration": "مدت ضبط",
"totalApiCalls": "مجموع فراخوانی‌های API",
"sessionCount": "تعداد جلسات",
"totalCharacters": "مجموع کاراکترها",
"apiCallStats": "آمار فراخوانی API",
"translationApi": "API ترجمه",
"asr": "تشخیص گفتار",
"tts": "تبدیل متن به گفتار",
"dataVolumeStats": "آمار حجم داده",
"sourceTextCharacters": "کاراکترهای متن مبدأ",
"ttsTextCharacters": "کاراکترهای متن تبدیل به گفتار",
"effectiveAudioDuration": "مدت صوتی مؤثر",
"totalSessionDuration": "مجموع مدت جلسات",
"costStats": "آمار هزینه",
"estimatedCost": "هزینه تخمینی",
"dailyCostThreshold": "سقف هزینه روزانه",
"monthlyCostThreshold": "سقف هزینه ماهانه",
"usageBehaviorStats": "آمار رفتار استفاده",
"mostUsedLanguagePair": "پرکاربردترین جفت زبانی",
"mostUsedMode": "پرکاربردترین حالت",
"asrApiCalls": "فراخوانی‌های تشخیص گفتار",
"totalAudioDuration": "مجموع مدت صوتی",
"audioFileSize": "حجم فایل صوتی",
"transcriptBytes": "حجم متن رونویسی",
"loadFailed": "بارگذاری ناموفق",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"بارگذاری آمار ناموفق بود. لطفاً بعداً دوباره تلاش کنید.",
"cleanupComplete": "پاکسازی کامل شد",
"cleanedOldData": "داده‌های قدیمی‌تر از ۹۰ روز پاک شد",
"exportFeature": "قابلیت خروجی",
"exportInDevelopment": "خروجی داده‌ها در حال توسعه است",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'بسته‌های موجود',
'remainingQuota': 'سهمیه باقی‌مانده',
'totalQuota': 'سهمیه کل',
'remaining': 'باقی‌مانده',
'featureDescription': 'توضیحات ویژگی',
'paymentSuccess': 'پرداخت موفق',
'paymentFailed': 'پرداخت ناموفق',
'gotIt': 'متوجه شدم',
@ -258,12 +280,14 @@ const Map<String, String> faIR = {
'paymentException': 'استثنای پرداخت',
'paymentLaunchFailed': 'راه‌اندازی پرداخت ناموفق بود',
'paymentExceptionWithError': 'استثنای پرداخت: @error',
'paymentProcessingCheckLater': 'سفارش شما در حال پردازش است. لطفاً بعداً بررسی کنید.',
'paymentProcessingCheckLater':
'سفارش شما در حال پردازش است. لطفاً بعداً بررسی کنید.',
'paymentResultQueryException': 'استعلام نتیجه پرداخت ناموفق بود: @error',
'orderConfirmedQuotaRefreshed': 'سفارش تأیید شد. سهمیه شما به‌روزرسانی شد.',
'paymentCompletedConfirming': 'پرداخت انجام شد. در حال تأیید…',
'paymentCancelled': 'پرداخت لغو شد',
'paypalOpenedCompleteInBrowser': 'PayPal باز شد. لطفاً پرداخت را در مرورگر خود تکمیل کنید.',
'paypalOpenedCompleteInBrowser':
'PayPal باز شد. لطفاً پرداخت را در مرورگر خود تکمیل کنید.',
'paypalOpenFailed': 'امکان باز کردن صفحه پرداخت PayPal وجود ندارد',
'paymentTestTitle': 'تست پرداخت',
'paymentTestOrderInfo': 'اطلاعات سفارش آزمایشی',
@ -280,7 +304,8 @@ const Map<String, String> faIR = {
'errorInfoWithMessage': 'خطا: @message',
'retest': 'آزمایش مجدد',
'paymentTestInstructionsTitle': 'راهنما',
'paymentTestInstructionsContent': '1. یک مبلغ تست انتخاب کنید (پیشنهاد: ¥0.01)\n2. برای شروع روی دکمه پرداخت کلیک کنید\n3. پرداخت را در اپلیکیشن پرداخت تکمیل کنید\n4. برای بررسی نتیجه بازگردید',
'paymentTestInstructionsContent':
'1. یک مبلغ تست انتخاب کنید (پیشنهاد: ¥0.01)\n2. برای شروع روی دکمه پرداخت کلیک کنید\n3. پرداخت را در اپلیکیشن پرداخت تکمیل کنید\n4. برای بررسی نتیجه بازگردید',
'startingWechatPayment': 'در حال راه‌اندازی WeChat Pay...',
'startingAlipayPayment': 'در حال راه‌اندازی Alipay...',
'wechatPaymentSuccess': 'WeChat Pay موفق بود!',
@ -294,157 +319,154 @@ const Map<String, String> faIR = {
'alipayPaymentLaunchFailed': 'راه‌اندازی Alipay ناموفق بود',
'cannotLaunchAlipayPayment': 'امکان راه‌اندازی Alipay وجود ندارد',
'alipayPaymentException': 'استثنای Alipay',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "اعتبار ناکافی",
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
'موجودی ناکافی است، لطفاً به صفحه شارژ مربوطه بروید و شارژ کنید.',
"recharge": 'رفتن به شارژ',
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
'عضویت هوش مصنوعی منقضی شده است، لطفاً به صفحه شارژ عضویت بروید و تمدید کنید.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'موسیقی و توصیه‌ها',
'navigationAndRoutes': 'مسیریابی و مسیرها',
'nearbySearch': 'جستجوی نزدیک',
'newsInformation': 'اخبار',
'communicationAssistant': 'دستیار ارتباطی',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'سهمیه مکالمه بیشتر، فراخوانی ابزار بیشتر، طول متن گسترده‌تر.',
'aiHeaderDesc2': 'مناسب برای پرسش و پاسخ، خلاصه‌سازی، تحلیل و اجرای وظایف.',
'musicSearchPlaybackControl': 'جستجوی کتابخانه موسیقی و کنترل پخش',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'لیست پخش هوشمند و توصیه آهنگ‌های مشابه',
'routePlanningAndCongestionAvoidance': 'برنامه‌ریزی مسیر و اجتناب از ترافیک',
'voiceBroadcastAndWaypoints': 'راهنمای صوتی و تنظیمات نقاط مسیر',
'realTimeWeatherForecast': 'آب و هوای بلادرنگ و پیش‌بینی',
'clothingAdviceAndTravelReminders': 'توصیه پوشاک و یادآوری‌های سفر',
'poiSearchFoodGasParking': 'جستجوی مکان: غذا / پمپ بنزین / پارکینگ',
'ratingsHoursAndDirectRoutes': 'امتیازات، ساعات کاری و مسیریابی مستقیم',
'hotNewsAndTopicOverview': 'اخبار داغ و مرور موضوعات',
'longArticleSummariesAndKeyPoints': 'خلاصه مقالات طولانی و نکات کلیدی',
'helpCallAndSMS': 'کمک در تماس و پیامک',
'templatedMessagesAndScheduleReminders': 'پیام‌های الگو و یادآوری‌های برنامه',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
'ویژگی‌ها به مجوزهای دستگاه، در دسترس بودن سرویس و شرایط شبکه بستگی دارند.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'realtimeTranscription': 'رونویسی بلادرنگ',
'sceneLexicon': 'واژه‌نامه سناریویی',
'subtitleDisplay': 'زیرنویس‌ها',
'transHeaderDesc1': 'ترجمه همزمان بلادرنگ و ترجمه متن با صدای کم‌تأخیر.',
'transHeaderDesc2': 'مناسب برای سفر، تجارت، سخنرانی و آموزش.',
'translateZhEn': 'ترجمه چینی-انگلیسی',
'lowLatencyVoiceBroadcast': 'پخش صوتی کم‌تأخیر',
'multiLangTextTranslation': 'ترجمه متن چندزبانه',
'termOptimizationContextPreserve': 'بهینه‌سازی اصطلاحات و حفظ زمینه',
'lexiconTourBusinessLife': 'واژه‌نامه‌های سفر/تجارت/زندگی',
'personalVocabularyMemory': 'حافظه واژگان شخصی',
'conversationSubtitleLargeText': 'زیرنویس مکالمه / حالت متن بزرگ',
'colorHighContrast': 'کنتراست رنگ بالا',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'عملکرد ترجمه به میکروفون، تأخیر شبکه و نویز محیط بستگی دارد.',
// 商品模块 - 会议商品页
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'meetingRecording': 'ضبط جلسه',
'transcriptionAndSummary': 'رونویسی و خلاصه',
'keywordSearch': 'جستجوی کلمات کلیدی',
'collaborationSharing': 'همکاری و اشتراک‌گذاری',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'ضبط صدا، رونویسی، جستجوی کلمات کلیدی و خلاصه خودکار برای افزایش بهره‌وری جلسات.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'مناسب برای جلسات کاری، یادداشت کلاس و صورت‌جلسه مصاحبه.',
'meetingAutoRecording': 'ضبط خودکار و بخش‌بندی',
'meetingSpeakerTagging': 'برچسب‌گذاری گوینده',
'meetingLongAudioTranscription': 'رونویسی صوتی طولانی',
'meetingKeyPointSummary': 'استخراج نکات کلیدی',
'meetingTopicNameSearch': 'جستجو بر اساس موضوع/نام',
'meetingTimelineJump': 'پرش در خط زمانی',
'meetingExportSummary': 'خروجی صورت‌جلسه',
'meetingMultiPlatformShare': 'اشتراک‌گذاری بین پلتفرم‌ها',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
'در محیط آرام استفاده کنید؛ عملکرد به میکروفون و شبکه بستگی دارد.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'مرور مزایا',
'higherQuota': 'سهمیه استفاده بیشتر',
'lowerUnitPrice': 'قیمت واحد کمتر',
'priorityService': 'خدمات اولویت‌دار',
'exclusiveSupportChannel': 'کانال پشتیبانی اختصاصی',
'fastResponse': 'پاسخ سریع به مشکلات',
'eventsAndDiscounts': 'رویدادها و تخفیف‌ها',
'memberExclusiveEvents': 'رویدادهای ویژه اعضا',
'longTermDiscountPlan': 'طرح تخفیف بلندمدت',
'generalPrivileges': 'امتیازات عمومی',
'earlyAccessNewFeatures': 'دسترسی زودهنگام به ویژگی‌های جدید',
'crossDeviceSync': 'همگام‌سازی بین دستگاه‌ها',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'مزایای واقعی به جزئیات بسته بستگی دارد و ممکن است با نسخه‌ها تغییر کند.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
'ai_001_name': 'هوش مصنوعی پایه ۱۰۰',
'ai_002_name': 'هوش مصنوعی پایه ۵۰۰',
'ai_003_name': 'هوش مصنوعی پایه ۱۰۰۰',
'meet_001_name': 'جلسه پایه ۱۰۰',
'meet_002_name': 'جلسه پایه ۵۰۰',
'meet_003_name': 'جلسه پایه ۱۰۰۰',
'trans_001_name': 'ترجمه پایه ۱۰۰',
'trans_002_name': 'ترجمه پایه ۵۰۰',
'trans_003_name': 'ترجمه پایه ۱۰۰۰',
'ai_001_desc': 'شامل ۱۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.',
'ai_002_desc': 'شامل ۵۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.',
'ai_003_desc': 'شامل ۱۰۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.',
'meet_001_desc': 'شامل ۱۰۰ ضبط/رونویسی جلسه.',
'meet_002_desc': 'شامل ۵۰۰ ضبط/رونویسی جلسه.',
'meet_003_desc': 'شامل ۱۰۰۰ ضبط/رونویسی جلسه.',
'trans_001_desc': 'شامل ۱۰۰ ترجمه (صوتی/متنی).',
'trans_002_desc': 'شامل ۵۰۰ ترجمه (صوتی/متنی).',
'trans_003_desc': 'شامل ۱۰۰۰ ترجمه (صوتی/متنی).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
'appNameProvider': 'برنامه: VoiTrans · ارائه‌دهنده: VoiTrans',
'iapCustomerServiceQQLabel': 'خدمات مشتری IAP QQ: @qq',
'copyrightVoitrans': '© ۲۰۲۵ Voitrans Technologies',
// 新手引导
'skip': "رد کردن",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'بعدی',
'sayLilyHint': 'به میکروفون بگویید «لیلی لیلی»',
'imHere': ' من اینجا هستم~',
'guideWelcomeWakeAI':
'به Voitrans خوش آمدید! ابتدا هوش مصنوعی «لیلی» را بیدار کنید.',
'aiReplyCompleted': 'لیلی پاسخ را تمام کرد!',
'aiThinking': 'لیلی در حال فکر کردن است…',
'guideAwakenSuccess': 'عالی! لیلی بیدار شد—از او کمک بخواهید.',
'confirmInput': 'تأیید ورودی',
'guideClickSendPrefix': 'روی ارسال ضربه بزنید، ',
'guideWeatherStart': 'به لیلی بگویید: «آب و هوای امروز چطور است؟»',
'guideWeatherInput': 'آب و هوای امروز چطور است؟',
'guideWeatherSend': 'لیلی آب و هوا را به صورت بلادرنگ گزارش می‌دهد',
'guideWeatherEnd':
'لیلی می‌تواند آب و هوا را گزارش دهد—دستورات دیگر را امتحان کنید',
'guideMusicStart': 'به لیلی بگویید: «کمی موسیقی راک پخش کن»',
'guideMusicInput': 'کمی موسیقی راک پخش کن',
'guideMusicSend': 'لیلی برای شما موسیقی پیدا می‌کند',
'guideMusicEnd': 'لیلی موسیقی پیدا کرد—دستورات دیگر را امتحان کنید',
'guideNavStart': 'به لیلی بگویید: «مسیریابی به فرودگاه شنژن»',
'guideNavInput': 'مسیریابی به فرودگاه شنژن',
'guideNavSend': 'لیلی مسیر را برنامه‌ریزی می‌کند',
'guideNavEnd': 'مسیریابی تنظیم شد—دستورات دیگر را امتحان کنید',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
'به لیلی بگویید: «یک یادآوری جلسه برای ساعت ۳ فردا ایجاد کن»',
'guideMeetingInput': 'یک یادآوری جلسه برای ساعت ۳ فردا ایجاد کن',
'guideMeetingSend': 'لیلی یک یادآوری جلسه ایجاد می‌کند',
'guideMeetingEnd': 'یادآوری ایجاد شد—دستورات دیگر را امتحان کنید',
'guidePhoneStart': 'به لیلی بگویید: «به مادر زنگ بزن»',
'guidePhoneInput': 'به مادر زنگ بزن',
'guidePhoneSend': 'لیلی تماس می‌گیرد',
'guidePhoneEnd': 'تماس برقرار شد—دستورات دیگر را امتحان کنید',
'guideSmsStart': 'به لیلی بگویید: «به پدر پیامک بفرست: برای شام خانه هستم»',
'guideSmsInput': 'به پدر پیامک بفرست: برای شام خانه هستم',
'guideSmsSend': 'لیلی پیام را ارسال می‌کند',
'guideSmsEnd': 'پیام ارسال شد—کنترل صوتی راحت است',
// Meeting模块 - 首页与导航
"startMeeting": "شروع جلسه",
@ -547,7 +569,8 @@ const Map<String, String> faIR = {
'editTemplate': 'ویرایش قالب',
'createTemplate': 'ایجاد قالب',
'name': 'نام',
'templateContentHint': 'لطفاً محتوای قالب را وارد کنید! نکته: برای تولید سریع محتوای قالب بر اساس نام و توضیحاتی که وارد کرده‌اید، روی دکمه AI بالا کلیک کنید',
'templateContentHint':
'لطفاً محتوای قالب را وارد کنید! نکته: برای تولید سریع محتوای قالب بر اساس نام و توضیحاتی که وارد کرده‌اید، روی دکمه AI بالا کلیک کنید',
'inputNameHint': 'لطفاً نام را وارد کنید',
'inputDescHint': 'لطفاً توضیحات را وارد کنید',
'custom': 'سفارشی',
@ -728,10 +751,10 @@ const Map<String, String> faIR = {
"translationRecharge": "شارژ ترجمه",
"meetingAssistantRecharge": "شارژ کمک‌کننده جلسه",
"cloudSync": "شارژ همگام‌سازی ابری",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"memberService": "خدمات عضویت",
"bindRewardTitle": "جوایز",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"جایزه اولین اتصال دستگاه صادر شد. برای بستن روی تأیید ضربه بزنید.",
"joinDevice": "دستگاه متصل:",
"accountId": "شناسه حساب:",
"systemSetting": "تنظیمات سیستم",
@ -822,8 +845,9 @@ const Map<String, String> faIR = {
"loadFailedClickRetry": "بارگیری ناموفق بود، برای تلاش مجدد کلیک کنید",
"swipeUpForMore": "برای مشاهده بیشتر به بالا بکشید",
"callingTool": "در حال کمک به شما هستم، لطفاً صبر کنید!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'وقتی فعال است: هوش مصنوعی هنگام صحبت کردن توسط صدای شما قطع نمی‌شود و فقط می‌تواند یک دور مکالمه را در هر بار پردازش کند. برای شروع دور جدید، کافی است کلمه بیدارسازی را بگویید.',
"voice_interrupt": "قطع صدا", // 语音打断
'voice_interrupt_tip':
'وقتی فعال است: هوش مصنوعی هنگام صحبت کردن توسط صدای شما قطع نمی‌شود و فقط می‌تواند یک دور مکالمه را در هر بار پردازش کند. برای شروع دور جدید، کافی است کلمه بیدارسازی را بگویید.',
// Agent模块 - 预设提示词
"presetMusic": "پخش موسیقی", // 来点音乐
@ -878,6 +902,13 @@ const Map<String, String> faIR = {
'ما می‌خواهیم دلیل گزارش شما را بدانیم، می‌توانید مشکلی را که با آن مواجه شدید توصیف کنید.',
'generatedByAi': 'تولید شده توسط هوش مصنوعی',
// Agent模块 - 工具调用
'toolCall': 'فراخوانی ابزار',
'noResult': 'نتیجه‌ای یافت نشد',
'noToolCallContentToCopy': 'محتوای فراخوانی ابزار برای کپی وجود ندارد',
'toolCallDetails': 'جزئیات فراخوانی ابزار:',
'toolCallContentCopied': 'محتوای فراخوانی ابزار در کلیپ‌بورد کپی شد',
// Agent模块 - 音乐卡片
'recommendedMusic': 'در اینجا چند موسیقی توصیه‌شده وجود دارد:',
'playList': 'لیست پخش',
@ -898,6 +929,29 @@ const Map<String, String> faIR = {
"bicycling": "دوچرخه‌سواری",
"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模块 - 天气卡片
'weatherQuery': 'استعلام آب و هوا:',
'highest': 'حداکثر',
@ -965,19 +1019,29 @@ const Map<String, String> faIR = {
"me": "من",
"counterPart": "طرف مقابل",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
"لطفاً مطمئن شوید هدست بلوتوث به تلفن متصل و در حالت تماس است",
"autoDetect": "تشخیص خودکار", // 自动检测
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
"languageDetectionFailed": "تشخیص زبان ناموفق بود",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'غیرفعال کردن پنجره شناور',
'enableFloatingWindow': 'فعال کردن پنجره شناور',
'permissionTip': 'نکته مجوز',
'micPermissionRequiredForRecording': 'مجوز میکروفون برای ضبط الزامی است',
'deleteTranslationRecordError': 'خطا در حذف سابقه ترجمه: @error',
"translationFailed": "ترجمه ناموفق بود",
"translating": "در حال ترجمه",
"translate": "ترجمه",
"pleaseInputText": "لطفاً متن را وارد کنید",
"inputTextToTranslate": "لطفاً متن مورد نظر برای ترجمه را وارد کنید",
"textTooLong": "متن بیش از حد طولانی است، حداکثر ۵۰۰۰ کاراکتر",
// 翻译模块 - 历史记录
"noTranslationHistory": "تاریخچه ترجمه وجود ندارد",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"historyRecords": "سوابق تاریخچه",
"clearResults": "پاک کردن نتایج",
"clearHistory": "پاک کردن تاریخچه",
"clearHistoryConfirm":
"آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.",
@ -987,28 +1051,28 @@ const Map<String, String> faIR = {
"آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"selectImageSource": "انتخاب منبع تصویر",
"imagePreview": "پیش‌نمایش تصویر",
"translationResult": "نتیجه ترجمه",
"recognitionResult": "نتیجه تشخیص",
"translatedImagePreview": "پیش‌نمایش تصویر ترجمه‌شده",
"translatedImageLoadFailed": "بارگذاری تصویر ترجمه‌شده ناموفق بود",
"pleaseSelectImage": "لطفاً یک تصویر انتخاب کنید",
"imageLoadFailed": "بارگذاری تصویر ناموفق بود",
"imageQuality": "کیفیت تصویر",
"maxSize": "حداکثر اندازه",
"close": "بستن",
"setImageQuality": "تنظیم کیفیت تصویر",
"currentQuality": "کیفیت فعلی: @value%",
"setMaxSize": "تنظیم حداکثر اندازه",
"currentMaxSize": "فعلی: @pxpx",
"waitingForAction": "در انتظار اقدام",
"pleaseSelectImageToStart": "لطفاً برای شروع یک تصویر انتخاب کنید",
"chooseImage": "انتخاب تصویر",
"openingCamera": "در حال باز کردن دوربین...",
"openingPhotoAlbum": "در حال باز کردن آلبوم عکس...",
"cancelled": "لغو شد",
"userCancelledSelection": "کاربر انتخاب را لغو کرد",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
@ -1245,9 +1309,11 @@ const Map<String, String> faIR = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'مسیریابی در جریان است',
'native.notification.navigation.keepRunning': 'در حال مسیریابی، اپلیکیشن را باز نگه دارید',
'native.notification.navigation.keepRunning':
'در حال مسیریابی، اپلیکیشن را باز نگه دارید',
'native.notification.bleAgent.running': 'دستیار صوتی در حال اجراست',
'native.notification.audioRecording.recording': 'در حال ضبط صدا، برای بازگشت به اپلیکیشن ضربه بزنید',
'native.notification.audioRecording.recording':
'در حال ضبط صدا، برای بازگشت به اپلیکیشن ضربه بزنید',
'native.notification.music.waiting': 'در انتظار پخش',
'native.notification.music.previous': 'قبلی',
'native.notification.music.next': 'بعدی',
@ -1391,6 +1457,59 @@ const Map<String, String> faIR = {
"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": "بدون موسیقی", // 暂无音乐
"noPlayingMusic": "موسیقی در حال پخش نیست", // 暂无播放音乐

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

@ -169,6 +169,26 @@ const Map<String, String> fiFI = {
'right': 'Oikea',
'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...",
"exploreSlogan": "Älykkäät kuulokkeet, loputtomat mahdollisuudet",
@ -876,6 +896,13 @@ const Map<String, String> fiFI = {
'Haluamme tietää, miksi ilmoitat, voit kuvailla kohtaamaasi ongelmaa.',
'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模块 - 音乐卡片
'recommendedMusic': 'Tässä on joitain suositeltuja kappaleita:',
'playList': 'Soittolista',
@ -896,6 +923,28 @@ const Map<String, String> fiFI = {
"bicycling": 'Pyörällä',
"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模块 - 天气卡片
'weatherQuery': 'Säätietojen kysely:',
'highest': 'Korkein',
@ -966,8 +1015,18 @@ const Map<String, String> fiFI = {
// 翻译模块 - 文本翻译
"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",
"translating": "Käännetään",
"translate": "Käännä",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Syötä käännettävä teksti",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1389,6 +1448,49 @@ const Map<String, String> fiFI = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Ei soitettavaa musiikkia", // 暂无播放音乐

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

File diff suppressed because it is too large

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

@ -1,5 +1,4 @@
const Map<String, String> hiIN = {
// 通用
'continue': 'जारी रखें',
'confirm': 'पुष्टि करें',
@ -167,6 +166,29 @@ const Map<String, String> hiIN = {
'right': 'दायां',
'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": "एआई फ़ंक्शन खोजें...",
"exploreSlogan": "स्मार्ट ईयरफोन, अनंत संभावनाएं",
@ -260,12 +282,15 @@ const Map<String, String> hiIN = {
'paymentException': 'भुगतान में समस्या',
'paymentLaunchFailed': 'भुगतान शुरू करने में विफल',
'paymentExceptionWithError': 'भुगतान में समस्या: @error',
'paymentProcessingCheckLater': 'आपका ऑर्डर प्रोसेस हो रहा है। कृपया बाद में जाँचें।',
'paymentProcessingCheckLater':
'आपका ऑर्डर प्रोसेस हो रहा है। कृपया बाद में जाँचें।',
'paymentResultQueryException': 'भुगतान परिणाम की जाँच विफल: @error',
'orderConfirmedQuotaRefreshed': 'ऑर्डर की पुष्टि हो गई। आपका कोटा रीफ़्रेश हो गया है।',
'orderConfirmedQuotaRefreshed':
'ऑर्डर की पुष्टि हो गई। आपका कोटा रीफ़्रेश हो गया है।',
'paymentCompletedConfirming': 'भुगतान पूरा हुआ। पुष्टि हो रही है…',
'paymentCancelled': 'भुगतान रद्द किया गया',
'paypalOpenedCompleteInBrowser': 'PayPal खुल गया है। कृपया ब्राउज़र में भुगतान पूरा करें।',
'paypalOpenedCompleteInBrowser':
'PayPal खुल गया है। कृपया ब्राउज़र में भुगतान पूरा करें।',
'paypalOpenFailed': 'PayPal भुगतान पृष्ठ नहीं खोल सकते',
'paymentTestTitle': 'भुगतान परीक्षण',
'paymentTestOrderInfo': 'परीक्षण ऑर्डर जानकारी',
@ -282,7 +307,8 @@ const Map<String, String> hiIN = {
'errorInfoWithMessage': 'त्रुटि: @message',
'retest': 'पुनः परीक्षण',
'paymentTestInstructionsTitle': 'निर्देश',
'paymentTestInstructionsContent': '1. परीक्षण राशि चुनें (अनुशंसित: ¥0.01)\n2. शुरू करने के लिए भुगतान बटन दबाएँ\n3. भुगतान ऐप में भुगतान पूरा करें\n4. परिणाम जाँचने के लिए वापस आएँ',
'paymentTestInstructionsContent':
'1. परीक्षण राशि चुनें (अनुशंसित: ¥0.01)\n2. शुरू करने के लिए भुगतान बटन दबाएँ\n3. भुगतान ऐप में भुगतान पूरा करें\n4. परिणाम जाँचने के लिए वापस आएँ',
'startingWechatPayment': 'WeChat Pay खोल रहे हैं...',
'startingAlipayPayment': 'Alipay खोल रहे हैं...',
'wechatPaymentSuccess': 'WeChat Pay भुगतान सफल!',
@ -493,19 +519,28 @@ const Map<String, String> hiIN = {
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'रिकॉर्डिंग से बाहर निकलें', // 退出录音
'meetingRecordExitMessage': 'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作
'meetingRecordExitMessage':
'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作
'meetingRecordEndAndSave': 'रिकॉर्डिंग समाप्त करें और सहेजें', // 结束录音并保存
'meetingRecordEndWithoutSave': 'बिना सहेजे रिकॉर्डिंग समाप्त करें', // 结束录音不保存
'meetingRecordContinueInBackground': 'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音
'meetingRecordStopTimeout': 'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试
'meetingRecordStopFailed': 'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试
'meetingRecordContinueInBackground':
'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音
'meetingRecordStopTimeout':
'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试
'meetingRecordStopFailed':
'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'रिकॉर्डिंग चल रही है', // 录音进行中
'meetingRecordRecordingNotificationBody': 'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用
'meetingRecordRecordingNotificationBody':
'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'अन्य ऐप्स के ऊपर दिखाएँ', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc': 'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed': 'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'overlayPermissionTranslationDesc':
'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc':
'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -540,7 +575,8 @@ const Map<String, String> hiIN = {
'editTemplate': 'टेम्पलेट संपादित करें',
'createTemplate': 'टेम्पलेट बनाएँ',
'name': 'नाम',
'templateContentHint': 'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ',
'templateContentHint':
'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ',
'inputNameHint': 'कृपया नाम दर्ज करें',
'inputDescHint': 'कृपया विवरण दर्ज करें',
'custom': 'कस्टम',
@ -817,7 +853,8 @@ const Map<String, String> hiIN = {
"swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।',
'voice_interrupt_tip':
'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -873,6 +910,13 @@ const Map<String, String> hiIN = {
'हम जानना चाहते हैं कि आप क्यों रिपोर्ट कर रहे हैं, आप जिस समस्या का सामना कर रहे हैं उसका वर्णन कर सकते हैं।',
'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模块 - 音乐卡片
'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:',
'playList': 'प्लेलिस्ट',
@ -893,6 +937,29 @@ const Map<String, String> hiIN = {
"bicycling": "साइकिल चलाना",
"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模块 - 天气卡片
'weatherQuery': 'मौसम की स्थिति की पूछताछ:',
'highest': 'उच्चतम',
@ -964,8 +1031,19 @@ const Map<String, String> hiIN = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "कृपया अनुवाद करने के लिए पाठ दर्ज करें",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1243,9 +1321,11 @@ const Map<String, String> hiIN = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'नेविगेशन जारी है',
'native.notification.navigation.keepRunning': 'नेविगेट कर रहे हैं, ऐप चालू रखें',
'native.notification.navigation.keepRunning':
'नेविगेट कर रहे हैं, ऐप चालू रखें',
'native.notification.bleAgent.running': 'वॉयस असिस्टेंट एजेंट चल रहा है',
'native.notification.audioRecording.recording': 'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें',
'native.notification.audioRecording.recording':
'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें',
'native.notification.music.waiting': 'चलाने की प्रतीक्षा में',
'native.notification.music.previous': 'पिछला',
'native.notification.music.next': 'अगला',
@ -1391,6 +1471,59 @@ const Map<String, String> hiIN = {
"removeEarbudsEnsureBattery":
"दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 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": "कोई संगीत नहीं", // 暂无音乐
"noPlayingMusic": "कोई संगीत नहीं चल रहा है", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> hrHR = {
// 通用
'continue': 'Nastavi',
'confirm': 'Potvrdi',
@ -170,6 +169,29 @@ const Map<String, String> hrHR = {
'right': 'Desno',
'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...",
"exploreSlogan": "Pametne slušalice, beskonačne mogućnosti",
@ -264,12 +286,16 @@ const Map<String, String> hrHR = {
'paymentException': 'Iznimka pri plaćanju',
'paymentLaunchFailed': 'Pokretanje plaćanja nije uspjelo',
'paymentExceptionWithError': 'Iznimka pri plaćanju: @error',
'paymentProcessingCheckLater': 'Vaša narudžba se obrađuje. Provjerite kasnije.',
'paymentResultQueryException': 'Neuspješno dohvaćanje rezultata plaćanja: @error',
'orderConfirmedQuotaRefreshed': 'Narudžba je potvrđena. Vaša kvota je osvježena.',
'paymentProcessingCheckLater':
'Vaša narudžba se obrađuje. Provjerite kasnije.',
'paymentResultQueryException':
'Neuspješno dohvaćanje rezultata plaćanja: @error',
'orderConfirmedQuotaRefreshed':
'Narudžba je potvrđena. Vaša kvota je osvježena.',
'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…',
'paymentCancelled': 'Plaćanje je otkazano',
'paypalOpenedCompleteInBrowser': 'PayPal je otvoren. Molimo dovršite plaćanje u pregledniku.',
'paypalOpenedCompleteInBrowser':
'PayPal je otvoren. Molimo dovršite plaćanje u pregledniku.',
'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje',
'paymentTestTitle': 'Test plaćanja',
'paymentTestOrderInfo': 'Informacije o testnoj narudžbi',
@ -286,7 +312,8 @@ const Map<String, String> hrHR = {
'errorInfoWithMessage': 'Greška: @message',
'retest': 'Ponovo testiraj',
'paymentTestInstructionsTitle': 'Upute',
'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',
'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',
'startingWechatPayment': 'Pokretanje WeChat Pay-a...',
'startingAlipayPayment': 'Pokretanje Alipay-a...',
'wechatPaymentSuccess': 'WeChat Pay plaćanje uspješno!',
@ -497,19 +524,27 @@ const Map<String, String> hrHR = {
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Izađi iz snimanja', // 退出录音
'meetingRecordExitMessage': 'Odaberite što učiniti prije izlaska', // 请选择离开后的操作
'meetingRecordExitMessage':
'Odaberite što učiniti prije izlaska', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Završi i spremi', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Završi bez spremanja', // 结束录音不保存
'meetingRecordContinueInBackground': 'Nastavi snimanje u pozadini', // 后台继续录音
'meetingRecordStopTimeout': 'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试
'meetingRecordStopFailed': 'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试
'meetingRecordStopTimeout':
'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试
'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', // 悬浮窗权限
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -540,11 +575,13 @@ const Map<String, String> hrHR = {
'description': 'Opis',
'template': 'Predložak',
'deleteTemplate': 'Obriši predložak',
'deleteTemplateConfirm': 'Jeste li sigurni da želite obrisati ovaj predložak?',
'deleteTemplateConfirm':
'Jeste li sigurni da želite obrisati ovaj predložak?',
'editTemplate': 'Uredi predložak',
'createTemplate': 'Stvori predložak',
'name': 'Naziv',
'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',
'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',
'inputNameHint': 'Molimo unesite naziv',
'inputDescHint': 'Molimo unesite opis',
'custom': 'Prilagođeno',
@ -704,7 +741,8 @@ const Map<String, String> hrHR = {
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije',
'transcriptionFailed': 'Transkripcija nije uspjela, pokušajte ponovno kasnije',
'transcriptionFailed':
'Transkripcija nije uspjela, pokušajte ponovno kasnije',
'summaryFailed': 'Sažetak nije uspio, pokušajte ponovno kasnije',
'summaryFailedShort': 'Sažetak nije uspio',
'transcriptionFailedShort': 'Transkripcija nije uspjela',
@ -821,7 +859,8 @@ const Map<String, String> hrHR = {
"swipeUpForMore": "Prijeđite prstom prema gore za više",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Evo nekoliko preporučenih pjesama:',
'playList': 'Popis pjesama',
@ -897,6 +943,29 @@ const Map<String, String> hrHR = {
"bicycling": "Biciklizam",
"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模块 - 天气卡片
'weatherQuery': 'Upit o vremenskim uvjetima:',
'highest': 'Najviša',
@ -968,8 +1037,19 @@ const Map<String, String> hrHR = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Unesite tekst za prijevod",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1246,9 +1326,11 @@ const Map<String, String> hrHR = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija u tijeku',
'native.notification.navigation.keepRunning': 'Navigacija, držite aplikaciju pokrenutom',
'native.notification.navigation.keepRunning':
'Navigacija, držite aplikaciju pokrenutom',
'native.notification.bleAgent.running': 'Glasovni asistent je pokrenut',
'native.notification.audioRecording.recording': 'Snimanje zvuka, dodirnite za povratak u aplikaciju',
'native.notification.audioRecording.recording':
'Snimanje zvuka, dodirnite za povratak u aplikaciju',
'native.notification.music.waiting': 'Čekanje na reprodukciju',
'native.notification.music.previous': 'Prethodna',
'native.notification.music.next': 'Sljedeća',
@ -1396,6 +1478,59 @@ const Map<String, String> hrHR = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> huHU = {
// 通用
'continue': 'Folytatás',
'confirm': 'Megerősítés',
@ -172,6 +171,29 @@ const Map<String, String> huHU = {
'checkConnectionStatusFailed':
'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...",
"exploreSlogan": "Okos fülhallgatók, végtelen lehetőségek",
@ -264,12 +286,15 @@ const Map<String, String> huHU = {
'paymentException': 'Fizetési kivétel',
'paymentLaunchFailed': 'Fizetés indítása sikertelen',
'paymentExceptionWithError': 'Fizetési kivétel: @error',
'paymentProcessingCheckLater': 'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.',
'paymentResultQueryException': 'Nem sikerült lekérdezni a fizetés eredményét: @error',
'paymentProcessingCheckLater':
'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.',
'paymentResultQueryException':
'Nem sikerült lekérdezni a fizetés eredményét: @error',
'orderConfirmedQuotaRefreshed': 'Rendelés megerősítve. A kvótája frissült.',
'paymentCompletedConfirming': 'Fizetés befejezve. Megerősítés folyamatban…',
'paymentCancelled': 'Fizetés megszakítva',
'paypalOpenedCompleteInBrowser': 'PayPal megnyitva. Kérjük, fejezze be a fizetést a böngészőben.',
'paypalOpenedCompleteInBrowser':
'PayPal megnyitva. Kérjük, fejezze be a fizetést a böngészőben.',
'paypalOpenFailed': 'Nem sikerült megnyitni a PayPal fizetési oldalt',
'paymentTestTitle': 'Fizetési teszt',
'paymentTestOrderInfo': 'Teszt rendelési információ',
@ -286,7 +311,8 @@ const Map<String, String> huHU = {
'errorInfoWithMessage': 'Hiba: @message',
'retest': 'Újratesztelés',
'paymentTestInstructionsTitle': 'Útmutató',
'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',
'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',
'startingWechatPayment': 'WeChat Pay indítása...',
'startingAlipayPayment': 'Alipay indítása...',
'wechatPaymentSuccess': 'WeChat Pay sikeres!',
@ -553,7 +579,8 @@ const Map<String, String> huHU = {
'editTemplate': 'Sablon szerkesztése',
'createTemplate': 'Sablon létrehozása',
'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':
'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',
'inputNameHint': 'Kérjük, adjon meg nevet',
'inputDescHint': 'Kérjük, adjon meg leírást',
'custom': 'Egyéni',
@ -832,7 +859,8 @@ const Map<String, String> huHU = {
"swipeUpForMore": "Húzza felfelé a továbbiakért",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Itt van néhány ajánlott zene:',
'playList': 'Lejátszási lista',
@ -908,6 +943,29 @@ const Map<String, String> huHU = {
"bicycling": "Kerékpározá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模块 - 天气卡片
'weatherQuery': 'Időjárási körülmények lekérdezése:',
'highest': 'Legmagasabb',
@ -979,8 +1037,19 @@ const Map<String, String> huHU = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Kérjük, adja meg a lefordítandó szöveget",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1257,9 +1326,11 @@ const Map<String, String> huHU = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigálás folyamatban',
'native.notification.navigation.keepRunning': 'Navigálás, tartsa nyitva az alkalmazást',
'native.notification.navigation.keepRunning':
'Navigálás, tartsa nyitva az alkalmazást',
'native.notification.bleAgent.running': 'A hangasszisztens ügynök fut',
'native.notification.audioRecording.recording': 'Hangfelvétel folyamatban, koppintson az alkalmazásba való visszatéréshez',
'native.notification.audioRecording.recording':
'Hangfelvétel folyamatban, koppintson az alkalmazásba való visszatéréshez',
'native.notification.music.waiting': 'Lejátszásra vár',
'native.notification.music.previous': 'Előző',
'native.notification.music.next': 'Következő',
@ -1407,6 +1478,59 @@ const Map<String, String> huHU = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> idID = {
// 通用
'continue': 'Lanjutkan',
'confirm': 'Konfirmasi',
@ -19,11 +18,11 @@ const Map<String, String> idID = {
"unknownError": "Kesalahan tidak diketahui",
"asrConnectionFailed":
"Koneksi ke layanan pengenalan suara gagal. Periksa jaringan Anda lalu coba lagi nanti.",
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
"justNow": "Baru saja",
"minutesAgo": "@minutes menit yang lalu",
"yesterday": "Kemarin",
"daysAgo": "@days hari yang lalu",
"hoursAgo": "@hours jam yang lalu",
// 启动页
"slogan": "Menghubungkan dunia, melampaui suara",
@ -167,6 +166,29 @@ const Map<String, String> idID = {
'right': 'Kanan',
'checkConnectionStatusFailed': 'Gagal memeriksa status koneksi',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Inisialisasi Bluetooth gagal: @error',
'needBluetoothAndLocationPermission':
'Izin Bluetooth dan lokasi diperlukan untuk memindai perangkat',
'permissionRequestFailedWithError': 'Permintaan izin gagal: @error',
'needPermission': 'Izin Diperlukan',
'blePermissionDialogContent':
'Aplikasi ini memerlukan izin Bluetooth dan lokasi untuk memindai perangkat. Silakan aktifkan di Pengaturan.',
'needEnableBluetooth': 'Aktifkan Bluetooth',
'enableBluetoothDialogContent':
'Silakan aktifkan Bluetooth untuk memindai dan menyambungkan perangkat.',
'bleScanFailedWithError': 'Pemindaian gagal: @error',
'bleConnectionSuccess': 'Berhasil Terhubung',
'bleConnectedToDevice': 'Terhubung ke @device',
'bleConnectionFailedWithError': 'Koneksi gagal: @error',
'bleDisconnected': 'Terputus',
'bleDeviceDisconnected': 'Perangkat terputus',
'bleDisconnectFailedWithError': 'Gagal memutuskan: @error',
'signalStrong': 'Kuat',
'signalMedium': 'Sedang',
'signalWeak': 'Lemah',
'signalVeryWeak': 'Sangat Lemah',
// 发现页
"searchAi": "Cari fitur AI...",
"exploreSlogan": "Earphone pintar, kemungkinan tak terbatas",
@ -194,22 +216,22 @@ const Map<String, String> idID = {
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"translationStats": "Statistik Terjemahan",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"translationCount": "Jumlah Terjemahan",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"recordingDuration": "Durasi Rekaman",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"translationApi": "API Terjemahan",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
@ -228,9 +250,8 @@ const Map<String, String> idID = {
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"loadFailed": "Gagal Memuat",
"statsLoadFailedTryLater": "Statistik gagal dimuat. Silakan coba lagi nanti.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
@ -260,12 +281,15 @@ const Map<String, String> idID = {
'paymentException': 'Pembayaran bermasalah',
'paymentLaunchFailed': 'Gagal membuka pembayaran',
'paymentExceptionWithError': 'Pembayaran bermasalah: @error',
'paymentProcessingCheckLater': 'Pesanan Anda sedang diproses. Silakan periksa nanti.',
'paymentProcessingCheckLater':
'Pesanan Anda sedang diproses. Silakan periksa nanti.',
'paymentResultQueryException': 'Gagal memeriksa hasil pembayaran: @error',
'orderConfirmedQuotaRefreshed': 'Pesanan dikonfirmasi. Kuota Anda telah diperbarui.',
'orderConfirmedQuotaRefreshed':
'Pesanan dikonfirmasi. Kuota Anda telah diperbarui.',
'paymentCompletedConfirming': 'Pembayaran selesai. Sedang mengonfirmasi…',
'paymentCancelled': 'Pembayaran dibatalkan',
'paypalOpenedCompleteInBrowser': 'PayPal telah dibuka. Silakan selesaikan pembayaran di browser.',
'paypalOpenedCompleteInBrowser':
'PayPal telah dibuka. Silakan selesaikan pembayaran di browser.',
'paypalOpenFailed': 'Tidak dapat membuka halaman pembayaran PayPal',
'paymentTestTitle': 'Uji Pembayaran',
'paymentTestOrderInfo': 'Info Pesanan Uji',
@ -282,7 +306,8 @@ const Map<String, String> idID = {
'errorInfoWithMessage': 'Kesalahan: @message',
'retest': 'Uji ulang',
'paymentTestInstructionsTitle': 'Petunjuk',
'paymentTestInstructionsContent': '1. Pilih jumlah uji (disarankan: ¥0.01)\n2. Klik tombol pembayaran untuk memulai\n3. Selesaikan pembayaran di aplikasi pembayaran\n4. Kembali untuk memeriksa hasilnya',
'paymentTestInstructionsContent':
'1. Pilih jumlah uji (disarankan: ¥0.01)\n2. Klik tombol pembayaran untuk memulai\n3. Selesaikan pembayaran di aplikasi pembayaran\n4. Kembali untuk memeriksa hasilnya',
'startingWechatPayment': 'Membuka WeChat Pay...',
'startingAlipayPayment': 'Membuka Alipay...',
'wechatPaymentSuccess': 'Pembayaran WeChat Pay berhasil!',
@ -296,12 +321,12 @@ const Map<String, String> idID = {
'alipayPaymentLaunchFailed': 'Gagal membuka Alipay',
'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay',
'alipayPaymentException': 'Alipay bermasalah',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "Poin tidak mencukupi",
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
'Saldo tidak mencukupi, silakan buka halaman isi ulang terkait untuk mengisi saldo.',
"recharge": 'Isi ulang',
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
'Keanggotaan AI telah kedaluwarsa, silakan buka halaman perpanjangan keanggotaan untuk memperbarui.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
@ -329,18 +354,18 @@ const Map<String, String> idID = {
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
'Fitur bergantung pada izin perangkat, ketersediaan layanan, dan kondisi jaringan.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'Interpretasi simultan waktu nyata dan terjemahan teks dengan suara latensi rendah.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'translateZhEn': 'Terjemahan Mandarin-Inggris',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'multiLangTextTranslation': 'Terjemahan teks multibahasa',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
@ -348,18 +373,18 @@ const Map<String, String> idID = {
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'Kinerja terjemahan bergantung pada mikrofon, latensi jaringan, dan kebisingan sekitar.',
// 商品模块 - 会议商品页
'meetingRecording': 'Meeting Recording',
'meetingRecording': 'Rekaman Rapat',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'Perekaman audio, transkripsi, pencarian kata kunci, dan ringkasan otomatis untuk meningkatkan efisiensi rapat.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingAutoRecording': 'Perekaman otomatis dan segmentasi',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
@ -368,7 +393,7 @@ const Map<String, String> idID = {
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
'Gunakan di lingkungan yang tenang; kinerja bergantung pada mikrofon dan jaringan.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
@ -382,7 +407,7 @@ const Map<String, String> idID = {
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'crossDeviceSync': 'Sinkronisasi lintas perangkat',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
@ -393,18 +418,18 @@ const Map<String, String> idID = {
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
'trans_001_name': 'Terjemahan Dasar 100',
'trans_002_name': 'Terjemahan Dasar 500',
'trans_003_name': 'Terjemahan Dasar 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
'meet_001_desc': 'Termasuk 100 rekaman/transkripsi rapat.',
'meet_002_desc': 'Termasuk 500 rekaman/transkripsi rapat.',
'meet_003_desc': 'Termasuk 1000 rekaman/transkripsi rapat.',
'trans_001_desc': 'Termasuk 100 terjemahan (suara/teks).',
'trans_002_desc': 'Termasuk 500 terjemahan (suara/teks).',
'trans_003_desc': 'Termasuk 1000 terjemahan (suara/teks).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
@ -460,52 +485,62 @@ const Map<String, String> idID = {
'recordingDetails': 'Detail Rekaman',
'aiSummary': 'Ringkasan AI',
'meetingTranscript': 'Transkrip Rapat',
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'files': 'Berkas',
'mine': 'Milik Saya',
'connect': 'Hubungkan',
'allFiles': 'Semua Berkas',
'searchInAllFiles': 'Cari di semua berkas',
'from': 'Dari',
'sortBy': 'Urutkan berdasarkan',
'creationTime': 'Waktu dibuat',
'bluetoothConnection': 'Koneksi Bluetooth',
'meetingReconnect': 'Sambungkan kembali',
'searching': 'Mencari...',
'searchFailed': 'Pencarian gagal, harap periksa apakah Bluetooth diaktifkan',
'aiPenNotFound': 'Perangkat AI PEN tidak ditemukan',
'connectedToAiPen': 'Terhubung ke perangkat AI PEN',
'checkingNewFiles': 'Memeriksa file baru untuk diimpor',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'connectingWifi': 'Menyambungkan ke Wi‑Fi...',
'wifiConnected': 'Wi‑Fi berhasil terhubung',
'downloadingFiles': 'Mengunduh file...',
'downloadingFileProgress': 'Total {total} file, mengunduh file {current}',
'downloadComplete': 'Unduhan selesai',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
'Unduhan selesai, total {count} file, kembali otomatis dalam 2 detik',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'startRecording': 'Mulai Merekam',
'liveRecording': 'Rekaman Langsung',
'audioVideoRecording': 'Rekaman Audio/Video',
'callRecording': 'Rekaman Panggilan',
'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Keluar dari perekaman', // 退出录音
'meetingRecordExitMessage': 'Pilih apa yang akan dilakukan sebelum keluar', // 请选择离开后的操作
'meetingRecordExitMessage':
'Pilih apa yang akan dilakukan sebelum keluar', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Akhiri dan simpan', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Akhiri tanpa menyimpan', // 结束录音不保存
'meetingRecordContinueInBackground': 'Lanjutkan merekam di latar belakang', // 后台继续录音
'meetingRecordStopTimeout': 'Waktu untuk menghentikan perekaman habis. Silakan coba lagi.', // 结束录音超时,请重试
'meetingRecordStopFailed': 'Gagal menghentikan perekaman. Silakan coba lagi.', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'Gagal menyimpan rekaman. Silakan coba lagi.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Perekaman sedang berlangsung', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Merekam di latar belakang. Ketuk untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用
'meetingRecordContinueInBackground':
'Lanjutkan merekam di latar belakang', // 后台继续录音
'meetingRecordStopTimeout':
'Waktu untuk menghentikan perekaman habis. Silakan coba lagi.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Gagal menghentikan perekaman. Silakan coba lagi.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Gagal menyimpan rekaman. Silakan coba lagi.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle':
'Perekaman sedang berlangsung', // 录音进行中
'meetingRecordRecordingNotificationBody':
'Merekam di latar belakang. Ketuk untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Tampilkan di atas aplikasi lain', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Untuk menampilkan hasil terjemahan saat panggilan atau terjemahan audio/video, kami memerlukan izin overlay. Ini memungkinkan Anda melihat terjemahan real-time saat menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc': 'Untuk menampilkan bilah mengambang perekaman (timer/jeda/lanjut) saat merekam, kami memerlukan izin overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed': 'Tidak dapat membuka pengaturan sistem secara otomatis. Silakan buka Pengaturan dan aktifkan izin overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'overlayPermissionTranslationDesc':
'Untuk menampilkan hasil terjemahan saat panggilan atau terjemahan audio/video, kami memerlukan izin overlay. Ini memungkinkan Anda melihat terjemahan real-time saat menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc':
'Untuk menampilkan bilah mengambang perekaman (timer/jeda/lanjut) saat merekam, kami memerlukan izin overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Tidak dapat membuka pengaturan sistem secara otomatis. Silakan buka Pengaturan dan aktifkan izin overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -540,36 +575,38 @@ const Map<String, String> idID = {
'editTemplate': 'Edit Template',
'createTemplate': 'Buat Template',
'name': 'Nama',
'templateContentHint': 'Silakan masukkan konten template! Tips: Klik tombol AI di atas untuk membuat konten template secara cepat berdasarkan nama dan deskripsi yang Anda masukkan',
'templateContentHint':
'Silakan masukkan konten template! Tips: Klik tombol AI di atas untuk membuat konten template secara cepat berdasarkan nama dan deskripsi yang Anda masukkan',
'inputNameHint': 'Silakan masukkan nama',
'inputDescHint': 'Silakan masukkan deskripsi',
'custom': 'Kustom',
'pleaseEnter': 'Silakan masukkan',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'viewAll': 'Lihat semua',
'recordingLanguage': 'Bahasa Rekaman',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'meetingGenerateNow': 'Buat sekarang',
'keyEventsAnalyzed': 'Menganalisis {count} peristiwa penting.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
'Analisis AI mengidentifikasi peristiwa penting dalam rekaman, sehingga Anda dapat memilih peristiwa penting untuk pembuatan AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'importingLocalRecordings': 'Mengimpor rekaman lokal...',
'importFailed': 'Gagal mengimpor file: {filePath}, kesalahan: {error}',
'importSuccess': 'Berhasil mengimpor {count} rekaman lokal',
'importError': 'Impor gagal: {error}',
'pleaseSelectAudioFile': 'Silakan pilih file audio',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
'shareFailed': 'Berbagi gagal: {error}',
'fileProcessingFailed':
'Pemrosesan file gagal: {filePath}, kesalahan: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Simpan Peta Pikiran',
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
'shareSuccess': 'Berbagi Berhasil',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
@ -605,26 +642,27 @@ const Map<String, String> idID = {
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'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).',
'Sinkronkan rekaman Anda ke cloud secara otomatis; Anda dapat memutar, mengelola, dan membagikan rekaman melalui VOITRANS APP atau VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
'transcriptionRecord': 'Catatan Transkripsi',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'transcriptionRecords': 'Catatan Transkripsi',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'enabled': 'Diaktifkan',
'disabled': 'Dinonaktifkan',
'myVoitransDevice': 'Perangkat VOITRANS Saya',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'bindDeviceToActivate':
'Ikat perangkat Voitrans untuk mengaktifkan keanggotaan Starter',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员与升级
@ -648,7 +686,7 @@ const Map<String, String> idID = {
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'Ekstrak informasi lebih dalam dari rekaman secara cerdas; buat tabel data, kesimpulan diskusi utama, daftar tugas, email laporan, dan konten berformat lainnya dengan sekali klik.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
@ -656,13 +694,13 @@ const Map<String, String> idID = {
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'Rekaman dan transkripsi Anda akan disimpan dengan aman di server cloud khusus, dengan enkripsi penuh saat unggah dan unduh untuk memastikan privasi dan keamanan.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
'Ekspor rekaman audio, teks transkripsi, dan ringkasan Anda dalam berbagai format (TXT, PDF, JPEG) sesuai kebutuhan.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
@ -692,7 +730,7 @@ const Map<String, String> idID = {
'purchase': 'Purchase',
// Meeting模块 - 录音语言
'recordLanguage': 'Recording Language',
'recordLanguage': 'Bahasa Rekaman',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
@ -719,10 +757,10 @@ const Map<String, String> idID = {
"translationRecharge": "Pembayaran Terjemahan",
"meetingAssistantRecharge": "Pembayaran Asisten Rapat",
"cloudSync": "Pembayaran Sinkronisasi awan",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"memberService": "Layanan Anggota",
"bindRewardTitle": "Hadiah",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"Hadiah pengikatan perangkat pertama telah diberikan. Ketuk OK untuk menutup.",
"joinDevice": "Perangkat terhubung:",
"accountId": "ID Akun:",
"systemSetting": "Pengaturan Sistem",
@ -771,19 +809,20 @@ const Map<String, String> idID = {
"loading": "Memuat...",
// 设备管理模块
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeUnknown": "Perangkat Tidak Dikenal",
"deviceTypeClassicBluetoothHeadset": "Headset Bluetooth Klasik",
"deviceTypeBleBluetoothHeadset": "Headset Bluetooth BLE",
"deviceTypeSmartVoiceRecorder": "Perekam Suara Cerdas",
"deviceTypeSmartEye": "Kacamata Pintar",
"unbind": "Putuskan Ikatan",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noDevicesBound": "Belum ada perangkat yang terikat",
"pleaseBindDeviceFirst":
"Silakan ikat perangkat terlebih dahulu untuk dikelola",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"Apakah Anda yakin ingin melepas ikatan perangkat \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
// Agent模块 - 主界面
@ -815,9 +854,10 @@ const Map<String, String> idID = {
"loadMoreMessages": "Muat lebih banyak pesan...",
"loadFailedClickRetry": "Gagal memuat, klik untuk mencoba lagi",
"swipeUpForMore": "Geser ke atas untuk lebih banyak",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"callingTool": "Saya sedang membantu Anda, harap tunggu!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Saat diaktifkan: AI tidak akan terganggu oleh suara Anda saat berbicara dan hanya dapat menangani satu putaran percakapan. Untuk memulai putaran baru, cukup ucapkan kata bangun.',
'voice_interrupt_tip':
'Saat diaktifkan: AI tidak akan terganggu oleh suara Anda saat berbicara dan hanya dapat menangani satu putaran percakapan. Untuk memulai putaran baru, cukup ucapkan kata bangun.',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -826,7 +866,7 @@ const Map<String, String> idID = {
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"navigationTo": "Tolong bantu saya menavigasi ke", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
@ -874,6 +914,13 @@ const Map<String, String> idID = {
'Kami ingin tahu alasan Anda melaporkan, Anda dapat menjelaskan masalah yang Anda hadapi.',
'generatedByAi': 'Dihasilkan oleh 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模块 - 音乐卡片
'recommendedMusic': 'Berikut adalah beberapa musik yang direkomendasikan:',
'playList': 'Daftar Putar',
@ -894,6 +941,30 @@ const Map<String, String> idID = {
"bicycling": "Bersepeda",
"tsransit": "Transportasi Umum",
// Agent模块 - 导航选择
'selectNavigationApp': 'Pilih Aplikasi Navigasi',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigasi dengan Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigasi dengan Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigasi dengan Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigasi dengan Apple Maps',
'builtInNavigation': 'Navigasi Bawaan',
'useBuiltInNavigation': 'Navigasi dengan peta bawaan',
'navigationStartFailed': 'Gagal memulai navigasi',
'cannotPlayMusicListRetryLater':
'Tidak dapat memutar daftar musik, silakan coba lagi nanti',
'cannotPlaySong': 'Tidak dapat memutar lagu',
'openMapError': 'Kesalahan saat membuka peta',
'pleaseInstallAmapApp': 'Silakan instal aplikasi Amap terlebih dahulu',
'pleaseInstallBaiduMapApp':
'Silakan instal aplikasi Baidu Maps terlebih dahulu',
'appleMapStartFailed': 'Apple Maps gagal dimulai',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Kesalahan saat membuka Apple Maps',
// Agent模块 - 天气卡片
'weatherQuery': 'Memeriksa kondisi cuaca:',
'highest': 'Tertinggi',
@ -947,8 +1018,8 @@ const Map<String, String> idID = {
"strongWind": "Angin kencang",
// 翻译模块 - 中间层
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
"pictureTranslation": "Terjemahan Gambar",
"textTranslation": "Terjemahan Teks",
// 翻译模块 - 主页
"translationHistory": "Riwayat Terjemahan",
@ -958,22 +1029,33 @@ const Map<String, String> idID = {
"phoneUser": "Pengguna Telepon",
"selectSourceLanguage": "Pilih bahasa sumber",
"selectTargetLanguage": "Pilih bahasa target",
"me": "Me",
"counterPart": "Counterpart",
"me": "Saya",
"counterPart": "Lawan Bicara",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
"autoDetect": "Auto Detect", // 自动检测
"Pastikan headset Bluetooth terhubung ke ponsel dan sedang dalam status panggilan",
"autoDetect": "Deteksi Otomatis", // 自动检测
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
"languageDetectionFailed": "Deteksi bahasa gagal",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Nonaktifkan Jendela Mengambang',
'enableFloatingWindow': 'Aktifkan Jendela Mengambang',
'permissionTip': 'Tips Izin',
'micPermissionRequiredForRecording': 'Izin mikrofon diperlukan untuk merekam',
'deleteTranslationRecordError':
'Kesalahan menghapus catatan terjemahan: @error',
"translationFailed": "Terjemahan gagal",
"translating": "Sedang menerjemahkan",
"translate": "Terjemahkan",
"pleaseInputText": "Silakan masukkan teks",
"inputTextToTranslate": "Silakan masukkan teks untuk diterjemahkan",
"textTooLong": "Teks terlalu panjang, maksimal 5000 karakter",
// 翻译模块 - 历史记录
"noTranslationHistory": "Belum ada riwayat",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"historyRecords": "Catatan Riwayat",
"clearResults": "Hapus Hasil",
"clearHistory": "Hapus Riwayat",
"clearHistoryConfirm":
"Apakah Anda yakin ingin menghapus semua riwayat terjemahan? Tindakan ini tidak dapat dibatalkan.",
@ -983,54 +1065,54 @@ const Map<String, String> idID = {
"Apakah Anda yakin ingin menghapus semua rekaman terjemahan untuk sesi ini? Tindakan ini tidak dapat dibatalkan.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"selectImageSource": "Pilih Sumber Gambar",
"imagePreview": "Pratinjau Gambar",
"translationResult": "Hasil Terjemahan",
"recognitionResult": "Hasil Pengenalan",
"translatedImagePreview": "Pratinjau Gambar Terjemahan",
"translatedImageLoadFailed": "Gagal memuat gambar terjemahan",
"pleaseSelectImage": "Silakan pilih gambar",
"imageLoadFailed": "Gagal memuat gambar",
"imageQuality": "Kualitas Gambar",
"maxSize": "Ukuran Maks",
"close": "Tutup",
"setImageQuality": "Atur Kualitas Gambar",
"currentQuality": "Kualitas saat ini: @value%",
"setMaxSize": "Atur Ukuran Maks",
"currentMaxSize": "Saat ini: @pxpx",
"waitingForAction": "Menunggu tindakan",
"pleaseSelectImageToStart": "Silakan pilih gambar untuk memulai",
"chooseImage": "Pilih Gambar",
"openingCamera": "Membuka kamera...",
"openingPhotoAlbum": "Membuka album foto...",
"cancelled": "Dibatalkan",
"userCancelledSelection": "Pengguna membatalkan pilihan",
"translatingImage": "Sedang menerjemahkan gambar",
"callingImageTranslateService": "Memanggil layanan terjemahan gambar...",
"savingRecord": "Menyimpan catatan",
"savingTranslationResult": "Menyimpan hasil terjemahan...",
"translationCompleted": "Terjemahan Selesai",
"allStepsCompleted": "Semua langkah selesai",
"processingFailed": "Pemrosesan Gagal",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"Pemrosesan gambar atau terjemahan gagal. Silakan coba lagi.\nKesalahan: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"emptyTranslationResult": "API terjemahan gambar mengembalikan hasil kosong",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"Terjemahan gambar gagal. Masalah jaringan atau batas laju. Silakan coba lagi nanti",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"Pengecualian API terjemahan gambar. Periksa jaringan dan coba lagi",
"permissionRequired": "Izin Diperlukan",
"cameraPermissionRequired": "Izin kamera diperlukan untuk mengambil foto",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"Izin album foto diperlukan untuk memilih gambar",
"translationDetails": "Detail Terjemahan",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"translationTime": "Waktu Terjemahan",
"shareInDevelopment": "Sharing feature under development",
// 翻译模块 - 录音文件
@ -1127,16 +1209,16 @@ const Map<String, String> idID = {
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'Kami memerlukan izin penyimpanan agar Anda dapat memilih dan mengunggah file audio.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
'Terdeteksi Anda telah menolak izin penyimpanan secara permanen. Untuk terus menggunakan fitur ini, buka pengaturan aplikasi untuk mengaktifkan izin penyimpanan secara manual.',
'getPermissionStatusFailed': 'Gagal mendapatkan status izin',
'communicationPermissions': 'Izin Komunikasi',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'bluetoothPermissions': 'Izin Bluetooth',
'notificationPermissions': 'Izin Notifikasi',
'storagePermissions': 'Izin Penyimpanan',
'microphonePermissions': 'Izin Mikrofon',
'alarmPermissions': 'Izin Alarm',
'calendarPermissions': 'Izin Kalender',
'locationPermissions': 'Izin Lokasi',
'phone': 'Telepon',
@ -1168,80 +1250,84 @@ const Map<String, String> idID = {
'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan izin telepon',
'smsPermissionDetailDesc': 'Fungsi mengirim SMS memerlukan izin SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'Izin ini diperlukan untuk mengatur alarm tepat waktu dan memastikan pengingat berbunyi tepat waktu',
'calendarWritePermissionDetailDesc':
'Membuat acara kalender memerlukan izin menulis kalender',
'calendarFullAccessPermissionDetailDesc':
'Mengelola acara kalender memerlukan izin penuh kalender',
'locationPermissionDetailDesc':
'Mendapatkan informasi lokasi memerlukan izin lokasi',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDesc': 'Digunakan untuk mengakses informasi kontak',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'Fungsi panggilan telepon dan SMS memerlukan izin kontak untuk memilih kontak',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'Digunakan untuk menyambungkan dan mengelola perangkat Bluetooth',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'Menyambungkan ke headphone Bluetooth dan perangkat lain memerlukan izin Bluetooth',
'bluetoothScanPermissionDesc':
'Digunakan untuk memindai perangkat Bluetooth di sekitar',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'Memindai perangkat Bluetooth di sekitar memerlukan izin pemindaian Bluetooth',
'bluetoothConnectPermissionDesc':
'Digunakan untuk menyambungkan ke perangkat Bluetooth',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'Menyambungkan ke perangkat Bluetooth memerlukan izin koneksi Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'Aplikasi memerlukan izin notifikasi untuk mengirim peringatan dan pesan penting kepada Anda',
'appNeedsPermissionForFullFunction':
'Aplikasi memerlukan izin ini untuk fungsionalitas penuh',
'permanentDenialText':
'Anda telah menolak izin {permission} secara permanen, silakan buka pengaturan aplikasi untuk mengaktifkannya',
'goToSettings': 'Buka Pengaturan',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothConnect': 'Koneksi Bluetooth',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'Aplikasi memerlukan izin pemindaian Bluetooth untuk memindai perangkat Bluetooth di sekitar.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'Aplikasi memerlukan izin koneksi Bluetooth untuk menyambungkan ke perangkat Bluetooth.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'Aplikasi memerlukan izin lokasi untuk memindai perangkat Bluetooth.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'Izin pemindaian Bluetooth telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'Izin koneksi Bluetooth telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'Izin lokasi telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'Izin notifikasi diperlukan untuk menampilkan status pemutaran musik.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'Izin lokasi diperlukan untuk mendapatkan lokasi saat ini.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'Anda telah menolak izin notifikasi secara permanen, silakan buka pengaturan untuk mengaktifkannya.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
'Anda telah menolak izin lokasi secara permanen, silakan buka pengaturan untuk mengaktifkannya.',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'Kami memerlukan izin mikrofon untuk merekam konten audio.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'Kami memerlukan izin penyimpanan agar Anda dapat memilih dan mengunggah file audio.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'Izin mikrofon telah ditolak secara permanen. Untuk terus menggunakan fitur ini, buka pengaturan aplikasi untuk mengaktifkan izin mikrofon secara manual.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'Izin penyimpanan telah ditolak secara permanen. Untuk terus menggunakan fitur ini, buka pengaturan aplikasi untuk mengaktifkan izin penyimpanan secara manual.',
'permissionUtilNeed': 'Perlu ',
'permissionUtilPermission': ' Izin',
'permissionUtilRestricted': ' Izin Dibatasi',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'Fitur ini tidak tersedia atau dibatasi pada perangkat saat ini, silakan periksa pengaturan perangkat atau pembatasan sistem',
'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigasi sedang berlangsung',
'native.notification.navigation.keepRunning': 'Sedang menavigasi, biarkan aplikasi tetap berjalan',
'native.notification.navigation.keepRunning':
'Sedang menavigasi, biarkan aplikasi tetap berjalan',
'native.notification.bleAgent.running': 'Agen asisten suara sedang berjalan',
'native.notification.audioRecording.recording': 'Sedang merekam audio, ketuk untuk kembali ke aplikasi',
'native.notification.audioRecording.recording':
'Sedang merekam audio, ketuk untuk kembali ke aplikasi',
'native.notification.music.waiting': 'Menunggu untuk diputar',
'native.notification.music.previous': 'Sebelumnya',
'native.notification.music.next': 'Berikutnya',
@ -1319,17 +1405,18 @@ const Map<String, String> idID = {
'bleConnectionFailed': 'Koneksi BLE gagal',
'deviceAuthorizationFailedCheckCode':
'Otorisasi perangkat gagal, harap periksa kode otorisasi',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideTitle':
'Perlu Mengaktifkan Bluetooth Secara Manual', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Silakan ikuti langkah-langkah berikut:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'Aktifkan Bluetooth: Pengaturan → Bluetooth → Nyalakan', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'Hubungkan Perangkat: Temukan perangkat Anda di "Perangkat Saya" lalu ketuk untuk menghubungkan', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'Kembali ke aplikasi untuk melanjutkan proses pemasangan', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
'Tip: Anda juga dapat menekan lama ikon Bluetooth di Pusat Kontrol untuk cepat membuka pengaturan Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'Saya Mengerti', // 我知道了
// 配对模块 - 绑定奖励
"firstBindRewardTitle": "Welcome Reward",
@ -1370,13 +1457,14 @@ const Map<String, String> idID = {
"connectionFailed": "Koneksi Gagal",
"retryConnection": "Coba Sambungkan Kembali",
"ota_updateNow": "Perbarui Sekarang",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaVersionInfoFailed":
"Gagal mendapatkan info versi. Silakan coba lagi nanti.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"Tidak dapat memperoleh info perangkat. Periksa koneksi lalu coba lagi.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"Tidak dapat mengidentifikasi perangkat. Sambungkan kembali lalu coba lagi.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"Versi firmware tidak normal. Sambungkan kembali lalu coba lagi.",
"keepConnectedDontClose":
"Jaga agar perangkat tetap terhubung, jangan tutup aplikasi",
"doNotDisconnect": "Jangan putuskan sambungan",
@ -1385,6 +1473,58 @@ const Map<String, String> idID = {
"removeEarbudsEnsureBattery":
"Keluarkan kedua earbud, dan pastikan baterai keduanya di atas 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Versi baru @version ditemukan',
'otaConfirmUpdateNow': 'Perbarui sekarang?',
'otaUpdate': 'Perbarui',
'otaUpgradeSuccess': 'Pembaruan Berhasil',
'otaUpgradeCompleteRepair':
'Pembaruan firmware selesai!\n\nPerangkat perlu dipasangkan ulang agar berfungsi dengan baik. Buka halaman pemasangan sekarang?',
'otaPairLater': 'Pasangkan Nanti',
'otaPairNow': 'Pasangkan Sekarang',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Kesalahan saat memeriksa koneksi BLE: @error',
'otaBleNotConnected': 'Perangkat BLE Tidak Terhubung',
'otaBleNeedConnection':
'Pembaruan firmware memerlukan koneksi perangkat BLE\nPastikan perangkat terhubung dengan benar lalu coba lagi',
'otaDeviceInfoUnavailableTitle': 'Info Perangkat Tidak Tersedia',
'otaCannotGetDeviceInfo':
'Tidak dapat memperoleh info perangkat\nSilakan sambungkan kembali perangkat atau coba lagi nanti',
'otaBleCheckFailed': 'Pemeriksaan Koneksi BLE Gagal',
'otaCannotGetDeviceInfoCheckConnection':
'Tidak dapat memperoleh info perangkat, periksa koneksi perangkat',
'otaCannotGetProductInfoWithName':
'Tidak dapat memperoleh info produk, nama perangkat: @deviceName',
'otaCannotGetBatteryInfo': 'Tidak dapat memperoleh info baterai yang valid',
'otaLowBattery': 'Baterai Lemah',
'otaSingleBatteryLow':
'Baterai perangkat terlalu rendah untuk pembaruan firmware\nSyarat: baterai harus di atas 20%\nSaat ini: @ear @battery%\nSilakan isi daya lalu coba lagi',
'otaDoubleBatteryLow':
'Baterai perangkat terlalu rendah untuk pembaruan firmware\nSyarat: kedua earbud harus di atas 20%\nSaat ini: Kiri @left%, Kanan @right%\nSilakan isi daya lalu coba lagi',
'otaBatteryCheckFailed': 'Pemeriksaan Baterai Gagal',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Pembaruan ini mencakup optimasi performa dan perbaikan bug.',
'otaGetLatestVersionFailed': 'Gagal mendapatkan info versi terbaru',
'otaGetVersionInfoFailed': 'Gagal mendapatkan info versi',
'otaCheckingDeviceStatus': 'Memeriksa status perangkat...',
'otaDownloadFailedCheckNetwork': 'Unduhan gagal, periksa koneksi jaringan',
'otaDownloadFailed': 'Unduhan Gagal',
'otaPreparingConnection': 'Menyiapkan koneksi perangkat...',
'otaConnectingDevice': 'Menyambungkan ke perangkat...',
'otaUpgradeStarted': 'Pembaruan OTA dimulai...',
'otaUpgradeProgressWithPercent': 'Progres pembaruan: @percent%',
'otaUpgradeSuccessComplete': 'Pembaruan berhasil diselesaikan',
'otaUpgradeFailedWithCode': 'Pembaruan gagal, kode kesalahan: @code',
'otaUpgradeFailedTitle': 'Pembaruan Gagal',
'otaUpgradeFailedDesc':
'Periksa koneksi perangkat atau paket pembaruan, kode kesalahan: @code',
'otaDeviceDisconnected': 'Perangkat terputus',
'otaDeviceConnected': 'Perangkat terhubung',
// 音乐模块
"noMusic": "Tidak Ada Musik", // 暂无音乐
"noPlayingMusic": "Tidak ada musik yang diputar", // 暂无播放音乐

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

@ -169,6 +169,26 @@ const Map<String, String> isIS = {
'right': 'Hægri',
'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...",
"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 í.',
'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模块 - 音乐卡片
'recommendedMusic': 'Hér eru nokkur lög sem mælt er með:',
'playList': 'Spilunarlisti',
@ -903,6 +930,28 @@ const Map<String, String> isIS = {
"bicycling": 'Hjólreiðar',
"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模块 - 天气卡片
'weatherQuery': 'Fyrirspurn um veðurskilyrði:',
'highest': 'Hæst',
@ -975,8 +1024,18 @@ const Map<String, String> isIS = {
// 翻译模块 - 文本翻译
"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",
"translating": "Þýði",
"translate": "Þýða",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Vinsamlegast sláðu inn texta til að þýða",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1397,6 +1456,49 @@ const Map<String, String> isIS = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> itIT = {
// 通用
'continue': 'Continua',
'confirm': 'Conferma',
@ -172,6 +171,29 @@ const Map<String, String> itIT = {
'checkConnectionStatusFailed':
'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...",
"exploreSlogan": "Auricolari intelligenti, possibilità infinite",
@ -265,12 +287,16 @@ const Map<String, String> itIT = {
'paymentException': 'Eccezione di pagamento',
'paymentLaunchFailed': 'Avvio del pagamento non riuscito',
'paymentExceptionWithError': 'Eccezione di pagamento: @error',
'paymentProcessingCheckLater': 'Il tuo ordine è in fase di elaborazione. Controlla più tardi.',
'paymentResultQueryException': 'Impossibile interrogare il risultato del pagamento: @error',
'orderConfirmedQuotaRefreshed': 'Ordine confermato. La tua quota è stata aggiornata.',
'paymentProcessingCheckLater':
'Il tuo ordine è in fase di elaborazione. Controlla più tardi.',
'paymentResultQueryException':
'Impossibile interrogare il risultato del pagamento: @error',
'orderConfirmedQuotaRefreshed':
'Ordine confermato. La tua quota è stata aggiornata.',
'paymentCompletedConfirming': 'Pagamento completato. Conferma in corso…',
'paymentCancelled': 'Pagamento annullato',
'paypalOpenedCompleteInBrowser': 'PayPal aperto. Completa il pagamento nel tuo browser.',
'paypalOpenedCompleteInBrowser':
'PayPal aperto. Completa il pagamento nel tuo browser.',
'paypalOpenFailed': 'Impossibile aprire la pagina di pagamento PayPal',
'paymentTestTitle': 'Test di pagamento',
'paymentTestOrderInfo': 'Informazioni ordine di prova',
@ -287,7 +313,8 @@ const Map<String, String> itIT = {
'errorInfoWithMessage': 'Errore: @message',
'retest': 'Ripeti il test',
'paymentTestInstructionsTitle': 'Istruzioni',
'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",
'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",
'startingWechatPayment': 'Avvio di WeChat Pay...',
'startingAlipayPayment': 'Avvio di Alipay...',
'wechatPaymentSuccess': 'Pagamento WeChat Pay riuscito!',
@ -502,16 +529,24 @@ const Map<String, String> itIT = {
'meetingRecordExitMessage': 'Scegli cosa fare prima di uscire', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Termina e salva', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Termina senza salvare', // 结束录音不保存
'meetingRecordContinueInBackground': 'Continua a registrare in background', // 后台继续录音
'meetingRecordStopTimeout': 'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试
'meetingRecordStopFailed': 'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试
'meetingRecordContinueInBackground':
'Continua a registrare in background', // 后台继续录音
'meetingRecordStopTimeout':
'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试
'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', // 悬浮窗权限
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -546,7 +581,8 @@ const Map<String, String> itIT = {
'editTemplate': 'Modifica modello',
'createTemplate': 'Crea modello',
'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':
'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',
'inputNameHint': 'Inserisci un nome',
'inputDescHint': 'Inserisci una descrizione',
'custom': 'Personalizzato',
@ -827,7 +863,8 @@ const Map<String, String> itIT = {
"swipeUpForMore": "Scorri verso l'alto per vedere di più",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Ecco alcuni brani musicali consigliati:',
'playList': 'Playlist',
@ -904,6 +949,29 @@ const Map<String, String> itIT = {
"bicycling": "In bicicletta",
"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模块 - 天气卡片
'weatherQuery': 'Interrogazione delle condizioni meteorologiche:',
'highest': 'Massima',
@ -976,8 +1044,20 @@ const Map<String, String> itIT = {
// 翻译模块 - 文本翻译
"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",
"translating": "Traduzione in corso",
"translate": "Traduci",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Inserisci il testo da tradurre",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1258,9 +1338,12 @@ const Map<String, String> itIT = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigazione in corso',
'native.notification.navigation.keepRunning': "Navigazione in corso, mantieni l'app attiva",
'native.notification.bleAgent.running': "L'agente assistente vocale è in esecuzione",
'native.notification.audioRecording.recording': "Registrazione audio in corso, tocca per tornare all'app",
'native.notification.navigation.keepRunning':
"Navigazione in corso, mantieni l'app attiva",
'native.notification.bleAgent.running':
"L'agente assistente vocale è in esecuzione",
'native.notification.audioRecording.recording':
"Registrazione audio in corso, tocca per tornare all'app",
'native.notification.music.waiting': 'In attesa di riproduzione',
'native.notification.music.previous': 'Indietro',
'native.notification.music.next': 'Avanti',
@ -1408,6 +1491,59 @@ const Map<String, String> itIT = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Nessuna musica in riproduzione", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> jaJP = {
// 通用
'continue': '続ける',
'confirm': '確認',
@ -160,6 +159,27 @@ const Map<String, String> jaJP = {
'right': '右',
'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機能を検索...",
"exploreSlogan": "スマートイヤホン、無限の可能性",
@ -274,7 +294,8 @@ const Map<String, String> jaJP = {
'errorInfoWithMessage': 'エラー:@message',
'retest': '再テスト',
'paymentTestInstructionsTitle': '手順',
'paymentTestInstructionsContent': '1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認',
'paymentTestInstructionsContent':
'1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認',
'startingWechatPayment': 'WeChat Payを起動中...',
'startingAlipayPayment': 'Alipayを起動中...',
'wechatPaymentSuccess': 'WeChat Pay支払い成功!',
@ -536,7 +557,8 @@ const Map<String, String> jaJP = {
'editTemplate': 'テンプレートを編集',
'createTemplate': 'テンプレートを作成',
'name': '名前',
'templateContentHint': 'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます',
'templateContentHint':
'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます',
'inputNameHint': '名前を入力してください',
'inputDescHint': '説明を入力してください',
'custom': 'カスタム',
@ -808,7 +830,8 @@ const Map<String, String> jaJP = {
"swipeUpForMore": "上にスワイプしてさらに表示",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': '有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。',
'voice_interrupt_tip':
'有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -859,6 +882,13 @@ const Map<String, String> jaJP = {
'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。',
'generatedByAi': 'AIによって生成',
// Agent模块 - 工具调用
'toolCall': 'ツール呼び出し',
'noResult': '結果なし',
'noToolCallContentToCopy': 'コピーするツール呼び出し内容がありません',
'toolCallDetails': 'ツール呼び出し詳細:',
'toolCallContentCopied': 'ツール呼び出し内容をクリップボードにコピーしました',
// Agent模块 - 音乐卡片
'recommendedMusic': 'おすすめの音楽をご紹介します:',
'playList': 'プレイリスト',
@ -879,6 +909,28 @@ const Map<String, String> jaJP = {
"bicycling": "自転車",
"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模块 - 天气卡片
'weatherQuery': '天気照会:',
'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",
"autoDetect": "Auto Detect", // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'フローティングウィンドウを無効化',
'enableFloatingWindow': 'フローティングウィンドウを有効化',
'permissionTip': '権限のヒント',
'micPermissionRequiredForRecording': '録音にはマイク権限が必要です',
'deleteTranslationRecordError': '翻訳記録の削除中にエラーが発生しました: @error',
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"translating": "翻訳中",
"translate": "翻訳",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "翻訳するテキストを入力してください",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1328,6 +1390,51 @@ const Map<String, String> jaJP = {
"updateContent": "更新内容",
"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": "音楽がありません", // 暂无音乐
"noPlayingMusic": "再生中の音楽がありません", // 暂无播放音乐

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

File diff suppressed because it is too large

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

@ -1,5 +1,4 @@
const Map<String, String> ltLT = {
// 通用
'continue': 'Tęsti',
'confirm': 'Patvirtinti',
@ -169,6 +168,29 @@ const Map<String, String> ltLT = {
'right': 'Dešinė',
'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ų...",
"exploreSlogan": "Išmaniosios ausinės, beribės galimybės",
@ -263,12 +285,16 @@ const Map<String, String> ltLT = {
'paymentException': 'Mokėjimo išimtis',
'paymentLaunchFailed': 'Mokėjimo paleidimas nepavyko',
'paymentExceptionWithError': 'Mokėjimo išimtis: @error',
'paymentProcessingCheckLater': 'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.',
'paymentResultQueryException': 'Nepavyko užklausti mokėjimo rezultato: @error',
'orderConfirmedQuotaRefreshed': 'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.',
'paymentProcessingCheckLater':
'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.',
'paymentResultQueryException':
'Nepavyko užklausti mokėjimo rezultato: @error',
'orderConfirmedQuotaRefreshed':
'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.',
'paymentCompletedConfirming': 'Mokėjimas baigtas. Patvirtinama…',
'paymentCancelled': 'Mokėjimas atšauktas',
'paypalOpenedCompleteInBrowser': 'PayPal atidarytas. Užbaikite mokėjimą naršyklėje.',
'paypalOpenedCompleteInBrowser':
'PayPal atidarytas. Užbaikite mokėjimą naršyklėje.',
'paypalOpenFailed': 'Nepavyko atidaryti PayPal mokėjimo puslapio',
'paymentTestTitle': 'Mokėjimo testas',
'paymentTestOrderInfo': 'Testinio užsakymo informacija',
@ -285,7 +311,8 @@ const Map<String, String> ltLT = {
'errorInfoWithMessage': 'Klaida: @message',
'retest': 'Pakartotinis testas',
'paymentTestInstructionsTitle': 'Instrukcijos',
'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ą',
'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ą',
'startingWechatPayment': 'Paleidžiamas WeChat Pay...',
'startingAlipayPayment': 'Paleidžiamas Alipay...',
'wechatPaymentSuccess': 'WeChat Pay sėkmingas!',
@ -496,19 +523,27 @@ const Map<String, String> ltLT = {
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'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', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Baigti neišsaugojus', // 结束录音不保存
'meetingRecordContinueInBackground': 'Tęsti įrašymą fone', // 后台继续录音
'meetingRecordStopTimeout': 'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试
'meetingRecordStopFailed': 'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试
'meetingRecordStopTimeout':
'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试
'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ų', // 悬浮窗权限
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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ų.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -543,7 +578,8 @@ const Map<String, String> ltLT = {
'editTemplate': 'Redaguoti šabloną',
'createTemplate': 'Sukurti šabloną',
'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':
'Prašome įvesti šablono turinį! Patarimas: Spustelėkite AI mygtuką viršuje, kad greitai sugeneruotumėte šablono turinį pagal įvestą pavadinimą ir aprašymą',
'inputNameHint': 'Prašome įvesti pavadinimą',
'inputDescHint': 'Prašome įvesti aprašymą',
'custom': 'Pasirinktinis',
@ -822,7 +858,8 @@ const Map<String, String> ltLT = {
"swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Štai keletas rekomenduojamų dainų:',
'playList': 'Grojaraštis',
@ -898,6 +942,29 @@ const Map<String, String> ltLT = {
"bicycling": "Važiavimas dviračiu",
"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模块 - 天气卡片
'weatherQuery': 'Užklausa apie oro sąlygas:',
'highest': 'Aukščiausia',
@ -970,8 +1037,19 @@ const Map<String, String> ltLT = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Įveskite tekstą, kurį norite išversti",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1247,9 +1325,11 @@ const Map<String, String> ltLT = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija vyksta',
'native.notification.navigation.keepRunning': 'Navigacija, laikykite programą atidarytą',
'native.notification.navigation.keepRunning':
'Navigacija, laikykite programą atidarytą',
'native.notification.bleAgent.running': 'Balso asistento agentas veikia',
'native.notification.audioRecording.recording': 'Garso įrašas, bakstelėkite, kad grįžtumėte į programą',
'native.notification.audioRecording.recording':
'Garso įrašas, bakstelėkite, kad grįžtumėte į programą',
'native.notification.music.waiting': 'Laukiama grojimo',
'native.notification.music.previous': 'Ankstesnis',
'native.notification.music.next': 'Kitas',
@ -1397,6 +1477,59 @@ const Map<String, String> ltLT = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> lvLV = {
// 通用
'continue': 'Turpināt',
'confirm': 'Apstiprināt',
@ -19,11 +18,11 @@ const Map<String, String> lvLV = {
"unknownError": "Nezināma kļūda",
"asrConnectionFailed":
"Neizdevās izveidot savienojumu ar runas atpazīšanas pakalpojumu. Pārbaudiet tīklu vai mēģiniet vēlreiz vēlāk.",
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
"justNow": "Tikko",
"minutesAgo": "Pirms @minutes minūtēm",
"yesterday": "Vakar",
"daysAgo": "Pirms @days dienām",
"hoursAgo": "Pirms @hours stundām",
// 启动页
"slogan": "Pasaules savienošana, pāri skaņai",
@ -170,6 +169,29 @@ const Map<String, String> lvLV = {
'right': 'Labais',
'checkConnectionStatusFailed': 'Savienojuma statusa pārbaude neizdevās',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth inicializācija neizdevās: @error',
'needBluetoothAndLocationPermission':
'Bluetooth un atrašanās vietas atļaujas ir nepieciešamas, lai skenētu ierīces',
'permissionRequestFailedWithError': 'Atļaujas pieprasījums neizdevās: @error',
'needPermission': 'Nepieciešama atļauja',
'blePermissionDialogContent':
'Šai lietotnei ir nepieciešamas Bluetooth un atrašanās vietas atļaujas, lai skenētu ierīces. Lūdzu, iespējojiet tās iestatījumos.',
'needEnableBluetooth': 'Iespējot Bluetooth',
'enableBluetoothDialogContent':
'Lūdzu, iespējojiet Bluetooth, lai skenētu un savienotu ierīces.',
'bleScanFailedWithError': 'Skenēšana neizdevās: @error',
'bleConnectionSuccess': 'Savienojums veiksmīgs',
'bleConnectedToDevice': 'Savienots ar @device',
'bleConnectionFailedWithError': 'Savienojums neizdevās: @error',
'bleDisconnected': 'Atvienots',
'bleDeviceDisconnected': 'Ierīce atvienota',
'bleDisconnectFailedWithError': 'Atvienošana neizdevās: @error',
'signalStrong': 'Spēcīgs',
'signalMedium': 'Vidējs',
'signalWeak': 'Vājš',
'signalVeryWeak': 'Ļoti vājš',
// 发现页
"searchAi": "Meklēt AI funkcijas...",
"exploreSlogan": "Viedās austiņas, bezgalīgas iespējas",
@ -196,55 +218,55 @@ const Map<String, String> lvLV = {
"scene": "Scenārijs",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"aiChat": "AI tērzēšana",
"translationStats": "Tulkošanas statistika",
"meetingStats": "Sapulču statistika",
"today": "Šodien",
"thisWeek": "Šonedēļ",
"thisMonth": "Šomēnes",
"history": "Vēsture",
"currentSessionStats": "Pašreizējās sesijas statistika",
"translationCount": "Tulkojumu skaits",
"sessionDuration": "Sesijas ilgums",
"characters": "Rakstzīmes",
"recordingDuration": "Ieraksta ilgums",
"totalApiCalls": "Kopējie API izsaukumi",
"sessionCount": "Sesiju skaits",
"totalCharacters": "Kopējais rakstzīmju skaits",
"apiCallStats": "API izsaukumu statistika",
"translationApi": "Tulkošanas API",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed",
"dataVolumeStats": "Datu apjoma statistika",
"sourceTextCharacters": "Avota teksta rakstzīmes",
"ttsTextCharacters": "TTS teksta rakstzīmes",
"effectiveAudioDuration": "Efektīvais audio ilgums",
"totalSessionDuration": "Kopējais sesijas ilgums",
"costStats": "Izmaksu statistika",
"estimatedCost": "Aptuvenas izmaksas",
"dailyCostThreshold": "Dienas izmaksu slieksnis",
"monthlyCostThreshold": "Mēneša izmaksu slieksnis",
"usageBehaviorStats": "Lietošanas paradumu statistika",
"mostUsedLanguagePair": "Visbiežāk lietotais valodu pāris",
"mostUsedMode": "Visbiežāk lietotais režīms",
"asrApiCalls": "ASR izsaukumi",
"totalAudioDuration": "Kopējais audio ilgums",
"audioFileSize": "Audio faila lielums",
"transcriptBytes": "Transkripcijas baiti",
"loadFailed": "Ielāde neizdevās",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"Statistikas ielāde neizdevās. Lūdzu, mēģiniet vēlreiz vēlāk.",
"cleanupComplete": "Tīrīšana pabeigta",
"cleanedOldData": "Notīrīti dati, kas vecāki par 90 dienām",
"exportFeature": "Eksporta funkcija",
"exportInDevelopment": "Datu eksports tiek izstrādāts",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'Pieejamās paketes',
'remainingQuota': 'Atlikušā kvota',
'totalQuota': 'Kopējā kvota',
'remaining': 'Atlikušais',
'featureDescription': 'Funkcijas apraksts',
'paymentSuccess': 'Maksājums veiksmīgs',
'paymentFailed': 'Maksājums neizdevās',
'gotIt': 'Sapratu',
@ -263,12 +285,16 @@ const Map<String, String> lvLV = {
'paymentException': 'Maksājuma izņēmums',
'paymentLaunchFailed': 'Maksājuma palaišana neizdevās',
'paymentExceptionWithError': 'Maksājuma izņēmums: @error',
'paymentProcessingCheckLater': 'Jūsu pasūtījums tiek apstrādāts. Lūdzu, pārbaudiet vēlāk.',
'paymentResultQueryException': 'Neizdevās pieprasīt maksājuma rezultātu: @error',
'orderConfirmedQuotaRefreshed': 'Pasūtījums apstiprināts. Jūsu kvota ir atjaunināta.',
'paymentProcessingCheckLater':
'Jūsu pasūtījums tiek apstrādāts. Lūdzu, pārbaudiet vēlāk.',
'paymentResultQueryException':
'Neizdevās pieprasīt maksājuma rezultātu: @error',
'orderConfirmedQuotaRefreshed':
'Pasūtījums apstiprināts. Jūsu kvota ir atjaunināta.',
'paymentCompletedConfirming': 'Maksājums pabeigts. Apstiprina…',
'paymentCancelled': 'Maksājums atcelts',
'paypalOpenedCompleteInBrowser': 'PayPal atvērts. Lūdzu, pabeidziet maksājumu pārlūkprogrammā.',
'paypalOpenedCompleteInBrowser':
'PayPal atvērts. Lūdzu, pabeidziet maksājumu pārlūkprogrammā.',
'paypalOpenFailed': 'Nevar atvērt PayPal maksājuma lapu',
'paymentTestTitle': 'Maksājuma tests',
'paymentTestOrderInfo': 'Testa pasūtījuma informācija',
@ -285,7 +311,8 @@ const Map<String, String> lvLV = {
'errorInfoWithMessage': 'Kļūda: @message',
'retest': 'Atkārtots tests',
'paymentTestInstructionsTitle': 'Instrukcijas',
'paymentTestInstructionsContent': '1. Izvēlieties testa summu (ieteicams: ¥0,01)\n2. Noklikšķiniet uz maksājuma pogas, lai sāktu\n3. Pabeidziet maksājumu maksājuma lietotnē\n4. Atgriezieties, lai pārbaudītu rezultātu',
'paymentTestInstructionsContent':
'1. Izvēlieties testa summu (ieteicams: ¥0,01)\n2. Noklikšķiniet uz maksājuma pogas, lai sāktu\n3. Pabeidziet maksājumu maksājuma lietotnē\n4. Atgriezieties, lai pārbaudītu rezultātu',
'startingWechatPayment': 'Palaižam WeChat Pay...',
'startingAlipayPayment': 'Palaižam Alipay...',
'wechatPaymentSuccess': 'WeChat Pay veiksmīgs!',
@ -299,157 +326,163 @@ const Map<String, String> lvLV = {
'alipayPaymentLaunchFailed': 'Neizdevās palaist Alipay',
'cannotLaunchAlipayPayment': 'Nevar palaist Alipay',
'alipayPaymentException': 'Alipay izņēmums',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "Nepietiekams atlikums",
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
'Nepietiekams atlikums, lūdzu, dodieties uz atbilstošo papildināšanas lapu, lai papildinātu.',
"recharge": 'Doties uz papildināšanu',
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
'AI dalība ir beigusies, lūdzu, dodieties uz dalības papildināšanas lapu, lai atjaunotu.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Mūzika un ieteikumi',
'navigationAndRoutes': 'Navigācija un maršruti',
'nearbySearch': 'Meklēšana tuvumā',
'newsInformation': 'Jaunumi',
'communicationAssistant': 'Komunikācijas palīgs',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Garāka sarunu kvota, vairāk rīku izsaukumu, paplašināts konteksta garums.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Piemērots aģenta jautājumiem un atbildēm, apkopošanai, analīzei un uzdevumu izpildei.',
'musicSearchPlaybackControl':
'Mūzikas bibliotēkas meklēšana un atskaņošanas vadība',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Viedais atskaņošanas saraksts un līdzīgu dziesmu ieteikumi',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'Maršrutu plānošana un sastrēgumu izvairīšanās',
'voiceBroadcastAndWaypoints': 'Balss apraide un maršruta punktu iestatījumi',
'realTimeWeatherForecast': 'Reāllaika laikapstākļi un prognoze',
'clothingAdviceAndTravelReminders': 'Apģērba padomi un ceļojumu atgādinājumi',
'poiSearchFoodGasParking':
'POI meklēšana: ēdināšana / degviela / autostāvvieta',
'ratingsHoursAndDirectRoutes': 'Vērtējumi, darba laiki un tiešie maršruti',
'hotNewsAndTopicOverview': 'Aktuālās ziņas un tēmu pārskats',
'longArticleSummariesAndKeyPoints':
'Garu rakstu kopsavilkumi un galvenie punkti',
'helpCallAndSMS': 'Palīdzība ar zvaniem un SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Veidņu ziņojumi un grafika atgādinājumi',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
'Funkcijas ir atkarīgas no ierīces atļaujām, pakalpojumu pieejamības un tīkla apstākļiem.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Reāllaika transkripcija',
'sceneLexicon': 'Scenāriju vārdnīca',
'subtitleDisplay': 'Subtitri',
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'Reāllaika sinhronā tulkošana un teksta tulkošana ar zema latentuma balsi.',
'transHeaderDesc2': 'Piemērots ceļojumiem, biznesam, runām un apmācībām.',
'translateZhEn': 'Ķīniešu-angļu tulkošana',
'lowLatencyVoiceBroadcast': 'Zema latentuma balss apraide',
'multiLangTextTranslation': 'Daudzvalodu teksta tulkošana',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'Terminoloģijas optimizācija un konteksta saglabāšana',
'lexiconTourBusinessLife': 'Ceļojumu/biznesa/dzīves vārdnīcas',
'personalVocabularyMemory': 'Personīgā vārdu krājuma atmiņa',
'conversationSubtitleLargeText': 'Sarunu subtitri / Liela teksta režīms',
'colorHighContrast': 'Augsts krāsu kontrasts',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'Tulkošanas veiktspēja ir atkarīga no mikrofona, tīkla latentuma un apkārtējā trokšņa.',
// 商品模块 - 会议商品页
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'meetingRecording': 'Sapulces ierakstīšana',
'transcriptionAndSummary': 'Transkripcija un kopsavilkums',
'keywordSearch': 'Atslēgvārdu meklēšana',
'collaborationSharing': 'Sadarbība un kopīgošana',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'Audio ierakstīšana, transkripcija, atslēgvārdu meklēšana un automātisks kopsavilkums sapulču efektivitātes uzlabošanai.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'Piemērots biznesa sapulcēm, lekciju piezīmēm un interviju protokoliem.',
'meetingAutoRecording': 'Automātiska ierakstīšana un segmentēšana',
'meetingSpeakerTagging': 'Runātāju iezīmēšana',
'meetingLongAudioTranscription': 'Garu audio transkripcija',
'meetingKeyPointSummary': 'Galveno punktu izvilkšana',
'meetingTopicNameSearch': 'Meklēšana pēc tēmas/vārda',
'meetingTimelineJump': 'Laika līnijas pārlēkšana',
'meetingExportSummary': 'Eksportēt protokolu',
'meetingMultiPlatformShare': 'Kopīgot starp platformām',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
'Lietojiet klusā vidē; veiktspēja ir atkarīga no mikrofona un tīkla.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'Priekšrocību pārskats',
'higherQuota': 'Augstāka lietošanas kvota',
'lowerUnitPrice': 'Zemāka vienības cena',
'priorityService': 'Prioritārs pakalpojums',
'exclusiveSupportChannel': 'Īpašs atbalsta kanāls',
'fastResponse': 'Ātra problēmu atbilde',
'eventsAndDiscounts': 'Pasākumi un atlaides',
'memberExclusiveEvents': 'Biedru ekskluzīvi pasākumi',
'longTermDiscountPlan': 'Ilgtermiņa atlaižu plāns',
'generalPrivileges': 'Vispārīgās privilēģijas',
'earlyAccessNewFeatures': 'Agrīna piekļuve jaunām funkcijām',
'crossDeviceSync': 'Sinhronizācija starp ierīcēm',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Faktiskās priekšrocības ir atkarīgas no paketes detaļām un var mainīties līdz ar versijām.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
'ai_001_name': 'AI pamata 100',
'ai_002_name': 'AI pamata 500',
'ai_003_name': 'AI pamata 1000',
'meet_001_name': 'Sapulču pamata 100',
'meet_002_name': 'Sapulču pamata 500',
'meet_003_name': 'Sapulču pamata 1000',
'trans_001_name': 'Tulkošanas pamata 100',
'trans_002_name': 'Tulkošanas pamata 500',
'trans_003_name': 'Tulkošanas pamata 1000',
'ai_001_desc': 'Ietver 100 lietojumus. Piekļuve galvenajām AI funkcijām.',
'ai_002_desc': 'Ietver 500 lietojumus. Piekļuve galvenajām AI funkcijām.',
'ai_003_desc': 'Ietver 1000 lietojumu. Piekļuve galvenajām AI funkcijām.',
'meet_001_desc': 'Ietver 100 sapulču ierakstus/transkripcijas.',
'meet_002_desc': 'Ietver 500 sapulču ierakstus/transkripcijas.',
'meet_003_desc': 'Ietver 1000 sapulču ierakstu/transkripciju.',
'trans_001_desc': 'Ietver 100 tulkojumus (balss/teksts).',
'trans_002_desc': 'Ietver 500 tulkojumus (balss/teksts).',
'trans_003_desc': 'Ietver 1000 tulkojumu (balss/teksts).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Lietotne: VoiTrans · Nodrošina: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP klientu apkalpošanas QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'skip': "Izlaist",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Tālāk',
'sayLilyHint': 'Sakiet “Lilija, Lilija” mikrofonā',
'imHere': 'Es esmu šeit~',
'guideWelcomeWakeAI':
'Laipni lūdzam Voitrans! Vispirms pamodiniet savu AI “Liliju”.',
'aiReplyCompleted': 'Lilija ir pabeigusi atbildi!',
'aiThinking': 'Lilija domā…',
'guideAwakenSuccess': 'Lieliski! Lilija ir nomodā — lūdziet tai palīdzēt.',
'confirmInput': 'Apstiprināt ievadi',
'guideClickSendPrefix': 'Nospiediet sūtīt, ',
'guideWeatherStart': 'Sakiet Lilijai: “Kāds šodien ir laiks?”',
'guideWeatherInput': 'Kāds šodien ir laiks?',
'guideWeatherSend': 'Lilija ziņos par laikapstākļiem reāllaikā',
'guideWeatherEnd':
'Lilija var ziņot par laikapstākļiem tiešsaistē — izmēģiniet citas komandas',
'guideMusicStart': 'Sakiet Lilijai: “Atskaņo rokmūziku”',
'guideMusicInput': 'Atskaņo rokmūziku',
'guideMusicSend': 'Lilija atradīs mūziku jums',
'guideMusicEnd': 'Lilija atrada mūziku — izmēģiniet citas komandas',
'guideNavStart': 'Sakiet Lilijai: “Navigē uz Šeņdžeņas lidostu”',
'guideNavInput': 'Navigē uz Šeņdžeņas lidostu',
'guideNavSend': 'Lilija izplānos maršrutu',
'guideNavEnd': 'Navigācija iestatīta — izmēģiniet citas komandas',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
'Sakiet Lilijai: “Izveido sapulces atgādinājumu rītdien plkst. 15:00”',
'guideMeetingInput': 'Izveido sapulces atgādinājumu rītdien plkst. 15:00',
'guideMeetingSend': 'Lilija izveidos sapulces atgādinājumu',
'guideMeetingEnd': 'Atgādinājums izveidots — izmēģiniet citas komandas',
'guidePhoneStart': 'Sakiet Lilijai: “Zvani mammai”',
'guidePhoneInput': 'Zvani mammai',
'guidePhoneSend': 'Lilija veiks zvanu',
'guidePhoneEnd': 'Zvans veikts — izmēģiniet citas komandas',
'guideSmsStart':
'Sakiet Lilijai: “Nosūti tētim ziņu: Es būšu mājās uz vakariņām”',
'guideSmsInput': 'Ziņa tētim: Es būšu mājās uz vakariņām',
'guideSmsSend': 'Lilija nosūtīs ziņu',
'guideSmsEnd': 'Ziņa nosūtīta — balss vadība ir ērta',
// Meeting模块 - 首页与导航
"startMeeting": "Sākt sapulci",
@ -463,154 +496,166 @@ const Map<String, String> lvLV = {
'recordingDetails': 'Ieraksta detaļas',
'aiSummary': 'AI kopsavilkums',
'meetingTranscript': 'Sapulces atšifrējums',
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'files': 'Faili',
'mine': 'Mani',
'connect': 'Savienot',
'allFiles': 'Visi faili',
'searchInAllFiles': 'Meklēt visos failos',
'from': 'No',
'sortBy': 'Kārtot pēc',
'creationTime': 'Izveides laiks',
'bluetoothConnection': 'Bluetooth savienojums',
'meetingReconnect': 'Atkārtoti savienot',
'searching': 'Meklē...',
'searchFailed':
'Meklēšana neizdevās, lūdzu, pārbaudiet, vai Bluetooth ir iespējots',
'aiPenNotFound': 'AI PEN ierīce nav atrasta',
'connectedToAiPen': 'Savienots ar AI PEN ierīci',
'checkingNewFiles': 'Pārbauda jaunus failus importēšanai',
'startingWifi': 'Startē Wi-Fi...',
'newFilesDetected': 'Atrasti jauni faili, gatavo importēšanai',
'noNewFiles': 'Nav jaunu failu importēšanai',
'connectingWifi': 'Savieno ar Wi-Fi...',
'wifiConnected': 'Wi-Fi savienojums veiksmīgs',
'downloadingFiles': 'Lejupielādē failus...',
'downloadingFileProgress': 'Kopā {total} faili, lejupielādē failu {current}',
'downloadComplete': 'Lejupielāde pabeigta',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
'Lejupielāde pabeigta, kopā {count} faili, automātiski atgriežas pēc 2 sekundēm',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'startRecording': 'Sākt ierakstīšanu',
'liveRecording': 'Tiešraide',
'audioVideoRecording': 'Audio/video ierakstīšana',
'callRecording': 'Zvanu ierakstīšana',
'importAudio': 'Importēt audio',
'meetingRecordExitTitle': 'Iziet no ieraksta', // 退出录音
'meetingRecordExitMessage': 'Izvēlieties, ko darīt pirms iziešanas', // 请选择离开后的操作
'meetingRecordExitMessage':
'Izvēlieties, ko darīt pirms iziešanas', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Beigt un saglabāt', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Beigt nesaglabājot', // 结束录音不保存
'meetingRecordContinueInBackground': 'Turpināt ierakstīšanu fonā', // 后台继续录音
'meetingRecordStopTimeout': 'Ieraksta apturēšanai beidzās laiks. Mēģiniet vēlreiz.', // 结束录音超时,请重试
'meetingRecordStopFailed': 'Neizdevās apturēt ierakstu. Mēģiniet vēlreiz.', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'Neizdevās saglabāt ierakstu. Mēģiniet vēlreiz.', // 保存录音失败,请重试
'meetingRecordStopTimeout':
'Ieraksta apturēšanai beidzās laiks. Mēģiniet vēlreiz.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Neizdevās apturēt ierakstu. Mēģiniet vēlreiz.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Neizdevās saglabāt ierakstu. Mēģiniet vēlreiz.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Notiek ierakstīšana', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Ierakstīšana fonā. Pieskarieties, lai atgrieztos lietotnē.', // 正在后台录音,点击返回应用
'meetingRecordRecordingNotificationBody':
'Ierakstīšana fonā. Pieskarieties, lai atgrieztos lietotnē.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Rādīt virs citām lietotnēm', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Lai rādītu tulkojuma rezultātus zvanu vai audio/video tulkošanas laikā, mums nepieciešama pārklājuma atļauja. Tas ļauj redzēt tulkojumus reāllaikā, izmantojot citas lietotnes.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc': 'Lai ierakstīšanas laikā rādītu peldošo ierakstīšanas joslu (taimeris/pauze/turpināt), mums nepieciešama pārklājuma atļauja.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed': 'Nevar automātiski atvērt sistēmas iestatījumus. Lūdzu, atveriet Iestatījumus un manuāli iespējojiet pārklājuma atļauju.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'overlayPermissionTranslationDesc':
'Lai rādītu tulkojuma rezultātus zvanu vai audio/video tulkošanas laikā, mums nepieciešama pārklājuma atļauja. Tas ļauj redzēt tulkojumus reāllaikā, izmantojot citas lietotnes.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc':
'Lai ierakstīšanas laikā rādītu peldošo ierakstīšanas joslu (taimeris/pauze/turpināt), mums nepieciešama pārklājuma atļauja.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nevar automātiski atvērt sistēmas iestatījumus. Lūdzu, atveriet Iestatījumus un manuāli iespējojiet pārklājuma atļauju.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transkribē...',
'summarizing': 'Apkopo...',
'analyzing': 'Analizē...',
'summaryComplete': 'Kopsavilkums pabeigts',
'generate': 'Ģenerēt',
'overview': 'Pārskats',
'transcription': 'Transkripcija',
'summary': 'Kopsavilkums',
'mindMap': 'Domu karte',
'editSpeaker': 'Rediģēt',
'nameSpeaker': 'Nosaukt runātāju',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Apkopot atkārtoti',
'dateAndTime': 'Datums un laiks',
'location': 'Atrašanās vieta',
'attendees': 'Dalībnieki',
'inputLocation': 'Ievadiet atrašanās vietu',
'inputAttendees': 'Ievadiet dalībniekus',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Izvēlēties kopsavilkuma veidni',
'useThisTemplate': 'Lietot šo veidni',
'lastUsed': 'Pēdējo reizi lietots',
'create': 'Izveidot',
'templateDetails': 'Veidnes informācija',
'tag': 'Birka',
'description': 'Apraksts',
'template': 'Veidne',
'deleteTemplate': 'Dzēst veidni',
'deleteTemplateConfirm': 'Vai esat pārliecināts, ka vēlaties dzēst šo veidni?',
'deleteTemplateConfirm':
'Vai esat pārliecināts, ka vēlaties dzēst šo veidni?',
'editTemplate': 'Rediģēt veidni',
'createTemplate': 'Izveidot veidni',
'name': 'Nosaukums',
'templateContentHint': 'Lūdzu, ievadiet veidnes saturu! Padoms: Noklikšķiniet uz AI pogas augšpusē, lai ātri ģenerētu veidnes saturu, pamatojoties uz ievadīto nosaukumu un aprakstu',
'templateContentHint':
'Lūdzu, ievadiet veidnes saturu! Padoms: Noklikšķiniet uz AI pogas augšpusē, lai ātri ģenerētu veidnes saturu, pamatojoties uz ievadīto nosaukumu un aprakstu',
'inputNameHint': 'Lūdzu, ievadiet nosaukumu',
'inputDescHint': 'Lūdzu, ievadiet aprakstu',
'custom': 'Pielāgots',
'pleaseEnter': 'Lūdzu ievadiet',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'viewAll': 'Skatīt visu',
'recordingLanguage': 'Ieraksta valoda',
'chineseSimplified': 'Ķīniešu mandarīnu (vienkāršotā)',
'meetingGenerateNow': 'Ģenerēt tagad',
'keyEventsAnalyzed': 'Analizēti {count} galvenie notikumi.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
'AI analīze identificē galvenos notikumus ierakstos, ļaujot jums atlasīt svarīgus notikumus AI ģenerēšanai.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
'importing': 'Importē...',
'batchImporting': 'Pakešu importēšana...',
'importingLocalRecordings': 'Importē lokālos ierakstus...',
'importFailed': 'Faila importēšana neizdevās: {filePath}, kļūda: {error}',
'importSuccess': 'Veiksmīgi importēti {count} lokālie ieraksti',
'importError': 'Importēšana neizdevās: {error}',
'pleaseSelectAudioFile': 'Lūdzu, atlasiet audio failu',
'shareAudio': 'Kopīgot sapulces audio',
'shareComplete': 'Kopīgošana pabeigta!',
'shareFailed': 'Kopīgošana neizdevās: {error}',
'fileProcessingFailed':
'Faila apstrāde neizdevās: {filePath}, kļūda: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Saglabāt domu karti',
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
'shareMindMap': 'Kopīgot domu karti',
'shareSuccess': 'Kopīgošana veiksmīga',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Jautāt AI ...',
'askAIPrompt': 'Kā es varu jums šodien palīdzēt?',
'continueAsk': 'Turpināt jautāt',
'todoList': 'Uzdevumu saraksts',
'extractConclusion': 'Izvilkt secinājumu',
'generateKeyIndicators': 'Ģenerēt galvenos rādītājus',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Kopīgot saiti',
'copyTranscript': 'Kopēt transkripciju',
'copySummary': 'Kopēt kopsavilkumu',
'exportAudio': 'Eksportēt audio',
'exportTranscript': 'Eksportēt transkripciju',
'shareMeetingAudio': 'Kopīgot sapulces audio',
'exportSummary': 'Eksportēt kopsavilkumu',
'exportAs': 'Eksportēt kā',
'exportingPDF': 'Eksportē PDF...',
'export': 'Eksportēt',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Piemērot visām šī runātāja rindkopām',
'summaryWillBeUpdatedAutomatically':
'Kopsavilkums tiks automātiski atjaunināts, pamatojoties uz veidni',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Nosaukt pašreizējo runātāju',
'recentlyUsedNames': 'Nesen lietotie vārdi',
'applyToCurrentParagraph': 'Piemērot pašreizējai rindkopai',
'totalTime': 'Kopējais laiks',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Kopsavilkuma runātāji tiks automātiski atjaunināti',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'Sinhronizēt ar mākoni',
'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).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
'Automātiski sinhronizējiet savus ierakstus ar mākoni — varat atskaņot, pārvaldīt un kopīgot ierakstus caur jebkuru VOITRANS lietotni vai VOITRANS tīmekli (web.voitrans.com).',
'syncToVoitransApp': 'Sinhronizēt ar VOITRANS lietotni',
'transcriptionRecord': 'Transkripcijas ieraksts',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
@ -703,7 +748,8 @@ const Map<String, String> lvLV = {
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analīze neizdevās, lūdzu, mēģiniet vēlreiz vēlāk',
'transcriptionFailed': 'Transkripcija neizdevās, lūdzu, mēģiniet vēlreiz vēlāk',
'transcriptionFailed':
'Transkripcija neizdevās, lūdzu, mēģiniet vēlreiz vēlāk',
'summaryFailed': 'Kopsavilkums neizdevās, lūdzu, mēģiniet vēlreiz vēlāk',
'summaryFailedShort': 'Kopsavilkums neizdevās',
'transcriptionFailedShort': 'Transkripcija neizdevās',
@ -822,7 +868,8 @@ const Map<String, String> lvLV = {
"swipeUpForMore": "Velciet uz augšu, lai redzētu vairāk",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Kad iespējots: AI netiks pārtraukts ar jūsu balsi, kamēr tas runā, un var apstrādāt tikai vienu sarunas kārtu vienlaicīgi. Lai sāktu jaunu kārtu, vienkārši pasakiet modināšanas vārdu.',
'voice_interrupt_tip':
'Kad iespējots: AI netiks pārtraukts ar jūsu balsi, kamēr tas runā, un var apstrādāt tikai vienu sarunas kārtu vienlaicīgi. Lai sāktu jaunu kārtu, vienkārši pasakiet modināšanas vārdu.',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -879,6 +926,13 @@ const Map<String, String> lvLV = {
'Mēs vēlamies zināt, kāpēc jūs ziņojat, jūs varat aprakstīt problēmu, ar kuru saskārāties.',
'generatedByAi': 'Ģenerējis 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模块 - 音乐卡片
'recommendedMusic': 'Šeit ir dažas ieteicamās dziesmas:',
'playList': 'Atskaņošanas saraksts',
@ -899,6 +953,29 @@ const Map<String, String> lvLV = {
"bicycling": "Riteņbraukšana",
"tsransit": "Sabiedriskais transports",
// 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模块 - 天气卡片
'weatherQuery': 'Laikapstākļu pieprasījums:',
'highest': 'Augstākā',
@ -971,8 +1048,19 @@ const Map<String, String> lvLV = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Lūdzu, ievadiet tulkojamo tekstu",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1249,9 +1337,11 @@ const Map<String, String> lvLV = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigācija notiek',
'native.notification.navigation.keepRunning': 'Notiek navigācija, turiet lietotni atvērtu',
'native.notification.navigation.keepRunning':
'Notiek navigācija, turiet lietotni atvērtu',
'native.notification.bleAgent.running': 'Balss asistenta aģents darbojas',
'native.notification.audioRecording.recording': 'Notiek audio ierakstīšana, pieskarieties, lai atgrieztos lietotnē',
'native.notification.audioRecording.recording':
'Notiek audio ierakstīšana, pieskarieties, lai atgrieztos lietotnē',
'native.notification.music.waiting': 'Gaida atskaņošanu',
'native.notification.music.previous': 'Iepriekšējais',
'native.notification.music.next': 'Nākamais',
@ -1398,6 +1488,59 @@ const Map<String, String> lvLV = {
"removeEarbudsEnsureBattery":
"Izņemiet abas austiņas un pārliecinieties, ka abu baterijas līmenis ir virs 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": "Nav mūzikas", // 暂无音乐
"noPlayingMusic": "Netiek atskaņota mūzika", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> msMY = {
// 通用
'continue': 'Teruskan',
'confirm': 'Sahkan',
@ -19,11 +18,11 @@ const Map<String, String> msMY = {
"unknownError": "Ralat tidak diketahui",
"asrConnectionFailed":
"Sambungan ke perkhidmatan pengecaman suara gagal. Sila semak rangkaian atau cuba lagi nanti.",
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
"justNow": "Sebentar tadi",
"minutesAgo": "@minutes minit yang lalu",
"yesterday": "Semalam",
"daysAgo": "@days hari yang lalu",
"hoursAgo": "@hours jam yang lalu",
// 启动页
"slogan": "Menghubungkan dunia, melampaui suara",
@ -169,6 +168,29 @@ const Map<String, String> msMY = {
'right': 'Kanan',
'checkConnectionStatusFailed': 'Gagal menyemak status sambungan',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Inisialisasi Bluetooth gagal: @error',
'needBluetoothAndLocationPermission':
'Kebenaran Bluetooth dan lokasi diperlukan untuk mengimbas peranti',
'permissionRequestFailedWithError': 'Permintaan kebenaran gagal: @error',
'needPermission': 'Kebenaran Diperlukan',
'blePermissionDialogContent':
'Aplikasi ini memerlukan kebenaran Bluetooth dan lokasi untuk mengimbas peranti. Sila aktifkan di Tetapan.',
'needEnableBluetooth': 'Aktifkan Bluetooth',
'enableBluetoothDialogContent':
'Sila aktifkan Bluetooth untuk mengimbas dan menyambung peranti.',
'bleScanFailedWithError': 'Imbasan gagal: @error',
'bleConnectionSuccess': 'Sambungan Berjaya',
'bleConnectedToDevice': 'Disambungkan ke @device',
'bleConnectionFailedWithError': 'Sambungan gagal: @error',
'bleDisconnected': 'Terputus',
'bleDeviceDisconnected': 'Peranti terputus',
'bleDisconnectFailedWithError': 'Gagal memutuskan sambungan: @error',
'signalStrong': 'Kuat',
'signalMedium': 'Sederhana',
'signalWeak': 'Lemah',
'signalVeryWeak': 'Sangat Lemah',
// 发现页
"searchAi": "Cari fungsi AI...",
"exploreSlogan": "Fon telinga pintar, kemungkinan tanpa had",
@ -196,22 +218,22 @@ const Map<String, String> msMY = {
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"translationStats": "Statistik Terjemahan",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"translationCount": "Bilangan Terjemahan",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"recordingDuration": "Tempoh Rakaman",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"translationApi": "API Terjemahan",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
@ -230,9 +252,8 @@ const Map<String, String> msMY = {
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"loadFailed": "Gagal Memuat",
"statsLoadFailedTryLater": "Statistik gagal dimuat. Sila cuba lagi kemudian.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
@ -262,12 +283,15 @@ const Map<String, String> msMY = {
'paymentException': 'Pembayaran tidak normal',
'paymentLaunchFailed': 'Gagal membuka pembayaran',
'paymentExceptionWithError': 'Pembayaran tidak normal: @error',
'paymentProcessingCheckLater': 'Pesanan anda sedang diproses. Sila semak kemudian.',
'paymentProcessingCheckLater':
'Pesanan anda sedang diproses. Sila semak kemudian.',
'paymentResultQueryException': 'Gagal menyemak keputusan pembayaran: @error',
'orderConfirmedQuotaRefreshed': 'Pesanan disahkan. Kuota anda telah dikemas kini.',
'orderConfirmedQuotaRefreshed':
'Pesanan disahkan. Kuota anda telah dikemas kini.',
'paymentCompletedConfirming': 'Pembayaran selesai. Sedang mengesahkan…',
'paymentCancelled': 'Pembayaran dibatalkan',
'paypalOpenedCompleteInBrowser': 'PayPal telah dibuka. Sila selesaikan pembayaran dalam pelayar.',
'paypalOpenedCompleteInBrowser':
'PayPal telah dibuka. Sila selesaikan pembayaran dalam pelayar.',
'paypalOpenFailed': 'Tidak dapat membuka halaman pembayaran PayPal',
'paymentTestTitle': 'Ujian Pembayaran',
'paymentTestOrderInfo': 'Maklumat Pesanan Ujian',
@ -284,7 +308,8 @@ const Map<String, String> msMY = {
'errorInfoWithMessage': 'Ralat: @message',
'retest': 'Uji semula',
'paymentTestInstructionsTitle': 'Arahan',
'paymentTestInstructionsContent': '1. Pilih jumlah ujian (disyorkan: ¥0.01)\n2. Klik butang pembayaran untuk mula\n3. Selesaikan pembayaran dalam aplikasi pembayaran\n4. Kembali untuk menyemak keputusan',
'paymentTestInstructionsContent':
'1. Pilih jumlah ujian (disyorkan: ¥0.01)\n2. Klik butang pembayaran untuk mula\n3. Selesaikan pembayaran dalam aplikasi pembayaran\n4. Kembali untuk menyemak keputusan',
'startingWechatPayment': 'Membuka WeChat Pay...',
'startingAlipayPayment': 'Membuka Alipay...',
'wechatPaymentSuccess': 'Pembayaran WeChat Pay berjaya!',
@ -298,12 +323,12 @@ const Map<String, String> msMY = {
'alipayPaymentLaunchFailed': 'Gagal membuka Alipay',
'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay',
'alipayPaymentException': 'Alipay tidak normal',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "Mata tidak mencukupi",
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
'Baki tidak mencukupi, sila pergi ke halaman tambah nilai yang berkaitan untuk tambah nilai.',
"recharge": 'Tambah Nilai',
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
'Keahlian AI telah tamat tempoh, sila pergi ke halaman pembaharuan keahlian untuk memperbaharui.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
@ -331,18 +356,18 @@ const Map<String, String> msMY = {
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
'Ciri bergantung pada kebenaran peranti, ketersediaan perkhidmatan, dan keadaan rangkaian.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'Pentafsiran serentak masa nyata dan terjemahan teks dengan suara kependaman rendah.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'translateZhEn': 'Terjemahan Cina-Inggeris',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'multiLangTextTranslation': 'Terjemahan teks berbilang bahasa',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
@ -350,18 +375,18 @@ const Map<String, String> msMY = {
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'Prestasi terjemahan bergantung pada mikrofon, kependaman rangkaian, dan bunyi persekitaran.',
// 商品模块 - 会议商品页
'meetingRecording': 'Meeting Recording',
'meetingRecording': 'Rakaman Mesyuarat',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'Rakaman audio, transkripsi, carian kata kunci, dan ringkasan automatik untuk meningkatkan kecekapan mesyuarat.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingAutoRecording': 'Rakaman automatik dan segmentasi',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
@ -370,7 +395,7 @@ const Map<String, String> msMY = {
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
'Gunakan di persekitaran yang senyap; prestasi bergantung pada mikrofon dan rangkaian.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
@ -384,7 +409,7 @@ const Map<String, String> msMY = {
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'crossDeviceSync': 'Penyegerakan merentas peranti',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
@ -395,18 +420,18 @@ const Map<String, String> msMY = {
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
'trans_001_name': 'Terjemahan Asas 100',
'trans_002_name': 'Terjemahan Asas 500',
'trans_003_name': 'Terjemahan Asas 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
'meet_001_desc': 'Termasuk 100 rakaman/transkripsi mesyuarat.',
'meet_002_desc': 'Termasuk 500 rakaman/transkripsi mesyuarat.',
'meet_003_desc': 'Termasuk 1000 rakaman/transkripsi mesyuarat.',
'trans_001_desc': 'Termasuk 100 terjemahan (suara/teks).',
'trans_002_desc': 'Termasuk 500 terjemahan (suara/teks).',
'trans_003_desc': 'Termasuk 1000 terjemahan (suara/teks).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
@ -462,52 +487,61 @@ const Map<String, String> msMY = {
'recordingDetails': 'Butiran Rakaman',
'aiSummary': 'Ringkasan AI',
'meetingTranscript': 'Transkrip Mesyuarat',
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'files': 'Fail',
'mine': 'Milik Saya',
'connect': 'Sambung',
'allFiles': 'Semua Fail',
'searchInAllFiles': 'Cari dalam semua fail',
'from': 'Daripada',
'sortBy': 'Isih mengikut',
'creationTime': 'Masa dicipta',
'bluetoothConnection': 'Sambungan Bluetooth',
'meetingReconnect': 'Sambung semula',
'searching': 'Mencari...',
'searchFailed': 'Carian gagal, sila semak sama ada Bluetooth diaktifkan',
'aiPenNotFound': 'Peranti AI PEN tidak ditemui',
'connectedToAiPen': 'Disambungkan ke peranti AI PEN',
'checkingNewFiles': 'Menyemak fail baharu untuk diimport',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'connectingWifi': 'Menyambung ke Wi‑Fi...',
'wifiConnected': 'Wi‑Fi berjaya disambungkan',
'downloadingFiles': 'Memuat turun fail...',
'downloadingFileProgress': 'Jumlah {total} fail, memuat turun fail {current}',
'downloadComplete': 'Muat turun selesai',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
'Muat turun selesai, jumlah {count} fail, kembali secara automatik dalam 2 saat',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'startRecording': 'Mula Merakam',
'liveRecording': 'Rakaman Langsung',
'audioVideoRecording': 'Rakaman Audio/Video',
'callRecording': 'Rakaman Panggilan',
'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Keluar dari rakaman', // 退出录音
'meetingRecordExitMessage': 'Pilih apa yang perlu dibuat sebelum keluar', // 请选择离开后的操作
'meetingRecordExitMessage':
'Pilih apa yang perlu dibuat sebelum keluar', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Tamatkan dan simpan', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Tamatkan tanpa menyimpan', // 结束录音不保存
'meetingRecordContinueInBackground': 'Teruskan rakaman di latar belakang', // 后台继续录音
'meetingRecordStopTimeout': 'Masa untuk menghentikan rakaman telah tamat. Sila cuba lagi.', // 结束录音超时,请重试
'meetingRecordStopFailed': 'Gagal menghentikan rakaman. Sila cuba lagi.', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'Gagal menyimpan rakaman. Sila cuba lagi.', // 保存录音失败,请重试
'meetingRecordContinueInBackground':
'Teruskan rakaman di latar belakang', // 后台继续录音
'meetingRecordStopTimeout':
'Masa untuk menghentikan rakaman telah tamat. Sila cuba lagi.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Gagal menghentikan rakaman. Sila cuba lagi.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Gagal menyimpan rakaman. Sila cuba lagi.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Rakaman sedang berjalan', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Merakam di latar belakang. Ketik untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用
'meetingRecordRecordingNotificationBody':
'Merakam di latar belakang. Ketik untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Papar di atas aplikasi lain', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Untuk memaparkan hasil terjemahan semasa panggilan atau terjemahan audio/video, kami memerlukan kebenaran overlay. Ini membolehkan anda melihat terjemahan masa nyata semasa menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc': 'Untuk memaparkan bar rakaman terapung (pemasa/jeda/sambung) semasa merakam, kami memerlukan kebenaran overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed': 'Tidak dapat membuka tetapan sistem secara automatik. Sila buka Tetapan dan dayakan kebenaran overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'overlayPermissionTranslationDesc':
'Untuk memaparkan hasil terjemahan semasa panggilan atau terjemahan audio/video, kami memerlukan kebenaran overlay. Ini membolehkan anda melihat terjemahan masa nyata semasa menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionRecordingDesc':
'Untuk memaparkan bar rakaman terapung (pemasa/jeda/sambung) semasa merakam, kami memerlukan kebenaran overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Tidak dapat membuka tetapan sistem secara automatik. Sila buka Tetapan dan dayakan kebenaran overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -542,36 +576,37 @@ const Map<String, String> msMY = {
'editTemplate': 'Edit Templat',
'createTemplate': 'Cipta Templat',
'name': 'Nama',
'templateContentHint': 'Sila masukkan kandungan templat! Petua: Klik butang AI di atas untuk menjana kandungan templat dengan cepat berdasarkan nama dan penerangan yang anda masukkan',
'templateContentHint':
'Sila masukkan kandungan templat! Petua: Klik butang AI di atas untuk menjana kandungan templat dengan cepat berdasarkan nama dan penerangan yang anda masukkan',
'inputNameHint': 'Sila masukkan nama',
'inputDescHint': 'Sila masukkan penerangan',
'custom': 'Tersuai',
'pleaseEnter': 'Sila masukkan',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'viewAll': 'Lihat semua',
'recordingLanguage': 'Bahasa Rakaman',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'meetingGenerateNow': 'Jana Sekarang',
'keyEventsAnalyzed': 'Menganalisis {count} peristiwa utama.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
'Analisis AI mengenal pasti peristiwa utama dalam rakaman, membolehkan anda memilih peristiwa penting untuk penjanaan AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'importingLocalRecordings': 'Mengimport rakaman tempatan...',
'importFailed': 'Import fail gagal: {filePath}, ralat: {error}',
'importSuccess': 'Berjaya mengimport {count} rakaman tempatan',
'importError': 'Import gagal: {error}',
'pleaseSelectAudioFile': 'Sila pilih fail audio',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
'shareFailed': 'Perkongsian gagal: {error}',
'fileProcessingFailed': 'Pemprosesan fail gagal: {filePath}, ralat: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Simpan Peta Minda',
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
'shareSuccess': 'Perkongsian Berjaya',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
@ -607,26 +642,27 @@ const Map<String, String> msMY = {
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'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).',
'Segerakkan rakaman anda ke awan secara automatik; anda boleh memainkan, mengurus dan berkongsi rakaman melalui VOITRANS APP atau VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
'transcriptionRecord': 'Rekod Transkripsi',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'transcriptionRecords': 'Rekod Transkripsi',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'enabled': 'Diaktifkan',
'disabled': 'Dilumpuhkan',
'myVoitransDevice': 'Peranti VOITRANS Saya',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'bindDeviceToActivate':
'Ikat peranti Voitrans untuk mengaktifkan keahlian Starter',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员与升级
@ -650,7 +686,7 @@ const Map<String, String> msMY = {
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'Ekstrak maklumat lebih mendalam daripada rakaman secara pintar; jana jadual data, kesimpulan perbincangan utama, senarai tugasan, e-mel laporan dan kandungan berformat lain dengan satu klik.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
@ -658,13 +694,13 @@ const Map<String, String> msMY = {
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'Rakaman dan transkripsi anda akan disimpan dengan selamat pada pelayan awan khusus, dengan penyulitan penuh semasa muat naik dan muat turun untuk memastikan privasi dan keselamatan.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
'Eksport rakaman audio, teks transkripsi dan ringkasan anda dalam pelbagai format (TXT, PDF, JPEG) mengikut keperluan.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
@ -694,7 +730,7 @@ const Map<String, String> msMY = {
'purchase': 'Purchase',
// Meeting模块 - 录音语言
'recordLanguage': 'Recording Language',
'recordLanguage': 'Bahasa Rakaman',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
@ -721,10 +757,10 @@ const Map<String, String> msMY = {
"translationRecharge": "Pembayaran Penterjemahan",
"meetingAssistantRecharge": "Pembayaran Pembantu Mesyuarat",
"cloudSync": "Pembayaran Sinkronisasi awan",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"memberService": "Perkhidmatan Ahli",
"bindRewardTitle": "Ganjaran",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"Ganjaran ikatan peranti pertama telah dikeluarkan. Ketik OK untuk menutup.",
"joinDevice": "Peranti disambungkan:",
"accountId": "ID Akaun:",
"systemSetting": "Tetapan Sistem",
@ -773,19 +809,19 @@ const Map<String, String> msMY = {
"loading": "Memuatkan...",
// 设备管理模块
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeUnknown": "Peranti Tidak Diketahui",
"deviceTypeClassicBluetoothHeadset": "Fon Kepala Bluetooth Klasik",
"deviceTypeBleBluetoothHeadset": "Fon Kepala Bluetooth BLE",
"deviceTypeSmartVoiceRecorder": "Perakam Suara Pintar",
"deviceTypeSmartEye": "Cermin Mata Pintar",
"unbind": "Nyahikat",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noDevicesBound": "Belum ada peranti diikat",
"pleaseBindDeviceFirst": "Sila ikat peranti dahulu untuk diurus",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"Adakah anda pasti mahu nyahikat peranti \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
// Agent模块 - 主界面
@ -816,9 +852,10 @@ const Map<String, String> msMY = {
"loadMoreMessages": "Muatkan lebih banyak mesej...",
"loadFailedClickRetry": "Gagal memuatkan, klik untuk cuba lagi",
"swipeUpForMore": "Leret ke atas untuk lebih banyak",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"callingTool": "Saya sedang membantu anda, sila tunggu!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Apabila diaktifkan: AI tidak akan terganggu oleh suara anda semasa bercakap dan hanya boleh mengendalikan satu pusingan perbualan pada satu masa. Untuk memulakan pusingan baharu, sebut sahaja kata bangun.',
'voice_interrupt_tip':
'Apabila diaktifkan: AI tidak akan terganggu oleh suara anda semasa bercakap dan hanya boleh mengendalikan satu pusingan perbualan pada satu masa. Untuk memulakan pusingan baharu, sebut sahaja kata bangun.',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -827,7 +864,7 @@ const Map<String, String> msMY = {
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"navigationTo": "Tolong bantu saya menavigasi ke", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
@ -875,6 +912,13 @@ const Map<String, String> msMY = {
'Kami ingin tahu sebab anda melaporkan, anda boleh menerangkan masalah yang anda hadapi.',
'generatedByAi': 'Dihasilkan oleh 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模块 - 音乐卡片
'recommendedMusic': 'Berikut adalah beberapa muzik yang disyorkan:',
'playList': 'Senarai Main',
@ -895,6 +939,29 @@ const Map<String, String> msMY = {
"bicycling": "Berbasikal",
"tsransit": "Pengangkutan Awam",
// Agent模块 - 导航选择
'selectNavigationApp': 'Pilih Aplikasi Navigasi',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigasi dengan Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigasi dengan Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigasi dengan Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigasi dengan Apple Maps',
'builtInNavigation': 'Navigasi Terbina Dalam',
'useBuiltInNavigation': 'Navigasi dengan peta terbina dalam',
'navigationStartFailed': 'Gagal memulakan navigasi',
'cannotPlayMusicListRetryLater':
'Tidak dapat memainkan senarai muzik, sila cuba lagi nanti',
'cannotPlaySong': 'Tidak dapat memainkan lagu',
'openMapError': 'Ralat membuka peta',
'pleaseInstallAmapApp': 'Sila pasang aplikasi Amap dahulu',
'pleaseInstallBaiduMapApp': 'Sila pasang aplikasi Baidu Maps dahulu',
'appleMapStartFailed': 'Apple Maps gagal dimulakan',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Ralat membuka Apple Maps',
// Agent模块 - 天气卡片
'weatherQuery': 'Menyemak keadaan cuaca:',
'highest': 'Tertinggi',
@ -948,8 +1015,8 @@ const Map<String, String> msMY = {
"strongWind": "Angin kencang",
// 翻译模块 - 中间层
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
"pictureTranslation": "Terjemahan Gambar",
"textTranslation": "Terjemahan Teks",
// 翻译模块 - 主页
"translationHistory": "Sejarah Terjemahan",
@ -959,22 +1026,33 @@ const Map<String, String> msMY = {
"phoneUser": "Pengguna Telefon",
"selectSourceLanguage": "Pilih bahasa sumber",
"selectTargetLanguage": "Pilih bahasa sasaran",
"me": "Me",
"counterPart": "Counterpart",
"me": "Saya",
"counterPart": "Rakan Bicara",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
"autoDetect": "Auto Detect", // 自动检测
"Sila pastikan fon kepala Bluetooth disambungkan ke telefon dan sedang dalam keadaan panggilan",
"autoDetect": "Kesan Automatik", // 自动检测
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
"languageDetectionFailed": "Pengesanan bahasa gagal",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Nyahdayakan Tetingkap Terapung',
'enableFloatingWindow': 'Dayakan Tetingkap Terapung',
'permissionTip': 'Petua Kebenaran',
'micPermissionRequiredForRecording':
'Kebenaran mikrofon diperlukan untuk rakaman',
'deleteTranslationRecordError': 'Ralat memadam rekod terjemahan: @error',
"translationFailed": "Terjemahan gagal",
"translating": "Sedang menterjemah",
"translate": "Terjemah",
"pleaseInputText": "Sila masukkan teks",
"inputTextToTranslate": "Sila masukkan teks untuk diterjemahkan",
"textTooLong": "Teks terlalu panjang, maksimum 5000 aksara",
// 翻译模块 - 历史记录
"noTranslationHistory": "Tiada sejarah lagi",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"historyRecords": "Rekod Sejarah",
"clearResults": "Kosongkan Hasil",
"clearHistory": "Kosongkan Sejarah",
"clearHistoryConfirm":
"Adakah anda pasti mahu mengosongkan semua sejarah terjemahan? Tindakan ini tidak boleh dibatalkan.",
@ -984,14 +1062,14 @@ const Map<String, String> msMY = {
"Adakah anda pasti mahu memadam semua rekod terjemahan untuk sesi ini? Tindakan ini tidak boleh dibatalkan.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"selectImageSource": "Pilih Sumber Imej",
"imagePreview": "Pratonton Imej",
"translationResult": "Hasil Terjemahan",
"recognitionResult": "Hasil Pengecaman",
"translatedImagePreview": "Pratonton Imej Terjemahan",
"translatedImageLoadFailed": "Gagal memuatkan imej terjemahan",
"pleaseSelectImage": "Sila pilih imej",
"imageLoadFailed": "Imej gagal dimuatkan",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
@ -999,39 +1077,40 @@ const Map<String, String> msMY = {
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"waitingForAction": "Menunggu tindakan",
"pleaseSelectImageToStart": "Sila pilih imej untuk mula",
"chooseImage": "Pilih Imej",
"openingCamera": "Membuka kamera...",
"openingPhotoAlbum": "Membuka album foto...",
"cancelled": "Dibatalkan",
"userCancelledSelection": "Pengguna membatalkan pilihan",
"translatingImage": "Sedang menterjemah imej",
"callingImageTranslateService": "Memanggil perkhidmatan terjemahan imej...",
"savingRecord": "Menyimpan Rekod",
"savingTranslationResult": "Menyimpan hasil terjemahan...",
"translationCompleted": "Terjemahan Selesai",
"allStepsCompleted": "Semua langkah selesai",
"processingFailed": "Pemprosesan Gagal",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"Pemprosesan imej atau terjemahan gagal. Sila cuba lagi.\nRalat: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"emptyTranslationResult": "API terjemahan imej mengembalikan hasil kosong",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"Terjemahan imej gagal. Masalah rangkaian atau had kadar. Sila cuba kemudian",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"Pengecualian API terjemahan imej. Semak rangkaian dan cuba lagi",
"permissionRequired": "Kebenaran Diperlukan",
"cameraPermissionRequired":
"Kebenaran kamera diperlukan untuk mengambil foto",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"Kebenaran album foto diperlukan untuk memilih imej",
"translationDetails": "Butiran Terjemahan",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"translationTime": "Masa Terjemahan",
"shareInDevelopment": "Sharing feature under development",
// 翻译模块 - 录音文件
@ -1129,16 +1208,16 @@ const Map<String, String> msMY = {
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'Kami memerlukan kebenaran storan supaya anda boleh memilih dan memuat naik fail audio.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
'Dikesan anda telah menafikan kebenaran storan secara kekal. Untuk terus menggunakan ciri ini, sila pergi ke tetapan aplikasi untuk mendayakan kebenaran storan secara manual.',
'getPermissionStatusFailed': 'Gagal mendapatkan status kebenaran',
'communicationPermissions': 'Kebenaran Komunikasi',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'bluetoothPermissions': 'Kebenaran Bluetooth',
'notificationPermissions': 'Kebenaran Notifikasi',
'storagePermissions': 'Kebenaran Storan',
'microphonePermissions': 'Kebenaran Mikrofon',
'alarmPermissions': 'Kebenaran Penggera',
'calendarPermissions': 'Kebenaran Kalendar',
'locationPermissions': 'Kebenaran Lokasi',
'phone': 'Telefon',
@ -1152,7 +1231,7 @@ const Map<String, String> msMY = {
'phonePermissionDesc': 'Digunakan untuk fungsi membuat panggilan',
'smsPermissionDesc': 'Digunakan untuk fungsi menghantar SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'Digunakan untuk menetapkan penggera tepat supaya peringatan dicetus tepat pada masanya',
'calendarWritePermissionDesc':
'Digunakan untuk membuat acara kalendar dan peringatan',
'calendarFullAccessPermissionDesc':
@ -1170,80 +1249,84 @@ const Map<String, String> msMY = {
'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan kebenaran telefon',
'smsPermissionDetailDesc': 'Fungsi menghantar SMS memerlukan kebenaran SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'Kebenaran ini diperlukan untuk menetapkan penggera tepat dan memastikan peringatan dicetus tepat pada masanya',
'calendarWritePermissionDetailDesc':
'Membuat acara kalendar memerlukan kebenaran menulis kalendar',
'calendarFullAccessPermissionDetailDesc':
'Mengurus acara kalendar memerlukan kebenaran penuh kalendar',
'locationPermissionDetailDesc':
'Mendapatkan maklumat lokasi memerlukan kebenaran lokasi',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDesc': 'Digunakan untuk mengakses maklumat kenalan',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'Fungsi panggilan telefon dan SMS memerlukan kebenaran kenalan untuk memilih kenalan',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'Digunakan untuk menyambung dan mengurus peranti Bluetooth',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'Menyambung ke fon kepala Bluetooth dan peranti lain memerlukan kebenaran Bluetooth',
'bluetoothScanPermissionDesc':
'Digunakan untuk mengimbas peranti Bluetooth berdekatan',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'Mengimbas peranti Bluetooth berdekatan memerlukan kebenaran imbas Bluetooth',
'bluetoothConnectPermissionDesc':
'Digunakan untuk menyambung ke peranti Bluetooth',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'Menyambung ke peranti Bluetooth memerlukan kebenaran sambung Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'Aplikasi memerlukan kebenaran notifikasi untuk menghantar amaran dan mesej penting kepada anda',
'appNeedsPermissionForFullFunction':
'Aplikasi memerlukan kebenaran ini untuk fungsi penuh',
'permanentDenialText':
'Anda telah menafikan kebenaran {permission} secara kekal, sila pergi ke tetapan aplikasi untuk mendayakannya',
'goToSettings': 'Pergi ke Tetapan',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothConnect': 'Sambung Bluetooth',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'Aplikasi memerlukan kebenaran imbas Bluetooth untuk mengimbas peranti Bluetooth berdekatan.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'Aplikasi memerlukan kebenaran sambung Bluetooth untuk menyambung ke peranti Bluetooth.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'Aplikasi memerlukan kebenaran lokasi untuk mengimbas peranti Bluetooth.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'Kebenaran imbas Bluetooth telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'Kebenaran sambung Bluetooth telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'Kebenaran lokasi telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'Kebenaran notifikasi diperlukan untuk memaparkan status main balik muzik.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'Kebenaran lokasi diperlukan untuk mendapatkan lokasi semasa.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'Anda telah menafikan kebenaran notifikasi secara kekal, sila pergi ke tetapan untuk mendayakannya.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
'Anda telah menafikan kebenaran lokasi secara kekal, sila pergi ke tetapan untuk mendayakannya.',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'Kami memerlukan kebenaran mikrofon untuk merakam kandungan audio.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'Kami memerlukan kebenaran storan supaya anda boleh memilih dan memuat naik fail audio.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'Kebenaran mikrofon telah ditolak secara kekal. Untuk terus menggunakan ciri ini, sila pergi ke tetapan aplikasi untuk mendayakan kebenaran mikrofon secara manual.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'Kebenaran storan telah ditolak secara kekal. Untuk terus menggunakan ciri ini, sila pergi ke tetapan aplikasi untuk mendayakan kebenaran storan secara manual.',
'permissionUtilNeed': 'Perlu ',
'permissionUtilPermission': ' Kebenaran',
'permissionUtilRestricted': ' Kebenaran Terhad',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'Ciri ini tidak tersedia atau terhad pada peranti semasa, sila semak tetapan peranti atau sekatan sistem',
'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigasi sedang berjalan',
'native.notification.navigation.keepRunning': 'Sedang menavigasi, pastikan aplikasi terus berjalan',
'native.notification.navigation.keepRunning':
'Sedang menavigasi, pastikan aplikasi terus berjalan',
'native.notification.bleAgent.running': 'Ejen pembantu suara sedang berjalan',
'native.notification.audioRecording.recording': 'Sedang merakam audio, ketik untuk kembali ke aplikasi',
'native.notification.audioRecording.recording':
'Sedang merakam audio, ketik untuk kembali ke aplikasi',
'native.notification.music.waiting': 'Menunggu untuk dimainkan',
'native.notification.music.previous': 'Sebelumnya',
'native.notification.music.next': 'Seterusnya',
@ -1321,17 +1404,17 @@ const Map<String, String> msMY = {
'bleConnectionFailed': 'Sambungan BLE gagal',
'deviceAuthorizationFailedCheckCode':
'Kebenaran peranti gagal, sila semak kod kebenaran',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideTitle': 'Pengaktifan Bluetooth Manual Diperlukan', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Sila ikuti langkah-langkah ini:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'Aktifkan Bluetooth: Tetapan → Bluetooth → Hidupkan', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'Sambung Peranti: Cari peranti anda di "Peranti Saya" dan ketik untuk sambung', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'Kembali ke aplikasi untuk meneruskan proses pemasangan', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
'Tip: Anda juga boleh tekan lama ikon Bluetooth di Pusat Kawalan untuk akses cepat ke tetapan Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'Saya Faham', // 我知道了
// 配对模块 - 绑定奖励
"firstBindRewardTitle": "Welcome Reward",
@ -1372,13 +1455,14 @@ const Map<String, String> msMY = {
"connectionFailed": "Sambungan Gagal",
"retryConnection": "Cuba Sambung Semula",
"ota_updateNow": "Kemas Kini Sekarang",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaVersionInfoFailed":
"Gagal mendapatkan maklumat versi. Sila cuba lagi kemudian.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"Tidak dapat mendapatkan maklumat peranti. Sila semak sambungan dan cuba lagi.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"Tidak dapat mengenal pasti peranti. Sila sambung semula dan cuba lagi.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"Versi firmware tidak normal. Sila sambung semula dan cuba lagi.",
"keepConnectedDontClose":
"Pastikan peranti sentiasa bersambung, jangan tutup aplikasi",
"doNotDisconnect": "Jangan putuskan sambungan",
@ -1387,6 +1471,59 @@ const Map<String, String> msMY = {
"removeEarbudsEnsureBattery":
"Keluarkan kedua-dua fon telinga, dan pastikan bateri kedua-duanya melebihi 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Versi baharu @version ditemui',
'otaConfirmUpdateNow': 'Kemas kini sekarang?',
'otaUpdate': 'Kemas kini',
'otaUpgradeSuccess': 'Naik Taraf Berjaya',
'otaUpgradeCompleteRepair':
'Naik taraf firmware selesai!\n\nPeranti perlu dipasang semula untuk berfungsi dengan betul. Pergi ke halaman pemasangan sekarang?',
'otaPairLater': 'Pasang Kemudian',
'otaPairNow': 'Pasang Sekarang',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Ralat semasa menyemak sambungan BLE: @error',
'otaBleNotConnected': 'Peranti BLE Tidak Bersambung',
'otaBleNeedConnection':
'Naik taraf firmware memerlukan sambungan peranti BLE\nSila pastikan peranti disambungkan dengan betul dan cuba lagi',
'otaDeviceInfoUnavailableTitle': 'Maklumat Peranti Tidak Tersedia',
'otaCannotGetDeviceInfo':
'Tidak dapat mendapatkan maklumat peranti\nSila sambung semula peranti atau cuba lagi kemudian',
'otaBleCheckFailed': 'Semakan Sambungan BLE Gagal',
'otaCannotGetDeviceInfoCheckConnection':
'Tidak dapat mendapatkan maklumat peranti, sila semak sambungan peranti',
'otaCannotGetProductInfoWithName':
'Tidak dapat mendapatkan maklumat produk, nama peranti: @deviceName',
'otaCannotGetBatteryInfo': 'Tidak dapat mendapatkan maklumat bateri yang sah',
'otaLowBattery': 'Bateri Rendah',
'otaSingleBatteryLow':
'Bateri peranti terlalu rendah untuk naik taraf firmware\nKeperluan: bateri mesti melebihi 20%\nSemasa: @ear @battery%\nSila cas dan cuba lagi',
'otaDoubleBatteryLow':
'Bateri peranti terlalu rendah untuk naik taraf firmware\nKeperluan: kedua-dua fon telinga mesti melebihi 20%\nSemasa: Kiri @left%, Kanan @right%\nSila cas dan cuba lagi',
'otaBatteryCheckFailed': 'Semakan Bateri Gagal',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Kemas kini ini termasuk pengoptimuman prestasi dan pembetulan pepijat.',
'otaGetLatestVersionFailed': 'Gagal mendapatkan maklumat versi terkini',
'otaGetVersionInfoFailed': 'Gagal mendapatkan maklumat versi',
'otaCheckingDeviceStatus': 'Menyemak status peranti...',
'otaDownloadFailedCheckNetwork':
'Muat turun gagal, sila semak sambungan rangkaian',
'otaDownloadFailed': 'Muat Turun Gagal',
'otaPreparingConnection': 'Menyediakan sambungan peranti...',
'otaConnectingDevice': 'Menyambung ke peranti...',
'otaUpgradeStarted': 'Naik taraf OTA bermula...',
'otaUpgradeProgressWithPercent': 'Kemajuan naik taraf: @percent%',
'otaUpgradeSuccessComplete': 'Naik taraf selesai dengan berjaya',
'otaUpgradeFailedWithCode': 'Naik taraf gagal, kod ralat: @code',
'otaUpgradeFailedTitle': 'Naik Taraf Gagal',
'otaUpgradeFailedDesc':
'Sila semak sambungan peranti atau pakej kemas kini, kod ralat: @code',
'otaDeviceDisconnected': 'Peranti terputus',
'otaDeviceConnected': 'Peranti bersambung',
// 音乐模块
"noMusic": "Tiada Muzik", // 暂无音乐
"noPlayingMusic": "Tiada muzik dimainkan", // 暂无播放音乐

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

@ -169,6 +169,26 @@ const Map<String, String> nbNO = {
'right': 'Høyre',
'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...",
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Her er noen anbefalte sanger:',
'playList': 'Spilleliste',
@ -897,6 +924,28 @@ const Map<String, String> nbNO = {
"bicycling": 'Sykling',
"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模块 - 天气卡片
'weatherQuery': 'Spør om værforhold:',
'highest': 'Høyeste',
@ -969,8 +1018,18 @@ const Map<String, String> nbNO = {
// 翻译模块 - 文本翻译
"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",
"translating": "Oversetter",
"translate": "Oversett",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Skriv inn teksten som skal oversettes",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1385,6 +1444,49 @@ const Map<String, String> nbNO = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Ingen musikk spilles av", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> nlNL = {
// 通用
'continue': 'Doorgaan',
'confirm': 'Bevestigen',
@ -169,6 +168,29 @@ const Map<String, String> nlNL = {
'right': 'Rechts',
'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...",
"exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden",
@ -263,12 +285,15 @@ const Map<String, String> nlNL = {
'paymentException': 'Betalingsuitzondering',
'paymentLaunchFailed': 'Kan betaling niet starten',
'paymentExceptionWithError': 'Betalingsuitzondering: @error',
'paymentProcessingCheckLater': 'Uw bestelling wordt verwerkt. Controleer het later.',
'paymentProcessingCheckLater':
'Uw bestelling wordt verwerkt. Controleer het later.',
'paymentResultQueryException': 'Kan betalingsresultaat niet opvragen: @error',
'orderConfirmedQuotaRefreshed': 'Bestelling bevestigd. Uw tegoed is bijgewerkt.',
'orderConfirmedQuotaRefreshed':
'Bestelling bevestigd. Uw tegoed is bijgewerkt.',
'paymentCompletedConfirming': 'Betaling voltooid. Bevestigen…',
'paymentCancelled': 'Betaling geannuleerd',
'paypalOpenedCompleteInBrowser': 'PayPal geopend. Voltooi de betaling in uw browser.',
'paypalOpenedCompleteInBrowser':
'PayPal geopend. Voltooi de betaling in uw browser.',
'paypalOpenFailed': 'Kan PayPal-betaalpagina niet openen',
'paymentTestTitle': 'Betalingstest',
'paymentTestOrderInfo': 'Testbestelgegevens',
@ -285,7 +310,8 @@ const Map<String, String> nlNL = {
'errorInfoWithMessage': 'Fout: @message',
'retest': 'Opnieuw testen',
'paymentTestInstructionsTitle': 'Instructies',
'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',
'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',
'startingWechatPayment': 'WeChat Pay starten...',
'startingAlipayPayment': 'Alipay starten...',
'wechatPaymentSuccess': 'WeChat Pay-betaling geslaagd!',
@ -496,19 +522,28 @@ const Map<String, String> nlNL = {
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'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', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Beëindigen zonder op te slaan', // 结束录音不保存
'meetingRecordContinueInBackground': 'Opname op de achtergrond voortzetten', // 后台继续录音
'meetingRecordStopTimeout': '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.', // 保存录音失败,请重试
'meetingRecordContinueInBackground':
'Opname op de achtergrond voortzetten', // 后台继续录音
'meetingRecordStopTimeout':
'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', // 录音进行中
'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', // 悬浮窗权限
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -543,7 +578,8 @@ const Map<String, String> nlNL = {
'editTemplate': 'Sjabloon bewerken',
'createTemplate': 'Sjabloon aanmaken',
'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':
'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',
'inputNameHint': 'Voer een naam in',
'inputDescHint': 'Voer een beschrijving in',
'custom': 'Aangepast',
@ -820,7 +856,8 @@ const Map<String, String> nlNL = {
"swipeUpForMore": "Veeg omhoog voor meer",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Hier zijn enkele aanbevolen muziekstukken:',
'playList': 'Afspeellijst',
@ -897,6 +942,29 @@ const Map<String, String> nlNL = {
"bicycling": 'Fietsen',
"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模块 - 天气卡片
'weatherQuery': 'Weersomstandigheden opvragen:',
'highest': 'Hoogste',
@ -968,8 +1036,19 @@ const Map<String, String> nlNL = {
// 翻译模块 - 文本翻译
"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",
"translating": "Vertalen",
"translate": "Vertaal",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Voer de tekst in om te vertalen",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1251,7 +1330,8 @@ const Map<String, String> nlNL = {
'native.notification.navigation.title': 'Navigatie actief',
'native.notification.navigation.keepRunning': 'Navigeren, houd de app 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':
'Audio opnemen, tik om terug te keren naar de app',
'native.notification.music.waiting': 'Wachten op afspelen',
'native.notification.music.previous': 'Vorige',
'native.notification.music.next': 'Volgende',
@ -1397,6 +1477,59 @@ const Map<String, String> nlNL = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"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",
"asrConnectionFailed":
"Nie udało się połączyć z usługą rozpoznawania mowy. Sprawdź sieć lub spróbuj ponownie później.",
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
"justNow": "Przed chwilą",
"minutesAgo": "@minutes min temu",
"yesterday": "Wczoraj",
"daysAgo": "@days dni temu",
"hoursAgo": "@hours godz. temu",
// 启动页
"slogan": "Łącząc świat, poza dźwiękiem",
@ -170,6 +170,26 @@ const Map<String, String> plPL = {
'checkConnectionStatusFailed':
'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...",
"exploreSlogan": "Inteligentne słuchawki, nieskończone możliwości",
@ -197,48 +217,48 @@ const Map<String, String> plPL = {
"scene": "Scenariusz",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"aiChat": "Czat AI",
"translationStats": "Statystyki tłumaczeń",
"meetingStats": "Statystyki spotkań",
"today": "Dzisiaj",
"thisWeek": "Ten tydzień",
"thisMonth": "Ten miesiąc",
"history": "Historia",
"currentSessionStats": "Statystyki bieżącej sesji",
"translationCount": "Liczba tłumaczeń",
"sessionDuration": "Czas trwania sesji",
"characters": "Znaki",
"recordingDuration": "Czas nagrywania",
"totalApiCalls": "Łączna liczba wywołań API",
"sessionCount": "Liczba sesji",
"totalCharacters": "Łączna liczba znaków",
"apiCallStats": "Statystyki wywołań API",
"translationApi": "API tłumaczeń",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed",
"dataVolumeStats": "Statystyki wolumenu danych",
"sourceTextCharacters": "Znaki tekstu źródłowego",
"ttsTextCharacters": "Znaki tekstu TTS",
"effectiveAudioDuration": "Efektywny czas trwania audio",
"totalSessionDuration": "Łączny czas trwania sesji",
"costStats": "Statystyki kosztów",
"estimatedCost": "Szacowany koszt",
"dailyCostThreshold": "Dzienny limit kosztów",
"monthlyCostThreshold": "Miesięczny limit kosztów",
"usageBehaviorStats": "Statystyki zachowań użytkownika",
"mostUsedLanguagePair": "Najczęściej używana para językowa",
"mostUsedMode": "Najczęściej używany tryb",
"asrApiCalls": "Wywołania ASR",
"totalAudioDuration": "Łączny czas trwania audio",
"audioFileSize": "Rozmiar pliku audio",
"transcriptBytes": "Rozmiar transkrypcji",
"loadFailed": "Ładowanie nie powiodło się",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"Ładowanie statystyk nie powiodło się. Spróbuj ponownie później.",
"cleanupComplete": "Czyszczenie zakończone",
"cleanedOldData": "Wyczyszczono dane starsze niż 90 dni",
"exportFeature": "Funkcja eksportu",
"exportInDevelopment": "Eksport danych jest w trakcie rozwoju",
// 商品模块 - 通用
'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ś.',
'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模块 - 音乐卡片
'recommendedMusic': 'Oto kilka polecanych utworów:',
'playList': 'Lista odtwarzania',
@ -902,6 +929,28 @@ const Map<String, String> plPL = {
"bicycling": 'Rowerem',
"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模块 - 天气卡片
'weatherQuery': 'Zapytanie o warunki pogodowe:',
'highest': 'Najwyższa',
@ -974,8 +1023,18 @@ const Map<String, String> plPL = {
// 翻译模块 - 文本翻译
"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",
"translating": "Tłumaczenie",
"translate": "Tłumacz",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Wprowadź tekst do przetłumaczenia",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1405,6 +1464,49 @@ const Map<String, String> plPL = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Brak odtwarzanej muzyki", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> ptPT = {
// 通用
'continue': 'Continuar',
'confirm': 'Confirmar',
@ -172,6 +171,30 @@ const Map<String, String> ptPT = {
'right': 'Direita',
'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...",
"exploreSlogan": "Auriculares inteligentes, possibilidades infinitas",
@ -266,12 +289,16 @@ const Map<String, String> ptPT = {
'paymentException': 'Exceção de pagamento',
'paymentLaunchFailed': 'Falha ao iniciar o pagamento',
'paymentExceptionWithError': 'Exceção de pagamento: @error',
'paymentProcessingCheckLater': 'O seu pedido está a ser processado. Por favor, verifique mais tarde.',
'paymentResultQueryException': 'Falha ao consultar o resultado do pagamento: @error',
'orderConfirmedQuotaRefreshed': 'Pedido confirmado. A sua quota foi atualizada.',
'paymentProcessingCheckLater':
'O seu pedido está a ser processado. Por favor, verifique mais tarde.',
'paymentResultQueryException':
'Falha ao consultar o resultado do pagamento: @error',
'orderConfirmedQuotaRefreshed':
'Pedido confirmado. A sua quota foi atualizada.',
'paymentCompletedConfirming': 'Pagamento concluído. A confirmar…',
'paymentCancelled': 'Pagamento cancelado',
'paypalOpenedCompleteInBrowser': 'PayPal aberto. Por favor, conclua o pagamento no seu navegador.',
'paypalOpenedCompleteInBrowser':
'PayPal aberto. Por favor, conclua o pagamento no seu navegador.',
'paypalOpenFailed': 'Não é possível abrir a página de pagamento do PayPal',
'paymentTestTitle': 'Teste de pagamento',
'paymentTestOrderInfo': 'Informações do pedido de teste',
@ -288,7 +315,8 @@ const Map<String, String> ptPT = {
'errorInfoWithMessage': 'Erro: @message',
'retest': 'Testar novamente',
'paymentTestInstructionsTitle': 'Instruções',
'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',
'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',
'startingWechatPayment': 'A iniciar o WeChat Pay...',
'startingAlipayPayment': 'A iniciar o Alipay...',
'wechatPaymentSuccess': 'Pagamento via WeChat Pay bem-sucedido!',
@ -555,7 +583,8 @@ const Map<String, String> ptPT = {
'editTemplate': 'Editar modelo',
'createTemplate': 'Criar modelo',
'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':
'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',
'inputNameHint': 'Por favor, insira o nome',
'inputDescHint': 'Por favor, insira a descrição',
'custom': 'Personalizado',
@ -835,7 +864,8 @@ const Map<String, String> ptPT = {
"swipeUpForMore": "Deslize para cima para ver mais",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Aqui estão algumas músicas recomendadas:',
'playList': 'Lista de Reprodução',
@ -911,6 +949,29 @@ const Map<String, String> ptPT = {
"bicycling": "De bicicleta",
"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模块 - 天气卡片
'weatherQuery': 'A consultar as condições meteorológicas:',
'highest': 'Máxima',
@ -983,8 +1044,20 @@ const Map<String, String> ptPT = {
// 翻译模块 - 文本翻译
"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",
"translating": "A traduzir",
"translate": "Traduzir",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Introduza o texto a traduzir",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1263,9 +1336,12 @@ const Map<String, String> ptPT = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navegação em curso',
'native.notification.navigation.keepRunning': 'A navegar, mantenha a aplicação em execução',
'native.notification.bleAgent.running': 'O assistente de voz está em execução',
'native.notification.audioRecording.recording': 'A gravar áudio, toque para voltar à aplicação',
'native.notification.navigation.keepRunning':
'A navegar, mantenha a aplicação em execução',
'native.notification.bleAgent.running':
'O assistente de voz está em execução',
'native.notification.audioRecording.recording':
'A gravar áudio, toque para voltar à aplicação',
'native.notification.music.waiting': 'A aguardar reprodução',
'native.notification.music.previous': 'Anterior',
'native.notification.music.next': 'Seguinte',
@ -1413,6 +1489,60 @@ const Map<String, String> ptPT = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Nenhuma música a tocar", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> roRO = {
// 通用
'continue': 'Continuă',
'confirm': 'Confirmă',
@ -172,6 +171,29 @@ const Map<String, String> roRO = {
'right': 'Dreapta',
'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...",
"exploreSlogan": "Căști inteligente, posibilități infinite",
@ -265,12 +287,16 @@ const Map<String, String> roRO = {
'paymentException': 'Excepție la plată',
'paymentLaunchFailed': 'Lansarea plății a eșuat',
'paymentExceptionWithError': 'Excepție la plată: @error',
'paymentProcessingCheckLater': 'Comanda dvs. este în curs de procesare. Verificați mai târziu.',
'paymentResultQueryException': 'Interogarea rezultatului plății a eșuat: @error',
'orderConfirmedQuotaRefreshed': 'Comanda a fost confirmată. Cota dvs. a fost reîmprospătată.',
'paymentProcessingCheckLater':
'Comanda dvs. este în curs de procesare. Verificați mai târziu.',
'paymentResultQueryException':
'Interogarea rezultatului plății a eșuat: @error',
'orderConfirmedQuotaRefreshed':
'Comanda a fost confirmată. Cota dvs. a fost reîmprospătată.',
'paymentCompletedConfirming': 'Plată finalizată. Se confirmă…',
'paymentCancelled': 'Plată anulată',
'paypalOpenedCompleteInBrowser': 'PayPal deschis. Vă rugăm să finalizați plata în browser.',
'paypalOpenedCompleteInBrowser':
'PayPal deschis. Vă rugăm să finalizați plata în browser.',
'paypalOpenFailed': 'Nu se poate deschide pagina de plată PayPal',
'paymentTestTitle': 'Test de plată',
'paymentTestOrderInfo': 'Informații comandă de test',
@ -287,7 +313,8 @@ const Map<String, String> roRO = {
'errorInfoWithMessage': 'Eroare: @message',
'retest': 'Retestare',
'paymentTestInstructionsTitle': 'Instrucțiuni',
'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',
'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',
'startingWechatPayment': 'Se lansează WeChat Pay...',
'startingAlipayPayment': 'Se lansează Alipay...',
'wechatPaymentSuccess': 'WeChat Pay reușit!',
@ -501,16 +528,24 @@ const Map<String, String> roRO = {
'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Încheie și salvează', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Încheie fără a salva', // 结束录音不保存
'meetingRecordContinueInBackground': 'Continuă înregistrarea în fundal', // 后台继续录音
'meetingRecordStopTimeout': '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.', // 保存录音失败,请重试
'meetingRecordContinueInBackground':
'Continuă înregistrarea în fundal', // 后台继续录音
'meetingRecordStopTimeout':
'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', // 录音进行中
'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', // 悬浮窗权限
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'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...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
@ -545,7 +580,8 @@ const Map<String, String> roRO = {
'editTemplate': 'Editează șablon',
'createTemplate': 'Creează șablon',
'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':
'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',
'inputNameHint': 'Vă rugăm să introduceți numele',
'inputDescHint': 'Vă rugăm să introduceți descrierea',
'custom': 'Personalizat',
@ -705,7 +741,8 @@ const Map<String, String> roRO = {
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'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':
'Transcrierea a eșuat, vă rugăm să reîncercați mai târziu',
'summaryFailed': 'Rezumatul a eșuat, vă rugăm să reîncercați mai târziu',
'summaryFailedShort': 'Rezumat eșuat',
'transcriptionFailedShort': 'Transcriere eșuată',
@ -823,7 +860,8 @@ const Map<String, String> roRO = {
"swipeUpForMore": "Glisați în sus pentru mai mult",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Iată câteva melodii recomandate:',
'playList': 'Listă de redare',
@ -900,6 +945,29 @@ const Map<String, String> roRO = {
"bicycling": "Cu bicicleta",
"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模块 - 天气卡片
'weatherQuery': 'Se interoghează condițiile meteo:',
'highest': 'Maximă',
@ -972,8 +1040,20 @@ const Map<String, String> roRO = {
// 翻译模块 - 文本翻译
"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",
"translating": "Se traduce",
"translate": "Traducere",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Introduceți textul de tradus",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1252,9 +1332,11 @@ const Map<String, String> roRO = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigare în curs',
'native.notification.navigation.keepRunning': 'Navigare în curs, mențineți aplicația deschisă',
'native.notification.navigation.keepRunning':
'Navigare în curs, mențineți aplicația deschisă',
'native.notification.bleAgent.running': 'Asistentul vocal funcționează',
'native.notification.audioRecording.recording': 'Se înregistrează audio, atingeți pentru a reveni la aplicație',
'native.notification.audioRecording.recording':
'Se înregistrează audio, atingeți pentru a reveni la aplicație',
'native.notification.music.waiting': 'Așteaptă redarea',
'native.notification.music.previous': 'Anterior',
'native.notification.music.next': 'Următorul',
@ -1401,6 +1483,60 @@ const Map<String, String> roRO = {
"removeEarbudsEnsureBattery":
"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ă", // 暂无音乐
"noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> ruRU = {
// 通用
'continue': 'Продолжить',
'confirm': 'Подтвердить',
@ -169,6 +168,29 @@ const Map<String, String> ruRU = {
'right': 'Право',
'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...",
"exploreSlogan": "Умные наушники, безграничные возможности",
@ -264,11 +286,13 @@ const Map<String, String> ruRU = {
'paymentLaunchFailed': 'Не удалось запустить оплату',
'paymentExceptionWithError': 'Ошибка оплаты: @error',
'paymentProcessingCheckLater': 'Ваш заказ обрабатывается. Проверьте позже.',
'paymentResultQueryException': 'Не удалось запросить результат оплаты: @error',
'paymentResultQueryException':
'Не удалось запросить результат оплаты: @error',
'orderConfirmedQuotaRefreshed': 'Заказ подтверждён. Ваша квота обновлена.',
'paymentCompletedConfirming': 'Оплата завершена. Подтверждение…',
'paymentCancelled': 'Оплата отменена',
'paypalOpenedCompleteInBrowser': 'PayPal открыт. Завершите оплату в браузере.',
'paypalOpenedCompleteInBrowser':
'PayPal открыт. Завершите оплату в браузере.',
'paypalOpenFailed': 'Не удалось открыть страницу оплаты PayPal',
'paymentTestTitle': 'Тест оплаты',
'paymentTestOrderInfo': 'Информация о тестовом заказе',
@ -285,7 +309,8 @@ const Map<String, String> ruRU = {
'errorInfoWithMessage': 'Ошибка: @message',
'retest': 'Повторный тест',
'paymentTestInstructionsTitle': 'Инструкция',
'paymentTestInstructionsContent': '1. Выберите тестовую сумму (рекомендуется: ¥0.01)\n2. Нажмите кнопку оплаты для начала\n3. Завершите оплату в приложении для оплаты\n4. Вернитесь, чтобы проверить результат',
'paymentTestInstructionsContent':
'1. Выберите тестовую сумму (рекомендуется: ¥0.01)\n2. Нажмите кнопку оплаты для начала\n3. Завершите оплату в приложении для оплаты\n4. Вернитесь, чтобы проверить результат',
'startingWechatPayment': 'Запуск WeChat Pay...',
'startingAlipayPayment': 'Запуск Alipay...',
'wechatPaymentSuccess': 'Оплата через WeChat Pay прошла успешно!',
@ -554,7 +579,8 @@ const Map<String, String> ruRU = {
'editTemplate': 'Редактировать шаблон',
'createTemplate': 'Создать шаблон',
'name': 'Название',
'templateContentHint': 'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания',
'templateContentHint':
'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания',
'inputNameHint': 'Пожалуйста, введите название',
'inputDescHint': 'Пожалуйста, введите описание',
'custom': 'Пользовательский',
@ -830,7 +856,8 @@ const Map<String, String> ruRU = {
"swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.',
'voice_interrupt_tip':
'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -886,6 +913,13 @@ const Map<String, String> ruRU = {
'Мы хотим знать причину вашей жалобы, вы можете описать проблему, с которой столкнулись.',
'generatedByAi': 'Сгенерировано AI',
// Agent模块 - 工具调用
'toolCall': 'Вызов инструмента',
'noResult': 'Нет результатов',
'noToolCallContentToCopy': 'Нет содержимого вызова для копирования',
'toolCallDetails': 'Детали вызова инструмента:',
'toolCallContentCopied': 'Содержимое скопировано в буфер обмена',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Вот несколько рекомендованных композиций:',
'playList': 'Плейлист',
@ -906,6 +940,29 @@ const Map<String, String> ruRU = {
"bicycling": "На велосипеде",
"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模块 - 天气卡片
'weatherQuery': 'Запрос погодных условий:',
'highest': 'Макс.',
@ -978,8 +1035,19 @@ const Map<String, String> ruRU = {
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Отключить плавающее окно',
'enableFloatingWindow': 'Включить плавающее окно',
'permissionTip': 'Подсказка о разрешениях',
'micPermissionRequiredForRecording':
'Для записи требуется разрешение микрофона',
'deleteTranslationRecordError': 'Ошибка при удалении записи перевода: @error',
"translationFailed": "Translation failed",
"translating": "Перевод",
"translate": "Перевести",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Введите текст для перевода",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1259,7 +1327,8 @@ const Map<String, String> ruRU = {
'native.notification.navigation.title': 'Навигация запущена', // 导航进行中
'native.notification.navigation.keepRunning':
'Идёт навигация, держите приложение запущенным', // 正在导航中,请保持应用运行
'native.notification.bleAgent.running': 'Голосовой помощник работает', // 语音助手正在运行
'native.notification.bleAgent.running':
'Голосовой помощник работает', // 语音助手正在运行
'native.notification.audioRecording.recording':
'Идёт запись, нажмите чтобы вернуться в приложение', // 正在录音,点击返回应用
'native.notification.music.waiting': 'Ожидание воспроизведения', // 等待播放
@ -1409,6 +1478,59 @@ const Map<String, String> ruRU = {
"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':
'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": "Нет музыки", // 暂无音乐
"noPlayingMusic": "Нет воспроизводимой музыки", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> skSK = {
// 通用
'continue': 'Pokračovať',
'confirm': 'Potvrdiť',
@ -169,6 +168,29 @@ const Map<String, String> skSK = {
'right': 'Vpravo',
'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...",
"exploreSlogan": "Inteligentné slúchadlá, nekonečné možnosti",
@ -263,12 +285,15 @@ const Map<String, String> skSK = {
'paymentException': 'Výnimka platby',
'paymentLaunchFailed': 'Spustenie platby zlyhalo',
'paymentExceptionWithError': 'Výnimka platby: @error',
'paymentProcessingCheckLater': 'Vaša objednávka sa spracováva. Skontrolujte neskôr.',
'paymentProcessingCheckLater':
'Vaša objednávka sa spracováva. Skontrolujte neskôr.',
'paymentResultQueryException': 'Nepodarilo sa zistiť výsledok platby: @error',
'orderConfirmedQuotaRefreshed': 'Objednávka potvrdená. Váš limit bol obnovený.',
'orderConfirmedQuotaRefreshed':
'Objednávka potvrdená. Váš limit bol obnovený.',
'paymentCompletedConfirming': 'Platba dokončená. Potvrdzovanie…',
'paymentCancelled': 'Platba bola zrušená',
'paypalOpenedCompleteInBrowser': 'PayPal je otvorený. Dokončite platbu v prehliadači.',
'paypalOpenedCompleteInBrowser':
'PayPal je otvorený. Dokončite platbu v prehliadači.',
'paypalOpenFailed': 'Nie je možné otvoriť platobnú stránku PayPal',
'paymentTestTitle': 'Test platby',
'paymentTestOrderInfo': 'Informácie o testovacej objednávke',
@ -285,7 +310,8 @@ const Map<String, String> skSK = {
'errorInfoWithMessage': 'Chyba: @message',
'retest': 'Znova otestovať',
'paymentTestInstructionsTitle': 'Pokyny',
'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',
'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',
'startingWechatPayment': 'Spúšťanie WeChat Pay...',
'startingAlipayPayment': 'Spúšťanie Alipay...',
'wechatPaymentSuccess': 'Platba WeChat Pay úspešná!',
@ -551,7 +577,8 @@ const Map<String, String> skSK = {
'editTemplate': 'Upraviť šablónu',
'createTemplate': 'Vytvoriť šablónu',
'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':
'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',
'inputNameHint': 'Prosím zadajte názov',
'inputDescHint': 'Prosím zadajte popis',
'custom': 'Vlastné',
@ -826,7 +853,8 @@ const Map<String, String> skSK = {
"swipeUpForMore": "Potiahnite nahor pre viac",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Tu sú niektoré odporúčané skladby:',
'playList': 'Zoznam skladieb',
@ -902,6 +937,29 @@ const Map<String, String> skSK = {
"bicycling": "Bicyklovanie",
"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模块 - 天气卡片
'weatherQuery': 'Dotaz na poveternostné podmienky:',
'highest': 'Najvyššia',
@ -973,8 +1031,19 @@ const Map<String, String> skSK = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Zadajte text na preklad",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1249,9 +1318,11 @@ const Map<String, String> skSK = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigácia prebieha',
'native.notification.navigation.keepRunning': 'Navigácia, ponechajte aplikáciu spustenú',
'native.notification.navigation.keepRunning':
'Navigácia, ponechajte aplikáciu spustenú',
'native.notification.bleAgent.running': 'Hlasový asistent je spustený',
'native.notification.audioRecording.recording': 'Nahrávanie zvuku, ťuknite pre návrat do aplikácie',
'native.notification.audioRecording.recording':
'Nahrávanie zvuku, ťuknite pre návrat do aplikácie',
'native.notification.music.waiting': 'Čakanie na prehranie',
'native.notification.music.previous': 'Predchádzajúca',
'native.notification.music.next': 'Ďalšia',
@ -1398,6 +1469,59 @@ const Map<String, String> skSK = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> slSI = {
// 通用
'continue': 'Nadaljuj',
'confirm': 'Potrdi',
@ -169,6 +168,29 @@ const Map<String, String> slSI = {
'right': 'Desno',
'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...",
"exploreSlogan": "Pametne slušalke, neskončne možnosti",
@ -263,12 +285,16 @@ const Map<String, String> slSI = {
'paymentException': 'Izjema pri plačilu',
'paymentLaunchFailed': 'Zagon plačila ni uspel',
'paymentExceptionWithError': 'Izjema pri plačilu: @error',
'paymentProcessingCheckLater': 'Vaše naročilo se obdeluje. Preverite pozneje.',
'paymentResultQueryException': 'Poizvedba o rezultatu plačila ni uspela: @error',
'orderConfirmedQuotaRefreshed': 'Naročilo je potrjeno. Vaša kvota je bila osvežena.',
'paymentProcessingCheckLater':
'Vaše naročilo se obdeluje. Preverite pozneje.',
'paymentResultQueryException':
'Poizvedba o rezultatu plačila ni uspela: @error',
'orderConfirmedQuotaRefreshed':
'Naročilo je potrjeno. Vaša kvota je bila osvežena.',
'paymentCompletedConfirming': 'Plačilo je zaključeno. Potrjevanje…',
'paymentCancelled': 'Plačilo je preklicano',
'paypalOpenedCompleteInBrowser': 'PayPal je odprt. Prosimo dokončajte plačilo v brskalniku.',
'paypalOpenedCompleteInBrowser':
'PayPal je odprt. Prosimo dokončajte plačilo v brskalniku.',
'paypalOpenFailed': 'Ni mogoče odpreti strani za plačilo PayPal',
'paymentTestTitle': 'Test plačila',
'paymentTestOrderInfo': 'Informacije o testnem naročilu',
@ -285,7 +311,8 @@ const Map<String, String> slSI = {
'errorInfoWithMessage': 'Napaka: @message',
'retest': 'Ponovno testiraj',
'paymentTestInstructionsTitle': 'Navodila',
'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',
'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',
'startingWechatPayment': 'Zaganjanje WeChat Pay...',
'startingAlipayPayment': 'Zaganjanje Alipay...',
'wechatPaymentSuccess': 'Plačilo WeChat Pay uspešno!',
@ -546,11 +573,13 @@ const Map<String, String> slSI = {
'description': 'Opis',
'template': 'Predloga',
'deleteTemplate': 'Izbriši predlogo',
'deleteTemplateConfirm': 'Ali ste prepričani, da želite izbrisati to predlogo?',
'deleteTemplateConfirm':
'Ali ste prepričani, da želite izbrisati to predlogo?',
'editTemplate': 'Uredi predlogo',
'createTemplate': 'Ustvari predlogo',
'name': 'Ime',
'templateContentHint': 'Prosimo vnesite vsebino predloge! Namig: Kliknite gumb AI zgoraj za hitro ustvarjanje vsebine predloge na podlagi vnesenega imena in opisa',
'templateContentHint':
'Prosimo vnesite vsebino predloge! Namig: Kliknite gumb AI zgoraj za hitro ustvarjanje vsebine predloge na podlagi vnesenega imena in opisa',
'inputNameHint': 'Prosimo vnesite ime',
'inputDescHint': 'Prosimo vnesite opis',
'custom': 'Po meri',
@ -827,7 +856,8 @@ const Map<String, String> slSI = {
"swipeUpForMore": "Povlecite navzgor za več",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"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模块 - 预设提示词
"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.',
'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模块 - 音乐卡片
'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:',
'playList': 'Seznam predvajanja',
@ -904,6 +941,29 @@ const Map<String, String> slSI = {
"bicycling": "Kolesarjenje",
"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模块 - 天气卡片
'weatherQuery': 'Poizvedba o vremenskih razmerah:',
'highest': 'Najvišja',
@ -976,8 +1036,19 @@ const Map<String, String> slSI = {
// 翻译模块 - 文本翻译
"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",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Vnesite besedilo za prevod",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1253,9 +1324,11 @@ const Map<String, String> slSI = {
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija poteka',
'native.notification.navigation.keepRunning': 'Navigacija, ohranite aplikacijo zagnano',
'native.notification.navigation.keepRunning':
'Navigacija, ohranite aplikacijo zagnano',
'native.notification.bleAgent.running': 'Glasovni pomočnik deluje',
'native.notification.audioRecording.recording': 'Snemanje zvoka, tapnite za vrnitev v aplikacijo',
'native.notification.audioRecording.recording':
'Snemanje zvoka, tapnite za vrnitev v aplikacijo',
'native.notification.music.waiting': 'Čakanje na predvajanje',
'native.notification.music.previous': 'Prejšnja',
'native.notification.music.next': 'Naslednja',
@ -1402,6 +1475,59 @@ const Map<String, String> slSI = {
"removeEarbudsEnsureBattery":
"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", // 暂无音乐
"noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐

1145
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',
'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...",
"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å.',
'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模块 - 音乐卡片
'recommendedMusic': 'Här är några rekommenderade låtar:',
'playList': 'Spellista',
@ -843,6 +870,28 @@ const Map<String, String> svSE = {
"bicycling": "Cykling",
"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模块 - 天气卡片
'weatherQuery': 'Söker väderinformation:',
'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",
"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",
"translationFailed": "Translation failed",
"translating": "Översätter",
"translate": "Översätt",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Ange texten som ska översättas",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -1253,6 +1312,47 @@ const Map<String, String> svSE = {
"updateContent": "Uppdateringsinnehåll",
"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", // 暂无音乐
"noPlayingMusic": "Ingen musik spelas", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> thTH = {
// 通用
'continue': 'ดำเนินการต่อ',
'confirm': 'ยืนยัน',
@ -99,14 +98,16 @@ const Map<String, String> thTH = {
"tip": "เคล็ดลับ",
"pleaseEnterCompleteCode": "กรุณากรอกรหัสยืนยันให้ครบถ้วน",
"loginFailed": "เข้าสู่ระบบล้มเหลว กรุณาลองใหม่",
'pleaseAcceptPrivacyPolicy': 'กรุณาอ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้ก่อน',
'pleaseAcceptPrivacyPolicy':
'กรุณาอ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้ก่อน',
"enterVerificationCode": "กรอกรหัสยืนยัน",
"verificationCodeSentTo": "รหัสยืนยันถูกส่งไปยัง",
"resendVerificationCode": "ส่งรหัสยืนยันอีกครั้ง",
"login": "เข้าสู่ระบบ",
"usePasswordLogin": "เข้าสู่ระบบด้วยรหัสผ่าน",
"loginDeclaration": "คำประกาศของ Voitrans", // Voitrans 声明
"welcomeToThisApp": "ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读
"welcomeToThisApp":
"ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读
"privacyPolicyText":
",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "ไม่ยอมรับ", // 不同意
@ -126,7 +127,8 @@ const Map<String, String> thTH = {
"aiAssistant": "ผู้ช่วย AI รอบด้าน",
"aiAssistantInfo": "ที่ปรึกษาส่วนตัว 24 ชั่วโมง ตอบคำถาม ให้คำแนะนำ",
"interpretation": "การแปลภาษาพร้อมกัน",
"simultaneousInterpretationInfo": "แปลหลายภาษาแบบเรียลไทม์ เดินทางต่างประเทศไร้กังวล",
"simultaneousInterpretationInfo":
"แปลหลายภาษาแบบเรียลไทม์ เดินทางต่างประเทศไร้กังวล",
"aiCompanion": "เพื่อนคู่คิดสำหรับครอบครัว",
"aiCompanionInfo": "เข้าใจคุณ อยู่เคียงข้างอย่างอบอุ่น",
"homeSlogan": "เชื่อมต่อโลก เหนือกว่าเสียง",
@ -161,6 +163,29 @@ const Map<String, String> thTH = {
'right': 'ขวา',
'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": "ค้นหาฟังก์ชัน AI...",
"exploreSlogan": "หูฟังอัจฉริยะ ความเป็นไปได้ไม่สิ้นสุด",
@ -222,7 +247,8 @@ const Map<String, String> thTH = {
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed",
"statsLoadFailedTryLater": "Statistics failed to load. Please try again later.",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
@ -252,9 +278,11 @@ const Map<String, String> thTH = {
'paymentException': 'การชำระเงินผิดปกติ',
'paymentLaunchFailed': 'ไม่สามารถเปิดการชำระเงินได้',
'paymentExceptionWithError': 'การชำระเงินผิดปกติ: @error',
'paymentProcessingCheckLater': 'คำสั่งซื้อของคุณกำลังดำเนินการ กรุณาตรวจสอบภายหลัง',
'paymentProcessingCheckLater':
'คำสั่งซื้อของคุณกำลังดำเนินการ กรุณาตรวจสอบภายหลัง',
'paymentResultQueryException': 'ไม่สามารถสอบถามผลการชำระเงินได้: @error',
'orderConfirmedQuotaRefreshed': 'ยืนยันคำสั่งซื้อแล้ว โควตาของคุณได้รับการรีเฟรชแล้ว',
'orderConfirmedQuotaRefreshed':
'ยืนยันคำสั่งซื้อแล้ว โควตาของคุณได้รับการรีเฟรชแล้ว',
'paymentCompletedConfirming': 'ชำระเงินเสร็จสิ้น กำลังยืนยัน…',
'paymentCancelled': 'ยกเลิกการชำระเงินแล้ว',
'paypalOpenedCompleteInBrowser': 'PayPal เปิดแล้ว กรุณาชำระเงินในเบราว์เซอร์',
@ -274,7 +302,8 @@ const Map<String, String> thTH = {
'errorInfoWithMessage': 'ข้อผิดพลาด: @message',
'retest': 'ทดสอบอีกครั้ง',
'paymentTestInstructionsTitle': 'คำแนะนำ',
'paymentTestInstructionsContent': '1. เลือกจำนวนเงินทดสอบ (แนะนำ: ¥0.01)\n2. กดปุ่มชำระเงินเพื่อเริ่มต้น\n3. ชำระเงินในแอปชำระเงิน\n4. กลับมาตรวจสอบผลลัพธ์',
'paymentTestInstructionsContent':
'1. เลือกจำนวนเงินทดสอบ (แนะนำ: ¥0.01)\n2. กดปุ่มชำระเงินเพื่อเริ่มต้น\n3. ชำระเงินในแอปชำระเงิน\n4. กลับมาตรวจสอบผลลัพธ์',
'startingWechatPayment': 'กำลังเปิด WeChat Pay...',
'startingAlipayPayment': 'กำลังเปิด Alipay...',
'wechatPaymentSuccess': 'ชำระเงินผ่าน WeChat Pay สำเร็จ!',
@ -289,9 +318,11 @@ const Map<String, String> thTH = {
'cannotLaunchAlipayPayment': 'ไม่สามารถเปิด Alipay ได้',
'alipayPaymentException': 'Alipay ผิดปกติ',
"insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.",
"insufficientBalanceDesc":
"Insufficient balance, please go to the corresponding recharge page to recharge.",
"recharge": "Go to Recharge",
"aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.",
"aiMemberExpiredDesc":
"AI membership expired, please go to the membership recharge page to renew.",
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
@ -299,11 +330,15 @@ const Map<String, String> thTH = {
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
@ -312,32 +347,39 @@ const Map<String, String> thTH = {
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders',
'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve': 'Terminology optimization and context preservation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// 商品模块 - 会议商品页
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
@ -346,7 +388,8 @@ const Map<String, String> thTH = {
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
@ -361,7 +404,8 @@ const Map<String, String> thTH = {
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100',
@ -411,7 +455,8 @@ const Map<String, String> thTH = {
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart': 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
@ -459,7 +504,8 @@ const Map<String, String> thTH = {
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo': 'Download complete, {count} files in total, returning automatically in 2 seconds',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
@ -472,11 +518,15 @@ const Map<String, String> thTH = {
'meetingRecordEndAndSave': 'จบและบันทึก', // 结束录音并保存
'meetingRecordEndWithoutSave': 'จบโดยไม่บันทึก', // 结束录音不保存
'meetingRecordContinueInBackground': 'บันทึกต่อในพื้นหลัง', // 后台继续录音
'meetingRecordStopTimeout': 'หมดเวลาหยุดการบันทึก โปรดลองอีกครั้ง', // 结束录音超时,请重试
'meetingRecordStopFailed': 'หยุดการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'บันทึกการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 保存录音失败,请重试
'meetingRecordStopTimeout':
'หมดเวลาหยุดการบันทึก โปรดลองอีกครั้ง', // 结束录音超时,请重试
'meetingRecordStopFailed':
'หยุดการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'บันทึกการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'กำลังบันทึก', // 录音进行中
'meetingRecordRecordingNotificationBody': 'กำลังบันทึกในพื้นหลัง แตะเพื่อกลับไปที่แอป', // 正在后台录音,点击返回应用
'meetingRecordRecordingNotificationBody':
'กำลังบันทึกในพื้นหลัง แตะเพื่อกลับไปที่แอป', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'สิทธิ์หน้าต่างลอย', // 悬浮窗权限
'overlayPermissionTranslationDesc':
'เพื่อแสดงผลการแปลระหว่างการโทรหรือการแปลเสียง/วิดีโอ เราต้องใช้สิทธิ์แสดงทับแอปอื่น ซึ่งจะทำให้คุณเห็นคำแปลแบบเรียลไทม์ขณะใช้แอปอื่นได้', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
@ -518,7 +568,8 @@ const Map<String, String> thTH = {
'editTemplate': 'แก้ไขเทมเพลต',
'createTemplate': 'สร้างเทมเพลต',
'name': 'ชื่อ',
'templateContentHint': 'กรุณาป้อนเนื้อหาเทมเพลต! เคล็ดลับ: กดปุ่ม AI ด้านบนเพื่อสร้างเนื้อหาเทมเพลตอย่างรวดเร็วตามชื่อและคำอธิบายที่คุณป้อน',
'templateContentHint':
'กรุณาป้อนเนื้อหาเทมเพลต! เคล็ดลับ: กดปุ่ม AI ด้านบนเพื่อสร้างเนื้อหาเทมเพลตอย่างรวดเร็วตามชื่อและคำอธิบายที่คุณป้อน',
'inputNameHint': 'กรุณาป้อนชื่อ',
'inputDescHint': 'กรุณาป้อนคำอธิบาย',
'custom': 'กำหนดเอง',
@ -528,7 +579,8 @@ const Map<String, String> thTH = {
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
@ -575,7 +627,8 @@ const Map<String, String> thTH = {
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
@ -618,38 +671,52 @@ const Map<String, String> thTH = {
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc': 'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc': 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc': 'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc': 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc': '7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc': '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote': '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 录音语言
@ -682,7 +749,8 @@ const Map<String, String> thTH = {
"cloudSync": "การเติมเงินการ đồng bộ hóaคลาวด์",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc": "First bind device reward has been issued. Tap OK to close.",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "อุปกรณ์ที่เชื่อมต่อ:",
"accountId": "ID บัญชี:",
"systemSetting": "การตั้งค่าระบบ",
@ -695,7 +763,8 @@ const Map<String, String> thTH = {
"privacySettings": "การตั้งค่าความเป็นส่วนตัว",
"privacySettingsInfo": "จัดการการรวบรวมข้อมูลและสิทธิ์",
"permissionManagement": "การจัดการสิทธิ์", // 权限管理
"permissionManagementInfo": "จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน", // 管理应用权限设置
"permissionManagementInfo":
"จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน", // 管理应用权限设置
"aboutApplication": "เกี่ยวกับแอปพลิเคชัน",
"versions": "เวอร์ชัน",
"checkUpdates": "ตรวจสอบการอัปเดต",
@ -704,9 +773,11 @@ const Map<String, String> thTH = {
"voiceServiceInfo": "เลือกบริการรู้จำและสังเคราะห์เสียง",
"selectVoiceService": "เลือกบริการเสียง",
"azureVoiceService": "บริการเสียง Azure",
"azureVoiceServiceInfo": "บริการเสียงบนคลาวด์ของ Microsoft รองรับการสังเคราะห์และรู้จำเสียงคุณภาพสูง",
"azureVoiceServiceInfo":
"บริการเสียงบนคลาวด์ของ Microsoft รองรับการสังเคราะห์และรู้จำเสียงคุณภาพสูง",
"flutterVoiceService": "บริการเสียงในเครื่อง Flutter",
"flutterVoiceServiceInfo": "บริการเสียงในเครื่องของอุปกรณ์ สามารถใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต",
"flutterVoiceServiceInfo":
"บริการเสียงในเครื่องของอุปกรณ์ สามารถใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต",
'timbreService': 'บริการโทนเสียง',
'timbreServiceInfo': 'เลือกบริการสังเคราะห์เสียงด้วยโทนเสียง',
'defaultTimbre': 'โทนเสียงเริ่มต้น',
@ -724,7 +795,8 @@ const Map<String, String> thTH = {
'checkUpdateFailed': 'ตรวจสอบการอัปเดตล้มเหลว',
'networkErrorRetry': 'ข้อผิดพลาดเครือข่าย กรุณาลองใหม่ในภายหลัง',
"realtimeVoiceChat": "แชทเสียงแบบเรียลไทม์",
"realtimeVoiceChatInfo": "สัมผัสประสบการณ์การโต้ตอบด้วยเสียงอัจฉริยะ (ตัวอย่างฟังก์ชัน)",
"realtimeVoiceChatInfo":
"สัมผัสประสบการณ์การโต้ตอบด้วยเสียงอัจฉริยะ (ตัวอย่างฟังก์ชัน)",
"loading": "กำลังโหลด...",
// 设备管理模块
@ -772,7 +844,8 @@ const Map<String, String> thTH = {
"swipeUpForMore": "ปัดขึ้นเพื่อดูเพิ่มเติม",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'เมื่อเปิดใช้งาน: AI จะไม่ถูกขัดจังหวะโดยเสียงของคุณขณะพูด และสามารถจัดการได้เพียงหนึ่งรอบการสนทนา หากต้องการเริ่มรอบใหม่ เพียงพูดคำปลุก',
'voice_interrupt_tip':
'เมื่อเปิดใช้งาน: AI จะไม่ถูกขัดจังหวะโดยเสียงของคุณขณะพูด และสามารถจัดการได้เพียงหนึ่งรอบการสนทนา หากต้องการเริ่มรอบใหม่ เพียงพูดคำปลุก',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -795,10 +868,14 @@ const Map<String, String> thTH = {
'• 控制耳机功能\n\n'
'有什么我可以帮你的吗?',
'microphonePermission': 'ไมโครโฟน',
'voiceRecognitionPermissionText': 'ฟังก์ชันรู้จำเสียงต้องการการเข้าถึงไมโครโฟน',
'voiceTranslationPermissionText': 'ฟังก์ชันรู้จำและแปลเสียงต้องการการเข้าถึงไมโครโฟน',
'phoneCallPermissionText': 'ฟังก์ชันโทรออกต้องการการเข้าถึงไมโครโฟนสำหรับการโทรด้วยเสียง',
'permissionDeniedText': 'คุณได้ปฏิเสธการอนุญาตใช้ไมโครโฟนอย่างถาวร โปรดไปที่การตั้งค่าระบบเพื่อเปิดใช้งาน',
'voiceRecognitionPermissionText':
'ฟังก์ชันรู้จำเสียงต้องการการเข้าถึงไมโครโฟน',
'voiceTranslationPermissionText':
'ฟังก์ชันรู้จำและแปลเสียงต้องการการเข้าถึงไมโครโฟน',
'phoneCallPermissionText':
'ฟังก์ชันโทรออกต้องการการเข้าถึงไมโครโฟนสำหรับการโทรด้วยเสียง',
'permissionDeniedText':
'คุณได้ปฏิเสธการอนุญาตใช้ไมโครโฟนอย่างถาวร โปรดไปที่การตั้งค่าระบบเพื่อเปิดใช้งาน',
'startVoiceInput': 'เริ่มการป้อนข้อมูลด้วยเสียง',
'startPhoneCallMode': 'เริ่มโหมดโทรศัพท์ เริ่มการป้อนข้อมูลด้วยเสียง',
@ -820,9 +897,17 @@ const Map<String, String> thTH = {
'privacyRelated': 'เกี่ยวกับความเป็นส่วนตัว',
'copyrightViolation': 'ละเมิดลิขสิทธิ์ ชื่อเสียง ฯลฯ ของฉัน',
'other': 'อื่นๆ',
'reportDescriptionHint': 'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้',
'reportDescriptionHint':
'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้',
'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模块 - 音乐卡片
'recommendedMusic': 'นี่คือเพลงที่แนะนำบางส่วน:',
'playList': 'เพลย์ลิสต์',
@ -843,19 +928,49 @@ const Map<String, String> thTH = {
"bicycling": "ขี่จักรยาน",
"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模块 - 天气卡片
'weatherQuery': 'กำลังสอบถามสภาพอากาศ:',
'highest': 'สูงสุด',
'lowest': 'ต่ำสุด',
'futureForecast': 'พยากรณ์อากาศล่วงหน้า',
'hotWeatherTip': 'วันนี้อากาศร้อน โปรดระวังโรคลมแดด ดื่มน้ำมากๆ',
'coldWeatherTip': 'วันนี้อากาศเย็น โปรดใส่ใจเรื่องความอบอุ่นเมื่อออกไปข้างนอก ระวังเป็นหวัด',
'rainyWeatherTip': 'วันนี้มีฝน โปรดพกร่มเมื่อออกไปข้างนอก ระมัดระวังในการเดินทาง',
'snowyWeatherTip': 'วันนี้มีหิมะ ถนนลื่นโปรดระวังความปลอดภัย เตรียมมาตรการป้องกันความหนาว',
'foggyWeatherTip': 'วันนี้มีหมอก ทัศนวิสัยต่ำ โปรดสวมหน้ากากเมื่อออกไปข้างนอก',
'windyWeatherTip': 'วันนี้ลมแรง โปรดระวังความปลอดภัยเมื่อออกไปข้างนอก ยึดของให้แน่น',
'sunnyWeatherTip': 'วันนี้แดดจัด รังสียูวีแรง โปรดป้องกันแสงแดดเมื่อออกไปข้างนอก',
'temperatureDifferenceTip': 'วันนี้อุณหภูมิต่างกันมากระหว่างกลางวันและกลางคืน โปรดเพิ่มหรือลดเสื้อผ้าให้เหมาะสม',
'coldWeatherTip':
'วันนี้อากาศเย็น โปรดใส่ใจเรื่องความอบอุ่นเมื่อออกไปข้างนอก ระวังเป็นหวัด',
'rainyWeatherTip':
'วันนี้มีฝน โปรดพกร่มเมื่อออกไปข้างนอก ระมัดระวังในการเดินทาง',
'snowyWeatherTip':
'วันนี้มีหิมะ ถนนลื่นโปรดระวังความปลอดภัย เตรียมมาตรการป้องกันความหนาว',
'foggyWeatherTip':
'วันนี้มีหมอก ทัศนวิสัยต่ำ โปรดสวมหน้ากากเมื่อออกไปข้างนอก',
'windyWeatherTip':
'วันนี้ลมแรง โปรดระวังความปลอดภัยเมื่อออกไปข้างนอก ยึดของให้แน่น',
'sunnyWeatherTip':
'วันนี้แดดจัด รังสียูวีแรง โปรดป้องกันแสงแดดเมื่อออกไปข้างนอก',
'temperatureDifferenceTip':
'วันนี้อุณหภูมิต่างกันมากระหว่างกลางวันและกลางคืน โปรดเพิ่มหรือลดเสื้อผ้าให้เหมาะสม',
'comfortableWeatherTip': 'วันนี้อากาศดี เป็นเวลาที่ดีสำหรับกิจกรรมกลางแจ้ง',
"monday": "จ.",
"tuesday": "อ.",
@ -900,13 +1015,25 @@ const Map<String, String> thTH = {
"selectTargetLanguage": "เลือกภาษาเป้าหมาย",
"me": "Me",
"counterPart": "Counterpart",
"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", // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "กรุณากรอกข้อความที่ต้องการแปล",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -914,10 +1041,12 @@ const Map<String, String> thTH = {
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "ล้างประวัติ",
"clearHistoryConfirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้",
"clearHistoryConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้",
"unknownLanguage": "ภาษาที่ไม่รู้จัก",
"deleteSessionRecord": "ลบบันทึกเซสชัน",
"deleteSessionConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
"deleteSessionConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
@ -949,15 +1078,20 @@ const Map<String, String> thTH = {
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException": "Image translation API exception. Check network and retry",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired": "Photo album permission required to pick images",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
@ -988,9 +1122,11 @@ const Map<String, String> thTH = {
"summaryGenerated": "สร้างสรุปแล้ว",
"generating": "กำลังสร้าง...",
"regenerate": "สร้างใหม่",
"summaryTimeoutMessage": "คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง",
"summaryTimeoutMessage":
"คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง",
"deleteTranslationRecord": "ลบบันทึกการแปล",
"deleteTranslationConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
"deleteTranslationConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
"originalText": "ข้อความต้นฉบับ",
"translatedText": "ข้อความที่แปลแล้ว",
"sessionSummary": "สรุปเซสชัน",
@ -1010,20 +1146,27 @@ const Map<String, String> thTH = {
"logout": "ออกจากระบบ",
"logoutTips": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบบัญชีปัจจุบัน",
'deleteAccount': 'ลบบัญชี',
'deleteAccountTips': 'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้',
'deleteAccountTips':
'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
'networkConnectionFailed': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่',
'serverTemporarilyUnavailable': 'เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ชั่วคราว โปรดลองใหม่ในภายหลัง',
'loginExpiredPleaseRelogin': 'การเข้าสู่ระบบหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง',
'networkConnectionFailed':
'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่',
'serverTemporarilyUnavailable':
'เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ชั่วคราว โปรดลองใหม่ในภายหลัง',
'loginExpiredPleaseRelogin':
'การเข้าสู่ระบบหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง',
'noPermissionForThisOperation': 'ไม่มีสิทธิ์ดำเนินการนี้',
'requestedResourceNotFound': 'ไม่พบทรัพยากรที่ร้องขอ',
'imageProcessingFailedPleaseReselect': 'การประมวลผลรูปภาพล้มเหลว โปรดเลือกรูปภาพอีกครั้ง',
'imageProcessingFailedPleaseReselect':
'การประมวลผลรูปภาพล้มเหลว โปรดเลือกรูปภาพอีกครั้ง',
'operationFailedPleaseRetry': 'การดำเนินการล้มเหลว โปรดลองใหม่',
'serverReturnedError': 'เซิร์ฟเวอร์ส่งคืนข้อผิดพลาด',
'serverError': 'ข้อผิดพลาดของเซิร์ฟเวอร์',
'networkConnectionFailedCheckSettings': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่าย',
'serverInternalErrorRetryLater': 'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง',
'networkConnectionFailedCheckSettings':
'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่าย',
'serverInternalErrorRetryLater':
'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง',
'imageCompressionFailed': 'การบีบอัดรูปภาพล้มเหลว',
'avatarUpdateFailed': 'อัปเดตอวาตาร์ล้มเหลว',
'usernameCannotBeEmpty': 'ชื่อผู้ใช้ต้องไม่ว่างเปล่า',
@ -1039,14 +1182,17 @@ const Map<String, String> thTH = {
'thirdPartyLogoutSuccess': 'ออกจากระบบบุคคลที่สามสำเร็จ', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'ออกจากระบบบุคคลที่สามล้มเหลว', // 第三方登录退出失败
'signOutProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการออกจากระบบ', // 登出过程发生错误
'deleteAccountProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี', // 删除账号过程发生错误
'deleteAccountProcessError':
'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี', // 删除账号过程发生错误
'userDataClearSuccess': 'ล้างข้อมูลผู้ใช้สำเร็จ', // 用户数据清理成功
'allUserDataClearSuccess': 'ล้างข้อมูลผู้ใช้ทั้งหมดสำเร็จ', // 所有用户数据清理成功
'accountServiceInitialized': 'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化
'accountServiceInitialized':
'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。',
'getPermissionStatusFailed': 'รับสถานะสิทธิ์ล้มเหลว',
@ -1068,9 +1214,11 @@ const Map<String, String> thTH = {
'locationInfo': 'ข้อมูลตำแหน่ง',
'phonePermissionDesc': 'ใช้สำหรับฟังก์ชันการโทรออก',
'smsPermissionDesc': 'ใช้สำหรับฟังก์ชันการส่ง SMS',
'alarmPermissionDesc': 'Used to set exact alarms to ensure reminders trigger on time',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc': 'ใช้สำหรับสร้างกิจกรรมและการแจ้งเตือนในปฏิทิน',
'calendarFullAccessPermissionDesc': 'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน',
'calendarFullAccessPermissionDesc':
'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน',
'locationPermissionDesc': 'ใช้สำหรับรับข้อมูลตำแหน่งปัจจุบัน',
'appFunctionNeeds': 'ฟังก์ชันแอปพลิเคชันต้องการ',
'authorized': 'ได้รับอนุญาต',
@ -1082,40 +1230,63 @@ const Map<String, String> thTH = {
'permissionRequestError': 'เกิดข้อผิดพลาดขณะขอสิทธิ์',
'phonePermissionDetailDesc': 'ฟังก์ชันโทรออกต้องการสิทธิ์โทรศัพท์',
'smsPermissionDetailDesc': 'ฟังก์ชันส่ง SMS ต้องการสิทธิ์ SMS',
'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc': 'การสร้างกิจกรรมในปฏิทินต้องการสิทธิ์เขียนปฏิทิน',
'calendarFullAccessPermissionDetailDesc': 'การจัดการกิจกรรมในปฏิทินต้องการสิทธิ์เข้าถึงปฏิทินเต็มรูปแบบ',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'การสร้างกิจกรรมในปฏิทินต้องการสิทธิ์เขียนปฏิทิน',
'calendarFullAccessPermissionDetailDesc':
'การจัดการกิจกรรมในปฏิทินต้องการสิทธิ์เข้าถึงปฏิทินเต็มรูปแบบ',
'locationPermissionDetailDesc': 'การรับข้อมูลตำแหน่งต้องการสิทธิ์ตำแหน่ง',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc': 'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc': 'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc': 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc': 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc': 'Connecting to Bluetooth devices requires Bluetooth connect permission',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc': 'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction': 'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ',
'permanentDenialText': 'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ',
'permanentDenialText':
'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน',
'goToSettings': 'ไปที่การตั้งค่า',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation': 'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation': 'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial': 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial': 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial': 'Location permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation': 'Notification permission is required to display music playback status.',
'locationPermissionExplanation': 'Location permission is required to get current location.',
'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
'storagePermission': 'Storage',
'microphonePermissionExplanation': 'We need microphone permission to record audio content.',
'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。',
'storagePermissionPermanentDenial':
@ -1123,7 +1294,8 @@ const Map<String, String> thTH = {
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android)
@ -1131,7 +1303,8 @@ const Map<String, String> thTH = {
'native.notification.navigation.title': 'กำลังนำทาง',
'native.notification.navigation.keepRunning': 'กำลังนำทาง โปรดเปิดแอปไว้',
'native.notification.bleAgent.running': 'ตัวช่วยเสียงกำลังทำงาน',
'native.notification.audioRecording.recording': 'กำลังบันทึกเสียง แตะเพื่อกลับไปที่แอป',
'native.notification.audioRecording.recording':
'กำลังบันทึกเสียง แตะเพื่อกลับไปที่แอป',
'native.notification.music.waiting': 'กำลังรอเล่น',
'native.notification.music.previous': 'ก่อนหน้า',
'native.notification.music.next': 'ถัดไป',
@ -1145,8 +1318,10 @@ const Map<String, String> thTH = {
'updateNow': 'อัปเดตทันที', // 立即更新按钮
'checkUpdate': 'ตรวจสอบการอัปเดต', // 检查更新按钮
'updateFailed': 'อัปเดตล้มเหลว', // 更新失败提示
'cannotOpenAppStore': 'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示
'updateErrorRetry': 'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示
'cannotOpenAppStore':
'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示
'updateErrorRetry':
'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示
// 配对模块
"devicePairing": "การจับคู่อุปกรณ์",
@ -1164,23 +1339,29 @@ const Map<String, String> thTH = {
'bluetooth': 'บลูทูธ',
"readyToPair": "พร้อมที่จะจับคู่",
"preparingPairingEnvironment": "กำลังเตรียมสภาพแวดล้อมการจับคู่...",
"connectDeepSoundViaSystemBluetooth": "กรุณาเชื่อมต่อกับอุปกรณ์ Voitrans ผ่านบลูทูธของระบบก่อน",
"connectDeepSoundViaSystemBluetooth":
"กรุณาเชื่อมต่อกับอุปกรณ์ Voitrans ผ่านบลูทูธของระบบก่อน",
"deviceBindingConfirm": "ยืนยันการผูกอุปกรณ์...",
"establishingDeviceAssociation": "กำลังสร้างการเชื่อมโยงอุปกรณ์...",
"waitingCompletePairing": "กรุณารอสักครู่ กำลังทำการจับคู่ให้เสร็จสิ้น...",
"pairingSuccessRedirecting": "การจับคู่สำเร็จ! กำลังเปลี่ยนเส้นทางไปยังหน้าหลัก...",
"ensureConnectedDeepSoundDevice": "โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอุปกรณ์ Voitrans",
"pairingSuccessRedirecting":
"การจับคู่สำเร็จ! กำลังเปลี่ยนเส้นทางไปยังหน้าหลัก...",
"ensureConnectedDeepSoundDevice":
"โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอุปกรณ์ Voitrans",
"deviceAlreadyBoundToOtherAccount": "อุปกรณ์นี้ถูกผูกไว้กับบัญชีอื่นแล้ว",
"deviceAssociationFailed": "การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง",
"scanTimeoutEnsureDeviceNearby": "การสแกนหมดเวลา โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์อยู่ใกล้ๆ",
"scanTimeoutEnsureDeviceNearby":
"การสแกนหมดเวลา โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์อยู่ใกล้ๆ",
"networkError": "ข้อผิดพลาดเครือข่าย",
"authorizationFailedCheckCode": "การอนุญาตล้มเหลว โปรดตรวจสอบว่ารหัสอนุญาตถูกต้องหรือไม่",
"authorizationFailedCheckCode":
"การอนุญาตล้มเหลว โปรดตรวจสอบว่ารหัสอนุญาตถูกต้องหรือไม่",
"pairingFailedRetry": "การจับคู่ล้มเหลว โปรดลองอีกครั้ง",
'pleaseEnableBluetooth': 'กรุณาเปิดใช้งานบลูทูธ',
'deviceDisconnected': 'อุปกรณ์ตัดการเชื่อมต่อแล้ว',
'readyToStartPairing': 'พร้อมที่จะเริ่มการจับคู่',
'checkingEnvironment': 'กำลังตรวจสอบสภาพแวดล้อม...',
'ensureHeadsetOnAndPairingMode': 'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่',
'ensureHeadsetOnAndPairingMode':
'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่',
'establishingSecureConnection': 'กำลังสร้างการเชื่อมต่อที่ปลอดภัย...',
'needManualBindingAuthCode': 'ต้องใช้รหัสอนุญาตการผูกด้วยตนเอง...',
'pairingSuccessful': 'การจับคู่สำเร็จ!',
@ -1198,13 +1379,18 @@ const Map<String, String> thTH = {
'bleConnectionTimeoutRetry': 'การเชื่อมต่อ BLE หมดเวลา โปรดลองอีกครั้ง',
'blePairingStartupFailed': 'การเริ่มต้นการจับคู่ BLE ล้มเหลว',
'bleConnectionFailed': 'การเชื่อมต่อ BLE ล้มเหลว',
'deviceAuthorizationFailedCheckCode': 'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต',
'deviceAuthorizationFailedCheckCode':
'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2': 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3': 'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
// 配对模块 - 绑定奖励
@ -1227,11 +1413,13 @@ const Map<String, String> thTH = {
'contactInfo': 'ข้อมูลติดต่อ',
'contactHint': 'อีเมล/หมายเลขโทรศัพท์ เพื่อให้เราสามารถติดต่อคุณได้',
'submit': 'ส่ง',
'feedbackSubmitSuccess': 'ส่งความคิดเห็นสำเร็จ ขอบคุณสำหรับความคิดเห็นของคุณ!',
'feedbackSubmitSuccess':
'ส่งความคิดเห็นสำเร็จ ขอบคุณสำหรับความคิดเห็นของคุณ!',
'feedbackSubmitFailed': 'ส่งความคิดเห็นล้มเหลว โปรดลองใหม่ในภายหลัง',
// OTA升级模块
"upgradeExitConfirm": "กำลังอัปเกรด การออกจะขัดจังหวะกระบวนการอัปเกรด คุณแน่ใจหรือไม่ว่าต้องการออก",
"upgradeExitConfirm":
"กำลังอัปเกรด การออกจะขัดจังหวะกระบวนการอัปเกรด คุณแน่ใจหรือไม่ว่าต้องการออก",
"deviceModel": "รุ่นอุปกรณ์",
"unknownDevice": "อุปกรณ์ที่ไม่รู้จัก",
"currentFirmwareVersion": "เวอร์ชันเฟิร์มแวร์ปัจจุบัน",
@ -1244,14 +1432,70 @@ const Map<String, String> thTH = {
"retryConnection": "ลองเชื่อมต่อใหม่",
"ota_updateNow": "อัปเดตทันที",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable": "Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable": "Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid": "Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน",
"doNotDisconnect": "โปรดอย่าตัดการเชื่อมต่อ",
"charging": "กำลังชาร์จ",
"updateContent": "เนื้อหาการอัปเดต",
"removeEarbudsEnsureBattery": "ถอดหูฟังทั้งสองข้างออก และตรวจสอบให้แน่ใจว่าแบตเตอรี่ทั้งสองข้างมีพลังงานมากกว่า 20%",
"removeEarbudsEnsureBattery":
"ถอดหูฟังทั้งสองข้างออก และตรวจสอบให้แน่ใจว่าแบตเตอรี่ทั้งสองข้างมีพลังงานมากกว่า 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": "ไม่มีเพลง", // 暂无音乐

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

File diff suppressed because it is too large

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

@ -1,5 +1,4 @@
const Map<String, String> trTR = {
// 通用
'continue': 'Devam Et',
'confirm': 'Onayla',
@ -80,7 +79,8 @@ const Map<String, String> trTR = {
// 登录模块
"welcome": "Hoş Geldiniz",
"loginTips": "Lütfen telefon numaranızı veya e-postanızı kullanarak giriş yapın veya hesap oluşturun",
"loginTips":
"Lütfen telefon numaranızı veya e-postanızı kullanarak giriş yapın veya hesap oluşturun",
"accountNumber": "Telefon Numarası veya E-posta",
"verificationCode": "Doğrulama Kodu",
"getCode": "Kodu Al",
@ -99,14 +99,16 @@ const Map<String, String> trTR = {
"tip": "İpucu",
"pleaseEnterCompleteCode": "Lütfen tam doğrulama kodunu girin",
"loginFailed": "Giriş başarısız, lütfen tekrar deneyin",
'pleaseAcceptPrivacyPolicy': 'Lütfen önce Gizlilik Politikasını ve Kullanıcı Sözleşmesini okuyup kabul edin',
'pleaseAcceptPrivacyPolicy':
'Lütfen önce Gizlilik Politikasını ve Kullanıcı Sözleşmesini okuyup kabul edin',
"enterVerificationCode": "Doğrulama kodunu girin",
"verificationCodeSentTo": "Doğrulama kodu şuraya gönderildi:",
"resendVerificationCode": "Doğrulama kodunu tekrar gönder",
"login": "Giriş Yap",
"usePasswordLogin": "Parolayla Giriş Yap",
"loginDeclaration": "Voitrans Beyanı", // Voitrans 声明
"welcomeToThisApp": "Voitrans'a hoş geldiniz, lütfen dikkatlice okuyun", // 欢迎使用Voitrans,请充分阅读
"welcomeToThisApp":
"Voitrans'a hoş geldiniz, lütfen dikkatlice okuyun", // 欢迎使用Voitrans,请充分阅读
"privacyPolicyText":
",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Reddet", // 不同意
@ -120,17 +122,20 @@ const Map<String, String> trTR = {
"signal": "Sinyal",
"deviceId": "Cihaz Kimliği",
"firmwareVersion": "Donanım Yazılımı Sürümü",
"disconnectedDevice": "Bağlı cihaz yok, bağlanmak için aşağıdaki düğmeye tıklayın",
"disconnectedDevice":
"Bağlı cihaz yok, bağlanmak için aşağıdaki düğmeye tıklayın",
"connectDevice": "Cihaz Bağla",
"topAiExperiences": "En İyi Yapay Zeka Deneyimleri",
"aiAssistant": "Her Şey Dahil Yapay Zeka Asistanı",
"aiAssistantInfo": "Sorular ve tavsiyeler için 7/24 özel danışman",
"interpretation": "Simultane Çeviri",
"simultaneousInterpretationInfo": "Birden çok dil için gerçek zamanlı çeviri, sorunsuz yurt dışı seyahati",
"simultaneousInterpretationInfo":
"Birden çok dil için gerçek zamanlı çeviri, sorunsuz yurt dışı seyahati",
"aiCompanion": "Aile Arkadaşı",
"aiCompanionInfo": "Sizi anlar ve sıcak bir arkadaşlık sunar",
"homeSlogan": "Dünyayla bağlan, sesin ötesine geç",
"turnEarphones": "Lütfen kulaklık şarj kutusunu açın ve kulaklıkları kulaklarınıza takın",
"turnEarphones":
"Lütfen kulaklık şarj kutusunu açın ve kulaklıkları kulaklarınıza takın",
"currentlyConnected": "Şu anda bağlı:",
"unsystemSetup": "Sistem ayarlarına git",
"talkLater": "Daha Sonra",
@ -161,6 +166,29 @@ const Map<String, String> trTR = {
'right': 'Sağ',
'checkConnectionStatusFailed': 'Bağlantı durumu kontrol edilemedi',
// 蓝牙扫描模块
'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": "Yapay zeka özelliklerini ara...",
"exploreSlogan": "Akıllı Kulaklıklar, Sonsuz Olasılıklar",
@ -180,7 +208,8 @@ const Map<String, String> trTR = {
"healthConsultant": "Çok Fonksiyonlu Yapay Zeka Sohbeti",
"healthConsultantInfo": "Daha fazla yapay zeka sohbet özelliği sunar",
"conferenceAssistant": "İş Toplantısı Asistanı",
"conferenceAssistantInfo": "Gerçek zamanlı toplantı tutanakları, çok dilli çeviri",
"conferenceAssistantInfo":
"Gerçek zamanlı toplantı tutanakları, çok dilli çeviri",
"usageStats": "Kullanım İstatistikleri",
"usageStatsInfo": "Kullanım istatistiklerinizi görüntüleyin",
"scene": "Senaryo",
@ -222,7 +251,8 @@ const Map<String, String> trTR = {
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed",
"statsLoadFailedTryLater": "Statistics failed to load. Please try again later.",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
@ -252,12 +282,14 @@ const Map<String, String> trTR = {
'paymentException': 'Ödeme istisnası',
'paymentLaunchFailed': 'Ödeme başlatılamadı',
'paymentExceptionWithError': 'Ödeme istisnası: @error',
'paymentProcessingCheckLater': 'Siparişiniz işleniyor. Lütfen daha sonra kontrol edin.',
'paymentProcessingCheckLater':
'Siparişiniz işleniyor. Lütfen daha sonra kontrol edin.',
'paymentResultQueryException': 'Ödeme sonucu sorgulanamadı: @error',
'orderConfirmedQuotaRefreshed': 'Sipariş onaylandı. Kotanız yenilendi.',
'paymentCompletedConfirming': 'Ödeme tamamlandı. Onaylanıyor…',
'paymentCancelled': 'Ödeme iptal edildi',
'paypalOpenedCompleteInBrowser': 'PayPal açıldı. Lütfen tarayıcınızda ödemeyi tamamlayın.',
'paypalOpenedCompleteInBrowser':
'PayPal açıldı. Lütfen tarayıcınızda ödemeyi tamamlayın.',
'paypalOpenFailed': 'PayPal ödeme sayfası açılamıyor',
'paymentTestTitle': 'Ödeme Testi',
'paymentTestOrderInfo': 'Test Sipariş Bilgisi',
@ -274,7 +306,8 @@ const Map<String, String> trTR = {
'errorInfoWithMessage': 'Hata: @message',
'retest': 'Yeniden Test Et',
'paymentTestInstructionsTitle': 'Talimatlar',
'paymentTestInstructionsContent': '1. Bir test tutarı seçin (önerilen: ¥0,01)\n2. Başlatmak için ödeme düğmesine tıklayın\n3. Ödeme uygulamasında ödemeyi tamamlayın\n4. Sonucu kontrol etmek için geri dönün',
'paymentTestInstructionsContent':
'1. Bir test tutarı seçin (önerilen: ¥0,01)\n2. Başlatmak için ödeme düğmesine tıklayın\n3. Ödeme uygulamasında ödemeyi tamamlayın\n4. Sonucu kontrol etmek için geri dönün',
'startingWechatPayment': 'WeChat Pay başlatılıyor...',
'startingAlipayPayment': 'Alipay başlatılıyor...',
'wechatPaymentSuccess': 'WeChat Pay başarılı!',
@ -289,9 +322,11 @@ const Map<String, String> trTR = {
'cannotLaunchAlipayPayment': 'Alipay başlatılamıyor',
'alipayPaymentException': 'Alipay istisnası',
"insufficientIntegral": "Insufficient integral",
"insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.",
"insufficientBalanceDesc":
"Insufficient balance, please go to the corresponding recharge page to recharge.",
"recharge": "Go to Recharge",
"aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.",
"aiMemberExpiredDesc":
"AI membership expired, please go to the membership recharge page to renew.",
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
@ -299,11 +334,15 @@ const Map<String, String> trTR = {
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
@ -312,32 +351,39 @@ const Map<String, String> trTR = {
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders',
'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve': 'Terminology optimization and context preservation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// 商品模块 - 会议商品页
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
@ -346,7 +392,8 @@ const Map<String, String> trTR = {
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
@ -361,7 +408,8 @@ const Map<String, String> trTR = {
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100',
@ -411,7 +459,8 @@ const Map<String, String> trTR = {
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart': 'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
@ -459,7 +508,8 @@ const Map<String, String> trTR = {
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo': 'Download complete, {count} files in total, returning automatically in 2 seconds',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
@ -468,15 +518,20 @@ const Map<String, String> trTR = {
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Kayıttan Çık', // 退出录音
'meetingRecordExitMessage': 'Lütfen ayrıldıktan sonra bir işlem seçin', // 请选择离开后的操作
'meetingRecordExitMessage':
'Lütfen ayrıldıktan sonra bir işlem seçin', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Bitir ve Kaydet', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Kaydetmeden Bitir', // 结束录音不保存
'meetingRecordContinueInBackground': 'Arka planda kayda devam et', // 后台继续录音
'meetingRecordStopTimeout': 'Kayıt durdurma zaman aşımı, lütfen tekrar deneyin', // 结束录音超时,请重试
'meetingRecordStopFailed': 'Kayıt durdurulamadı, lütfen tekrar deneyin', // 结束录音失败,请重试
'meetingRecordSaveFailed': 'Kayıt kaydedilemedi, lütfen tekrar deneyin', // 保存录音失败,请重试
'meetingRecordStopTimeout':
'Kayıt durdurma zaman aşımı, lütfen tekrar deneyin', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Kayıt durdurulamadı, lütfen tekrar deneyin', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Kayıt kaydedilemedi, lütfen tekrar deneyin', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Kayıt yapılıyor', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Arka planda kaydediliyor, uygulamaya dönmek için dokunun', // 正在后台录音,点击返回应用
'meetingRecordRecordingNotificationBody':
'Arka planda kaydediliyor, uygulamaya dönmek için dokunun', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Yüzen Pencere İzni', // 悬浮窗权限
'overlayPermissionTranslationDesc':
'Aramalar sırasında veya ses/video çevirisi yaparken çeviri sonuçlarını göstermek için diğer uygulamaların üzerine çizme iznine ihtiyacımız var. Bu sayede diğer uygulamaları kullanırken gerçek zamanlı çevirileri görebilirsiniz.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
@ -518,7 +573,8 @@ const Map<String, String> trTR = {
'editTemplate': 'Şablonu Düzenle',
'createTemplate': 'Şablon Oluştur',
'name': 'Ad',
'templateContentHint': 'Lütfen şablon içeriğini girin! İpucu: Girdiğiniz ad ve açıklamaya göre hızlıca şablon içeriği oluşturmak için yukarıdaki AI düğmesine tıklayın',
'templateContentHint':
'Lütfen şablon içeriğini girin! İpucu: Girdiğiniz ad ve açıklamaya göre hızlıca şablon içeriği oluşturmak için yukarıdaki AI düğmesine tıklayın',
'inputNameHint': 'Lütfen ad girin',
'inputDescHint': 'Lütfen açıklama girin',
'custom': 'Özel',
@ -528,7 +584,8 @@ const Map<String, String> trTR = {
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
@ -570,12 +627,14 @@ const Map<String, String> trTR = {
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Bu konuşmacının tüm paragraflarına uygula',
'summaryWillBeUpdatedAutomatically': 'Özet, şablona göre otomatik olarak güncellenecektir',
'summaryWillBeUpdatedAutomatically':
'Özet, şablona göre otomatik olarak güncellenecektir',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
@ -618,38 +677,52 @@ const Map<String, String> trTR = {
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc': 'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc': 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc': 'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc': 'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc': 'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc': '7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc': '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote': '*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 录音语言
@ -661,7 +734,8 @@ const Map<String, String> trTR = {
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiz başarısız oldu, lütfen daha sonra tekrar deneyin',
'transcriptionFailed': 'Transkripsiyon başarısız oldu, lütfen daha sonra tekrar deneyin',
'transcriptionFailed':
'Transkripsiyon başarısız oldu, lütfen daha sonra tekrar deneyin',
'summaryFailed': 'Özet başarısız oldu, lütfen daha sonra tekrar deneyin',
'summaryFailedShort': 'Özet başarısız',
'transcriptionFailedShort': 'Transkripsiyon başarısız',
@ -682,13 +756,15 @@ const Map<String, String> trTR = {
"cloudSync": "Bulut Sincronizasyonu",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc": "First bind device reward has been issued. Tap OK to close.",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Bağlı cihaz:",
"accountId": "Hesap Kimliği:",
"systemSetting": "Sistem Ayarları",
"languageSetting": "Dil Ayarları",
"darkMode": "Karanlık Mod",
"darkModeInfo": "Uygulamanın aydınlık ve karanlık temaları arasında geçiş yapın",
"darkModeInfo":
"Uygulamanın aydınlık ve karanlık temaları arasında geçiş yapın",
"backups": "Yedekle ve Geri Yükle",
"backupsInfo": "Ayarları ve yapay zeka etkileşim geçmişini yedekleyin",
"lastBackup": "Son yedekleme:",
@ -704,9 +780,11 @@ const Map<String, String> trTR = {
"voiceServiceInfo": "Ses tanıma ve sentezleme hizmetini seçin",
"selectVoiceService": "Ses Hizmeti Seç",
"azureVoiceService": "Azure Ses Hizmeti",
"azureVoiceServiceInfo": "Yüksek kaliteli ses sentezi ve tanımayı destekleyen Microsoft bulut ses hizmeti",
"azureVoiceServiceInfo":
"Yüksek kaliteli ses sentezi ve tanımayı destekleyen Microsoft bulut ses hizmeti",
"flutterVoiceService": "Flutter Yerel Ses Hizmeti",
"flutterVoiceServiceInfo": "Cihazın yerel ses hizmeti, internet bağlantısı olmadan kullanılabilir",
"flutterVoiceServiceInfo":
"Cihazın yerel ses hizmeti, internet bağlantısı olmadan kullanılabilir",
'timbreService': 'Ses Tonu Hizmeti',
'timbreServiceInfo': 'Ses sentezi için ses tonu hizmeti seçin',
'defaultTimbre': 'Varsayılan Ses Tonu',
@ -717,14 +795,16 @@ const Map<String, String> trTR = {
'pleaseRead': 'Lütfen Yüksek Sesle Okuyun',
'completeRecording': 'Kaydı Tamamla',
"firmwareUpgrade": "Donanım Yazılımı Güncellemesi",
"bleHeadsetFirmwareUpgrade": "BLE Kulaklık Donanım Yazılımı Sürüm Güncellemesi",
"bleHeadsetFirmwareUpgrade":
"BLE Kulaklık Donanım Yazılımı Sürüm Güncellemesi",
"deviceManagement": "Cihaz Yönetimi",
"manageConnectedDevices": "Bağlı Bluetooth cihazlarını yönetin",
'currentLatestVersion': 'Şu anda en son sürümdesiniz {version}',
'checkUpdateFailed': 'Güncellemeler kontrol edilemedi',
'networkErrorRetry': 'Ağ hatası, lütfen daha sonra tekrar deneyin',
"realtimeVoiceChat": "Gerçek Zamanlı Sesli Sohbet",
"realtimeVoiceChatInfo": "Akıllı sesli etkileşim özelliğini deneyimleyin (Özellik Önizlemesi)",
"realtimeVoiceChatInfo":
"Akıllı sesli etkileşim özelliğini deneyimleyin (Özellik Önizlemesi)",
"loading": "Yükleniyor...",
// 设备管理模块
@ -772,7 +852,8 @@ const Map<String, String> trTR = {
"swipeUpForMore": "Daha fazlası için yukarı kaydırın",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Etkinleştirildiğinde: AI konuşurken sesiniz tarafından kesintiye uğramaz ve aynı anda yalnızca bir konuşma turunu işleyebilir. Yeni bir tur başlatmak için uyandırma kelimesini söyleyin.',
'voice_interrupt_tip':
'Etkinleştirildiğinde: AI konuşurken sesiniz tarafından kesintiye uğramaz ve aynı anda yalnızca bir konuşma turunu işleyebilir. Yeni bir tur başlatmak için uyandırma kelimesini söyleyin.',
// Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐
@ -795,10 +876,14 @@ const Map<String, String> trTR = {
'• 控制耳机功能\n\n'
'有什么我可以帮你的吗?',
'microphonePermission': 'Mikrofon',
'voiceRecognitionPermissionText': 'Ses tanıma özelliği mikrofon erişimi gerektirir.',
'voiceTranslationPermissionText': 'Ses tanıma ve çeviri özelliği mikrofon erişimi gerektirir.',
'phoneCallPermissionText': 'Arama yapma özelliği sesli aramalar için mikrofon erişimi gerektirir.',
'permissionDeniedText': 'Mikrofon iznini kalıcı olarak reddettiniz, lütfen sistem ayarlarından izni etkinleştirin.',
'voiceRecognitionPermissionText':
'Ses tanıma özelliği mikrofon erişimi gerektirir.',
'voiceTranslationPermissionText':
'Ses tanıma ve çeviri özelliği mikrofon erişimi gerektirir.',
'phoneCallPermissionText':
'Arama yapma özelliği sesli aramalar için mikrofon erişimi gerektirir.',
'permissionDeniedText':
'Mikrofon iznini kalıcı olarak reddettiniz, lütfen sistem ayarlarından izni etkinleştirin.',
'startVoiceInput': 'Sesli girişi başlat',
'startPhoneCallMode': 'Arama modunu başlat, sesli girişi başlat',
@ -820,9 +905,17 @@ const Map<String, String> trTR = {
'privacyRelated': 'Gizlilikle İlgili',
'copyrightViolation': 'Telif hakkımı, itibarımı vb. ihlal ediyor',
'other': 'Diğer',
'reportDescriptionHint': 'Şikayet nedeninizi öğrenmek istiyoruz, karşılaştığınız sorunu açıklayabilirsiniz.',
'reportDescriptionHint':
'Şikayet nedeninizi öğrenmek istiyoruz, karşılaştığınız sorunu açıklayabilirsiniz.',
'generatedByAi': 'Yapay Zeka tarafından oluşturuldu',
// 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模块 - 音乐卡片
'recommendedMusic': 'İşte bazı önerilen müzikler:',
'playList': 'Çalma Listesi',
@ -843,20 +936,52 @@ const Map<String, String> trTR = {
"bicycling": "Bisiklet",
"tsransit": "Toplu Taşıma",
// 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模块 - 天气卡片
'weatherQuery': 'Hava durumu sorgulanıyor:',
'highest': 'En Yüksek',
'lowest': 'En Düşük',
'futureForecast': 'Gelecek Tahmini',
'hotWeatherTip': 'Bugün hava sıcak, lütfen serin kalmaya ve güneş çarpmasını önlemek için bol su içmeye dikkat edin',
'coldWeatherTip': 'Bugün hava soğuk, dışarı çıkarken üşütmemek için sıkı giyinin',
'rainyWeatherTip': 'Bugün yağmurlu, dışarı çıkarken şemsiye alın ve dikkatli olun',
'snowyWeatherTip': 'Bugün karlı, yollar kaygan, lütfen dikkatli olun ve sıcak kalmak için önlem alın',
'foggyWeatherTip': 'Bugün sisli, görüş mesafesi düşük, dışarı çıkarken maske takın',
'windyWeatherTip': 'Bugün rüzgarlı, dışarı çıkarken dikkatli olun ve eşyalarınızı sabitleyin',
'sunnyWeatherTip': 'Bugün güneşli ve UV ışınları güçlü, dışarı çıkarken güneş kremi kullanın',
'temperatureDifferenceTip': 'Bugün gece ile gündüz arasında büyük sıcaklık farkı var, giysilerinizi buna göre ayarlayın',
'comfortableWeatherTip': 'Bugün hava güzel, dışarıda vakit geçirmek için harika bir zaman',
'hotWeatherTip':
'Bugün hava sıcak, lütfen serin kalmaya ve güneş çarpmasını önlemek için bol su içmeye dikkat edin',
'coldWeatherTip':
'Bugün hava soğuk, dışarı çıkarken üşütmemek için sıkı giyinin',
'rainyWeatherTip':
'Bugün yağmurlu, dışarı çıkarken şemsiye alın ve dikkatli olun',
'snowyWeatherTip':
'Bugün karlı, yollar kaygan, lütfen dikkatli olun ve sıcak kalmak için önlem alın',
'foggyWeatherTip':
'Bugün sisli, görüş mesafesi düşük, dışarı çıkarken maske takın',
'windyWeatherTip':
'Bugün rüzgarlı, dışarı çıkarken dikkatli olun ve eşyalarınızı sabitleyin',
'sunnyWeatherTip':
'Bugün güneşli ve UV ışınları güçlü, dışarı çıkarken güneş kremi kullanın',
'temperatureDifferenceTip':
'Bugün gece ile gündüz arasında büyük sıcaklık farkı var, giysilerinizi buna göre ayarlayın',
'comfortableWeatherTip':
'Bugün hava güzel, dışarıda vakit geçirmek için harika bir zaman',
"monday": "Pzt",
"tuesday": "Sal",
"wednesday": "Çar",
@ -900,13 +1025,25 @@ const Map<String, String> trTR = {
"selectTargetLanguage": "Hedef Dil Seç",
"me": "Me",
"counterPart": "Counterpart",
"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", // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text",
"inputTextToTranslate": "Lütfen çevrilecek metni girin",
"textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录
@ -914,10 +1051,12 @@ const Map<String, String> trTR = {
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Geçmişi Temizle",
"clearHistoryConfirm": "Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
"clearHistoryConfirm":
"Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
"unknownLanguage": "Bilinmeyen Dil",
"deleteSessionRecord": "Oturum Kaydını Sil",
"deleteSessionConfirm": "Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
"deleteSessionConfirm":
"Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
@ -949,15 +1088,20 @@ const Map<String, String> trTR = {
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException": "Image translation API exception. Check network and retry",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired": "Photo album permission required to pick images",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
@ -980,7 +1124,8 @@ const Map<String, String> trTR = {
// 翻译模块 - 翻译详情
"originalRecord": "Orijinal Kayıt",
"recordSummary": "Kayıt Özeti",
"clickToGenerateSummary": "Oturum özeti oluşturmak için aşağıdaki düğmeye tıklayın",
"clickToGenerateSummary":
"Oturum özeti oluşturmak için aşağıdaki düğmeye tıklayın",
"summaryContent": "Özet İçeriği",
"copied": "Kopyalandı",
"summaryCopiledToClipboard": "Özet panoya kopyalandı",
@ -988,9 +1133,11 @@ const Map<String, String> trTR = {
"summaryGenerated": "Özet oluşturuldu",
"generating": "Oluşturuluyor...",
"regenerate": "Yeniden Oluştur",
"summaryTimeoutMessage": "Özet oluşturma isteği zaman aşımına uğradı. Ağ sorunları veya sunucu yoğunluğu olabilir.",
"summaryTimeoutMessage":
"Özet oluşturma isteği zaman aşımına uğradı. Ağ sorunları veya sunucu yoğunluğu olabilir.",
"deleteTranslationRecord": "Çeviri Kaydını Sil",
"deleteTranslationConfirm": "Bu çeviri kaydını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
"deleteTranslationConfirm":
"Bu çeviri kaydını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
"originalText": "Orijinal Metin",
"translatedText": "Çevrilmiş Metin",
"sessionSummary": "Oturum Özeti",
@ -1010,20 +1157,26 @@ const Map<String, String> trTR = {
"logout": "Çıkış Yap",
"logoutTips": "Mevcut hesaptan çıkmak istediğinizden emin misiniz?",
'deleteAccount': 'Hesabı Sil',
'deleteAccountTips': 'Hesabınızı kalıcı olarak silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.',
'deleteAccountTips':
'Hesabınızı kalıcı olarak silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
'networkConnectionFailed': 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edip tekrar deneyin',
'serverTemporarilyUnavailable': 'Sunucu geçici olarak yanıt vermiyor, lütfen daha sonra tekrar deneyin',
'networkConnectionFailed':
'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edip tekrar deneyin',
'serverTemporarilyUnavailable':
'Sunucu geçici olarak yanıt vermiyor, lütfen daha sonra tekrar deneyin',
'loginExpiredPleaseRelogin': 'Oturum süresi doldu, lütfen tekrar giriş yapın',
'noPermissionForThisOperation': 'Bu işlemi gerçekleştirmek için izniniz yok',
'requestedResourceNotFound': 'İstenen kaynak bulunamadı',
'imageProcessingFailedPleaseReselect': 'Resim işlenemedi, lütfen resmi yeniden seçin',
'imageProcessingFailedPleaseReselect':
'Resim işlenemedi, lütfen resmi yeniden seçin',
'operationFailedPleaseRetry': 'İşlem başarısız, lütfen tekrar deneyin',
'serverReturnedError': 'Sunucu bir hata döndürdü',
'serverError': 'Sunucu Hatası',
'networkConnectionFailedCheckSettings': 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edin',
'serverInternalErrorRetryLater': 'Sunucu iç hatası, lütfen daha sonra tekrar deneyin',
'networkConnectionFailedCheckSettings':
'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edin',
'serverInternalErrorRetryLater':
'Sunucu iç hatası, lütfen daha sonra tekrar deneyin',
'imageCompressionFailed': 'Resim sıkıştırılamadı',
'avatarUpdateFailed': 'Avatar güncellenemedi',
'usernameCannotBeEmpty': 'Kullanıcı adı boş olamaz',
@ -1036,17 +1189,23 @@ const Map<String, String> trTR = {
'deleteAccountFailedRetry': 'Hesap silinemedi, lütfen tekrar deneyin',
'clearUserDataFailed': 'Kullanıcı verileri temizlenemedi', // 清理用户数据失败
'deleteUserDataFailed': 'Kullanıcı verileri silinemedi', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Üçüncü taraf oturumu başarıyla kapatıldı', // 第三方登录退出成功
'thirdPartyLogoutSuccess':
'Üçüncü taraf oturumu başarıyla kapatıldı', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Üçüncü taraf oturumu kapatılamadı', // 第三方登录退出失败
'signOutProcessError': 'Oturum kapatma işlemi sırasında bir hata oluştu', // 登出过程发生错误
'deleteAccountProcessError': 'Hesap silme işlemi sırasında bir hata oluştu', // 删除账号过程发生错误
'signOutProcessError':
'Oturum kapatma işlemi sırasında bir hata oluştu', // 登出过程发生错误
'deleteAccountProcessError':
'Hesap silme işlemi sırasında bir hata oluştu', // 删除账号过程发生错误
'userDataClearSuccess': 'Kullanıcı verileri başarıyla temizlendi', // 用户数据清理成功
'allUserDataClearSuccess': 'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功
'accountServiceInitialized': 'Hesap Hizmeti başlatıldı', // AccountService 已初始化
'allUserDataClearSuccess':
'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功
'accountServiceInitialized':
'Hesap Hizmeti başlatıldı', // AccountService 已初始化
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。',
'getPermissionStatusFailed': 'İzin durumu alınamadı',
@ -1068,9 +1227,12 @@ const Map<String, String> trTR = {
'locationInfo': 'Konum Bilgisi',
'phonePermissionDesc': 'Telefon arama özelliği için kullanılır',
'smsPermissionDesc': 'SMS gönderme özelliği için kullanılır',
'alarmPermissionDesc': 'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc': 'Takvim etkinlikleri ve hatırlatıcılar oluşturmak için kullanılır',
'calendarFullAccessPermissionDesc': 'Takvim etkinliklerini ve hatırlatıcıları okumak ve yönetmek için kullanılır',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Takvim etkinlikleri ve hatırlatıcılar oluşturmak için kullanılır',
'calendarFullAccessPermissionDesc':
'Takvim etkinliklerini ve hatırlatıcıları okumak ve yönetmek için kullanılır',
'locationPermissionDesc': 'Mevcut konum bilgisini almak için kullanılır',
'appFunctionNeeds': 'Uygulama özelliğinin ihtiyacı var',
'authorized': 'Yetkilendirildi',
@ -1082,40 +1244,63 @@ const Map<String, String> trTR = {
'permissionRequestError': 'İzin istenirken hata oluştu',
'phonePermissionDetailDesc': 'Arama özelliği telefon izni gerektirir',
'smsPermissionDetailDesc': 'SMS gönderme özelliği SMS izni gerektirir',
'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc': 'Takvim etkinliği oluşturma takvime yazma izni gerektirir',
'calendarFullAccessPermissionDetailDesc': 'Takvim etkinliklerini yönetme tam takvim erişimi gerektirir',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Takvim etkinliği oluşturma takvime yazma izni gerektirir',
'calendarFullAccessPermissionDetailDesc':
'Takvim etkinliklerini yönetme tam takvim erişimi gerektirir',
'locationPermissionDetailDesc': 'Konum bilgisi alma konum izni gerektirir',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc': 'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc': 'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc': 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc': 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc': 'Connecting to Bluetooth devices requires Bluetooth connect permission',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc': 'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction': 'Uygulamanın tam işlevsellik için bu izne ihtiyacı var',
'permanentDenialText': '{permission} iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için uygulama ayarlarına gidin',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Uygulamanın tam işlevsellik için bu izne ihtiyacı var',
'permanentDenialText':
'{permission} iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için uygulama ayarlarına gidin',
'goToSettings': 'Ayarlara Git',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation': 'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation': 'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial': 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial': 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial': 'Location permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation': 'Notification permission is required to display music playback status.',
'locationPermissionExplanation': 'Location permission is required to get current location.',
'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
'storagePermission': 'Storage',
'microphonePermissionExplanation': 'We need microphone permission to record audio content.',
'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。',
'storagePermissionPermanentDenial':
@ -1123,15 +1308,18 @@ const Map<String, String> trTR = {
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigasyon devam ediyor',
'native.notification.navigation.keepRunning': 'Navigasyon yapılıyor, uygulamayı açık tutun',
'native.notification.navigation.keepRunning':
'Navigasyon yapılıyor, uygulamayı açık tutun',
'native.notification.bleAgent.running': 'Sesli asistan ajanı çalışıyor',
'native.notification.audioRecording.recording': 'Ses kaydediliyor, uygulamaya dönmek için dokunun',
'native.notification.audioRecording.recording':
'Ses kaydediliyor, uygulamaya dönmek için dokunun',
'native.notification.music.waiting': 'Oynatma bekleniyor',
'native.notification.music.previous': 'Önceki',
'native.notification.music.next': 'Sonraki',
@ -1145,8 +1333,10 @@ const Map<String, String> trTR = {
'updateNow': 'Şimdi Güncelle', // 立即更新按钮
'checkUpdate': 'Güncellemeleri Kontrol Et', // 检查更新按钮
'updateFailed': 'Güncelleme Başarısız', // 更新失败提示
'cannotOpenAppStore': 'Uygulama mağazası açılamıyor, lütfen güncellemek için manuel olarak gidin', // 无法打开应用商店提示
'updateErrorRetry': 'Güncelleme sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin', // 更新错误重试提示
'cannotOpenAppStore':
'Uygulama mağazası açılamıyor, lütfen güncellemek için manuel olarak gidin', // 无法打开应用商店提示
'updateErrorRetry':
'Güncelleme sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin', // 更新错误重试提示
// 配对模块
"devicePairing": "Cihaz Eşleştirme",
@ -1164,23 +1354,29 @@ const Map<String, String> trTR = {
'bluetooth': 'Bluetooth',
"readyToPair": "Eşleştirmeye hazır",
"preparingPairingEnvironment": "Eşleştirme ortamı hazırlanıyor...",
"connectDeepSoundViaSystemBluetooth": "Lütfen önce sistem Bluetooth'u üzerinden Voitrans cihazına bağlanın",
"connectDeepSoundViaSystemBluetooth":
"Lütfen önce sistem Bluetooth'u üzerinden Voitrans cihazına bağlanın",
"deviceBindingConfirm": "Cihaz bağlama onayı...",
"establishingDeviceAssociation": "Cihaz ilişkisi kuruluyor...",
"waitingCompletePairing": "Lütfen bekleyin, eşleştirme tamamlanıyor...",
"pairingSuccessRedirecting": "Eşleştirme başarılı! Ana sayfaya yönlendiriliyor...",
"ensureConnectedDeepSoundDevice": "Lütfen bir Voitrans cihazına bağlı olduğunuzdan emin olun",
"pairingSuccessRedirecting":
"Eşleştirme başarılı! Ana sayfaya yönlendiriliyor...",
"ensureConnectedDeepSoundDevice":
"Lütfen bir Voitrans cihazına bağlı olduğunuzdan emin olun",
"deviceAlreadyBoundToOtherAccount": "Bu cihaz başka bir hesaba zaten bağlı",
"deviceAssociationFailed": "Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin",
"scanTimeoutEnsureDeviceNearby": "Tarama zaman aşımına uğradı, lütfen cihazın yakında olduğundan emin olun",
"scanTimeoutEnsureDeviceNearby":
"Tarama zaman aşımına uğradı, lütfen cihazın yakında olduğundan emin olun",
"networkError": "Ağ Hatası",
"authorizationFailedCheckCode": "Yetkilendirme başarısız, lütfen yetkilendirme kodunun doğru olup olmadığını kontrol edin",
"authorizationFailedCheckCode":
"Yetkilendirme başarısız, lütfen yetkilendirme kodunun doğru olup olmadığını kontrol edin",
"pairingFailedRetry": "Eşleştirme başarısız, lütfen tekrar deneyin",
'pleaseEnableBluetooth': 'Lütfen Bluetooth\\',
'deviceDisconnected': 'Cihaz bağlantısı kesildi',
'readyToStartPairing': 'Eşleştirmeye başlamaya hazır',
'checkingEnvironment': 'Ortam kontrol ediliyor...',
'ensureHeadsetOnAndPairingMode': 'Lütfen kulaklığın açık ve eşleştirme modunda olduğundan emin olun',
'ensureHeadsetOnAndPairingMode':
'Lütfen kulaklığın açık ve eşleştirme modunda olduğundan emin olun',
'establishingSecureConnection': 'Güvenli bağlantı kuruluyor...',
'needManualBindingAuthCode': 'Manuel bağlama yetkilendirme kodu gerekli...',
'pairingSuccessful': 'Eşleştirme başarılı!',
@ -1194,17 +1390,24 @@ const Map<String, String> trTR = {
'verificationFailedRetry': 'Doğrulama başarısız, lütfen tekrar deneyin',
'invalidDeviceAddress': 'Geçersiz cihaz adresi',
'bleDeviceAssociationFailed': 'BLE cihaz ilişkisi kurulamadı',
'deviceAssociationFailedRetry': 'Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin',
'bleConnectionTimeoutRetry': 'BLE bağlantısı zaman aşımına uğradı, lütfen tekrar deneyin',
'deviceAssociationFailedRetry':
'Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin',
'bleConnectionTimeoutRetry':
'BLE bağlantısı zaman aşımına uğradı, lütfen tekrar deneyin',
'blePairingStartupFailed': 'BLE eşleştirmesi başlatılamadı',
'bleConnectionFailed': 'BLE bağlantısı başarısız',
'deviceAuthorizationFailedCheckCode': 'Cihaz yetkilendirmesi başarısız, lütfen yetkilendirme kodunu kontrol edin',
'deviceAuthorizationFailedCheckCode':
'Cihaz yetkilendirmesi başarısız, lütfen yetkilendirme kodunu kontrol edin',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2': 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3': 'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
// 配对模块 - 绑定奖励
@ -1221,17 +1424,21 @@ const Map<String, String> trTR = {
// 用户反馈模块
"feedback": "Kullanıcı Geri Bildirimi",
'feedbackInfo': 'Geri bildirim veya öneri sağlayın',
'feedbackDescription': 'Lütfen karşılaştığınız sorunu veya önerinizi açıklayın',
'feedbackDescription':
'Lütfen karşılaştığınız sorunu veya önerinizi açıklayın',
'feedbackHint': 'Lütfen geri bildiriminizi girin...',
'feedbackRequired': 'Lütfen geri bildirim içeriğini girin',
'contactInfo': 'İletişim Bilgileri',
'contactHint': 'E-posta/Telefon, sizinle iletişime geçebilmemiz için',
'submit': 'Gönder',
'feedbackSubmitSuccess': 'Geri bildirim başarıyla gönderildi, geri bildiriminiz için teşekkür ederiz!',
'feedbackSubmitFailed': 'Geri bildirim gönderilemedi, lütfen daha sonra tekrar deneyin',
'feedbackSubmitSuccess':
'Geri bildirim başarıyla gönderildi, geri bildiriminiz için teşekkür ederiz!',
'feedbackSubmitFailed':
'Geri bildirim gönderilemedi, lütfen daha sonra tekrar deneyin',
// OTA升级模块
"upgradeExitConfirm": "Yükseltme devam ediyor. Çıkmak işlemi kesecektir, çıkmak istediğinizden emin misiniz?",
"upgradeExitConfirm":
"Yükseltme devam ediyor. Çıkmak işlemi kesecektir, çıkmak istediğinizden emin misiniz?",
"deviceModel": "Cihaz Modeli",
"unknownDevice": "Bilinmeyen Cihaz",
"currentFirmwareVersion": "Mevcut Donanım Yazılımı Sürümü",
@ -1244,14 +1451,70 @@ const Map<String, String> trTR = {
"retryConnection": "Yeniden Dene",
"ota_updateNow": "Şimdi Güncelle",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable": "Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable": "Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid": "Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Lütfen cihazı bağlı tutun ve uygulamayı kapatmayın",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Lütfen cihazı bağlı tutun ve uygulamayı kapatmayın",
"doNotDisconnect": "Bağlantıyı kesmeyin",
"charging": "Şarj oluyor",
"updateContent": "Güncelleme İçeriği",
"removeEarbudsEnsureBattery": "Her iki kulaklığı da çıkarın ve pil seviyelerinin %20'un üzerinde olduğundan emin olun",
"removeEarbudsEnsureBattery":
"Her iki kulaklığı da çıkarın ve pil seviyelerinin %20'un üzerinde olduğundan emin olun",
// 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": "Müzik Yok", // 暂无音乐

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

File diff suppressed because it is too large

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

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

@ -1,5 +1,4 @@
const Map<String, String> zhHK = {
// 通用
'continue': '繼續',
'confirm': '確認',
@ -160,6 +159,26 @@ const Map<String, String> zhHK = {
'right': '右',
'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功能...",
"exploreSlogan": "智能耳機,無限可能",
@ -828,6 +847,13 @@ const Map<String, String> zhHK = {
'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。',
'generatedByAi': '由AI生成',
// Agent模块 - 工具调用
'toolCall': '工具調用',
'noResult': '無結果',
'noToolCallContentToCopy': '沒有工具調用內容可以複製',
'toolCallDetails': '工具調用詳情:',
'toolCallContentCopied': '工具調用內容已複製到剪貼板',
// Agent模块 - 音乐卡片
'recommendedMusic': '以下是一些推薦的音樂:',
'playList': '播放清單',
@ -848,6 +874,28 @@ const Map<String, String> zhHK = {
"bicycling": "騎行",
"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模块 - 天气卡片
'weatherQuery': '查詢天氣情況:',
'highest': '最高',
@ -908,10 +956,20 @@ const Map<String, String> zhHK = {
"bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態',
"autoDetect": '自動檢測', // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': '禁用懸浮窗',
'enableFloatingWindow': '啟用懸浮窗',
'permissionTip': '權限提示',
'micPermissionRequiredForRecording': '需要麥克風權限才能使用錄音功能',
'deleteTranslationRecordError': '刪除翻譯記錄時發生錯誤: @error',
// 翻译模块 - 文本翻译
"languageDetectionFailed": '語言檢測失敗',
"translationFailed": '翻譯失敗',
"translating": "正在翻譯",
"translate": "翻譯",
"pleaseInputText": '請輸入文本',
"inputTextToTranslate": "請輸入待翻譯的文本",
"textTooLong": '文本過長,最多5000字符',
// 翻译模块 - 历史记录
@ -1258,6 +1316,49 @@ const Map<String, String> zhHK = {
"updateContent": "更新內容",
"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": "暫無音樂", // 暂无音乐
"noPlayingMusic": "暫無播放音樂", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> zhTW = {
// 通用
'continue': '繼續',
'confirm': '確認',
@ -160,6 +159,26 @@ const Map<String, String> zhTW = {
'right': '右',
'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功能...",
"exploreSlogan": "智能耳機,無限可能",
@ -828,6 +847,13 @@ const Map<String, String> zhTW = {
'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。',
'generatedByAi': '由AI生成',
// Agent模块 - 工具调用
'toolCall': '工具呼叫',
'noResult': '無結果',
'noToolCallContentToCopy': '沒有工具呼叫內容可以複製',
'toolCallDetails': '工具呼叫詳情:',
'toolCallContentCopied': '工具呼叫內容已複製到剪貼簿',
// Agent模块 - 音乐卡片
'recommendedMusic': '以下是一些推薦的音樂:',
'playList': '播放清單',
@ -848,6 +874,28 @@ const Map<String, String> zhTW = {
"bicycling": "騎行",
"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模块 - 天气卡片
'weatherQuery': '查詢天氣情況:',
'highest': '最高',
@ -908,10 +956,20 @@ const Map<String, String> zhTW = {
"bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態',
"autoDetect": '自動檢測', // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': '停用懸浮視窗',
'enableFloatingWindow': '啟用懸浮視窗',
'permissionTip': '權限提示',
'micPermissionRequiredForRecording': '需要麥克風權限才能使用錄音功能',
'deleteTranslationRecordError': '刪除翻譯記錄時發生錯誤: @error',
// 翻译模块 - 文本翻译
"languageDetectionFailed": '語言檢測失敗',
"translationFailed": '翻譯失敗',
"translating": "正在翻譯",
"translate": "翻譯",
"pleaseInputText": '請輸入文本',
"inputTextToTranslate": "請輸入待翻譯的文字",
"textTooLong": '文本過長,最多5000字符',
// 翻译模块 - 历史记录
@ -1258,6 +1316,49 @@ const Map<String, String> zhTW = {
"updateContent": "更新內容",
"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": "暫無音樂", // 暂无音乐
"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