Browse Source

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

新增蓝牙扫描、工具调用、导航选择、OTA升级等模块的翻译键,覆盖多个语言文件。
添加i18n审计脚本以检测翻译质量问题,包括与基线文件相同但可能是英文的翻译。
引入允许列表文件以排除特定键的审计检查。
weicu
lxm 7 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 = { const Map<String, String> arSA = {
// 通用 // 通用
'continue': 'متابعة', 'continue': 'متابعة',
'confirm': 'تأكيد', 'confirm': 'تأكيد',
@ -130,8 +129,7 @@ const Map<String, String> arSA = {
"aiAssistantInfo": "aiAssistantInfo":
"مستشار حصري على مدار 24 ساعة للإجابة على الأسئلة وتقديم الاقتراحات", "مستشار حصري على مدار 24 ساعة للإجابة على الأسئلة وتقديم الاقتراحات",
"interpretation": "الترجمة", "interpretation": "الترجمة",
"simultaneousInterpretationInfo": "simultaneousInterpretationInfo": "ترجمة فورية لعدة لغات، سفر خالٍ من القلق",
"ترجمة فورية لعدة لغات، سفر خالٍ من القلق",
"aiCompanion": "رفيق العائلة", "aiCompanion": "رفيق العائلة",
"aiCompanionInfo": "يفهمك ويقدم لك رفقة دافئة", "aiCompanionInfo": "يفهمك ويقدم لك رفقة دافئة",
"homeSlogan": "تواصل مع العالم، أبعد من الصوت", "homeSlogan": "تواصل مع العالم، أبعد من الصوت",
@ -167,6 +165,29 @@ const Map<String, String> arSA = {
'right': 'يمين', 'right': 'يمين',
'checkConnectionStatusFailed': 'فشل التحقق من حالة الاتصال', 'checkConnectionStatusFailed': 'فشل التحقق من حالة الاتصال',
// 蓝牙扫描模块
'bleInitFailedWithError': 'فشل تهيئة البلوتوث: @error',
'needBluetoothAndLocationPermission':
'مطلوبة أذونات البلوتوث والموقع لمسح الأجهزة',
'permissionRequestFailedWithError': 'فشل طلب الإذن: @error',
'needPermission': 'الإذن مطلوب',
'blePermissionDialogContent':
'يتطلب هذا التطبيق أذونات البلوتوث والموقع لمسح الأجهزة. يرجى تمكينها من الإعدادات.',
'needEnableBluetooth': 'فعّل البلوتوث',
'enableBluetoothDialogContent':
'يرجى تفعيل البلوتوث لمسح الأجهزة والاتصال بها.',
'bleScanFailedWithError': 'فشل المسح: @error',
'bleConnectionSuccess': 'تم الاتصال بنجاح',
'bleConnectedToDevice': 'تم الاتصال بـ @device',
'bleConnectionFailedWithError': 'فشل الاتصال: @error',
'bleDisconnected': 'تم قطع الاتصال',
'bleDeviceDisconnected': 'تم قطع اتصال الجهاز',
'bleDisconnectFailedWithError': 'فشل قطع الاتصال: @error',
'signalStrong': 'قوية',
'signalMedium': 'متوسطة',
'signalWeak': 'ضعيفة',
'signalVeryWeak': 'ضعيفة جدًا',
// 发现页 // 发现页
"searchAi": "بحث عن وظائف الذكاء الاصطناعي...", "searchAi": "بحث عن وظائف الذكاء الاصطناعي...",
"exploreSlogan": "سماعات ذكية، إمكانيات لا حصر لها", "exploreSlogan": "سماعات ذكية، إمكانيات لا حصر لها",
@ -281,7 +302,8 @@ const Map<String, String> arSA = {
'errorInfoWithMessage': 'خطأ: @message', 'errorInfoWithMessage': 'خطأ: @message',
'retest': 'إعادة الاختبار', 'retest': 'إعادة الاختبار',
'paymentTestInstructionsTitle': 'التعليمات', 'paymentTestInstructionsTitle': 'التعليمات',
'paymentTestInstructionsContent': '1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة', 'paymentTestInstructionsContent':
'1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة',
'startingWechatPayment': 'جاري تشغيل WeChat Pay...', 'startingWechatPayment': 'جاري تشغيل WeChat Pay...',
'startingAlipayPayment': 'جاري تشغيل Alipay...', 'startingAlipayPayment': 'جاري تشغيل Alipay...',
'wechatPaymentSuccess': 'تم الدفع عبر WeChat Pay بنجاح!', 'wechatPaymentSuccess': 'تم الدفع عبر WeChat Pay بنجاح!',
@ -495,15 +517,22 @@ const Map<String, String> arSA = {
'meetingRecordEndAndSave': 'إنهاء التسجيل وحفظه', // 结束录音并保存 'meetingRecordEndAndSave': 'إنهاء التسجيل وحفظه', // 结束录音并保存
'meetingRecordEndWithoutSave': 'إنهاء التسجيل دون حفظ', // 结束录音不保存 'meetingRecordEndWithoutSave': 'إنهاء التسجيل دون حفظ', // 结束录音不保存
'meetingRecordContinueInBackground': 'متابعة التسجيل في الخلفية', // 后台继续录音 'meetingRecordContinueInBackground': 'متابعة التسجيل في الخلفية', // 后台继续录音
'meetingRecordStopTimeout': 'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试 'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试 'meetingRecordStopFailed':
'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'التسجيل جارٍ', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'التسجيل جارٍ', // 录音进行中
'meetingRecordRecordingNotificationBody': 'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'الظهور فوق التطبيقات الأخرى', // 悬浮窗权限 'overlayPermissionTitle': 'الظهور فوق التطبيقات الأخرى', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'جاري النسخ...', 'transcribing': 'جاري النسخ...',
'summarizing': 'جاري التلخيص...', 'summarizing': 'جاري التلخيص...',
'analyzing': 'جاري التحليل...', 'analyzing': 'جاري التحليل...',
@ -538,7 +567,8 @@ const Map<String, String> arSA = {
'editTemplate': 'تعديل القالب', 'editTemplate': 'تعديل القالب',
'createTemplate': 'إنشاء قالب', 'createTemplate': 'إنشاء قالب',
'name': 'الاسم', 'name': 'الاسم',
'templateContentHint': 'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته', 'templateContentHint':
'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته',
'inputNameHint': 'يرجى إدخال الاسم', 'inputNameHint': 'يرجى إدخال الاسم',
'inputDescHint': 'يرجى إدخال الوصف', 'inputDescHint': 'يرجى إدخال الوصف',
'custom': 'مخصص', 'custom': 'مخصص',
@ -813,7 +843,8 @@ const Map<String, String> arSA = {
"swipeUpForMore": "اسحب للأعلى لرؤية المزيد", "swipeUpForMore": "اسحب للأعلى لرؤية المزيد",
"callingTool": "أنا أساعدك، يرجى الانتظار!", // 正在帮您,请稍等! "callingTool": "أنا أساعدك، يرجى الانتظار!", // 正在帮您,请稍等!
"voice_interrupt": "مقاطعة صوتية", // 语音打断 "voice_interrupt": "مقاطعة صوتية", // 语音打断
'voice_interrupt_tip': 'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.', 'voice_interrupt_tip':
'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "شغل بعض الموسيقى", // 来点音乐 "presetMusic": "شغل بعض الموسيقى", // 来点音乐
@ -869,6 +900,13 @@ const Map<String, String> arSA = {
'نود معرفة سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.', 'نود معرفة سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.',
'generatedByAi': 'تم إنشاؤه بواسطة AI', 'generatedByAi': 'تم إنشاؤه بواسطة AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:', 'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:',
'playList': 'قائمة التشغيل', 'playList': 'قائمة التشغيل',
@ -889,6 +927,29 @@ const Map<String, String> arSA = {
"bicycling": "ركوب الدراجات", "bicycling": "ركوب الدراجات",
"tsransit": "نقل عام", "tsransit": "نقل عام",
// Agent模块 - 导航选择
'selectNavigationApp': 'اختر تطبيق الملاحة',
'amapMap': 'Amap',
'useAmapNavigation': 'التنقل باستخدام Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'التنقل باستخدام Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'التنقل باستخدام Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'التنقل باستخدام خرائط Apple',
'builtInNavigation': 'الملاحة المدمجة',
'useBuiltInNavigation': 'التنقل باستخدام الخريطة المدمجة',
'navigationStartFailed': 'فشل بدء التنقل',
'cannotPlayMusicListRetryLater':
'تعذر تشغيل قائمة الموسيقى، يرجى المحاولة لاحقًا',
'cannotPlaySong': 'تعذر تشغيل الأغنية',
'openMapError': 'خطأ أثناء فتح الخريطة',
'pleaseInstallAmapApp': 'يرجى تثبيت تطبيق Amap أولاً',
'pleaseInstallBaiduMapApp': 'يرجى تثبيت تطبيق Baidu Maps أولاً',
'appleMapStartFailed': 'فشل تشغيل خرائط Apple',
'appleMapUnavailable': 'خرائط Apple غير متاحة',
'openAppleMapError': 'خطأ أثناء فتح خرائط Apple',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'استعلام عن الطقس:', 'weatherQuery': 'استعلام عن الطقس:',
'highest': 'الأعلى', 'highest': 'الأعلى',
@ -960,8 +1021,18 @@ const Map<String, String> arSA = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "فشل اكتشاف اللغة", "languageDetectionFailed": "فشل اكتشاف اللغة",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'تعطيل النافذة العائمة',
'enableFloatingWindow': 'تمكين النافذة العائمة',
'permissionTip': 'تنبيه الأذونات',
'micPermissionRequiredForRecording': 'إذن الميكروفون مطلوب للتسجيل',
'deleteTranslationRecordError': 'خطأ في حذف سجل الترجمة: @error',
"translationFailed": "فشلت الترجمة", "translationFailed": "فشلت الترجمة",
"translating": "جارٍ الترجمة",
"translate": "ترجمة",
"pleaseInputText": "يرجى إدخال النص", "pleaseInputText": "يرجى إدخال النص",
"inputTextToTranslate": "يرجى إدخال النص المراد ترجمته",
"textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف", "textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1228,7 +1299,8 @@ const Map<String, String> arSA = {
'native.notification.navigation.title': 'التنقل جارٍ', // 导航进行中 'native.notification.navigation.title': 'التنقل جارٍ', // 导航进行中
'native.notification.navigation.keepRunning': 'native.notification.navigation.keepRunning':
'التنقل جارٍ، يرجى إبقاء التطبيق قيد التشغيل', // 正在导航中,请保持应用运行 'التنقل جارٍ، يرجى إبقاء التطبيق قيد التشغيل', // 正在导航中,请保持应用运行
'native.notification.bleAgent.running': 'المساعد الصوتي قيد التشغيل', // 语音助手正在运行 'native.notification.bleAgent.running':
'المساعد الصوتي قيد التشغيل', // 语音助手正在运行
'native.notification.audioRecording.recording': 'native.notification.audioRecording.recording':
'يتم التسجيل، اضغط للعودة إلى التطبيق', // 正在录音,点击返回应用 'يتم التسجيل، اضغط للعودة إلى التطبيق', // 正在录音,点击返回应用
'native.notification.music.waiting': 'في انتظار التشغيل', // 等待播放 'native.notification.music.waiting': 'في انتظار التشغيل', // 等待播放
@ -1371,6 +1443,58 @@ const Map<String, String> arSA = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"أخرج السماعتين، وتأكد من أن مستوى البطارية أعلى من 20%", "أخرج السماعتين، وتأكد من أن مستوى البطارية أعلى من 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'تم العثور على إصدار جديد @version',
'otaConfirmUpdateNow': 'هل تريد التحديث الآن؟',
'otaUpdate': 'تحديث',
'otaUpgradeSuccess': 'تمت الترقية بنجاح',
'otaUpgradeCompleteRepair':
'اكتملت ترقية البرنامج الثابت!\n\nيجب إعادة إقران الجهاز ليعمل بشكل صحيح. هل تريد الانتقال إلى صفحة الإقران الآن؟',
'otaPairLater': 'الإقران لاحقًا',
'otaPairNow': 'الإقران الآن',
'okConfirm': 'موافق',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'خطأ أثناء التحقق من اتصال BLE: @error',
'otaBleNotConnected': 'جهاز BLE غير متصل',
'otaBleNeedConnection':
'تتطلب ترقية البرنامج الثابت اتصال جهاز BLE\nيرجى التأكد من اتصال الجهاز بشكل صحيح ثم المحاولة مرة أخرى',
'otaDeviceInfoUnavailableTitle': 'معلومات الجهاز غير متاحة',
'otaCannotGetDeviceInfo':
'تعذر الحصول على معلومات الجهاز\nيرجى إعادة توصيل الجهاز أو المحاولة لاحقًا',
'otaBleCheckFailed': 'فشل التحقق من اتصال BLE',
'otaCannotGetDeviceInfoCheckConnection':
'تعذر الحصول على معلومات الجهاز، يرجى التحقق من اتصال الجهاز',
'otaCannotGetProductInfoWithName':
'تعذر الحصول على معلومات المنتج، اسم الجهاز: @deviceName',
'otaCannotGetBatteryInfo': 'تعذر الحصول على معلومات بطارية صالحة',
'otaLowBattery': 'البطارية منخفضة',
'otaSingleBatteryLow':
'بطارية الجهاز منخفضة جدًا لترقية البرنامج الثابت\nالمتطلب: يجب أن تكون البطارية أعلى من 20%\nالحالي: @ear @battery%\nيرجى الشحن ثم المحاولة مرة أخرى',
'otaDoubleBatteryLow':
'بطارية الجهاز منخفضة جدًا لترقية البرنامج الثابت\nالمتطلب: يجب أن تكون كلتا السماعتين أعلى من 20%\nالحالي: اليسار @left%، اليمين @right%\nيرجى الشحن ثم المحاولة مرة أخرى',
'otaBatteryCheckFailed': 'فشل التحقق من البطارية',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'يتضمن هذا التحديث تحسينات في الأداء وإصلاحات للأخطاء.',
'otaGetLatestVersionFailed': 'فشل الحصول على معلومات أحدث إصدار',
'otaGetVersionInfoFailed': 'فشل الحصول على معلومات الإصدار',
'otaCheckingDeviceStatus': 'جارٍ التحقق من حالة الجهاز...',
'otaDownloadFailedCheckNetwork': 'فشل التنزيل، يرجى التحقق من اتصال الشبكة',
'otaDownloadFailed': 'فشل التنزيل',
'otaPreparingConnection': 'جارٍ تحضير اتصال الجهاز...',
'otaConnectingDevice': 'جارٍ الاتصال بالجهاز...',
'otaUpgradeStarted': 'بدأت ترقية OTA...',
'otaUpgradeProgressWithPercent': 'تقدم الترقية: @percent%',
'otaUpgradeSuccessComplete': 'اكتملت الترقية بنجاح',
'otaUpgradeFailedWithCode': 'فشلت الترقية، رمز الخطأ: @code',
'otaUpgradeFailedTitle': 'فشلت الترقية',
'otaUpgradeFailedDesc':
'يرجى التحقق من اتصال الجهاز أو حزمة التحديث، رمز الخطأ: @code',
'otaDeviceDisconnected': 'تم قطع اتصال الجهاز',
'otaDeviceConnected': 'تم اتصال الجهاز',
// 音乐模块 // 音乐模块
"noMusic": "لا توجد موسيقى", // 暂无音乐 "noMusic": "لا توجد موسيقى", // 暂无音乐
"noPlayingMusic": "لا توجد موسيقى قيد التشغيل", // 暂无播放音乐 "noPlayingMusic": "لا توجد موسيقى قيد التشغيل", // 暂无播放音乐

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

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

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

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

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

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

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

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

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

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

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

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

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 = { const Map<String, String> etEE = {
// 通用 // 通用
'continue': 'Jätka', 'continue': 'Jätka',
'confirm': 'Kinnita', 'confirm': 'Kinnita',
@ -164,6 +163,29 @@ const Map<String, String> etEE = {
'right': 'Parem', 'right': 'Parem',
'checkConnectionStatusFailed': 'Ühenduse oleku kontrollimine ebaõnnestus', 'checkConnectionStatusFailed': 'Ühenduse oleku kontrollimine ebaõnnestus',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Otsi AI funktsioone...", "searchAi": "Otsi AI funktsioone...",
"exploreSlogan": "Nutikad kõrvaklapid, lõputud võimalused", "exploreSlogan": "Nutikad kõrvaklapid, lõputud võimalused",
@ -257,12 +279,15 @@ const Map<String, String> etEE = {
'paymentException': 'Makse erand', 'paymentException': 'Makse erand',
'paymentLaunchFailed': 'Makse käivitamine ebaõnnestus', 'paymentLaunchFailed': 'Makse käivitamine ebaõnnestus',
'paymentExceptionWithError': 'Makse erand: @error', 'paymentExceptionWithError': 'Makse erand: @error',
'paymentProcessingCheckLater': 'Sinu tellimust töödeldakse. Palun kontrolli hiljem.', 'paymentProcessingCheckLater':
'Sinu tellimust töödeldakse. Palun kontrolli hiljem.',
'paymentResultQueryException': 'Makse tulemuse päring ebaõnnestus: @error', '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…', 'paymentCompletedConfirming': 'Makse sooritatud. Kinnitamine…',
'paymentCancelled': 'Makse tühistatud', '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', 'paypalOpenFailed': 'PayPal makseleht ei ava',
'paymentTestTitle': 'Makse test', 'paymentTestTitle': 'Makse test',
'paymentTestOrderInfo': 'Testtellimuse info', 'paymentTestOrderInfo': 'Testtellimuse info',
@ -279,7 +304,8 @@ const Map<String, String> etEE = {
'errorInfoWithMessage': 'Viga: @message', 'errorInfoWithMessage': 'Viga: @message',
'retest': 'Kordustest', 'retest': 'Kordustest',
'paymentTestInstructionsTitle': 'Juhised', '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...', 'startingWechatPayment': 'WeChat Pay käivitamine...',
'startingAlipayPayment': 'Alipay käivitamine...', 'startingAlipayPayment': 'Alipay käivitamine...',
'wechatPaymentSuccess': 'WeChat Pay edukas!', 'wechatPaymentSuccess': 'WeChat Pay edukas!',
@ -544,7 +570,8 @@ const Map<String, String> etEE = {
'editTemplate': 'Muuda malli', 'editTemplate': 'Muuda malli',
'createTemplate': 'Loo mall', 'createTemplate': 'Loo mall',
'name': 'Nimi', 'name': 'Nimi',
'templateContentHint': 'Palun sisesta malli sisu! Vihje: Klõpsa ülaloleval AI nupul, et kiiresti genereerida malli sisu sisestatud nime ja kirjelduse põhjal', 'templateContentHint':
'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', 'inputNameHint': 'Palun sisesta nimi',
'inputDescHint': 'Palun sisesta kirjeldus', 'inputDescHint': 'Palun sisesta kirjeldus',
'custom': 'Kohandatud', 'custom': 'Kohandatud',
@ -820,7 +847,8 @@ const Map<String, String> etEE = {
"swipeUpForMore": "Libista üles rohkema jaoks", "swipeUpForMore": "Libista üles rohkema jaoks",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Kui lubatud: AI-d ei katkesta sinu hääl rääkimise ajal ja see saab korraga käsitleda ainult ühte vestlusvooru. Uue vooru alustamiseks ütle lihtsalt äratussõna.', 'voice_interrupt_tip':
'Kui lubatud: AI-d ei katkesta sinu hääl rääkimise ajal ja see saab korraga käsitleda ainult ühte vestlusvooru. Uue vooru alustamiseks ütle lihtsalt äratussõna.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -876,6 +904,13 @@ const Map<String, String> etEE = {
'Tahame teada teate põhjust, võid kirjeldada probleemi, millega kokku puutusid.', 'Tahame teada teate põhjust, võid kirjeldada probleemi, millega kokku puutusid.',
'generatedByAi': 'AI poolt genereeritud', 'generatedByAi': 'AI poolt genereeritud',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Siin on mõned soovitatud muusikad:', 'recommendedMusic': 'Siin on mõned soovitatud muusikad:',
'playList': 'Esitusloend', 'playList': 'Esitusloend',
@ -896,6 +931,29 @@ const Map<String, String> etEE = {
"bicycling": "Jalgrattasõit", "bicycling": "Jalgrattasõit",
"tsransit": "Ühistransport", "tsransit": "Ühistransport",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Ilma päring:', 'weatherQuery': 'Ilma päring:',
'highest': 'Kõrgeim', 'highest': 'Kõrgeim',
@ -966,8 +1024,19 @@ const Map<String, String> etEE = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Palun sisestage tõlgitav tekst",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1238,9 +1307,11 @@ const Map<String, String> etEE = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigeerimine käib', 'native.notification.navigation.title': 'Navigeerimine käib',
'native.notification.navigation.keepRunning': 'Navigeerimine, hoia rakendust avatuna', 'native.notification.navigation.keepRunning':
'Navigeerimine, hoia rakendust avatuna',
'native.notification.bleAgent.running': 'Hääleassistendi agent töötab', '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.waiting': 'Ootab esitamist',
'native.notification.music.previous': 'Eelmine', 'native.notification.music.previous': 'Eelmine',
'native.notification.music.next': 'Järgmine', 'native.notification.music.next': 'Järgmine',
@ -1380,6 +1451,59 @@ const Map<String, String> etEE = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Võta mõlemad kõrvaklapid välja ja veendu, et mõlema aku on üle 20%", "Võta mõlemad kõrvaklapid välja ja veendu, et mõlema aku on üle 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Muusikat pole", // 暂无音乐 "noMusic": "Muusikat pole", // 暂无音乐
"noPlayingMusic": "Muusikat ei esitata", // 暂无播放音乐 "noPlayingMusic": "Muusikat ei esitata", // 暂无播放音乐

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

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

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

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

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 = { const Map<String, String> hiIN = {
// 通用 // 通用
'continue': 'जारी रखें', 'continue': 'जारी रखें',
'confirm': 'पुष्टि करें', 'confirm': 'पुष्टि करें',
@ -167,6 +166,29 @@ const Map<String, String> hiIN = {
'right': 'दायां', 'right': 'दायां',
'checkConnectionStatusFailed': 'कनेक्शन स्थिति की जाँच करने में विफल', 'checkConnectionStatusFailed': 'कनेक्शन स्थिति की जाँच करने में विफल',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "एआई फ़ंक्शन खोजें...", "searchAi": "एआई फ़ंक्शन खोजें...",
"exploreSlogan": "स्मार्ट ईयरफोन, अनंत संभावनाएं", "exploreSlogan": "स्मार्ट ईयरफोन, अनंत संभावनाएं",
@ -260,12 +282,15 @@ const Map<String, String> hiIN = {
'paymentException': 'भुगतान में समस्या', 'paymentException': 'भुगतान में समस्या',
'paymentLaunchFailed': 'भुगतान शुरू करने में विफल', 'paymentLaunchFailed': 'भुगतान शुरू करने में विफल',
'paymentExceptionWithError': 'भुगतान में समस्या: @error', 'paymentExceptionWithError': 'भुगतान में समस्या: @error',
'paymentProcessingCheckLater': 'आपका ऑर्डर प्रोसेस हो रहा है। कृपया बाद में जाँचें।', 'paymentProcessingCheckLater':
'आपका ऑर्डर प्रोसेस हो रहा है। कृपया बाद में जाँचें।',
'paymentResultQueryException': 'भुगतान परिणाम की जाँच विफल: @error', 'paymentResultQueryException': 'भुगतान परिणाम की जाँच विफल: @error',
'orderConfirmedQuotaRefreshed': 'ऑर्डर की पुष्टि हो गई। आपका कोटा रीफ़्रेश हो गया है।', 'orderConfirmedQuotaRefreshed':
'ऑर्डर की पुष्टि हो गई। आपका कोटा रीफ़्रेश हो गया है।',
'paymentCompletedConfirming': 'भुगतान पूरा हुआ। पुष्टि हो रही है…', 'paymentCompletedConfirming': 'भुगतान पूरा हुआ। पुष्टि हो रही है…',
'paymentCancelled': 'भुगतान रद्द किया गया', 'paymentCancelled': 'भुगतान रद्द किया गया',
'paypalOpenedCompleteInBrowser': 'PayPal खुल गया है। कृपया ब्राउज़र में भुगतान पूरा करें।', 'paypalOpenedCompleteInBrowser':
'PayPal खुल गया है। कृपया ब्राउज़र में भुगतान पूरा करें।',
'paypalOpenFailed': 'PayPal भुगतान पृष्ठ नहीं खोल सकते', 'paypalOpenFailed': 'PayPal भुगतान पृष्ठ नहीं खोल सकते',
'paymentTestTitle': 'भुगतान परीक्षण', 'paymentTestTitle': 'भुगतान परीक्षण',
'paymentTestOrderInfo': 'परीक्षण ऑर्डर जानकारी', 'paymentTestOrderInfo': 'परीक्षण ऑर्डर जानकारी',
@ -282,7 +307,8 @@ const Map<String, String> hiIN = {
'errorInfoWithMessage': 'त्रुटि: @message', 'errorInfoWithMessage': 'त्रुटि: @message',
'retest': 'पुनः परीक्षण', 'retest': 'पुनः परीक्षण',
'paymentTestInstructionsTitle': 'निर्देश', 'paymentTestInstructionsTitle': 'निर्देश',
'paymentTestInstructionsContent': '1. परीक्षण राशि चुनें (अनुशंसित: ¥0.01)\n2. शुरू करने के लिए भुगतान बटन दबाएँ\n3. भुगतान ऐप में भुगतान पूरा करें\n4. परिणाम जाँचने के लिए वापस आएँ', 'paymentTestInstructionsContent':
'1. परीक्षण राशि चुनें (अनुशंसित: ¥0.01)\n2. शुरू करने के लिए भुगतान बटन दबाएँ\n3. भुगतान ऐप में भुगतान पूरा करें\n4. परिणाम जाँचने के लिए वापस आएँ',
'startingWechatPayment': 'WeChat Pay खोल रहे हैं...', 'startingWechatPayment': 'WeChat Pay खोल रहे हैं...',
'startingAlipayPayment': 'Alipay खोल रहे हैं...', 'startingAlipayPayment': 'Alipay खोल रहे हैं...',
'wechatPaymentSuccess': 'WeChat Pay भुगतान सफल!', 'wechatPaymentSuccess': 'WeChat Pay भुगतान सफल!',
@ -493,19 +519,28 @@ const Map<String, String> hiIN = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'रिकॉर्डिंग से बाहर निकलें', // 退出录音 'meetingRecordExitTitle': 'रिकॉर्डिंग से बाहर निकलें', // 退出录音
'meetingRecordExitMessage': 'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作 'meetingRecordExitMessage':
'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作
'meetingRecordEndAndSave': 'रिकॉर्डिंग समाप्त करें और सहेजें', // 结束录音并保存 'meetingRecordEndAndSave': 'रिकॉर्डिंग समाप्त करें और सहेजें', // 结束录音并保存
'meetingRecordEndWithoutSave': 'बिना सहेजे रिकॉर्डिंग समाप्त करें', // 结束录音不保存 'meetingRecordEndWithoutSave': 'बिना सहेजे रिकॉर्डिंग समाप्त करें', // 结束录音不保存
'meetingRecordContinueInBackground': 'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试 'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音
'meetingRecordStopFailed': 'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试 'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试
'meetingRecordStopFailed':
'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'रिकॉर्डिंग चल रही है', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'रिकॉर्डिंग चल रही है', // 录音进行中
'meetingRecordRecordingNotificationBody': 'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'अन्य ऐप्स के ऊपर दिखाएँ', // 悬浮窗权限 'overlayPermissionTitle': 'अन्य ऐप्स के ऊपर दिखाएँ', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -540,7 +575,8 @@ const Map<String, String> hiIN = {
'editTemplate': 'टेम्पलेट संपादित करें', 'editTemplate': 'टेम्पलेट संपादित करें',
'createTemplate': 'टेम्पलेट बनाएँ', 'createTemplate': 'टेम्पलेट बनाएँ',
'name': 'नाम', 'name': 'नाम',
'templateContentHint': 'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ', 'templateContentHint':
'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ',
'inputNameHint': 'कृपया नाम दर्ज करें', 'inputNameHint': 'कृपया नाम दर्ज करें',
'inputDescHint': 'कृपया विवरण दर्ज करें', 'inputDescHint': 'कृपया विवरण दर्ज करें',
'custom': 'कस्टम', 'custom': 'कस्टम',
@ -817,7 +853,8 @@ const Map<String, String> hiIN = {
"swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें", "swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।', 'voice_interrupt_tip':
'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -873,6 +910,13 @@ const Map<String, String> hiIN = {
'हम जानना चाहते हैं कि आप क्यों रिपोर्ट कर रहे हैं, आप जिस समस्या का सामना कर रहे हैं उसका वर्णन कर सकते हैं।', 'हम जानना चाहते हैं कि आप क्यों रिपोर्ट कर रहे हैं, आप जिस समस्या का सामना कर रहे हैं उसका वर्णन कर सकते हैं।',
'generatedByAi': 'एआई द्वारा उत्पन्न', 'generatedByAi': 'एआई द्वारा उत्पन्न',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:', 'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:',
'playList': 'प्लेलिस्ट', 'playList': 'प्लेलिस्ट',
@ -893,6 +937,29 @@ const Map<String, String> hiIN = {
"bicycling": "साइकिल चलाना", "bicycling": "साइकिल चलाना",
"tsransit": "पारगमन", "tsransit": "पारगमन",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'मौसम की स्थिति की पूछताछ:', 'weatherQuery': 'मौसम की स्थिति की पूछताछ:',
'highest': 'उच्चतम', 'highest': 'उच्चतम',
@ -964,8 +1031,19 @@ const Map<String, String> hiIN = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "कृपया अनुवाद करने के लिए पाठ दर्ज करें",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1243,9 +1321,11 @@ const Map<String, String> hiIN = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'नेविगेशन जारी है', 'native.notification.navigation.title': 'नेविगेशन जारी है',
'native.notification.navigation.keepRunning': 'नेविगेट कर रहे हैं, ऐप चालू रखें', 'native.notification.navigation.keepRunning':
'नेविगेट कर रहे हैं, ऐप चालू रखें',
'native.notification.bleAgent.running': 'वॉयस असिस्टेंट एजेंट चल रहा है', 'native.notification.bleAgent.running': 'वॉयस असिस्टेंट एजेंट चल रहा है',
'native.notification.audioRecording.recording': 'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें', 'native.notification.audioRecording.recording':
'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें',
'native.notification.music.waiting': 'चलाने की प्रतीक्षा में', 'native.notification.music.waiting': 'चलाने की प्रतीक्षा में',
'native.notification.music.previous': 'पिछला', 'native.notification.music.previous': 'पिछला',
'native.notification.music.next': 'अगला', 'native.notification.music.next': 'अगला',
@ -1391,6 +1471,59 @@ const Map<String, String> hiIN = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 20% से ऊपर है", "दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 20% से ऊपर है",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "कोई संगीत नहीं", // 暂无音乐 "noMusic": "कोई संगीत नहीं", // 暂无音乐
"noPlayingMusic": "कोई संगीत नहीं चल रहा है", // 暂无播放音乐 "noPlayingMusic": "कोई संगीत नहीं चल रहा है", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> hrHR = { const Map<String, String> hrHR = {
// 通用 // 通用
'continue': 'Nastavi', 'continue': 'Nastavi',
'confirm': 'Potvrdi', 'confirm': 'Potvrdi',
@ -170,6 +169,29 @@ const Map<String, String> hrHR = {
'right': 'Desno', 'right': 'Desno',
'checkConnectionStatusFailed': 'Provjera statusa veze nije uspjela', 'checkConnectionStatusFailed': 'Provjera statusa veze nije uspjela',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Traži AI funkcije...", "searchAi": "Traži AI funkcije...",
"exploreSlogan": "Pametne slušalice, beskonačne mogućnosti", "exploreSlogan": "Pametne slušalice, beskonačne mogućnosti",
@ -264,12 +286,16 @@ const Map<String, String> hrHR = {
'paymentException': 'Iznimka pri plaćanju', 'paymentException': 'Iznimka pri plaćanju',
'paymentLaunchFailed': 'Pokretanje plaćanja nije uspjelo', 'paymentLaunchFailed': 'Pokretanje plaćanja nije uspjelo',
'paymentExceptionWithError': 'Iznimka pri plaćanju: @error', 'paymentExceptionWithError': 'Iznimka pri plaćanju: @error',
'paymentProcessingCheckLater': 'Vaša narudžba se obrađuje. Provjerite kasnije.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Neuspješno dohvaćanje rezultata plaćanja: @error', 'Vaša narudžba se obrađuje. Provjerite kasnije.',
'orderConfirmedQuotaRefreshed': 'Narudžba je potvrđena. Vaša kvota je osvježena.', 'paymentResultQueryException':
'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…', 'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…',
'paymentCancelled': 'Plaćanje je otkazano', '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', 'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje',
'paymentTestTitle': 'Test plaćanja', 'paymentTestTitle': 'Test plaćanja',
'paymentTestOrderInfo': 'Informacije o testnoj narudžbi', 'paymentTestOrderInfo': 'Informacije o testnoj narudžbi',
@ -286,7 +312,8 @@ const Map<String, String> hrHR = {
'errorInfoWithMessage': 'Greška: @message', 'errorInfoWithMessage': 'Greška: @message',
'retest': 'Ponovo testiraj', 'retest': 'Ponovo testiraj',
'paymentTestInstructionsTitle': 'Upute', '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...', 'startingWechatPayment': 'Pokretanje WeChat Pay-a...',
'startingAlipayPayment': 'Pokretanje Alipay-a...', 'startingAlipayPayment': 'Pokretanje Alipay-a...',
'wechatPaymentSuccess': 'WeChat Pay plaćanje uspješno!', 'wechatPaymentSuccess': 'WeChat Pay plaćanje uspješno!',
@ -497,19 +524,27 @@ const Map<String, String> hrHR = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Izađi iz snimanja', // 退出录音 'meetingRecordExitTitle': 'Izađi iz snimanja', // 退出录音
'meetingRecordExitMessage': 'Odaberite što učiniti prije izlaska', // 请选择离开后的操作 'meetingRecordExitMessage':
'Odaberite što učiniti prije izlaska', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Završi i spremi', // 结束录音并保存 'meetingRecordEndAndSave': 'Završi i spremi', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Završi bez spremanja', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Završi bez spremanja', // 结束录音不保存
'meetingRecordContinueInBackground': 'Nastavi snimanje u pozadini', // 后台继续录音 'meetingRecordContinueInBackground': 'Nastavi snimanje u pozadini', // 后台继续录音
'meetingRecordStopTimeout': 'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试 'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试 'meetingRecordStopFailed':
'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Snimanje je u tijeku', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Snimanje je u tijeku', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Snimanje u pozadini. Dodirnite za povratak u aplikaciju.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Snimanje u pozadini. Dodirnite za povratak u aplikaciju.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Prikaz preko drugih aplikacija', // 悬浮窗权限 'overlayPermissionTitle': 'Prikaz preko drugih aplikacija', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Za prikaz rezultata prijevoda tijekom poziva ili prijevoda zvuka/videa potrebna je dozvola za prikaz preko drugih aplikacija. Tako možete vidjeti prijevod u stvarnom vremenu dok koristite druge aplikacije.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Za prikaz plutajuće trake snimanja (mjerač vremena/pauza/nastavi) tijekom snimanja potrebna je dozvola za prikaz preko drugih aplikacija.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Za prikaz rezultata prijevoda tijekom poziva ili prijevoda zvuka/videa potrebna je dozvola za prikaz preko drugih aplikacija. Tako možete vidjeti prijevod u stvarnom vremenu dok koristite druge aplikacije.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Nije moguće automatski otvoriti postavke sustava. Otvorite Postavke i ručno omogućite dozvolu za prikaz preko drugih aplikacija.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Za prikaz plutajuće trake snimanja (mjerač vremena/pauza/nastavi) tijekom snimanja potrebna je dozvola za prikaz preko drugih aplikacija.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nije moguće automatski otvoriti postavke sustava. Otvorite Postavke i ručno omogućite dozvolu za prikaz preko drugih aplikacija.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -540,11 +575,13 @@ const Map<String, String> hrHR = {
'description': 'Opis', 'description': 'Opis',
'template': 'Predložak', 'template': 'Predložak',
'deleteTemplate': 'Obriši predložak', 'deleteTemplate': 'Obriši predložak',
'deleteTemplateConfirm': 'Jeste li sigurni da želite obrisati ovaj predložak?', 'deleteTemplateConfirm':
'Jeste li sigurni da želite obrisati ovaj predložak?',
'editTemplate': 'Uredi predložak', 'editTemplate': 'Uredi predložak',
'createTemplate': 'Stvori predložak', 'createTemplate': 'Stvori predložak',
'name': 'Naziv', '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', 'inputNameHint': 'Molimo unesite naziv',
'inputDescHint': 'Molimo unesite opis', 'inputDescHint': 'Molimo unesite opis',
'custom': 'Prilagođeno', 'custom': 'Prilagođeno',
@ -704,7 +741,8 @@ const Map<String, String> hrHR = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije', 'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije',
'transcriptionFailed': 'Transkripcija nije uspjela, pokušajte ponovno kasnije', 'transcriptionFailed':
'Transkripcija nije uspjela, pokušajte ponovno kasnije',
'summaryFailed': 'Sažetak nije uspio, pokušajte ponovno kasnije', 'summaryFailed': 'Sažetak nije uspio, pokušajte ponovno kasnije',
'summaryFailedShort': 'Sažetak nije uspio', 'summaryFailedShort': 'Sažetak nije uspio',
'transcriptionFailedShort': 'Transkripcija nije uspjela', 'transcriptionFailedShort': 'Transkripcija nije uspjela',
@ -821,7 +859,8 @@ const Map<String, String> hrHR = {
"swipeUpForMore": "Prijeđite prstom prema gore za više", "swipeUpForMore": "Prijeđite prstom prema gore za više",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Kada je uključeno: AI neće biti prekinut vašim glasom dok govori i može obraditi samo jedan krug razgovora odjednom. Za početak novog kruga, samo izgovorite riječ za buđenje.', 'voice_interrupt_tip':
'Kada je uključeno: AI neće biti prekinut vašim glasom dok govori i može obraditi samo jedan krug razgovora odjednom. Za početak novog kruga, samo izgovorite riječ za buđenje.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -877,6 +916,13 @@ const Map<String, String> hrHR = {
'Želimo znati razlog vaše prijave, možete opisati problem s kojim ste se suočili.', 'Želimo znati razlog vaše prijave, možete opisati problem s kojim ste se suočili.',
'generatedByAi': 'Generirano od strane AI', 'generatedByAi': 'Generirano od strane AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Evo nekoliko preporučenih pjesama:', 'recommendedMusic': 'Evo nekoliko preporučenih pjesama:',
'playList': 'Popis pjesama', 'playList': 'Popis pjesama',
@ -897,6 +943,29 @@ const Map<String, String> hrHR = {
"bicycling": "Biciklizam", "bicycling": "Biciklizam",
"tsransit": "Javni prijevoz", "tsransit": "Javni prijevoz",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Upit o vremenskim uvjetima:', 'weatherQuery': 'Upit o vremenskim uvjetima:',
'highest': 'Najviša', 'highest': 'Najviša',
@ -968,8 +1037,19 @@ const Map<String, String> hrHR = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Unesite tekst za prijevod",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1246,9 +1326,11 @@ const Map<String, String> hrHR = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija u tijeku', 'native.notification.navigation.title': 'Navigacija u tijeku',
'native.notification.navigation.keepRunning': 'Navigacija, držite aplikaciju pokrenutom', 'native.notification.navigation.keepRunning':
'Navigacija, držite aplikaciju pokrenutom',
'native.notification.bleAgent.running': 'Glasovni asistent je pokrenut', '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.waiting': 'Čekanje na reprodukciju',
'native.notification.music.previous': 'Prethodna', 'native.notification.music.previous': 'Prethodna',
'native.notification.music.next': 'Sljedeća', 'native.notification.music.next': 'Sljedeća',
@ -1396,6 +1478,59 @@ const Map<String, String> hrHR = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Izvadite obje slušalice i provjerite je li baterija obje iznad 20%", "Izvadite obje slušalice i provjerite je li baterija obje iznad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Nema glazbe", // 暂无音乐 "noMusic": "Nema glazbe", // 暂无音乐
"noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐 "noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> huHU = { const Map<String, String> huHU = {
// 通用 // 通用
'continue': 'Folytatás', 'continue': 'Folytatás',
'confirm': 'Megerősítés', 'confirm': 'Megerősítés',
@ -172,6 +171,29 @@ const Map<String, String> huHU = {
'checkConnectionStatusFailed': 'checkConnectionStatusFailed':
'A kapcsolat állapotának ellenőrzése sikertelen', 'A kapcsolat állapotának ellenőrzése sikertelen',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "AI funkciók keresése...", "searchAi": "AI funkciók keresése...",
"exploreSlogan": "Okos fülhallgatók, végtelen lehetőségek", "exploreSlogan": "Okos fülhallgatók, végtelen lehetőségek",
@ -264,12 +286,15 @@ const Map<String, String> huHU = {
'paymentException': 'Fizetési kivétel', 'paymentException': 'Fizetési kivétel',
'paymentLaunchFailed': 'Fizetés indítása sikertelen', 'paymentLaunchFailed': 'Fizetés indítása sikertelen',
'paymentExceptionWithError': 'Fizetési kivétel: @error', 'paymentExceptionWithError': 'Fizetési kivétel: @error',
'paymentProcessingCheckLater': 'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Nem sikerült lekérdezni a fizetés eredményét: @error', 'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.',
'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.', 'orderConfirmedQuotaRefreshed': 'Rendelés megerősítve. A kvótája frissült.',
'paymentCompletedConfirming': 'Fizetés befejezve. Megerősítés folyamatban…', 'paymentCompletedConfirming': 'Fizetés befejezve. Megerősítés folyamatban…',
'paymentCancelled': 'Fizetés megszakítva', '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', 'paypalOpenFailed': 'Nem sikerült megnyitni a PayPal fizetési oldalt',
'paymentTestTitle': 'Fizetési teszt', 'paymentTestTitle': 'Fizetési teszt',
'paymentTestOrderInfo': 'Teszt rendelési információ', 'paymentTestOrderInfo': 'Teszt rendelési információ',
@ -286,7 +311,8 @@ const Map<String, String> huHU = {
'errorInfoWithMessage': 'Hiba: @message', 'errorInfoWithMessage': 'Hiba: @message',
'retest': 'Újratesztelés', 'retest': 'Újratesztelés',
'paymentTestInstructionsTitle': 'Útmutató', '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...', 'startingWechatPayment': 'WeChat Pay indítása...',
'startingAlipayPayment': 'Alipay indítása...', 'startingAlipayPayment': 'Alipay indítása...',
'wechatPaymentSuccess': 'WeChat Pay sikeres!', 'wechatPaymentSuccess': 'WeChat Pay sikeres!',
@ -553,7 +579,8 @@ const Map<String, String> huHU = {
'editTemplate': 'Sablon szerkesztése', 'editTemplate': 'Sablon szerkesztése',
'createTemplate': 'Sablon létrehozása', 'createTemplate': 'Sablon létrehozása',
'name': 'Név', 'name': 'Név',
'templateContentHint': 'Kérjük, adja meg a sablon tartalmát! Tipp: Kattintson a fenti AI gombra, hogy gyorsan generáljon sablontartalmat a megadott név és leírás alapján', 'templateContentHint':
'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', 'inputNameHint': 'Kérjük, adjon meg nevet',
'inputDescHint': 'Kérjük, adjon meg leírást', 'inputDescHint': 'Kérjük, adjon meg leírást',
'custom': 'Egyéni', 'custom': 'Egyéni',
@ -832,7 +859,8 @@ const Map<String, String> huHU = {
"swipeUpForMore": "Húzza felfelé a továbbiakért", "swipeUpForMore": "Húzza felfelé a továbbiakért",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Ha engedélyezve van: Az AI nem szakítható meg a hangjával beszéd közben, és egyszerre csak egy beszélgetési kört tud kezelni. Új kör indításához mondja ki az ébresztő szót.', 'voice_interrupt_tip':
'Ha engedélyezve van: Az AI nem szakítható meg a hangjával beszéd közben, és egyszerre csak egy beszélgetési kört tud kezelni. Új kör indításához mondja ki az ébresztő szót.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -888,6 +916,13 @@ const Map<String, String> huHU = {
'Szeretnénk tudni a jelentés okát, leírhatja a tapasztalt problémát.', 'Szeretnénk tudni a jelentés okát, leírhatja a tapasztalt problémát.',
'generatedByAi': 'AI által generált', 'generatedByAi': 'AI által generált',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Itt van néhány ajánlott zene:', 'recommendedMusic': 'Itt van néhány ajánlott zene:',
'playList': 'Lejátszási lista', 'playList': 'Lejátszási lista',
@ -908,6 +943,29 @@ const Map<String, String> huHU = {
"bicycling": "Kerékpározás", "bicycling": "Kerékpározás",
"tsransit": "Tömegközlekedés", "tsransit": "Tömegközlekedés",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Időjárási körülmények lekérdezése:', 'weatherQuery': 'Időjárási körülmények lekérdezése:',
'highest': 'Legmagasabb', 'highest': 'Legmagasabb',
@ -979,8 +1037,19 @@ const Map<String, String> huHU = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Kérjük, adja meg a lefordítandó szöveget",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1257,9 +1326,11 @@ const Map<String, String> huHU = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigálás folyamatban', 'native.notification.navigation.title': 'Navigálás folyamatban',
'native.notification.navigation.keepRunning': 'Navigálás, tartsa nyitva az alkalmazást', 'native.notification.navigation.keepRunning':
'Navigálás, tartsa nyitva az alkalmazást',
'native.notification.bleAgent.running': 'A hangasszisztens ügynök fut', '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.waiting': 'Lejátszásra vár',
'native.notification.music.previous': 'Előző', 'native.notification.music.previous': 'Előző',
'native.notification.music.next': 'Következő', 'native.notification.music.next': 'Következő',
@ -1407,6 +1478,59 @@ const Map<String, String> huHU = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van", "Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Nincs zene", // 暂无音乐 "noMusic": "Nincs zene", // 暂无音乐
"noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐 "noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> idID = { const Map<String, String> idID = {
// 通用 // 通用
'continue': 'Lanjutkan', 'continue': 'Lanjutkan',
'confirm': 'Konfirmasi', 'confirm': 'Konfirmasi',
@ -19,11 +18,11 @@ const Map<String, String> idID = {
"unknownError": "Kesalahan tidak diketahui", "unknownError": "Kesalahan tidak diketahui",
"asrConnectionFailed": "asrConnectionFailed":
"Koneksi ke layanan pengenalan suara gagal. Periksa jaringan Anda lalu coba lagi nanti.", "Koneksi ke layanan pengenalan suara gagal. Periksa jaringan Anda lalu coba lagi nanti.",
"justNow": "Just now", "justNow": "Baru saja",
"minutesAgo": "@minutes minutes ago", "minutesAgo": "@minutes menit yang lalu",
"yesterday": "Yesterday", "yesterday": "Kemarin",
"daysAgo": "@days days ago", "daysAgo": "@days hari yang lalu",
"hoursAgo": "@hours hours ago", "hoursAgo": "@hours jam yang lalu",
// 启动页 // 启动页
"slogan": "Menghubungkan dunia, melampaui suara", "slogan": "Menghubungkan dunia, melampaui suara",
@ -167,6 +166,29 @@ const Map<String, String> idID = {
'right': 'Kanan', 'right': 'Kanan',
'checkConnectionStatusFailed': 'Gagal memeriksa status koneksi', '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...", "searchAi": "Cari fitur AI...",
"exploreSlogan": "Earphone pintar, kemungkinan tak terbatas", "exploreSlogan": "Earphone pintar, kemungkinan tak terbatas",
@ -194,22 +216,22 @@ const Map<String, String> idID = {
// 用量统计模块 // 用量统计模块
"aiChat": "AI Chat", "aiChat": "AI Chat",
"translationStats": "Translation Statistics", "translationStats": "Statistik Terjemahan",
"meetingStats": "Meeting Statistics", "meetingStats": "Meeting Statistics",
"today": "Today", "today": "Today",
"thisWeek": "This Week", "thisWeek": "This Week",
"thisMonth": "This Month", "thisMonth": "This Month",
"history": "History", "history": "History",
"currentSessionStats": "Current Session Stats", "currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count", "translationCount": "Jumlah Terjemahan",
"sessionDuration": "Session Duration", "sessionDuration": "Session Duration",
"characters": "Characters", "characters": "Characters",
"recordingDuration": "Recording Duration", "recordingDuration": "Durasi Rekaman",
"totalApiCalls": "Total API Calls", "totalApiCalls": "Total API Calls",
"sessionCount": "Session Count", "sessionCount": "Session Count",
"totalCharacters": "Total Characters", "totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats", "apiCallStats": "API Call Stats",
"translationApi": "Translation API", "translationApi": "API Terjemahan",
"asr": "ASR", "asr": "ASR",
"tts": "TTS", "tts": "TTS",
"dataVolumeStats": "Data Volume Stats", "dataVolumeStats": "Data Volume Stats",
@ -228,9 +250,8 @@ const Map<String, String> idID = {
"totalAudioDuration": "Total Audio Duration", "totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size", "audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes", "transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed", "loadFailed": "Gagal Memuat",
"statsLoadFailedTryLater": "statsLoadFailedTryLater": "Statistik gagal dimuat. Silakan coba lagi nanti.",
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete", "cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days", "cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature", "exportFeature": "Export Feature",
@ -260,12 +281,15 @@ const Map<String, String> idID = {
'paymentException': 'Pembayaran bermasalah', 'paymentException': 'Pembayaran bermasalah',
'paymentLaunchFailed': 'Gagal membuka pembayaran', 'paymentLaunchFailed': 'Gagal membuka pembayaran',
'paymentExceptionWithError': 'Pembayaran bermasalah: @error', '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', '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…', 'paymentCompletedConfirming': 'Pembayaran selesai. Sedang mengonfirmasi…',
'paymentCancelled': 'Pembayaran dibatalkan', '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', 'paypalOpenFailed': 'Tidak dapat membuka halaman pembayaran PayPal',
'paymentTestTitle': 'Uji Pembayaran', 'paymentTestTitle': 'Uji Pembayaran',
'paymentTestOrderInfo': 'Info Pesanan Uji', 'paymentTestOrderInfo': 'Info Pesanan Uji',
@ -282,7 +306,8 @@ const Map<String, String> idID = {
'errorInfoWithMessage': 'Kesalahan: @message', 'errorInfoWithMessage': 'Kesalahan: @message',
'retest': 'Uji ulang', 'retest': 'Uji ulang',
'paymentTestInstructionsTitle': 'Petunjuk', '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...', 'startingWechatPayment': 'Membuka WeChat Pay...',
'startingAlipayPayment': 'Membuka Alipay...', 'startingAlipayPayment': 'Membuka Alipay...',
'wechatPaymentSuccess': 'Pembayaran WeChat Pay berhasil!', 'wechatPaymentSuccess': 'Pembayaran WeChat Pay berhasil!',
@ -296,12 +321,12 @@ const Map<String, String> idID = {
'alipayPaymentLaunchFailed': 'Gagal membuka Alipay', 'alipayPaymentLaunchFailed': 'Gagal membuka Alipay',
'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay', 'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay',
'alipayPaymentException': 'Alipay bermasalah', 'alipayPaymentException': 'Alipay bermasalah',
"insufficientIntegral": "Insufficient integral", "insufficientIntegral": "Poin tidak mencukupi",
"insufficientBalanceDesc": "insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.', 'Saldo tidak mencukupi, silakan buka halaman isi ulang terkait untuk mengisi saldo.',
"recharge": 'Go to Recharge', "recharge": 'Isi ulang',
"aiMemberExpiredDesc": "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商品页 // 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation', 'musicAndRecommendation': 'Music & Recommendation',
@ -329,18 +354,18 @@ const Map<String, String> idID = {
'templatedMessagesAndScheduleReminders': 'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders', 'Template messages and schedule reminders',
'aiDisclaimer': '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', 'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary', 'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles', 'subtitleDisplay': 'Subtitles',
'transHeaderDesc1': '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.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation', 'translateZhEn': 'Terjemahan Mandarin-Inggris',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation', 'multiLangTextTranslation': 'Terjemahan teks multibahasa',
'termOptimizationContextPreserve': 'termOptimizationContextPreserve':
'Terminology optimization and context preservation', 'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
@ -348,18 +373,18 @@ const Map<String, String> idID = {
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast', 'colorHighContrast': 'High color contrast',
'transDisclaimer': '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', 'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search', 'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing', 'collaborationSharing': 'Collaboration & Sharing',
'meetingHeaderDesc1': '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': 'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.', 'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation', 'meetingAutoRecording': 'Perekaman otomatis dan segmentasi',
'meetingSpeakerTagging': 'Speaker labeling', 'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription', 'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction', 'meetingKeyPointSummary': 'Key point extraction',
@ -368,7 +393,7 @@ const Map<String, String> idID = {
'meetingExportSummary': 'Export minutes', 'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms', 'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer': 'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.', 'Gunakan di lingkungan yang tenang; kinerja bergantung pada mikrofon dan jaringan.',
// 商品模块 - VIP会员页 // 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview', 'benefitsOverview': 'Benefits overview',
@ -382,7 +407,7 @@ const Map<String, String> idID = {
'longTermDiscountPlan': 'Long-term discount plan', 'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges', 'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features', 'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync', 'crossDeviceSync': 'Sinkronisasi lintas perangkat',
'vipDisclaimer': 'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.', '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_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500', 'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000', 'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100', 'trans_001_name': 'Terjemahan Dasar 100',
'trans_002_name': 'Translation Basic 500', 'trans_002_name': 'Terjemahan Dasar 500',
'trans_003_name': 'Translation Basic 1000', 'trans_003_name': 'Terjemahan Dasar 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.', 'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 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.', 'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', 'meet_001_desc': 'Termasuk 100 rekaman/transkripsi rapat.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', 'meet_002_desc': 'Termasuk 500 rekaman/transkripsi rapat.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', 'meet_003_desc': 'Termasuk 1000 rekaman/transkripsi rapat.',
'trans_001_desc': 'Includes 100 translations (voice/text).', 'trans_001_desc': 'Termasuk 100 terjemahan (suara/teks).',
'trans_002_desc': 'Includes 500 translations (voice/text).', 'trans_002_desc': 'Termasuk 500 terjemahan (suara/teks).',
'trans_003_desc': 'Includes 1000 translations (voice/text).', 'trans_003_desc': 'Termasuk 1000 terjemahan (suara/teks).',
// 商品模块 - 页脚 // 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
@ -460,52 +485,62 @@ const Map<String, String> idID = {
'recordingDetails': 'Detail Rekaman', 'recordingDetails': 'Detail Rekaman',
'aiSummary': 'Ringkasan AI', 'aiSummary': 'Ringkasan AI',
'meetingTranscript': 'Transkrip Rapat', 'meetingTranscript': 'Transkrip Rapat',
'files': 'Files', 'files': 'Berkas',
'mine': 'Mine', 'mine': 'Milik Saya',
'connect': 'Connect', 'connect': 'Hubungkan',
'allFiles': 'All Files', 'allFiles': 'Semua Berkas',
'searchInAllFiles': 'Search in all files', 'searchInAllFiles': 'Cari di semua berkas',
'from': 'From', 'from': 'Dari',
'sortBy': 'Sort by', 'sortBy': 'Urutkan berdasarkan',
'creationTime': 'Creation Time', 'creationTime': 'Waktu dibuat',
'bluetoothConnection': 'Bluetooth Connection', 'bluetoothConnection': 'Koneksi Bluetooth',
'meetingReconnect': 'Reconnect', 'meetingReconnect': 'Sambungkan kembali',
'searching': 'Searching...', 'searching': 'Mencari...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled', 'searchFailed': 'Pencarian gagal, harap periksa apakah Bluetooth diaktifkan',
'aiPenNotFound': 'AI PEN device not found', 'aiPenNotFound': 'Perangkat AI PEN tidak ditemukan',
'connectedToAiPen': 'Connected to AI PEN device', 'connectedToAiPen': 'Terhubung ke perangkat AI PEN',
'checkingNewFiles': 'Checking for new files to import', 'checkingNewFiles': 'Memeriksa file baru untuk diimpor',
'startingWifi': 'Starting Wi-Fi...', 'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import', 'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import', 'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...', 'connectingWifi': 'Menyambungkan ke Wi‑Fi...',
'wifiConnected': 'Wi-Fi connected successfully', 'wifiConnected': 'Wi‑Fi berhasil terhubung',
'downloadingFiles': 'Downloading files...', 'downloadingFiles': 'Mengunduh file...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}', 'downloadingFileProgress': 'Total {total} file, mengunduh file {current}',
'downloadComplete': 'Download complete', 'downloadComplete': 'Unduhan selesai',
'downloadCompleteInfo': 'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds', 'Unduhan selesai, total {count} file, kembali otomatis dalam 2 detik',
// Meeting模块 - 录音功能 // Meeting模块 - 录音功能
'startRecording': 'Start Recording', 'startRecording': 'Mulai Merekam',
'liveRecording': 'Live Recording', 'liveRecording': 'Rekaman Langsung',
'audioVideoRecording': 'Audio/Video Recording', 'audioVideoRecording': 'Rekaman Audio/Video',
'callRecording': 'Call Recording', 'callRecording': 'Rekaman Panggilan',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Keluar dari perekaman', // 退出录音 'meetingRecordExitTitle': 'Keluar dari perekaman', // 退出录音
'meetingRecordExitMessage': 'Pilih apa yang akan dilakukan sebelum keluar', // 请选择离开后的操作 'meetingRecordExitMessage':
'Pilih apa yang akan dilakukan sebelum keluar', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Akhiri dan simpan', // 结束录音并保存 'meetingRecordEndAndSave': 'Akhiri dan simpan', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Akhiri tanpa menyimpan', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Akhiri tanpa menyimpan', // 结束录音不保存
'meetingRecordContinueInBackground': 'Lanjutkan merekam di latar belakang', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'Waktu untuk menghentikan perekaman habis. Silakan coba lagi.', // 结束录音超时,请重试 'Lanjutkan merekam di latar belakang', // 后台继续录音
'meetingRecordStopFailed': 'Gagal menghentikan perekaman. Silakan coba lagi.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Gagal menyimpan rekaman. Silakan coba lagi.', // 保存录音失败,请重试 'Waktu untuk menghentikan perekaman habis. Silakan coba lagi.', // 结束录音超时,请重试
'meetingRecordRecordingNotificationTitle': 'Perekaman sedang berlangsung', // 录音进行中 'meetingRecordStopFailed':
'meetingRecordRecordingNotificationBody': 'Merekam di latar belakang. Ketuk untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用 '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', // 悬浮窗权限 '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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Untuk menampilkan bilah mengambang perekaman (timer/jeda/lanjut) saat merekam, kami memerlukan izin overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 '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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Tidak dapat membuka pengaturan sistem secara otomatis. Silakan buka Pengaturan dan aktifkan izin overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 '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...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -540,36 +575,38 @@ const Map<String, String> idID = {
'editTemplate': 'Edit Template', 'editTemplate': 'Edit Template',
'createTemplate': 'Buat Template', 'createTemplate': 'Buat Template',
'name': 'Nama', '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', 'inputNameHint': 'Silakan masukkan nama',
'inputDescHint': 'Silakan masukkan deskripsi', 'inputDescHint': 'Silakan masukkan deskripsi',
'custom': 'Kustom', 'custom': 'Kustom',
'pleaseEnter': 'Silakan masukkan', 'pleaseEnter': 'Silakan masukkan',
'viewAll': 'View All', 'viewAll': 'Lihat semua',
'recordingLanguage': 'Recording Language', 'recordingLanguage': 'Bahasa Rekaman',
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now', 'meetingGenerateNow': 'Buat sekarang',
'keyEventsAnalyzed': 'Analyzed {count} key events.', 'keyEventsAnalyzed': 'Menganalisis {count} peristiwa penting.',
'aiAnalysisDesc': '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模块 - 文件操作 // Meeting模块 - 文件操作
'importing': 'Importing...', 'importing': 'Importing...',
'batchImporting': 'Batch importing...', 'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...', 'importingLocalRecordings': 'Mengimpor rekaman lokal...',
'importFailed': 'Import file failed: {filePath}, error: {error}', 'importFailed': 'Gagal mengimpor file: {filePath}, kesalahan: {error}',
'importSuccess': 'Successfully imported {count} local recordings', 'importSuccess': 'Berhasil mengimpor {count} rekaman lokal',
'importError': 'Import failed: {error}', 'importError': 'Impor gagal: {error}',
'pleaseSelectAudioFile': 'Please select audio file', 'pleaseSelectAudioFile': 'Silakan pilih file audio',
'shareAudio': 'Share Meeting Audio', 'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!', 'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}', 'shareFailed': 'Berbagi gagal: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', 'fileProcessingFailed':
'Pemrosesan file gagal: {filePath}, kesalahan: {error}',
// Meeting模块 - 思维导图 // Meeting模块 - 思维导图
'saveMindMap': 'Simpan Peta Pikiran', 'saveMindMap': 'Simpan Peta Pikiran',
'shareMindMap': 'Share Mind Map', 'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success', 'shareSuccess': 'Berbagi Berhasil',
// Meeting模块 - AI问答 // Meeting模块 - AI问答
'askAI': 'Ask AI ...', 'askAI': 'Ask AI ...',
@ -605,26 +642,27 @@ const Map<String, String> idID = {
// Meeting模块 - 云端同步 // Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud', 'syncToCloud': 'Sync to Cloud',
'syncToCloudTip': 'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', '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', 'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record', 'transcriptionRecord': 'Catatan Transkripsi',
// Meeting模块 - 我的页面 // Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records', 'transcriptionRecords': 'Catatan Transkripsi',
'templateCommunity': 'Template Community', 'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon', 'comingSoon': 'Coming Soon',
'integration': 'Integration', 'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled', 'enabled': 'Diaktifkan',
'disabled': 'Disabled', 'disabled': 'Dinonaktifkan',
'myVoitransDevice': 'My VOITRANS Device', 'myVoitransDevice': 'Perangkat VOITRANS Saya',
'helpAndFeedback': 'Help & Feedback', 'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS', 'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days', 'meetingDays': 'Days',
'meetingHours': 'Hours', 'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member', 'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member', 'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'bindDeviceToActivate':
'Ikat perangkat Voitrans untuk mengaktifkan keanggotaan Starter',
'unlockNow': 'Unlock Now', 'unlockNow': 'Unlock Now',
// Meeting模块 - 会员与升级 // Meeting模块 - 会员与升级
@ -648,7 +686,7 @@ const Map<String, String> idID = {
'customTemplateDesc': 'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc': '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': 'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc': 'templateCommunityDesc':
@ -656,13 +694,13 @@ const Map<String, String> idID = {
'speakerIdentificationDesc': '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.', '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': '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': 'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc': 'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc': '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', 'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription', 'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription', 'monthlySubscription': 'Monthly Subscription',
@ -692,7 +730,7 @@ const Map<String, String> idID = {
'purchase': 'Purchase', 'purchase': 'Purchase',
// Meeting模块 - 录音语言 // Meeting模块 - 录音语言
'recordLanguage': 'Recording Language', 'recordLanguage': 'Bahasa Rekaman',
'cantonese': 'Cantonese', 'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect', 'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect', 'shanghai': 'Shanghai Dialect',
@ -719,10 +757,10 @@ const Map<String, String> idID = {
"translationRecharge": "Pembayaran Terjemahan", "translationRecharge": "Pembayaran Terjemahan",
"meetingAssistantRecharge": "Pembayaran Asisten Rapat", "meetingAssistantRecharge": "Pembayaran Asisten Rapat",
"cloudSync": "Pembayaran Sinkronisasi awan", "cloudSync": "Pembayaran Sinkronisasi awan",
"memberService": "Member Service", "memberService": "Layanan Anggota",
"bindRewardTitle": "Rewards", "bindRewardTitle": "Hadiah",
"bindRewardSimpleDesc": "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:", "joinDevice": "Perangkat terhubung:",
"accountId": "ID Akun:", "accountId": "ID Akun:",
"systemSetting": "Pengaturan Sistem", "systemSetting": "Pengaturan Sistem",
@ -771,19 +809,20 @@ const Map<String, String> idID = {
"loading": "Memuat...", "loading": "Memuat...",
// 设备管理模块 // 设备管理模块
"deviceTypeUnknown": "Unknown Device", "deviceTypeUnknown": "Perangkat Tidak Dikenal",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeClassicBluetoothHeadset": "Headset Bluetooth Klasik",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "Headset Bluetooth BLE",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", "deviceTypeSmartVoiceRecorder": "Perekam Suara Cerdas",
"deviceTypeSmartEye": "Smart Glasses", "deviceTypeSmartEye": "Kacamata Pintar",
"unbind": "Putuskan Ikatan", "unbind": "Putuskan Ikatan",
"noDevicesBound": "No devices bound yet", "noDevicesBound": "Belum ada perangkat yang terikat",
"pleaseBindDeviceFirst": "Please bind a device first to manage", "pleaseBindDeviceFirst":
"Silakan ikat perangkat terlebih dahulu untuk dikelola",
"noMacAddress": "No MAC Address", "noMacAddress": "No MAC Address",
"licenseCode": "License Code", "licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind", "confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage": "confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?", "Apakah Anda yakin ingin melepas ikatan perangkat \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind", "confirmUnbindAction": "Confirm Unbind",
// Agent模块 - 主界面 // Agent模块 - 主界面
@ -815,9 +854,10 @@ const Map<String, String> idID = {
"loadMoreMessages": "Muat lebih banyak pesan...", "loadMoreMessages": "Muat lebih banyak pesan...",
"loadFailedClickRetry": "Gagal memuat, klik untuk mencoba lagi", "loadFailedClickRetry": "Gagal memuat, klik untuk mencoba lagi",
"swipeUpForMore": "Geser ke atas untuk lebih banyak", "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": "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模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -826,7 +866,7 @@ const Map<String, String> idID = {
"presetNews": "Today's news", // 今日新闻 "presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食 "presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐 "playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到 "navigationTo": "Tolong bantu saya menavigasi ke", // 导航到
"todayWeather": "How's the weather today?", // 今日天气 "todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻 "todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食 "nearbyFood": "What delicious food is nearby?", // 美食
@ -874,6 +914,13 @@ const Map<String, String> idID = {
'Kami ingin tahu alasan Anda melaporkan, Anda dapat menjelaskan masalah yang Anda hadapi.', 'Kami ingin tahu alasan Anda melaporkan, Anda dapat menjelaskan masalah yang Anda hadapi.',
'generatedByAi': 'Dihasilkan oleh AI', '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模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Berikut adalah beberapa musik yang direkomendasikan:', 'recommendedMusic': 'Berikut adalah beberapa musik yang direkomendasikan:',
'playList': 'Daftar Putar', 'playList': 'Daftar Putar',
@ -894,6 +941,30 @@ const Map<String, String> idID = {
"bicycling": "Bersepeda", "bicycling": "Bersepeda",
"tsransit": "Transportasi Umum", "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模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Memeriksa kondisi cuaca:', 'weatherQuery': 'Memeriksa kondisi cuaca:',
'highest': 'Tertinggi', 'highest': 'Tertinggi',
@ -947,8 +1018,8 @@ const Map<String, String> idID = {
"strongWind": "Angin kencang", "strongWind": "Angin kencang",
// 翻译模块 - 中间层 // 翻译模块 - 中间层
"pictureTranslation": "Picture Translation", "pictureTranslation": "Terjemahan Gambar",
"textTranslation": "Text Translation", "textTranslation": "Terjemahan Teks",
// 翻译模块 - 主页 // 翻译模块 - 主页
"translationHistory": "Riwayat Terjemahan", "translationHistory": "Riwayat Terjemahan",
@ -958,22 +1029,33 @@ const Map<String, String> idID = {
"phoneUser": "Pengguna Telepon", "phoneUser": "Pengguna Telepon",
"selectSourceLanguage": "Pilih bahasa sumber", "selectSourceLanguage": "Pilih bahasa sumber",
"selectTargetLanguage": "Pilih bahasa target", "selectTargetLanguage": "Pilih bahasa target",
"me": "Me", "me": "Saya",
"counterPart": "Counterpart", "counterPart": "Lawan Bicara",
"bluetoothCallStateError": "bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state", "Pastikan headset Bluetooth terhubung ke ponsel dan sedang dalam status panggilan",
"autoDetect": "Auto Detect", // 自动检测 "autoDetect": "Deteksi Otomatis", // 自动检测
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Deteksi bahasa gagal",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text", // 翻译模块 - 悬浮窗与权限
"textTooLong": "Text too long, max 5000 characters", '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", "noTranslationHistory": "Belum ada riwayat",
"historyRecords": "History Records", "historyRecords": "Catatan Riwayat",
"clearResults": "Clear Results", "clearResults": "Hapus Hasil",
"clearHistory": "Hapus Riwayat", "clearHistory": "Hapus Riwayat",
"clearHistoryConfirm": "clearHistoryConfirm":
"Apakah Anda yakin ingin menghapus semua riwayat terjemahan? Tindakan ini tidak dapat dibatalkan.", "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.", "Apakah Anda yakin ingin menghapus semua rekaman terjemahan untuk sesi ini? Tindakan ini tidak dapat dibatalkan.",
// 翻译模块 - 图片翻译 // 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source", "selectImageSource": "Pilih Sumber Gambar",
"imagePreview": "Image Preview", "imagePreview": "Pratinjau Gambar",
"translationResult": "Translation Result", "translationResult": "Hasil Terjemahan",
"recognitionResult": "Recognition Result", "recognitionResult": "Hasil Pengenalan",
"translatedImagePreview": "Translated Image Preview", "translatedImagePreview": "Pratinjau Gambar Terjemahan",
"translatedImageLoadFailed": "Failed to load translated image", "translatedImageLoadFailed": "Gagal memuat gambar terjemahan",
"pleaseSelectImage": "Please select an image", "pleaseSelectImage": "Silakan pilih gambar",
"imageLoadFailed": "Image load failed", "imageLoadFailed": "Gagal memuat gambar",
"imageQuality": "Image Quality", "imageQuality": "Kualitas Gambar",
"maxSize": "Max Size", "maxSize": "Ukuran Maks",
"close": "Close", "close": "Tutup",
"setImageQuality": "Set Image Quality", "setImageQuality": "Atur Kualitas Gambar",
"currentQuality": "Current quality: @value%", "currentQuality": "Kualitas saat ini: @value%",
"setMaxSize": "Set Max Size", "setMaxSize": "Atur Ukuran Maks",
"currentMaxSize": "Current: @pxpx", "currentMaxSize": "Saat ini: @pxpx",
"waitingForAction": "Waiting for action", "waitingForAction": "Menunggu tindakan",
"pleaseSelectImageToStart": "Please select an image to start", "pleaseSelectImageToStart": "Silakan pilih gambar untuk memulai",
"chooseImage": "Choose Image", "chooseImage": "Pilih Gambar",
"openingCamera": "Opening camera...", "openingCamera": "Membuka kamera...",
"openingPhotoAlbum": "Opening photo album...", "openingPhotoAlbum": "Membuka album foto...",
"cancelled": "Cancelled", "cancelled": "Dibatalkan",
"userCancelledSelection": "User cancelled selection", "userCancelledSelection": "Pengguna membatalkan pilihan",
"translatingImage": "Translating Image", "translatingImage": "Sedang menerjemahkan gambar",
"callingImageTranslateService": "Calling image translation service...", "callingImageTranslateService": "Memanggil layanan terjemahan gambar...",
"savingRecord": "Saving Record", "savingRecord": "Menyimpan catatan",
"savingTranslationResult": "Saving translation result...", "savingTranslationResult": "Menyimpan hasil terjemahan...",
"translationCompleted": "Translation Completed", "translationCompleted": "Terjemahan Selesai",
"allStepsCompleted": "All steps completed", "allStepsCompleted": "Semua langkah selesai",
"processingFailed": "Processing Failed", "processingFailed": "Pemrosesan Gagal",
"imageProcessingOrTranslationFailed": "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", "imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint": "imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry", "Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result", "emptyTranslationResult": "API terjemahan gambar mengembalikan hasil kosong",
"imageTranslationFailedTryLater": "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": "imageTranslationApiException":
"Image translation API exception. Check network and retry", "Pengecualian API terjemahan gambar. Periksa jaringan dan coba lagi",
"permissionRequired": "Permission Required", "permissionRequired": "Izin Diperlukan",
"cameraPermissionRequired": "Camera permission required to take photos", "cameraPermissionRequired": "Izin kamera diperlukan untuk mengambil foto",
"photoAlbumPermissionRequired": "photoAlbumPermissionRequired":
"Photo album permission required to pick images", "Izin album foto diperlukan untuk memilih gambar",
"translationDetails": "Translation Details", "translationDetails": "Detail Terjemahan",
"originalImage": "Original Image", "originalImage": "Original Image",
"sourceLanguage": "Source Language", "sourceLanguage": "Source Language",
"targetLanguage": "Target Language", "targetLanguage": "Target Language",
"translationTime": "Translation Time", "translationTime": "Waktu Terjemahan",
"shareInDevelopment": "Sharing feature under development", "shareInDevelopment": "Sharing feature under development",
// 翻译模块 - 录音文件 // 翻译模块 - 录音文件
@ -1127,16 +1209,16 @@ const Map<String, String> idID = {
// 权限模块 // 权限模块
'meetingStoragePermission': 'Storage', 'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation': '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': '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', 'getPermissionStatusFailed': 'Gagal mendapatkan status izin',
'communicationPermissions': 'Izin Komunikasi', 'communicationPermissions': 'Izin Komunikasi',
'bluetoothPermissions': 'Bluetooth Permissions', 'bluetoothPermissions': 'Izin Bluetooth',
'notificationPermissions': 'Notification Permissions', 'notificationPermissions': 'Izin Notifikasi',
'storagePermissions': 'Storage Permissions', 'storagePermissions': 'Izin Penyimpanan',
'microphonePermissions': 'Microphone Permissions', 'microphonePermissions': 'Izin Mikrofon',
'alarmPermissions': 'Alarm Permissions', 'alarmPermissions': 'Izin Alarm',
'calendarPermissions': 'Izin Kalender', 'calendarPermissions': 'Izin Kalender',
'locationPermissions': 'Izin Lokasi', 'locationPermissions': 'Izin Lokasi',
'phone': 'Telepon', 'phone': 'Telepon',
@ -1168,80 +1250,84 @@ const Map<String, String> idID = {
'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan izin telepon', 'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan izin telepon',
'smsPermissionDetailDesc': 'Fungsi mengirim SMS memerlukan izin SMS', 'smsPermissionDetailDesc': 'Fungsi mengirim SMS memerlukan izin SMS',
'alarmPermissionDetailDesc': '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': 'calendarWritePermissionDetailDesc':
'Membuat acara kalender memerlukan izin menulis kalender', 'Membuat acara kalender memerlukan izin menulis kalender',
'calendarFullAccessPermissionDetailDesc': 'calendarFullAccessPermissionDetailDesc':
'Mengelola acara kalender memerlukan izin penuh kalender', 'Mengelola acara kalender memerlukan izin penuh kalender',
'locationPermissionDetailDesc': 'locationPermissionDetailDesc':
'Mendapatkan informasi lokasi memerlukan izin lokasi', 'Mendapatkan informasi lokasi memerlukan izin lokasi',
'contactsPermissionDesc': 'Used for accessing contact information', 'contactsPermissionDesc': 'Digunakan untuk mengakses informasi kontak',
'contactsPermissionDetailDesc': 'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts', 'Fungsi panggilan telepon dan SMS memerlukan izin kontak untuk memilih kontak',
'bluetoothPermissionDesc': 'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices', 'Digunakan untuk menyambungkan dan mengelola perangkat Bluetooth',
'bluetoothPermissionDetailDesc': 'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', 'Menyambungkan ke headphone Bluetooth dan perangkat lain memerlukan izin Bluetooth',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', 'bluetoothScanPermissionDesc':
'Digunakan untuk memindai perangkat Bluetooth di sekitar',
'bluetoothScanPermissionDetailDesc': 'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', 'Memindai perangkat Bluetooth di sekitar memerlukan izin pemindaian Bluetooth',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', 'bluetoothConnectPermissionDesc':
'Digunakan untuk menyambungkan ke perangkat Bluetooth',
'bluetoothConnectPermissionDetailDesc': 'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission', 'Menyambungkan ke perangkat Bluetooth memerlukan izin koneksi Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages', 'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc': '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': 'appNeedsPermissionForFullFunction':
'Aplikasi memerlukan izin ini untuk fungsionalitas penuh', 'Aplikasi memerlukan izin ini untuk fungsionalitas penuh',
'permanentDenialText': 'permanentDenialText':
'Anda telah menolak izin {permission} secara permanen, silakan buka pengaturan aplikasi untuk mengaktifkannya', 'Anda telah menolak izin {permission} secara permanen, silakan buka pengaturan aplikasi untuk mengaktifkannya',
'goToSettings': 'Buka Pengaturan', 'goToSettings': 'Buka Pengaturan',
'bluetoothScan': 'Bluetooth Scan', 'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect', 'bluetoothConnect': 'Koneksi Bluetooth',
'bluetoothScanExplanation': 'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', 'Aplikasi memerlukan izin pemindaian Bluetooth untuk memindai perangkat Bluetooth di sekitar.',
'bluetoothConnectExplanation': 'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.', 'Aplikasi memerlukan izin koneksi Bluetooth untuk menyambungkan ke perangkat Bluetooth.',
'locationForBluetoothExplanation': 'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.', 'Aplikasi memerlukan izin lokasi untuk memindai perangkat Bluetooth.',
'bluetoothScanPermanentDenial': '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': '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': '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', 'notificationPermission': 'Notification',
'locationPermission': 'Location', 'locationPermission': 'Location',
'notificationPermissionExplanation': 'notificationPermissionExplanation':
'Notification permission is required to display music playback status.', 'Izin notifikasi diperlukan untuk menampilkan status pemutaran musik.',
'locationPermissionExplanation': 'locationPermissionExplanation':
'Location permission is required to get current location.', 'Izin lokasi diperlukan untuk mendapatkan lokasi saat ini.',
'notificationPermissionPermanentDenial': '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': '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', 'storagePermission': 'Storage',
'microphonePermissionExplanation': 'microphonePermissionExplanation':
'We need microphone permission to record audio content.', 'Kami memerlukan izin mikrofon untuk merekam konten audio.',
'storagePermissionExplanation': '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': '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': 'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', 'Izin penyimpanan telah ditolak secara permanen. Untuk terus menggunakan fitur ini, buka pengaturan aplikasi untuk mengaktifkan izin penyimpanan secara manual.',
'permissionUtilNeed': 'Need ', 'permissionUtilNeed': 'Perlu ',
'permissionUtilPermission': ' Permission', 'permissionUtilPermission': ' Izin',
'permissionUtilRestricted': ' Permission Restricted', 'permissionUtilRestricted': ' Izin Dibatasi',
'permissionUtilRestrictedMessage': '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', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigasi sedang berlangsung', '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.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.waiting': 'Menunggu untuk diputar',
'native.notification.music.previous': 'Sebelumnya', 'native.notification.music.previous': 'Sebelumnya',
'native.notification.music.next': 'Berikutnya', 'native.notification.music.next': 'Berikutnya',
@ -1319,17 +1405,18 @@ const Map<String, String> idID = {
'bleConnectionFailed': 'Koneksi BLE gagal', 'bleConnectionFailed': 'Koneksi BLE gagal',
'deviceAuthorizationFailedCheckCode': 'deviceAuthorizationFailedCheckCode':
'Otorisasi perangkat gagal, harap periksa kode otorisasi', 'Otorisasi perangkat gagal, harap periksa kode otorisasi',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideTitle':
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'Perlu Mengaktifkan Bluetooth Secara Manual', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Silakan ikuti langkah-langkah berikut:', // 请按照以下步骤操作:
'bluetoothGuideStep1': 'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 'Aktifkan Bluetooth: Pengaturan → Bluetooth → Nyalakan', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2': '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': 'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程 'Kembali ke aplikasi untuk melanjutkan proses pemasangan', // 返回应用继续配对流程
'bluetoothGuideTip': 'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'Tip: Anda juga dapat menekan lama ikon Bluetooth di Pusat Kontrol untuk cepat membuka pengaturan Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了 'iKnow': 'Saya Mengerti', // 我知道了
// 配对模块 - 绑定奖励 // 配对模块 - 绑定奖励
"firstBindRewardTitle": "Welcome Reward", "firstBindRewardTitle": "Welcome Reward",
@ -1370,13 +1457,14 @@ const Map<String, String> idID = {
"connectionFailed": "Koneksi Gagal", "connectionFailed": "Koneksi Gagal",
"retryConnection": "Coba Sambungkan Kembali", "retryConnection": "Coba Sambungkan Kembali",
"ota_updateNow": "Perbarui Sekarang", "ota_updateNow": "Perbarui Sekarang",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.", "otaVersionInfoFailed":
"Gagal mendapatkan info versi. Silakan coba lagi nanti.",
"otaDeviceInfoUnavailable": "otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.", "Tidak dapat memperoleh info perangkat. Periksa koneksi lalu coba lagi.",
"otaProductInfoUnavailable": "otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.", "Tidak dapat mengidentifikasi perangkat. Sambungkan kembali lalu coba lagi.",
"otaFirmwareVersionInvalid": "otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.", "Versi firmware tidak normal. Sambungkan kembali lalu coba lagi.",
"keepConnectedDontClose": "keepConnectedDontClose":
"Jaga agar perangkat tetap terhubung, jangan tutup aplikasi", "Jaga agar perangkat tetap terhubung, jangan tutup aplikasi",
"doNotDisconnect": "Jangan putuskan sambungan", "doNotDisconnect": "Jangan putuskan sambungan",
@ -1385,6 +1473,58 @@ const Map<String, String> idID = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Keluarkan kedua earbud, dan pastikan baterai keduanya di atas 20%", "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", // 暂无音乐 "noMusic": "Tidak Ada Musik", // 暂无音乐
"noPlayingMusic": "Tidak ada musik yang diputar", // 暂无播放音乐 "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', 'right': 'Hægri',
'checkConnectionStatusFailed': 'Athugun á tengingarstöðu mistókst', 'checkConnectionStatusFailed': 'Athugun á tengingarstöðu mistókst',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth ræsing mistókst: @error',
'needBluetoothAndLocationPermission': 'Bluetooth- og staðsetningarheimildir þarf til að leita að tækjum',
'permissionRequestFailedWithError': 'Heimildarbeiðni mistókst: @error',
'needPermission': 'Heimild nauðsynleg',
'blePermissionDialogContent': 'Forritið þarf Bluetooth- og staðsetningarheimildir til að leita að tækjum. Virkjaðu þær í Stillingum.',
'needEnableBluetooth': 'Virkja Bluetooth',
'enableBluetoothDialogContent': 'Virkjaðu Bluetooth til að leita að og tengja tæki.',
'bleScanFailedWithError': 'Leit mistókst: @error',
'bleConnectionSuccess': 'Tenging tókst',
'bleConnectedToDevice': 'Tengt við @device',
'bleConnectionFailedWithError': 'Tenging mistókst: @error',
'bleDisconnected': 'Aftengt',
'bleDeviceDisconnected': 'Tæki aftengt',
'bleDisconnectFailedWithError': 'Aftenging mistókst: @error',
'signalStrong': 'Sterkt merki',
'signalMedium': 'Miðlungs merki',
'signalWeak': 'Veikt merki',
'signalVeryWeak': 'Mjög veikt merki',
// 发现页 // 发现页
"searchAi": "Leita að gervigreindareiginleikum...", "searchAi": "Leita að gervigreindareiginleikum...",
"exploreSlogan": "Snjallheyrnartól, óendanlegir möguleikar", "exploreSlogan": "Snjallheyrnartól, óendanlegir möguleikar",
@ -883,6 +903,13 @@ const Map<String, String> isIS = {
'Við viljum vita hvers vegna þú ert að tilkynna, þú getur lýst vandamálinu sem þú lendir í.', 'Við viljum vita hvers vegna þú ert að tilkynna, þú getur lýst vandamálinu sem þú lendir í.',
'generatedByAi': 'Myndað af gervigreind', 'generatedByAi': 'Myndað af gervigreind',
// Agent模块 - 工具调用
'toolCall': 'Verkfærakall',
'noResult': 'Engin niðurstaða',
'noToolCallContentToCopy': 'Ekkert verkfærakall til að afrita',
'toolCallDetails': 'Upplýsingar um verkfærakall:',
'toolCallContentCopied': 'Verkfærakall afritað á klippiborð',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Hér eru nokkur lög sem mælt er með:', 'recommendedMusic': 'Hér eru nokkur lög sem mælt er með:',
'playList': 'Spilunarlisti', 'playList': 'Spilunarlisti',
@ -903,6 +930,28 @@ const Map<String, String> isIS = {
"bicycling": 'Hjólreiðar', "bicycling": 'Hjólreiðar',
"tsransit": 'Almenningssamgöngur', "tsransit": 'Almenningssamgöngur',
// Agent模块 - 导航选择
'selectNavigationApp': 'Veldu leiðsögn',
'amapMap': 'Amap',
'useAmapNavigation': 'Nota Amap leiðsögn',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Nota Baidu Maps leiðsögn',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Nota Google Maps leiðsögn',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Nota Apple Maps leiðsögn',
'builtInNavigation': 'Innbyggð leiðsögn',
'useBuiltInNavigation': 'Nota innbyggða leiðsögn',
'navigationStartFailed': 'Ekki tókst að hefja leiðsögn',
'cannotPlayMusicListRetryLater': 'Get ekki spilað tónlistalista, reyndu aftur síðar',
'cannotPlaySong': 'Get ekki spilað lag',
'openMapError': 'Villa við opnun korts',
'pleaseInstallAmapApp': 'Settu upp Amap appið fyrst',
'pleaseInstallBaiduMapApp': 'Settu upp Baidu Maps appið fyrst',
'appleMapStartFailed': 'Apple Maps ræstist ekki',
'appleMapUnavailable': 'Apple Maps er ekki tiltækt',
'openAppleMapError': 'Villa við opnun Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Fyrirspurn um veðurskilyrði:', 'weatherQuery': 'Fyrirspurn um veðurskilyrði:',
'highest': 'Hæst', 'highest': 'Hæst',
@ -975,8 +1024,18 @@ const Map<String, String> isIS = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Slökkva á fljótandi glugga',
'enableFloatingWindow': 'Virkja fljótandi glugga',
'permissionTip': 'Heimildaábending',
'micPermissionRequiredForRecording': 'Hljóðnemaheimild þarf til upptöku',
'deleteTranslationRecordError': 'Villa við eyðingu þýðingarfærslu: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Þýði",
"translate": "Þýða",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Vinsamlegast sláðu inn texta til að þýða",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1397,6 +1456,49 @@ const Map<String, String> isIS = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Taktu báðar heyrnartólin úr og gakktu úr skugga um að rafhlaðan á báðum sé yfir 20%", "Taktu báðar heyrnartólin úr og gakktu úr skugga um að rafhlaðan á báðum sé yfir 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Ný útgáfa @version fannst',
'otaConfirmUpdateNow': 'Uppfæra núna?',
'otaUpdate': 'Uppfæra',
'otaUpgradeSuccess': 'Uppfærsla tókst',
'otaUpgradeCompleteRepair': 'Hugbúnaðaruppfærsla lokið!\n\nTækið þarf að para aftur. Fara á pörunarsíðu?',
'otaPairLater': 'Para síðar',
'otaPairNow': 'Para núna',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Villa í BLE-athugun: @error',
'otaBleNotConnected': 'BLE-tæki ekki tengt',
'otaBleNeedConnection': 'Uppfærsla krefst BLE-tengingar\nGakktu úr skugga um að tækið sé tengt og reyndu aftur',
'otaDeviceInfoUnavailableTitle': 'Tækjaupplýsingar ekki tiltækar',
'otaCannotGetDeviceInfo': 'Get ekki sótt tækjaupplýsingar\nTengdu tækið aftur eða reyndu síðar',
'otaBleCheckFailed': 'BLE-athugun mistókst',
'otaCannotGetDeviceInfoCheckConnection': 'Get ekki sótt tækjaupplýsingar, athugaðu tengingu',
'otaCannotGetProductInfoWithName': 'Get ekki sótt vöruupplýsingar, tækjanafn: @deviceName',
'otaCannotGetBatteryInfo': 'Get ekki sótt rafhlöðuupplýsingar',
'otaLowBattery': 'Lítil rafhlaða',
'otaSingleBatteryLow': 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: rafhlaða yfir 20%\nNúverandi: @ear @battery%\nHladdu og reyndu aftur',
'otaDoubleBatteryLow': 'Rafhlaða of lítil fyrir uppfærslu\nKrafa: báðir heyrnartólar yfir 20%\nNúverandi: Vinstri @left%, Hægri @right%\nHladdu og reyndu aftur',
'otaBatteryCheckFailed': 'Rafhlöðuathugun mistókst',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': 'Uppfærslan inniheldur afkastabætingar og villuleiðréttingar.',
'otaGetLatestVersionFailed': 'Ekki tókst að sækja nýjustu útgáfu',
'otaGetVersionInfoFailed': 'Ekki tókst að sækja útgáfuupplýsingar',
'otaCheckingDeviceStatus': 'Athuga stöðu tækis...',
'otaDownloadFailedCheckNetwork': 'Niðurhal mistókst, athugaðu nettengingu',
'otaDownloadFailed': 'Niðurhal mistókst',
'otaPreparingConnection': 'Undirbý tengingu...',
'otaConnectingDevice': 'Tengi við tæki...',
'otaUpgradeStarted': 'OTA-uppfærsla hafin...',
'otaUpgradeProgressWithPercent': 'Framvinda uppfærslu: @percent%',
'otaUpgradeSuccessComplete': 'Uppfærsla lokið',
'otaUpgradeFailedWithCode': 'Uppfærsla mistókst, villukóði: @code',
'otaUpgradeFailedTitle': 'Uppfærsla mistókst',
'otaUpgradeFailedDesc': 'Athugaðu tengingu eða uppfærslupakka, villukóði: @code',
'otaDeviceDisconnected': 'Tæki aftengt',
'otaDeviceConnected': 'Tæki tengt',
// 音乐模块 // 音乐模块
"noMusic": "Engin tónlist", // 暂无音乐 "noMusic": "Engin tónlist", // 暂无音乐
"noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐 "noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> itIT = { const Map<String, String> itIT = {
// 通用 // 通用
'continue': 'Continua', 'continue': 'Continua',
'confirm': 'Conferma', 'confirm': 'Conferma',
@ -172,6 +171,29 @@ const Map<String, String> itIT = {
'checkConnectionStatusFailed': 'checkConnectionStatusFailed':
'Verifica dello stato della connessione fallita', 'Verifica dello stato della connessione fallita',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Inizializzazione Bluetooth fallita: @error',
'needBluetoothAndLocationPermission':
'Sono necessari i permessi Bluetooth e posizione per scansionare i dispositivi',
'permissionRequestFailedWithError': 'Richiesta permessi fallita: @error',
'needPermission': 'Permesso necessario',
'blePermissionDialogContent':
'Questa app necessita dei permessi Bluetooth e posizione per scansionare i dispositivi. Attivarli nelle Impostazioni.',
'needEnableBluetooth': 'Attivare il Bluetooth',
'enableBluetoothDialogContent':
'Attivare il Bluetooth per scansionare e connettere i dispositivi.',
'bleScanFailedWithError': 'Scansione fallita: @error',
'bleConnectionSuccess': 'Connessione riuscita',
'bleConnectedToDevice': 'Connesso a @device',
'bleConnectionFailedWithError': 'Connessione fallita: @error',
'bleDisconnected': 'Disconnesso',
'bleDeviceDisconnected': 'Dispositivo disconnesso',
'bleDisconnectFailedWithError': 'Disconnessione fallita: @error',
'signalStrong': 'Forte',
'signalMedium': 'Medio',
'signalWeak': 'Debole',
'signalVeryWeak': 'Molto debole',
// 发现页 // 发现页
"searchAi": "Cerca funzioni AI...", "searchAi": "Cerca funzioni AI...",
"exploreSlogan": "Auricolari intelligenti, possibilità infinite", "exploreSlogan": "Auricolari intelligenti, possibilità infinite",
@ -265,12 +287,16 @@ const Map<String, String> itIT = {
'paymentException': 'Eccezione di pagamento', 'paymentException': 'Eccezione di pagamento',
'paymentLaunchFailed': 'Avvio del pagamento non riuscito', 'paymentLaunchFailed': 'Avvio del pagamento non riuscito',
'paymentExceptionWithError': 'Eccezione di pagamento: @error', 'paymentExceptionWithError': 'Eccezione di pagamento: @error',
'paymentProcessingCheckLater': 'Il tuo ordine è in fase di elaborazione. Controlla più tardi.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Impossibile interrogare il risultato del pagamento: @error', 'Il tuo ordine è in fase di elaborazione. Controlla più tardi.',
'orderConfirmedQuotaRefreshed': 'Ordine confermato. La tua quota è stata aggiornata.', 'paymentResultQueryException':
'Impossibile interrogare il risultato del pagamento: @error',
'orderConfirmedQuotaRefreshed':
'Ordine confermato. La tua quota è stata aggiornata.',
'paymentCompletedConfirming': 'Pagamento completato. Conferma in corso…', 'paymentCompletedConfirming': 'Pagamento completato. Conferma in corso…',
'paymentCancelled': 'Pagamento annullato', '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', 'paypalOpenFailed': 'Impossibile aprire la pagina di pagamento PayPal',
'paymentTestTitle': 'Test di pagamento', 'paymentTestTitle': 'Test di pagamento',
'paymentTestOrderInfo': 'Informazioni ordine di prova', 'paymentTestOrderInfo': 'Informazioni ordine di prova',
@ -287,7 +313,8 @@ const Map<String, String> itIT = {
'errorInfoWithMessage': 'Errore: @message', 'errorInfoWithMessage': 'Errore: @message',
'retest': 'Ripeti il test', 'retest': 'Ripeti il test',
'paymentTestInstructionsTitle': 'Istruzioni', '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...', 'startingWechatPayment': 'Avvio di WeChat Pay...',
'startingAlipayPayment': 'Avvio di Alipay...', 'startingAlipayPayment': 'Avvio di Alipay...',
'wechatPaymentSuccess': 'Pagamento WeChat Pay riuscito!', 'wechatPaymentSuccess': 'Pagamento WeChat Pay riuscito!',
@ -502,16 +529,24 @@ const Map<String, String> itIT = {
'meetingRecordExitMessage': 'Scegli cosa fare prima di uscire', // 请选择离开后的操作 'meetingRecordExitMessage': 'Scegli cosa fare prima di uscire', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Termina e salva', // 结束录音并保存 'meetingRecordEndAndSave': 'Termina e salva', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Termina senza salvare', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Termina senza salvare', // 结束录音不保存
'meetingRecordContinueInBackground': 'Continua a registrare in background', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试 'Continua a registrare in background', // 后台继续录音
'meetingRecordStopFailed': 'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试 'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Registrazione in corso', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Registrazione in corso', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Registrazione in background. Tocca per tornare all\'app.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Registrazione in background. Tocca per tornare all\'app.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Mostra sopra altre app', // 悬浮窗权限 'overlayPermissionTitle': 'Mostra sopra altre app', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Per mostrare i risultati della traduzione durante le chiamate o la traduzione audio/video, ci serve l\'autorizzazione di overlay. In questo modo puoi vedere le traduzioni in tempo reale mentre usi altre app.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Per mostrare la barra fluttuante di registrazione (timer/pausa/riprendi) durante la registrazione, ci serve l\'autorizzazione di overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Per mostrare i risultati della traduzione durante le chiamate o la traduzione audio/video, ci serve l\'autorizzazione di overlay. In questo modo puoi vedere le traduzioni in tempo reale mentre usi altre app.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Impossibile aprire automaticamente le impostazioni di sistema. Apri Impostazioni e abilita manualmente l\'autorizzazione di overlay.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Per mostrare la barra fluttuante di registrazione (timer/pausa/riprendi) durante la registrazione, ci serve l\'autorizzazione di overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Impossibile aprire automaticamente le impostazioni di sistema. Apri Impostazioni e abilita manualmente l\'autorizzazione di overlay.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -546,7 +581,8 @@ const Map<String, String> itIT = {
'editTemplate': 'Modifica modello', 'editTemplate': 'Modifica modello',
'createTemplate': 'Crea modello', 'createTemplate': 'Crea modello',
'name': 'Nome', 'name': 'Nome',
'templateContentHint': 'Inserisci il contenuto del modello! Suggerimento: Clicca il pulsante IA qui sopra per generare rapidamente il contenuto del modello in base al nome e alla descrizione inseriti', 'templateContentHint':
'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', 'inputNameHint': 'Inserisci un nome',
'inputDescHint': 'Inserisci una descrizione', 'inputDescHint': 'Inserisci una descrizione',
'custom': 'Personalizzato', 'custom': 'Personalizzato',
@ -827,7 +863,8 @@ const Map<String, String> itIT = {
"swipeUpForMore": "Scorri verso l'alto per vedere di più", "swipeUpForMore": "Scorri verso l'alto per vedere di più",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': "Quando abilitato: l'IA non verrà interrotta dalla tua voce mentre parla e potrà gestire solo un turno di conversazione alla volta. Per iniziare un nuovo turno, basta pronunciare la parola di attivazione.", 'voice_interrupt_tip':
"Quando abilitato: l'IA non verrà interrotta dalla tua voce mentre parla e potrà gestire solo un turno di conversazione alla volta. Per iniziare un nuovo turno, basta pronunciare la parola di attivazione.",
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -884,6 +921,14 @@ const Map<String, String> itIT = {
'Vogliamo sapere perché stai segnalando, puoi descrivere il problema che hai riscontrato.', 'Vogliamo sapere perché stai segnalando, puoi descrivere il problema che hai riscontrato.',
'generatedByAi': 'Generato da AI', 'generatedByAi': 'Generato da AI',
// Agent模块 - 工具调用
'toolCall': 'Chiamata strumento',
'noResult': 'Nessun risultato',
'noToolCallContentToCopy':
'Nessun contenuto della chiamata strumento da copiare',
'toolCallDetails': 'Dettagli chiamata strumento:',
'toolCallContentCopied': 'Contenuto copiato negli appunti',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Ecco alcuni brani musicali consigliati:', 'recommendedMusic': 'Ecco alcuni brani musicali consigliati:',
'playList': 'Playlist', 'playList': 'Playlist',
@ -904,6 +949,29 @@ const Map<String, String> itIT = {
"bicycling": "In bicicletta", "bicycling": "In bicicletta",
"tsransit": "Trasporto pubblico", "tsransit": "Trasporto pubblico",
// Agent模块 - 导航选择
'selectNavigationApp': 'Seleziona app di navigazione',
'amapMap': 'Amap',
'useAmapNavigation': 'Naviga con Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Naviga con Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Naviga con Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Naviga con Apple Maps',
'builtInNavigation': 'Navigazione integrata',
'useBuiltInNavigation': 'Naviga con mappa integrata',
'navigationStartFailed': 'Avvio navigazione fallito',
'cannotPlayMusicListRetryLater':
'Impossibile riprodurre la playlist, riprovare piu tardi',
'cannotPlaySong': 'Impossibile riprodurre il brano',
'openMapError': 'Errore durante l apertura della mappa',
'pleaseInstallAmapApp': 'Installare prima l app Amap',
'pleaseInstallBaiduMapApp': 'Installare prima l app Baidu Maps',
'appleMapStartFailed': 'Avvio Apple Maps fallito',
'appleMapUnavailable': 'Apple Maps non disponibile',
'openAppleMapError': 'Errore durante l apertura di Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Interrogazione delle condizioni meteorologiche:', 'weatherQuery': 'Interrogazione delle condizioni meteorologiche:',
'highest': 'Massima', 'highest': 'Massima',
@ -976,8 +1044,20 @@ const Map<String, String> itIT = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disattiva finestra mobile',
'enableFloatingWindow': 'Attiva finestra mobile',
'permissionTip': 'Suggerimento permessi',
'micPermissionRequiredForRecording':
'Permesso microfono necessario per la registrazione',
'deleteTranslationRecordError':
'Errore durante l eliminazione del record di traduzione: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Traduzione in corso",
"translate": "Traduci",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Inserisci il testo da tradurre",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1258,9 +1338,12 @@ const Map<String, String> itIT = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigazione in corso', 'native.notification.navigation.title': 'Navigazione in corso',
'native.notification.navigation.keepRunning': "Navigazione in corso, mantieni l'app attiva", 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': "L'agente assistente vocale è in esecuzione", "Navigazione in corso, mantieni l'app attiva",
'native.notification.audioRecording.recording': "Registrazione audio in corso, tocca per tornare all'app", 'native.notification.bleAgent.running':
"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.waiting': 'In attesa di riproduzione',
'native.notification.music.previous': 'Indietro', 'native.notification.music.previous': 'Indietro',
'native.notification.music.next': 'Avanti', 'native.notification.music.next': 'Avanti',
@ -1408,6 +1491,59 @@ const Map<String, String> itIT = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Rimuovi entrambi gli auricolari e assicurati che la batteria di entrambi sia superiore al 20%", "Rimuovi entrambi gli auricolari e assicurati che la batteria di entrambi sia superiore al 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Nuova versione @version trovata',
'otaConfirmUpdateNow': 'Aggiornare ora?',
'otaUpdate': 'Aggiorna',
'otaUpgradeSuccess': 'Aggiornamento riuscito',
'otaUpgradeCompleteRepair':
'Aggiornamento completato!\n\nIl dispositivo deve essere riassociato. Andare alla pagina di associazione?',
'otaPairLater': 'Associa dopo',
'otaPairNow': 'Associa ora',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Errore nella verifica connessione BLE: @error',
'otaBleNotConnected': 'Dispositivo BLE non connesso',
'otaBleNeedConnection':
'Connessione BLE richiesta\nAssicurarsi che il dispositivo sia connesso e riprovare',
'otaDeviceInfoUnavailableTitle': 'Info dispositivo non disponibili',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Verifica connessione BLE fallita',
'otaCannotGetDeviceInfoCheckConnection':
'Impossibile ottenere info dispositivo, verificare la connessione',
'otaCannotGetProductInfoWithName':
'Impossibile ottenere info prodotto, nome dispositivo: @deviceName',
'otaCannotGetBatteryInfo': 'Impossibile ottenere info batteria valide',
'otaLowBattery': 'Batteria scarica',
'otaSingleBatteryLow':
'Batteria troppo scarica\nRequisito: superiore al 20%\nAttuale: @ear @battery%\nCaricare e riprovare',
'otaDoubleBatteryLow':
'Batteria troppo scarica\nRequisito: entrambi gli auricolari superiori al 20%\nAttuale: Sinistro @left%, Destro @right%\nCaricare e riprovare',
'otaBatteryCheckFailed': 'Verifica batteria fallita',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Questo aggiornamento include ottimizzazioni delle prestazioni e correzioni di bug.',
'otaGetLatestVersionFailed': 'Impossibile ottenere la versione piu recente',
'otaGetVersionInfoFailed': 'Impossibile ottenere le info di versione',
'otaCheckingDeviceStatus': 'Verifica stato dispositivo...',
'otaDownloadFailedCheckNetwork':
'Download fallito, verificare la connessione di rete',
'otaDownloadFailed': 'Download fallito',
'otaPreparingConnection': 'Preparazione connessione...',
'otaConnectingDevice': 'Connessione al dispositivo...',
'otaUpgradeStarted': 'Aggiornamento OTA avviato...',
'otaUpgradeProgressWithPercent': 'Progresso: @percent%',
'otaUpgradeSuccessComplete': 'Aggiornamento completato con successo',
'otaUpgradeFailedWithCode': 'Aggiornamento fallito, codice errore: @code',
'otaUpgradeFailedTitle': 'Aggiornamento fallito',
'otaUpgradeFailedDesc':
'Verificare connessione o pacchetto di aggiornamento, codice: @code',
'otaDeviceDisconnected': 'Dispositivo disconnesso',
'otaDeviceConnected': 'Dispositivo connesso',
// 音乐模块 // 音乐模块
"noMusic": "Nessuna musica", // 暂无音乐 "noMusic": "Nessuna musica", // 暂无音乐
"noPlayingMusic": "Nessuna musica in riproduzione", // 暂无播放音乐 "noPlayingMusic": "Nessuna musica in riproduzione", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> jaJP = { const Map<String, String> jaJP = {
// 通用 // 通用
'continue': '続ける', 'continue': '続ける',
'confirm': '確認', 'confirm': '確認',
@ -160,6 +159,27 @@ const Map<String, String> jaJP = {
'right': '右', 'right': '右',
'checkConnectionStatusFailed': '接続状態の確認に失敗', 'checkConnectionStatusFailed': '接続状態の確認に失敗',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetoothの初期化に失敗しました: @error',
'needBluetoothAndLocationPermission': 'デバイスをスキャンするにはBluetoothと位置情報の権限が必要です',
'permissionRequestFailedWithError': '権限リクエストが失敗しました: @error',
'needPermission': '権限が必要',
'blePermissionDialogContent':
'デバイスをスキャンするにはBluetoothと位置情報の権限が必要です。設定から有効にしてください。',
'needEnableBluetooth': 'Bluetoothを有効にしてください',
'enableBluetoothDialogContent': 'デバイスをスキャン・接続するにはBluetoothを有効にしてください。',
'bleScanFailedWithError': 'スキャン失敗: @error',
'bleConnectionSuccess': '接続成功',
'bleConnectedToDevice': '@device に接続しました',
'bleConnectionFailedWithError': '接続失敗: @error',
'bleDisconnected': '切断されました',
'bleDeviceDisconnected': 'デバイスが切断されました',
'bleDisconnectFailedWithError': '切断失敗: @error',
'signalStrong': '強い',
'signalMedium': '普通',
'signalWeak': '弱い',
'signalVeryWeak': '非常に弱い',
// 发现页 // 发现页
"searchAi": "AI機能を検索...", "searchAi": "AI機能を検索...",
"exploreSlogan": "スマートイヤホン、無限の可能性", "exploreSlogan": "スマートイヤホン、無限の可能性",
@ -274,7 +294,8 @@ const Map<String, String> jaJP = {
'errorInfoWithMessage': 'エラー:@message', 'errorInfoWithMessage': 'エラー:@message',
'retest': '再テスト', 'retest': '再テスト',
'paymentTestInstructionsTitle': '手順', 'paymentTestInstructionsTitle': '手順',
'paymentTestInstructionsContent': '1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認', 'paymentTestInstructionsContent':
'1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認',
'startingWechatPayment': 'WeChat Payを起動中...', 'startingWechatPayment': 'WeChat Payを起動中...',
'startingAlipayPayment': 'Alipayを起動中...', 'startingAlipayPayment': 'Alipayを起動中...',
'wechatPaymentSuccess': 'WeChat Pay支払い成功!', 'wechatPaymentSuccess': 'WeChat Pay支払い成功!',
@ -536,7 +557,8 @@ const Map<String, String> jaJP = {
'editTemplate': 'テンプレートを編集', 'editTemplate': 'テンプレートを編集',
'createTemplate': 'テンプレートを作成', 'createTemplate': 'テンプレートを作成',
'name': '名前', 'name': '名前',
'templateContentHint': 'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます', 'templateContentHint':
'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます',
'inputNameHint': '名前を入力してください', 'inputNameHint': '名前を入力してください',
'inputDescHint': '説明を入力してください', 'inputDescHint': '説明を入力してください',
'custom': 'カスタム', 'custom': 'カスタム',
@ -808,7 +830,8 @@ const Map<String, String> jaJP = {
"swipeUpForMore": "上にスワイプしてさらに表示", "swipeUpForMore": "上にスワイプしてさらに表示",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': '有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。', 'voice_interrupt_tip':
'有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -859,6 +882,13 @@ const Map<String, String> jaJP = {
'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。', 'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。',
'generatedByAi': 'AIによって生成', 'generatedByAi': 'AIによって生成',
// Agent模块 - 工具调用
'toolCall': 'ツール呼び出し',
'noResult': '結果なし',
'noToolCallContentToCopy': 'コピーするツール呼び出し内容がありません',
'toolCallDetails': 'ツール呼び出し詳細:',
'toolCallContentCopied': 'ツール呼び出し内容をクリップボードにコピーしました',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'おすすめの音楽をご紹介します:', 'recommendedMusic': 'おすすめの音楽をご紹介します:',
'playList': 'プレイリスト', 'playList': 'プレイリスト',
@ -879,6 +909,28 @@ const Map<String, String> jaJP = {
"bicycling": "自転車", "bicycling": "自転車",
"tsransit": "Transit", "tsransit": "Transit",
// Agent模块 - 导航选择
'selectNavigationApp': 'ナビアプリを選択',
'amapMap': 'Amap',
'useAmapNavigation': 'Amapでナビゲート',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Baidu Mapsでナビゲート',
'googleMap': 'Google マップ',
'useGoogleNavigation': 'Google マップでナビゲート',
'appleMap': 'Apple マップ',
'useAppleNavigation': 'Apple マップでナビゲート',
'builtInNavigation': '内蔵ナビ',
'useBuiltInNavigation': '内蔵地図でナビゲート',
'navigationStartFailed': 'ナビの開始に失敗しました',
'cannotPlayMusicListRetryLater': '音楽リストを再生できません。後でもう一度お試しください',
'cannotPlaySong': '曲を再生できません',
'openMapError': '地図を開く際にエラーが発生しました',
'pleaseInstallAmapApp': 'Amapアプリをインストールしてください',
'pleaseInstallBaiduMapApp': 'Baidu Mapsアプリをインストールしてください',
'appleMapStartFailed': 'Apple マップの起動に失敗しました',
'appleMapUnavailable': 'Apple マップが利用できません',
'openAppleMapError': 'Apple マップを開く際にエラーが発生しました',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': '天気照会:', 'weatherQuery': '天気照会:',
'highest': '最高', 'highest': '最高',
@ -940,10 +992,20 @@ const Map<String, String> jaJP = {
"Please make sure the Bluetooth headset is connected to the phone and in a call state", "Please make sure the Bluetooth headset is connected to the phone and in a call state",
"autoDetect": "Auto Detect", // 自动检测 "autoDetect": "Auto Detect", // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'フローティングウィンドウを無効化',
'enableFloatingWindow': 'フローティングウィンドウを有効化',
'permissionTip': '権限のヒント',
'micPermissionRequiredForRecording': '録音にはマイク権限が必要です',
'deleteTranslationRecordError': '翻訳記録の削除中にエラーが発生しました: @error',
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "翻訳中",
"translate": "翻訳",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "翻訳するテキストを入力してください",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1328,6 +1390,51 @@ const Map<String, String> jaJP = {
"updateContent": "更新内容", "updateContent": "更新内容",
"removeEarbudsEnsureBattery": "両方のイヤホンを取り出し、バッテリーレベルが20%以上であることを確認してください", "removeEarbudsEnsureBattery": "両方のイヤホンを取り出し、バッテリーレベルが20%以上であることを確認してください",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': '新バージョン @version が見つかりました',
'otaConfirmUpdateNow': '今すぐアップデートしますか?',
'otaUpdate': 'アップデート',
'otaUpgradeSuccess': 'アップグレード成功',
'otaUpgradeCompleteRepair':
'ファームウェアのアップグレードが完了しました!\n\nデバイスを再ペアリングする必要があります。ペアリングページに移動しますか?',
'otaPairLater': '後でペアリング',
'otaPairNow': '今すぐペアリング',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'BLE接続状態の確認中にエラーが発生しました:@error',
'otaBleNotConnected': 'BLEデバイス未接続',
'otaBleNeedConnection':
'ファームウェアのアップグレードにはBLEデバイスの接続が必要です\nデバイスが正しく接続されていることを確認してください',
'otaDeviceInfoUnavailableTitle': 'デバイス情報取得不可',
'otaCannotGetDeviceInfo': 'デバイス情報を取得できません\nデバイスを再接続するか、後でもう一度お試しください',
'otaBleCheckFailed': 'BLE接続確認失敗',
'otaCannotGetDeviceInfoCheckConnection': 'デバイス情報を取得できません。接続を確認してください',
'otaCannotGetProductInfoWithName': '製品情報を取得できません。デバイス名: @deviceName',
'otaCannotGetBatteryInfo': '有効なバッテリー情報を取得できません',
'otaLowBattery': 'バッテリー不足',
'otaSingleBatteryLow':
'バッテリー残量が不足しています\n要件:バッテリー残量が20%以上必要です\n現在:@ear @battery%\n充電してから再試行してください',
'otaDoubleBatteryLow':
'バッテリー残量が不足しています\n要件:左右とも20%以上必要です\n現在:左 @left%、右 @right%\n充電してから再試行してください',
'otaBatteryCheckFailed': 'バッテリー確認失敗',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc': '本アップデートにはパフォーマンスの最適化とバグ修正が含まれています。',
'otaGetLatestVersionFailed': '最新バージョン情報の取得に失敗しました',
'otaGetVersionInfoFailed': 'バージョン情報の取得に失敗しました',
'otaCheckingDeviceStatus': 'デバイスの状態を確認中...',
'otaDownloadFailedCheckNetwork': 'ダウンロード失敗。ネットワーク接続を確認してください',
'otaDownloadFailed': 'ダウンロード失敗',
'otaPreparingConnection': 'デバイス接続を準備中...',
'otaConnectingDevice': 'デバイスに接続中...',
'otaUpgradeStarted': 'OTAアップグレード開始...',
'otaUpgradeProgressWithPercent': 'アップグレード進捗: @percent%',
'otaUpgradeSuccessComplete': 'アップグレードが完了しました',
'otaUpgradeFailedWithCode': 'アップグレード失敗、エラーコード: @code',
'otaUpgradeFailedTitle': 'アップグレード失敗',
'otaUpgradeFailedDesc': 'デバイス接続またはアップデートパッケージを確認してください。エラーコード: @code',
'otaDeviceDisconnected': 'デバイスが切断されました',
'otaDeviceConnected': 'デバイスが接続されました',
// 音乐模块 // 音乐模块
"noMusic": "音楽がありません", // 暂无音乐 "noMusic": "音楽がありません", // 暂无音乐
"noPlayingMusic": "再生中の音楽がありません", // 暂无播放音乐 "noPlayingMusic": "再生中の音楽がありません", // 暂无播放音乐

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 = { const Map<String, String> ltLT = {
// 通用 // 通用
'continue': 'Tęsti', 'continue': 'Tęsti',
'confirm': 'Patvirtinti', 'confirm': 'Patvirtinti',
@ -169,6 +168,29 @@ const Map<String, String> ltLT = {
'right': 'Dešinė', 'right': 'Dešinė',
'checkConnectionStatusFailed': 'Nepavyko patikrinti ryšio būsenos', 'checkConnectionStatusFailed': 'Nepavyko patikrinti ryšio būsenos',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Ieškoti AI funkcijų...", "searchAi": "Ieškoti AI funkcijų...",
"exploreSlogan": "Išmaniosios ausinės, beribės galimybės", "exploreSlogan": "Išmaniosios ausinės, beribės galimybės",
@ -263,12 +285,16 @@ const Map<String, String> ltLT = {
'paymentException': 'Mokėjimo išimtis', 'paymentException': 'Mokėjimo išimtis',
'paymentLaunchFailed': 'Mokėjimo paleidimas nepavyko', 'paymentLaunchFailed': 'Mokėjimo paleidimas nepavyko',
'paymentExceptionWithError': 'Mokėjimo išimtis: @error', 'paymentExceptionWithError': 'Mokėjimo išimtis: @error',
'paymentProcessingCheckLater': 'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Nepavyko užklausti mokėjimo rezultato: @error', 'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.',
'orderConfirmedQuotaRefreshed': 'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.', 'paymentResultQueryException':
'Nepavyko užklausti mokėjimo rezultato: @error',
'orderConfirmedQuotaRefreshed':
'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.',
'paymentCompletedConfirming': 'Mokėjimas baigtas. Patvirtinama…', 'paymentCompletedConfirming': 'Mokėjimas baigtas. Patvirtinama…',
'paymentCancelled': 'Mokėjimas atšauktas', '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', 'paypalOpenFailed': 'Nepavyko atidaryti PayPal mokėjimo puslapio',
'paymentTestTitle': 'Mokėjimo testas', 'paymentTestTitle': 'Mokėjimo testas',
'paymentTestOrderInfo': 'Testinio užsakymo informacija', 'paymentTestOrderInfo': 'Testinio užsakymo informacija',
@ -285,7 +311,8 @@ const Map<String, String> ltLT = {
'errorInfoWithMessage': 'Klaida: @message', 'errorInfoWithMessage': 'Klaida: @message',
'retest': 'Pakartotinis testas', 'retest': 'Pakartotinis testas',
'paymentTestInstructionsTitle': 'Instrukcijos', '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...', 'startingWechatPayment': 'Paleidžiamas WeChat Pay...',
'startingAlipayPayment': 'Paleidžiamas Alipay...', 'startingAlipayPayment': 'Paleidžiamas Alipay...',
'wechatPaymentSuccess': 'WeChat Pay sėkmingas!', 'wechatPaymentSuccess': 'WeChat Pay sėkmingas!',
@ -496,19 +523,27 @@ const Map<String, String> ltLT = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Išeiti iš įrašymo', // 退出录音 'meetingRecordExitTitle': 'Išeiti iš įrašymo', // 退出录音
'meetingRecordExitMessage': 'Pasirinkite, ką daryti prieš išeinant', // 请选择离开后的操作 'meetingRecordExitMessage':
'Pasirinkite, ką daryti prieš išeinant', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Baigti ir išsaugoti', // 结束录音并保存 'meetingRecordEndAndSave': 'Baigti ir išsaugoti', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Baigti neišsaugojus', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Baigti neišsaugojus', // 结束录音不保存
'meetingRecordContinueInBackground': 'Tęsti įrašymą fone', // 后台继续录音 'meetingRecordContinueInBackground': 'Tęsti įrašymą fone', // 后台继续录音
'meetingRecordStopTimeout': 'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试 'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试 'meetingRecordStopFailed':
'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Vyksta įrašymas', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Vyksta įrašymas', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Įrašoma fone. Palieskite, kad grįžtumėte į programą.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Įrašoma fone. Palieskite, kad grįžtumėte į programą.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Rodyti virš kitų programų', // 悬浮窗权限 'overlayPermissionTitle': 'Rodyti virš kitų programų', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Kad galėtume rodyti vertimo rezultatus skambučių arba garso/vaizdo vertimo metu, mums reikia leidimo rodyti virš kitų programų. Tai leis matyti vertimus realiuoju laiku naudojant kitas programas.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Kad įrašymo metu galėtume rodyti plaukiojančią įrašymo juostą (laikmatis/pristabdyti/tęsti), mums reikia leidimo rodyti virš kitų programų.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Kad galėtume rodyti vertimo rezultatus skambučių arba garso/vaizdo vertimo metu, mums reikia leidimo rodyti virš kitų programų. Tai leis matyti vertimus realiuoju laiku naudojant kitas programas.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Nepavyko automatiškai atidaryti sistemos nustatymų. Atidarykite Nustatymus ir rankiniu būdu įjunkite leidimą rodyti virš kitų programų.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Kad įrašymo metu galėtume rodyti plaukiojančią įrašymo juostą (laikmatis/pristabdyti/tęsti), mums reikia leidimo rodyti virš kitų programų.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nepavyko automatiškai atidaryti sistemos nustatymų. Atidarykite Nustatymus ir rankiniu būdu įjunkite leidimą rodyti virš kitų programų.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -543,7 +578,8 @@ const Map<String, String> ltLT = {
'editTemplate': 'Redaguoti šabloną', 'editTemplate': 'Redaguoti šabloną',
'createTemplate': 'Sukurti šabloną', 'createTemplate': 'Sukurti šabloną',
'name': 'Pavadinimas', 'name': 'Pavadinimas',
'templateContentHint': 'Prašome įvesti šablono turinį! Patarimas: Spustelėkite AI mygtuką viršuje, kad greitai sugeneruotumėte šablono turinį pagal įvestą pavadinimą ir aprašymą', 'templateContentHint':
'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ą', 'inputNameHint': 'Prašome įvesti pavadinimą',
'inputDescHint': 'Prašome įvesti aprašymą', 'inputDescHint': 'Prašome įvesti aprašymą',
'custom': 'Pasirinktinis', 'custom': 'Pasirinktinis',
@ -822,7 +858,8 @@ const Map<String, String> ltLT = {
"swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau", "swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Kai įjungta: AI nebus pertraukiamas jūsų balsu kalbėdamas ir gali apdoroti tik vieną pokalbio raundą vienu metu. Norėdami pradėti naują raundą, tiesiog pasakykite pažadinimo žodį.', 'voice_interrupt_tip':
'Kai įjungta: AI nebus pertraukiamas jūsų balsu kalbėdamas ir gali apdoroti tik vieną pokalbio raundą vienu metu. Norėdami pradėti naują raundą, tiesiog pasakykite pažadinimo žodį.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -878,6 +915,13 @@ const Map<String, String> ltLT = {
'Norėtume sužinoti, kodėl pranešate, galite aprašyti problemą, su kuria susidūrėte.', 'Norėtume sužinoti, kodėl pranešate, galite aprašyti problemą, su kuria susidūrėte.',
'generatedByAi': 'Sugeneruota AI', 'generatedByAi': 'Sugeneruota AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Štai keletas rekomenduojamų dainų:', 'recommendedMusic': 'Štai keletas rekomenduojamų dainų:',
'playList': 'Grojaraštis', 'playList': 'Grojaraštis',
@ -898,6 +942,29 @@ const Map<String, String> ltLT = {
"bicycling": "Važiavimas dviračiu", "bicycling": "Važiavimas dviračiu",
"tsransit": "Viešasis transportas", "tsransit": "Viešasis transportas",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Užklausa apie oro sąlygas:', 'weatherQuery': 'Užklausa apie oro sąlygas:',
'highest': 'Aukščiausia', 'highest': 'Aukščiausia',
@ -970,8 +1037,19 @@ const Map<String, String> ltLT = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Įveskite tekstą, kurį norite išversti",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1247,9 +1325,11 @@ const Map<String, String> ltLT = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija vyksta', 'native.notification.navigation.title': 'Navigacija vyksta',
'native.notification.navigation.keepRunning': 'Navigacija, laikykite programą atidarytą', 'native.notification.navigation.keepRunning':
'Navigacija, laikykite programą atidarytą',
'native.notification.bleAgent.running': 'Balso asistento agentas veikia', '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.waiting': 'Laukiama grojimo',
'native.notification.music.previous': 'Ankstesnis', 'native.notification.music.previous': 'Ankstesnis',
'native.notification.music.next': 'Kitas', 'native.notification.music.next': 'Kitas',
@ -1397,6 +1477,59 @@ const Map<String, String> ltLT = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%", "Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Nėra muzikos", // 暂无音乐 "noMusic": "Nėra muzikos", // 暂无音乐
"noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐 "noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐

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

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

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

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

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

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

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

@ -1,5 +1,4 @@
const Map<String, String> nlNL = { const Map<String, String> nlNL = {
// 通用 // 通用
'continue': 'Doorgaan', 'continue': 'Doorgaan',
'confirm': 'Bevestigen', 'confirm': 'Bevestigen',
@ -169,6 +168,29 @@ const Map<String, String> nlNL = {
'right': 'Rechts', 'right': 'Rechts',
'checkConnectionStatusFailed': 'Controle van verbindingsstatus mislukt', 'checkConnectionStatusFailed': 'Controle van verbindingsstatus mislukt',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth-initialisatie mislukt: @error',
'needBluetoothAndLocationPermission':
'Bluetooth- en locatiemachtigingen zijn vereist om apparaten te scannen',
'permissionRequestFailedWithError': 'Machtigingsverzoek mislukt: @error',
'needPermission': 'Machtiging vereist',
'blePermissionDialogContent':
'Deze app heeft Bluetooth- en locatiemachtigingen nodig om apparaten te scannen. Schakel ze in via Instellingen.',
'needEnableBluetooth': 'Bluetooth inschakelen',
'enableBluetoothDialogContent':
'Schakel Bluetooth in om apparaten te scannen en te verbinden.',
'bleScanFailedWithError': 'Scan mislukt: @error',
'bleConnectionSuccess': 'Verbinding geslaagd',
'bleConnectedToDevice': 'Verbonden met @device',
'bleConnectionFailedWithError': 'Verbinding mislukt: @error',
'bleDisconnected': 'Verbinding verbroken',
'bleDeviceDisconnected': 'Apparaat losgekoppeld',
'bleDisconnectFailedWithError': 'Loskoppelen mislukt: @error',
'signalStrong': 'Sterk',
'signalMedium': 'Gemiddeld',
'signalWeak': 'Zwak',
'signalVeryWeak': 'Zeer zwak',
// 发现页 // 发现页
"searchAi": "Zoek AI-functies...", "searchAi": "Zoek AI-functies...",
"exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden", "exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden",
@ -263,12 +285,15 @@ const Map<String, String> nlNL = {
'paymentException': 'Betalingsuitzondering', 'paymentException': 'Betalingsuitzondering',
'paymentLaunchFailed': 'Kan betaling niet starten', 'paymentLaunchFailed': 'Kan betaling niet starten',
'paymentExceptionWithError': 'Betalingsuitzondering: @error', 'paymentExceptionWithError': 'Betalingsuitzondering: @error',
'paymentProcessingCheckLater': 'Uw bestelling wordt verwerkt. Controleer het later.', 'paymentProcessingCheckLater':
'Uw bestelling wordt verwerkt. Controleer het later.',
'paymentResultQueryException': 'Kan betalingsresultaat niet opvragen: @error', 'paymentResultQueryException': 'Kan betalingsresultaat niet opvragen: @error',
'orderConfirmedQuotaRefreshed': 'Bestelling bevestigd. Uw tegoed is bijgewerkt.', 'orderConfirmedQuotaRefreshed':
'Bestelling bevestigd. Uw tegoed is bijgewerkt.',
'paymentCompletedConfirming': 'Betaling voltooid. Bevestigen…', 'paymentCompletedConfirming': 'Betaling voltooid. Bevestigen…',
'paymentCancelled': 'Betaling geannuleerd', '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', 'paypalOpenFailed': 'Kan PayPal-betaalpagina niet openen',
'paymentTestTitle': 'Betalingstest', 'paymentTestTitle': 'Betalingstest',
'paymentTestOrderInfo': 'Testbestelgegevens', 'paymentTestOrderInfo': 'Testbestelgegevens',
@ -285,7 +310,8 @@ const Map<String, String> nlNL = {
'errorInfoWithMessage': 'Fout: @message', 'errorInfoWithMessage': 'Fout: @message',
'retest': 'Opnieuw testen', 'retest': 'Opnieuw testen',
'paymentTestInstructionsTitle': 'Instructies', '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...', 'startingWechatPayment': 'WeChat Pay starten...',
'startingAlipayPayment': 'Alipay starten...', 'startingAlipayPayment': 'Alipay starten...',
'wechatPaymentSuccess': 'WeChat Pay-betaling geslaagd!', 'wechatPaymentSuccess': 'WeChat Pay-betaling geslaagd!',
@ -496,19 +522,28 @@ const Map<String, String> nlNL = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Opname verlaten', // 退出录音 'meetingRecordExitTitle': 'Opname verlaten', // 退出录音
'meetingRecordExitMessage': 'Kies wat je wilt doen voordat je vertrekt', // 请选择离开后的操作 'meetingRecordExitMessage':
'Kies wat je wilt doen voordat je vertrekt', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Beëindigen en opslaan', // 结束录音并保存 'meetingRecordEndAndSave': 'Beëindigen en opslaan', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Beëindigen zonder op te slaan', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Beëindigen zonder op te slaan', // 结束录音不保存
'meetingRecordContinueInBackground': 'Opname op de achtergrond voortzetten', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'Time-out bij het stoppen van de opname. Probeer het opnieuw.', // 结束录音超时,请重试 'Opname op de achtergrond voortzetten', // 后台继续录音
'meetingRecordStopFailed': 'Kan de opname niet stoppen. Probeer het opnieuw.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Kan de opname niet opslaan. Probeer het opnieuw.', // 保存录音失败,请重试 'Time-out bij het stoppen van de opname. Probeer het opnieuw.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Kan de opname niet stoppen. Probeer het opnieuw.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Kan de opname niet opslaan. Probeer het opnieuw.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Opname bezig', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Opname bezig', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Opname op de achtergrond. Tik om terug te keren naar de app.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Opname op de achtergrond. Tik om terug te keren naar de app.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Weergeven over andere apps', // 悬浮窗权限 'overlayPermissionTitle': 'Weergeven over andere apps', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Om vertaalresultaten tijdens gesprekken of audio-/videotranslatie te tonen, hebben we overlay-machtiging nodig. Zo kun je realtime vertalingen zien terwijl je andere apps gebruikt.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Om tijdens het opnemen de zwevende opnamebalk (timer/pauze/hervatten) te tonen, hebben we overlay-machtiging nodig.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Om vertaalresultaten tijdens gesprekken of audio-/videotranslatie te tonen, hebben we overlay-machtiging nodig. Zo kun je realtime vertalingen zien terwijl je andere apps gebruikt.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Kan de systeeminstellingen niet automatisch openen. Open Instellingen en schakel de overlay-machtiging handmatig in.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Om tijdens het opnemen de zwevende opnamebalk (timer/pauze/hervatten) te tonen, hebben we overlay-machtiging nodig.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Kan de systeeminstellingen niet automatisch openen. Open Instellingen en schakel de overlay-machtiging handmatig in.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -543,7 +578,8 @@ const Map<String, String> nlNL = {
'editTemplate': 'Sjabloon bewerken', 'editTemplate': 'Sjabloon bewerken',
'createTemplate': 'Sjabloon aanmaken', 'createTemplate': 'Sjabloon aanmaken',
'name': 'Naam', 'name': 'Naam',
'templateContentHint': 'Voer de inhoud van het sjabloon in! Tip: Klik op de AI-knop hierboven om snel sjablooninhoud te genereren op basis van de naam en beschrijving die u hebt ingevoerd', 'templateContentHint':
'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', 'inputNameHint': 'Voer een naam in',
'inputDescHint': 'Voer een beschrijving in', 'inputDescHint': 'Voer een beschrijving in',
'custom': 'Aangepast', 'custom': 'Aangepast',
@ -820,7 +856,8 @@ const Map<String, String> nlNL = {
"swipeUpForMore": "Veeg omhoog voor meer", "swipeUpForMore": "Veeg omhoog voor meer",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Wanneer ingeschakeld: De AI wordt niet onderbroken door uw stem terwijl deze spreekt en kan slechts één gespreksronde tegelijk verwerken. Om een nieuwe ronde te starten, zeg gewoon het activeringswoord.', 'voice_interrupt_tip':
'Wanneer ingeschakeld: De AI wordt niet onderbroken door uw stem terwijl deze spreekt en kan slechts één gespreksronde tegelijk verwerken. Om een nieuwe ronde te starten, zeg gewoon het activeringswoord.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -877,6 +914,14 @@ const Map<String, String> nlNL = {
'We willen weten waarom u rapporteert, u kunt het probleem dat u tegenkwam beschrijven.', 'We willen weten waarom u rapporteert, u kunt het probleem dat u tegenkwam beschrijven.',
'generatedByAi': 'Gegenereerd door AI', 'generatedByAi': 'Gegenereerd door AI',
// Agent模块 - 工具调用
'toolCall': 'Gereedschapsoproep',
'noResult': 'Geen resultaat',
'noToolCallContentToCopy':
'Geen inhoud van gereedschapsoproep om te kopieren',
'toolCallDetails': 'Details gereedschapsoproep:',
'toolCallContentCopied': 'Inhoud gekopieerd naar klembord',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Hier zijn enkele aanbevolen muziekstukken:', 'recommendedMusic': 'Hier zijn enkele aanbevolen muziekstukken:',
'playList': 'Afspeellijst', 'playList': 'Afspeellijst',
@ -897,6 +942,29 @@ const Map<String, String> nlNL = {
"bicycling": 'Fietsen', "bicycling": 'Fietsen',
"tsransit": 'Openbaar vervoer', "tsransit": 'Openbaar vervoer',
// Agent模块 - 导航选择
'selectNavigationApp': 'Navigatie-app selecteren',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigeren met Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigeren met Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigeren met Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigeren met Apple Maps',
'builtInNavigation': 'Ingebouwde navigatie',
'useBuiltInNavigation': 'Navigeren met ingebouwde kaart',
'navigationStartFailed': 'Navigatie starten mislukt',
'cannotPlayMusicListRetryLater':
'Kan muzieklijst niet afspelen, probeer het later opnieuw',
'cannotPlaySong': 'Kan nummer niet afspelen',
'openMapError': 'Fout bij openen van kaart',
'pleaseInstallAmapApp': 'Installeer eerst de Amap-app',
'pleaseInstallBaiduMapApp': 'Installeer eerst de Baidu Maps-app',
'appleMapStartFailed': 'Apple Maps starten mislukt',
'appleMapUnavailable': 'Apple Maps niet beschikbaar',
'openAppleMapError': 'Fout bij openen van Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Weersomstandigheden opvragen:', 'weatherQuery': 'Weersomstandigheden opvragen:',
'highest': 'Hoogste', 'highest': 'Hoogste',
@ -968,8 +1036,19 @@ const Map<String, String> nlNL = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Zwevend venster uitschakelen',
'enableFloatingWindow': 'Zwevend venster inschakelen',
'permissionTip': 'Machtigingstip',
'micPermissionRequiredForRecording':
'Microfoonmachtiging vereist voor opname',
'deleteTranslationRecordError': 'Fout bij verwijderen vertaalrecord: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Vertalen",
"translate": "Vertaal",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Voer de tekst in om te vertalen",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1251,7 +1330,8 @@ const Map<String, String> nlNL = {
'native.notification.navigation.title': 'Navigatie actief', 'native.notification.navigation.title': 'Navigatie actief',
'native.notification.navigation.keepRunning': 'Navigeren, houd de app actief', 'native.notification.navigation.keepRunning': 'Navigeren, houd de app actief',
'native.notification.bleAgent.running': 'Spraakassistent is actief', 'native.notification.bleAgent.running': 'Spraakassistent is actief',
'native.notification.audioRecording.recording': 'Audio opnemen, tik om terug te keren naar de app', 'native.notification.audioRecording.recording':
'Audio opnemen, tik om terug te keren naar de app',
'native.notification.music.waiting': 'Wachten op afspelen', 'native.notification.music.waiting': 'Wachten op afspelen',
'native.notification.music.previous': 'Vorige', 'native.notification.music.previous': 'Vorige',
'native.notification.music.next': 'Volgende', 'native.notification.music.next': 'Volgende',
@ -1397,6 +1477,59 @@ const Map<String, String> nlNL = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Haal beide oortjes eruit en zorg ervoor dat de batterij van beide meer dan 20% is", "Haal beide oortjes eruit en zorg ervoor dat de batterij van beide meer dan 20% is",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Nieuwe versie @version gevonden',
'otaConfirmUpdateNow': 'Nu bijwerken?',
'otaUpdate': 'Bijwerken',
'otaUpgradeSuccess': 'Upgrade geslaagd',
'otaUpgradeCompleteRepair':
'Firmware-update voltooid!\n\nHet apparaat moet opnieuw worden gekoppeld. Naar koppelingspagina?',
'otaPairLater': 'Later koppelen',
'otaPairNow': 'Nu koppelen',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Fout bij controle BLE-verbinding: @error',
'otaBleNotConnected': 'BLE-apparaat niet verbonden',
'otaBleNeedConnection':
'BLE-verbinding vereist\nZorg dat het apparaat verbonden is en probeer opnieuw',
'otaDeviceInfoUnavailableTitle': 'Apparaatinfo niet beschikbaar',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE-verbindingscontrole mislukt',
'otaCannotGetDeviceInfoCheckConnection':
'Kan apparaatinfo niet ophalen, controleer de verbinding',
'otaCannotGetProductInfoWithName':
'Kan productinfo niet ophalen, apparaatnaam: @deviceName',
'otaCannotGetBatteryInfo': 'Kan geen geldige batterij-info ophalen',
'otaLowBattery': 'Batterij bijna leeg',
'otaSingleBatteryLow':
'Batterij te laag\nVereiste: boven 20%\nHuidig: @ear @battery%\nLaad op en probeer opnieuw',
'otaDoubleBatteryLow':
'Batterij te laag\nVereiste: beide oordopjes boven 20%\nHuidig: Links @left%, Rechts @right%\nLaad op en probeer opnieuw',
'otaBatteryCheckFailed': 'Batterijcontrole mislukt',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Deze update bevat prestatieverbeteringen en bugfixes.',
'otaGetLatestVersionFailed': 'Kan nieuwste versie niet ophalen',
'otaGetVersionInfoFailed': 'Kan versie-info niet ophalen',
'otaCheckingDeviceStatus': 'Apparaatstatus controleren...',
'otaDownloadFailedCheckNetwork':
'Download mislukt, controleer de netwerkverbinding',
'otaDownloadFailed': 'Download mislukt',
'otaPreparingConnection': 'Verbinding voorbereiden...',
'otaConnectingDevice': 'Verbinden met apparaat...',
'otaUpgradeStarted': 'OTA-upgrade gestart...',
'otaUpgradeProgressWithPercent': 'Voortgang: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade succesvol voltooid',
'otaUpgradeFailedWithCode': 'Upgrade mislukt, foutcode: @code',
'otaUpgradeFailedTitle': 'Upgrade mislukt',
'otaUpgradeFailedDesc':
'Controleer de verbinding of het updatepakket, foutcode: @code',
'otaDeviceDisconnected': 'Apparaat losgekoppeld',
'otaDeviceConnected': 'Apparaat verbonden',
// 音乐模块 // 音乐模块
"noMusic": "Geen muziek", // 暂无音乐 "noMusic": "Geen muziek", // 暂无音乐
"noPlayingMusic": "Geen muziek aan het afspelen", // 暂无播放音乐 "noPlayingMusic": "Geen muziek aan het afspelen", // 暂无播放音乐

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

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

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

@ -1,5 +1,4 @@
const Map<String, String> ptPT = { const Map<String, String> ptPT = {
// 通用 // 通用
'continue': 'Continuar', 'continue': 'Continuar',
'confirm': 'Confirmar', 'confirm': 'Confirmar',
@ -172,6 +171,30 @@ const Map<String, String> ptPT = {
'right': 'Direita', 'right': 'Direita',
'checkConnectionStatusFailed': 'Falha ao verificar o estado da conexão', 'checkConnectionStatusFailed': 'Falha ao verificar o estado da conexão',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Falha na inicializacao do Bluetooth: @error',
'needBluetoothAndLocationPermission':
'Sao necessarias permissoes de Bluetooth e localizacao para procurar dispositivos',
'permissionRequestFailedWithError':
'Falha na solicitacao de permissao: @error',
'needPermission': 'Permissao necessaria',
'blePermissionDialogContent':
'Este aplicativo precisa de permissoes de Bluetooth e localizacao para procurar dispositivos. Ative-as nas Configuracoes.',
'needEnableBluetooth': 'Ativar Bluetooth',
'enableBluetoothDialogContent':
'Ative o Bluetooth para procurar e conectar dispositivos.',
'bleScanFailedWithError': 'Falha na busca: @error',
'bleConnectionSuccess': 'Conexao bem-sucedida',
'bleConnectedToDevice': 'Conectado a @device',
'bleConnectionFailedWithError': 'Falha na conexao: @error',
'bleDisconnected': 'Desconectado',
'bleDeviceDisconnected': 'Dispositivo desconectado',
'bleDisconnectFailedWithError': 'Falha ao desconectar: @error',
'signalStrong': 'Forte',
'signalMedium': 'Medio',
'signalWeak': 'Fraco',
'signalVeryWeak': 'Muito fraco',
// 发现页 // 发现页
"searchAi": "Pesquisar funções de IA...", "searchAi": "Pesquisar funções de IA...",
"exploreSlogan": "Auriculares inteligentes, possibilidades infinitas", "exploreSlogan": "Auriculares inteligentes, possibilidades infinitas",
@ -266,12 +289,16 @@ const Map<String, String> ptPT = {
'paymentException': 'Exceção de pagamento', 'paymentException': 'Exceção de pagamento',
'paymentLaunchFailed': 'Falha ao iniciar o pagamento', 'paymentLaunchFailed': 'Falha ao iniciar o pagamento',
'paymentExceptionWithError': 'Exceção de pagamento: @error', 'paymentExceptionWithError': 'Exceção de pagamento: @error',
'paymentProcessingCheckLater': 'O seu pedido está a ser processado. Por favor, verifique mais tarde.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Falha ao consultar o resultado do pagamento: @error', 'O seu pedido está a ser processado. Por favor, verifique mais tarde.',
'orderConfirmedQuotaRefreshed': 'Pedido confirmado. A sua quota foi atualizada.', 'paymentResultQueryException':
'Falha ao consultar o resultado do pagamento: @error',
'orderConfirmedQuotaRefreshed':
'Pedido confirmado. A sua quota foi atualizada.',
'paymentCompletedConfirming': 'Pagamento concluído. A confirmar…', 'paymentCompletedConfirming': 'Pagamento concluído. A confirmar…',
'paymentCancelled': 'Pagamento cancelado', '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', 'paypalOpenFailed': 'Não é possível abrir a página de pagamento do PayPal',
'paymentTestTitle': 'Teste de pagamento', 'paymentTestTitle': 'Teste de pagamento',
'paymentTestOrderInfo': 'Informações do pedido de teste', 'paymentTestOrderInfo': 'Informações do pedido de teste',
@ -288,7 +315,8 @@ const Map<String, String> ptPT = {
'errorInfoWithMessage': 'Erro: @message', 'errorInfoWithMessage': 'Erro: @message',
'retest': 'Testar novamente', 'retest': 'Testar novamente',
'paymentTestInstructionsTitle': 'Instruções', '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...', 'startingWechatPayment': 'A iniciar o WeChat Pay...',
'startingAlipayPayment': 'A iniciar o Alipay...', 'startingAlipayPayment': 'A iniciar o Alipay...',
'wechatPaymentSuccess': 'Pagamento via WeChat Pay bem-sucedido!', 'wechatPaymentSuccess': 'Pagamento via WeChat Pay bem-sucedido!',
@ -555,7 +583,8 @@ const Map<String, String> ptPT = {
'editTemplate': 'Editar modelo', 'editTemplate': 'Editar modelo',
'createTemplate': 'Criar modelo', 'createTemplate': 'Criar modelo',
'name': 'Nome', 'name': 'Nome',
'templateContentHint': 'Por favor, insira o conteúdo do modelo! Dica: Clique no botão de IA acima para gerar rapidamente o conteúdo do modelo com base no nome e na descrição que introduziu', 'templateContentHint':
'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', 'inputNameHint': 'Por favor, insira o nome',
'inputDescHint': 'Por favor, insira a descrição', 'inputDescHint': 'Por favor, insira a descrição',
'custom': 'Personalizado', 'custom': 'Personalizado',
@ -835,7 +864,8 @@ const Map<String, String> ptPT = {
"swipeUpForMore": "Deslize para cima para ver mais", "swipeUpForMore": "Deslize para cima para ver mais",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Quando ativado: A IA não será interrompida pela sua voz enquanto fala e só poderá lidar com uma ronda de conversa de cada vez. Para iniciar uma nova ronda, basta dizer a palavra de ativação.', 'voice_interrupt_tip':
'Quando ativado: A IA não será interrompida pela sua voz enquanto fala e só poderá lidar com uma ronda de conversa de cada vez. Para iniciar uma nova ronda, basta dizer a palavra de ativação.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -891,6 +921,14 @@ const Map<String, String> ptPT = {
'Gostaríamos de saber o motivo da sua denúncia, pode descrever o problema que encontrou.', 'Gostaríamos de saber o motivo da sua denúncia, pode descrever o problema que encontrou.',
'generatedByAi': 'Gerado por IA', 'generatedByAi': 'Gerado por IA',
// Agent模块 - 工具调用
'toolCall': 'Chamada de ferramenta',
'noResult': 'Sem resultado',
'noToolCallContentToCopy':
'Sem conteudo de chamada de ferramenta para copiar',
'toolCallDetails': 'Detalhes da chamada de ferramenta:',
'toolCallContentCopied': 'Conteudo copiado para a area de transferencia',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Aqui estão algumas músicas recomendadas:', 'recommendedMusic': 'Aqui estão algumas músicas recomendadas:',
'playList': 'Lista de Reprodução', 'playList': 'Lista de Reprodução',
@ -911,6 +949,29 @@ const Map<String, String> ptPT = {
"bicycling": "De bicicleta", "bicycling": "De bicicleta",
"tsransit": "Transportes Públicos", "tsransit": "Transportes Públicos",
// Agent模块 - 导航选择
'selectNavigationApp': 'Selecionar aplicativo de navegacao',
'amapMap': 'Amap',
'useAmapNavigation': 'Navegar com Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navegar com Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navegar com Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navegar com Apple Maps',
'builtInNavigation': 'Navegacao integrada',
'useBuiltInNavigation': 'Navegar com mapa integrado',
'navigationStartFailed': 'Falha ao iniciar a navegacao',
'cannotPlayMusicListRetryLater':
'Nao foi possivel reproduzir a lista de musicas, tente novamente mais tarde',
'cannotPlaySong': 'Nao foi possivel reproduzir a musica',
'openMapError': 'Erro ao abrir o mapa',
'pleaseInstallAmapApp': 'Instale primeiro o aplicativo Amap',
'pleaseInstallBaiduMapApp': 'Instale primeiro o aplicativo Baidu Maps',
'appleMapStartFailed': 'Falha ao iniciar Apple Maps',
'appleMapUnavailable': 'Apple Maps indisponivel',
'openAppleMapError': 'Erro ao abrir Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'A consultar as condições meteorológicas:', 'weatherQuery': 'A consultar as condições meteorológicas:',
'highest': 'Máxima', 'highest': 'Máxima',
@ -983,8 +1044,20 @@ const Map<String, String> ptPT = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Desativar janela flutuante',
'enableFloatingWindow': 'Ativar janela flutuante',
'permissionTip': 'Dica de permissao',
'micPermissionRequiredForRecording':
'Permissao de microfone necessaria para gravacao',
'deleteTranslationRecordError':
'Erro ao excluir registro de traducao: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "A traduzir",
"translate": "Traduzir",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Introduza o texto a traduzir",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1263,9 +1336,12 @@ const Map<String, String> ptPT = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navegação em curso', 'native.notification.navigation.title': 'Navegação em curso',
'native.notification.navigation.keepRunning': 'A navegar, mantenha a aplicação em execução', 'native.notification.navigation.keepRunning':
'native.notification.bleAgent.running': 'O assistente de voz está em execução', 'A navegar, mantenha a aplicação em execução',
'native.notification.audioRecording.recording': 'A gravar áudio, toque para voltar à aplicação', 'native.notification.bleAgent.running':
'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.waiting': 'A aguardar reprodução',
'native.notification.music.previous': 'Anterior', 'native.notification.music.previous': 'Anterior',
'native.notification.music.next': 'Seguinte', 'native.notification.music.next': 'Seguinte',
@ -1413,6 +1489,60 @@ const Map<String, String> ptPT = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Retire ambos os auriculares e certifique-se de que a bateria de ambos está acima de 20%", "Retire ambos os auriculares e certifique-se de que a bateria de ambos está acima de 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Nova versao @version encontrada',
'otaConfirmUpdateNow': 'Atualizar agora?',
'otaUpdate': 'Atualizar',
'otaUpgradeSuccess': 'Atualizacao bem-sucedida',
'otaUpgradeCompleteRepair':
'Atualizacao concluida!\n\nO dispositivo precisa ser emparelhado novamente. Ir para emparelhamento?',
'otaPairLater': 'Emparelhar depois',
'otaPairNow': 'Emparelhar agora',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Erro ao verificar conexao BLE: @error',
'otaBleNotConnected': 'Dispositivo BLE nao conectado',
'otaBleNeedConnection':
'Conexao BLE necessaria\nVerifique a conexao e tente novamente',
'otaDeviceInfoUnavailableTitle': 'Informacoes do dispositivo indisponiveis',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Verificacao de conexao BLE falhou',
'otaCannotGetDeviceInfoCheckConnection':
'Nao foi possivel obter informacoes, verifique a conexao',
'otaCannotGetProductInfoWithName':
'Nao foi possivel obter informacoes do produto, nome: @deviceName',
'otaCannotGetBatteryInfo':
'Nao foi possivel obter informacoes de bateria validas',
'otaLowBattery': 'Bateria fraca',
'otaSingleBatteryLow':
'Bateria muito baixa\nRequisito: acima de 20%\nAtual: @ear @battery%\nCarregue e tente novamente',
'otaDoubleBatteryLow':
'Bateria muito baixa\nRequisito: ambos acima de 20%\nAtual: Esquerdo @left%, Direito @right%\nCarregue e tente novamente',
'otaBatteryCheckFailed': 'Verificacao de bateria falhou',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Esta atualizacao inclui otimizacoes de desempenho e correcoes de bugs.',
'otaGetLatestVersionFailed': 'Falha ao obter a versao mais recente',
'otaGetVersionInfoFailed': 'Falha ao obter informacoes de versao',
'otaCheckingDeviceStatus': 'Verificando status do dispositivo...',
'otaDownloadFailedCheckNetwork':
'Download falhou, verifique a conexao de rede',
'otaDownloadFailed': 'Download falhou',
'otaPreparingConnection': 'Preparando conexao do dispositivo...',
'otaConnectingDevice': 'Conectando ao dispositivo...',
'otaUpgradeStarted': 'Atualizacao OTA iniciada...',
'otaUpgradeProgressWithPercent': 'Progresso: @percent%',
'otaUpgradeSuccessComplete': 'Atualizacao concluida com sucesso',
'otaUpgradeFailedWithCode': 'Atualizacao falhou, codigo de erro: @code',
'otaUpgradeFailedTitle': 'Atualizacao falhou',
'otaUpgradeFailedDesc':
'Verifique a conexao ou o pacote de atualizacao, codigo: @code',
'otaDeviceDisconnected': 'Dispositivo desconectado',
'otaDeviceConnected': 'Dispositivo conectado',
// 音乐模块 // 音乐模块
"noMusic": "Sem Música", // 暂无音乐 "noMusic": "Sem Música", // 暂无音乐
"noPlayingMusic": "Nenhuma música a tocar", // 暂无播放音乐 "noPlayingMusic": "Nenhuma música a tocar", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> roRO = { const Map<String, String> roRO = {
// 通用 // 通用
'continue': 'Continuă', 'continue': 'Continuă',
'confirm': 'Confirmă', 'confirm': 'Confirmă',
@ -172,6 +171,29 @@ const Map<String, String> roRO = {
'right': 'Dreapta', 'right': 'Dreapta',
'checkConnectionStatusFailed': 'Verificarea stării conexiunii a eșuat', 'checkConnectionStatusFailed': 'Verificarea stării conexiunii a eșuat',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Initializarea Bluetooth a esuat: @error',
'needBluetoothAndLocationPermission':
'Sunt necesare permisiuni Bluetooth si locatie pentru scanare',
'permissionRequestFailedWithError': 'Solicitarea permisiunii a esuat: @error',
'needPermission': 'Permisiune necesara',
'blePermissionDialogContent':
'Aplicatia necesita permisiuni Bluetooth si locatie pentru scanarea dispozitivelor. Activati-le din Setari.',
'needEnableBluetooth': 'Activati Bluetooth',
'enableBluetoothDialogContent':
'Activati Bluetooth pentru a scana si conecta dispozitive.',
'bleScanFailedWithError': 'Scanare esuata: @error',
'bleConnectionSuccess': 'Conectare reusita',
'bleConnectedToDevice': 'Conectat la @device',
'bleConnectionFailedWithError': 'Conectare esuata: @error',
'bleDisconnected': 'Deconectat',
'bleDeviceDisconnected': 'Dispozitiv deconectat',
'bleDisconnectFailedWithError': 'Deconectare esuata: @error',
'signalStrong': 'Puternic',
'signalMedium': 'Mediu',
'signalWeak': 'Slab',
'signalVeryWeak': 'Foarte slab',
// 发现页 // 发现页
"searchAi": "Căutați funcții AI...", "searchAi": "Căutați funcții AI...",
"exploreSlogan": "Căști inteligente, posibilități infinite", "exploreSlogan": "Căști inteligente, posibilități infinite",
@ -265,12 +287,16 @@ const Map<String, String> roRO = {
'paymentException': 'Excepție la plată', 'paymentException': 'Excepție la plată',
'paymentLaunchFailed': 'Lansarea plății a eșuat', 'paymentLaunchFailed': 'Lansarea plății a eșuat',
'paymentExceptionWithError': 'Excepție la plată: @error', 'paymentExceptionWithError': 'Excepție la plată: @error',
'paymentProcessingCheckLater': 'Comanda dvs. este în curs de procesare. Verificați mai târziu.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Interogarea rezultatului plății a eșuat: @error', 'Comanda dvs. este în curs de procesare. Verificați mai târziu.',
'orderConfirmedQuotaRefreshed': 'Comanda a fost confirmată. Cota dvs. a fost reîmprospătată.', 'paymentResultQueryException':
'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ă…', 'paymentCompletedConfirming': 'Plată finalizată. Se confirmă…',
'paymentCancelled': 'Plată anulată', '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', 'paypalOpenFailed': 'Nu se poate deschide pagina de plată PayPal',
'paymentTestTitle': 'Test de plată', 'paymentTestTitle': 'Test de plată',
'paymentTestOrderInfo': 'Informații comandă de test', 'paymentTestOrderInfo': 'Informații comandă de test',
@ -287,7 +313,8 @@ const Map<String, String> roRO = {
'errorInfoWithMessage': 'Eroare: @message', 'errorInfoWithMessage': 'Eroare: @message',
'retest': 'Retestare', 'retest': 'Retestare',
'paymentTestInstructionsTitle': 'Instrucțiuni', '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...', 'startingWechatPayment': 'Se lansează WeChat Pay...',
'startingAlipayPayment': 'Se lansează Alipay...', 'startingAlipayPayment': 'Se lansează Alipay...',
'wechatPaymentSuccess': 'WeChat Pay reușit!', 'wechatPaymentSuccess': 'WeChat Pay reușit!',
@ -501,16 +528,24 @@ const Map<String, String> roRO = {
'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作 'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Încheie și salvează', // 结束录音并保存 'meetingRecordEndAndSave': 'Încheie și salvează', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Încheie fără a salva', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Încheie fără a salva', // 结束录音不保存
'meetingRecordContinueInBackground': 'Continuă înregistrarea în fundal', // 后台继续录音 'meetingRecordContinueInBackground':
'meetingRecordStopTimeout': 'A expirat timpul pentru oprirea înregistrării. Încearcă din nou.', // 结束录音超时,请重试 'Continuă înregistrarea în fundal', // 后台继续录音
'meetingRecordStopFailed': 'Nu s-a putut opri înregistrarea. Încearcă din nou.', // 结束录音失败,请重试 'meetingRecordStopTimeout':
'meetingRecordSaveFailed': 'Nu s-a putut salva înregistrarea. Încearcă din nou.', // 保存录音失败,请重试 'A expirat timpul pentru oprirea înregistrării. Încearcă din nou.', // 结束录音超时,请重试
'meetingRecordStopFailed':
'Nu s-a putut opri înregistrarea. Încearcă din nou.', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'Nu s-a putut salva înregistrarea. Încearcă din nou.', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'Înregistrare în curs', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'Înregistrare în curs', // 录音进行中
'meetingRecordRecordingNotificationBody': 'Se înregistrează în fundal. Atinge pentru a reveni la aplicație.', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'Se înregistrează în fundal. Atinge pentru a reveni la aplicație.', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'Afișare peste alte aplicații', // 悬浮窗权限 'overlayPermissionTitle': 'Afișare peste alte aplicații', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'Pentru a afișa rezultatele traducerii în timpul apelurilor sau al traducerii audio/video, avem nevoie de permisiunea de suprapunere. Astfel poți vedea traduceri în timp real în timp ce folosești alte aplicații.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'overlayPermissionTranslationDesc':
'overlayPermissionRecordingDesc': 'Pentru a afișa bara flotantă de înregistrare (cronometru/pauză/continuă) în timpul înregistrării, avem nevoie de permisiunea de suprapunere.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'Pentru a afișa rezultatele traducerii în timpul apelurilor sau al traducerii audio/video, avem nevoie de permisiunea de suprapunere. Astfel poți vedea traduceri în timp real în timp ce folosești alte aplicații.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
'overlayPermissionOpenSettingsFailed': 'Nu se pot deschide automat setările de sistem. Deschide Setări și activează manual permisiunea de suprapunere.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'overlayPermissionRecordingDesc':
'Pentru a afișa bara flotantă de înregistrare (cronometru/pauză/continuă) în timpul înregistrării, avem nevoie de permisiunea de suprapunere.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nu se pot deschide automat setările de sistem. Deschide Setări și activează manual permisiunea de suprapunere.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...', 'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...', 'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...', 'analyzing': 'Analyzing...',
@ -545,7 +580,8 @@ const Map<String, String> roRO = {
'editTemplate': 'Editează șablon', 'editTemplate': 'Editează șablon',
'createTemplate': 'Creează șablon', 'createTemplate': 'Creează șablon',
'name': 'Nume', 'name': 'Nume',
'templateContentHint': 'Vă rugăm să introduceți conținutul șablonului! Sfat: Faceți clic pe butonul AI de mai sus pentru a genera rapid conținutul șablonului pe baza numelui și descrierii introduse', 'templateContentHint':
'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', 'inputNameHint': 'Vă rugăm să introduceți numele',
'inputDescHint': 'Vă rugăm să introduceți descrierea', 'inputDescHint': 'Vă rugăm să introduceți descrierea',
'custom': 'Personalizat', 'custom': 'Personalizat',
@ -705,7 +741,8 @@ const Map<String, String> roRO = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiza a eșuat, vă rugăm să reîncercați mai târziu', 'analysisFailed': 'Analiza a eșuat, vă rugăm să reîncercați mai târziu',
'transcriptionFailed': 'Transcrierea a eșuat, vă rugăm să reîncercați mai târziu', 'transcriptionFailed':
'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', 'summaryFailed': 'Rezumatul a eșuat, vă rugăm să reîncercați mai târziu',
'summaryFailedShort': 'Rezumat eșuat', 'summaryFailedShort': 'Rezumat eșuat',
'transcriptionFailedShort': 'Transcriere eșuată', 'transcriptionFailedShort': 'Transcriere eșuată',
@ -823,7 +860,8 @@ const Map<String, String> roRO = {
"swipeUpForMore": "Glisați în sus pentru mai mult", "swipeUpForMore": "Glisați în sus pentru mai mult",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Când este activat: AI-ul nu va fi întrerupt de vocea dvs. în timp ce vorbește și poate gestiona doar o rundă de conversație pe rând. Pentru a începe o rundă nouă, spuneți cuvântul de activare.', 'voice_interrupt_tip':
'Când este activat: AI-ul nu va fi întrerupt de vocea dvs. în timp ce vorbește și poate gestiona doar o rundă de conversație pe rând. Pentru a începe o rundă nouă, spuneți cuvântul de activare.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -880,6 +918,13 @@ const Map<String, String> roRO = {
'Dorim să știm de ce raportați, puteți descrie problema pe care ați întâmpinat-o.', 'Dorim să știm de ce raportați, puteți descrie problema pe care ați întâmpinat-o.',
'generatedByAi': 'Generat de AI', 'generatedByAi': 'Generat de AI',
// Agent模块 - 工具调用
'toolCall': 'Apel instrument',
'noResult': 'Niciun rezultat',
'noToolCallContentToCopy': 'Nu exista continut de apel instrument de copiat',
'toolCallDetails': 'Detalii apel instrument:',
'toolCallContentCopied': 'Continut copiat in clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Iată câteva melodii recomandate:', 'recommendedMusic': 'Iată câteva melodii recomandate:',
'playList': 'Listă de redare', 'playList': 'Listă de redare',
@ -900,6 +945,29 @@ const Map<String, String> roRO = {
"bicycling": "Cu bicicleta", "bicycling": "Cu bicicleta",
"tsransit": "Transport public", "tsransit": "Transport public",
// Agent模块 - 导航选择
'selectNavigationApp': 'Selectati aplicatia de navigare',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigare cu Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigare cu Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigare cu Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigare cu Apple Maps',
'builtInNavigation': 'Navigare integrata',
'useBuiltInNavigation': 'Navigare cu harta integrata',
'navigationStartFailed': 'Pornirea navigarii a esuat',
'cannotPlayMusicListRetryLater':
'Nu se poate reda lista de muzica, incercati mai tarziu',
'cannotPlaySong': 'Nu se poate reda melodia',
'openMapError': 'Eroare la deschiderea hartii',
'pleaseInstallAmapApp': 'Instalati mai intai aplicatia Amap',
'pleaseInstallBaiduMapApp': 'Instalati mai intai aplicatia Baidu Maps',
'appleMapStartFailed': 'Pornirea Apple Maps a esuat',
'appleMapUnavailable': 'Apple Maps indisponibil',
'openAppleMapError': 'Eroare la deschiderea Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Se interoghează condițiile meteo:', 'weatherQuery': 'Se interoghează condițiile meteo:',
'highest': 'Maximă', 'highest': 'Maximă',
@ -972,8 +1040,20 @@ const Map<String, String> roRO = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Dezactivare fereastra plutitoare',
'enableFloatingWindow': 'Activare fereastra plutitoare',
'permissionTip': 'Sfat privind permisiunile',
'micPermissionRequiredForRecording':
'Este necesara permisiunea microfonului pentru inregistrare',
'deleteTranslationRecordError':
'Eroare la stergerea inregistrarii de traducere: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Se traduce",
"translate": "Traducere",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Introduceți textul de tradus",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1252,9 +1332,11 @@ const Map<String, String> roRO = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigare în curs', 'native.notification.navigation.title': 'Navigare în curs',
'native.notification.navigation.keepRunning': 'Navigare în curs, mențineți aplicația deschisă', 'native.notification.navigation.keepRunning':
'Navigare în curs, mențineți aplicația deschisă',
'native.notification.bleAgent.running': 'Asistentul vocal funcționează', '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.waiting': 'Așteaptă redarea',
'native.notification.music.previous': 'Anterior', 'native.notification.music.previous': 'Anterior',
'native.notification.music.next': 'Următorul', 'native.notification.music.next': 'Următorul',
@ -1401,6 +1483,60 @@ const Map<String, String> roRO = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Scoateți ambele căști și asigurați-vă că bateria ambelor este peste 20%", "Scoateți ambele căști și asigurați-vă că bateria ambelor este peste 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Versiune noua @version gasita',
'otaConfirmUpdateNow': 'Actualizare acum?',
'otaUpdate': 'Actualizare',
'otaUpgradeSuccess': 'Actualizare reusita',
'otaUpgradeCompleteRepair':
'Actualizare finalizata!\n\nDispozitivul trebuie re-asociat. Pagina de asociere?',
'otaPairLater': 'Imperechere mai tarziu',
'otaPairNow': 'Imperechere acum',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Eroare la verificarea conexiunii BLE: @error',
'otaBleNotConnected': 'Dispozitiv BLE neconectat',
'otaBleNeedConnection':
'Conexiune BLE necesara\nVerificati conexiunea si incercati din nou',
'otaDeviceInfoUnavailableTitle': 'Informatii dispozitiv indisponibile',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Verificarea conexiunii BLE a esuat',
'otaCannotGetDeviceInfoCheckConnection':
'Nu se pot obtine informatii, verificati conexiunea',
'otaCannotGetProductInfoWithName':
'Nu se pot obtine informatii produs, nume: @deviceName',
'otaCannotGetBatteryInfo':
'Nu se pot obtine informatii valide despre baterie',
'otaLowBattery': 'Baterie scazuta',
'otaSingleBatteryLow':
'Baterie prea scazuta\nCerinta: peste 20%\nActual: @ear @battery%\nIncarcati si incercati din nou',
'otaDoubleBatteryLow':
'Baterie prea scazuta\nCerinta: ambele casti peste 20%\nActual: Stanga @left%, Dreapta @right%\nIncarcati si incercati din nou',
'otaBatteryCheckFailed': 'Verificarea bateriei a esuat',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Aceasta actualizare include optimizari de performanta si remedieri de erori.',
'otaGetLatestVersionFailed': 'Nu s-a putut obtine ultima versiune',
'otaGetVersionInfoFailed': 'Nu s-au putut obtine informatiile de versiune',
'otaCheckingDeviceStatus': 'Se verifica starea dispozitivului...',
'otaDownloadFailedCheckNetwork':
'Descarcare esuata, verificati conexiunea la retea',
'otaDownloadFailed': 'Descarcare esuata',
'otaPreparingConnection': 'Se pregateste conexiunea...',
'otaConnectingDevice': 'Se conecteaza la dispozitiv...',
'otaUpgradeStarted': 'Actualizare OTA inceputa...',
'otaUpgradeProgressWithPercent': 'Progres: @percent%',
'otaUpgradeSuccessComplete': 'Actualizare finalizata cu succes',
'otaUpgradeFailedWithCode': 'Actualizare esuata, cod eroare: @code',
'otaUpgradeFailedTitle': 'Actualizare esuata',
'otaUpgradeFailedDesc':
'Verificati conexiunea sau pachetul de actualizare, cod: @code',
'otaDeviceDisconnected': 'Dispozitiv deconectat',
'otaDeviceConnected': 'Dispozitiv conectat',
// 音乐模块 // 音乐模块
"noMusic": "Fără muzică", // 暂无音乐 "noMusic": "Fără muzică", // 暂无音乐
"noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐 "noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> ruRU = { const Map<String, String> ruRU = {
// 通用 // 通用
'continue': 'Продолжить', 'continue': 'Продолжить',
'confirm': 'Подтвердить', 'confirm': 'Подтвердить',
@ -169,6 +168,29 @@ const Map<String, String> ruRU = {
'right': 'Право', 'right': 'Право',
'checkConnectionStatusFailed': 'Не удалось проверить статус подключения', 'checkConnectionStatusFailed': 'Не удалось проверить статус подключения',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Инициализация Bluetooth не удалась: @error',
'needBluetoothAndLocationPermission':
'Для сканирования устройств требуются разрешения Bluetooth и местоположения',
'permissionRequestFailedWithError': 'Ошибка запроса разрешения: @error',
'needPermission': 'Требуется разрешение',
'blePermissionDialogContent':
'Приложению требуются разрешения Bluetooth и местоположения. Включите их в настройках.',
'needEnableBluetooth': 'Включите Bluetooth',
'enableBluetoothDialogContent':
'Включите Bluetooth для сканирования и подключения устройств.',
'bleScanFailedWithError': 'Ошибка сканирования: @error',
'bleConnectionSuccess': 'Подключение успешно',
'bleConnectedToDevice': 'Подключено к @device',
'bleConnectionFailedWithError': 'Ошибка подключения: @error',
'bleDisconnected': 'Отключено',
'bleDeviceDisconnected': 'Устройство отключено',
'bleDisconnectFailedWithError': 'Ошибка отключения: @error',
'signalStrong': 'Сильный',
'signalMedium': 'Средний',
'signalWeak': 'Слабый',
'signalVeryWeak': 'Очень слабый',
// 发现页 // 发现页
"searchAi": "Поиск функций AI...", "searchAi": "Поиск функций AI...",
"exploreSlogan": "Умные наушники, безграничные возможности", "exploreSlogan": "Умные наушники, безграничные возможности",
@ -264,11 +286,13 @@ const Map<String, String> ruRU = {
'paymentLaunchFailed': 'Не удалось запустить оплату', 'paymentLaunchFailed': 'Не удалось запустить оплату',
'paymentExceptionWithError': 'Ошибка оплаты: @error', 'paymentExceptionWithError': 'Ошибка оплаты: @error',
'paymentProcessingCheckLater': 'Ваш заказ обрабатывается. Проверьте позже.', 'paymentProcessingCheckLater': 'Ваш заказ обрабатывается. Проверьте позже.',
'paymentResultQueryException': 'Не удалось запросить результат оплаты: @error', 'paymentResultQueryException':
'Не удалось запросить результат оплаты: @error',
'orderConfirmedQuotaRefreshed': 'Заказ подтверждён. Ваша квота обновлена.', 'orderConfirmedQuotaRefreshed': 'Заказ подтверждён. Ваша квота обновлена.',
'paymentCompletedConfirming': 'Оплата завершена. Подтверждение…', 'paymentCompletedConfirming': 'Оплата завершена. Подтверждение…',
'paymentCancelled': 'Оплата отменена', 'paymentCancelled': 'Оплата отменена',
'paypalOpenedCompleteInBrowser': 'PayPal открыт. Завершите оплату в браузере.', 'paypalOpenedCompleteInBrowser':
'PayPal открыт. Завершите оплату в браузере.',
'paypalOpenFailed': 'Не удалось открыть страницу оплаты PayPal', 'paypalOpenFailed': 'Не удалось открыть страницу оплаты PayPal',
'paymentTestTitle': 'Тест оплаты', 'paymentTestTitle': 'Тест оплаты',
'paymentTestOrderInfo': 'Информация о тестовом заказе', 'paymentTestOrderInfo': 'Информация о тестовом заказе',
@ -285,7 +309,8 @@ const Map<String, String> ruRU = {
'errorInfoWithMessage': 'Ошибка: @message', 'errorInfoWithMessage': 'Ошибка: @message',
'retest': 'Повторный тест', 'retest': 'Повторный тест',
'paymentTestInstructionsTitle': 'Инструкция', 'paymentTestInstructionsTitle': 'Инструкция',
'paymentTestInstructionsContent': '1. Выберите тестовую сумму (рекомендуется: ¥0.01)\n2. Нажмите кнопку оплаты для начала\n3. Завершите оплату в приложении для оплаты\n4. Вернитесь, чтобы проверить результат', 'paymentTestInstructionsContent':
'1. Выберите тестовую сумму (рекомендуется: ¥0.01)\n2. Нажмите кнопку оплаты для начала\n3. Завершите оплату в приложении для оплаты\n4. Вернитесь, чтобы проверить результат',
'startingWechatPayment': 'Запуск WeChat Pay...', 'startingWechatPayment': 'Запуск WeChat Pay...',
'startingAlipayPayment': 'Запуск Alipay...', 'startingAlipayPayment': 'Запуск Alipay...',
'wechatPaymentSuccess': 'Оплата через WeChat Pay прошла успешно!', 'wechatPaymentSuccess': 'Оплата через WeChat Pay прошла успешно!',
@ -554,7 +579,8 @@ const Map<String, String> ruRU = {
'editTemplate': 'Редактировать шаблон', 'editTemplate': 'Редактировать шаблон',
'createTemplate': 'Создать шаблон', 'createTemplate': 'Создать шаблон',
'name': 'Название', 'name': 'Название',
'templateContentHint': 'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания', 'templateContentHint':
'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания',
'inputNameHint': 'Пожалуйста, введите название', 'inputNameHint': 'Пожалуйста, введите название',
'inputDescHint': 'Пожалуйста, введите описание', 'inputDescHint': 'Пожалуйста, введите описание',
'custom': 'Пользовательский', 'custom': 'Пользовательский',
@ -830,7 +856,8 @@ const Map<String, String> ruRU = {
"swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше", "swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.', 'voice_interrupt_tip':
'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -886,6 +913,13 @@ const Map<String, String> ruRU = {
'Мы хотим знать причину вашей жалобы, вы можете описать проблему, с которой столкнулись.', 'Мы хотим знать причину вашей жалобы, вы можете описать проблему, с которой столкнулись.',
'generatedByAi': 'Сгенерировано AI', 'generatedByAi': 'Сгенерировано AI',
// Agent模块 - 工具调用
'toolCall': 'Вызов инструмента',
'noResult': 'Нет результатов',
'noToolCallContentToCopy': 'Нет содержимого вызова для копирования',
'toolCallDetails': 'Детали вызова инструмента:',
'toolCallContentCopied': 'Содержимое скопировано в буфер обмена',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Вот несколько рекомендованных композиций:', 'recommendedMusic': 'Вот несколько рекомендованных композиций:',
'playList': 'Плейлист', 'playList': 'Плейлист',
@ -906,6 +940,29 @@ const Map<String, String> ruRU = {
"bicycling": "На велосипеде", "bicycling": "На велосипеде",
"tsransit": "Общественный транспорт", "tsransit": "Общественный транспорт",
// Agent模块 - 导航选择
'selectNavigationApp': 'Выберите навигатор',
'amapMap': 'Amap',
'useAmapNavigation': 'Навигация через Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Навигация через Baidu Maps',
'googleMap': 'Google Карты',
'useGoogleNavigation': 'Навигация через Google Карты',
'appleMap': 'Apple Карты',
'useAppleNavigation': 'Навигация через Apple Карты',
'builtInNavigation': 'Встроенная навигация',
'useBuiltInNavigation': 'Навигация по встроенной карте',
'navigationStartFailed': 'Не удалось запустить навигацию',
'cannotPlayMusicListRetryLater':
'Не удаётся воспроизвести плейлист, попробуйте позже',
'cannotPlaySong': 'Не удаётся воспроизвести песню',
'openMapError': 'Ошибка при открытии карты',
'pleaseInstallAmapApp': 'Установите приложение Amap',
'pleaseInstallBaiduMapApp': 'Установите приложение Baidu Maps',
'appleMapStartFailed': 'Не удалось запустить Apple Карты',
'appleMapUnavailable': 'Apple Карты недоступны',
'openAppleMapError': 'Ошибка при открытии Apple Карт',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Запрос погодных условий:', 'weatherQuery': 'Запрос погодных условий:',
'highest': 'Макс.', 'highest': 'Макс.',
@ -978,8 +1035,19 @@ const Map<String, String> ruRU = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Отключить плавающее окно',
'enableFloatingWindow': 'Включить плавающее окно',
'permissionTip': 'Подсказка о разрешениях',
'micPermissionRequiredForRecording':
'Для записи требуется разрешение микрофона',
'deleteTranslationRecordError': 'Ошибка при удалении записи перевода: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Перевод",
"translate": "Перевести",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Введите текст для перевода",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1259,7 +1327,8 @@ const Map<String, String> ruRU = {
'native.notification.navigation.title': 'Навигация запущена', // 导航进行中 'native.notification.navigation.title': 'Навигация запущена', // 导航进行中
'native.notification.navigation.keepRunning': 'native.notification.navigation.keepRunning':
'Идёт навигация, держите приложение запущенным', // 正在导航中,请保持应用运行 'Идёт навигация, держите приложение запущенным', // 正在导航中,请保持应用运行
'native.notification.bleAgent.running': 'Голосовой помощник работает', // 语音助手正在运行 'native.notification.bleAgent.running':
'Голосовой помощник работает', // 语音助手正在运行
'native.notification.audioRecording.recording': 'native.notification.audioRecording.recording':
'Идёт запись, нажмите чтобы вернуться в приложение', // 正在录音,点击返回应用 'Идёт запись, нажмите чтобы вернуться в приложение', // 正在录音,点击返回应用
'native.notification.music.waiting': 'Ожидание воспроизведения', // 等待播放 'native.notification.music.waiting': 'Ожидание воспроизведения', // 等待播放
@ -1409,6 +1478,59 @@ const Map<String, String> ruRU = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Извлеките оба наушника и убедитесь, что уровень заряда батареи в обоих превышает 20%", "Извлеките оба наушника и убедитесь, что уровень заряда батареи в обоих превышает 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'Найдена новая версия @version',
'otaConfirmUpdateNow': 'Обновить сейчас?',
'otaUpdate': 'Обновить',
'otaUpgradeSuccess': 'Обновление успешно',
'otaUpgradeCompleteRepair':
'Обновление прошивки завершено!\n\nУстройство необходимо повторно сопрячь. Перейти на страницу сопряжения?',
'otaPairLater': 'Сопрячь позже',
'otaPairNow': 'Сопрячь сейчас',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Ошибка проверки BLE-соединения: @error',
'otaBleNotConnected': 'BLE-устройство не подключено',
'otaBleNeedConnection':
'Требуется BLE-подключение\nУбедитесь, что устройство подключено, и повторите',
'otaDeviceInfoUnavailableTitle': 'Информация об устройстве недоступна',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'Проверка BLE-соединения не удалась',
'otaCannotGetDeviceInfoCheckConnection':
'Не удаётся получить информацию, проверьте подключение',
'otaCannotGetProductInfoWithName':
'Не удаётся получить информацию о продукте, устройство: @deviceName',
'otaCannotGetBatteryInfo': 'Не удаётся получить данные о батарее',
'otaLowBattery': 'Низкий заряд',
'otaSingleBatteryLow':
'Заряд слишком низкий\nТребование: выше 20%\nТекущий: @ear @battery%\nЗарядите и повторите',
'otaDoubleBatteryLow':
'Заряд слишком низкий\nТребование: оба наушника выше 20%\nТекущий: Левый @left%, Правый @right%\nЗарядите и повторите',
'otaBatteryCheckFailed': 'Проверка батареи не удалась',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'Это обновление включает оптимизацию производительности и исправление ошибок.',
'otaGetLatestVersionFailed':
'Не удалось получить информацию о последней версии',
'otaGetVersionInfoFailed': 'Не удалось получить информацию о версии',
'otaCheckingDeviceStatus': 'Проверка состояния устройства...',
'otaDownloadFailedCheckNetwork': 'Загрузка не удалась, проверьте сеть',
'otaDownloadFailed': 'Загрузка не удалась',
'otaPreparingConnection': 'Подготовка подключения...',
'otaConnectingDevice': 'Подключение к устройству...',
'otaUpgradeStarted': 'OTA-обновление начато...',
'otaUpgradeProgressWithPercent': 'Прогресс: @percent%',
'otaUpgradeSuccessComplete': 'Обновление успешно завершено',
'otaUpgradeFailedWithCode': 'Обновление не удалось, код ошибки: @code',
'otaUpgradeFailedTitle': 'Обновление не удалось',
'otaUpgradeFailedDesc':
'Проверьте подключение или пакет обновления, код: @code',
'otaDeviceDisconnected': 'Устройство отключено',
'otaDeviceConnected': 'Устройство подключено',
// 音乐模块 // 音乐模块
"noMusic": "Нет музыки", // 暂无音乐 "noMusic": "Нет музыки", // 暂无音乐
"noPlayingMusic": "Нет воспроизводимой музыки", // 暂无播放音乐 "noPlayingMusic": "Нет воспроизводимой музыки", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> skSK = { const Map<String, String> skSK = {
// 通用 // 通用
'continue': 'Pokračovať', 'continue': 'Pokračovať',
'confirm': 'Potvrdiť', 'confirm': 'Potvrdiť',
@ -169,6 +168,29 @@ const Map<String, String> skSK = {
'right': 'Vpravo', 'right': 'Vpravo',
'checkConnectionStatusFailed': 'Kontrola stavu pripojenia zlyhala', 'checkConnectionStatusFailed': 'Kontrola stavu pripojenia zlyhala',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Hľadať AI funkcie...", "searchAi": "Hľadať AI funkcie...",
"exploreSlogan": "Inteligentné slúchadlá, nekonečné možnosti", "exploreSlogan": "Inteligentné slúchadlá, nekonečné možnosti",
@ -263,12 +285,15 @@ const Map<String, String> skSK = {
'paymentException': 'Výnimka platby', 'paymentException': 'Výnimka platby',
'paymentLaunchFailed': 'Spustenie platby zlyhalo', 'paymentLaunchFailed': 'Spustenie platby zlyhalo',
'paymentExceptionWithError': 'Výnimka platby: @error', 'paymentExceptionWithError': 'Výnimka platby: @error',
'paymentProcessingCheckLater': 'Vaša objednávka sa spracováva. Skontrolujte neskôr.', 'paymentProcessingCheckLater':
'Vaša objednávka sa spracováva. Skontrolujte neskôr.',
'paymentResultQueryException': 'Nepodarilo sa zistiť výsledok platby: @error', '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…', 'paymentCompletedConfirming': 'Platba dokončená. Potvrdzovanie…',
'paymentCancelled': 'Platba bola zrušená', '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', 'paypalOpenFailed': 'Nie je možné otvoriť platobnú stránku PayPal',
'paymentTestTitle': 'Test platby', 'paymentTestTitle': 'Test platby',
'paymentTestOrderInfo': 'Informácie o testovacej objednávke', 'paymentTestOrderInfo': 'Informácie o testovacej objednávke',
@ -285,7 +310,8 @@ const Map<String, String> skSK = {
'errorInfoWithMessage': 'Chyba: @message', 'errorInfoWithMessage': 'Chyba: @message',
'retest': 'Znova otestovať', 'retest': 'Znova otestovať',
'paymentTestInstructionsTitle': 'Pokyny', '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...', 'startingWechatPayment': 'Spúšťanie WeChat Pay...',
'startingAlipayPayment': 'Spúšťanie Alipay...', 'startingAlipayPayment': 'Spúšťanie Alipay...',
'wechatPaymentSuccess': 'Platba WeChat Pay úspešná!', 'wechatPaymentSuccess': 'Platba WeChat Pay úspešná!',
@ -551,7 +577,8 @@ const Map<String, String> skSK = {
'editTemplate': 'Upraviť šablónu', 'editTemplate': 'Upraviť šablónu',
'createTemplate': 'Vytvoriť šablónu', 'createTemplate': 'Vytvoriť šablónu',
'name': 'Názov', 'name': 'Názov',
'templateContentHint': 'Prosím zadajte obsah šablóny! Tip: Kliknite na tlačidlo AI vyššie pre rýchle vygenerovanie obsahu šablóny na základe zadaného názvu a popisu', 'templateContentHint':
'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', 'inputNameHint': 'Prosím zadajte názov',
'inputDescHint': 'Prosím zadajte popis', 'inputDescHint': 'Prosím zadajte popis',
'custom': 'Vlastné', 'custom': 'Vlastné',
@ -826,7 +853,8 @@ const Map<String, String> skSK = {
"swipeUpForMore": "Potiahnite nahor pre viac", "swipeUpForMore": "Potiahnite nahor pre viac",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Keď je zapnuté: AI nebude prerušený vaším hlasom počas rozprávania a môže spracovať iba jedno kolo konverzácie naraz. Pre začatie nového kola stačí povedať aktivačné slovo.', 'voice_interrupt_tip':
'Keď je zapnuté: AI nebude prerušený vaším hlasom počas rozprávania a môže spracovať iba jedno kolo konverzácie naraz. Pre začatie nového kola stačí povedať aktivačné slovo.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -882,6 +910,13 @@ const Map<String, String> skSK = {
'Chceme vedieť dôvod vášho hlásenia, môžete opísať problém, s ktorým ste sa stretli.', 'Chceme vedieť dôvod vášho hlásenia, môžete opísať problém, s ktorým ste sa stretli.',
'generatedByAi': 'Vygenerované AI', 'generatedByAi': 'Vygenerované AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Tu sú niektoré odporúčané skladby:', 'recommendedMusic': 'Tu sú niektoré odporúčané skladby:',
'playList': 'Zoznam skladieb', 'playList': 'Zoznam skladieb',
@ -902,6 +937,29 @@ const Map<String, String> skSK = {
"bicycling": "Bicyklovanie", "bicycling": "Bicyklovanie",
"tsransit": "Verejná doprava", "tsransit": "Verejná doprava",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Dotaz na poveternostné podmienky:', 'weatherQuery': 'Dotaz na poveternostné podmienky:',
'highest': 'Najvyššia', 'highest': 'Najvyššia',
@ -973,8 +1031,19 @@ const Map<String, String> skSK = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Zadajte text na preklad",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1249,9 +1318,11 @@ const Map<String, String> skSK = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigácia prebieha', 'native.notification.navigation.title': 'Navigácia prebieha',
'native.notification.navigation.keepRunning': 'Navigácia, ponechajte aplikáciu spustenú', 'native.notification.navigation.keepRunning':
'Navigácia, ponechajte aplikáciu spustenú',
'native.notification.bleAgent.running': 'Hlasový asistent je 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.waiting': 'Čakanie na prehranie',
'native.notification.music.previous': 'Predchádzajúca', 'native.notification.music.previous': 'Predchádzajúca',
'native.notification.music.next': 'Ďalšia', 'native.notification.music.next': 'Ďalšia',
@ -1398,6 +1469,59 @@ const Map<String, String> skSK = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%", "Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Žiadna hudba", // 暂无音乐 "noMusic": "Žiadna hudba", // 暂无音乐
"noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐 "noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐

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

@ -1,5 +1,4 @@
const Map<String, String> slSI = { const Map<String, String> slSI = {
// 通用 // 通用
'continue': 'Nadaljuj', 'continue': 'Nadaljuj',
'confirm': 'Potrdi', 'confirm': 'Potrdi',
@ -169,6 +168,29 @@ const Map<String, String> slSI = {
'right': 'Desno', 'right': 'Desno',
'checkConnectionStatusFailed': 'Preverjanje stanja povezave ni uspelo', 'checkConnectionStatusFailed': 'Preverjanje stanja povezave ni uspelo',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "Išči funkcije AI...", "searchAi": "Išči funkcije AI...",
"exploreSlogan": "Pametne slušalke, neskončne možnosti", "exploreSlogan": "Pametne slušalke, neskončne možnosti",
@ -263,12 +285,16 @@ const Map<String, String> slSI = {
'paymentException': 'Izjema pri plačilu', 'paymentException': 'Izjema pri plačilu',
'paymentLaunchFailed': 'Zagon plačila ni uspel', 'paymentLaunchFailed': 'Zagon plačila ni uspel',
'paymentExceptionWithError': 'Izjema pri plačilu: @error', 'paymentExceptionWithError': 'Izjema pri plačilu: @error',
'paymentProcessingCheckLater': 'Vaše naročilo se obdeluje. Preverite pozneje.', 'paymentProcessingCheckLater':
'paymentResultQueryException': 'Poizvedba o rezultatu plačila ni uspela: @error', 'Vaše naročilo se obdeluje. Preverite pozneje.',
'orderConfirmedQuotaRefreshed': 'Naročilo je potrjeno. Vaša kvota je bila osvežena.', 'paymentResultQueryException':
'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…', 'paymentCompletedConfirming': 'Plačilo je zaključeno. Potrjevanje…',
'paymentCancelled': 'Plačilo je preklicano', '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', 'paypalOpenFailed': 'Ni mogoče odpreti strani za plačilo PayPal',
'paymentTestTitle': 'Test plačila', 'paymentTestTitle': 'Test plačila',
'paymentTestOrderInfo': 'Informacije o testnem naročilu', 'paymentTestOrderInfo': 'Informacije o testnem naročilu',
@ -285,7 +311,8 @@ const Map<String, String> slSI = {
'errorInfoWithMessage': 'Napaka: @message', 'errorInfoWithMessage': 'Napaka: @message',
'retest': 'Ponovno testiraj', 'retest': 'Ponovno testiraj',
'paymentTestInstructionsTitle': 'Navodila', '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...', 'startingWechatPayment': 'Zaganjanje WeChat Pay...',
'startingAlipayPayment': 'Zaganjanje Alipay...', 'startingAlipayPayment': 'Zaganjanje Alipay...',
'wechatPaymentSuccess': 'Plačilo WeChat Pay uspešno!', 'wechatPaymentSuccess': 'Plačilo WeChat Pay uspešno!',
@ -546,11 +573,13 @@ const Map<String, String> slSI = {
'description': 'Opis', 'description': 'Opis',
'template': 'Predloga', 'template': 'Predloga',
'deleteTemplate': 'Izbriši predlogo', 'deleteTemplate': 'Izbriši predlogo',
'deleteTemplateConfirm': 'Ali ste prepričani, da želite izbrisati to predlogo?', 'deleteTemplateConfirm':
'Ali ste prepričani, da želite izbrisati to predlogo?',
'editTemplate': 'Uredi predlogo', 'editTemplate': 'Uredi predlogo',
'createTemplate': 'Ustvari predlogo', 'createTemplate': 'Ustvari predlogo',
'name': 'Ime', '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', 'inputNameHint': 'Prosimo vnesite ime',
'inputDescHint': 'Prosimo vnesite opis', 'inputDescHint': 'Prosimo vnesite opis',
'custom': 'Po meri', 'custom': 'Po meri',
@ -827,7 +856,8 @@ const Map<String, String> slSI = {
"swipeUpForMore": "Povlecite navzgor za več", "swipeUpForMore": "Povlecite navzgor za več",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'Ko je vklopljeno: AI ne bo prekinjen z vašim glasom med govorjenjem in lahko obdela le en krog pogovora naenkrat. Za začetek novega kroga preprosto izgovorite prebujeno besedo.', 'voice_interrupt_tip':
'Ko je vklopljeno: AI ne bo prekinjen z vašim glasom med govorjenjem in lahko obdela le en krog pogovora naenkrat. Za začetek novega kroga preprosto izgovorite prebujeno besedo.',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -884,6 +914,13 @@ const Map<String, String> slSI = {
'Želimo vedeti, zakaj prijavljate, lahko opišete težavo, s katero ste se soočili.', 'Želimo vedeti, zakaj prijavljate, lahko opišete težavo, s katero ste se soočili.',
'generatedByAi': 'Generirano s strani AI', 'generatedByAi': 'Generirano s strani AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:', 'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:',
'playList': 'Seznam predvajanja', 'playList': 'Seznam predvajanja',
@ -904,6 +941,29 @@ const Map<String, String> slSI = {
"bicycling": "Kolesarjenje", "bicycling": "Kolesarjenje",
"tsransit": "Javni prevoz", "tsransit": "Javni prevoz",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Poizvedba o vremenskih razmerah:', 'weatherQuery': 'Poizvedba o vremenskih razmerah:',
'highest': 'Najvišja', 'highest': 'Najvišja',
@ -976,8 +1036,19 @@ const Map<String, String> slSI = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "Language detection failed", "languageDetectionFailed": "Language detection failed",
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Disable Floating Window',
'enableFloatingWindow': 'Enable Floating Window',
'permissionTip': 'Permission Tip',
'micPermissionRequiredForRecording':
'Microphone permission is required for recording',
'deleteTranslationRecordError': 'Error deleting translation record: @error',
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Vnesite besedilo za prevod",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -1253,9 +1324,11 @@ const Map<String, String> slSI = {
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigacija poteka', 'native.notification.navigation.title': 'Navigacija poteka',
'native.notification.navigation.keepRunning': 'Navigacija, ohranite aplikacijo zagnano', 'native.notification.navigation.keepRunning':
'Navigacija, ohranite aplikacijo zagnano',
'native.notification.bleAgent.running': 'Glasovni pomočnik deluje', '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.waiting': 'Čakanje na predvajanje',
'native.notification.music.previous': 'Prejšnja', 'native.notification.music.previous': 'Prejšnja',
'native.notification.music.next': 'Naslednja', 'native.notification.music.next': 'Naslednja',
@ -1402,6 +1475,59 @@ const Map<String, String> slSI = {
"removeEarbudsEnsureBattery": "removeEarbudsEnsureBattery":
"Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%", "Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaUpgradeSuccess': 'Upgrade Successful',
'otaUpgradeCompleteRepair':
'Firmware upgrade complete!\n\nDevice needs to be re-paired to work properly. Go to pairing page now?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'Error checking BLE connection: @error',
'otaBleNotConnected': 'BLE Device Not Connected',
'otaBleNeedConnection':
'Firmware upgrade requires BLE device connection\nPlease ensure device is properly connected and try again',
'otaDeviceInfoUnavailableTitle': 'Device Info Unavailable',
'otaCannotGetDeviceInfo':
'Cannot get device info\nPlease reconnect device or try again later',
'otaBleCheckFailed': 'BLE Connection Check Failed',
'otaCannotGetDeviceInfoCheckConnection':
'Cannot get device info, please check device connection',
'otaCannotGetProductInfoWithName':
'Cannot get product info, device name: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaSingleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: battery must be above 20%\nCurrent: @ear @battery%\nPlease charge and try again',
'otaDoubleBatteryLow':
'Device battery too low for firmware upgrade\nRequirement: both earbuds must be above 20%\nCurrent: Left @left%, Right @right%\nPlease charge and try again',
'otaBatteryCheckFailed': 'Battery Check Failed',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'otaGetLatestVersionFailed': 'Failed to get latest version info',
'otaGetVersionInfoFailed': 'Failed to get version info',
'otaCheckingDeviceStatus': 'Checking device status...',
'otaDownloadFailedCheckNetwork':
'Download failed, please check network connection',
'otaDownloadFailed': 'Download Failed',
'otaPreparingConnection': 'Preparing device connection...',
'otaConnectingDevice': 'Connecting to device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeSuccessComplete': 'Upgrade completed successfully',
'otaUpgradeFailedWithCode': 'Upgrade failed, error code: @code',
'otaUpgradeFailedTitle': 'Upgrade Failed',
'otaUpgradeFailedDesc':
'Please check device connection or update package, error code: @code',
'otaDeviceDisconnected': 'Device disconnected',
'otaDeviceConnected': 'Device connected',
// 音乐模块 // 音乐模块
"noMusic": "Ni glasbe", // 暂无音乐 "noMusic": "Ni glasbe", // 暂无音乐
"noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐 "noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐

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

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

@ -1,5 +1,4 @@
const Map<String, String> thTH = { const Map<String, String> thTH = {
// 通用 // 通用
'continue': 'ดำเนินการต่อ', 'continue': 'ดำเนินการต่อ',
'confirm': 'ยืนยัน', 'confirm': 'ยืนยัน',
@ -99,14 +98,16 @@ const Map<String, String> thTH = {
"tip": "เคล็ดลับ", "tip": "เคล็ดลับ",
"pleaseEnterCompleteCode": "กรุณากรอกรหัสยืนยันให้ครบถ้วน", "pleaseEnterCompleteCode": "กรุณากรอกรหัสยืนยันให้ครบถ้วน",
"loginFailed": "เข้าสู่ระบบล้มเหลว กรุณาลองใหม่", "loginFailed": "เข้าสู่ระบบล้มเหลว กรุณาลองใหม่",
'pleaseAcceptPrivacyPolicy': 'กรุณาอ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้ก่อน', 'pleaseAcceptPrivacyPolicy':
'กรุณาอ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้ก่อน',
"enterVerificationCode": "กรอกรหัสยืนยัน", "enterVerificationCode": "กรอกรหัสยืนยัน",
"verificationCodeSentTo": "รหัสยืนยันถูกส่งไปยัง", "verificationCodeSentTo": "รหัสยืนยันถูกส่งไปยัง",
"resendVerificationCode": "ส่งรหัสยืนยันอีกครั้ง", "resendVerificationCode": "ส่งรหัสยืนยันอีกครั้ง",
"login": "เข้าสู่ระบบ", "login": "เข้าสู่ระบบ",
"usePasswordLogin": "เข้าสู่ระบบด้วยรหัสผ่าน", "usePasswordLogin": "เข้าสู่ระบบด้วยรหัสผ่าน",
"loginDeclaration": "คำประกาศของ Voitrans", // Voitrans 声明 "loginDeclaration": "คำประกาศของ Voitrans", // Voitrans 声明
"welcomeToThisApp": "ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读 "welcomeToThisApp":
"ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读
"privacyPolicyText": "privacyPolicyText":
",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "ไม่ยอมรับ", // 不同意 "disagree": "ไม่ยอมรับ", // 不同意
@ -126,7 +127,8 @@ const Map<String, String> thTH = {
"aiAssistant": "ผู้ช่วย AI รอบด้าน", "aiAssistant": "ผู้ช่วย AI รอบด้าน",
"aiAssistantInfo": "ที่ปรึกษาส่วนตัว 24 ชั่วโมง ตอบคำถาม ให้คำแนะนำ", "aiAssistantInfo": "ที่ปรึกษาส่วนตัว 24 ชั่วโมง ตอบคำถาม ให้คำแนะนำ",
"interpretation": "การแปลภาษาพร้อมกัน", "interpretation": "การแปลภาษาพร้อมกัน",
"simultaneousInterpretationInfo": "แปลหลายภาษาแบบเรียลไทม์ เดินทางต่างประเทศไร้กังวล", "simultaneousInterpretationInfo":
"แปลหลายภาษาแบบเรียลไทม์ เดินทางต่างประเทศไร้กังวล",
"aiCompanion": "เพื่อนคู่คิดสำหรับครอบครัว", "aiCompanion": "เพื่อนคู่คิดสำหรับครอบครัว",
"aiCompanionInfo": "เข้าใจคุณ อยู่เคียงข้างอย่างอบอุ่น", "aiCompanionInfo": "เข้าใจคุณ อยู่เคียงข้างอย่างอบอุ่น",
"homeSlogan": "เชื่อมต่อโลก เหนือกว่าเสียง", "homeSlogan": "เชื่อมต่อโลก เหนือกว่าเสียง",
@ -161,6 +163,29 @@ const Map<String, String> thTH = {
'right': 'ขวา', 'right': 'ขวา',
'checkConnectionStatusFailed': 'ตรวจสอบสถานะการเชื่อมต่อล้มเหลว', 'checkConnectionStatusFailed': 'ตรวจสอบสถานะการเชื่อมต่อล้มเหลว',
// 蓝牙扫描模块
'bleInitFailedWithError': 'Bluetooth initialization failed: @error',
'needBluetoothAndLocationPermission':
'Bluetooth and location permissions are required to scan devices',
'permissionRequestFailedWithError': 'Permission request failed: @error',
'needPermission': 'Permission Required',
'blePermissionDialogContent':
'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.',
'needEnableBluetooth': 'Enable Bluetooth',
'enableBluetoothDialogContent':
'Please enable Bluetooth to scan and connect devices.',
'bleScanFailedWithError': 'Scan failed: @error',
'bleConnectionSuccess': 'Connection Successful',
'bleConnectedToDevice': 'Connected to @device',
'bleConnectionFailedWithError': 'Connection failed: @error',
'bleDisconnected': 'Disconnected',
'bleDeviceDisconnected': 'Device disconnected',
'bleDisconnectFailedWithError': 'Disconnect failed: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
// 发现页 // 发现页
"searchAi": "ค้นหาฟังก์ชัน AI...", "searchAi": "ค้นหาฟังก์ชัน AI...",
"exploreSlogan": "หูฟังอัจฉริยะ ความเป็นไปได้ไม่สิ้นสุด", "exploreSlogan": "หูฟังอัจฉริยะ ความเป็นไปได้ไม่สิ้นสุด",
@ -222,7 +247,8 @@ const Map<String, String> thTH = {
"audioFileSize": "Audio File Size", "audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes", "transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed", "loadFailed": "Load Failed",
"statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete", "cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days", "cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature", "exportFeature": "Export Feature",
@ -252,9 +278,11 @@ const Map<String, String> thTH = {
'paymentException': 'การชำระเงินผิดปกติ', 'paymentException': 'การชำระเงินผิดปกติ',
'paymentLaunchFailed': 'ไม่สามารถเปิดการชำระเงินได้', 'paymentLaunchFailed': 'ไม่สามารถเปิดการชำระเงินได้',
'paymentExceptionWithError': 'การชำระเงินผิดปกติ: @error', 'paymentExceptionWithError': 'การชำระเงินผิดปกติ: @error',
'paymentProcessingCheckLater': 'คำสั่งซื้อของคุณกำลังดำเนินการ กรุณาตรวจสอบภายหลัง', 'paymentProcessingCheckLater':
'คำสั่งซื้อของคุณกำลังดำเนินการ กรุณาตรวจสอบภายหลัง',
'paymentResultQueryException': 'ไม่สามารถสอบถามผลการชำระเงินได้: @error', 'paymentResultQueryException': 'ไม่สามารถสอบถามผลการชำระเงินได้: @error',
'orderConfirmedQuotaRefreshed': 'ยืนยันคำสั่งซื้อแล้ว โควตาของคุณได้รับการรีเฟรชแล้ว', 'orderConfirmedQuotaRefreshed':
'ยืนยันคำสั่งซื้อแล้ว โควตาของคุณได้รับการรีเฟรชแล้ว',
'paymentCompletedConfirming': 'ชำระเงินเสร็จสิ้น กำลังยืนยัน…', 'paymentCompletedConfirming': 'ชำระเงินเสร็จสิ้น กำลังยืนยัน…',
'paymentCancelled': 'ยกเลิกการชำระเงินแล้ว', 'paymentCancelled': 'ยกเลิกการชำระเงินแล้ว',
'paypalOpenedCompleteInBrowser': 'PayPal เปิดแล้ว กรุณาชำระเงินในเบราว์เซอร์', 'paypalOpenedCompleteInBrowser': 'PayPal เปิดแล้ว กรุณาชำระเงินในเบราว์เซอร์',
@ -274,7 +302,8 @@ const Map<String, String> thTH = {
'errorInfoWithMessage': 'ข้อผิดพลาด: @message', 'errorInfoWithMessage': 'ข้อผิดพลาด: @message',
'retest': 'ทดสอบอีกครั้ง', 'retest': 'ทดสอบอีกครั้ง',
'paymentTestInstructionsTitle': 'คำแนะนำ', 'paymentTestInstructionsTitle': 'คำแนะนำ',
'paymentTestInstructionsContent': '1. เลือกจำนวนเงินทดสอบ (แนะนำ: ¥0.01)\n2. กดปุ่มชำระเงินเพื่อเริ่มต้น\n3. ชำระเงินในแอปชำระเงิน\n4. กลับมาตรวจสอบผลลัพธ์', 'paymentTestInstructionsContent':
'1. เลือกจำนวนเงินทดสอบ (แนะนำ: ¥0.01)\n2. กดปุ่มชำระเงินเพื่อเริ่มต้น\n3. ชำระเงินในแอปชำระเงิน\n4. กลับมาตรวจสอบผลลัพธ์',
'startingWechatPayment': 'กำลังเปิด WeChat Pay...', 'startingWechatPayment': 'กำลังเปิด WeChat Pay...',
'startingAlipayPayment': 'กำลังเปิด Alipay...', 'startingAlipayPayment': 'กำลังเปิด Alipay...',
'wechatPaymentSuccess': 'ชำระเงินผ่าน WeChat Pay สำเร็จ!', 'wechatPaymentSuccess': 'ชำระเงินผ่าน WeChat Pay สำเร็จ!',
@ -289,9 +318,11 @@ const Map<String, String> thTH = {
'cannotLaunchAlipayPayment': 'ไม่สามารถเปิด Alipay ได้', 'cannotLaunchAlipayPayment': 'ไม่สามารถเปิด Alipay ได้',
'alipayPaymentException': 'Alipay ผิดปกติ', 'alipayPaymentException': 'Alipay ผิดปกติ',
"insufficientIntegral": "Insufficient integral", "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", "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商品页 // 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation', 'musicAndRecommendation': 'Music & Recommendation',
@ -299,11 +330,15 @@ const Map<String, String> thTH = {
'nearbySearch': 'Nearby Search', 'nearbySearch': 'Nearby Search',
'newsInformation': 'News', 'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant', 'communicationAssistant': 'Communication Assistant',
'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc1':
'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', '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', 'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', 'smartPlaylistAndSimilarRecommendations':
'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', 'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast', 'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
@ -312,32 +347,39 @@ const Map<String, String> thTH = {
'hotNewsAndTopicOverview': 'Hot news and topic overview', 'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS', 'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'templatedMessagesAndScheduleReminders':
'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', 'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 商品模块 - 翻译商品页 // 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription', 'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary', 'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles', '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.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation', 'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation', 'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve': 'Terminology optimization and context preservation', 'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory', 'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast', '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', 'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary', 'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search', 'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing', 'collaborationSharing': 'Collaboration & Sharing',
'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc1':
'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', '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', 'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling', 'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription', 'meetingLongAudioTranscription': 'Long audio transcription',
@ -346,7 +388,8 @@ const Map<String, String> thTH = {
'meetingTimelineJump': 'Timeline jump', 'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes', 'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms', '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会员页 // 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview', 'benefitsOverview': 'Benefits overview',
@ -361,7 +404,8 @@ const Map<String, String> thTH = {
'generalPrivileges': 'General privileges', 'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features', 'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync', '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', 'ai_001_name': 'AI Basic 100',
@ -411,7 +455,8 @@ const Map<String, String> thTH = {
'guideNavInput': 'Navigate to Shenzhen Airport', 'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route', 'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands', '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', 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder', 'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands', 'guideMeetingEnd': 'Reminder created—try other commands',
@ -459,7 +504,8 @@ const Map<String, String> thTH = {
'downloadingFiles': 'Downloading files...', 'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}', 'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete', '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模块 - 录音功能 // Meeting模块 - 录音功能
'startRecording': 'Start Recording', 'startRecording': 'Start Recording',
@ -472,11 +518,15 @@ const Map<String, String> thTH = {
'meetingRecordEndAndSave': 'จบและบันทึก', // 结束录音并保存 'meetingRecordEndAndSave': 'จบและบันทึก', // 结束录音并保存
'meetingRecordEndWithoutSave': 'จบโดยไม่บันทึก', // 结束录音不保存 'meetingRecordEndWithoutSave': 'จบโดยไม่บันทึก', // 结束录音不保存
'meetingRecordContinueInBackground': 'บันทึกต่อในพื้นหลัง', // 后台继续录音 'meetingRecordContinueInBackground': 'บันทึกต่อในพื้นหลัง', // 后台继续录音
'meetingRecordStopTimeout': 'หมดเวลาหยุดการบันทึก โปรดลองอีกครั้ง', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'หยุดการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 结束录音失败,请重试 'หมดเวลาหยุดการบันทึก โปรดลองอีกครั้ง', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'บันทึกการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 保存录音失败,请重试 'meetingRecordStopFailed':
'หยุดการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 结束录音失败,请重试
'meetingRecordSaveFailed':
'บันทึกการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 保存录音失败,请重试
'meetingRecordRecordingNotificationTitle': 'กำลังบันทึก', // 录音进行中 'meetingRecordRecordingNotificationTitle': 'กำลังบันทึก', // 录音进行中
'meetingRecordRecordingNotificationBody': 'กำลังบันทึกในพื้นหลัง แตะเพื่อกลับไปที่แอป', // 正在后台录音,点击返回应用 'meetingRecordRecordingNotificationBody':
'กำลังบันทึกในพื้นหลัง แตะเพื่อกลับไปที่แอป', // 正在后台录音,点击返回应用
'overlayPermissionTitle': 'สิทธิ์หน้าต่างลอย', // 悬浮窗权限 'overlayPermissionTitle': 'สิทธิ์หน้าต่างลอย', // 悬浮窗权限
'overlayPermissionTranslationDesc': 'overlayPermissionTranslationDesc':
'เพื่อแสดงผลการแปลระหว่างการโทรหรือการแปลเสียง/วิดีโอ เราต้องใช้สิทธิ์แสดงทับแอปอื่น ซึ่งจะทำให้คุณเห็นคำแปลแบบเรียลไทม์ขณะใช้แอปอื่นได้', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 'เพื่อแสดงผลการแปลระหว่างการโทรหรือการแปลเสียง/วิดีโอ เราต้องใช้สิทธิ์แสดงทับแอปอื่น ซึ่งจะทำให้คุณเห็นคำแปลแบบเรียลไทม์ขณะใช้แอปอื่นได้', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。
@ -518,7 +568,8 @@ const Map<String, String> thTH = {
'editTemplate': 'แก้ไขเทมเพลต', 'editTemplate': 'แก้ไขเทมเพลต',
'createTemplate': 'สร้างเทมเพลต', 'createTemplate': 'สร้างเทมเพลต',
'name': 'ชื่อ', 'name': 'ชื่อ',
'templateContentHint': 'กรุณาป้อนเนื้อหาเทมเพลต! เคล็ดลับ: กดปุ่ม AI ด้านบนเพื่อสร้างเนื้อหาเทมเพลตอย่างรวดเร็วตามชื่อและคำอธิบายที่คุณป้อน', 'templateContentHint':
'กรุณาป้อนเนื้อหาเทมเพลต! เคล็ดลับ: กดปุ่ม AI ด้านบนเพื่อสร้างเนื้อหาเทมเพลตอย่างรวดเร็วตามชื่อและคำอธิบายที่คุณป้อน',
'inputNameHint': 'กรุณาป้อนชื่อ', 'inputNameHint': 'กรุณาป้อนชื่อ',
'inputDescHint': 'กรุณาป้อนคำอธิบาย', 'inputDescHint': 'กรุณาป้อนคำอธิบาย',
'custom': 'กำหนดเอง', 'custom': 'กำหนดเอง',
@ -528,7 +579,8 @@ const Map<String, String> thTH = {
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now', 'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.', 'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc': '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模块 - 文件操作 // Meeting模块 - 文件操作
'importing': 'Importing...', 'importing': 'Importing...',
@ -575,7 +627,8 @@ const Map<String, String> thTH = {
'recentlyUsedNames': 'Recently Used Names', 'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph', 'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time', 'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', 'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步 // Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud', 'syncToCloud': 'Sync to Cloud',
@ -618,38 +671,52 @@ const Map<String, String> thTH = {
'audioImport': 'Audio Import', 'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats', 'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates', 'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc': 'Professional template design to improve your work efficiency. Customized according to industry needs.', 'professionalTemplateDesc':
'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'Professional template design to improve your work efficiency. Customized according to industry needs.',
'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.', 'customTemplateDesc':
'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'templateCommunityDesc': 'Discover, share, and get inspiration from the template library created by users.', 'askAiDesc':
'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.', 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'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.', 'visualMindMapDesc':
'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'templateCommunityDesc':
'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', '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', 'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription', 'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription', 'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month', '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', 'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month', '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.', 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120', 'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month', 'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe', 'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198', 'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month', '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', 'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes', 'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes', 'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes', 'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes', 'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ', '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', 'purchase': 'Purchase',
// Meeting模块 - 录音语言 // Meeting模块 - 录音语言
@ -682,7 +749,8 @@ const Map<String, String> thTH = {
"cloudSync": "การเติมเงินการ đồng bộ hóaคลาวด์", "cloudSync": "การเติมเงินการ đồng bộ hóaคลาวด์",
"memberService": "Member Service", "memberService": "Member Service",
"bindRewardTitle": "Rewards", "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": "อุปกรณ์ที่เชื่อมต่อ:", "joinDevice": "อุปกรณ์ที่เชื่อมต่อ:",
"accountId": "ID บัญชี:", "accountId": "ID บัญชี:",
"systemSetting": "การตั้งค่าระบบ", "systemSetting": "การตั้งค่าระบบ",
@ -695,7 +763,8 @@ const Map<String, String> thTH = {
"privacySettings": "การตั้งค่าความเป็นส่วนตัว", "privacySettings": "การตั้งค่าความเป็นส่วนตัว",
"privacySettingsInfo": "จัดการการรวบรวมข้อมูลและสิทธิ์", "privacySettingsInfo": "จัดการการรวบรวมข้อมูลและสิทธิ์",
"permissionManagement": "การจัดการสิทธิ์", // 权限管理 "permissionManagement": "การจัดการสิทธิ์", // 权限管理
"permissionManagementInfo": "จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน", // 管理应用权限设置 "permissionManagementInfo":
"จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน", // 管理应用权限设置
"aboutApplication": "เกี่ยวกับแอปพลิเคชัน", "aboutApplication": "เกี่ยวกับแอปพลิเคชัน",
"versions": "เวอร์ชัน", "versions": "เวอร์ชัน",
"checkUpdates": "ตรวจสอบการอัปเดต", "checkUpdates": "ตรวจสอบการอัปเดต",
@ -704,9 +773,11 @@ const Map<String, String> thTH = {
"voiceServiceInfo": "เลือกบริการรู้จำและสังเคราะห์เสียง", "voiceServiceInfo": "เลือกบริการรู้จำและสังเคราะห์เสียง",
"selectVoiceService": "เลือกบริการเสียง", "selectVoiceService": "เลือกบริการเสียง",
"azureVoiceService": "บริการเสียง Azure", "azureVoiceService": "บริการเสียง Azure",
"azureVoiceServiceInfo": "บริการเสียงบนคลาวด์ของ Microsoft รองรับการสังเคราะห์และรู้จำเสียงคุณภาพสูง", "azureVoiceServiceInfo":
"บริการเสียงบนคลาวด์ของ Microsoft รองรับการสังเคราะห์และรู้จำเสียงคุณภาพสูง",
"flutterVoiceService": "บริการเสียงในเครื่อง Flutter", "flutterVoiceService": "บริการเสียงในเครื่อง Flutter",
"flutterVoiceServiceInfo": "บริการเสียงในเครื่องของอุปกรณ์ สามารถใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต", "flutterVoiceServiceInfo":
"บริการเสียงในเครื่องของอุปกรณ์ สามารถใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต",
'timbreService': 'บริการโทนเสียง', 'timbreService': 'บริการโทนเสียง',
'timbreServiceInfo': 'เลือกบริการสังเคราะห์เสียงด้วยโทนเสียง', 'timbreServiceInfo': 'เลือกบริการสังเคราะห์เสียงด้วยโทนเสียง',
'defaultTimbre': 'โทนเสียงเริ่มต้น', 'defaultTimbre': 'โทนเสียงเริ่มต้น',
@ -724,7 +795,8 @@ const Map<String, String> thTH = {
'checkUpdateFailed': 'ตรวจสอบการอัปเดตล้มเหลว', 'checkUpdateFailed': 'ตรวจสอบการอัปเดตล้มเหลว',
'networkErrorRetry': 'ข้อผิดพลาดเครือข่าย กรุณาลองใหม่ในภายหลัง', 'networkErrorRetry': 'ข้อผิดพลาดเครือข่าย กรุณาลองใหม่ในภายหลัง',
"realtimeVoiceChat": "แชทเสียงแบบเรียลไทม์", "realtimeVoiceChat": "แชทเสียงแบบเรียลไทม์",
"realtimeVoiceChatInfo": "สัมผัสประสบการณ์การโต้ตอบด้วยเสียงอัจฉริยะ (ตัวอย่างฟังก์ชัน)", "realtimeVoiceChatInfo":
"สัมผัสประสบการณ์การโต้ตอบด้วยเสียงอัจฉริยะ (ตัวอย่างฟังก์ชัน)",
"loading": "กำลังโหลด...", "loading": "กำลังโหลด...",
// 设备管理模块 // 设备管理模块
@ -772,7 +844,8 @@ const Map<String, String> thTH = {
"swipeUpForMore": "ปัดขึ้นเพื่อดูเพิ่มเติม", "swipeUpForMore": "ปัดขึ้นเพื่อดูเพิ่มเติม",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "voice_interrupt": "Interrupt", // 语音打断
'voice_interrupt_tip': 'เมื่อเปิดใช้งาน: AI จะไม่ถูกขัดจังหวะโดยเสียงของคุณขณะพูด และสามารถจัดการได้เพียงหนึ่งรอบการสนทนา หากต้องการเริ่มรอบใหม่ เพียงพูดคำปลุก', 'voice_interrupt_tip':
'เมื่อเปิดใช้งาน: AI จะไม่ถูกขัดจังหวะโดยเสียงของคุณขณะพูด และสามารถจัดการได้เพียงหนึ่งรอบการสนทนา หากต้องการเริ่มรอบใหม่ เพียงพูดคำปลุก',
// Agent模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -795,10 +868,14 @@ const Map<String, String> thTH = {
'• 控制耳机功能\n\n' '• 控制耳机功能\n\n'
'有什么我可以帮你的吗?', '有什么我可以帮你的吗?',
'microphonePermission': 'ไมโครโฟน', 'microphonePermission': 'ไมโครโฟน',
'voiceRecognitionPermissionText': 'ฟังก์ชันรู้จำเสียงต้องการการเข้าถึงไมโครโฟน', 'voiceRecognitionPermissionText':
'voiceTranslationPermissionText': 'ฟังก์ชันรู้จำและแปลเสียงต้องการการเข้าถึงไมโครโฟน', 'ฟังก์ชันรู้จำเสียงต้องการการเข้าถึงไมโครโฟน',
'phoneCallPermissionText': 'ฟังก์ชันโทรออกต้องการการเข้าถึงไมโครโฟนสำหรับการโทรด้วยเสียง', 'voiceTranslationPermissionText':
'permissionDeniedText': 'คุณได้ปฏิเสธการอนุญาตใช้ไมโครโฟนอย่างถาวร โปรดไปที่การตั้งค่าระบบเพื่อเปิดใช้งาน', 'ฟังก์ชันรู้จำและแปลเสียงต้องการการเข้าถึงไมโครโฟน',
'phoneCallPermissionText':
'ฟังก์ชันโทรออกต้องการการเข้าถึงไมโครโฟนสำหรับการโทรด้วยเสียง',
'permissionDeniedText':
'คุณได้ปฏิเสธการอนุญาตใช้ไมโครโฟนอย่างถาวร โปรดไปที่การตั้งค่าระบบเพื่อเปิดใช้งาน',
'startVoiceInput': 'เริ่มการป้อนข้อมูลด้วยเสียง', 'startVoiceInput': 'เริ่มการป้อนข้อมูลด้วยเสียง',
'startPhoneCallMode': 'เริ่มโหมดโทรศัพท์ เริ่มการป้อนข้อมูลด้วยเสียง', 'startPhoneCallMode': 'เริ่มโหมดโทรศัพท์ เริ่มการป้อนข้อมูลด้วยเสียง',
@ -820,9 +897,17 @@ const Map<String, String> thTH = {
'privacyRelated': 'เกี่ยวกับความเป็นส่วนตัว', 'privacyRelated': 'เกี่ยวกับความเป็นส่วนตัว',
'copyrightViolation': 'ละเมิดลิขสิทธิ์ ชื่อเสียง ฯลฯ ของฉัน', 'copyrightViolation': 'ละเมิดลิขสิทธิ์ ชื่อเสียง ฯลฯ ของฉัน',
'other': 'อื่นๆ', 'other': 'อื่นๆ',
'reportDescriptionHint': 'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้', 'reportDescriptionHint':
'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้',
'generatedByAi': 'สร้างโดย AI', 'generatedByAi': 'สร้างโดย AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
// Agent模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'นี่คือเพลงที่แนะนำบางส่วน:', 'recommendedMusic': 'นี่คือเพลงที่แนะนำบางส่วน:',
'playList': 'เพลย์ลิสต์', 'playList': 'เพลย์ลิสต์',
@ -843,19 +928,49 @@ const Map<String, String> thTH = {
"bicycling": "ขี่จักรยาน", "bicycling": "ขี่จักรยาน",
"tsransit": "ขนส่งสาธารณะ", "tsransit": "ขนส่งสาธารณะ",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'navigationStartFailed': 'Failed to start navigation',
'cannotPlayMusicListRetryLater':
'Cannot play music list, please try again later',
'cannotPlaySong': 'Cannot play song',
'openMapError': 'Error opening map',
'pleaseInstallAmapApp': 'Please install the Amap app first',
'pleaseInstallBaiduMapApp': 'Please install the Baidu Maps app first',
'appleMapStartFailed': 'Apple Maps failed to start',
'appleMapUnavailable': 'Apple Maps unavailable',
'openAppleMapError': 'Error opening Apple Maps',
// Agent模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'กำลังสอบถามสภาพอากาศ:', 'weatherQuery': 'กำลังสอบถามสภาพอากาศ:',
'highest': 'สูงสุด', 'highest': 'สูงสุด',
'lowest': 'ต่ำสุด', 'lowest': 'ต่ำสุด',
'futureForecast': 'พยากรณ์อากาศล่วงหน้า', 'futureForecast': 'พยากรณ์อากาศล่วงหน้า',
'hotWeatherTip': 'วันนี้อากาศร้อน โปรดระวังโรคลมแดด ดื่มน้ำมากๆ', 'hotWeatherTip': 'วันนี้อากาศร้อน โปรดระวังโรคลมแดด ดื่มน้ำมากๆ',
'coldWeatherTip': 'วันนี้อากาศเย็น โปรดใส่ใจเรื่องความอบอุ่นเมื่อออกไปข้างนอก ระวังเป็นหวัด', 'coldWeatherTip':
'rainyWeatherTip': 'วันนี้มีฝน โปรดพกร่มเมื่อออกไปข้างนอก ระมัดระวังในการเดินทาง', 'วันนี้อากาศเย็น โปรดใส่ใจเรื่องความอบอุ่นเมื่อออกไปข้างนอก ระวังเป็นหวัด',
'snowyWeatherTip': 'วันนี้มีหิมะ ถนนลื่นโปรดระวังความปลอดภัย เตรียมมาตรการป้องกันความหนาว', 'rainyWeatherTip':
'foggyWeatherTip': 'วันนี้มีหมอก ทัศนวิสัยต่ำ โปรดสวมหน้ากากเมื่อออกไปข้างนอก', 'วันนี้มีฝน โปรดพกร่มเมื่อออกไปข้างนอก ระมัดระวังในการเดินทาง',
'windyWeatherTip': 'วันนี้ลมแรง โปรดระวังความปลอดภัยเมื่อออกไปข้างนอก ยึดของให้แน่น', 'snowyWeatherTip':
'sunnyWeatherTip': 'วันนี้แดดจัด รังสียูวีแรง โปรดป้องกันแสงแดดเมื่อออกไปข้างนอก', 'วันนี้มีหิมะ ถนนลื่นโปรดระวังความปลอดภัย เตรียมมาตรการป้องกันความหนาว',
'temperatureDifferenceTip': 'วันนี้อุณหภูมิต่างกันมากระหว่างกลางวันและกลางคืน โปรดเพิ่มหรือลดเสื้อผ้าให้เหมาะสม', 'foggyWeatherTip':
'วันนี้มีหมอก ทัศนวิสัยต่ำ โปรดสวมหน้ากากเมื่อออกไปข้างนอก',
'windyWeatherTip':
'วันนี้ลมแรง โปรดระวังความปลอดภัยเมื่อออกไปข้างนอก ยึดของให้แน่น',
'sunnyWeatherTip':
'วันนี้แดดจัด รังสียูวีแรง โปรดป้องกันแสงแดดเมื่อออกไปข้างนอก',
'temperatureDifferenceTip':
'วันนี้อุณหภูมิต่างกันมากระหว่างกลางวันและกลางคืน โปรดเพิ่มหรือลดเสื้อผ้าให้เหมาะสม',
'comfortableWeatherTip': 'วันนี้อากาศดี เป็นเวลาที่ดีสำหรับกิจกรรมกลางแจ้ง', 'comfortableWeatherTip': 'วันนี้อากาศดี เป็นเวลาที่ดีสำหรับกิจกรรมกลางแจ้ง',
"monday": "จ.", "monday": "จ.",
"tuesday": "อ.", "tuesday": "อ.",
@ -900,13 +1015,25 @@ const Map<String, String> thTH = {
"selectTargetLanguage": "เลือกภาษาเป้าหมาย", "selectTargetLanguage": "เลือกภาษาเป้าหมาย",
"me": "Me", "me": "Me",
"counterPart": "Counterpart", "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", // 自动检测 "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", "languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "กรุณากรอกข้อความที่ต้องการแปล",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -914,10 +1041,12 @@ const Map<String, String> thTH = {
"historyRecords": "History Records", "historyRecords": "History Records",
"clearResults": "Clear Results", "clearResults": "Clear Results",
"clearHistory": "ล้างประวัติ", "clearHistory": "ล้างประวัติ",
"clearHistoryConfirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้", "clearHistoryConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้",
"unknownLanguage": "ภาษาที่ไม่รู้จัก", "unknownLanguage": "ภาษาที่ไม่รู้จัก",
"deleteSessionRecord": "ลบบันทึกเซสชัน", "deleteSessionRecord": "ลบบันทึกเซสชัน",
"deleteSessionConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", "deleteSessionConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
// 翻译模块 - 图片翻译 // 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source", "selectImageSource": "Select Image Source",
@ -949,15 +1078,20 @@ const Map<String, String> thTH = {
"translationCompleted": "Translation Completed", "translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed", "allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed", "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", "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", "emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", "imageTranslationFailedTryLater":
"imageTranslationApiException": "Image translation API exception. Check network and retry", "Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required", "permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos", "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", "translationDetails": "Translation Details",
"originalImage": "Original Image", "originalImage": "Original Image",
"sourceLanguage": "Source Language", "sourceLanguage": "Source Language",
@ -988,9 +1122,11 @@ const Map<String, String> thTH = {
"summaryGenerated": "สร้างสรุปแล้ว", "summaryGenerated": "สร้างสรุปแล้ว",
"generating": "กำลังสร้าง...", "generating": "กำลังสร้าง...",
"regenerate": "สร้างใหม่", "regenerate": "สร้างใหม่",
"summaryTimeoutMessage": "คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง", "summaryTimeoutMessage":
"คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง",
"deleteTranslationRecord": "ลบบันทึกการแปล", "deleteTranslationRecord": "ลบบันทึกการแปล",
"deleteTranslationConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", "deleteTranslationConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
"originalText": "ข้อความต้นฉบับ", "originalText": "ข้อความต้นฉบับ",
"translatedText": "ข้อความที่แปลแล้ว", "translatedText": "ข้อความที่แปลแล้ว",
"sessionSummary": "สรุปเซสชัน", "sessionSummary": "สรุปเซสชัน",
@ -1010,20 +1146,27 @@ const Map<String, String> thTH = {
"logout": "ออกจากระบบ", "logout": "ออกจากระบบ",
"logoutTips": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบบัญชีปัจจุบัน", "logoutTips": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบบัญชีปัจจุบัน",
'deleteAccount': 'ลบบัญชี', 'deleteAccount': 'ลบบัญชี',
'deleteAccountTips': 'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้', 'deleteAccountTips':
'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้',
'clean': 'Clear Cache', 'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?', 'cleanTips': 'Are you sure you want to clear personal cache?',
'networkConnectionFailed': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่', 'networkConnectionFailed':
'serverTemporarilyUnavailable': 'เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ชั่วคราว โปรดลองใหม่ในภายหลัง', 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่',
'loginExpiredPleaseRelogin': 'การเข้าสู่ระบบหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง', 'serverTemporarilyUnavailable':
'เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ชั่วคราว โปรดลองใหม่ในภายหลัง',
'loginExpiredPleaseRelogin':
'การเข้าสู่ระบบหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง',
'noPermissionForThisOperation': 'ไม่มีสิทธิ์ดำเนินการนี้', 'noPermissionForThisOperation': 'ไม่มีสิทธิ์ดำเนินการนี้',
'requestedResourceNotFound': 'ไม่พบทรัพยากรที่ร้องขอ', 'requestedResourceNotFound': 'ไม่พบทรัพยากรที่ร้องขอ',
'imageProcessingFailedPleaseReselect': 'การประมวลผลรูปภาพล้มเหลว โปรดเลือกรูปภาพอีกครั้ง', 'imageProcessingFailedPleaseReselect':
'การประมวลผลรูปภาพล้มเหลว โปรดเลือกรูปภาพอีกครั้ง',
'operationFailedPleaseRetry': 'การดำเนินการล้มเหลว โปรดลองใหม่', 'operationFailedPleaseRetry': 'การดำเนินการล้มเหลว โปรดลองใหม่',
'serverReturnedError': 'เซิร์ฟเวอร์ส่งคืนข้อผิดพลาด', 'serverReturnedError': 'เซิร์ฟเวอร์ส่งคืนข้อผิดพลาด',
'serverError': 'ข้อผิดพลาดของเซิร์ฟเวอร์', 'serverError': 'ข้อผิดพลาดของเซิร์ฟเวอร์',
'networkConnectionFailedCheckSettings': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่าย', 'networkConnectionFailedCheckSettings':
'serverInternalErrorRetryLater': 'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง', 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่าย',
'serverInternalErrorRetryLater':
'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง',
'imageCompressionFailed': 'การบีบอัดรูปภาพล้มเหลว', 'imageCompressionFailed': 'การบีบอัดรูปภาพล้มเหลว',
'avatarUpdateFailed': 'อัปเดตอวาตาร์ล้มเหลว', 'avatarUpdateFailed': 'อัปเดตอวาตาร์ล้มเหลว',
'usernameCannotBeEmpty': 'ชื่อผู้ใช้ต้องไม่ว่างเปล่า', 'usernameCannotBeEmpty': 'ชื่อผู้ใช้ต้องไม่ว่างเปล่า',
@ -1039,14 +1182,17 @@ const Map<String, String> thTH = {
'thirdPartyLogoutSuccess': 'ออกจากระบบบุคคลที่สามสำเร็จ', // 第三方登录退出成功 'thirdPartyLogoutSuccess': 'ออกจากระบบบุคคลที่สามสำเร็จ', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'ออกจากระบบบุคคลที่สามล้มเหลว', // 第三方登录退出失败 'thirdPartyLogoutFailed': 'ออกจากระบบบุคคลที่สามล้มเหลว', // 第三方登录退出失败
'signOutProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการออกจากระบบ', // 登出过程发生错误 'signOutProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการออกจากระบบ', // 登出过程发生错误
'deleteAccountProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี', // 删除账号过程发生错误 'deleteAccountProcessError':
'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี', // 删除账号过程发生错误
'userDataClearSuccess': 'ล้างข้อมูลผู้ใช้สำเร็จ', // 用户数据清理成功 'userDataClearSuccess': 'ล้างข้อมูลผู้ใช้สำเร็จ', // 用户数据清理成功
'allUserDataClearSuccess': 'ล้างข้อมูลผู้ใช้ทั้งหมดสำเร็จ', // 所有用户数据清理成功 'allUserDataClearSuccess': 'ล้างข้อมูลผู้ใช้ทั้งหมดสำเร็จ', // 所有用户数据清理成功
'accountServiceInitialized': 'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化 'accountServiceInitialized':
'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化
// 权限模块 // 权限模块
'meetingStoragePermission': 'Storage', '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': 'meetingStoragePermissionPermanentDenial':
'检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。',
'getPermissionStatusFailed': 'รับสถานะสิทธิ์ล้มเหลว', 'getPermissionStatusFailed': 'รับสถานะสิทธิ์ล้มเหลว',
@ -1068,9 +1214,11 @@ const Map<String, String> thTH = {
'locationInfo': 'ข้อมูลตำแหน่ง', 'locationInfo': 'ข้อมูลตำแหน่ง',
'phonePermissionDesc': 'ใช้สำหรับฟังก์ชันการโทรออก', 'phonePermissionDesc': 'ใช้สำหรับฟังก์ชันการโทรออก',
'smsPermissionDesc': 'ใช้สำหรับฟังก์ชันการส่ง SMS', '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': 'ใช้สำหรับสร้างกิจกรรมและการแจ้งเตือนในปฏิทิน', 'calendarWritePermissionDesc': 'ใช้สำหรับสร้างกิจกรรมและการแจ้งเตือนในปฏิทิน',
'calendarFullAccessPermissionDesc': 'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน', 'calendarFullAccessPermissionDesc':
'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน',
'locationPermissionDesc': 'ใช้สำหรับรับข้อมูลตำแหน่งปัจจุบัน', 'locationPermissionDesc': 'ใช้สำหรับรับข้อมูลตำแหน่งปัจจุบัน',
'appFunctionNeeds': 'ฟังก์ชันแอปพลิเคชันต้องการ', 'appFunctionNeeds': 'ฟังก์ชันแอปพลิเคชันต้องการ',
'authorized': 'ได้รับอนุญาต', 'authorized': 'ได้รับอนุญาต',
@ -1082,40 +1230,63 @@ const Map<String, String> thTH = {
'permissionRequestError': 'เกิดข้อผิดพลาดขณะขอสิทธิ์', 'permissionRequestError': 'เกิดข้อผิดพลาดขณะขอสิทธิ์',
'phonePermissionDetailDesc': 'ฟังก์ชันโทรออกต้องการสิทธิ์โทรศัพท์', 'phonePermissionDetailDesc': 'ฟังก์ชันโทรออกต้องการสิทธิ์โทรศัพท์',
'smsPermissionDetailDesc': 'ฟังก์ชันส่ง SMS ต้องการสิทธิ์ SMS', 'smsPermissionDetailDesc': 'ฟังก์ชันส่ง SMS ต้องการสิทธิ์ SMS',
'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time', 'alarmPermissionDetailDesc':
'calendarWritePermissionDetailDesc': 'การสร้างกิจกรรมในปฏิทินต้องการสิทธิ์เขียนปฏิทิน', 'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarFullAccessPermissionDetailDesc': 'การจัดการกิจกรรมในปฏิทินต้องการสิทธิ์เข้าถึงปฏิทินเต็มรูปแบบ', 'calendarWritePermissionDetailDesc':
'การสร้างกิจกรรมในปฏิทินต้องการสิทธิ์เขียนปฏิทิน',
'calendarFullAccessPermissionDetailDesc':
'การจัดการกิจกรรมในปฏิทินต้องการสิทธิ์เข้าถึงปฏิทินเต็มรูปแบบ',
'locationPermissionDetailDesc': 'การรับข้อมูลตำแหน่งต้องการสิทธิ์ตำแหน่ง', 'locationPermissionDetailDesc': 'การรับข้อมูลตำแหน่งต้องการสิทธิ์ตำแหน่ง',
'contactsPermissionDesc': 'Used for accessing contact information', 'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc': 'Phone call and SMS functionality requires contacts permission to select contacts', 'contactsPermissionDetailDesc':
'bluetoothPermissionDesc': 'Used for connecting and managing Bluetooth devices', 'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDetailDesc': 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', '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', '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', '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', 'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc': 'App needs notification permission to send you important alerts and messages', 'notificationPermissionDetailDesc':
'appNeedsPermissionForFullFunction': 'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ', 'App needs notification permission to send you important alerts and messages',
'permanentDenialText': 'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน', 'appNeedsPermissionForFullFunction':
'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ',
'permanentDenialText':
'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน',
'goToSettings': 'ไปที่การตั้งค่า', 'goToSettings': 'ไปที่การตั้งค่า',
'bluetoothScan': 'Bluetooth Scan', 'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect', 'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', 'bluetoothScanExplanation':
'bluetoothConnectExplanation': 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'locationForBluetoothExplanation': 'The app needs location permission to scan Bluetooth devices.', 'bluetoothConnectExplanation':
'bluetoothScanPermanentDenial': 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', 'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'bluetoothConnectPermanentDenial': 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', 'locationForBluetoothExplanation':
'locationPermanentDenial': 'Location permission has been permanently denied, please go to settings to enable it manually.', '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', 'notificationPermission': 'Notification',
'locationPermission': 'Location', 'locationPermission': 'Location',
'notificationPermissionExplanation': 'Notification permission is required to display music playback status.', 'notificationPermissionExplanation':
'locationPermissionExplanation': 'Location permission is required to get current location.', 'Notification permission is required to display music playback status.',
'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionExplanation':
'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', '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': 'Storage',
'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'microphonePermissionExplanation':
'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', 'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial': 'microphonePermissionPermanentDenial':
'检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。',
'storagePermissionPermanentDenial': 'storagePermissionPermanentDenial':
@ -1123,7 +1294,8 @@ const Map<String, String> thTH = {
'permissionUtilNeed': 'Need ', 'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission', 'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted', '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', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
@ -1131,7 +1303,8 @@ const Map<String, String> thTH = {
'native.notification.navigation.title': 'กำลังนำทาง', 'native.notification.navigation.title': 'กำลังนำทาง',
'native.notification.navigation.keepRunning': 'กำลังนำทาง โปรดเปิดแอปไว้', 'native.notification.navigation.keepRunning': 'กำลังนำทาง โปรดเปิดแอปไว้',
'native.notification.bleAgent.running': 'ตัวช่วยเสียงกำลังทำงาน', 'native.notification.bleAgent.running': 'ตัวช่วยเสียงกำลังทำงาน',
'native.notification.audioRecording.recording': 'กำลังบันทึกเสียง แตะเพื่อกลับไปที่แอป', 'native.notification.audioRecording.recording':
'กำลังบันทึกเสียง แตะเพื่อกลับไปที่แอป',
'native.notification.music.waiting': 'กำลังรอเล่น', 'native.notification.music.waiting': 'กำลังรอเล่น',
'native.notification.music.previous': 'ก่อนหน้า', 'native.notification.music.previous': 'ก่อนหน้า',
'native.notification.music.next': 'ถัดไป', 'native.notification.music.next': 'ถัดไป',
@ -1145,8 +1318,10 @@ const Map<String, String> thTH = {
'updateNow': 'อัปเดตทันที', // 立即更新按钮 'updateNow': 'อัปเดตทันที', // 立即更新按钮
'checkUpdate': 'ตรวจสอบการอัปเดต', // 检查更新按钮 'checkUpdate': 'ตรวจสอบการอัปเดต', // 检查更新按钮
'updateFailed': 'อัปเดตล้มเหลว', // 更新失败提示 'updateFailed': 'อัปเดตล้มเหลว', // 更新失败提示
'cannotOpenAppStore': 'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示 'cannotOpenAppStore':
'updateErrorRetry': 'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示 'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示
'updateErrorRetry':
'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示
// 配对模块 // 配对模块
"devicePairing": "การจับคู่อุปกรณ์", "devicePairing": "การจับคู่อุปกรณ์",
@ -1164,23 +1339,29 @@ const Map<String, String> thTH = {
'bluetooth': 'บลูทูธ', 'bluetooth': 'บลูทูธ',
"readyToPair": "พร้อมที่จะจับคู่", "readyToPair": "พร้อมที่จะจับคู่",
"preparingPairingEnvironment": "กำลังเตรียมสภาพแวดล้อมการจับคู่...", "preparingPairingEnvironment": "กำลังเตรียมสภาพแวดล้อมการจับคู่...",
"connectDeepSoundViaSystemBluetooth": "กรุณาเชื่อมต่อกับอุปกรณ์ Voitrans ผ่านบลูทูธของระบบก่อน", "connectDeepSoundViaSystemBluetooth":
"กรุณาเชื่อมต่อกับอุปกรณ์ Voitrans ผ่านบลูทูธของระบบก่อน",
"deviceBindingConfirm": "ยืนยันการผูกอุปกรณ์...", "deviceBindingConfirm": "ยืนยันการผูกอุปกรณ์...",
"establishingDeviceAssociation": "กำลังสร้างการเชื่อมโยงอุปกรณ์...", "establishingDeviceAssociation": "กำลังสร้างการเชื่อมโยงอุปกรณ์...",
"waitingCompletePairing": "กรุณารอสักครู่ กำลังทำการจับคู่ให้เสร็จสิ้น...", "waitingCompletePairing": "กรุณารอสักครู่ กำลังทำการจับคู่ให้เสร็จสิ้น...",
"pairingSuccessRedirecting": "การจับคู่สำเร็จ! กำลังเปลี่ยนเส้นทางไปยังหน้าหลัก...", "pairingSuccessRedirecting":
"ensureConnectedDeepSoundDevice": "โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอุปกรณ์ Voitrans", "การจับคู่สำเร็จ! กำลังเปลี่ยนเส้นทางไปยังหน้าหลัก...",
"ensureConnectedDeepSoundDevice":
"โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอุปกรณ์ Voitrans",
"deviceAlreadyBoundToOtherAccount": "อุปกรณ์นี้ถูกผูกไว้กับบัญชีอื่นแล้ว", "deviceAlreadyBoundToOtherAccount": "อุปกรณ์นี้ถูกผูกไว้กับบัญชีอื่นแล้ว",
"deviceAssociationFailed": "การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง", "deviceAssociationFailed": "การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง",
"scanTimeoutEnsureDeviceNearby": "การสแกนหมดเวลา โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์อยู่ใกล้ๆ", "scanTimeoutEnsureDeviceNearby":
"การสแกนหมดเวลา โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์อยู่ใกล้ๆ",
"networkError": "ข้อผิดพลาดเครือข่าย", "networkError": "ข้อผิดพลาดเครือข่าย",
"authorizationFailedCheckCode": "การอนุญาตล้มเหลว โปรดตรวจสอบว่ารหัสอนุญาตถูกต้องหรือไม่", "authorizationFailedCheckCode":
"การอนุญาตล้มเหลว โปรดตรวจสอบว่ารหัสอนุญาตถูกต้องหรือไม่",
"pairingFailedRetry": "การจับคู่ล้มเหลว โปรดลองอีกครั้ง", "pairingFailedRetry": "การจับคู่ล้มเหลว โปรดลองอีกครั้ง",
'pleaseEnableBluetooth': 'กรุณาเปิดใช้งานบลูทูธ', 'pleaseEnableBluetooth': 'กรุณาเปิดใช้งานบลูทูธ',
'deviceDisconnected': 'อุปกรณ์ตัดการเชื่อมต่อแล้ว', 'deviceDisconnected': 'อุปกรณ์ตัดการเชื่อมต่อแล้ว',
'readyToStartPairing': 'พร้อมที่จะเริ่มการจับคู่', 'readyToStartPairing': 'พร้อมที่จะเริ่มการจับคู่',
'checkingEnvironment': 'กำลังตรวจสอบสภาพแวดล้อม...', 'checkingEnvironment': 'กำลังตรวจสอบสภาพแวดล้อม...',
'ensureHeadsetOnAndPairingMode': 'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่', 'ensureHeadsetOnAndPairingMode':
'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่',
'establishingSecureConnection': 'กำลังสร้างการเชื่อมต่อที่ปลอดภัย...', 'establishingSecureConnection': 'กำลังสร้างการเชื่อมต่อที่ปลอดภัย...',
'needManualBindingAuthCode': 'ต้องใช้รหัสอนุญาตการผูกด้วยตนเอง...', 'needManualBindingAuthCode': 'ต้องใช้รหัสอนุญาตการผูกด้วยตนเอง...',
'pairingSuccessful': 'การจับคู่สำเร็จ!', 'pairingSuccessful': 'การจับคู่สำเร็จ!',
@ -1198,13 +1379,18 @@ const Map<String, String> thTH = {
'bleConnectionTimeoutRetry': 'การเชื่อมต่อ BLE หมดเวลา โปรดลองอีกครั้ง', 'bleConnectionTimeoutRetry': 'การเชื่อมต่อ BLE หมดเวลา โปรดลองอีกครั้ง',
'blePairingStartupFailed': 'การเริ่มต้นการจับคู่ BLE ล้มเหลว', 'blePairingStartupFailed': 'การเริ่มต้นการจับคู่ BLE ล้มเหลว',
'bleConnectionFailed': 'การเชื่อมต่อ BLE ล้มเหลว', 'bleConnectionFailed': 'การเชื่อมต่อ BLE ล้มเหลว',
'deviceAuthorizationFailedCheckCode': 'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต', 'deviceAuthorizationFailedCheckCode':
'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต',
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep1':
'bluetoothGuideStep2': 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep3': 'Return to app to continue pairing process', // 返回应用继续配对流程 'bluetoothGuideStep2':
'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 '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', // 我知道了 'iKnow': 'I Know', // 我知道了
// 配对模块 - 绑定奖励 // 配对模块 - 绑定奖励
@ -1227,11 +1413,13 @@ const Map<String, String> thTH = {
'contactInfo': 'ข้อมูลติดต่อ', 'contactInfo': 'ข้อมูลติดต่อ',
'contactHint': 'อีเมล/หมายเลขโทรศัพท์ เพื่อให้เราสามารถติดต่อคุณได้', 'contactHint': 'อีเมล/หมายเลขโทรศัพท์ เพื่อให้เราสามารถติดต่อคุณได้',
'submit': 'ส่ง', 'submit': 'ส่ง',
'feedbackSubmitSuccess': 'ส่งความคิดเห็นสำเร็จ ขอบคุณสำหรับความคิดเห็นของคุณ!', 'feedbackSubmitSuccess':
'ส่งความคิดเห็นสำเร็จ ขอบคุณสำหรับความคิดเห็นของคุณ!',
'feedbackSubmitFailed': 'ส่งความคิดเห็นล้มเหลว โปรดลองใหม่ในภายหลัง', 'feedbackSubmitFailed': 'ส่งความคิดเห็นล้มเหลว โปรดลองใหม่ในภายหลัง',
// OTA升级模块 // OTA升级模块
"upgradeExitConfirm": "กำลังอัปเกรด การออกจะขัดจังหวะกระบวนการอัปเกรด คุณแน่ใจหรือไม่ว่าต้องการออก", "upgradeExitConfirm":
"กำลังอัปเกรด การออกจะขัดจังหวะกระบวนการอัปเกรด คุณแน่ใจหรือไม่ว่าต้องการออก",
"deviceModel": "รุ่นอุปกรณ์", "deviceModel": "รุ่นอุปกรณ์",
"unknownDevice": "อุปกรณ์ที่ไม่รู้จัก", "unknownDevice": "อุปกรณ์ที่ไม่รู้จัก",
"currentFirmwareVersion": "เวอร์ชันเฟิร์มแวร์ปัจจุบัน", "currentFirmwareVersion": "เวอร์ชันเฟิร์มแวร์ปัจจุบัน",
@ -1244,14 +1432,70 @@ const Map<String, String> thTH = {
"retryConnection": "ลองเชื่อมต่อใหม่", "retryConnection": "ลองเชื่อมต่อใหม่",
"ota_updateNow": "อัปเดตทันที", "ota_updateNow": "อัปเดตทันที",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.", "otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable": "Unable to get device info. Please check the connection and retry.", "otaDeviceInfoUnavailable":
"otaProductInfoUnavailable": "Unable to identify the device. Please reconnect and retry.", "Unable to get device info. Please check the connection and retry.",
"otaFirmwareVersionInvalid": "Firmware version is abnormal. Please reconnect and retry.", "otaProductInfoUnavailable":
"keepConnectedDontClose": "โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน", "Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน",
"doNotDisconnect": "โปรดอย่าตัดการเชื่อมต่อ", "doNotDisconnect": "โปรดอย่าตัดการเชื่อมต่อ",
"charging": "กำลังชาร์จ", "charging": "กำลังชาร์จ",
"updateContent": "เนื้อหาการอัปเดต", "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": "ไม่มีเพลง", // 暂无音乐 "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 = { const Map<String, String> trTR = {
// 通用 // 通用
'continue': 'Devam Et', 'continue': 'Devam Et',
'confirm': 'Onayla', 'confirm': 'Onayla',
@ -80,7 +79,8 @@ const Map<String, String> trTR = {
// 登录模块 // 登录模块
"welcome": "Hoş Geldiniz", "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", "accountNumber": "Telefon Numarası veya E-posta",
"verificationCode": "Doğrulama Kodu", "verificationCode": "Doğrulama Kodu",
"getCode": "Kodu Al", "getCode": "Kodu Al",
@ -99,14 +99,16 @@ const Map<String, String> trTR = {
"tip": "İpucu", "tip": "İpucu",
"pleaseEnterCompleteCode": "Lütfen tam doğrulama kodunu girin", "pleaseEnterCompleteCode": "Lütfen tam doğrulama kodunu girin",
"loginFailed": "Giriş başarısız, lütfen tekrar deneyin", "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", "enterVerificationCode": "Doğrulama kodunu girin",
"verificationCodeSentTo": "Doğrulama kodu şuraya gönderildi:", "verificationCodeSentTo": "Doğrulama kodu şuraya gönderildi:",
"resendVerificationCode": "Doğrulama kodunu tekrar gönder", "resendVerificationCode": "Doğrulama kodunu tekrar gönder",
"login": "Giriş Yap", "login": "Giriş Yap",
"usePasswordLogin": "Parolayla Giriş Yap", "usePasswordLogin": "Parolayla Giriş Yap",
"loginDeclaration": "Voitrans Beyanı", // Voitrans 声明 "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": "privacyPolicyText":
",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Reddet", // 不同意 "disagree": "Reddet", // 不同意
@ -120,17 +122,20 @@ const Map<String, String> trTR = {
"signal": "Sinyal", "signal": "Sinyal",
"deviceId": "Cihaz Kimliği", "deviceId": "Cihaz Kimliği",
"firmwareVersion": "Donanım Yazılımı Sürümü", "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", "connectDevice": "Cihaz Bağla",
"topAiExperiences": "En İyi Yapay Zeka Deneyimleri", "topAiExperiences": "En İyi Yapay Zeka Deneyimleri",
"aiAssistant": "Her Şey Dahil Yapay Zeka Asistanı", "aiAssistant": "Her Şey Dahil Yapay Zeka Asistanı",
"aiAssistantInfo": "Sorular ve tavsiyeler için 7/24 özel danışman", "aiAssistantInfo": "Sorular ve tavsiyeler için 7/24 özel danışman",
"interpretation": "Simultane Çeviri", "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şı", "aiCompanion": "Aile Arkadaşı",
"aiCompanionInfo": "Sizi anlar ve sıcak bir arkadaşlık sunar", "aiCompanionInfo": "Sizi anlar ve sıcak bir arkadaşlık sunar",
"homeSlogan": "Dünyayla bağlan, sesin ötesine geç", "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ı:", "currentlyConnected": "Şu anda bağlı:",
"unsystemSetup": "Sistem ayarlarına git", "unsystemSetup": "Sistem ayarlarına git",
"talkLater": "Daha Sonra", "talkLater": "Daha Sonra",
@ -161,6 +166,29 @@ const Map<String, String> trTR = {
'right': 'Sağ', 'right': 'Sağ',
'checkConnectionStatusFailed': 'Bağlantı durumu kontrol edilemedi', '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...", "searchAi": "Yapay zeka özelliklerini ara...",
"exploreSlogan": "Akıllı Kulaklıklar, Sonsuz Olasılıklar", "exploreSlogan": "Akıllı Kulaklıklar, Sonsuz Olasılıklar",
@ -180,7 +208,8 @@ const Map<String, String> trTR = {
"healthConsultant": "Çok Fonksiyonlu Yapay Zeka Sohbeti", "healthConsultant": "Çok Fonksiyonlu Yapay Zeka Sohbeti",
"healthConsultantInfo": "Daha fazla yapay zeka sohbet özelliği sunar", "healthConsultantInfo": "Daha fazla yapay zeka sohbet özelliği sunar",
"conferenceAssistant": "İş Toplantısı Asistanı", "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", "usageStats": "Kullanım İstatistikleri",
"usageStatsInfo": "Kullanım istatistiklerinizi görüntüleyin", "usageStatsInfo": "Kullanım istatistiklerinizi görüntüleyin",
"scene": "Senaryo", "scene": "Senaryo",
@ -222,7 +251,8 @@ const Map<String, String> trTR = {
"audioFileSize": "Audio File Size", "audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes", "transcriptBytes": "Transcript Bytes",
"loadFailed": "Load Failed", "loadFailed": "Load Failed",
"statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", "statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete", "cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days", "cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature", "exportFeature": "Export Feature",
@ -252,12 +282,14 @@ const Map<String, String> trTR = {
'paymentException': 'Ödeme istisnası', 'paymentException': 'Ödeme istisnası',
'paymentLaunchFailed': 'Ödeme başlatılamadı', 'paymentLaunchFailed': 'Ödeme başlatılamadı',
'paymentExceptionWithError': 'Ödeme istisnası: @error', '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', 'paymentResultQueryException': 'Ödeme sonucu sorgulanamadı: @error',
'orderConfirmedQuotaRefreshed': 'Sipariş onaylandı. Kotanız yenilendi.', 'orderConfirmedQuotaRefreshed': 'Sipariş onaylandı. Kotanız yenilendi.',
'paymentCompletedConfirming': 'Ödeme tamamlandı. Onaylanıyor…', 'paymentCompletedConfirming': 'Ödeme tamamlandı. Onaylanıyor…',
'paymentCancelled': 'Ödeme iptal edildi', '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', 'paypalOpenFailed': 'PayPal ödeme sayfası açılamıyor',
'paymentTestTitle': 'Ödeme Testi', 'paymentTestTitle': 'Ödeme Testi',
'paymentTestOrderInfo': 'Test Sipariş Bilgisi', 'paymentTestOrderInfo': 'Test Sipariş Bilgisi',
@ -274,7 +306,8 @@ const Map<String, String> trTR = {
'errorInfoWithMessage': 'Hata: @message', 'errorInfoWithMessage': 'Hata: @message',
'retest': 'Yeniden Test Et', 'retest': 'Yeniden Test Et',
'paymentTestInstructionsTitle': 'Talimatlar', '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...', 'startingWechatPayment': 'WeChat Pay başlatılıyor...',
'startingAlipayPayment': 'Alipay başlatılıyor...', 'startingAlipayPayment': 'Alipay başlatılıyor...',
'wechatPaymentSuccess': 'WeChat Pay başarılı!', 'wechatPaymentSuccess': 'WeChat Pay başarılı!',
@ -289,9 +322,11 @@ const Map<String, String> trTR = {
'cannotLaunchAlipayPayment': 'Alipay başlatılamıyor', 'cannotLaunchAlipayPayment': 'Alipay başlatılamıyor',
'alipayPaymentException': 'Alipay istisnası', 'alipayPaymentException': 'Alipay istisnası',
"insufficientIntegral": "Insufficient integral", "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", "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商品页 // 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation', 'musicAndRecommendation': 'Music & Recommendation',
@ -299,11 +334,15 @@ const Map<String, String> trTR = {
'nearbySearch': 'Nearby Search', 'nearbySearch': 'Nearby Search',
'newsInformation': 'News', 'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant', 'communicationAssistant': 'Communication Assistant',
'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc1':
'aiHeaderDesc2': 'Suitable for agent Q&A, summarization, analysis, and task execution.', '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', 'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations': 'Smart playlist and similar song recommendations', 'smartPlaylistAndSimilarRecommendations':
'routePlanningAndCongestionAvoidance': 'Route planning and congestion avoidance', 'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast', 'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
@ -312,32 +351,39 @@ const Map<String, String> trTR = {
'hotNewsAndTopicOverview': 'Hot news and topic overview', 'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS', 'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders': 'Template messages and schedule reminders', 'templatedMessagesAndScheduleReminders':
'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', 'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 商品模块 - 翻译商品页 // 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription', 'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary', 'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles', '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.', 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation', 'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation', 'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve': 'Terminology optimization and context preservation', 'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory', 'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast', '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', 'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary', 'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search', 'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing', 'collaborationSharing': 'Collaboration & Sharing',
'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', 'meetingHeaderDesc1':
'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', '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', 'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling', 'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription', 'meetingLongAudioTranscription': 'Long audio transcription',
@ -346,7 +392,8 @@ const Map<String, String> trTR = {
'meetingTimelineJump': 'Timeline jump', 'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes', 'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms', '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会员页 // 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview', 'benefitsOverview': 'Benefits overview',
@ -361,7 +408,8 @@ const Map<String, String> trTR = {
'generalPrivileges': 'General privileges', 'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features', 'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync', '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', 'ai_001_name': 'AI Basic 100',
@ -411,7 +459,8 @@ const Map<String, String> trTR = {
'guideNavInput': 'Navigate to Shenzhen Airport', 'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route', 'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands', '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', 'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder', 'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands', 'guideMeetingEnd': 'Reminder created—try other commands',
@ -459,7 +508,8 @@ const Map<String, String> trTR = {
'downloadingFiles': 'Downloading files...', 'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}', 'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete', '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模块 - 录音功能 // Meeting模块 - 录音功能
'startRecording': 'Start Recording', 'startRecording': 'Start Recording',
@ -468,15 +518,20 @@ const Map<String, String> trTR = {
'callRecording': 'Call Recording', 'callRecording': 'Call Recording',
'importAudio': 'Import Audio', 'importAudio': 'Import Audio',
'meetingRecordExitTitle': 'Kayıttan Çık', // 退出录音 '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', // 结束录音并保存 'meetingRecordEndAndSave': 'Bitir ve Kaydet', // 结束录音并保存
'meetingRecordEndWithoutSave': 'Kaydetmeden Bitir', // 结束录音不保存 'meetingRecordEndWithoutSave': 'Kaydetmeden Bitir', // 结束录音不保存
'meetingRecordContinueInBackground': 'Arka planda kayda devam et', // 后台继续录音 'meetingRecordContinueInBackground': 'Arka planda kayda devam et', // 后台继续录音
'meetingRecordStopTimeout': 'Kayıt durdurma zaman aşımı, lütfen tekrar deneyin', // 结束录音超时,请重试 'meetingRecordStopTimeout':
'meetingRecordStopFailed': 'Kayıt durdurulamadı, lütfen tekrar deneyin', // 结束录音失败,请重试 'Kayıt durdurma zaman aşımı, lütfen tekrar deneyin', // 结束录音超时,请重试
'meetingRecordSaveFailed': 'Kayıt kaydedilemedi, 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', // 录音进行中 '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', // 悬浮窗权限 'overlayPermissionTitle': 'Yüzen Pencere İzni', // 悬浮窗权限
'overlayPermissionTranslationDesc': '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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 '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', 'editTemplate': 'Şablonu Düzenle',
'createTemplate': 'Şablon Oluştur', 'createTemplate': 'Şablon Oluştur',
'name': 'Ad', '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', 'inputNameHint': 'Lütfen ad girin',
'inputDescHint': 'Lütfen açıklama girin', 'inputDescHint': 'Lütfen açıklama girin',
'custom': 'Özel', 'custom': 'Özel',
@ -528,7 +584,8 @@ const Map<String, String> trTR = {
'chineseSimplified': 'Chinese Mandarin (Simplified)', 'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now', 'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.', 'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc': '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模块 - 文件操作 // Meeting模块 - 文件操作
'importing': 'Importing...', 'importing': 'Importing...',
@ -570,12 +627,14 @@ const Map<String, String> trTR = {
// Meeting模块 - 发言者 // Meeting模块 - 发言者
'applyToAllParagraphs': 'Bu konuşmacının tüm paragraflarına uygula', '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', 'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names', 'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph', 'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time', 'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', 'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步 // Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud', 'syncToCloud': 'Sync to Cloud',
@ -618,38 +677,52 @@ const Map<String, String> trTR = {
'audioImport': 'Audio Import', 'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats', 'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates', 'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc': 'Professional template design to improve your work efficiency. Customized according to industry needs.', 'professionalTemplateDesc':
'customTemplateDesc': 'You can customize summary prompts according to your needs and use them to generate the required summaries.', 'Professional template design to improve your work efficiency. Customized according to industry needs.',
'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.', 'customTemplateDesc':
'visualMindMapDesc': 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', 'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'templateCommunityDesc': 'Discover, share, and get inspiration from the template library created by users.', 'askAiDesc':
'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.', 'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'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.', 'visualMindMapDesc':
'aiVoiceEnhancementDesc': 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'audioImportDesc': 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'templateCommunityDesc':
'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', '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', 'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription', 'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription', 'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month', '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', 'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month', '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.', 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120', 'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month', 'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe', 'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198', 'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month', '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', 'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes', 'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes', 'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes', 'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes', 'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ', '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', 'purchase': 'Purchase',
// Meeting模块 - 录音语言 // Meeting模块 - 录音语言
@ -661,7 +734,8 @@ const Map<String, String> trTR = {
// Meeting模块 - 错误提示 // Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language', 'meetingUnknownLanguage': 'Unknown Language',
'analysisFailed': 'Analiz başarısız oldu, lütfen daha sonra tekrar deneyin', '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', 'summaryFailed': 'Özet başarısız oldu, lütfen daha sonra tekrar deneyin',
'summaryFailedShort': 'Özet başarısız', 'summaryFailedShort': 'Özet başarısız',
'transcriptionFailedShort': 'Transkripsiyon başarısız', 'transcriptionFailedShort': 'Transkripsiyon başarısız',
@ -682,13 +756,15 @@ const Map<String, String> trTR = {
"cloudSync": "Bulut Sincronizasyonu", "cloudSync": "Bulut Sincronizasyonu",
"memberService": "Member Service", "memberService": "Member Service",
"bindRewardTitle": "Rewards", "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:", "joinDevice": "Bağlı cihaz:",
"accountId": "Hesap Kimliği:", "accountId": "Hesap Kimliği:",
"systemSetting": "Sistem Ayarları", "systemSetting": "Sistem Ayarları",
"languageSetting": "Dil Ayarları", "languageSetting": "Dil Ayarları",
"darkMode": "Karanlık Mod", "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", "backups": "Yedekle ve Geri Yükle",
"backupsInfo": "Ayarları ve yapay zeka etkileşim geçmişini yedekleyin", "backupsInfo": "Ayarları ve yapay zeka etkileşim geçmişini yedekleyin",
"lastBackup": "Son yedekleme:", "lastBackup": "Son yedekleme:",
@ -704,9 +780,11 @@ const Map<String, String> trTR = {
"voiceServiceInfo": "Ses tanıma ve sentezleme hizmetini seçin", "voiceServiceInfo": "Ses tanıma ve sentezleme hizmetini seçin",
"selectVoiceService": "Ses Hizmeti Seç", "selectVoiceService": "Ses Hizmeti Seç",
"azureVoiceService": "Azure Ses Hizmeti", "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", "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', 'timbreService': 'Ses Tonu Hizmeti',
'timbreServiceInfo': 'Ses sentezi için ses tonu hizmeti seçin', 'timbreServiceInfo': 'Ses sentezi için ses tonu hizmeti seçin',
'defaultTimbre': 'Varsayılan Ses Tonu', 'defaultTimbre': 'Varsayılan Ses Tonu',
@ -717,14 +795,16 @@ const Map<String, String> trTR = {
'pleaseRead': 'Lütfen Yüksek Sesle Okuyun', 'pleaseRead': 'Lütfen Yüksek Sesle Okuyun',
'completeRecording': 'Kaydı Tamamla', 'completeRecording': 'Kaydı Tamamla',
"firmwareUpgrade": "Donanım Yazılımı Güncellemesi", "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", "deviceManagement": "Cihaz Yönetimi",
"manageConnectedDevices": "Bağlı Bluetooth cihazlarını yönetin", "manageConnectedDevices": "Bağlı Bluetooth cihazlarını yönetin",
'currentLatestVersion': 'Şu anda en son sürümdesiniz {version}', 'currentLatestVersion': 'Şu anda en son sürümdesiniz {version}',
'checkUpdateFailed': 'Güncellemeler kontrol edilemedi', 'checkUpdateFailed': 'Güncellemeler kontrol edilemedi',
'networkErrorRetry': 'Ağ hatası, lütfen daha sonra tekrar deneyin', 'networkErrorRetry': 'Ağ hatası, lütfen daha sonra tekrar deneyin',
"realtimeVoiceChat": "Gerçek Zamanlı Sesli Sohbet", "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...", "loading": "Yükleniyor...",
// 设备管理模块 // 设备管理模块
@ -772,7 +852,8 @@ const Map<String, String> trTR = {
"swipeUpForMore": "Daha fazlası için yukarı kaydırın", "swipeUpForMore": "Daha fazlası için yukarı kaydırın",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断 "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模块 - 预设提示词 // Agent模块 - 预设提示词
"presetMusic": "Play some music", // 来点音乐 "presetMusic": "Play some music", // 来点音乐
@ -795,10 +876,14 @@ const Map<String, String> trTR = {
'• 控制耳机功能\n\n' '• 控制耳机功能\n\n'
'有什么我可以帮你的吗?', '有什么我可以帮你的吗?',
'microphonePermission': 'Mikrofon', 'microphonePermission': 'Mikrofon',
'voiceRecognitionPermissionText': 'Ses tanıma özelliği mikrofon erişimi gerektirir.', 'voiceRecognitionPermissionText':
'voiceTranslationPermissionText': 'Ses tanıma ve çeviri özelliği mikrofon erişimi gerektirir.', 'Ses tanıma özelliği mikrofon erişimi gerektirir.',
'phoneCallPermissionText': 'Arama yapma özelliği sesli aramalar için mikrofon erişimi gerektirir.', 'voiceTranslationPermissionText':
'permissionDeniedText': 'Mikrofon iznini kalıcı olarak reddettiniz, lütfen sistem ayarlarından izni etkinleştirin.', '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', 'startVoiceInput': 'Sesli girişi başlat',
'startPhoneCallMode': 'Arama modunu başlat, 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', 'privacyRelated': 'Gizlilikle İlgili',
'copyrightViolation': 'Telif hakkımı, itibarımı vb. ihlal ediyor', 'copyrightViolation': 'Telif hakkımı, itibarımı vb. ihlal ediyor',
'other': 'Diğer', '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', '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模块 - 音乐卡片 // Agent模块 - 音乐卡片
'recommendedMusic': 'İşte bazı önerilen müzikler:', 'recommendedMusic': 'İşte bazı önerilen müzikler:',
'playList': 'Çalma Listesi', 'playList': 'Çalma Listesi',
@ -843,20 +936,52 @@ const Map<String, String> trTR = {
"bicycling": "Bisiklet", "bicycling": "Bisiklet",
"tsransit": "Toplu Taşıma", "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模块 - 天气卡片 // Agent模块 - 天气卡片
'weatherQuery': 'Hava durumu sorgulanıyor:', 'weatherQuery': 'Hava durumu sorgulanıyor:',
'highest': 'En Yüksek', 'highest': 'En Yüksek',
'lowest': 'En Düşük', 'lowest': 'En Düşük',
'futureForecast': 'Gelecek Tahmini', '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', 'hotWeatherTip':
'coldWeatherTip': 'Bugün hava soğuk, dışarı çıkarken üşütmemek için sıkı giyinin', 'Bugün hava sıcak, lütfen serin kalmaya ve güneş çarpmasını önlemek için bol su içmeye dikkat edin',
'rainyWeatherTip': 'Bugün yağmurlu, dışarı çıkarken şemsiye alın ve dikkatli olun', 'coldWeatherTip':
'snowyWeatherTip': 'Bugün karlı, yollar kaygan, lütfen dikkatli olun ve sıcak kalmak için önlem alın', 'Bugün hava soğuk, dışarı çıkarken üşütmemek için sıkı giyinin',
'foggyWeatherTip': 'Bugün sisli, görüş mesafesi düşük, dışarı çıkarken maske takın', 'rainyWeatherTip':
'windyWeatherTip': 'Bugün rüzgarlı, dışarı çıkarken dikkatli olun ve eşyalarınızı sabitleyin', 'Bugün yağmurlu, dışarı çıkarken şemsiye alın ve dikkatli olun',
'sunnyWeatherTip': 'Bugün güneşli ve UV ışınları güçlü, dışarı çıkarken güneş kremi kullanın', 'snowyWeatherTip':
'temperatureDifferenceTip': 'Bugün gece ile gündüz arasında büyük sıcaklık farkı var, giysilerinizi buna göre ayarlayın', 'Bugün karlı, yollar kaygan, lütfen dikkatli olun ve sıcak kalmak için önlem alın',
'comfortableWeatherTip': 'Bugün hava güzel, dışarıda vakit geçirmek için harika bir zaman', '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", "monday": "Pzt",
"tuesday": "Sal", "tuesday": "Sal",
"wednesday": "Çar", "wednesday": "Çar",
@ -900,13 +1025,25 @@ const Map<String, String> trTR = {
"selectTargetLanguage": "Hedef Dil Seç", "selectTargetLanguage": "Hedef Dil Seç",
"me": "Me", "me": "Me",
"counterPart": "Counterpart", "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", // 自动检测 "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", "languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed", "translationFailed": "Translation failed",
"translating": "Translating",
"translate": "Translate",
"pleaseInputText": "Please input text", "pleaseInputText": "Please input text",
"inputTextToTranslate": "Lütfen çevrilecek metni girin",
"textTooLong": "Text too long, max 5000 characters", "textTooLong": "Text too long, max 5000 characters",
// 翻译模块 - 历史记录 // 翻译模块 - 历史记录
@ -914,10 +1051,12 @@ const Map<String, String> trTR = {
"historyRecords": "History Records", "historyRecords": "History Records",
"clearResults": "Clear Results", "clearResults": "Clear Results",
"clearHistory": "Geçmişi Temizle", "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", "unknownLanguage": "Bilinmeyen Dil",
"deleteSessionRecord": "Oturum Kaydını Sil", "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", "selectImageSource": "Select Image Source",
@ -949,15 +1088,20 @@ const Map<String, String> trTR = {
"translationCompleted": "Translation Completed", "translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed", "allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed", "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", "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", "emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", "imageTranslationFailedTryLater":
"imageTranslationApiException": "Image translation API exception. Check network and retry", "Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required", "permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos", "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", "translationDetails": "Translation Details",
"originalImage": "Original Image", "originalImage": "Original Image",
"sourceLanguage": "Source Language", "sourceLanguage": "Source Language",
@ -980,7 +1124,8 @@ const Map<String, String> trTR = {
// 翻译模块 - 翻译详情 // 翻译模块 - 翻译详情
"originalRecord": "Orijinal Kayıt", "originalRecord": "Orijinal Kayıt",
"recordSummary": "Kayıt Özeti", "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", "summaryContent": "Özet İçeriği",
"copied": "Kopyalandı", "copied": "Kopyalandı",
"summaryCopiledToClipboard": "Özet panoya kopyalandı", "summaryCopiledToClipboard": "Özet panoya kopyalandı",
@ -988,9 +1133,11 @@ const Map<String, String> trTR = {
"summaryGenerated": "Özet oluşturuldu", "summaryGenerated": "Özet oluşturuldu",
"generating": "Oluşturuluyor...", "generating": "Oluşturuluyor...",
"regenerate": "Yeniden Oluştur", "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", "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", "originalText": "Orijinal Metin",
"translatedText": "Çevrilmiş Metin", "translatedText": "Çevrilmiş Metin",
"sessionSummary": "Oturum Özeti", "sessionSummary": "Oturum Özeti",
@ -1010,20 +1157,26 @@ const Map<String, String> trTR = {
"logout": "Çıkış Yap", "logout": "Çıkış Yap",
"logoutTips": "Mevcut hesaptan çıkmak istediğinizden emin misiniz?", "logoutTips": "Mevcut hesaptan çıkmak istediğinizden emin misiniz?",
'deleteAccount': 'Hesabı Sil', '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', 'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal 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', 'networkConnectionFailed':
'serverTemporarilyUnavailable': 'Sunucu geçici olarak yanıt vermiyor, lütfen daha sonra tekrar deneyin', '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', 'loginExpiredPleaseRelogin': 'Oturum süresi doldu, lütfen tekrar giriş yapın',
'noPermissionForThisOperation': 'Bu işlemi gerçekleştirmek için izniniz yok', 'noPermissionForThisOperation': 'Bu işlemi gerçekleştirmek için izniniz yok',
'requestedResourceNotFound': 'İstenen kaynak bulunamadı', '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', 'operationFailedPleaseRetry': 'İşlem başarısız, lütfen tekrar deneyin',
'serverReturnedError': 'Sunucu bir hata döndürdü', 'serverReturnedError': 'Sunucu bir hata döndürdü',
'serverError': 'Sunucu Hatası', 'serverError': 'Sunucu Hatası',
'networkConnectionFailedCheckSettings': 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edin', 'networkConnectionFailedCheckSettings':
'serverInternalErrorRetryLater': 'Sunucu iç hatası, lütfen daha sonra tekrar deneyin', '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ı', 'imageCompressionFailed': 'Resim sıkıştırılamadı',
'avatarUpdateFailed': 'Avatar güncellenemedi', 'avatarUpdateFailed': 'Avatar güncellenemedi',
'usernameCannotBeEmpty': 'Kullanıcı adı boş olamaz', 'usernameCannotBeEmpty': 'Kullanıcı adı boş olamaz',
@ -1036,17 +1189,23 @@ const Map<String, String> trTR = {
'deleteAccountFailedRetry': 'Hesap silinemedi, lütfen tekrar deneyin', 'deleteAccountFailedRetry': 'Hesap silinemedi, lütfen tekrar deneyin',
'clearUserDataFailed': 'Kullanıcı verileri temizlenemedi', // 清理用户数据失败 'clearUserDataFailed': 'Kullanıcı verileri temizlenemedi', // 清理用户数据失败
'deleteUserDataFailed': 'Kullanıcı verileri silinemedi', // 删除用户数据失败 '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ı', // 第三方登录退出失败 'thirdPartyLogoutFailed': 'Üçüncü taraf oturumu kapatılamadı', // 第三方登录退出失败
'signOutProcessError': 'Oturum kapatma işlemi sırasında bir hata oluştu', // 登出过程发生错误 'signOutProcessError':
'deleteAccountProcessError': 'Hesap silme işlemi sırasında bir hata oluştu', // 删除账号过程发生错误 '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', // 用户数据清理成功 'userDataClearSuccess': 'Kullanıcı verileri başarıyla temizlendi', // 用户数据清理成功
'allUserDataClearSuccess': 'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功 'allUserDataClearSuccess':
'accountServiceInitialized': 'Hesap Hizmeti başlatıldı', // AccountService 已初始化 'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功
'accountServiceInitialized':
'Hesap Hizmeti başlatıldı', // AccountService 已初始化
// 权限模块 // 权限模块
'meetingStoragePermission': 'Storage', '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': 'meetingStoragePermissionPermanentDenial':
'检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。',
'getPermissionStatusFailed': 'İzin durumu alınamadı', 'getPermissionStatusFailed': 'İzin durumu alınamadı',
@ -1068,9 +1227,12 @@ const Map<String, String> trTR = {
'locationInfo': 'Konum Bilgisi', 'locationInfo': 'Konum Bilgisi',
'phonePermissionDesc': 'Telefon arama özelliği için kullanılır', 'phonePermissionDesc': 'Telefon arama özelliği için kullanılır',
'smsPermissionDesc': 'SMS gönderme ö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', 'alarmPermissionDesc':
'calendarWritePermissionDesc': 'Takvim etkinlikleri ve hatırlatıcılar oluşturmak için kullanılır', 'Used to set exact alarms to ensure reminders trigger on time',
'calendarFullAccessPermissionDesc': 'Takvim etkinliklerini ve hatırlatıcıları okumak ve yönetmek için kullanılır', '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', 'locationPermissionDesc': 'Mevcut konum bilgisini almak için kullanılır',
'appFunctionNeeds': 'Uygulama özelliğinin ihtiyacı var', 'appFunctionNeeds': 'Uygulama özelliğinin ihtiyacı var',
'authorized': 'Yetkilendirildi', 'authorized': 'Yetkilendirildi',
@ -1082,40 +1244,63 @@ const Map<String, String> trTR = {
'permissionRequestError': 'İzin istenirken hata oluştu', 'permissionRequestError': 'İzin istenirken hata oluştu',
'phonePermissionDetailDesc': 'Arama özelliği telefon izni gerektirir', 'phonePermissionDetailDesc': 'Arama özelliği telefon izni gerektirir',
'smsPermissionDetailDesc': 'SMS gönderme özelliği SMS 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', 'alarmPermissionDetailDesc':
'calendarWritePermissionDetailDesc': 'Takvim etkinliği oluşturma takvime yazma izni gerektirir', 'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarFullAccessPermissionDetailDesc': 'Takvim etkinliklerini yönetme tam takvim erişimi gerektirir', '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', 'locationPermissionDetailDesc': 'Konum bilgisi alma konum izni gerektirir',
'contactsPermissionDesc': 'Used for accessing contact information', 'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc': 'Phone call and SMS functionality requires contacts permission to select contacts', 'contactsPermissionDetailDesc':
'bluetoothPermissionDesc': 'Used for connecting and managing Bluetooth devices', 'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDetailDesc': 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', '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', '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', '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', 'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc': 'App needs notification permission to send you important alerts and messages', 'notificationPermissionDetailDesc':
'appNeedsPermissionForFullFunction': 'Uygulamanın tam işlevsellik için bu izne ihtiyacı var', 'App needs notification permission to send you important alerts and messages',
'permanentDenialText': '{permission} iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için uygulama ayarlarına gidin', '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', 'goToSettings': 'Ayarlara Git',
'bluetoothScan': 'Bluetooth Scan', 'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect', 'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', 'bluetoothScanExplanation':
'bluetoothConnectExplanation': 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'locationForBluetoothExplanation': 'The app needs location permission to scan Bluetooth devices.', 'bluetoothConnectExplanation':
'bluetoothScanPermanentDenial': 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', 'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'bluetoothConnectPermanentDenial': 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', 'locationForBluetoothExplanation':
'locationPermanentDenial': 'Location permission has been permanently denied, please go to settings to enable it manually.', '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', 'notificationPermission': 'Notification',
'locationPermission': 'Location', 'locationPermission': 'Location',
'notificationPermissionExplanation': 'Notification permission is required to display music playback status.', 'notificationPermissionExplanation':
'locationPermissionExplanation': 'Location permission is required to get current location.', 'Notification permission is required to display music playback status.',
'notificationPermissionPermanentDenial': 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionExplanation':
'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', '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': 'Storage',
'microphonePermissionExplanation': 'We need microphone permission to record audio content.', 'microphonePermissionExplanation':
'storagePermissionExplanation': 'We need storage permission so you can select and upload audio files.', 'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial': 'microphonePermissionPermanentDenial':
'检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。',
'storagePermissionPermanentDenial': 'storagePermissionPermanentDenial':
@ -1123,15 +1308,18 @@ const Map<String, String> trTR = {
'permissionUtilNeed': 'Need ', 'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission', 'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted', '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', 'permissionUtilConfirm': 'OK',
// 原生前台服务通知(Android) // 原生前台服务通知(Android)
'native.notification.appName': 'VOITRANS', 'native.notification.appName': 'VOITRANS',
'native.notification.navigation.title': 'Navigasyon devam ediyor', '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.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.waiting': 'Oynatma bekleniyor',
'native.notification.music.previous': 'Önceki', 'native.notification.music.previous': 'Önceki',
'native.notification.music.next': 'Sonraki', 'native.notification.music.next': 'Sonraki',
@ -1145,8 +1333,10 @@ const Map<String, String> trTR = {
'updateNow': 'Şimdi Güncelle', // 立即更新按钮 'updateNow': 'Şimdi Güncelle', // 立即更新按钮
'checkUpdate': 'Güncellemeleri Kontrol Et', // 检查更新按钮 'checkUpdate': 'Güncellemeleri Kontrol Et', // 检查更新按钮
'updateFailed': 'Güncelleme Başarısız', // 更新失败提示 'updateFailed': 'Güncelleme Başarısız', // 更新失败提示
'cannotOpenAppStore': 'Uygulama mağazası açılamıyor, lütfen güncellemek için manuel olarak gidin', // 无法打开应用商店提示 'cannotOpenAppStore':
'updateErrorRetry': 'Güncelleme sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin', // 更新错误重试提示 '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", "devicePairing": "Cihaz Eşleştirme",
@ -1164,23 +1354,29 @@ const Map<String, String> trTR = {
'bluetooth': 'Bluetooth', 'bluetooth': 'Bluetooth',
"readyToPair": "Eşleştirmeye hazır", "readyToPair": "Eşleştirmeye hazır",
"preparingPairingEnvironment": "Eşleştirme ortamı hazırlanıyor...", "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ı...", "deviceBindingConfirm": "Cihaz bağlama onayı...",
"establishingDeviceAssociation": "Cihaz ilişkisi kuruluyor...", "establishingDeviceAssociation": "Cihaz ilişkisi kuruluyor...",
"waitingCompletePairing": "Lütfen bekleyin, eşleştirme tamamlanıyor...", "waitingCompletePairing": "Lütfen bekleyin, eşleştirme tamamlanıyor...",
"pairingSuccessRedirecting": "Eşleştirme başarılı! Ana sayfaya yönlendiriliyor...", "pairingSuccessRedirecting":
"ensureConnectedDeepSoundDevice": "Lütfen bir Voitrans cihazına bağlı olduğunuzdan emin olun", "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ı", "deviceAlreadyBoundToOtherAccount": "Bu cihaz başka bir hesaba zaten bağlı",
"deviceAssociationFailed": "Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin", "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ı", "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", "pairingFailedRetry": "Eşleştirme başarısız, lütfen tekrar deneyin",
'pleaseEnableBluetooth': 'Lütfen Bluetooth\\', 'pleaseEnableBluetooth': 'Lütfen Bluetooth\\',
'deviceDisconnected': 'Cihaz bağlantısı kesildi', 'deviceDisconnected': 'Cihaz bağlantısı kesildi',
'readyToStartPairing': 'Eşleştirmeye başlamaya hazır', 'readyToStartPairing': 'Eşleştirmeye başlamaya hazır',
'checkingEnvironment': 'Ortam kontrol ediliyor...', '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...', 'establishingSecureConnection': 'Güvenli bağlantı kuruluyor...',
'needManualBindingAuthCode': 'Manuel bağlama yetkilendirme kodu gerekli...', 'needManualBindingAuthCode': 'Manuel bağlama yetkilendirme kodu gerekli...',
'pairingSuccessful': 'Eşleştirme başarılı!', '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', 'verificationFailedRetry': 'Doğrulama başarısız, lütfen tekrar deneyin',
'invalidDeviceAddress': 'Geçersiz cihaz adresi', 'invalidDeviceAddress': 'Geçersiz cihaz adresi',
'bleDeviceAssociationFailed': 'BLE cihaz ilişkisi kurulamadı', 'bleDeviceAssociationFailed': 'BLE cihaz ilişkisi kurulamadı',
'deviceAssociationFailedRetry': 'Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin', 'deviceAssociationFailedRetry':
'bleConnectionTimeoutRetry': 'BLE bağlantısı zaman aşımına uğradı, lütfen tekrar deneyin', '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ı', 'blePairingStartupFailed': 'BLE eşleştirmesi başlatılamadı',
'bleConnectionFailed': 'BLE bağlantısı başarısız', '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', // 需要手动开启蓝牙 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep1':
'bluetoothGuideStep2': 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep3': 'Return to app to continue pairing process', // 返回应用继续配对流程 'bluetoothGuideStep2':
'bluetoothGuideTip': 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 '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', // 我知道了 'iKnow': 'I Know', // 我知道了
// 配对模块 - 绑定奖励 // 配对模块 - 绑定奖励
@ -1221,17 +1424,21 @@ const Map<String, String> trTR = {
// 用户反馈模块 // 用户反馈模块
"feedback": "Kullanıcı Geri Bildirimi", "feedback": "Kullanıcı Geri Bildirimi",
'feedbackInfo': 'Geri bildirim veya öneri sağlayın', '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...', 'feedbackHint': 'Lütfen geri bildiriminizi girin...',
'feedbackRequired': 'Lütfen geri bildirim içeriğini girin', 'feedbackRequired': 'Lütfen geri bildirim içeriğini girin',
'contactInfo': 'İletişim Bilgileri', 'contactInfo': 'İletişim Bilgileri',
'contactHint': 'E-posta/Telefon, sizinle iletişime geçebilmemiz için', 'contactHint': 'E-posta/Telefon, sizinle iletişime geçebilmemiz için',
'submit': 'Gönder', 'submit': 'Gönder',
'feedbackSubmitSuccess': 'Geri bildirim başarıyla gönderildi, geri bildiriminiz için teşekkür ederiz!', 'feedbackSubmitSuccess':
'feedbackSubmitFailed': 'Geri bildirim gönderilemedi, lütfen daha sonra tekrar deneyin', '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升级模块 // 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", "deviceModel": "Cihaz Modeli",
"unknownDevice": "Bilinmeyen Cihaz", "unknownDevice": "Bilinmeyen Cihaz",
"currentFirmwareVersion": "Mevcut Donanım Yazılımı Sürümü", "currentFirmwareVersion": "Mevcut Donanım Yazılımı Sürümü",
@ -1244,14 +1451,70 @@ const Map<String, String> trTR = {
"retryConnection": "Yeniden Dene", "retryConnection": "Yeniden Dene",
"ota_updateNow": "Şimdi Güncelle", "ota_updateNow": "Şimdi Güncelle",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.", "otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable": "Unable to get device info. Please check the connection and retry.", "otaDeviceInfoUnavailable":
"otaProductInfoUnavailable": "Unable to identify the device. Please reconnect and retry.", "Unable to get device info. Please check the connection and retry.",
"otaFirmwareVersionInvalid": "Firmware version is abnormal. Please reconnect and retry.", "otaProductInfoUnavailable":
"keepConnectedDontClose": "Lütfen cihazı bağlı tutun ve uygulamayı kapatmayın", "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", "doNotDisconnect": "Bağlantıyı kesmeyin",
"charging": "Şarj oluyor", "charging": "Şarj oluyor",
"updateContent": "Güncelleme İçeriği", "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", // 暂无音乐 "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 = { const Map<String, String> zhCN = {
// 通用 // 通用
'continue': '继续', 'continue': '继续',
'confirm': '确认', 'confirm': '确认',
@ -504,10 +503,8 @@ const Map<String, String> zhCN = {
'overlayPermissionTitle': '悬浮窗权限', 'overlayPermissionTitle': '悬浮窗权限',
'overlayPermissionTranslationDesc': 'overlayPermissionTranslationDesc':
'为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。', '为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。',
'overlayPermissionRecordingDesc': 'overlayPermissionRecordingDesc': '为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。',
'为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。', 'overlayPermissionOpenSettingsFailed': '无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。',
'overlayPermissionOpenSettingsFailed':
'无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。',
'transcribing': '正在转写...', 'transcribing': '正在转写...',
'summarizing': '正在总结...', 'summarizing': '正在总结...',
'analyzing': '正在分析...', 'analyzing': '正在分析...',
@ -966,6 +963,7 @@ const Map<String, String> zhCN = {
// 翻译模块 - 文本翻译 // 翻译模块 - 文本翻译
"languageDetectionFailed": "语言检测失败", "languageDetectionFailed": "语言检测失败",
"inputTextToTranslate": "请输入待翻译的文本",
"translationFailed": "翻译失败", "translationFailed": "翻译失败",
"translating": "正在翻译", "translating": "正在翻译",
"translate": "翻译", "translate": "翻译",
@ -1337,8 +1335,10 @@ const Map<String, String> zhCN = {
'otaCannotGetProductInfoWithName': '无法获取产品信息,设备名称: @deviceName', 'otaCannotGetProductInfoWithName': '无法获取产品信息,设备名称: @deviceName',
'otaCannotGetBatteryInfo': '无法获取有效的电量信息', 'otaCannotGetBatteryInfo': '无法获取有效的电量信息',
'otaLowBattery': '电量不足', 'otaLowBattery': '电量不足',
'otaSingleBatteryLow': '设备电量不足,无法进行固件升级\n升级要求:设备电量需大于20%\n当前电量:@ear @battery%\n请充电后再试', 'otaSingleBatteryLow':
'otaDoubleBatteryLow': '设备电量不足,无法进行固件升级\n升级要求:左右耳电量均需大于20%\n当前电量:左耳 @left%,右耳 @right%\n请充电后再试', '设备电量不足,无法进行固件升级\n升级要求:设备电量需大于20%\n当前电量:@ear @battery%\n请充电后再试',
'otaDoubleBatteryLow':
'设备电量不足,无法进行固件升级\n升级要求:左右耳电量均需大于20%\n当前电量:左耳 @left%,右耳 @right%\n请充电后再试',
'otaBatteryCheckFailed': '电量检查失败', 'otaBatteryCheckFailed': '电量检查失败',
// OTA升级模块 - 升级状态 // OTA升级模块 - 升级状态

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

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

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

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

24
tools/i18n_allowlist.json

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

201
tools/i18n_audit.py

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