Browse Source

Merge branches 'new_dev' and 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

newdev_shunjiawei
liwei1dao 9 months ago
parent
commit
943338b073
  1. 59
      lib/core/translations/app_translations.dart
  2. 1008
      lib/core/translations/language/ar_sa.dart
  3. 747
      lib/core/translations/language/bg_bg.dart
  4. 736
      lib/core/translations/language/cs_cz.dart
  5. 739
      lib/core/translations/language/da_dk.dart
  6. 842
      lib/core/translations/language/de_de.dart
  7. 750
      lib/core/translations/language/el_gr.dart
  8. 34
      lib/core/translations/language/en_us.dart
  9. 767
      lib/core/translations/language/es_es.dart
  10. 732
      lib/core/translations/language/et_ee.dart
  11. 501
      lib/core/translations/language/fa_ir.dart
  12. 797
      lib/core/translations/language/fi_fi.dart
  13. 775
      lib/core/translations/language/fr_fr.dart
  14. 893
      lib/core/translations/language/hi_in.dart
  15. 795
      lib/core/translations/language/hr_hr.dart
  16. 795
      lib/core/translations/language/hu_hu.dart
  17. 792
      lib/core/translations/language/id_id.dart
  18. 792
      lib/core/translations/language/is_is.dart
  19. 881
      lib/core/translations/language/it_it.dart
  20. 772
      lib/core/translations/language/ja_jp.dart
  21. 867
      lib/core/translations/language/ko_kr.dart
  22. 795
      lib/core/translations/language/lt_lt.dart
  23. 794
      lib/core/translations/language/lv_lv.dart
  24. 793
      lib/core/translations/language/ms_my.dart
  25. 792
      lib/core/translations/language/nb_no.dart
  26. 794
      lib/core/translations/language/nl_nl.dart
  27. 798
      lib/core/translations/language/pl_pl.dart
  28. 867
      lib/core/translations/language/pt_pt.dart
  29. 792
      lib/core/translations/language/ro_ro.dart
  30. 869
      lib/core/translations/language/ru_ru.dart
  31. 793
      lib/core/translations/language/sk_sk.dart
  32. 793
      lib/core/translations/language/sl_si.dart
  33. 795
      lib/core/translations/language/sr_rs.dart
  34. 796
      lib/core/translations/language/sv_se.dart
  35. 793
      lib/core/translations/language/th_th.dart
  36. 794
      lib/core/translations/language/tl_ph.dart
  37. 794
      lib/core/translations/language/tr_tr.dart
  38. 793
      lib/core/translations/language/uk_ua.dart
  39. 792
      lib/core/translations/language/vi_vn.dart
  40. 7
      lib/core/translations/language/zh_cn.dart
  41. 872
      lib/core/translations/language/zh_hk.dart
  42. 1385
      lib/core/translations/language/zh_tw.dart
  43. 7
      lib/data/services/asr_service.dart
  44. 15
      lib/data/services/ble_manager.dart
  45. 31
      lib/data/services/speech_impl/azure_asr_service.dart
  46. 4
      lib/data/services/speech_impl/azure_ast_service.dart
  47. 349
      lib/data/services/speech_impl/xunfei_asr_service.dart
  48. 160
      lib/modules/FTFTranslation/README.md
  49. 10
      lib/modules/FTFTranslation/bindings/FTFTranslation_binding.dart
  50. 246
      lib/modules/FTFTranslation/controllers/FTFTranslation_controller.dart
  51. 212
      lib/modules/FTFTranslation/views/FTFTranslation_view.dart
  52. 2
      lib/modules/agent/controllers/agent_controller.dart
  53. 40
      lib/modules/agent/views/agent_view.dart
  54. 53
      lib/modules/ota_upgrade/controllers/ota_core_contropller.dart
  55. 16
      lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart
  56. 4
      lib/modules/settings/controllers/settings_controller.dart
  57. 58
      lib/modules/settings/views/settings_view.dart
  58. 2
      lib/modules/translation/controllers/translation_controller.dart
  59. 9
      lib/routes/app_pages.dart
  60. 1
      lib/routes/app_routes.dart
  61. 28
      local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt
  62. 3
      local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentServicePlugin.kt
  63. 9
      local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/BleMediaService.kt
  64. 30
      local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift
  65. 33
      local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt
  66. 14
      local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureSpeechPlugin.kt
  67. 34
      local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/XunFeiAsrHelper.kt
  68. 32
      local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureAsrHelper.swift
  69. 22
      local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureSpeechPlugin.swift
  70. 32
      local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/XunFeiAsrHelper.swift

59
lib/core/translations/app_translations.dart

@ -6,7 +6,8 @@ import 'package:get_storage/get_storage.dart';
import 'language/en_us.dart'; // 英语
import 'language/zh_cn.dart'; // 简体中文
import 'language/es_es.dart'; // 西班牙语
import 'language/zh_hk.dart'; // 繁体中文
import 'language/zh_hk.dart'; // 繁体中文(香港)
import 'language/zh_tw.dart'; // 繁体中文
import 'language/pt_pt.dart'; // 添加葡萄牙语导入
import 'language/ja_jp.dart'; // 添加日语导入
import 'language/ko_kr.dart'; // 添加韩语导入
@ -62,24 +63,28 @@ class AppTranslations extends Translations {
String? countryCode = systemLocale.countryCode?.toUpperCase();
String? scriptCode = systemLocale.scriptCode;
// 根据脚本代码判断
if (scriptCode == 'Hant') {
return const Locale('zh', 'HK'); // 繁体中文fallback
} else if (scriptCode == 'Hans') {
return const Locale('zh', 'CN'); // 简体中文fallback
}
// 根据地区代码判断
if (countryCode != null) {
switch (countryCode) {
case 'HK':
case 'MO':
case 'TW':
return const Locale('zh', 'HK'); // 繁体中文fallback
case 'TW':
return const Locale('zh', 'TW'); // 繁体中文fallback
case 'CN':
case 'SG':
return const Locale('zh', 'CN'); // 简体中文fallback
default:
return const Locale('zh', 'CN'); // 简体中文fallback
}
}
// 根据脚本代码判断
if (scriptCode == 'Hant') {
return const Locale('zh', 'TW'); // 繁体中文fallback
} else if (scriptCode == 'Hans') {
return const Locale('zh', 'CN'); // 简体中文fallback
}
}
// 对于其他语言,如果支持则使用英语,否则使用默认的中文
@ -94,7 +99,7 @@ class AppTranslations extends Translations {
static final supportedLocales = [
const Locale('zh', 'CN'), // 简体中文
const Locale('zh', 'HK'), // 香港繁体中文
const Locale('zh', 'TW'), // 台湾繁体中文(映射到香港繁体)
const Locale('zh', 'TW'), // 繁体中文
const Locale('en', 'US'), // 英语
const Locale('es', 'ES'), // 添加西班牙语
const Locale('pt', 'PT'), // 添加葡萄牙语支持
@ -148,16 +153,16 @@ class AppTranslations extends Translations {
// 中文繁体的各种表示方式
'zh-HK': const Locale('zh', 'HK'),
'zh-TW': const Locale('zh', 'HK'), // 台湾繁体映射到香港繁体
'zh-Hant': const Locale('zh', 'HK'),
'zh-TW': const Locale('zh', 'TW'),
'zh-Hant': const Locale('zh', 'TW'),
'zh-Hant-HK': const Locale('zh', 'HK'),
'zh-Hant-TW': const Locale('zh', 'HK'),
'zh-Hant-TW': const Locale('zh', 'TW'),
'zh-Hant-MO': const Locale('zh', 'HK'),
'zh_HK': const Locale('zh', 'HK'),
'zh_TW': const Locale('zh', 'HK'),
'zh_Hant': const Locale('zh', 'HK'),
'zh_TW': const Locale('zh', 'TW'),
'zh_Hant': const Locale('zh', 'TW'),
'zh_Hant_HK': const Locale('zh', 'HK'),
'zh_Hant_TW': const Locale('zh', 'HK'),
'zh_Hant_TW': const Locale('zh', 'TW'),
// 英语的各种表示方式
'en-US': const Locale('en', 'US'),
@ -251,15 +256,6 @@ class AppTranslations extends Translations {
// 处理中文的特殊情况
if (languageCode == 'zh') {
// 优先根据脚本代码判断简繁体
if (scriptCode != null) {
if (scriptCode == 'Hans') {
return const Locale('zh', 'CN'); // 简体中文
} else if (scriptCode == 'Hant') {
return const Locale('zh', 'HK'); // 繁体中文
}
}
// 根据国家/地区代码判断
if (countryCode != null) {
switch (countryCode) {
@ -268,14 +264,24 @@ class AppTranslations extends Translations {
return const Locale('zh', 'CN'); // 简体中文
case 'HK':
case 'MO':
case 'TW':
return const Locale('zh', 'HK'); // 繁体中文
case 'TW':
return const Locale('zh', 'TW'); // 繁体中文
default:
// 默认使用简体中文(大陆用户更多)
return const Locale('zh', 'CN');
}
}
// 再根据脚本代码判断简繁体
if (scriptCode != null) {
if (scriptCode == 'Hans') {
return const Locale('zh', 'CN'); // 简体中文
} else if (scriptCode == 'Hant') {
return const Locale('zh', 'TW'); // 繁体中文
}
}
// 如果没有国家代码,默认使用简体中文
return const Locale('zh', 'CN');
}
@ -301,6 +307,7 @@ class AppTranslations extends Translations {
'en_US': enUS,
'zh_CN': zhCN,
'zh_HK': zhHK, // 添加繁体中文映射
'zh_TW': zhTW, // 添加繁体中文映射
'es_ES': esES, // 添加西班牙语翻译映射
'pt_PT': ptPT, // 添加葡萄牙语映射
'ja_JP': jaJP, // 添加日语映射

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

File diff suppressed because it is too large

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

@ -33,6 +33,7 @@ const Map<String, String> bgBG = {
"spanish": "Испански",
"portuguese": "Португалски",
"traditionalChinese": "Традиционен китайски",
"traditionalChineseHK": "Традиционен китайски (Хонконг)",
"japanese": "Японски",
"korean": "Корейски",
"french": "Френски",
@ -102,8 +103,8 @@ const Map<String, String> bgBG = {
"loginDeclaration": "Декларация на Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Добре дошли в Voitrans, моля прочетете внимателно", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "Политика за поверителност", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "Потребителско споразумение", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". Кликването на 'Съгласявам се и влизам' означава, че сте прочели напълно и се съгласявате с горните споразумения. Кликването на 'Не се съгласявам' ще затвори приложението.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Не се съгласявам", // 不同意
@ -186,6 +187,215 @@ const Map<String, String> bgBG = {
"usageStats": "Статистика за използване",
"usageStatsInfo": "Прегледвайте статистика за използване на приложението",
"scene": "Сценарии",
// 用量统计模块
"aiChat": "AI чат",
"translationStats": "Статистика за преводи",
"meetingStats": "Статистика за срещи",
"today": "Днес",
"thisWeek": "Тази седмица",
"thisMonth": "Този месец",
"history": "История",
"currentSessionStats": "Статистика за текущата сесия",
"translationCount": "Брой преводи",
"sessionDuration": "Продължителност на сесията",
"characters": "Символи",
"recordingDuration": "Продължителност на записа",
"totalApiCalls": "Общо API повиквания",
"sessionCount": "Брой сесии",
"totalCharacters": "Общо символи",
"apiCallStats": "Статистика за API повиквания",
"translationApi": "API за превод",
"asr": "Разпознаване на реч",
"tts": "Синтез на реч",
//"aiSummary": "AI резюме",
"dataVolumeStats": "Статистика за обем данни",
"sourceTextCharacters": "Символи в изходния текст",
"ttsTextCharacters": "Символи в TTS текст",
"effectiveAudioDuration": "Ефективна продължителност на аудиото",
"totalSessionDuration": "Обща продължителност на сесията",
"costStats": "Статистика за разходи",
"estimatedCost": "Очаквани разходи",
"dailyCostThreshold": "Дневен лимит за разходи",
"monthlyCostThreshold": "Месечен лимит за разходи",
"usageBehaviorStats": "Статистика за поведение на използване",
"mostUsedLanguagePair": "Най-използвана езикова двойка",
"mostUsedMode": "Най-използван режим",
"asrApiCalls": "ASR повиквания",
"totalAudioDuration": "Обща продължителност на аудиото",
"audioFileSize": "Размер на аудио файла",
"transcriptBytes": "Байтове на транскрипцията",
// 通知文案
"loadFailed": "Неуспешно зареждане",
"statsLoadFailedTryLater":
"Неуспешно зареждане на статистиката. Моля, опитайте отново по-късно.",
"cleanupComplete": "Почистването завърши",
"cleanedOldData": "Почистени са данни по-стари от 90 дни",
"exportFeature": "Функция за експорт",
"exportInDevelopment": "Експортът на данни е в процес на разработка",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Налични пакети',
'remainingQuota': 'Оставаща квота',
'totalQuota': 'Обща квота',
'remaining': 'Оставащо',
'featureDescription': 'Описание на функцията',
// AI 功能卡片
'musicAndRecommendation': 'Музика и препоръки',
'navigationAndRoutes': 'Навигация и маршрути',
'nearbySearch': 'Търсене наблизо',
'newsInformation': 'Новини',
'communicationAssistant': 'Комуникационен асистент',
// 翻译功能卡片
'realtimeTranscription': 'Транскрипция в реално време',
// 'textTranslation' 已存在
'sceneLexicon': 'Сценариен речник',
'subtitleDisplay': 'Субтитри',
// 会议功能卡片
'meetingRecording': 'Запис на среща',
'transcriptionAndSummary': 'Транскрипция и резюме',
'keywordSearch': 'Търсене по ключови думи',
'collaborationSharing': 'Сътрудничество и споделяне',
// 商品名称(按ID)
'ai_001_name': 'AI Базов 100',
'ai_002_name': 'AI Базов 500',
'ai_003_name': 'AI Базов 1000',
'meet_001_name': 'Среща Базов 100',
'meet_002_name': 'Среща Базов 500',
'meet_003_name': 'Среща Базов 1000',
'trans_001_name': 'Превод Базов 100',
'trans_002_name': 'Превод Базов 500',
'trans_003_name': 'Превод Базов 1000',
// 商品描述(按ID)
'ai_001_desc': 'Включва 100 използвания. Достъп до основни AI функции.',
'ai_002_desc': 'Включва 500 използвания. Достъп до основни AI функции.',
'ai_003_desc': 'Включва 1000 използвания. Достъп до основни AI функции.',
'meet_001_desc': 'Включва 100 записа/транскрипции на срещи.',
'meet_002_desc': 'Включва 500 записа/транскрипции на срещи.',
'meet_003_desc': 'Включва 1000 записа/транскрипции на срещи.',
'trans_001_desc': 'Включва 100 превода (глас/текст).',
'trans_002_desc': 'Включва 500 превода (глас/текст).',
'trans_003_desc': 'Включва 1000 превода (глас/текст).',
// 商品页通用页脚
'appNameProvider': 'Приложение: VoiTrans · Предоставено от: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP обслужване на клиенти QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Аудио запис, транскрипция, търсене по ключови думи и автоматично резюме за повишаване на ефективността на срещите.',
'meetingHeaderDesc2':
'Подходящо за бизнес срещи, записки в клас и протоколи от интервюта.',
'meetingAutoRecording': 'Автоматичен запис и сегментиране',
'meetingSpeakerTagging': 'Етикетиране на говорителите',
'meetingLongAudioTranscription': 'Транскрипция на дълго аудио',
'meetingKeyPointSummary': 'Извличане на ключови точки',
'meetingTopicNameSearch': 'Търсене по тема/име',
'meetingTimelineJump': 'Скок във времевата линия',
'meetingExportSummary': 'Експорт на протоколи',
'meetingMultiPlatformShare': 'Споделяне между платформи',
'meetingDisclaimer':
'Използвайте в тиха среда; производителността зависи от микрофона и мрежата.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Едновременен превод в реално време и текстов превод с глас с ниска латентност.',
'transHeaderDesc2': 'Подходящо за пътуване, бизнес, речи и обучение.',
'translateZhEn': 'Китайско-английски превод',
'lowLatencyVoiceBroadcast': 'Гласово излъчване с ниска латентност',
'multiLangTextTranslation': 'Многоезичен текстов превод',
'termOptimizationContextPreserve':
'Оптимизация на терминологията и запазване на контекста',
'lexiconTourBusinessLife': 'Речници за пътуване/бизнес/живот',
'personalVocabularyMemory': 'Лична памет за речник',
'conversationSubtitleLargeText': 'Субтитри за разговор / Режим с голям текст',
'colorHighContrast': 'Висок цветови контраст',
'transDisclaimer':
'Производителността на превода зависи от микрофона, мрежовата латентност и околния шум.',
// AI 商品页描述
'aiHeaderDesc1':
'По-голяма квота за разговори, повече повиквания на инструменти, удължена дължина на контекста.',
'aiHeaderDesc2':
'Подходящо за агентски въпроси и отговори, обобщаване, анализ и изпълнение на задачи.',
'musicSearchPlaybackControl':
'Търсене в музикалната библиотека и контрол на възпроизвеждането',
'smartPlaylistAndSimilarRecommendations':
'Интелигентен плейлист и препоръки за подобни песни',
'routePlanningAndCongestionAvoidance':
'Планиране на маршрути и избягване на задръствания',
'voiceBroadcastAndWaypoints': 'Гласово излъчване и настройки на точки',
'realTimeWeatherForecast': 'Времето в реално време и прогноза',
'clothingAdviceAndTravelReminders':
'Съвети за облекло и напомняния за пътуване',
'poiSearchFoodGasParking': 'Търсене на POI: хранене / гориво / паркинг',
'ratingsHoursAndDirectRoutes': 'Рейтинги, работно време и директни маршрути',
'hotNewsAndTopicOverview': 'Горещи новини и преглед на теми',
'longArticleSummariesAndKeyPoints':
'Резюмета на дълги статии и ключови точки',
'helpCallAndSMS': 'Помощ при обаждания и SMS',
'templatedMessagesAndScheduleReminders':
'Шаблонни съобщения и напомняния за графика',
'aiDisclaimer':
'Функциите зависят от разрешенията на устройството, наличността на услугата и мрежовите условия.',
// 会员商品页
'benefitsOverview': 'Преглед на предимствата',
'higherQuota': 'По-висока квота за използване',
'lowerUnitPrice': 'По-ниска единична цена',
'priorityService': 'Приоритетно обслужване',
'exclusiveSupportChannel': 'Специализиран канал за поддръжка',
'fastResponse': 'Бърз отговор на проблеми',
'eventsAndDiscounts': 'Събития и отстъпки',
'memberExclusiveEvents': 'Ексклузивни събития за членове',
'longTermDiscountPlan': 'Дългосрочен план за отстъпки',
'generalPrivileges': 'Общи привилегии',
'earlyAccessNewFeatures': 'Ранен достъп до нови функции',
'crossDeviceSync': 'Синхронизация между устройства',
'vipDisclaimer':
'Действителните предимства зависят от детайлите на пакета и могат да се променят с версиите.',
// 新手引导 / Onboarding
'skip': "Прескочи",
'next': 'Напред',
'sayLilyHint': 'Кажете "Lily Lily" на микрофона',
'imHere': 'Тук съм~',
'guideWelcomeWakeAI':
'Добре дошли в Voitrans! Първо, събудете вашия AI "Lily".',
'aiReplyCompleted': 'Lily завърши отговора!',
'aiThinking': 'Lily мисли…',
'guideAwakenSuccess': 'Страхотно! Lily е будна—помолете я за помощ.',
'confirmInput': 'Потвърди въвеждането',
'guideClickSendPrefix': 'Натиснете изпрати, ',
// AI 引导步骤
'guideWeatherStart': 'Кажете на Lily: "Какво е времето днес?"',
'guideWeatherInput': 'Какво е времето днес?',
'guideWeatherSend': 'Lily ще докладва времето в реално време',
'guideWeatherEnd':
'Lily може да докладва времето на живо—опитайте други команди',
'guideMusicStart': 'Кажете на Lily: "Пусни малко рок музика"',
'guideMusicInput': 'Пусни малко рок музика',
'guideMusicSend': 'Lily ще намери музика за вас',
'guideMusicEnd': 'Lily намери музика—опитайте други команди',
'guideNavStart': 'Кажете на Lily: "Навигирай до летище Шенжен"',
'guideNavInput': 'Навигирай до летище Шенжен',
'guideNavSend': 'Lily ще планира маршрута',
'guideNavEnd': 'Навигацията е зададена—опитайте други команди',
'guideMeetingStart':
'Кажете на Lily: "Създай напомняне за среща за утре в 15:00"',
'guideMeetingInput': 'Създай напомняне за среща за утре в 15:00',
'guideMeetingSend': 'Lily ще създаде напомняне за среща',
'guideMeetingEnd': 'Напомнянето е създадено—опитайте други команди',
'guidePhoneStart': 'Кажете на Lily: "Обади се на мама"',
'guidePhoneInput': 'Обади се на мама',
'guidePhoneSend': 'Lily ще направи обаждането',
'guidePhoneEnd': 'Обаждането е направено—опитайте други команди',
'guideSmsStart':
'Кажете на Lily: "Изпрати SMS на татко: Ще си бъда вкъщи за вечеря"',
'guideSmsInput': 'SMS на татко: Ще си бъда вкъщи за вечеря',
'guideSmsSend': 'Lily ще изпрати съобщението',
'guideSmsEnd': 'Съобщението е изпратено—гласовият контрол е удобен',
// 商务会议助手页
"startMeeting": "Започни среща",
@ -200,13 +410,247 @@ const Map<String, String> bgBG = {
'aiSummary': 'AI резюме',
'meetingTranscript': 'Протокол от срещата',
// Meeting模块 - 导航和基础功能
'files': 'Файлове',
'mine': 'Мои',
'connect': 'Свържи',
'allFiles': 'Всички файлове',
'searchInAllFiles': 'Търсене във всички файлове',
'from': 'От',
'sortBy': 'Сортирай по',
'creationTime': 'Време на създаване',
'bluetoothConnection': 'Bluetooth връзка',
'meetingReconnect': 'Свържи отново',
'searching': 'Търсене...',
'searchFailed':
'Търсенето е неуспешно, моля проверете дали Bluetooth е включен',
'aiPenNotFound': 'Устройството AI PEN не е намерено',
'connectedToAiPen': 'Свързан към AI PEN устройство',
'checkingNewFiles': 'Проверка за нови файлове за импорт',
'startingWifi': 'Стартиране на Wi-Fi...',
'newFilesDetected': 'Открити са нови файлове, подготовка за импорт',
'noNewFiles': 'Няма нови файлове за импорт',
'connectingWifi': 'Свързване с Wi-Fi...',
'wifiConnected': 'Успешно свързване с Wi-Fi',
'downloadingFiles': 'Изтегляне на файлове...',
'downloadingFileProgress': 'Общо {total} файла, изтегляне на файл {current}',
'downloadComplete': 'Изтеглянето завърши',
'downloadCompleteInfo':
'Изтеглянето завърши, общо {count} файла, автоматично връщане след 2 секунди',
// Meeting模块 - 录音功能
'startRecording': 'Започни запис',
'liveRecording': 'Запис на живо',
'audioVideoRecording': 'Аудио/Видео запис',
'callRecording': 'Запис на разговор',
'importAudio': 'Импорт на аудио',
'transcribing': 'Транскрибиране...',
'summarizing': 'Обобщаване...',
'analyzing': 'Анализиране...',
'summaryComplete': 'Обобщението завърши',
//'generating': '正在生成...',
'generate': 'Генерирай',
'overview': 'Преглед',
'transcription': 'Транскрипция',
'summary': 'Резюме',
'mindMap': 'Мисловна карта',
'editSpeaker': 'Редактирай',
'nameSpeaker': 'Име на говорител',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Записи на транскрипции',
'templateCommunity': 'Общност за шаблони',
'comingSoon': 'Очаквайте скоро',
'integration': 'Интеграция',
'voitransPrivateCloud': 'VOITRANS ЧАСТЕН ОБЛАК',
'enabled': 'Включено',
'disabled': 'Изключено',
'myVoitransDevice': 'Моето VOITRANS устройство',
'helpAndFeedback': 'Помощ и обратна връзка',
'aboutVoitrans': 'За VOITRANS',
'meetingDays': 'Дни',
'meetingHours': 'Часове',
'voitransAiMember': 'Voitrans AI член',
'unlockStarterMember': 'Отключи стартов член',
'bindDeviceToActivate':
'Свържи Voitrans устройство за активиране на стартово членство',
'unlockNow': 'Отключи сега',
// Meeting模块 - 会员功能
'comparison': 'Сравнение',
'detailedInfo': 'Детайлна информация',
'monthlyTranscriptionTime': 'Месечно време за транскрипция',
'unlimited': 'Неограничено',
'professionalTemplates': 'Професионални шаблони',
'limited': 'Ограничено',
'fullTemplates': 'Пълни шаблони',
'professionalTerms': 'Професионални термини',
'customTemplates': 'Персонализирани шаблони',
'visualMindMap': 'Визуална мисловна карта',
'speakerIdentification': 'Идентификация на говорител',
'aiVoiceEnhancement': 'AI подобрение на гласа',
'audioImport': 'Аудио импорт',
'multipleExportFormats': 'Множество формати за експорт',
'professionalSummaryTemplates': 'Професионални шаблони за резюме',
'professionalTemplateDesc':
'Професионален дизайн на шаблони за подобряване на ефективността на работата. Персонализирано според нуждите на индустрията.',
'customTemplateDesc':
'Можете да персонализирате подканите за резюме според нуждите си и да ги използвате за генериране на необходимите резюмета.',
'askAiDesc':
'Интелигентно извличане на по-дълбока информация от записи, генериране на таблици с данни, ключови заключения от дискусии, списъци със задачи, имейли за доклади и друго форматирано съдържание с едно кликване.',
'visualMindMapDesc':
'Отвъд резюметата - организирайте и визуализирайте ключови точки с мисловни карти за по-ефективно разбиране на пълния текст.',
'templateCommunityDesc':
'Открийте, споделете и получете вдъхновение от библиотеката с шаблони, създадена от потребители.',
'speakerIdentificationDesc':
'Аудио транскрипцията ще поддържа идентификация на говорител, по-интуитивно възстановяване на съдържанието на срещи или телефонни разговори. В същото време резюмето ще бъде по-точно.',
'privateCloudSyncDesc':
'Вашите записи и транскрипции ще бъдат сигурно съхранявани на специализирани облачни сървъри, с пълно криптиране по време на качване и изтегляне, за да се гарантира поверителност и сигурност.',
'aiVoiceEnhancementDesc':
'AI подобрението на гласа поддържа множество настройки за намаляване на шума, интелигентно елиминира фоновия шум, подобрява яснотата на гласа и качеството на възпроизвеждане на аудио.',
'audioImportDesc':
'Лесно импортиране на аудио файлове от локални или приложения на трети страни, като гласови бележки, Google Drive и др.',
'multipleExportFormatsDesc':
'Експортирайте вашите аудио записи, транскрипционен текст и резюмета в различни формати (TXT, PDF, JPEG), за да отговорите на нуждите си.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Надстройте членството си',
'yearlySubscription': 'Годишен абонамент',
'monthlySubscription': 'Месечен абонамент',
'proMonthly': 'Pro ¥60/месец',
'proMonthlyDesc':
'7-дневен безплатен пробен период, след това ¥800/година. Отказ по всяко време преди края на пробния период.',
'sevenDayTrial': '7-дневен безплатен пробен период',
'unlimitedMonthly': 'Неограничен ¥120/месец',
'unlimitedMonthlyDesc':
'7-дневен безплатен пробен период, след това ¥1600/година. Отказ по всяко време преди края на пробния период.',
'trialNote':
'*Безплатен пробен период за 7 дни, след това таксуване годишно, отказ по всяко време.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/месец',
'subscribe': 'Абонирай се',
'unlimitedPrice': 'Неограничен ¥198',
'unlimitedMonthlyPrice': '¥198/месец',
'upgradeNote':
'*След надграждане на абонамента, оставащите дни от оригиналния абонамент ще бъдат автоматично изчислени и възстановени във вашия платежен акаунт',
'buyMoreTranscriptionTime': 'Купи повече време за транскрипция',
'sixThousandMinutes': '6,000 минути',
'threeThousandMinutes': '3,000 минути',
'sixHundredMinutes': '600 минути',
'oneHundredTwentyMinutes': '120 минути',
'validityPeriod': '*Период на валидност: ',
'validityNote':
'Активира се веднага след покупка, валидно за 2 години след активация.',
'purchase': 'Покупка',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Избери шаблон за резюме',
'useThisTemplate': 'Използвай този шаблон',
'lastUsed': 'Последно използвано',
'viewAll': 'Виж всички',
'recordingLanguage': 'Език на записа',
'chineseSimplified': 'Китайски мандарин (Опростен)',
'meetingGenerateNow': 'Генерирай сега',
'keyEventsAnalyzed': 'Анализирани {count} ключови събития.',
'aiAnalysisDesc':
'AI анализът идентифицира ключови събития в записите, позволявайки ви да изберете важни събития за AI генериране.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Системни настройки", //系统设置
"vipRecharge": "Преплащане за VIP член", //会员充值
"aiRecharge": "Премиум член", //AI充值
"translationRecharge": "Преплащане за превод", //翻译充值
"meetingAssistantRecharge": "Преплащане за Сообщението", //会议助手充值
"cloudSync": "Преплащане за синхронизация в облака", //云端同步
"systemSettings": "Системни настройки",
"vipRecharge": "Преплащане за VIP член",
"aiRecharge": "Премиум член",
"translationRecharge": "Преплащане за превод",
"meetingAssistantRecharge": "Преплащане за Сообщението",
"cloudSync": "Преплащане за синхронизация в облака",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Свързано устройство:",
"accountId": "ID на акаунта:",
"systemSetting": "Системни настройки",
@ -243,12 +687,10 @@ const Map<String, String> bgBG = {
'selecttimbre': 'Избери тембър',
'pleaseRead': 'Моля прочетете',
'completeRecording': 'Завърши записа',
"firmwareUpgrade": "Актуализация на фърмуера", // 固件升级
"bleHeadsetFirmwareUpgrade":
"Актуализация на фърмуера на BLE слушалките", // BLE耳机固件版本升级
"deviceManagement": "Управление на устройства", // 设备管理
"manageConnectedDevices":
"Управление на свързани Bluetooth устройства", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "Актуализация на фърмуера",
"bleHeadsetFirmwareUpgrade": "Актуализация на фърмуера на BLE слушалките",
"deviceManagement": "Управление на устройства",
"manageConnectedDevices": "Управление на свързани Bluetooth устройства",
//设置setting_controller
// 版本更新相关
@ -257,11 +699,10 @@ const Map<String, String> bgBG = {
'networkErrorRetry': 'Мрежова грешка, моля опитайте отново по-късно',
// 设备管理相关
'clearPairedDevices': 'Изчисти сдвоени устройства',
'clearPairedDevicesConfirm':
'Сигурни ли сте, че искате да изчистите всички сдвоени устройства?',
'clearPairedDevicesSuccess': 'Успешно изчистване на сдвоени устройства',
'clearPairedDevicesFailed': 'Неуспешно изчистване на сдвоени устройства',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Гласов разговор в реално време",
@ -270,11 +711,20 @@ const Map<String, String> bgBG = {
"loading": "Зареждане...",
//设备管理页面
"earphone": "Слушалки",
"voicerecorder": "Диктофон",
"notBound": "Не е свързано",
"deviceNotBoundYet": "Все още няма свързано устройство",
"deviceTypeUnknown": "Неизвестно устройство",
"deviceTypeClassicBluetoothHeadset": "Класически Bluetooth слушалки",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth слушалки",
"deviceTypeSmartVoiceRecorder": "Интелигентен диктофон",
"deviceTypeSmartEye": "Интелигентни очила",
"unbind": "Развържи",
"noDevicesBound": "Все още няма свързани устройства",
"pleaseBindDeviceFirst": "Моля, първо свържете устройство за управление",
"noMacAddress": "Няма MAC адрес",
"licenseCode": "Лицензен код",
"confirmUnbind": "Потвърдете развързването",
"confirmUnbindMessage":
"Сигурни ли сте, че искате да развържете устройство \"{deviceName}\"?",
"confirmUnbindAction": "Потвърдете развързването",
//Agent 模块
// agent View
@ -303,6 +753,20 @@ const Map<String, String> bgBG = {
"loadMoreMessages": "Зареди повече съобщения...",
"loadFailedClickRetry": "Неуспешно зареждане, кликнете за повторен опит",
"swipeUpForMore": "Плъзнете нагоре за повече",
"callingTool": "Помагам ви, моля изчакайте!", // 正在帮您,请稍等!
"voice_interrupt": "Прекъсване", // 语音打断
// 预设提示词
"presetMusic": "Пусни малко музика", // 来点音乐
"presetNavigation": "Навигация до", // 导航
"presetWeather": "Времето днес", // 今日天气
"presetNews": "Новините днес", // 今日新闻
"presetFood": "Храна наблизо", // 美食
"playSomeMusic": "Пусни популярна музика", // 播放一些流行音乐
"navigationTo": "Моля, помогни ми да навигирам до", // 导航到
"todayWeather": "Какво е времето днес?", // 今日天气
"todayNews": "Какви са новините днес?", // 今日新闻
"nearbyFood": "Каква вкусна храна има наблизо?", // 美食
// Agent controller
'welcomeMessage': 'Здравейте! Аз съм **Сяо Ян**, мога да ви помогна с:\n\n'
@ -336,7 +800,7 @@ const Map<String, String> bgBG = {
'submitSuccess': 'Успешно изпращане',
'submitFailed': 'Неуспешно изпращане',
'reportSubmitted': 'Докладът е изпратен, ще го обработим възможно най-скоро',
//'networkError': 'Мрежова грешка, моля опитайте отново по-късно',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Вредно/небезопасно',
'pornographicVulgar': 'Порнографско/вулгарно',
'misleadingAttack': 'Подвеждаща атака',
@ -346,7 +810,7 @@ const Map<String, String> bgBG = {
'other': 'Друго',
'reportDescriptionHint':
'Искаме да знаем причината за доклада ви, можете да опишете проблема, с който сте се сблъскали.',
//'submit': 'Изпрати',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Генерирано от AI',
@ -401,6 +865,17 @@ const Map<String, String> bgBG = {
"friday": "Петък",
"saturday": "Събота",
"sunday": "Неделя",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Награда за добре дошли",
"firstBindRewardDesc": "Получихте награди за свързване.",
"vipLevelLabel": "VIP ниво:",
"expiryLabel": "Изтичане:",
"notActivated": "Неактивирано",
"aiChatCreditsLabel": "AI чат кредити:",
"translationCreditsLabel": "Кредити за превод:",
"meetingCreditsLabel": "Кредити за срещи:",
"ok": "ОК",
// 天气描述
"sunny": "Слънчево",
"partlyCloudy": "Малко облачно",
@ -436,6 +911,8 @@ const Map<String, String> bgBG = {
'deleteAccount': 'Изтрий акаунт',
'deleteAccountTips':
'Сигурни ли сте, че искате да изтриете завинаги акаунта си? Тази операция не може да бъде отменена',
'clean': 'Изчисти кеша',
'cleanTips': 'Сигурни ли сте, че искате да изчистите личния кеш?',
// Profile 错误信息
'networkConnectionFailed':
@ -456,8 +933,8 @@ const Map<String, String> bgBG = {
'Вътрешна грешка в сървъра, моля опитайте отново по-късно',
// Profile 用户交互
//'error': 'Грешка',
//'success': 'Успех',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Неуспешно компресиране на изображението',
'avatarUpdateFailed': 'Неуспешна актуализация на аватара',
'usernameCannotBeEmpty': 'Потребителското име не може да бъде празно',
@ -491,15 +968,26 @@ const Map<String, String> bgBG = {
'getPermissionStatusFailed':
'Неуспешно получаване на състоянието на разрешенията',
'communicationPermissions': 'Разрешения за комуникация',
'bluetoothPermissions': 'Bluetooth разрешения',
'notificationPermissions': 'Разрешения за известия',
'storagePermissions': 'Разрешения за съхранение',
'microphonePermissions': 'Разрешения за микрофон',
'alarmPermissions': 'Разрешения за аларма',
'calendarPermissions': 'Разрешения за календар',
'locationPermissions': 'Разрешения за местоположение',
'phone': 'Телефон',
'sms': 'SMS',
'contacts': 'Контакти',
//'bluetooth': '蓝牙',
'notification': 'Известия',
'alarm': 'Аларма',
'calendarWrite': 'Писане в календара',
'calendarFullAccess': 'Пълен достъп до календара',
'locationInfo': 'Информация за местоположението',
'phonePermissionDesc': 'Използва се за функцията за телефонни обаждания',
'smsPermissionDesc': 'Използва се за функцията за изпращане на SMS',
'alarmPermissionDesc':
'Използва се за задаване на точни аларми, за да се гарантира, че напомнянията се задействат навреме',
'calendarWritePermissionDesc':
'Използва се за създаване на календарни събития и напомняния',
'calendarFullAccessPermissionDesc':
@ -518,18 +1006,83 @@ const Map<String, String> bgBG = {
'Функцията за телефонни обаждания се нуждае от разрешение за телефон',
'smsPermissionDetailDesc':
'Функцията за изпращане на SMS се нуждае от SMS разрешение',
'alarmPermissionDetailDesc':
'Това разрешение е необходимо за задаване на точни аларми и гарантиране, че напомнянията се задействат навреме',
'calendarWritePermissionDetailDesc':
'Създаването на календарни събития се нуждае от разрешение за писане в календара',
'calendarFullAccessPermissionDetailDesc':
'Управлението на календарни събития се нуждае от пълно разрешение за календара',
'locationPermissionDetailDesc':
'Получаването на информация за местоположението се нуждае от разрешение за местоположение',
'contactsPermissionDesc': 'Използва се за достъп до информация за контакти',
'contactsPermissionDetailDesc':
'Функционалността за телефонни разговори и SMS изисква разрешение за контакти за избор на контакти',
'bluetoothPermissionDesc':
'Използва се за свързване и управление на Bluetooth устройства',
'bluetoothPermissionDetailDesc':
'Свързването с Bluetooth слушалки и други устройства изисква Bluetooth разрешение',
'bluetoothScanPermissionDesc':
'Използва се за сканиране на близки Bluetooth устройства',
'bluetoothScanPermissionDetailDesc':
'Сканирането за близки Bluetooth устройства изисква разрешение за Bluetooth сканиране',
'bluetoothConnectPermissionDesc':
'Използва се за свързване с Bluetooth устройства',
'bluetoothConnectPermissionDetailDesc':
'Свързването с Bluetooth устройства изисква разрешение за Bluetooth свързване',
'notificationPermissionDesc':
'Използва се за изпращане на уведомителни съобщения',
'notificationPermissionDetailDesc':
'Приложението се нуждае от разрешение за известия, за да ви изпраща важни сигнали и съобщения',
'appNeedsPermissionForFullFunction':
'Приложението се нуждае от това разрешение за да предостави пълна функционалност',
'permanentDenialText':
'Вие сте отказали постоянно разрешението за {permission}, моля отидете в настройките на приложението за да го включите',
'goToSettings': 'Отиди в настройки',
// 权限申请
'bluetoothScan': 'Bluetooth сканиране',
'bluetoothConnect': 'Bluetooth свързване',
'bluetoothScanExplanation':
'Приложението се нуждае от разрешение за Bluetooth сканиране, за да сканира близки Bluetooth устройства.',
'bluetoothConnectExplanation':
'Приложението се нуждае от разрешение за Bluetooth свързване, за да се свързва с Bluetooth устройства.',
'locationForBluetoothExplanation':
'Приложението се нуждае от разрешение за местоположение, за да сканира Bluetooth устройства.',
'bluetoothScanPermanentDenial':
'Разрешението за Bluetooth сканиране е постоянно отказано, моля отидете в настройките, за да го включите ръчно.',
'bluetoothConnectPermanentDenial':
'Разрешението за Bluetooth свързване е постоянно отказано, моля отидете в настройките, за да го включите ръчно.',
'locationPermanentDenial':
'Разрешението за местоположение е постоянно отказано, моля отидете в настройките, за да го включите ръчно.',
'notificationPermission': 'Известия',
'locationPermission': 'Местоположение',
'notificationPermissionExplanation':
'Разрешението за известия е необходимо за показване на състоянието на възпроизвеждане на музика.',
'locationPermissionExplanation':
'Разрешението за местоположение е необходимо за получаване на текущото местоположение.',
'notificationPermissionPermanentDenial':
'Постоянно сте отказали разрешение за известия, моля отидете в настройките, за да го включите.',
'locationPermissionPermanentDenial':
'Постоянно сте отказали разрешение за местоположение, моля отидете в настройките, за да го включите.',
//'microphonePermission': '录音',
'storagePermission': 'Съхранение',
'microphonePermissionExplanation':
'Нуждаем се от разрешение за микрофон, за да записваме аудио съдържание.',
'storagePermissionExplanation':
'Нуждаем се от разрешение за съхранение, за да избирате и качвате аудио файлове.',
'microphonePermissionPermanentDenial':
'Разрешението за микрофон е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за микрофон.',
'storagePermissionPermanentDenial':
'Разрешението за съхранение е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за съхранение.',
//permission_util.dart
'permissionUtilNeed': 'Нужно е ',
'permissionUtilPermission': ' разрешение',
'permissionUtilRestricted': ' Разрешението е ограничено',
'permissionUtilRestrictedMessage':
'Тази функция е недостъпна или ограничена на текущото устройство, моля проверете настройките на устройството или системните ограничения',
'permissionUtilConfirm': 'ОК',
// 版本更新对话框
'newVersionFound': 'Намерена е нова версия', // 版本更新对话框标题
'remindLater': 'Напомни по-късно', // 稍后提醒按钮
@ -648,8 +1201,23 @@ const Map<String, String> bgBG = {
"东帝汶": "Източен Тимор",
"斐济": "Фиджи",
"所罗门群岛": "Соломонови острови",
"刚果民主共和国": "Демократична република Конго",
"安哥拉": "Ангола",
"苏丹": "Судан",
"马尔代夫": "Малдиви",
"不丹": "Бутан",
"摩纳哥": "Монако",
"圣马力诺": "Сан Марино",
"牙买加": "Ямайка",
"巴哈马": "Бахами",
"巴布亚新几内亚": "Папуа Нова Гвинея",
"萨摩亚": "Самоа",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Превод на снимки",
"textTranslation": "Текстов превод",
// 翻译主页 (translation_view.dart)
"translationHistory": "История на преводите",
"enableRecording": "Включи записването",
@ -658,9 +1226,24 @@ const Map<String, String> bgBG = {
"phoneUser": "Потребител на телефон",
"selectSourceLanguage": "Избери изходен език",
"selectTargetLanguage": "Избери целеви език",
"me": "Аз",
"counterPart": "Събеседник",
"bluetoothCallStateError":
"Моля уверете се, че Bluetooth слушалките са свързани с телефона и са в състояние на разговор",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Автоматично откриване", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Неуспешно откриване на езика",
"translationFailed": "Неуспешен превод",
"pleaseInputText": "Моля въведете текст",
"textTooLong": "Текстът е твърде дълъг, макс 5000 символа",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Няма история на преводи",
"historyRecords": "Исторически записи",
"clearResults": "Изчисти резултатите",
"clearHistory": "Изчисти историята",
"clearHistoryConfirm":
"Сигурни ли сте, че искате да изчистите цялата история на преводите? Тази операция не може да бъде отменена.",
@ -669,7 +1252,61 @@ const Map<String, String> bgBG = {
"deleteSessionConfirm":
"Сигурни ли сте, че искате да изтриете всички записи на преводи за тази сесия? Тази операция не може да бъде отменена.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Избери източник на изображение",
"imagePreview": "Преглед на изображение",
"translationResult": "Резултат от превода",
"recognitionResult": "Резултат от разпознаването",
"translatedImagePreview": "Преглед на преведеното изображение",
"translatedImageLoadFailed": "Неуспешно зареждане на преведеното изображение",
"pleaseSelectImage": "Моля изберете изображение",
"imageLoadFailed": "Неуспешно зареждане на изображение",
"imageQuality": "Качество на изображението",
"maxSize": "Максимален размер",
"close": "Затвори",
"setImageQuality": "Задай качество на изображението",
"currentQuality": "Текущо качество: @value%",
"setMaxSize": "Задай максимален размер",
"currentMaxSize": "Текущ: @pxpx",
"waitingForAction": "Изчакване на действие",
"pleaseSelectImageToStart": "Моля изберете изображение за начало",
"chooseImage": "Избери изображение",
"openingCamera": "Отваряне на камерата...",
"openingPhotoAlbum": "Отваряне на фотоалбума...",
"cancelled": "Отменено",
"userCancelledSelection": "Потребителят отмени избора",
"translatingImage": "Превеждане на изображение",
"callingImageTranslateService":
"Повикване на услугата за превод на изображения...",
"savingRecord": "Запазване на записа",
"savingTranslationResult": "Запазване на резултата от превода...",
"translationCompleted": "Преводът завърши",
"allStepsCompleted": "Всички стъпки завършиха",
"processingFailed": "Обработката е неуспешна",
"imageProcessingOrTranslationFailed":
"Обработката на изображението или преводът са неуспешни. Моля опитайте отново.\nГрешка: {error}",
"imageTooLarge": "Размерът на изображението надвишава лимита от 4MB",
"imageTooLargeHint":
"Размерът на изображението надвишава 4MB. Намалете качеството или размерите и опитайте отново",
"emptyTranslationResult":
"API за превод на изображения върна празен резултат",
"imageTranslationFailedTryLater":
"Преводът на изображение е неуспешен. Мрежов проблем или лимит на скоростта. Моля опитайте по-късно",
"imageTranslationApiException":
"Изключение в API за превод на изображения. Проверете мрежата и опитайте отново",
"permissionRequired": "Изисква се разрешение",
"cameraPermissionRequired":
"Изисква се разрешение за камера за правене на снимки",
"photoAlbumPermissionRequired":
"Изисква се разрешение за фотоалбум за избор на изображения",
"translationDetails": "Детайли на превода",
"originalImage": "Оригинално изображение",
"sourceLanguage": "Изходен език",
"targetLanguage": "Целеви език",
"translationTime": "Време на превод",
"shareInDevelopment": "Функцията за споделяне е в процес на разработка",
// 翻译录音文件列表页
"translateAudioFiles": "Преведи аудио файлове",
"noAudioFiles": "Няма аудио файлове",
"calculating": "Изчисляване...",
@ -715,7 +1352,7 @@ const Map<String, String> bgBG = {
"autoInputCode": "Автоматично въвеждане на код",
"skipBinding": "Прескочи свързването",
"rescan": "Сканирай отново",
"skip": "Прескочи",
"verifyingDevice": "Проверка на устройството...",
"confirmBinding": "Потвърди свързването",
"associatingDevice": "Асоцииране на устройството...",
@ -749,17 +1386,17 @@ const Map<String, String> bgBG = {
"pairingFailedRetry": "Неуспешно сдвояване, моля опитайте отново",
// 配对控制器相关
//'connectDevice': 'Свържи устройство',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Моля включете Bluetooth',
'deviceDisconnected': 'Устройството е прекъснато',
'readyToStartPairing': 'Готов за започване на сдвояването',
'checkingEnvironment': 'Проверка на средата...',
'ensureHeadsetOnAndPairingMode':
'Моля уверете се, че слушалките са включени и в режим на сдвояване',
//'goToBluetoothSettings': 'Отиди в Bluetooth настройките',
//'verifyingDevice': 'Проверка на устройството...',
//'confirmBinding': 'Потвърди свързването',
//'associatingDevice': 'Асоцииране на устройството...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Установяване на сигурна връзка...',
'needManualBindingAuthCode':
'Нужен е ръчен код за разрешение на свързването...',
@ -784,6 +1421,19 @@ const Map<String, String> bgBG = {
'deviceAuthorizationFailedCheckCode':
'Неуспешно разрешение на устройството, моля проверете кода за разрешение',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Изисква се ръчно активиране на Bluetooth', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Моля следвайте тези стъпки:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Включете Bluetooth: Настройки → Bluetooth → Включи', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Свържете устройство: Намерете вашето устройство в "Моите устройства" и натиснете за свързване', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Върнете се в приложението, за да продължите процеса на сдвояване', // 返回应用继续配对流程
'bluetoothGuideTip':
'Съвет: Можете също да задържите иконата на Bluetooth в Центъра за управление за бърз достъп до настройките на Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'Разбрах', // 我知道了
//用户反馈页
"feedback": "Потребителска обратна връзка",
'feedbackInfo': 'Предоставете обратна връзка или предложения',
@ -812,6 +1462,14 @@ const Map<String, String> bgBG = {
"connectionFailed": "Неуспешна връзка",
"retryConnection": "Опитай връзката отново",
"ota_updateNow": "Актуализирай сега",
"otaVersionInfoFailed":
"Неуспешно получаване на информация за версията. Моля опитайте отново по-късно.",
"otaDeviceInfoUnavailable":
"Не може да се получи информация за устройството. Моля проверете връзката и опитайте отново.",
"otaProductInfoUnavailable":
"Не може да се идентифицира устройството. Моля свържете се отново и опитайте отново.",
"otaFirmwareVersionInvalid":
"Версията на фърмуера е необичайна. Моля свържете се отново и опитайте отново.",
"keepConnectedDontClose":
"Моля поддържайте устройството свързано, не затваряйте приложението",
"doNotDisconnect": "Моля не прекъсвайте връзката",
@ -867,4 +1525,23 @@ const Map<String, String> bgBG = {
"乌尔都语": "Урду",
"波斯语": "Персийски",
"斯瓦希里语": "Суахили",
// 时间相关
"justNow": "Току-що",
"minutesAgo": "преди @minutes минути",
"yesterday": "Вчера",
// 时间扩展(图片翻译模块使用)
"daysAgo": "преди @days дни",
"hoursAgo": "преди @hours часа",
//补充
"insufficientIntegral": "Недостатъчно точки",
//余额不足弹窗
"insufficientBalanceDesc":
'Недостатъчен баланс, моля отидете на съответната страница за презареждане.',
"recharge": 'Отиди към презареждане',
// 会员到期提示
"aiMemberExpiredDesc":
'AI членството изтече, моля отидете на страницата за презареждане на членство за подновяване.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> csCZ = {
"spanish": "Španělština",
"portuguese": "Portugalština",
"traditionalChinese": "Tradiční čínština",
"traditionalChineseHK": "Tradiční čínština (Hongkong)",
"japanese": "Japonština",
"korean": "Korejština",
"french": "Francouzština",
@ -103,8 +104,8 @@ const Map<String, String> csCZ = {
"loginDeclaration": "Prohlášení Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Vítejte v Voitrans, přečtěte si prosím pozorně", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "Zásady ochrany osobních údajů", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "Uživatelská smlouva", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". Kliknutím na 'Souhlasím a vstoupit' označujete, že jste si výše uvedené smlouvy plně přečetli a souhlasíte s nimi. Kliknutím na 'Nesouhlasím' aplikaci ukončíte.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Nesouhlasím", // 不同意
@ -185,6 +186,208 @@ const Map<String, String> csCZ = {
"usageStats": "Statistika použití",
"usageStatsInfo": "Zobrazit statistiku použití aplikace",
"scene": "Scénáře",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Statistiky překladů",
"meetingStats": "Statistiky schůzek",
"today": "Dnes",
"thisWeek": "Tento týden",
"thisMonth": "Tento měsíc",
"history": "Historie",
"currentSessionStats": "Statistiky aktuální relace",
"translationCount": "Počet překladů",
"sessionDuration": "Trvání relace",
"characters": "Znaky",
"recordingDuration": "Délka nahrávání",
"totalApiCalls": "Celkový počet volání API",
"sessionCount": "Počet relací",
"totalCharacters": "Celkový počet znaků",
"apiCallStats": "Statistiky volání API",
"translationApi": "Překladové API",
"asr": "Rozpoznávání řeči",
"tts": "Syntéza řeči",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Statistiky objemu dat",
"sourceTextCharacters": "Znaky zdrojového textu",
"ttsTextCharacters": "Znaky textu TTS",
"effectiveAudioDuration": "Efektivní délka zvuku",
"totalSessionDuration": "Celková délka relace",
"costStats": "Statistiky nákladů",
"estimatedCost": "Odhadované náklady",
"dailyCostThreshold": "Denní limit nákladů",
"monthlyCostThreshold": "Měsíční limit nákladů",
"usageBehaviorStats": "Statistiky chování při používání",
"mostUsedLanguagePair": "Nejpoužívanější jazykový pár",
"mostUsedMode": "Nejpoužívanější režim",
"asrApiCalls": "Volání ASR",
"totalAudioDuration": "Celková délka zvuku",
"audioFileSize": "Velikost zvukového souboru",
"transcriptBytes": "Bajty přepisu",
// 通知文案
"loadFailed": "Načtení selhalo",
"statsLoadFailedTryLater":
"Statistiky se nepodařilo načíst. Zkuste to prosím později.",
"cleanupComplete": "Čištění dokončeno",
"cleanedOldData": "Vyčištěna data starší než 90 dní",
"exportFeature": "Funkce exportu",
"exportInDevelopment": "Export dat je ve vývoji",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Dostupné balíčky',
'remainingQuota': 'Zbývající kvóta',
'totalQuota': 'Celková kvóta',
'remaining': 'Zbývá',
'featureDescription': 'Popis funkce',
// AI 功能卡片
'musicAndRecommendation': 'Hudba a doporučení',
'navigationAndRoutes': 'Navigace a trasy',
'nearbySearch': 'Hledání v okolí',
'newsInformation': 'Zprávy',
'communicationAssistant': 'Komunikační asistent',
// 翻译功能卡片
'realtimeTranscription': 'Přepis v reálném čase',
// 'textTranslation' 已存在
'sceneLexicon': 'Slovníček scénářů',
'subtitleDisplay': 'Titulky',
// 会议功能卡片
'meetingRecording': 'Nahrávání schůzky',
'transcriptionAndSummary': 'Přepis a shrnutí',
'keywordSearch': 'Hledání klíčových slov',
'collaborationSharing': 'Spolupráce a sdílení',
// 商品名称(按ID)
'ai_001_name': 'AI Základ 100',
'ai_002_name': 'AI Základ 500',
'ai_003_name': 'AI Základ 1000',
'meet_001_name': 'Schůzky Základ 100',
'meet_002_name': 'Schůzky Základ 500',
'meet_003_name': 'Schůzky Základ 1000',
'trans_001_name': 'Překlad Základ 100',
'trans_002_name': 'Překlad Základ 500',
'trans_003_name': 'Překlad Základ 1000',
// 商品描述(按ID)
'ai_001_desc': 'Zahrnuje 100 použití. Přístup k základním AI funkcím.',
'ai_002_desc': 'Zahrnuje 500 použití. Přístup k základním AI funkcím.',
'ai_003_desc': 'Zahrnuje 1000 použití. Přístup k základním AI funkcím.',
'meet_001_desc': 'Zahrnuje 100 nahrávek/přepisů schůzek.',
'meet_002_desc': 'Zahrnuje 500 nahrávek/přepisů schůzek.',
'meet_003_desc': 'Zahrnuje 1000 nahrávek/přepisů schůzek.',
'trans_001_desc': 'Zahrnuje 100 překladů (hlas/text).',
'trans_002_desc': 'Zahrnuje 500 překladů (hlas/text).',
'trans_003_desc': 'Zahrnuje 1000 překladů (hlas/text).',
// 商品页通用页脚
'appNameProvider': 'Aplikace: VoiTrans · Poskytovatel: VoiTrans',
'iapCustomerServiceQQLabel': 'Zákaznický servis IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Nahrávání zvuku, přepis, hledání klíčových slov a automatické shrnutí pro zvýšení efektivity schůzek.',
'meetingHeaderDesc2':
'Vhodné pro obchodní schůzky, poznámky z hodin a zápisy z pohovorů.',
'meetingAutoRecording': 'Automatické nahrávání a segmentace',
'meetingSpeakerTagging': 'Označování mluvčích',
'meetingLongAudioTranscription': 'Přepis dlouhého zvuku',
'meetingKeyPointSummary': 'Extrakce klíčových bodů',
'meetingTopicNameSearch': 'Hledání podle tématu/jména',
'meetingTimelineJump': 'Skok na časové ose',
'meetingExportSummary': 'Export zápisů',
'meetingMultiPlatformShare': 'Sdílení napříč platformami',
'meetingDisclaimer':
'Používejte v tichém prostředí; výkon závisí na mikrofonu a síti.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Simultánní tlumočení v reálném čase a překlad textu s nízkou latencí hlasu.',
'transHeaderDesc2': 'Vhodné pro cestování, podnikání, projevy a výuku.',
'translateZhEn': 'Čínsko-anglický překlad',
'lowLatencyVoiceBroadcast': 'Hlasové vysílání s nízkou latencí',
'multiLangTextTranslation': 'Vícejazyčný textový překlad',
'termOptimizationContextPreserve':
'Optimalizace terminologie a zachování kontextu',
'lexiconTourBusinessLife': 'Slovníky pro cestování/podnikání/život',
'personalVocabularyMemory': 'Paměť osobní slovní zásoby',
'conversationSubtitleLargeText': 'Titulky konverzace / Režim velkého textu',
'colorHighContrast': 'Vysoký barevný kontrast',
'transDisclaimer':
'Výkon překladu závisí na mikrofonu, latenci sítě a okolním hluku.',
// AI 商品页描述
'aiHeaderDesc1':
'Delší kvóta konverzace, více volání nástrojů, rozšířená délka kontextu.',
'aiHeaderDesc2': 'Vhodné pro Q&A agenta, shrnutí, analýzu a provádění úkolů.',
'musicSearchPlaybackControl':
'Hledání v hudební knihovně a ovládání přehrávání',
'smartPlaylistAndSimilarRecommendations':
'Chytrý playlist a doporučení podobných skladeb',
'routePlanningAndCongestionAvoidance': 'Plánování trasy a vyhýbání se zácpám',
'voiceBroadcastAndWaypoints': 'Hlasové vysílání a nastavení průjezdních bodů',
'realTimeWeatherForecast': 'Počasí v reálném čase a předpověď',
'clothingAdviceAndTravelReminders':
'Rady ohledně oblečení a cestovní připomínky',
'poiSearchFoodGasParking': 'Hledání POI: stravování / benzín / parkování',
'ratingsHoursAndDirectRoutes': 'Hodnocení, otevírací doba a přímé trasy',
'hotNewsAndTopicOverview': 'Žhavé novinky a přehled témat',
'longArticleSummariesAndKeyPoints': 'Shrnutí dlouhých článků a klíčové body',
'helpCallAndSMS': 'Pomoc s hovory a SMS',
'templatedMessagesAndScheduleReminders': 'Šablony zpráv a připomínky plánu',
'aiDisclaimer':
'Funkce závisí na oprávněních zařízení, dostupnosti služby a síťových podmínkách.',
// 会员商品页
'benefitsOverview': 'Přehled výhod',
'higherQuota': 'Vyšší kvóta využití',
'lowerUnitPrice': 'Nižší jednotková cena',
'priorityService': 'Prioritní služba',
'exclusiveSupportChannel': 'Vyhrazený kanál podpory',
'fastResponse': 'Rychlá odpověď na problémy',
'eventsAndDiscounts': 'Události a slevy',
'memberExclusiveEvents': 'Exkluzivní události pro členy',
'longTermDiscountPlan': 'Dlouhodobý slevový plán',
'generalPrivileges': 'Obecná privilegia',
'earlyAccessNewFeatures': 'Přednostní přístup k novým funkcím',
'crossDeviceSync': 'Synchronizace napříč zařízeními',
'vipDisclaimer':
'Skutečné výhody závisí na podrobnostech balíčku a mohou se měnit s verzemi.',
// 新手引导 / Onboarding
'skip': "Přeskočit",
'next': 'Další',
'sayLilyHint': 'Řekněte "Lily Lily" do mikrofonu',
'imHere': 'Jsem tady~',
'guideWelcomeWakeAI': 'Vítejte ve Voitrans! Nejprve probuďte svou AI "Lily".',
'aiReplyCompleted': 'Lily dokončila odpověď!',
'aiThinking': 'Lily přemýšlí...',
'guideAwakenSuccess': 'Skvělé! Lily je vzhůru – požádejte ji o pomoc.',
'confirmInput': 'Potvrdit vstup',
'guideClickSendPrefix': 'Klepněte na odeslat, ',
// AI 引导步骤
'guideWeatherStart': 'Řekněte Lily: „Jaké je dnes počasí?“',
'guideWeatherInput': 'Jaké je dnes počasí?',
'guideWeatherSend': 'Lily nahlásí počasí v reálném čase',
'guideWeatherEnd': 'Lily může hlásit počasí živě – zkuste jiné příkazy',
'guideMusicStart': 'Řekněte Lily: „Zahraj nějaký rock“',
'guideMusicInput': 'Zahraj nějaký rock',
'guideMusicSend': 'Lily pro vás najde hudbu',
'guideMusicEnd': 'Lily našla hudbu – zkuste jiné příkazy',
'guideNavStart': 'Řekněte Lily: „Naviguj na letiště Šen-čen“',
'guideNavInput': 'Naviguj na letiště Šen-čen',
'guideNavSend': 'Lily naplánuje trasu',
'guideNavEnd': 'Navigace nastavena – zkuste jiné příkazy',
'guideMeetingStart':
'Řekněte Lily: „Vytvoř připomínku schůzky na zítra ve 3 odpoledne“',
'guideMeetingInput': 'Vytvoř připomínku schůzky na zítra ve 3 odpoledne',
'guideMeetingSend': 'Lily vytvoří připomínku schůzky',
'guideMeetingEnd': 'Připomínka vytvořena – zkuste jiné příkazy',
'guidePhoneStart': 'Řekněte Lily: „Zavolej mámě“',
'guidePhoneInput': 'Zavolej mámě',
'guidePhoneSend': 'Lily uskuteční hovor',
'guidePhoneEnd': 'Hovor zahájen – zkuste jiné příkazy',
'guideSmsStart': 'Řekněte Lily: „Pošli tátovi SMS: Přijdu na večeři domů“',
'guideSmsInput': 'SMS tátovi: Přijdu na večeři domů',
'guideSmsSend': 'Lily odešle zprávu',
'guideSmsEnd': 'Zpráva odeslána – hlasové ovládání je pohodlné',
// 商务会议助手页
"startMeeting": "Začít schůzku",
@ -199,13 +402,247 @@ const Map<String, String> csCZ = {
'aiSummary': 'AI shrnutí',
'meetingTranscript': 'Přepis schůzky',
// Meeting模块 - 导航和基础功能
'files': 'Soubory',
'mine': 'Moje',
'connect': 'Připojit',
'allFiles': 'Všechny soubory',
'searchInAllFiles': 'Hledat ve všech souborech',
'from': 'Od',
'sortBy': 'Seřadit podle',
'creationTime': 'Čas vytvoření',
'bluetoothConnection': 'Bluetooth připojení',
'meetingReconnect': 'Znovu připojit',
'searching': 'Hledání...',
'searchFailed':
'Hledání selhalo, zkontrolujte prosím, zda je Bluetooth zapnuto',
'aiPenNotFound': 'Zařízení AI PEN nenalezeno',
'connectedToAiPen': 'Připojeno k zařízení AI PEN',
'checkingNewFiles': 'Kontrola nových souborů k importu',
'startingWifi': 'Spouštění Wi-Fi...',
'newFilesDetected': 'Detekovány nové soubory, příprava k importu',
'noNewFiles': 'Žádné nové soubory k importu',
'connectingWifi': 'Připojování k Wi-Fi...',
'wifiConnected': 'Wi-Fi úspěšně připojeno',
'downloadingFiles': 'Stahování souborů...',
'downloadingFileProgress':
'Celkem {total} souborů, stahování souboru {current}',
'downloadComplete': 'Stahování dokončeno',
'downloadCompleteInfo':
'Stahování dokončeno, celkem {count} souborů, automatický návrat za 2 sekundy',
// Meeting模块 - 录音功能
'startRecording': 'Začít nahrávání',
'liveRecording': 'Živé nahrávání',
'audioVideoRecording': 'Audio/Video nahrávání',
'callRecording': 'Nahrávání hovoru',
'importAudio': 'Importovat audio',
'transcribing': 'Přepisování...',
'summarizing': 'Shrnování...',
'analyzing': 'Analyzování...',
'summaryComplete': 'Shrnutí dokončeno',
//'generating': '正在生成...',
'generate': 'Generovat',
'overview': 'Přehled',
'transcription': 'Přepis',
'summary': 'Shrnutí',
'mindMap': 'Myšlenková mapa',
'editSpeaker': 'Upravit',
'nameSpeaker': 'Pojmenovat mluvčího',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Záznamy přepisů',
'templateCommunity': 'Komunita šablon',
'comingSoon': 'Brzy k dispozici',
'integration': 'Integrace',
'voitransPrivateCloud': 'VOITRANS PRIVÁTNÍ CLOUD',
'enabled': 'Povoleno',
'disabled': 'Zakázáno',
'myVoitransDevice': 'Moje zařízení VOITRANS',
'helpAndFeedback': 'Nápověda a zpětná vazba',
'aboutVoitrans': 'O VOITRANS',
'meetingDays': 'Dny',
'meetingHours': 'Hodiny',
'voitransAiMember': 'Členství Voitrans AI',
'unlockStarterMember': 'Odemknout Startovací členství',
'bindDeviceToActivate':
'Propojte zařízení Voitrans pro aktivaci Startovacího členství',
'unlockNow': 'Odemknout nyní',
// Meeting模块 - 会员功能
'comparison': 'Porovnání',
'detailedInfo': 'Podrobné informace',
'monthlyTranscriptionTime': 'Měsíční čas přepisu',
'unlimited': 'Neomezeno',
'professionalTemplates': 'Profesionální šablony',
'limited': 'Omezeno',
'fullTemplates': 'Plné šablony',
'professionalTerms': 'Profesionální termíny',
'customTemplates': 'Vlastní šablony',
'visualMindMap': 'Vizuální myšlenková mapa',
'speakerIdentification': 'Identifikace mluvčího',
'aiVoiceEnhancement': 'Vylepšení hlasu AI',
'audioImport': 'Import audia',
'multipleExportFormats': 'Více formátů exportu',
'professionalSummaryTemplates': 'Profesionální šablony shrnutí',
'professionalTemplateDesc':
'Profesionální design šablon pro zlepšení efektivity vaší práce. Přizpůsobeno podle potřeb odvětví.',
'customTemplateDesc':
'Můžete si přizpůsobit výzvy pro shrnutí podle svých potřeb a použít je k vygenerování požadovaných shrnutí.',
'askAiDesc':
'Inteligentně extrahujte hlubší informace z nahrávek, generujte datové tabulky, klíčové závěry diskusí, seznamy úkolů, e-maily se zprávami a další formátovaný obsah jedním kliknutím.',
'visualMindMapDesc':
'Nad rámec shrnutí – organizujte a vizualizujte klíčové body pomocí myšlenkových map pro efektivnější pochopení celého textu.',
'templateCommunityDesc':
'Objevujte, sdílejte a získejte inspiraci z knihovny šablon vytvořených uživateli.',
'speakerIdentificationDesc':
'Přepis audia bude podporovat identifikaci mluvčího, intuitivněji obnoví obsah schůzky nebo telefonního hovoru. Zároveň bude shrnutí přesnější.',
'privateCloudSyncDesc':
'Vaše nahrávky a přepisy budou bezpečně uloženy na vyhrazených cloudových serverech s plným šifrováním během nahrávání a stahování pro zajištění soukromí a bezpečnosti.',
'aiVoiceEnhancementDesc':
'Vylepšení hlasu AI podporuje více nastavení redukce šumu, inteligentně eliminuje hluk na pozadí, zvyšuje čistotu hlasu a zlepšuje kvalitu přehrávání zvuku.',
'audioImportDesc':
'Snadno importujte zvukové soubory z místních nebo aplikací třetích stran, jako jsou hlasové poznámky, Google Drive atd.',
'multipleExportFormatsDesc':
'Exportujte své zvukové nahrávky, text přepisu a shrnutí v různých formátech (TXT, PDF, JPEG), aby vyhovovaly vašim potřebám.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Systémová nastavení", //系统设置
"vipRecharge": "Přepayka VIP členství", //会员充值
"aiRecharge": "Prémiový člen", //AI充值
"translationRecharge": "Přepayka překladu", //翻译充值
"meetingAssistantRecharge": "Přepayka asistenta schůzky", //会议助手充值
"cloudSync": "Přepayka synchronizace v cloudu", //云端同步
"systemSettings": "Systémová nastavení",
"vipRecharge": "Přepayka VIP členství",
"aiRecharge": "Prémiový člen",
"translationRecharge": "Přepayka překladu",
"meetingAssistantRecharge": "Přepayka asistenta schůzky",
"cloudSync": "Přepayka synchronizace v cloudu",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Připojené zařízení:",
"accountId": "ID účtu:",
"systemSetting": "Systémová nastavení",
@ -241,12 +678,10 @@ const Map<String, String> csCZ = {
'selecttimbre': 'Vybrat barvu hlasu',
'pleaseRead': 'Přečtěte prosím',
'completeRecording': 'Dokončit nahrávání',
"firmwareUpgrade": "Aktualizace firmwaru", // 固件升级
"bleHeadsetFirmwareUpgrade":
"Aktualizace firmwaru BLE sluchátek", // BLE耳机固件版本升级
"deviceManagement": "Správa zařízení", // 设备管理
"manageConnectedDevices":
"Správa připojených Bluetooth zařízení", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "Aktualizace firmwaru",
"bleHeadsetFirmwareUpgrade": "Aktualizace firmwaru BLE sluchátek",
"deviceManagement": "Správa zařízení",
"manageConnectedDevices": "Správa připojených Bluetooth zařízení",
//设置setting_controller
// 版本更新相关
@ -255,11 +690,10 @@ const Map<String, String> csCZ = {
'networkErrorRetry': 'Chyba sítě, zkuste to prosím později',
// 设备管理相关
'clearPairedDevices': 'Vymazat spárovaná zařízení',
'clearPairedDevicesConfirm':
'Opravdu chcete vymazat všechna spárovaná zařízení?',
'clearPairedDevicesSuccess': 'Úspěšné vymazání spárovaných zařízení',
'clearPairedDevicesFailed': 'Vymazání spárovaných zařízení selhalo',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Hlasový chat v reálném čase",
@ -268,11 +702,19 @@ const Map<String, String> csCZ = {
"loading": "Načítání...",
//设备管理页面
"earphone": "Sluchátka",
"voicerecorder": "Diktafon",
"notBound": "Nepřipojeno",
"deviceNotBoundYet": "Zatím není připojeno žádné zařízení",
"deviceTypeUnknown": "Neznámé zařízení",
"deviceTypeClassicBluetoothHeadset": "Klasická Bluetooth sluchátka",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth sluchátka",
"deviceTypeSmartVoiceRecorder": "Chytrý hlasový záznamník",
"deviceTypeSmartEye": "Chytré brýle",
"unbind": "Odpojit",
"noDevicesBound": "Zatím žádná spárovaná zařízení",
"pleaseBindDeviceFirst": "Nejprve spárujte zařízení pro správu",
"noMacAddress": "Žádná MAC adresa",
"licenseCode": "Licenční kód",
"confirmUnbind": "Potvrdit odpojení",
"confirmUnbindMessage": "Opravdu chcete odpojit zařízení „{deviceName}“?",
"confirmUnbindAction": "Potvrdit odpojení",
//Agent 模块
// agent View
@ -301,6 +743,20 @@ const Map<String, String> csCZ = {
"loadMoreMessages": "Načíst více zpráv...",
"loadFailedClickRetry": "Načítání selhalo, klikněte pro opakování",
"swipeUpForMore": "Potáhněte nahoru pro více",
"callingTool": "Pomáhám vám, prosím čekejte!", // 正在帮您,请稍等!
"voice_interrupt": "Přerušit", // 语音打断
// 预设提示词
"presetMusic": "Zahraj nějakou hudbu", // 来点音乐
"presetNavigation": "Navigace do", // 导航
"presetWeather": "Dnešní počasí", // 今日天气
"presetNews": "Dnešní zprávy", // 今日新闻
"presetFood": "Jídlo v okolí", // 美食
"playSomeMusic": "Zahraj nějakou populární hudbu", // 播放一些流行音乐
"navigationTo": "Prosím pomozte mi navigovat do", // 导航到
"todayWeather": "Jaké je dnes počasí?", // 今日天气
"todayNews": "Jaké jsou dnešní zprávy?", // 今日新闻
"nearbyFood": "Jaké dobré jídlo je v okolí?", // 美食
// Agent controller
'welcomeMessage': 'Ahoj! Jsem **Lily**, mohu vám pomoci s:\n\n'
@ -333,7 +789,7 @@ const Map<String, String> csCZ = {
'submitSuccess': 'Úspěšně odesláno',
'submitFailed': 'Odeslání selhalo',
'reportSubmitted': 'Hlášení bylo odesláno, zpracujeme ho co nejdříve',
//'networkError': 'Chyba sítě, zkuste to prosím později',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Škodlivé/nebezpečné',
'pornographicVulgar': 'Pornografické/vulgární',
'misleadingAttack': 'Zavádějící útok',
@ -343,7 +799,7 @@ const Map<String, String> csCZ = {
'other': 'Jiné',
'reportDescriptionHint':
'Chceme znát důvod vašeho hlášení, můžete popsat problém, se kterým jste se setkali.',
//'submit': 'Odeslat',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Generováno AI',
@ -398,6 +854,17 @@ const Map<String, String> csCZ = {
"friday": "Pátek",
"saturday": "Sobota",
"sunday": "Neděle",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Uvítací odměna",
"firstBindRewardDesc": "Získali jste odměny za propojení.",
"vipLevelLabel": "Úroveň VIP:",
"expiryLabel": "Platnost:",
"notActivated": "Neaktivováno",
"aiChatCreditsLabel": "Kredity AI chatu:",
"translationCreditsLabel": "Kredity překladu:",
"meetingCreditsLabel": "Kredity schůzky:",
"ok": "OK",
// 天气描述
"sunny": "Slunečno",
"partlyCloudy": "Polojasno",
@ -433,6 +900,8 @@ const Map<String, String> csCZ = {
'deleteAccount': 'Smazat účet',
'deleteAccountTips':
'Opravdu chcete trvale smazat svůj účet? Tuto operaci nelze vrátit zpět',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -453,8 +922,8 @@ const Map<String, String> csCZ = {
'Vnitřní chyba serveru, zkuste to prosím později',
// Profile 用户交互
//'error': 'Chyba',
//'success': 'Úspěch',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Komprese obrázku selhala',
'avatarUpdateFailed': 'Aktualizace avataru selhala',
'usernameCannotBeEmpty': 'Uživatelské jméno nemůže být prázdné',
@ -482,15 +951,26 @@ const Map<String, String> csCZ = {
// 权限管理页面
'getPermissionStatusFailed': 'Získání stavu oprávnění selhalo',
'communicationPermissions': 'Komunikační oprávnění',
'bluetoothPermissions': 'Oprávnění Bluetooth',
'notificationPermissions': 'Oprávnění oznámení',
'storagePermissions': 'Oprávnění úložiště',
'microphonePermissions': 'Oprávnění mikrofonu',
'alarmPermissions': 'Oprávnění budíku',
'calendarPermissions': 'Oprávnění kalendáře',
'locationPermissions': 'Oprávnění polohy',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Kontakty',
//'bluetooth': '蓝牙',
'notification': 'Oznámení',
'alarm': 'Budík',
'calendarWrite': 'Zápis do kalendáře',
'calendarFullAccess': 'Úplný přístup ke kalendáři',
'locationInfo': 'Informace o poloze',
'phonePermissionDesc': 'Používá se pro funkci telefonních hovorů',
'smsPermissionDesc': 'Používá se pro funkci odesílání SMS',
'alarmPermissionDesc':
'Používá se k nastavení přesných budíků pro zajištění včasného spuštění připomínek',
'calendarWritePermissionDesc':
'Používá se pro vytváření událostí a připomínek v kalendáři',
'calendarFullAccessPermissionDesc':
@ -508,18 +988,82 @@ const Map<String, String> csCZ = {
'phonePermissionDetailDesc':
'Funkce telefonních hovorů potřebuje oprávnění k telefonu',
'smsPermissionDetailDesc': 'Funkce odesílání SMS potřebuje SMS oprávnění',
'alarmPermissionDetailDesc':
'Toto oprávnění je vyžadováno pro nastavení přesných budíků a zajištění včasného spuštění připomínek',
'calendarWritePermissionDetailDesc':
'Vytváření událostí v kalendáři potřebuje oprávnění k zápisu do kalendáře',
'calendarFullAccessPermissionDetailDesc':
'Správa událostí v kalendáři potřebuje úplné oprávnění ke kalendáři',
'locationPermissionDetailDesc':
'Získání informací o poloze potřebuje oprávnění k poloze',
'contactsPermissionDesc': 'Používá se pro přístup k informacím o kontaktech',
'contactsPermissionDetailDesc':
'Funkce telefonních hovorů a SMS vyžaduje oprávnění ke kontaktům pro výběr kontaktů',
'bluetoothPermissionDesc':
'Používá se pro připojení a správu Bluetooth zařízení',
'bluetoothPermissionDetailDesc':
'Připojení k Bluetooth sluchátkům a dalším zařízením vyžaduje oprávnění Bluetooth',
'bluetoothScanPermissionDesc':
'Používá se pro skenování okolních Bluetooth zařízení',
'bluetoothScanPermissionDetailDesc':
'Skenování okolních Bluetooth zařízení vyžaduje oprávnění ke skenování Bluetooth',
'bluetoothConnectPermissionDesc':
'Používá se pro připojení k Bluetooth zařízením',
'bluetoothConnectPermissionDetailDesc':
'Připojení k Bluetooth zařízením vyžaduje oprávnění k připojení Bluetooth',
'notificationPermissionDesc': 'Používá se pro odesílání oznámení',
'notificationPermissionDetailDesc':
'Aplikace potřebuje oprávnění k oznámení, aby vám mohla posílat důležitá upozornění a zprávy',
'appNeedsPermissionForFullFunction':
'Aplikace potřebuje toto oprávnění pro poskytnutí plné funkčnosti',
'permanentDenialText':
'Trvale jste odmítli oprávnění {permission}, přejděte prosím do nastavení aplikace a povolte ho',
'goToSettings': 'Přejít do nastavení',
// 权限申请
'bluetoothScan': 'Skenování Bluetooth',
'bluetoothConnect': 'Připojení Bluetooth',
'bluetoothScanExplanation':
'Aplikace potřebuje oprávnění ke skenování Bluetooth pro vyhledávání okolních zařízení Bluetooth.',
'bluetoothConnectExplanation':
'Aplikace potřebuje oprávnění k připojení Bluetooth pro připojení k zařízením Bluetooth.',
'locationForBluetoothExplanation':
'Aplikace potřebuje oprávnění k poloze pro skenování zařízení Bluetooth.',
'bluetoothScanPermanentDenial':
'Oprávnění ke skenování Bluetooth bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.',
'bluetoothConnectPermanentDenial':
'Oprávnění k připojení Bluetooth bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.',
'locationPermanentDenial':
'Oprávnění k poloze bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.',
'notificationPermission': 'Oznámení',
'locationPermission': 'Poloha',
'notificationPermissionExplanation':
'Oprávnění k oznámení je vyžadováno pro zobrazení stavu přehrávání hudby.',
'locationPermissionExplanation':
'Oprávnění k poloze je vyžadováno pro získání aktuální polohy.',
'notificationPermissionPermanentDenial':
'Trvale jste odmítli oprávnění k oznámení, přejděte prosím do nastavení a povolte jej.',
'locationPermissionPermanentDenial':
'Trvale jste odmítli oprávnění k poloze, přejděte prosím do nastavení a povolte jej.',
//'microphonePermission': '录音',
'storagePermission': 'Úložiště',
'microphonePermissionExplanation':
'Potřebujeme oprávnění k mikrofonu pro nahrávání zvukového obsahu.',
'storagePermissionExplanation':
'Potřebujeme oprávnění k úložišti, abyste mohli vybírat a nahrávat audio soubory.',
'microphonePermissionPermanentDenial':
'Oprávnění k mikrofonu bylo trvale odmítnuto. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k mikrofonu.',
'storagePermissionPermanentDenial':
'Oprávnění k úložišti bylo trvale odmítnuto. 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.',
//permission_util.dart
'permissionUtilNeed': 'Je třeba ',
'permissionUtilPermission': ' oprávnění',
'permissionUtilRestricted': ' Oprávnění omezeno',
'permissionUtilRestrictedMessage':
'Tato funkce není k dispozici nebo je na aktuálním zařízení omezena, zkontrolujte prosím nastavení zařízení nebo systémová omezení',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Nalezena nová verze', // 版本更新对话框标题
'remindLater': 'Připomenout později', // 稍后提醒按钮
@ -638,8 +1182,23 @@ const Map<String, String> csCZ = {
"东帝汶": "Východní Timor",
"斐济": "Fidži",
"所罗门群岛": "Šalamounovy ostrovy",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Překlad obrázků",
"textTranslation": "Překlad textu",
// 翻译主页 (translation_view.dart)
"translationHistory": "Historie překladů",
"enableRecording": "Povolit nahrávání",
@ -648,9 +1207,24 @@ const Map<String, String> csCZ = {
"phoneUser": "Uživatel telefonu",
"selectSourceLanguage": "Vyberte zdrojový jazyk",
"selectTargetLanguage": "Vyberte cílový jazyk",
"me": "Já",
"counterPart": "Protějšek",
"bluetoothCallStateError":
"Ujistěte se prosím, že jsou Bluetooth sluchátka připojena k telefonu a probíhá hovor",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Automatická detekce", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Detekce jazyka selhala",
"translationFailed": "Překlad selhal",
"pleaseInputText": "Zadejte prosím text",
"textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Žádná historie překladů",
"historyRecords": "Záznamy historie",
"clearResults": "Vymazat výsledky",
"clearHistory": "Vymazat historii",
"clearHistoryConfirm":
"Opravdu chcete vymazat celou historii překladů? Tuto operaci nelze vrátit zpět.",
@ -659,7 +1233,59 @@ const Map<String, String> csCZ = {
"deleteSessionConfirm":
"Opravdu chcete smazat všechny záznamy překladů pro tuto relaci? Tuto operaci nelze vrátit zpět.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Vybrat zdroj obrázku",
"imagePreview": "Náhled obrázku",
"translationResult": "Výsledek překladu",
"recognitionResult": "Výsledek rozpoznání",
"translatedImagePreview": "Náhled přeloženého obrázku",
"translatedImageLoadFailed": "Načtení přeloženého obrázku selhalo",
"pleaseSelectImage": "Vyberte prosím obrázek",
"imageLoadFailed": "Načtení obrázku selhalo",
"imageQuality": "Kvalita obrázku",
"maxSize": "Max. velikost",
"close": "Zavřít",
"setImageQuality": "Nastavit kvalitu obrázku",
"currentQuality": "Aktuální kvalita: @value%",
"setMaxSize": "Nastavit max. velikost",
"currentMaxSize": "Aktuální: @pxpx",
"waitingForAction": "Čekání na akci",
"pleaseSelectImageToStart": "Vyberte prosím obrázek pro zahájení",
"chooseImage": "Vybrat obrázek",
"openingCamera": "Otevírání fotoaparátu...",
"openingPhotoAlbum": "Otevírání galerie...",
"cancelled": "Zrušeno",
"userCancelledSelection": "Uživatel zrušil výběr",
"translatingImage": "Překládání obrázku",
"callingImageTranslateService": "Volání služby překladu obrázků...",
"savingRecord": "Ukládání záznamu",
"savingTranslationResult": "Ukládání výsledku překladu...",
"translationCompleted": "Překlad dokončen",
"allStepsCompleted": "Všechny kroky dokončeny",
"processingFailed": "Zpracování selhalo",
"imageProcessingOrTranslationFailed":
"Zpracování nebo překlad obrázku selhalo. Zkuste to prosím znovu.\nChyba: {error}",
"imageTooLarge": "Velikost obrázku přesahuje limit 4 MB",
"imageTooLargeHint":
"Velikost obrázku přesahuje 4 MB. Snižte kvalitu nebo rozměry a zkuste to znovu",
"emptyTranslationResult": "API překladu obrázků vrátilo prázdný výsledek",
"imageTranslationFailedTryLater":
"Překlad obrázku selhal. Problém se sítí nebo limit rychlosti. Zkuste to prosím později",
"imageTranslationApiException":
"Výjimka API překladu obrázků. Zkontrolujte síť a zkuste to znovu",
"permissionRequired": "Vyžadováno oprávnění",
"cameraPermissionRequired":
"K fotografování je vyžadováno oprávnění k fotoaparátu",
"photoAlbumPermissionRequired":
"K výběru obrázků je vyžadováno oprávnění ke galerii",
"translationDetails": "Podrobnosti překladu",
"originalImage": "Původní obrázek",
"sourceLanguage": "Zdrojový jazyk",
"targetLanguage": "Cílový jazyk",
"translationTime": "Čas překladu",
"shareInDevelopment": "Funkce sdílení je ve vývoji",
// 翻译录音文件列表页
"translateAudioFiles": "Přeložit audio soubory",
"noAudioFiles": "Žádné audio soubory",
"calculating": "Výpočet...",
@ -705,7 +1331,7 @@ const Map<String, String> csCZ = {
"autoInputCode": "Automatické zadání kódu",
"skipBinding": "Přeskočit svázání",
"rescan": "Znovu skenovat",
"skip": "Přeskočit",
"verifyingDevice": "Ověřování zařízení...",
"confirmBinding": "Potvrdit svázání",
"associatingDevice": "Přidružování zařízení...",
@ -738,17 +1364,17 @@ const Map<String, String> csCZ = {
"pairingFailedRetry": "Párování selhalo, zkuste to prosím znovu",
// 配对控制器相关
//'connectDevice': 'Připojit zařízení',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Zapněte prosím Bluetooth',
'deviceDisconnected': 'Zařízení bylo odpojeno',
'readyToStartPairing': 'Připraveno k zahájení párování',
'checkingEnvironment': 'Kontrola prostředí...',
'ensureHeadsetOnAndPairingMode':
'Ujistěte se prosím, že jsou sluchátka zapnutá a v režimu párování',
//'goToBluetoothSettings': 'Přejít do nastavení Bluetooth',
//'verifyingDevice': 'Ověřování zařízení...',
//'confirmBinding': 'Potvrdit svázání',
//'associatingDevice': 'Přidružování zařízení...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Navazování bezpečného spojení...',
'needManualBindingAuthCode':
'Potřeba ručního autorizačního kódu pro svázání...',
@ -772,6 +1398,19 @@ const Map<String, String> csCZ = {
'deviceAuthorizationFailedCheckCode':
'Autorizace zařízení selhala, zkontrolujte prosím autorizační kód',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Vyžadována ruční aktivace Bluetooth', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Postupujte prosím podle těchto kroků:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Zapnout Bluetooth: Nastavení → Bluetooth → Zapnout', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Připojit zařízení: Najděte své zařízení v "Moje zařízení" a klepněte pro připojení', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Vraťte se do aplikace pro pokračování procesu párování', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: Můžete také dlouze stisknout ikonu Bluetooth v Ovládacím centru pro rychlý přístup k nastavení Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'Rozumím', // 我知道了
//用户反馈页
"feedback": "Zpětná vazba uživatele",
'feedbackInfo': 'Poskytněte zpětnou vazbu nebo návrhy',
@ -799,6 +1438,14 @@ const Map<String, String> csCZ = {
"connectionFailed": "Připojení selhalo",
"retryConnection": "Zkusit připojení znovu",
"ota_updateNow": "Aktualizovat nyní",
"otaVersionInfoFailed":
"Získání informací o verzi selhalo. Zkuste to prosím později.",
"otaDeviceInfoUnavailable":
"Nelze získat informace o zařízení. Zkontrolujte prosím připojení a zkuste to znovu.",
"otaProductInfoUnavailable":
"Nelze identifikovat zařízení. Znovu připojte a zkuste to znovu.",
"otaFirmwareVersionInvalid":
"Verze firmwaru je abnormální. Znovu připojte a zkuste to znovu.",
"keepConnectedDontClose":
"Udržujte prosím zařízení připojené, nezavírejte aplikaci",
"doNotDisconnect": "Neodpojujte prosím",
@ -854,4 +1501,23 @@ const Map<String, String> csCZ = {
"乌尔都语": "Urdština",
"波斯语": "Perština",
"斯瓦希里语": "Svahilština",
// 时间相关
"justNow": "Právě teď",
"minutesAgo": "před @minutes minutami",
"yesterday": "Včera",
// 时间扩展(图片翻译模块使用)
"daysAgo": "před @days dny",
"hoursAgo": "před @hours hodinami",
//补充
"insufficientIntegral": "Nedostatek bodů",
//余额不足弹窗
"insufficientBalanceDesc":
'Nedostatečný zůstatek, přejděte prosím na příslušnou stránku pro dobití.',
"recharge": 'Přejít na dobití',
// 会员到期提示
"aiMemberExpiredDesc":
'AI členství vypršelo, přejděte prosím na stránku dobíjení členství pro obnovení.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> daDK = {
"spanish": "Spansk",
"portuguese": "Portugisisk",
"traditionalChinese": "Traditionel kinesisk",
"traditionalChineseHK": "Traditionel kinesisk (Hongkong)",
"japanese": "Japansk",
"korean": "Koreansk",
"french": "Fransk",
@ -102,8 +103,8 @@ const Map<String, String> daDK = {
"loginDeclaration": "Voitrans erklæring", // Voitrans 声明
"welcomeToThisApp":
"Velkommen til Voitrans, læs venligst grundigt", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "Privatlivspolitik", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "Brugeraftale", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". Ved at klikke 'Accepter og fortsæt' angiver du, at du har læst og accepteret ovenstående aftaler fuldt ud. Ved at klikke 'Accepter ikke' vil applikationen lukke.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Accepter ikke", // 不同意
@ -185,6 +186,211 @@ const Map<String, String> daDK = {
"usageStats": "Brugsstatistik",
"usageStatsInfo": "Se statistik for brug af appen",
"scene": "Scenarier",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Oversættelsesstatistik",
"meetingStats": "Mødestatistik",
"today": "I dag",
"thisWeek": "Denne uge",
"thisMonth": "Denne måned",
"history": "Historik",
"currentSessionStats": "Nuværende session statistik",
"translationCount": "Oversættelsesantal",
"sessionDuration": "Sessionsvarighed",
"characters": "Tegn",
"recordingDuration": "Optagelsesvarighed",
"totalApiCalls": "Totale API-kald",
"sessionCount": "Sessionsantal",
"totalCharacters": "Totale tegn",
"apiCallStats": "API-kald statistik",
"translationApi": "Oversættelses-API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Datamængdestatistik",
"sourceTextCharacters": "Kildeteksttegn",
"ttsTextCharacters": "TTS Teksttegn",
"effectiveAudioDuration": "Effektiv lydvarighed",
"totalSessionDuration": "Total sessionsvarighed",
"costStats": "Omkostningsstatistik",
"estimatedCost": "Estimeret omkostning",
"dailyCostThreshold": "Daglig omkostningstærskel",
"monthlyCostThreshold": "Månedlig omkostningstærskel",
"usageBehaviorStats": "Brugsadfærdsstatistik",
"mostUsedLanguagePair": "Mest brugte sprogpar",
"mostUsedMode": "Mest brugte tilstand",
"asrApiCalls": "ASR-kald",
"totalAudioDuration": "Total lydvarighed",
"audioFileSize": "Lydfilstørrelse",
"transcriptBytes": "Udskriftbytes",
// 通知文案
"loadFailed": "Indlæsning mislykkedes",
"statsLoadFailedTryLater":
"Statistik kunne ikke indlæses. Prøv venligst igen senere.",
"cleanupComplete": "Oprydning fuldført",
"cleanedOldData": "Rensede data ældre end 90 dage",
"exportFeature": "Eksportfunktion",
"exportInDevelopment": "Dataeksport er under udvikling",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Tilgængelige pakker',
'remainingQuota': 'Resterende kvote',
'totalQuota': 'Total kvote',
'remaining': 'Resterende',
'featureDescription': 'Funktionsbeskrivelse',
// AI 功能卡片
'musicAndRecommendation': 'Musik & anbefaling',
'navigationAndRoutes': 'Navigation & ruter',
'nearbySearch': 'Søgning i nærheden',
'newsInformation': 'Nyheder',
'communicationAssistant': 'Kommunikationsassistent',
// 翻译功能卡片
'realtimeTranscription': 'Realtidstranskription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenarieordbog',
'subtitleDisplay': 'Undertekster',
// 会议功能卡片
'meetingRecording': 'Mødeoptagelse',
'transcriptionAndSummary': 'Transkription & sammendrag',
'keywordSearch': 'Søgeordsøgning',
'collaborationSharing': 'Samarbejde & deling',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Møde Basic 100',
'meet_002_name': 'Møde Basic 500',
'meet_003_name': 'Møde Basic 1000',
'trans_001_name': 'Oversættelse Basic 100',
'trans_002_name': 'Oversættelse Basic 500',
'trans_003_name': 'Oversættelse Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Inkluderer 100 anvendelser. Adgang til kerne AI-funktioner.',
'ai_002_desc': 'Inkluderer 500 anvendelser. Adgang til kerne AI-funktioner.',
'ai_003_desc': 'Inkluderer 1000 anvendelser. Adgang til kerne AI-funktioner.',
'meet_001_desc': 'Inkluderer 100 mødeoptagelser/transkriptioner.',
'meet_002_desc': 'Inkluderer 500 mødeoptagelser/transkriptioner.',
'meet_003_desc': 'Inkluderer 1000 mødeoptagelser/transkriptioner.',
'trans_001_desc': 'Inkluderer 100 oversættelser (stemme/tekst).',
'trans_002_desc': 'Inkluderer 500 oversættelser (stemme/tekst).',
'trans_003_desc': 'Inkluderer 1000 oversættelser (stemme/tekst).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Leveret af: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP kundeservice QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Lydoptagelse, transkription, søgeordsøgning og automatisk sammendrag for at øge mødeeffektiviteten.',
'meetingHeaderDesc2':
'Velegnet til forretningsmøder, klassenoter og interviewreferater.',
'meetingAutoRecording': 'Automatisk optagelse og segmentering',
'meetingSpeakerTagging': 'Taleridentifikation',
'meetingLongAudioTranscription': 'Lang lydtranskription',
'meetingKeyPointSummary': 'Udtrækning af hovedpunkter',
'meetingTopicNameSearch': 'Søg efter emne/navn',
'meetingTimelineJump': 'Tidslinjehop',
'meetingExportSummary': 'Eksportér referat',
'meetingMultiPlatformShare': 'Del på tværs af platforme',
'meetingDisclaimer':
'Brug i stille omgivelser; ydeevne afhænger af mikrofon og netværk.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Realtids simultantolkning og tekstoversættelse med lav latenstid.',
'transHeaderDesc2': 'Velegnet til rejser, forretning, taler og undervisning.',
'translateZhEn': 'Kinesisk-engelsk oversættelse',
'lowLatencyVoiceBroadcast': 'Stemmeudsendelse med lav latenstid',
'multiLangTextTranslation': 'Flersproget tekstoversættelse',
'termOptimizationContextPreserve':
'Terminologioptimering og kontekstbevarelse',
'lexiconTourBusinessLife': 'Rejse/Forretning/Livsstil ordbøger',
'personalVocabularyMemory': 'Personlig ordforrådshukommelse',
'conversationSubtitleLargeText': 'Samtaleundertekster / Stor teksttilstand',
'colorHighContrast': 'Høj farvekontrast',
'transDisclaimer':
'Oversættelsesydelse afhænger af mikrofon, netværkslatenstid og omgivende støj.',
// AI 商品页描述
'aiHeaderDesc1':
'Længere samtalekvote, flere værktøjskald, udvidet kontekstlængde.',
'aiHeaderDesc2':
'Velegnet til agent Q&A, sammendrag, analyse og opgaveudførelse.',
'musicSearchPlaybackControl': 'Musikbibliotekssøgning og afspilningskontrol',
'smartPlaylistAndSimilarRecommendations':
'Smart playliste og lignende sanganbefalinger',
'routePlanningAndCongestionAvoidance':
'Ruteplanlægning og undgåelse af trængsel',
'voiceBroadcastAndWaypoints': 'Stemmeudsendelse og waypoint-indstillinger',
'realTimeWeatherForecast': 'Realtidsvejr og prognose',
'clothingAdviceAndTravelReminders': 'Tøjanbefalinger og rejsepåmindelser',
'poiSearchFoodGasParking': 'POI-søgning: spisning / benzin / parkering',
'ratingsHoursAndDirectRoutes': 'Bedømmelser, åbningstider og direkte ruter',
'hotNewsAndTopicOverview': 'Hot news og emneoversigt',
'longArticleSummariesAndKeyPoints':
'Sammendrag af lange artikler og hovedpunkter',
'helpCallAndSMS': 'Hjælp med opkald og SMS',
'templatedMessagesAndScheduleReminders':
'Skabelonbeskeder og tidsplanpåmindelser',
'aiDisclaimer':
'Funktioner afhænger af enhedstilladelser, servicetilgængelighed og netværksforhold.',
// 会员商品页
'benefitsOverview': 'Fordelsoversigt',
'higherQuota': 'Højere brugskvote',
'lowerUnitPrice': 'Lavere enhedspris',
'priorityService': 'Prioritetsservice',
'exclusiveSupportChannel': 'Dedikeret supportkanal',
'fastResponse': 'Hurtig problemrespons',
'eventsAndDiscounts': 'Events og rabatter',
'memberExclusiveEvents': 'Medlemseksklusive events',
'longTermDiscountPlan': 'Langsigtet rabatplan',
'generalPrivileges': 'Generelle privilegier',
'earlyAccessNewFeatures': 'Tidlig adgang til nye funktioner',
'crossDeviceSync': 'Synkronisering på tværs af enheder',
'vipDisclaimer':
'Faktiske fordele afhænger af pakkedetaljerne og kan ændre sig med versioner.',
// 新手引导 / Onboarding
'skip': "Spring over",
'next': 'Næste',
'sayLilyHint': 'Sig "Lily Lily" til mikrofonen',
'imHere': 'Jeg er her~',
'guideWelcomeWakeAI': 'Velkommen til Voitrans! Væk først din AI "Lily".',
'aiReplyCompleted': 'Lily har afsluttet svaret!',
'aiThinking': 'Lily tænker...',
'guideAwakenSuccess': 'Fantastisk! Lily er vågen – bed hende om hjælp.',
'confirmInput': 'Bekræft input',
'guideClickSendPrefix': 'Tryk send, ',
// AI 引导步骤
'guideWeatherStart': 'Sig til Lily: "Hvordan er vejret i dag?"',
'guideWeatherInput': 'Hvordan er vejret i dag?',
'guideWeatherSend': 'Lily vil rapportere vejret i realtid',
'guideWeatherEnd': 'Lily kan rapportere vejret live – prøv andre kommandoer',
'guideMusicStart': 'Sig til Lily: "Spil noget rockmusik"',
'guideMusicInput': 'Spil noget rockmusik',
'guideMusicSend': 'Lily vil finde musik til dig',
'guideMusicEnd': 'Lily fandt musik – prøv andre kommandoer',
'guideNavStart': 'Sig til Lily: "Naviger til Shenzhen Lufthavn"',
'guideNavInput': 'Naviger til Shenzhen Lufthavn',
'guideNavSend': 'Lily vil planlægge ruten',
'guideNavEnd': 'Navigation indstillet – prøv andre kommandoer',
'guideMeetingStart':
'Sig til Lily: "Opret en mødepåmindelse til i morgen kl. 15"',
'guideMeetingInput': 'Opret en mødepåmindelse til i morgen kl. 15',
'guideMeetingSend': 'Lily vil oprette en mødepåmindelse',
'guideMeetingEnd': 'Påmindelse oprettet – prøv andre kommandoer',
'guidePhoneStart': 'Sig til Lily: "Ring til mor"',
'guidePhoneInput': 'Ring til mor',
'guidePhoneSend': 'Lily vil foretage opkaldet',
'guidePhoneEnd': 'Opkald foretaget – prøv andre kommandoer',
'guideSmsStart':
'Sig til Lily: "Send far en SMS: Jeg kommer hjem til middag"',
'guideSmsInput': 'SMS far: Jeg kommer hjem til middag',
'guideSmsSend': 'Lily vil sende beskeden',
'guideSmsEnd': 'Besked sendt – stemmestyring er praktisk',
// 商务会议助手页
"startMeeting": "Start møde",
@ -199,13 +405,247 @@ const Map<String, String> daDK = {
'aiSummary': 'AI sammendrag',
'meetingTranscript': 'Mødeudskrift',
// Meeting模块 - 导航和基础功能
'files': 'Filer',
'mine': 'Mine',
'connect': 'Tilslut',
'allFiles': 'Alle filer',
'searchInAllFiles': 'Søg i alle filer',
'from': 'Fra',
'sortBy': 'Sortér efter',
'creationTime': 'Oprettelsestid',
'bluetoothConnection': 'Bluetooth-forbindelse',
'meetingReconnect': 'Tilslut igen',
'searching': 'Søger...',
'searchFailed':
'Søgning mislykkedes, tjek venligst om Bluetooth er aktiveret',
'aiPenNotFound': 'AI PEN enhed ikke fundet',
'connectedToAiPen': 'Tilsluttet til AI PEN enhed',
'checkingNewFiles': 'Tjekker for nye filer at importere',
'startingWifi': 'Starter Wi-Fi...',
'newFilesDetected': 'Nye filer fundet, forbereder import',
'noNewFiles': 'Ingen nye filer at importere',
'connectingWifi': 'Tilslutter til Wi-Fi...',
'wifiConnected': 'Wi-Fi tilsluttet succesfuldt',
'downloadingFiles': 'Downloader filer...',
'downloadingFileProgress': 'Total {total} filer, downloader fil {current}',
'downloadComplete': 'Download fuldført',
'downloadCompleteInfo':
'Download fuldført, {count} filer i alt, vender automatisk tilbage om 2 sekunder',
// Meeting模块 - 录音功能
'startRecording': 'Start optagelse',
'liveRecording': 'Live optagelse',
'audioVideoRecording': 'Lyd/Video optagelse',
'callRecording': 'Opkaldsoptagelse',
'importAudio': 'Importer lyd',
'transcribing': 'Transskriberer...',
'summarizing': 'Sammenfatter...',
'analyzing': 'Analyserer...',
'summaryComplete': 'Sammendrag fuldført',
//'generating': '正在生成...',
'generate': 'Generer',
'overview': 'Oversigt',
'transcription': 'Transkription',
'summary': 'Sammendrag',
'mindMap': 'Mindmap',
'editSpeaker': 'Rediger',
'nameSpeaker': 'Navngiv taler',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transkriptionsoptagelser',
'templateCommunity': 'Skabelonfællesskab',
'comingSoon': 'Kommer snart',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVAT SKY',
'enabled': 'Aktiveret',
'disabled': 'Deaktiveret',
'myVoitransDevice': 'Min VOITRANS enhed',
'helpAndFeedback': 'Hjælp & feedback',
'aboutVoitrans': 'Om VOITRANS',
'meetingDays': 'Dage',
'meetingHours': 'Timer',
'voitransAiMember': 'Voitrans AI Medlem',
'unlockStarterMember': 'Lås op for Starter Medlem',
'bindDeviceToActivate':
'Bind Voitrans enhed for at aktivere Starter medlemskab',
'unlockNow': 'Lås op nu',
// Meeting模块 - 会员功能
'comparison': 'Sammenligning',
'detailedInfo': 'Detaljeret information',
'monthlyTranscriptionTime': 'Månedlig transskriptionstid',
'unlimited': 'Ubegrænset',
'professionalTemplates': 'Professionelle skabeloner',
'limited': 'Begrænset',
'fullTemplates': 'Fulde skabeloner',
'professionalTerms': 'Fagudtryk',
'customTemplates': 'Brugerdefinerede skabeloner',
'visualMindMap': 'Visuelt mindmap',
'speakerIdentification': 'Taleridentifikation',
'aiVoiceEnhancement': 'AI stemmeforbedring',
'audioImport': 'Lydimport',
'multipleExportFormats': 'Flere eksportformater',
'professionalSummaryTemplates': 'Professionelle sammendragsskabeloner',
'professionalTemplateDesc':
'Professionelt skabelondesign for at forbedre din arbejdseffektivitet. Tilpasset efter industribehov.',
'customTemplateDesc':
'Du kan tilpasse sammendragsprompter efter dine behov og bruge dem til at generere de nødvendige sammendrag.',
'askAiDesc':
'Udtræk intelligent dybere information fra optagelser, generer datatabeller, vigtige diskussionskonklusioner, to-do lister, rapport-e-mails og andet formateret indhold med et enkelt klik.',
'visualMindMapDesc':
'Ud over sammendrag - organiser og visualiser hovedpunkter med mindmaps for en mere effektiv forståelse af hele teksten.',
'templateCommunityDesc':
'Opdag, del og få inspiration fra skabelonbiblioteket oprettet af brugere.',
'speakerIdentificationDesc':
'Lydtranskription vil understøtte taleridentifikation, mere intuitivt gendanne møde- eller telefonopkaldsindhold. Samtidig vil sammendraget være mere præcist.',
'privateCloudSyncDesc':
'Dine optagelser og transkriptioner vil blive sikkert gemt på dedikerede cloud-servere, med fuld kryptering under upload og download for at sikre privatliv og sikkerhed.',
'aiVoiceEnhancementDesc':
'AI stemmeforbedring understøtter flere støjreduktionsindstillinger, eliminerer intelligent baggrundsstøj, forbedrer stemmeklarhed og forbedrer lydafspilningskvalitet.',
'audioImportDesc':
'Importer nemt lydfiler fra lokale eller tredjepartsapplikationer, såsom stemmenotater, Google Drive osv.',
'multipleExportFormatsDesc':
'Eksportér dine lydoptagelser, transkriptionstekst og sammendrag i forskellige formater (TXT, PDF, JPEG) for at opfylde dine behov.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Opgrader dit medlemskab',
'yearlySubscription': 'Årligt abonnement',
'monthlySubscription': 'Månedligt abonnement',
'proMonthly': 'Pro ¥60/måned',
'proMonthlyDesc':
'7-dages gratis prøveperiode, derefter ¥800/år. Annuller når som helst før prøveperioden slutter.',
'sevenDayTrial': '7-dages gratis prøveperiode',
'unlimitedMonthly': 'Ubegrænset ¥120/måned',
'unlimitedMonthlyDesc':
'7-dages gratis prøveperiode, derefter ¥1600/år. Annuller når som helst før prøveperioden slutter.',
'trialNote':
'*Gratis prøveperiode i 7 dage, derefter opkræves årligt, annuller når som helst.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/måned',
'subscribe': 'Abonner',
'unlimitedPrice': 'Ubegrænset ¥198',
'unlimitedMonthlyPrice': '¥198/måned',
'upgradeNote':
'*Efter opgradering af abonnement vil de resterende dage af det oprindelige abonnement automatisk blive beregnet og refunderet til din betalingskonto',
'buyMoreTranscriptionTime': 'Køb mere transskriptionstid',
'sixThousandMinutes': '6.000 minutter',
'threeThousandMinutes': '3.000 minutter',
'sixHundredMinutes': '600 minutter',
'oneHundredTwentyMinutes': '120 minutter',
'validityPeriod': '*Gyldighedsperiode: ',
'validityNote': 'Aktiveret straks efter køb, gyldig i 2 år efter aktivering.',
'purchase': 'Køb',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Vælg sammendragsskabelon',
'useThisTemplate': 'Brug denne skabelon',
'lastUsed': 'Sidst brugt',
'viewAll': 'Se alle',
'recordingLanguage': 'Optagelsessprog',
'chineseSimplified': 'Kinesisk Mandarin (Forenklet)',
'meetingGenerateNow': 'Generer nu',
'keyEventsAnalyzed': 'Analyserede {count} nøglebegivenheder.',
'aiAnalysisDesc':
'AI-analyse identificerer nøglebegivenheder i optagelser, så du kan vælge vigtige begivenheder til AI-generering.',
// Meeting模块 - 文件操作和状态
'importing': 'Importerer...',
'batchImporting': 'Batchimporterer...',
'importingLocalRecordings': 'Importerer lokale optagelser...',
'importFailed': 'Import af fil mislykkedes: {filePath}, fejl: {error}',
'importSuccess': 'Importerede succesfuldt {count} lokale optagelser',
'importError': 'Import mislykkedes: {error}',
'pleaseSelectAudioFile': 'Vælg venligst lydfil',
'shareAudio': 'Del mødelyd',
'shareComplete': 'Deling fuldført!',
'shareFailed': 'Deling mislykkedes: {error}',
'fileProcessingFailed':
'Filbehandling mislykkedes: {filePath}, fejl: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Ukendt sprog',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Lagerplads',
'meetingStoragePermissionExplanation':
'Vi har brug for adgang til lagertilladelser, så du kan vælge og uploade lydfiler.',
'meetingStoragePermissionPermanentDenial':
'Detekteret at du permanent har nægtet lagertilladelse. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Del mindmap',
'shareSuccess': 'Deling succes',
// Meeting模块 - AI相关
'askAI': 'Spørg AI ...',
'askAIPrompt': 'Hvad kan jeg hjælpe dig med i dag?',
'continueAsk': 'Fortsæt med at spørge',
'todoList': 'To-do liste',
'extractConclusion': 'Udtræk konklusion',
'generateKeyIndicators': 'Generer nøgleindikatorer',
// Meeting模块 - 更多操作相关
'reSummarize': 'Gen-sammendrag',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Optagelsessprog',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Kantonesisk',
'sichuan': 'Sichuan dialekt',
'shanghai': 'Shanghai dialekt',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Del link',
'copyTranscript': 'Kopier transkription',
'copySummary': 'Kopier sammendrag',
'exportAudio': 'Eksportér lyd',
'exportTranscript': 'Eksportér transkription',
'shareMeetingAudio': 'Del mødelyd',
'exportSummary': 'Eksportér sammendrag',
'exportAs': 'Eksportér som',
'exportingPDF': 'Eksporterer PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Navngiv nuværende taler',
'recentlyUsedNames': 'Nyligt brugte navne',
'applyToCurrentParagraph': 'Anvend på nuværende afsnit',
'totalTime': 'Samlet tid',
'summarySpeakerWillBeUpdatedAutomatically':
'Sammendragstalere vil blive opdateret automatisk',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Synkroniser til skyen',
'syncToCloudTip':
'Synkroniser automatisk dine optagelser til skyen, du kan afspille, administrere og dele optagelser gennem enhver VOITRANS APP eller VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Synkroniser VOITRANS APP',
'transcriptionRecord': 'Transkriptionsoptagelse',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Dato & Tid',
'location': 'Lokation',
'attendees': 'Deltagere',
'inputLocation': 'Indtast lokation',
'inputAttendees': 'Indtast deltagere',
// 设置页
"systemSettings": "Systemindstillinger", //系统设置
"vipRecharge": "Opladning af VIP medlem", //会员充值
"aiRecharge": "Premium medlem", //AI充值
"translationRecharge": "Opladning af oversetning", //翻译充值
"meetingAssistantRecharge": "Opladning af mødeassistent", //会议助手充值
"cloudSync": "Opladning af cloud-synkronisering", //云端同步
"systemSettings": "Systemindstillinger",
"vipRecharge": "Opladning af VIP medlem",
"aiRecharge": "Premium medlem",
"translationRecharge": "Opladning af oversetning",
"meetingAssistantRecharge": "Opladning af mødeassistent",
"cloudSync": "Opladning af cloud-synkronisering",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Tilsluttet enhed:",
"accountId": "Konto-ID:",
"systemSetting": "Systemindstillinger",
@ -242,12 +682,10 @@ const Map<String, String> daDK = {
'selecttimbre': 'Vælg klangfarve',
'pleaseRead': 'Læs venligst',
'completeRecording': 'Fuldfør optagelse',
"firmwareUpgrade": "Firmware opgradering", // 固件升级
"bleHeadsetFirmwareUpgrade":
"BLE øretelefon firmware opgradering", // BLE耳机固件版本升级
"deviceManagement": "Enhedsstyring", // 设备管理
"manageConnectedDevices":
"Administrer tilsluttede Bluetooth enheder", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "Firmware opgradering",
"bleHeadsetFirmwareUpgrade": "BLE øretelefon firmware opgradering",
"deviceManagement": "Enhedsstyring",
"manageConnectedDevices": "Administrer tilsluttede Bluetooth enheder",
//设置setting_controller
// 版本更新相关
@ -256,11 +694,10 @@ const Map<String, String> daDK = {
'networkErrorRetry': 'Netværksfejl, prøv venligst igen senere',
// 设备管理相关
'clearPairedDevices': 'Ryd parrede enheder',
'clearPairedDevicesConfirm':
'Er du sikker på, at du vil rydde alle parrede enheder?',
'clearPairedDevicesSuccess': 'Rydning af parrede enheder lykkedes',
'clearPairedDevicesFailed': 'Rydning af parrede enheder mislykkedes',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Realtids stemmechat",
@ -269,11 +706,20 @@ const Map<String, String> daDK = {
"loading": "Indlæser...",
//设备管理页面
"earphone": "Øretelefon",
"voicerecorder": "Diktafon",
"notBound": "Ikke bundet",
"deviceNotBoundYet": "Ingen enhed bundet endnu",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Afbind",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -302,6 +748,20 @@ const Map<String, String> daDK = {
"loadMoreMessages": "Indlæs flere beskeder...",
"loadFailedClickRetry": "Indlæsning mislykkedes, klik for at prøve igen",
"swipeUpForMore": "Stryg op for mere",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Hej! Jeg er **Lily**, jeg kan hjælpe dig med:\n\n'
@ -334,7 +794,7 @@ const Map<String, String> daDK = {
'submitSuccess': 'Indsendt succesfuldt',
'submitFailed': 'Indsendelse mislykkedes',
'reportSubmitted': 'Rapport indsendt, vi vil behandle det hurtigst muligt',
//'networkError': 'Netværksfejl, prøv venligst igen senere',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Skadelig/usikker',
'pornographicVulgar': 'Pornografisk/vulgær',
'misleadingAttack': 'Vildledende angreb',
@ -344,7 +804,7 @@ const Map<String, String> daDK = {
'other': 'Andet',
'reportDescriptionHint':
'Vi vil gerne vide årsagen til din rapport, du kan beskrive problemet du stødte på.',
//'submit': 'Indsend',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Genereret af AI',
@ -399,6 +859,17 @@ const Map<String, String> daDK = {
"friday": "Fredag",
"saturday": "Lørdag",
"sunday": "Søndag",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Solrigt",
"partlyCloudy": "Delvis skyet",
@ -434,6 +905,8 @@ const Map<String, String> daDK = {
'deleteAccount': 'Slet konto',
'deleteAccountTips':
'Er du sikker på, at du vil slette din konto permanent? Denne handling kan ikke fortrydes',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -454,8 +927,8 @@ const Map<String, String> daDK = {
'Server intern fejl, prøv venligst igen senere',
// Profile 用户交互
//'error': 'Fejl',
//'success': 'Succes',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Billedkomprimering mislykkedes',
'avatarUpdateFailed': 'Avatar opdatering mislykkedes',
'usernameCannotBeEmpty': 'Brugernavn kan ikke være tomt',
@ -483,15 +956,26 @@ const Map<String, String> daDK = {
// 权限管理页面
'getPermissionStatusFailed': 'Hentning af tilladelsestatus mislykkedes',
'communicationPermissions': 'Kommunikationstilladelser',
'bluetoothPermissions': 'Bluetooth-tilladelser',
'notificationPermissions': 'Notifikationstilladelser',
'storagePermissions': 'Lagertilladelser',
'microphonePermissions': 'Mikrofontilladelser',
'alarmPermissions': 'Alarmtilladelser',
'calendarPermissions': 'Kalendertilladelser',
'locationPermissions': 'Placeringstilladelser',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Kontakter',
//'bluetooth': '蓝牙',
'notification': 'Notifikation',
'alarm': 'Alarm',
'calendarWrite': 'Kalender skrivning',
'calendarFullAccess': 'Kalender fuld adgang',
'locationInfo': 'Placeringsinformation',
'phonePermissionDesc': 'Bruges til telefonopkaldsfunktion',
'smsPermissionDesc': 'Bruges til SMS-sendefunktion',
'alarmPermissionDesc':
'Bruges til at indstille præcise alarmer for at sikre, at påmindelser udløses til tiden',
'calendarWritePermissionDesc':
'Bruges til at oprette kalenderbegivenheder og påmindelser',
'calendarFullAccessPermissionDesc':
@ -508,18 +992,82 @@ const Map<String, String> daDK = {
'phonePermissionDetailDesc':
'Telefonopkaldsfunktion har brug for telefontilladelse',
'smsPermissionDetailDesc': 'SMS-sendefunktion har brug for SMS-tilladelse',
'alarmPermissionDetailDesc':
'Denne tilladelse er påkrævet for at indstille præcise alarmer og sikre, at påmindelser udløses til tiden',
'calendarWritePermissionDetailDesc':
'Oprettelse af kalenderbegivenheder har brug for kalender skrivetilladelse',
'calendarFullAccessPermissionDetailDesc':
'Administration af kalenderbegivenheder har brug for fuld kalendertilladelse',
'locationPermissionDetailDesc':
'Hentning af placeringsinformation har brug for placeringstilladelse',
'contactsPermissionDesc': 'Bruges til at få adgang til kontaktoplysninger',
'contactsPermissionDetailDesc':
'Telefonopkald og SMS-funktionalitet kræver kontakttilladelse for at vælge kontakter',
'bluetoothPermissionDesc':
'Bruges til at forbinde og administrere Bluetooth-enheder',
'bluetoothPermissionDetailDesc':
'Forbindelse til Bluetooth-hovedtelefoner og andre enheder kræver Bluetooth-tilladelse',
'bluetoothScanPermissionDesc':
'Bruges til at scanne efter Bluetooth-enheder i nærheden',
'bluetoothScanPermissionDetailDesc':
'Scanning efter Bluetooth-enheder i nærheden kræver Bluetooth-scanningstilladelse',
'bluetoothConnectPermissionDesc':
'Bruges til at forbinde til Bluetooth-enheder',
'bluetoothConnectPermissionDetailDesc':
'Forbindelse til Bluetooth-enheder kræver Bluetooth-forbindelsestilladelse',
'notificationPermissionDesc': 'Bruges til at sende notifikationsbeskeder',
'notificationPermissionDetailDesc':
'Appen har brug for notifikationstilladelse for at sende dig vigtige alarmer og beskeder',
'appNeedsPermissionForFullFunction':
'Appen har brug for denne tilladelse for at give fuld funktionalitet',
'permanentDenialText':
'Du har permanent nægtet {permission} tilladelse, gå venligst til app-indstillinger for at aktivere det',
'goToSettings': 'Gå til indstillinger',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Forbindelse',
'bluetoothScanExplanation':
'Appen har brug for Bluetooth-scanningstilladelse til at scanne efter Bluetooth-enheder i nærheden.',
'bluetoothConnectExplanation':
'Appen har brug for Bluetooth-forbindelsestilladelse til at forbinde til Bluetooth-enheder.',
'locationForBluetoothExplanation':
'Appen har brug for placeringstilladelse til at scanne efter Bluetooth-enheder.',
'bluetoothScanPermanentDenial':
'Bluetooth-scanningstilladelse er blevet permanent afvist, gå venligst til indstillinger for at aktivere det manuelt.',
'bluetoothConnectPermanentDenial':
'Bluetooth-forbindelsestilladelse er blevet permanent afvist, gå venligst til indstillinger for at aktivere det manuelt.',
'locationPermanentDenial':
'Placeringstilladelse er blevet permanent afvist, gå venligst til indstillinger for at aktivere det manuelt.',
'notificationPermission': 'Notifikation',
'locationPermission': 'Placering',
'notificationPermissionExplanation':
'Notifikationstilladelse er påkrævet for at vise musikafspilningsstatus.',
'locationPermissionExplanation':
'Placeringstilladelse er påkrævet for at få den aktuelle placering.',
'notificationPermissionPermanentDenial':
'Du har permanent afvist notifikationstilladelse, gå venligst til indstillinger for at aktivere det.',
'locationPermissionPermanentDenial':
'Du har permanent afvist placeringstilladelse, gå venligst til indstillinger for at aktivere det.',
//'microphonePermission': '录音',
'storagePermission': 'Lagerplads',
'microphonePermissionExplanation':
'Vi har brug for mikrofontilladelse til at optage lydindhold.',
'storagePermissionExplanation':
'Vi har brug for lagertilladelse, så du kan vælge og uploade lydfiler.',
'microphonePermissionPermanentDenial':
'Mikrofontilladelse er blevet permanent afvist. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere mikrofontilladelse manuelt.',
'storagePermissionPermanentDenial':
'Lagertilladelse er blevet permanent afvist. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.',
//permission_util.dart
'permissionUtilNeed': 'Mangler ',
'permissionUtilPermission': ' tilladelse',
'permissionUtilRestricted': ' tilladelse begrænset',
'permissionUtilRestrictedMessage':
'Denne funktion er utilgængelig eller begrænset på den nuværende enhed, tjek venligst enhedsindstillinger eller systembegrænsninger',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Ny version fundet', // 版本更新对话框标题
'remindLater': 'Påmind senere', // 稍后提醒按钮
@ -638,8 +1186,23 @@ const Map<String, String> daDK = {
"东帝汶": "Østtimor",
"斐济": "Fiji",
"所罗门群岛": "Salomonøerne",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Oversættelseshistorik",
"enableRecording": "Aktiver optagelse",
@ -648,9 +1211,24 @@ const Map<String, String> daDK = {
"phoneUser": "Telefon bruger",
"selectSourceLanguage": "Vælg kildesprog",
"selectTargetLanguage": "Vælg målsprog",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Ingen oversættelseshistorik",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Ryd historik",
"clearHistoryConfirm":
"Er du sikker på, at du vil rydde hele oversættelseshistorikken? Denne handling kan ikke fortrydes.",
@ -659,7 +1237,58 @@ const Map<String, String> daDK = {
"deleteSessionConfirm":
"Er du sikker på, at du vil slette alle oversættelsesoptegnelser for denne session? Denne handling kan ikke fortrydes.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Oversæt lydfiler",
"noAudioFiles": "Ingen lydfiler",
"calculating": "Beregner...",
@ -705,7 +1334,7 @@ const Map<String, String> daDK = {
"autoInputCode": "Automatisk kodeinput",
"skipBinding": "Spring binding over",
"rescan": "Scan igen",
"skip": "Spring over",
"verifyingDevice": "Verificerer enhed...",
"confirmBinding": "Bekræft binding",
"associatingDevice": "Associerer enhed...",
@ -738,17 +1367,17 @@ const Map<String, String> daDK = {
"pairingFailedRetry": "Parring mislykkedes, prøv venligst igen",
// 配对控制器相关
//'connectDevice': 'Tilslut enhed',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Aktiver venligst Bluetooth',
'deviceDisconnected': 'Enhed afbrudt',
'readyToStartPairing': 'Klar til at starte parring',
'checkingEnvironment': 'Kontrollerer miljø...',
'ensureHeadsetOnAndPairingMode':
'Sørg venligst for at øretelefonerne er tændt og i parringstilstand',
//'goToBluetoothSettings': 'Gå til Bluetooth indstillinger',
//'verifyingDevice': 'Verificerer enhed...',
//'confirmBinding': 'Bekræft binding',
//'associatingDevice': 'Associerer enhed...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Etablerer sikker forbindelse...',
'needManualBindingAuthCode':
'Har brug for manuel bindingsautorisationskode...',
@ -771,6 +1400,19 @@ const Map<String, String> daDK = {
'deviceAuthorizationFailedCheckCode':
'Enhedsautorisation mislykkedes, tjek venligst autorisationskode',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manuel Bluetooth-aktivering påkrævet', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Følg venligst disse trin:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Aktiver Bluetooth: Indstillinger → Bluetooth → Tænd', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Tilslut enhed: Find din enhed i "Mine enheder" og tryk for at tilslutte', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Vend tilbage til appen for at fortsætte parringsprocessen', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: Du kan også trykke længe på Bluetooth-ikonet i Kontrolcenter for hurtigt at få adgang til Bluetooth-indstillinger', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'Jeg ved det', // 我知道了
//用户反馈页
"feedback": "Brugerfeedback",
'feedbackInfo': 'Giv feedback eller forslag',
@ -798,6 +1440,14 @@ const Map<String, String> daDK = {
"connectionFailed": "Forbindelse mislykkedes",
"retryConnection": "Prøv forbindelse igen",
"ota_updateNow": "Opdater nu",
"otaVersionInfoFailed":
"Kunne ikke hente versionsoplysninger. Prøv venligst igen senere.",
"otaDeviceInfoUnavailable":
"Kunne ikke hente enhedsoplysninger. Tjek venligst forbindelsen og prøv igen.",
"otaProductInfoUnavailable":
"Kunne ikke identificere enheden. Tilslut igen og prøv igen.",
"otaFirmwareVersionInvalid":
"Firmware version er unormal. Tilslut igen og prøv igen.",
"keepConnectedDontClose": "Hold venligst enheden tilsluttet, luk ikke appen",
"doNotDisconnect": "Afbryd venligst ikke forbindelsen",
"charging": "Oplader",
@ -852,4 +1502,23 @@ const Map<String, String> daDK = {
"乌尔都语": "Urdu",
"波斯语": "Persisk",
"斯瓦希里语": "Swahili",
// 时间相关
"justNow": "Lige nu",
"minutesAgo": "for @minutes minutter siden",
"yesterday": "I går",
// 时间扩展(图片翻译模块使用)
"daysAgo": "for @days dage siden",
"hoursAgo": "for @hours timer siden",
//补充
"insufficientIntegral": "Utilstrækkelige point",
//余额不足弹窗
"insufficientBalanceDesc":
'Utilstrækkelig saldo, gå venligst til den tilsvarende genopfyldningsside for at genopfylde.',
"recharge": 'Gå til genopfyldning',
// 会员到期提示
"aiMemberExpiredDesc":
'AI medlemskab udløbet, gå venligst til medlemskabsgenopfyldningssiden for at forny.',
};

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

File diff suppressed because it is too large

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

@ -33,6 +33,7 @@ const Map<String, String> elGR = {
"spanish": "Ισπανικά",
"portuguese": "Πορτογαλικά",
"traditionalChinese": "Παραδοσιακά κινέζικα",
"traditionalChineseHK": "Παραδοσιακά Κινέζικα (Χονγκ Κονγκ)",
"japanese": "Ιαπωνικά",
"korean": "Κορεατικά",
"french": "Γαλλικά",
@ -102,8 +103,8 @@ const Map<String, String> elGR = {
"loginDeclaration": "Δήλωση Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Καλώς ήρθατε στο Voitrans, διαβάστε προσεκτικά", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "Πολιτική απορρήτου", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "Συμφωνία χρήστη", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". Κάνοντας κλικ στο 'Συμφωνώ και εισέρχομαι' δηλώνετε ότι έχετε διαβάσει πλήρως και συμφωνείτε με τις παραπάνω συμφωνίες. Κάνοντας κλικ στο 'Δεν συμφωνώ' θα κλείσει η εφαρμογή.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Δεν συμφωνώ", // 不同意
@ -187,6 +188,222 @@ const Map<String, String> elGR = {
"usageStats": "Στατιστικά χρήσης",
"usageStatsInfo": "Δείτε τα στατιστικά χρήσης της εφαρμογής",
"scene": "Σενάρια",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Στατιστικά Μετάφρασης",
"meetingStats": "Στατιστικά Συνάντησης",
"today": "Σήμερα",
"thisWeek": "Αυτή την εβδομάδα",
"thisMonth": "Αυτόν τον μήνα",
"history": "Ιστορικό",
"currentSessionStats": "Στατιστικά τρέχουσας συνεδρίας",
"translationCount": "Πλήθος μεταφράσεων",
"sessionDuration": "Διάρκεια συνεδρίας",
"characters": "Χαρακτήρες",
"recordingDuration": "Διάρκεια εγγραφής",
"totalApiCalls": "Σύνολο κλήσεων API",
"sessionCount": "Πλήθος συνεδριών",
"totalCharacters": "Σύνολο χαρακτήρων",
"apiCallStats": "Στατιστικά κλήσεων API",
"translationApi": "API Μετάφρασης",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Στατιστικά όγκου δεδομένων",
"sourceTextCharacters": "Χαρακτήρες πηγαίου κειμένου",
"ttsTextCharacters": "Χαρακτήρες κειμένου TTS",
"effectiveAudioDuration": "Αποτελεσματική διάρκεια ήχου",
"totalSessionDuration": "Συνολική διάρκεια συνεδρίας",
"costStats": "Στατιστικά κόστους",
"estimatedCost": "Εκτιμώμενο κόστος",
"dailyCostThreshold": "Ημερήσιο όριο κόστους",
"monthlyCostThreshold": "Μηνιαίο όριο κόστους",
"usageBehaviorStats": "Στατιστικά συμπεριφοράς χρήσης",
"mostUsedLanguagePair": "Συχνότερο ζεύγος γλωσσών",
"mostUsedMode": "Συχνότερη λειτουργία",
"asrApiCalls": "Κλήσεις ASR",
"totalAudioDuration": "Συνολική διάρκεια ήχου",
"audioFileSize": "Μέγεθος αρχείου ήχου",
"transcriptBytes": "Bytes απομαγνητοφώνησης",
// 通知文案
"loadFailed": "Αποτυχία φόρτωσης",
"statsLoadFailedTryLater":
"Αποτυχία φόρτωσης στατιστικών. Δοκιμάστε ξανά αργότερα.",
"cleanupComplete": "Εκκαθάριση ολοκληρώθηκε",
"cleanedOldData": "Εκκαθαρίστηκαν δεδομένα παλαιότερα των 90 ημερών",
"exportFeature": "Λειτουργία εξαγωγής",
"exportInDevelopment": "Η εξαγωγή δεδομένων είναι υπό ανάπτυξη",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Διαθέσιμα πακέτα',
'remainingQuota': 'Υπόλοιπο όριο',
'totalQuota': 'Συνολικό όριο',
'remaining': 'Υπόλοιπο',
'featureDescription': 'Περιγραφή λειτουργίας',
// AI 功能卡片
'musicAndRecommendation': 'Μουσική & Προτάσεις',
'navigationAndRoutes': 'Πλοήγηση & Διαδρομές',
'nearbySearch': 'Αναζήτηση κοντά',
'newsInformation': 'Ειδήσεις',
'communicationAssistant': 'Βοηθός επικοινωνίας',
// 翻译功能卡片
'realtimeTranscription': 'Απομαγνητοφώνηση σε πραγματικό χρόνο',
// 'textTranslation' 已存在
'sceneLexicon': 'Γλωσσάρι σεναρίων',
'subtitleDisplay': 'Υπότιτλοι',
// 会议功能卡片
'meetingRecording': 'Εγγραφή συνάντησης',
'transcriptionAndSummary': 'Απομαγνητοφώνηση & Περίληψη',
'keywordSearch': 'Αναζήτηση λέξεων-κλειδιών',
'collaborationSharing': 'Συνεργασία & Κοινή χρήση',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc':
'Περιλαμβάνει 100 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.',
'ai_002_desc':
'Περιλαμβάνει 500 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.',
'ai_003_desc':
'Περιλαμβάνει 1000 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.',
'meet_001_desc': 'Περιλαμβάνει 100 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.',
'meet_002_desc': 'Περιλαμβάνει 500 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.',
'meet_003_desc': 'Περιλαμβάνει 1000 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.',
'trans_001_desc': 'Περιλαμβάνει 100 μεταφράσεις (φωνή/κείμενο).',
'trans_002_desc': 'Περιλαμβάνει 500 μεταφράσεις (φωνή/κείμενο).',
'trans_003_desc': 'Περιλαμβάνει 1000 μεταφράσεις (φωνή/κείμενο).',
// 商品页通用页脚
'appNameProvider': 'Εφαρμογή: VoiTrans · Παρέχεται από: VoiTrans',
'iapCustomerServiceQQLabel': 'Εξυπηρέτηση πελατών IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Εγγραφή ήχου, απομαγνητοφώνηση, αναζήτηση λέξεων-κλειδιών και αυτόματη περίληψη για ενίσχυση της αποδοτικότητας των συναντήσεων.',
'meetingHeaderDesc2':
'Κατάλληλο για επαγγελματικές συναντήσεις, σημειώσεις μαθημάτων και πρακτικά συνεντεύξεων.',
'meetingAutoRecording': 'Αυτόματη εγγραφή και τμηματοποίηση',
'meetingSpeakerTagging': 'Σήμανση ομιλητή',
'meetingLongAudioTranscription': 'Απομαγνητοφώνηση μεγάλου ήχου',
'meetingKeyPointSummary': 'Εξαγωγή βασικών σημείων',
'meetingTopicNameSearch': 'Αναζήτηση με θέμα/όνομα',
'meetingTimelineJump': 'Άλμα στη χρονογραμμή',
'meetingExportSummary': 'Εξαγωγή πρακτικών',
'meetingMultiPlatformShare': 'Κοινή χρήση σε πολλές πλατφόρμες',
'meetingDisclaimer':
'Χρήση σε ήσυχο περιβάλλον. Η απόδοση εξαρτάται από το μικρόφωνο και το δίκτυο.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Ταυτόχρονη διερμηνεία σε πραγματικό χρόνο και μετάφραση κειμένου με φωνή χαμηλής καθυστέρησης.',
'transHeaderDesc2':
'Κατάλληλο για ταξίδια, επιχειρήσεις, ομιλίες και διδασκαλία.',
'translateZhEn': 'Μετάφραση Κινεζικά-Αγγλικά',
'lowLatencyVoiceBroadcast': 'Φωνητική μετάδοση χαμηλής καθυστέρησης',
'multiLangTextTranslation': 'Πολυγλωσσική μετάφραση κειμένου',
'termOptimizationContextPreserve':
'Βελτιστοποίηση ορολογίας και διατήρηση πλαισίου',
'lexiconTourBusinessLife': 'Γλωσσάρια Ταξιδιού/Επιχειρήσεων/Ζωής',
'personalVocabularyMemory': 'Προσωπική μνήμη λεξιλογίου',
'conversationSubtitleLargeText':
'Υπότιτλοι συνομιλίας / Λειτουργία μεγάλου κειμένου',
'colorHighContrast': 'Υψηλή αντίθεση χρωμάτων',
'transDisclaimer':
'Η απόδοση μετάφρασης εξαρτάται από το μικρόφωνο, την καθυστέρηση δικτύου και τον θόρυβο περιβάλλοντος.',
// AI 商品页描述
'aiHeaderDesc1':
'Μεγαλύτερο όριο συνομιλίας, περισσότερες κλήσεις εργαλείων, εκτεταμένο μήκος πλαισίου.',
'aiHeaderDesc2':
'Κατάλληλο για Q&A, περίληψη, ανάλυση και εκτέλεση εργασιών.',
'musicSearchPlaybackControl':
'Αναζήτηση μουσικής βιβλιοθήκης και έλεγχος αναπαραγωγής',
'smartPlaylistAndSimilarRecommendations':
'Έξυπνη λίστα αναπαραγωγής και προτάσεις παρόμοιων τραγουδιών',
'routePlanningAndCongestionAvoidance':
'Σχεδιασμός διαδρομής και αποφυγή συμφόρησης',
'voiceBroadcastAndWaypoints':
'Φωνητική μετάδοση και ρυθμίσεις σημείων διαδρομής',
'realTimeWeatherForecast': 'Καιρός και πρόγνωση σε πραγματικό χρόνο',
'clothingAdviceAndTravelReminders':
'Συμβουλές ένδυσης και ταξιδιωτικές υπενθυμίσεις',
'poiSearchFoodGasParking': 'Αναζήτηση POI: φαγητό / βενζίνη / στάθμευση',
'ratingsHoursAndDirectRoutes':
'Αξιολογήσεις, ώρες λειτουργίας και απευθείας δρομολόγηση',
'hotNewsAndTopicOverview': 'Καυτά νέα και επισκόπηση θεμάτων',
'longArticleSummariesAndKeyPoints':
'Περιλήψεις μεγάλων άρθρων και βασικά σημεία',
'helpCallAndSMS': 'Βοήθεια με κλήσεις και SMS',
'templatedMessagesAndScheduleReminders':
'Πρότυπα μηνύματα και υπενθυμίσεις προγράμματος',
'aiDisclaimer':
'Οι λειτουργίες εξαρτώνται από τα δικαιώματα συσκευής, τη διαθεσιμότητα υπηρεσίας και τις συνθήκες δικτύου.',
// 会员商品页
'benefitsOverview': 'Επισκόπηση προνομίων',
'higherQuota': 'Υψηλότερο όριο χρήσης',
'lowerUnitPrice': 'Χαμηλότερη τιμή μονάδας',
'priorityService': 'Υπηρεσία προτεραιότητας',
'exclusiveSupportChannel': 'Αποκλειστικό κανάλι υποστήριξης',
'fastResponse': 'Γρήγορη απόκριση σε θέματα',
'eventsAndDiscounts': 'Εκδηλώσεις και εκπτώσεις',
'memberExclusiveEvents': 'Αποκλειστικές εκδηλώσεις μελών',
'longTermDiscountPlan': 'Μακροπρόθεσμο πρόγραμμα εκπτώσεων',
'generalPrivileges': 'Γενικά προνόμια',
'earlyAccessNewFeatures': 'Πρώιμη πρόσβαση σε νέες λειτουργίες',
'crossDeviceSync': 'Συγχρονισμός μεταξύ συσκευών',
'vipDisclaimer':
'Τα πραγματικά προνόμια εξαρτώνται από τις λεπτομέρειες του πακέτου και μπορεί να αλλάξουν με τις εκδόσεις.',
// 新手引导 / Onboarding
'skip': "Παράλειψη",
'next': 'Επόμενο',
'sayLilyHint': 'Πείτε "Lily Lily" στο μικρόφωνο',
'imHere': 'Είμαι εδώ~',
'guideWelcomeWakeAI':
'Καλώς ήρθατε στο Voitrans! Πρώτα, ξυπνήστε το AI σας "Lily".',
'aiReplyCompleted': 'Η Lily ολοκλήρωσε την απάντηση!',
'aiThinking': 'Η Lily σκέφτεται...',
'guideAwakenSuccess': 'Τέλεια! Η Lily είναι ξύπνια - ζητήστε της βοήθεια.',
'confirmInput': 'Επιβεβαίωση εισόδου',
'guideClickSendPrefix': 'Πατήστε αποστολή, ',
// AI 引导步骤
'guideWeatherStart': 'Πείτε στη Lily: "Τι καιρό κάνει σήμερα;"',
'guideWeatherInput': 'Τι καιρό κάνει σήμερα;',
'guideWeatherSend': 'Η Lily θα αναφέρει τον καιρό σε πραγματικό χρόνο',
'guideWeatherEnd':
'Η Lily μπορεί να αναφέρει τον καιρό ζωντανά - δοκιμάστε άλλες εντολές',
'guideMusicStart': 'Πείτε στη Lily: "Παίξε λίγη ροκ μουσική"',
'guideMusicInput': 'Παίξε λίγη ροκ μουσική',
'guideMusicSend': 'Η Lily θα βρει μουσική για εσάς',
'guideMusicEnd': 'Η Lily βρήκε μουσική - δοκιμάστε άλλες εντολές',
'guideNavStart': 'Πείτε στη Lily: "Πλοήγησέ με στο Αεροδρόμιο Shenzhen"',
'guideNavInput': 'Πλοήγησέ με στο Αεροδρόμιο Shenzhen',
'guideNavSend': 'Η Lily θα σχεδιάσει τη διαδρομή',
'guideNavEnd': 'Η πλοήγηση ορίστηκε - δοκιμάστε άλλες εντολές',
'guideMeetingStart':
'Πείτε στη Lily: "Δημιούργησε υπενθύμιση συνάντησης για αύριο στις 3μμ"',
'guideMeetingInput': 'Δημιούργησε υπενθύμιση συνάντησης για αύριο στις 3μμ',
'guideMeetingSend': 'Η Lily θα δημιουργήσει μια υπενθύμιση συνάντησης',
'guideMeetingEnd': 'Η υπενθύμιση δημιουργήθηκε - δοκιμάστε άλλες εντολές',
'guidePhoneStart': 'Πείτε στη Lily: "Πάρε τη μαμά"',
'guidePhoneInput': 'Πάρε τη μαμά',
'guidePhoneSend': 'Η Lily θα πραγματοποιήσει την κλήση',
'guidePhoneEnd': 'Η κλήση πραγματοποιήθηκε - δοκιμάστε άλλες εντολές',
'guideSmsStart':
'Πείτε στη Lily: "Στείλε μήνυμα στον μπαμπά: Θα είμαι σπίτι για φαγητό"',
'guideSmsInput': 'Μήνυμα στον μπαμπά: Θα είμαι σπίτι για φαγητό',
'guideSmsSend': 'Η Lily θα στείλει το μήνυμα',
'guideSmsEnd': 'Το μήνυμα στάλθηκε - ο φωνητικός έλεγχος είναι βολικός',
// 商务会议助手页
"startMeeting": "Έναρξη συνάντησης",
@ -201,13 +418,248 @@ const Map<String, String> elGR = {
'aiSummary': 'Περίληψη AI',
'meetingTranscript': 'Απομαγνητοφώνηση συνάντησης',
// Meeting模块 - 导航和基础功能
'files': 'Αρχεία',
'mine': 'Δικά μου',
'connect': 'Σύνδεση',
'allFiles': 'Όλα τα αρχεία',
'searchInAllFiles': 'Αναζήτηση σε όλα τα αρχεία',
'from': 'Από',
'sortBy': 'Ταξινόμηση κατά',
'creationTime': 'Χρόνος δημιουργίας',
'bluetoothConnection': 'Σύνδεση Bluetooth',
'meetingReconnect': 'Επανασύνδεση',
'searching': 'Αναζήτηση...',
'searchFailed':
'Η αναζήτηση απέτυχε, ελέγξτε αν το Bluetooth είναι ενεργοποιημένο',
'aiPenNotFound': 'Η συσκευή AI PEN δεν βρέθηκε',
'connectedToAiPen': 'Συνδεδεμένο με συσκευή AI PEN',
'checkingNewFiles': 'Έλεγχος για νέα αρχεία προς εισαγωγή',
'startingWifi': 'Εκκίνηση Wi-Fi...',
'newFilesDetected': 'Εντοπίστηκαν νέα αρχεία, προετοιμασία εισαγωγής',
'noNewFiles': 'Δεν υπάρχουν νέα αρχεία για εισαγωγή',
'connectingWifi': 'Σύνδεση σε Wi-Fi...',
'wifiConnected': 'Επιτυχής σύνδεση Wi-Fi',
'downloadingFiles': 'Λήψη αρχείων...',
'downloadingFileProgress': 'Σύνολο {total} αρχεία, λήψη αρχείου {current}',
'downloadComplete': 'Λήψη ολοκληρώθηκε',
'downloadCompleteInfo':
'Λήψη ολοκληρώθηκε, {count} αρχεία συνολικά, αυτόματη επιστροφή σε 2 δευτερόλεπτα',
// Meeting模块 - 录音功能
'startRecording': 'Έναρξη εγγραφής',
'liveRecording': 'Ζωντανή εγγραφή',
'audioVideoRecording': 'Εγγραφή ήχου/βίντεο',
'callRecording': 'Εγγραφή κλήσης',
'importAudio': 'Εισαγωγή ήχου',
'transcribing': 'Απομαγνητοφώνηση...',
'summarizing': 'Δημιουργία περίληψης...',
'analyzing': 'Ανάλυση...',
'summaryComplete': 'Περίληψη ολοκληρώθηκε',
//'generating': '正在生成...',
'generate': 'Δημιουργία',
'overview': 'Επισκόπηση',
'transcription': 'Απομαγνητοφώνηση',
'summary': 'Περίληψη',
'mindMap': 'Χάρτης μυαλού',
'editSpeaker': 'Επεξεργασία',
'nameSpeaker': 'Ονομασία ομιλητή',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Αρχεία απομαγνητοφώνησης',
'templateCommunity': 'Κοινότητα προτύπων',
'comingSoon': 'Σύντομα κοντά σας',
'integration': 'Ενσωμάτωση',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Ενεργοποιημένο',
'disabled': 'Απενεργοποιημένο',
'myVoitransDevice': 'Η συσκευή μου VOITRANS',
'helpAndFeedback': 'Βοήθεια & Σχόλια',
'aboutVoitrans': 'Σχετικά με το VOITRANS',
'meetingDays': 'Ημέρες',
'meetingHours': 'Ώρες',
'voitransAiMember': 'Μέλος Voitrans AI',
'unlockStarterMember': 'Ξεκλείδωμα Starter μέλους',
'bindDeviceToActivate':
'Συνδέστε συσκευή Voitrans για ενεργοποίηση Starter μέλους',
'unlockNow': 'Ξεκλείδωμα τώρα',
// Meeting模块 - 会员功能
'comparison': 'Σύγκριση',
'detailedInfo': 'Λεπτομερείς πληροφορίες',
'monthlyTranscriptionTime': 'Μηνιαίος χρόνος απομαγνητοφώνησης',
'unlimited': 'Απεριόριστο',
'professionalTemplates': 'Επαγγελματικά πρότυπα',
'limited': 'Περιορισμένο',
'fullTemplates': 'Πλήρη πρότυπα',
'professionalTerms': 'Επαγγελματικοί όροι',
'customTemplates': 'Προσαρμοσμένα πρότυπα',
'visualMindMap': 'Οπτικός χάρτης μυαλού',
'speakerIdentification': 'Αναγνώριση ομιλητή',
'aiVoiceEnhancement': 'Βελτίωση φωνής AI',
'audioImport': 'Εισαγωγή ήχου',
'multipleExportFormats': 'Πολλαπλές μορφές εξαγωγής',
'professionalSummaryTemplates': 'Επαγγελματικά πρότυπα περίληψης',
'professionalTemplateDesc':
'Επαγγελματικός σχεδιασμός προτύπων για βελτίωση της αποδοτικότητας εργασίας. Προσαρμοσμένο στις ανάγκες της βιομηχανίας.',
'customTemplateDesc':
'Μπορείτε να προσαρμόσετε τις οδηγίες περίληψης σύμφωνα με τις ανάγκες σας και να τις χρησιμοποιήσετε για τη δημιουργία των απαιτούμενων περιλήψεων.',
'askAiDesc':
'Έξυπνη εξαγωγή βαθύτερων πληροφοριών από εγγραφές, δημιουργία πινάκων δεδομένων, συμπερασμάτων συζητήσεων, λιστών To-Do, email αναφοράς και άλλου μορφοποιημένου περιεχομένου με ένα κλικ.',
'visualMindMapDesc':
'Πέρα από περιλήψεις - οργανώστε και οπτικοποιήστε βασικά σημεία με χάρτες μυαλού για αποτελεσματικότερη κατανόηση του πλήρους κειμένου.',
'templateCommunityDesc':
'Ανακαλύψτε, μοιραστείτε και εμπνευστείτε από τη βιβλιοθήκη προτύπων που δημιουργήθηκε από χρήστες.',
'speakerIdentificationDesc':
'Η απομαγνητοφώνηση ήχου θα υποστηρίζει αναγνώριση ομιλητή, αποκαθιστώντας πιο διαισθητικά το περιεχόμενο συναντήσεων ή τηλεφωνικών κλήσεων. Ταυτόχρονα, η περίληψη θα είναι πιο ακριβής.',
'privateCloudSyncDesc':
'Οι εγγραφές και οι απομαγνητοφωνήσεις σας θα αποθηκεύονται με ασφάλεια σε αποκλειστικούς διακομιστές cloud, με πλήρη κρυπτογράφηση κατά τη μεταφόρτωση και λήψη για διασφάλιση απορρήτου και ασφάλειας.',
'aiVoiceEnhancementDesc':
'Η βελτίωση φωνής AI υποστηρίζει πολλαπλές ρυθμίσεις μείωσης θορύβου, εξαλείφει έξυπνα τον θόρυβο περιβάλλοντος, ενισχύει την καθαρότητα της φωνής και βελτιώνει την ποιότητα αναπαραγωγής ήχου.',
'audioImportDesc':
'Εύκολη εισαγωγή αρχείων ήχου από τοπικές ή τρίτες εφαρμογές, όπως φωνητικά σημειώματα, Google Drive, κ.λπ.',
'multipleExportFormatsDesc':
'Εξάγετε τις ηχογραφήσεις σας, το κείμενο απομαγνητοφώνησης και τις περιλήψεις σε διάφορες μορφές (TXT, PDF, JPEG) για να καλύψετε τις ανάγκες σας.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Αναβάθμιση συνδρομής',
'yearlySubscription': 'Ετήσια συνδρομή',
'monthlySubscription': 'Μηνιαία συνδρομή',
'proMonthly': 'Pro ¥60/μήνα',
'proMonthlyDesc':
'Δωρεάν δοκιμή 7 ημερών, στη συνέχεια ¥800/έτος. Ακύρωση οποτεδήποτε πριν τη λήξη της δοκιμής.',
'sevenDayTrial': '7 ημέρες δωρεάν δοκιμή',
'unlimitedMonthly': 'Απεριόριστο ¥120/μήνα',
'unlimitedMonthlyDesc':
'Δωρεάν δοκιμή 7 ημερών, στη συνέχεια ¥1600/έτος. Ακύρωση οποτεδήποτε πριν τη λήξη της δοκιμής.',
'trialNote':
'*Δωρεάν δοκιμή για 7 ημέρες, στη συνέχεια ετήσια χρέωση, ακύρωση οποτεδήποτε.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/μήνα',
'subscribe': 'Εγγραφή',
'unlimitedPrice': 'Απεριόριστο ¥198',
'unlimitedMonthlyPrice': '¥198/μήνα',
'upgradeNote':
'*Μετά την αναβάθμιση της συνδρομής, οι υπολειπόμενες ημέρες της αρχικής συνδρομής θα υπολογιστούν αυτόματα και θα επιστραφούν στον λογαριασμό πληρωμής σας',
'buyMoreTranscriptionTime': 'Αγορά επιπλέον χρόνου απομαγνητοφώνησης',
'sixThousandMinutes': '6.000 λεπτά',
'threeThousandMinutes': '3.000 λεπτά',
'sixHundredMinutes': '600 λεπτά',
'oneHundredTwentyMinutes': '120 λεπτά',
'validityPeriod': '*Περίοδος ισχύος: ',
'validityNote':
'Ενεργοποιείται αμέσως μετά την αγορά, ισχύει για 2 χρόνια μετά την ενεργοποίηση.',
'purchase': 'Αγορά',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Επιλογή προτύπου περίληψης',
'useThisTemplate': 'Χρήση αυτού του προτύπου',
'lastUsed': 'Τελευταία χρήση',
'viewAll': 'Προβολή όλων',
'recordingLanguage': 'Γλώσσα εγγραφής',
'chineseSimplified': 'Κινέζικα (Απλοποιημένα)',
'meetingGenerateNow': 'Δημιουργία τώρα',
'keyEventsAnalyzed': 'Αναλύθηκαν {count} βασικά γεγονότα.',
'aiAnalysisDesc':
'Η ανάλυση AI εντοπίζει βασικά γεγονότα στις εγγραφές, επιτρέποντάς σας να επιλέξετε σημαντικά γεγονότα για δημιουργία AI.',
// Meeting模块 - 文件操作和状态
'importing': 'Εισαγωγή...',
'batchImporting': 'Μαζική εισαγωγή...',
'importingLocalRecordings': 'Εισαγωγή τοπικών εγγραφών...',
'importFailed': 'Αποτυχία εισαγωγής αρχείου: {filePath}, σφάλμα: {error}',
'importSuccess': 'Επιτυχής εισαγωγή {count} τοπικών εγγραφών',
'importError': 'Αποτυχία εισαγωγής: {error}',
'pleaseSelectAudioFile': 'Παρακαλώ επιλέξτε αρχείο ήχου',
'shareAudio': 'Κοινοποίηση ήχου συνάντησης',
'shareComplete': 'Η κοινοποίηση ολοκληρώθηκε!',
'shareFailed': 'Αποτυχία κοινοποίησης: {error}',
'fileProcessingFailed':
'Αποτυχία επεξεργασίας αρχείου: {filePath}, σφάλμα: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Άγνωστη γλώσσα',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Αποθήκευση',
'meetingStoragePermissionExplanation':
'Χρειαζόμαστε πρόσβαση στα δικαιώματα αποθήκευσης για να μπορείτε να επιλέξετε και να ανεβάσετε αρχεία ήχου.',
'meetingStoragePermissionPermanentDenial':
'Εντοπίστηκε ότι έχετε αρνηθεί μόνιμα το δικαίωμα αποθήκευσης. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, παρακαλώ μεταβείτε στις ρυθμίσεις εφαρμογής για να ενεργοποιήσετε χειροκίνητα το δικαίωμα αποθήκευσης.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Κοινοποίηση χάρτη μυαλού',
'shareSuccess': 'Επιτυχής κοινοποίηση',
// Meeting模块 - AI相关
'askAI': 'Ρωτήστε το AI ...',
'askAIPrompt': 'Πώς μπορώ να σας βοηθήσω σήμερα;',
'continueAsk': 'Συνεχίστε να ρωτάτε',
'todoList': 'Λίστα εργασιών',
'extractConclusion': 'Εξαγωγή συμπεράσματος',
'generateKeyIndicators': 'Δημιουργία βασικών δεικτών',
// Meeting模块 - 更多操作相关
'reSummarize': 'Επανασύνοψη',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Γλώσσα εγγραφής',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Καντονέζικα',
'sichuan': 'Διάλεκτος Σετσουάν',
'shanghai': 'Διάλεκτος Σαγκάης',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Κοινοποίηση συνδέσμου',
'copyTranscript': 'Αντιγραφή απομαγνητοφώνησης',
'copySummary': 'Αντιγραφή περίληψης',
'exportAudio': 'Εξαγωγή ήχου',
'exportTranscript': 'Εξαγωγή απομαγνητοφώνησης',
'shareMeetingAudio': 'Κοινοποίηση ήχου συνάντησης',
'exportSummary': 'Εξαγωγή περίληψης',
'exportAs': 'Εξαγωγή ως',
'exportingPDF': 'Εξαγωγή PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Ονομασία τρέχοντος ομιλητή',
'recentlyUsedNames': 'Πρόσφατα χρησιμοποιημένα ονόματα',
'applyToCurrentParagraph': 'Εφαρμογή στην τρέχουσα παράγραφο',
'totalTime': 'Συνολικός χρόνος',
'summarySpeakerWillBeUpdatedAutomatically':
'Οι ομιλητές της περίληψης θα ενημερωθούν αυτόματα',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Συγχρονισμός στο cloud',
'syncToCloudTip':
'Συγχρονίστε αυτόματα τις εγγραφές σας στο cloud, μπορείτε να αναπαράγετε, να διαχειριστείτε και να μοιραστείτε εγγραφές μέσω οποιασδήποτε εφαρμογής VOITRANS ή VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Συγχρονισμός VOITRANS APP',
'transcriptionRecord': 'Αρχείο απομαγνητοφώνησης',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Ημερομηνία & Ώρα',
'location': 'Τοποθεσία',
'attendees': 'Παρευρισκόμενοι',
'inputLocation': 'Εισαγωγή τοποθεσίας',
'inputAttendees': 'Εισαγωγή παρευρισκομένων',
// 设置页
"systemSettings": "Ρυθμίσεις συστήματος", //系统设置
"vipRecharge": "Περιορέωση VIP μέλους", //会员充值
"aiRecharge": "Premium μέλος", //AI充值
"translationRecharge": "Περιορέωση μετάφρασης", //翻译充值
"meetingAssistantRecharge": "Περιορέωση βοηθού συνάντησης", //会议助手充值
"cloudSync": "Περιορέωση συγχρονισμού στο cloud", //云端同步
"systemSettings": "Ρυθμίσεις συστήματος",
"vipRecharge": "Περιορέωση VIP μέλους",
"aiRecharge": "Premium μέλος",
"translationRecharge": "Περιορέωση μετάφρασης",
"meetingAssistantRecharge": "Περιορέωση βοηθού συνάντησης",
"cloudSync": "Περιορέωση συγχρονισμού στο cloud",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Συνδεδεμένη συσκευή:",
"accountId": "ID λογαριασμού:",
"systemSetting": "Ρυθμίσεις συστήματος",
@ -244,12 +696,10 @@ const Map<String, String> elGR = {
'selecttimbre': 'Επιλέξτε τόνο φωνής',
'pleaseRead': 'Παρακαλώ διαβάστε',
'completeRecording': 'Ολοκλήρωση εγγραφής',
"firmwareUpgrade": "Αναβάθμιση firmware", // 固件升级
"bleHeadsetFirmwareUpgrade":
"Αναβάθμιση firmware ακουστικών BLE", // BLE耳机固件版本升级
"deviceManagement": "Διαχείριση συσκευών", // 设备管理
"manageConnectedDevices":
"Διαχείριση συνδεδεμένων συσκευών Bluetooth", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "Αναβάθμιση firmware",
"bleHeadsetFirmwareUpgrade": "Αναβάθμιση firmware ακουστικών BLE",
"deviceManagement": "Διαχείριση συσκευών",
"manageConnectedDevices": "Διαχείριση συνδεδεμένων συσκευών Bluetooth",
//设置setting_controller
// 版本更新相关
@ -258,11 +708,10 @@ const Map<String, String> elGR = {
'networkErrorRetry': 'Σφάλμα δικτύου, δοκιμάστε ξανά αργότερα',
// 设备管理相关
'clearPairedDevices': 'Εκκαθάριση συζευγμένων συσκευών',
'clearPairedDevicesConfirm':
'Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλες τις συζευγμένες συσκευές;',
'clearPairedDevicesSuccess': 'Επιτυχής εκκαθάριση συζευγμένων συσκευών',
'clearPairedDevicesFailed': 'Αποτυχία εκκαθάρισης συζευγμένων συσκευών',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Φωνητική συνομιλία σε πραγματικό χρόνο",
@ -271,11 +720,20 @@ const Map<String, String> elGR = {
"loading": "Φόρτωση...",
//设备管理页面
"earphone": "Ακουστικό",
"voicerecorder": "Συσκευή εγγραφής φωνής",
"notBound": "Μη συνδεδεμένο",
"deviceNotBoundYet": "Καμία συσκευή δεν έχει συνδεθεί ακόμα",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Αποσύνδεση",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -304,6 +762,20 @@ const Map<String, String> elGR = {
"loadMoreMessages": "Φόρτωση περισσότερων μηνυμάτων...",
"loadFailedClickRetry": "Αποτυχία φόρτωσης, κάντε κλικ για επανάληψη",
"swipeUpForMore": "Σύρετε προς τα πάνω για περισσότερα",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Γεια σας! Είμαι ο **Lily**, μπορώ να σας βοηθήσω με:\n\n'
@ -338,7 +810,7 @@ const Map<String, String> elGR = {
'submitFailed': 'Αποτυχία υποβολής',
'reportSubmitted':
'Η αναφορά υποβλήθηκε, θα την επεξεργαστούμε το συντομότερο δυνατό',
//'networkError': 'Σφάλμα δικτύου, δοκιμάστε ξανά αργότερα',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Επιβλαβές/μη ασφαλές',
'pornographicVulgar': 'Πορνογραφικό/χυδαίο',
'misleadingAttack': 'Παραπλανητική επίθεση',
@ -348,7 +820,7 @@ const Map<String, String> elGR = {
'other': 'Άλλο',
'reportDescriptionHint':
'Θέλουμε να γνωρίζουμε τον λόγο της αναφοράς σας, μπορείτε να περιγράψετε το πρόβλημα που αντιμετωπίσατε.',
'submit': 'Υποβολή',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Δημιουργήθηκε από AI',
@ -403,6 +875,17 @@ const Map<String, String> elGR = {
"friday": "Παρασκευή",
"saturday": "Σάββατο",
"sunday": "Κυριακή",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Ηλιόλουστος",
"partlyCloudy": "Μερικώς συννεφιασμένος",
@ -439,6 +922,8 @@ const Map<String, String> elGR = {
'deleteAccount': 'Διαγραφή λογαριασμού',
'deleteAccountTips':
'Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τον λογαριασμό σας; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -459,8 +944,8 @@ const Map<String, String> elGR = {
'Εσωτερικό σφάλμα διακομιστή, δοκιμάστε ξανά αργότερα',
// Profile 用户交互
//'error': 'Σφάλμα',
//'success': 'Επιτυχία',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Αποτυχία συμπίεσης εικόνας',
'avatarUpdateFailed': 'Αποτυχία ενημέρωσης avatar',
'usernameCannotBeEmpty': 'Το όνομα χρήστη δεν μπορεί να είναι κενό',
@ -489,16 +974,27 @@ const Map<String, String> elGR = {
// 权限管理页面
'getPermissionStatusFailed': 'Αποτυχία λήψης κατάστασης δικαιωμάτων',
'communicationPermissions': 'Δικαιώματα επικοινωνίας',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Δικαιώματα ημερολογίου',
'locationPermissions': 'Δικαιώματα τοποθεσίας',
'phone': 'Τηλέφωνο',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Εγγραφή ημερολογίου',
'calendarFullAccess': 'Πλήρης πρόσβαση ημερολογίου',
'locationInfo': 'Πληροφορίες τοποθεσίας',
'phonePermissionDesc':
'Χρησιμοποιείται για τη λειτουργία τηλεφωνικών κλήσεων',
'smsPermissionDesc': 'Χρησιμοποιείται για τη λειτουργία αποστολής SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Χρησιμοποιείται για τη δημιουργία γεγονότων και υπενθυμίσεων ημερολογίου',
'calendarFullAccessPermissionDesc':
@ -518,18 +1014,80 @@ const Map<String, String> elGR = {
'Η λειτουργία τηλεφωνικών κλήσεων χρειάζεται δικαίωμα τηλεφώνου',
'smsPermissionDetailDesc':
'Η λειτουργία αποστολής SMS χρειάζεται δικαίωμα SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Η δημιουργία γεγονότων ημερολογίου χρειάζεται δικαίωμα εγγραφής ημερολογίου',
'calendarFullAccessPermissionDetailDesc':
'Η διαχείριση γεγονότων ημερολογίου χρειάζεται πλήρες δικαίωμα ημερολογίου',
'locationPermissionDetailDesc':
'Η λήψη πληροφοριών τοποθεσίας χρειάζεται δικαίωμα τοποθεσίας',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Η εφαρμογή χρειάζεται αυτό το δικαίωμα για να παρέχει πλήρη λειτουργικότητα',
'permanentDenialText':
'Έχετε αρνηθεί μόνιμα το δικαίωμα {permission}, μεταβείτε στις ρυθμίσεις εφαρμογής για να το ενεργοποιήσετε',
'goToSettings': 'Μετάβαση στις ρυθμίσεις',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Βρέθηκε νέα έκδοση', // 版本更新对话框标题
'remindLater': 'Υπενθύμιση αργότερα', // 稍后提醒按钮
@ -648,8 +1206,23 @@ const Map<String, String> elGR = {
"东帝汶": "Ανατολικό Τιμόρ",
"斐济": "Φίτζι",
"所罗门群岛": "Νησιά Σολομώντα",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Ιστορικό μεταφράσεων",
"enableRecording": "Ενεργοποίηση εγγραφής",
@ -658,9 +1231,24 @@ const Map<String, String> elGR = {
"phoneUser": "Χρήστης τηλεφώνου",
"selectSourceLanguage": "Επιλέξτε γλώσσα προέλευσης",
"selectTargetLanguage": "Επιλέξτε γλώσσα προορισμού",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Δεν υπάρχει ιστορικό μεταφράσεων",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Εκκαθάριση ιστορικού",
"clearHistoryConfirm":
"Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλο το ιστορικό μεταφράσεων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.",
@ -669,7 +1257,58 @@ const Map<String, String> elGR = {
"deleteSessionConfirm":
"Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εγγραφές μεταφράσεων για αυτή τη συνεδρία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Μετάφραση αρχείων ήχου",
"noAudioFiles": "Δεν υπάρχουν αρχεία ήχου",
"calculating": "Υπολογισμός...",
@ -715,7 +1354,7 @@ const Map<String, String> elGR = {
"autoInputCode": "Αυτόματη εισαγωγή κωδικού",
"skipBinding": "Παράλειψη σύνδεσης",
"rescan": "Επανάληψη σάρωσης",
"skip": "Παράλειψη",
"verifyingDevice": "Επαλήθευση συσκευής...",
"confirmBinding": "Επιβεβαίωση σύνδεσης",
"associatingDevice": "Συσχέτιση συσκευής...",
@ -747,17 +1386,17 @@ const Map<String, String> elGR = {
"pairingFailedRetry": "Αποτυχία σύζευξης, δοκιμάστε ξανά",
// 配对控制器相关
//'connectDevice': 'Σύνδεση συσκευής',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Ενεργοποιήστε το Bluetooth',
'deviceDisconnected': 'Η συσκευή αποσυνδέθηκε',
'readyToStartPairing': 'Έτοιμο για έναρξη σύζευξης',
'checkingEnvironment': 'Έλεγχος περιβάλλοντος...',
'ensureHeadsetOnAndPairingMode':
'Βεβαιωθείτε ότι τα ακουστικά είναι ενεργοποιημένα και σε λειτουργία σύζευξης',
//'goToBluetoothSettings': 'Μετάβαση στις ρυθμίσεις Bluetooth',
//'verifyingDevice': 'Επαλήθευση συσκευής...',
//'confirmBinding': 'Επιβεβαίωση σύνδεσης',
//'associatingDevice': 'Συσχέτιση συσκευής...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Δημιουργία ασφαλούς σύνδεσης...',
'needManualBindingAuthCode':
'Απαιτείται χειροκίνητος κωδικός εξουσιοδότησης σύνδεσης...',
@ -780,6 +1419,19 @@ const Map<String, String> elGR = {
'deviceAuthorizationFailedCheckCode':
'Αποτυχία εξουσιοδότησης συσκευής, ελέγξτε τον κωδικό εξουσιοδότησης',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Σχόλια χρήστη",
'feedbackInfo': 'Παρέχετε σχόλια ή προτάσεις',
@ -788,7 +1440,7 @@ const Map<String, String> elGR = {
'feedbackRequired': 'Εισάγετε περιεχόμενο σχολίων',
'contactInfo': 'Στοιχεία επικοινωνίας',
'contactHint': 'Email/τηλέφωνο, για να μπορούμε να επικοινωνήσουμε μαζί σας',
//'submit': 'Υποβολή', // 已存在,使用现有键
'submit': 'Υποβολή',
'feedbackSubmitSuccess': 'Επιτυχής υποβολή σχολίων, ευχαριστούμε!',
'feedbackSubmitFailed': 'Αποτυχία υποβολής σχολίων, δοκιμάστε ξανά αργότερα',
@ -806,6 +1458,13 @@ const Map<String, String> elGR = {
"connectionFailed": "Αποτυχία σύνδεσης",
"retryConnection": "Επανάληψη σύνδεσης",
"ota_updateNow": "Ενημέρωση τώρα",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Διατηρήστε τη συσκευή συνδεδεμένη, μην κλείσετε την εφαρμογή",
"doNotDisconnect": "Μην αποσυνδέσετε",
@ -861,4 +1520,23 @@ const Map<String, String> elGR = {
"乌尔都语": "Ουρντού",
"波斯语": "Περσικά",
"斯瓦希里语": "Σουαχίλι",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> enUS = {
"spanish": "Spanish",
"portuguese": "Portuguese",
"traditionalChinese": "Traditional Chinese",
"traditionalChineseHK": "Traditional Chinese (Hong Kong)",
"japanese": "Japanese",
"korean": "Korean",
"french": "French",
@ -989,6 +990,12 @@ const Map<String, String> enUS = {
'smsPermissionDetailDesc': 'SMS functionality requires SMS permission',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Creating calendar events requires calendar write permission',
'calendarFullAccessPermissionDetailDesc':
'Managing calendar events requires full calendar permission',
'locationPermissionDetailDesc':
'Getting location information requires location permission',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
@ -1005,12 +1012,6 @@ const Map<String, String> enUS = {
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'calendarWritePermissionDetailDesc':
'Creating calendar events requires calendar write permission',
'calendarFullAccessPermissionDetailDesc':
'Managing calendar events requires full calendar permission',
'locationPermissionDetailDesc':
'Getting location information requires location permission',
'appNeedsPermissionForFullFunction':
'App needs this permission to provide full functionality',
'permanentDenialText':
@ -1030,6 +1031,8 @@ const Map<String, String> enUS = {
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
@ -1196,21 +1199,20 @@ const Map<String, String> enUS = {
// 翻译主页 (translation_view.dart)
"translationHistory": "Translation History",
"historyRecords": "History Records",
"enableRecording": "Enable Recording",
"viewAudioFiles": "View Audio Files",
"headsetUser": "Headset User",
"phoneUser": "Phone User",
"selectSourceLanguage": "Select Source Language",
"selectTargetLanguage": "Select Target Language",
"me": "Me", //我
"counterPart": "Counterpart", //对方
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"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", // 自动检测
// Text translation & language detection
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
@ -1219,6 +1221,7 @@ const Map<String, String> enUS = {
// 翻译历史页
"noTranslationHistory": "No translation history",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Clear History",
"clearHistoryConfirm":
@ -1428,6 +1431,13 @@ const Map<String, String> enUS = {
"connectionFailed": "Connection Failed",
"retryConnection": "Retry Connection",
"ota_updateNow": "Update Now",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Please keep device connected, do not close the app",
"doNotDisconnect": "Do not disconnect",

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

@ -33,6 +33,7 @@ const Map<String, String> esES = {
"spanish": "Español",
"portuguese": "Portugués",
"traditionalChinese": "Chino tradicional",
"traditionalChineseHK": "Chino tradicional (Hong Kong)",
"japanese": "Japonés",
"korean": "Coreano",
"french": "Francés",
@ -102,8 +103,8 @@ const Map<String, String> esES = {
"loginDeclaration": "Declaración de Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Bienvenido a Voitrans, lee cuidadosamente", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "Política de privacidad", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "Acuerdo de usuario", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". Al hacer clic en 'Acepto y continúo' indicas que has leído completamente y aceptas los acuerdos anteriores. Al hacer clic en 'No acepto' se cerrará la aplicación.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "No acepto", // 不同意
@ -188,6 +189,209 @@ const Map<String, String> esES = {
"usageStats": "Estadísticas de uso",
"usageStatsInfo": "Consulte las estadísticas de uso de la aplicación",
"scene": "Escenarios",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Omitir",
'next': 'Next',
'sayLilyHint': "Say \"Lily Lily\" to the mic",
'imHere': "I’m here~",
'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.",
'aiReplyCompleted': "Lily has finished the reply!",
'aiThinking': "Lily is thinking…",
'guideAwakenSuccess': "Great! Lily is awake—ask it to help.",
'confirmInput': "Confirm Input",
'guideClickSendPrefix': "Tap send, ",
// AI 引导步骤
'guideWeatherStart': "Tell Lily: “What’s the weather today?”",
'guideWeatherInput': "What’s the weather today?",
'guideWeatherSend': "Lily will report the weather in real time",
'guideWeatherEnd': "Lily can report weather live—try other commands",
'guideMusicStart': "Tell Lily: “Play some rock music”",
'guideMusicInput': "Play some rock music",
'guideMusicSend': "Lily will find music for you",
'guideMusicEnd': "Lily found music—try other commands",
'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”",
'guideNavInput': "Navigate to Shenzhen Airport",
'guideNavSend': "Lily will plan the route",
'guideNavEnd': "Navigation set—try other commands",
'guideMeetingStart':
"Tell Lily: “Create a meeting reminder for 3pm tomorrow”",
'guideMeetingInput': "Create a meeting reminder for 3pm tomorrow",
'guideMeetingSend': "Lily will create a meeting reminder",
'guideMeetingEnd': "Reminder created—try other commands",
'guidePhoneStart': "Tell Lily: “Call Mom”",
'guidePhoneInput': "Call Mom",
'guidePhoneSend': "Lily will make the call",
'guidePhoneEnd': "Call placed—try other commands",
'guideSmsStart': "Tell Lily: “Send Dad a text: I’ll be home for dinner”",
'guideSmsInput': "Text Dad: I’ll be home for dinner",
'guideSmsSend': "Lily will send the message",
'guideSmsEnd': "Message sent—voice control is convenient",
// 商务会议助手页
"startMeeting": "Iniciar reunión",
@ -202,13 +406,244 @@ const Map<String, String> esES = {
'aiSummary': 'Resumen de IA',
'meetingTranscript': 'Transcripción de reunión',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Configuración del sistema", //系统设置
"vipRecharge": "Recarga de VIP", //会员充值
"aiRecharge": "Miembro premium", //AI充值
"translationRecharge": "Recarga de traducción", //翻译充值
"meetingAssistantRecharge": "Recarga de asistente de reunión", //会议助手充值
"cloudSync": "Recarga de sincronización en la nube", //云端同步
"systemSettings": "Configuración del sistema",
"vipRecharge": "Recarga de VIP",
"aiRecharge": "Miembro premium",
"translationRecharge": "Recarga de traducción",
"meetingAssistantRecharge": "Recarga de asistente de reunión",
"cloudSync": "Recarga de sincronización en la nube",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Dispositivo conectado:",
"accountId": "ID de cuenta:",
"systemSetting": "Configuración del sistema",
@ -246,12 +681,10 @@ const Map<String, String> esES = {
'selecttimbre': 'Seleccionar timbre',
'pleaseRead': 'Por favor lee',
'completeRecording': 'Completar grabación',
"firmwareUpgrade": "Actualización de firmware", // 固件升级
"bleHeadsetFirmwareUpgrade":
"Actualización de firmware de auriculares BLE", // BLE耳机固件版本升级
"deviceManagement": "Gestión de dispositivos", // 设备管理
"manageConnectedDevices":
"Gestionar dispositivos Bluetooth conectados", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "Actualización de firmware",
"bleHeadsetFirmwareUpgrade": "Actualización de firmware de auriculares BLE",
"deviceManagement": "Gestión de dispositivos",
"manageConnectedDevices": "Gestionar dispositivos Bluetooth conectados",
//设置setting_controller
// 版本更新相关
@ -260,11 +693,10 @@ const Map<String, String> esES = {
'networkErrorRetry': 'Error de red, inténtalo de nuevo más tarde',
// 设备管理相关
'clearPairedDevices': 'Limpiar dispositivos emparejados',
'clearPairedDevicesConfirm':
'¿Estás seguro de que quieres limpiar todos los dispositivos emparejados?',
'clearPairedDevicesSuccess': 'Limpieza de dispositivos emparejados exitosa',
'clearPairedDevicesFailed': 'Fallo al limpiar dispositivos emparejados',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Chat de voz en tiempo real",
@ -273,11 +705,20 @@ const Map<String, String> esES = {
"loading": "Cargando...",
//设备管理页面
"earphone": "Auricular",
"voicerecorder": "Grabadora de voz",
"notBound": "No vinculado",
"deviceNotBoundYet": "Ningún dispositivo vinculado aún",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Desvincular",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -306,6 +747,20 @@ const Map<String, String> esES = {
"loadMoreMessages": "Cargar más mensajes...",
"loadFailedClickRetry": "Carga fallida, haz clic para reintentar",
"swipeUpForMore": "Desliza hacia arriba para más",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': '¡Hola! Soy **Lily**, puedo ayudarte con:\n\n'
@ -339,7 +794,7 @@ const Map<String, String> esES = {
'submitSuccess': 'Enviado exitosamente',
'submitFailed': 'Fallo al enviar',
'reportSubmitted': 'Reporte enviado, lo procesaremos lo antes posible',
//'networkError': 'Error de red, inténtalo de nuevo más tarde',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Dañino/inseguro',
'pornographicVulgar': 'Pornográfico/vulgar',
'misleadingAttack': 'Ataque engañoso',
@ -349,7 +804,7 @@ const Map<String, String> esES = {
'other': 'Otro',
'reportDescriptionHint':
'Queremos conocer la razón de tu reporte, puedes describir el problema que encontraste.',
'submit': 'Enviar',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Generado por IA',
@ -404,6 +859,17 @@ const Map<String, String> esES = {
"friday": "Viernes",
"saturday": "Sábado",
"sunday": "Domingo",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Soleado",
"partlyCloudy": "Parcialmente nublado",
@ -440,6 +906,8 @@ const Map<String, String> esES = {
'deleteAccount': 'Eliminar cuenta',
'deleteAccountTips':
'¿Estás seguro de que quieres eliminar permanentemente tu cuenta? Esta acción no se puede deshacer',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -460,8 +928,8 @@ const Map<String, String> esES = {
'Error interno del servidor, inténtalo de nuevo más tarde',
// Profile 用户交互
//'error': 'Error',
//'success': 'Éxito',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Fallo en la compresión de imagen',
'avatarUpdateFailed': 'Fallo en la actualización del avatar',
'usernameCannotBeEmpty': 'El nombre de usuario no puede estar vacío',
@ -492,15 +960,26 @@ const Map<String, String> esES = {
// 权限管理页面
'getPermissionStatusFailed': 'Fallo al obtener estado de permisos',
'communicationPermissions': 'Permisos de comunicación',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Permisos de calendario',
'locationPermissions': 'Permisos de ubicación',
'phone': 'Teléfono',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Escritura de calendario',
'calendarFullAccess': 'Acceso completo al calendario',
'locationInfo': 'Información de ubicación',
'phonePermissionDesc': 'Se usa para la función de llamadas telefónicas',
'smsPermissionDesc': 'Se usa para la función de envío de SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Se usa para crear eventos y recordatorios del calendario',
'calendarFullAccessPermissionDesc':
@ -520,18 +999,80 @@ const Map<String, String> esES = {
'La función de llamadas telefónicas necesita permiso de teléfono',
'smsPermissionDetailDesc':
'La función de envío de SMS necesita permiso de SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'La creación de eventos del calendario necesita permiso de escritura del calendario',
'calendarFullAccessPermissionDetailDesc':
'La gestión de eventos del calendario necesita permiso completo del calendario',
'locationPermissionDetailDesc':
'Obtener información de ubicación necesita permiso de ubicación',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'La aplicación necesita este permiso para proporcionar funcionalidad completa',
'permanentDenialText':
'Has denegado permanentemente el permiso {permission}, ve a la configuración de la aplicación para habilitarlo',
'goToSettings': 'Ir a configuración',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Nueva versión encontrada', // 版本更新对话框标题
'remindLater': 'Recordar más tarde', // 稍后提醒按钮
@ -650,8 +1191,23 @@ const Map<String, String> esES = {
"东帝汶": "Timor Oriental",
"斐济": "Fiyi",
"所罗门群岛": "Islas Salomón",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Historial de traducción",
"enableRecording": "Habilitar grabación",
@ -660,9 +1216,24 @@ const Map<String, String> esES = {
"phoneUser": "Usuario de teléfono",
"selectSourceLanguage": "Seleccionar idioma origen",
"selectTargetLanguage": "Seleccionar idioma destino",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Sin historial de traducción",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Limpiar historial",
"clearHistoryConfirm":
"¿Estás seguro de que quieres limpiar todo el historial de traducción? Esta operación no se puede deshacer.",
@ -671,7 +1242,58 @@ const Map<String, String> esES = {
"deleteSessionConfirm":
"¿Estás seguro de que quieres eliminar todos los registros de traducción de esta sesión? Esta operación no se puede deshacer.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Traducir archivos de audio",
"noAudioFiles": "Sin archivos de audio",
"calculating": "Calculando...",
@ -717,7 +1339,7 @@ const Map<String, String> esES = {
"autoInputCode": "Entrada automática de código",
"skipBinding": "Omitir vinculación",
"rescan": "Volver a escanear",
"skip": "Omitir",
"verifyingDevice": "Verificando dispositivo...",
"confirmBinding": "Confirmar vinculación",
"associatingDevice": "Asociando dispositivo...",
@ -750,17 +1372,17 @@ const Map<String, String> esES = {
"pairingFailedRetry": "Fallo en el emparejamiento, inténtalo de nuevo",
// 配对控制器相关
//'connectDevice': 'Conectar dispositivo',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Habilita Bluetooth por favor',
'deviceDisconnected': 'Dispositivo desconectado',
'readyToStartPairing': 'Listo para iniciar emparejamiento',
'checkingEnvironment': 'Verificando entorno...',
'ensureHeadsetOnAndPairingMode':
'Asegúrate de que los auriculares estén encendidos y en modo de emparejamiento',
//'goToBluetoothSettings': 'Ir a configuración de Bluetooth',
//'verifyingDevice': 'Verificando dispositivo...',
//'confirmBinding': 'Confirmar vinculación',
//'associatingDevice': 'Asociando dispositivo...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Estableciendo conexión segura...',
'needManualBindingAuthCode':
'Necesita código de autorización de vinculación manual...',
@ -784,6 +1406,19 @@ const Map<String, String> esES = {
'deviceAuthorizationFailedCheckCode':
'Fallo en la autorización del dispositivo, verifica el código de autorización',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Comentarios del usuario",
'feedbackInfo': 'Proporciona comentarios o sugerencias',
@ -792,7 +1427,7 @@ const Map<String, String> esES = {
'feedbackRequired': 'Ingresa contenido de comentarios',
'contactInfo': 'Información de contacto',
'contactHint': 'Email/teléfono, para que podamos contactarte',
//'submit': 'Enviar', // 已存在,使用现有键
'submit': 'Enviar',
'feedbackSubmitSuccess': 'Comentarios enviados exitosamente, ¡gracias!',
'feedbackSubmitFailed':
'Fallo al enviar comentarios, inténtalo de nuevo más tarde',
@ -811,6 +1446,13 @@ const Map<String, String> esES = {
"connectionFailed": "Fallo de conexión",
"retryConnection": "Reintentar conexión",
"ota_updateNow": "Actualizar ahora",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Mantén el dispositivo conectado, no cierres la aplicación",
"doNotDisconnect": "No desconectes",
@ -866,38 +1508,23 @@ const Map<String, String> esES = {
"乌尔都语": "Urdu",
"波斯语": "Persa",
"斯瓦希里语": "Suajili",
// Guide overlay keys (placeholders in English)
"sayLilyHint": "Say \"Lily Lily\" to the mic",
"imHere": "I’m here~",
"guideWelcomeWakeAI": "Welcome to Voitrans! First, wake your AI “Lily”.",
"aiReplyCompleted": "Lily has finished the reply!",
"aiThinking": "Lily is thinking…",
"guideAwakenSuccess": "Great! Lily is awake—ask it to help.",
"confirmInput": "Confirm Input",
"guideClickSendPrefix": "Tap send, ",
"guideWeatherStart": "Tell Lily: “What’s the weather today?”",
"guideWeatherInput": "What’s the weather today?",
"guideWeatherSend": "Lily will report the weather in real time",
"guideWeatherEnd": "Lily can report weather live—try other commands",
"guideMusicStart": "Tell Lily: “Play some rock music”",
"guideMusicInput": "Play some rock music",
"guideMusicSend": "Lily will find music for you",
"guideMusicEnd": "Lily found music—try other commands",
"guideNavStart": "Tell Lily: “Navigate to Shenzhen Airport”",
"guideNavInput": "Navigate to Shenzhen Airport",
"guideNavSend": "Lily will plan the route",
"guideNavEnd": "Navigation set—try other commands",
"guideMeetingStart":
"Tell Lily: “Create a meeting reminder for 3pm tomorrow”",
"guideMeetingInput": "Create a meeting reminder for 3pm tomorrow",
"guideMeetingSend": "Lily will create a meeting reminder",
"guideMeetingEnd": "Reminder created—try other commands",
"guidePhoneStart": "Tell Lily: “Call Mom”",
"guidePhoneInput": "Call Mom",
"guidePhoneSend": "Lily will make the call",
"guidePhoneEnd": "Call placed—try other commands",
"guideSmsStart": "Tell Lily: “Send Dad a text: I’ll be home for dinner”",
"guideSmsInput": "Text Dad: I’ll be home for dinner",
"guideSmsSend": "Lily will send the message",
"guideSmsEnd": "Message sent—voice control is convenient",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> etEE = {
"spanish": "Hispaania",
"portuguese": "Portugali",
"traditionalChinese": "Traditsiooniline hiina",
"traditionalChineseHK": "Traditsiooniline hiina (Hongkong)",
"japanese": "Jaapani",
"korean": "Korea",
"french": "Prantsuse",
@ -102,8 +103,8 @@ const Map<String, String> etEE = {
"loginDeclaration": "Voitrans avaldus", // Voitrans 声明
"welcomeToThisApp":
"Tere tulemast Voitrans'i, loe hoolikalt", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "Privaatsuspoliitika", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "Kasutajaleping", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". Klõpsates 'Nõustun ja sisenen' näitad, et oled täielikult lugenud ja nõustunud ülaltoodud lepingutega. Klõpsates 'Ei nõustu' rakendus sulgub.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Ei nõustu", // 不同意
@ -183,6 +184,209 @@ const Map<String, String> etEE = {
"usageStats": "Kasutamise statistika",
"usageStatsInfo": "Näita sovelluksen kasutamise statistikat",
"scene": "Stsenaariumid",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Jäta vahele",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Alusta koosolekut",
@ -197,13 +401,244 @@ const Map<String, String> etEE = {
'aiSummary': 'AI kokkuvõte',
'meetingTranscript': 'Koosoleku transkriptsioon',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Süsteemi seaded", //系统设置
"vipRecharge": "VIP liige varundus", //会员充值
"aiRecharge": "Premium liige", //AI充值
"translationRecharge": "Tõlke varundus", //翻译充值
"meetingAssistantRecharge": "Koosoleku assistendi varundus", //会议助手充值
"cloudSync": "Pääsyvaraus cloud-synkronointiin", //云端同步
"systemSettings": "Süsteemi seaded",
"vipRecharge": "VIP liige varundus",
"aiRecharge": "Premium liige",
"translationRecharge": "Tõlke varundus",
"meetingAssistantRecharge": "Koosoleku assistendi varundus",
"cloudSync": "Pääsyvaraus cloud-synkronointiin",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Ühendatud seade:",
"accountId": "Konto ID:",
"systemSetting": "Süsteemi seaded",
@ -239,11 +674,10 @@ const Map<String, String> etEE = {
'selecttimbre': 'Vali tämber',
'pleaseRead': 'Palun loe',
'completeRecording': 'Lõpeta salvestus',
"firmwareUpgrade": "Püsivara uuendus", // 固件升级
"bleHeadsetFirmwareUpgrade":
"BLE kõrvaklappide püsivara uuendus", // BLE耳机固件版本升级
"deviceManagement": "Seadmete haldamine", // 设备管理
"manageConnectedDevices": "Halda ühendatud Bluetooth seadmeid", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "Püsivara uuendus",
"bleHeadsetFirmwareUpgrade": "BLE kõrvaklappide püsivara uuendus",
"deviceManagement": "Seadmete haldamine",
"manageConnectedDevices": "Halda ühendatud Bluetooth seadmeid",
//设置setting_controller
// 版本更新相关
@ -252,11 +686,10 @@ const Map<String, String> etEE = {
'networkErrorRetry': 'Võrgu viga, proovi hiljem uuesti',
// 设备管理相关
'clearPairedDevices': 'Tühjenda seotud seadmed',
'clearPairedDevicesConfirm':
'Kas oled kindel, et tahad kõik seotud seadmed tühjendada?',
'clearPairedDevicesSuccess': 'Seotud seadmete tühjendamine õnnestus',
'clearPairedDevicesFailed': 'Seotud seadmete tühjendamine ebaõnnestus',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Reaalajas häälvestlus",
@ -265,11 +698,20 @@ const Map<String, String> etEE = {
"loading": "Laadimine...",
//设备管理页面
"earphone": "Kõrvaklapid",
"voicerecorder": "Häälesalvesti",
"notBound": "Pole seotud",
"deviceNotBoundYet": "Ükski seade pole veel seotud",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Eemalda seos",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -298,6 +740,20 @@ const Map<String, String> etEE = {
"loadMoreMessages": "Laadi rohkem sõnumeid...",
"loadFailedClickRetry": "Laadimine ebaõnnestus, klõpsa uuesti proovimiseks",
"swipeUpForMore": "Libista üles rohkema jaoks",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Tere! Olen **Lily**, saan sind aidata:\n\n'
@ -330,7 +786,7 @@ const Map<String, String> etEE = {
'submitSuccess': 'Edukalt esitatud',
'submitFailed': 'Esitamine ebaõnnestus',
'reportSubmitted': 'Teade esitatud, töötleme selle võimalikult kiiresti',
//'networkError': 'Võrgu viga, proovi hiljem uuesti',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Kahjulik/ohtlik',
'pornographicVulgar': 'Pornograafiline/vulgaarne',
'misleadingAttack': 'Eksitav rünnak',
@ -340,7 +796,7 @@ const Map<String, String> etEE = {
'other': 'Muu',
'reportDescriptionHint':
'Tahame teada teate põhjust, võid kirjeldada probleemi, millega kokku puutusid.',
'submit': 'Esita',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'AI poolt genereeritud',
@ -393,6 +849,17 @@ const Map<String, String> etEE = {
"friday": "Reede",
"saturday": "Laupäev",
"sunday": "Pühapäev",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Päikeseline",
"partlyCloudy": "Osaliselt pilves",
@ -428,6 +895,8 @@ const Map<String, String> etEE = {
'deleteAccount': 'Kustuta konto',
'deleteAccountTips':
'Kas oled kindel, et tahad oma konto jäädavalt kustutada? Seda toimingut ei saa tagasi võtta',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -448,8 +917,8 @@ const Map<String, String> etEE = {
'Serveri sisemine viga, proovi hiljem uuesti',
// Profile 用户交互
//'error': 'Viga',
//'success': 'Õnnestus',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Pildi tihendamine ebaõnnestus',
'avatarUpdateFailed': 'Avatari uuendamine ebaõnnestus',
'usernameCannotBeEmpty': 'Kasutajanimi ei saa olla tühi',
@ -479,15 +948,26 @@ const Map<String, String> etEE = {
// 权限管理页面
'getPermissionStatusFailed': 'Lubade oleku hankimine ebaõnnestus',
'communicationPermissions': 'Suhtluse load',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kalendri load',
'locationPermissions': 'Asukoha load',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Kalendri kirjutamine',
'calendarFullAccess': 'Kalendri täielik ligipääs',
'locationInfo': 'Asukoha info',
'phonePermissionDesc': 'Kasutatakse telefonikõnede funktsiooni jaoks',
'smsPermissionDesc': 'Kasutatakse SMS saatmise funktsiooni jaoks',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Kasutatakse kalendri sündmuste ja meeldetuletuste loomiseks',
'calendarFullAccessPermissionDesc':
@ -503,17 +983,79 @@ const Map<String, String> etEE = {
'permissionRequestError': 'Loa taotluse viga',
'phonePermissionDetailDesc': 'Telefonikõnede funktsioon vajab telefoni luba',
'smsPermissionDetailDesc': 'SMS saatmise funktsioon vajab SMS luba',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Kalendri sündmuste loomine vajab kalendri kirjutamise luba',
'calendarFullAccessPermissionDetailDesc':
'Kalendri sündmuste haldamine vajab kalendri täielikku luba',
'locationPermissionDetailDesc': 'Asukoha info hankimine vajab asukoha luba',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Rakendus vajab seda luba täieliku funktsionaalsuse pakkumiseks',
'permanentDenialText':
'Oled püsivalt keeldunud {permission} loast, mine rakenduse seadetesse selle lubamiseks',
'goToSettings': 'Mine seadetesse',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Leitud uus versioon', // 版本更新对话框标题
'remindLater': 'Tuleta hiljem meelde', // 稍后提醒按钮
@ -632,8 +1174,23 @@ const Map<String, String> etEE = {
"东帝汶": "Ida-Timor",
"斐济": "Fidži",
"所罗门群岛": "Saalomoni Saared",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Tõlke ajalugu",
"enableRecording": "Luba salvestamine",
@ -642,9 +1199,24 @@ const Map<String, String> etEE = {
"phoneUser": "Telefoni kasutaja",
"selectSourceLanguage": "Vali lähtekeel",
"selectTargetLanguage": "Vali sihtkeel",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Tõlke ajalugu puudub",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Tühjenda ajalugu",
"clearHistoryConfirm":
"Kas oled kindel, et tahad kogu tõlke ajaloo tühjendada? Seda toimingut ei saa tagasi võtta.",
@ -653,7 +1225,58 @@ const Map<String, String> etEE = {
"deleteSessionConfirm":
"Kas oled kindel, et tahad kõik selle seansi tõlke kirjed kustutada? Seda toimingut ei saa tagasi võtta.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Tõlgi helifailid",
"noAudioFiles": "Helifaile pole",
"calculating": "Arvutamine...",
@ -699,7 +1322,7 @@ const Map<String, String> etEE = {
"autoInputCode": "Automaatne koodi sisestus",
"skipBinding": "Jäta sidumine vahele",
"rescan": "Skaneeri uuesti",
"skip": "Jäta vahele",
"verifyingDevice": "Seadme kontrollimine...",
"confirmBinding": "Kinnita sidumine",
"associatingDevice": "Seadme seostamine...",
@ -728,17 +1351,17 @@ const Map<String, String> etEE = {
"pairingFailedRetry": "Sidumine ebaõnnestus, proovi uuesti",
// 配对控制器相关
//'connectDevice': 'Ühenda seade',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Luba Bluetooth',
'deviceDisconnected': 'Seade lahti ühendatud',
'readyToStartPairing': 'Valmis sidumist alustama',
'checkingEnvironment': 'Keskkonna kontrollimine...',
'ensureHeadsetOnAndPairingMode':
'Veendu, et kõrvaklapid on sisse lülitatud ja sidumisrežiimis',
//'goToBluetoothSettings': 'Mine Bluetooth seadetesse',
//'verifyingDevice': 'Seadme kontrollimine...',
//'confirmBinding': 'Kinnita sidumine',
//'associatingDevice': 'Seadme seostamine...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Turvalise ühenduse loomine...',
'needManualBindingAuthCode': 'Vajab käsitsi sidumise autoriseerimiskoodi...',
'pairingSuccessful': 'Sidumine õnnestus!',
@ -760,6 +1383,19 @@ const Map<String, String> etEE = {
'deviceAuthorizationFailedCheckCode':
'Seadme autoriseerimine ebaõnnestus, kontrolli autoriseerimiskoodi',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Kasutaja tagasiside",
'feedbackInfo': 'Anna tagasisidet või ettepanekuid',
@ -768,7 +1404,7 @@ const Map<String, String> etEE = {
'feedbackRequired': 'Sisesta tagasiside sisu',
'contactInfo': 'Kontaktinfo',
'contactHint': 'E-mail/telefon, et saaksime sinuga ühendust võtta',
//'submit': 'Esita', // 已存在,使用现有键
'submit': 'Esita',
'feedbackSubmitSuccess': 'Tagasiside edukalt esitatud, täname!',
'feedbackSubmitFailed':
'Tagasiside esitamine ebaõnnestus, proovi hiljem uuesti',
@ -787,6 +1423,13 @@ const Map<String, String> etEE = {
"connectionFailed": "Ühendus ebaõnnestus",
"retryConnection": "Proovi ühendust uuesti",
"ota_updateNow": "Uuenda kohe",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Hoia seade ühendatuna, ära sulge rakendust",
"doNotDisconnect": "Ära ühenda lahti",
"charging": "Laadimine",
@ -841,4 +1484,23 @@ const Map<String, String> etEE = {
"乌尔都语": "Urdu",
"波斯语": "Pärsia",
"斯瓦希里语": "Suahiili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> faIR = {
"spanish": "اسپانیایی",
"portuguese": "پرتغالی",
"traditionalChinese": "چینی سنتی",
"traditionalChineseHK": "چینی سنتی (هنگ‌کنگ)",
"japanese": "ژاپنی",
"korean": "کره‌ای",
"french": "فرانسوی",
@ -100,12 +101,15 @@ const Map<String, String> faIR = {
"usePasswordLogin": "ورود با رمز عبور",
// 隐私政策弹窗
"loginDeclaration": "بیانیه Voitrans",
"welcomeToThisApp": "به Voitrans خوش آمدید، لطفاً با دقت بخوانید ",
"loginDeclaration": "بیانیه Voitrans", // Voitrans 声明
"welcomeToThisApp":
"به Voitrans خوش آمدید، لطفاً با دقت بخوانید ", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". با کلیک بر روی «موافقم و وارد می‌شوم»، شما تأیید می‌کنید که توافق‌نامه‌های فوق را به طور کامل مطالعه کرده و با آن‌ها موافقت نموده‌اید. کلیک بر روی «مخالفم» منجر به خروج از برنامه خواهد شد.",
"disagree": "مخالفم",
"agreeAndEnter": "موافقم و وارد می‌شوم",
". با کلیک بر روی «موافقم و وارد می‌شوم»، شما تأیید می‌کنید که توافق‌نامه‌های فوق را به طور کامل مطالعه کرده و با آن‌ها موافقت نموده‌اید. کلیک بر روی «مخالفم» منجر به خروج از برنامه خواهد شد.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "مخالفم", // 不同意
"agreeAndEnter": "موافقم و وارد می‌شوم", // 同意并进入
// 首页
"deviceStatus": "وضعیت دستگاه",
@ -181,6 +185,209 @@ const Map<String, String> faIR = {
"usageStats": "استفاده از خدمات",
"usageStatsInfo": "دیدن آمار مصرف سرویس‌ها",
"scene": "سناریوها",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "رد کردن",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "شروع جلسه",
@ -233,6 +440,7 @@ const Map<String, String> faIR = {
'summarizing': 'در حال خلاصه‌سازی...',
'analyzing': 'در حال تجزیه و تحلیل...',
'summaryComplete': 'خلاصه‌سازی کامل شد',
//'generating': '正在生成...',
'generate': 'ایجاد',
'overview': 'نمای کلی',
'transcription': 'متن',
@ -379,9 +587,17 @@ const Map<String, String> faIR = {
// Meeting模块 - 录音语言相关
'recordLanguage': 'زبان ضبط',
// 'chinese': '中文普通话(简体)',
'cantonese': 'کانتونی',
'sichuan': 'گویش سیچوان',
'shanghai': 'گویش شانگهایی',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'اشتراک‌گذاری پیوند',
@ -417,12 +633,16 @@ const Map<String, String> faIR = {
'inputAttendees': 'ورود شرکت‌کنندگان',
// 设置页
"systemSettings": "تنظیمات سیستم", //系统设置
"vipRecharge": "شارژ عضویت ویژه", //会员充值
"aiRecharge": "عضویت ویژه", //AI充值
"translationRecharge": "شارژ ترجمه", //翻译充值
"meetingAssistantRecharge": "شارژ کمک‌کننده جلسه", //会议助手充值
"cloudSync": "شارژ همگام‌سازی ابری", //云端同步
"systemSettings": "تنظیمات سیستم",
"vipRecharge": "شارژ عضویت ویژه",
"aiRecharge": "عضویت ویژه",
"translationRecharge": "شارژ ترجمه",
"meetingAssistantRecharge": "شارژ کمک‌کننده جلسه",
"cloudSync": "شارژ همگام‌سازی ابری",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "دستگاه متصل:",
"accountId": "شناسه حساب:",
"systemSetting": "تنظیمات سیستم",
@ -434,8 +654,8 @@ const Map<String, String> faIR = {
"lastBackup": "آخرین پشتیبان‌گیری:",
"privacySettings": "تنظیمات حریم خصوصی",
"privacySettingsInfo": "مدیریت جمع‌آوری داده‌ها و مجوزها",
"permissionManagement": "مدیریت مجوزها",
"permissionManagementInfo": "مدیریت تنظیمات مجوزهای برنامه",
"permissionManagement": "مدیریت مجوزها", // 权限管理
"permissionManagementInfo": "مدیریت تنظیمات مجوزهای برنامه", // 管理应用权限设置
"aboutApplication": "درباره",
"versions": "نسخه",
"checkUpdates": "بررسی به‌روزرسانی‌ها",
@ -468,10 +688,16 @@ const Map<String, String> faIR = {
'checkUpdateFailed': 'بررسی به‌روزرسانی ناموفق بود',
'networkErrorRetry': 'خطای شبکه، لطفاً بعداً دوباره تلاش کنید',
// 设备管理相关
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
'realtimeVoiceChat': 'چت صوتی همزمان',
'realtimeVoiceChatInfo': 'تجربه ویژگی‌های تعامل صوتی هوشمند (پیش‌نمایش)',
'loading': 'در حال بارگیری...',
"realtimeVoiceChat": 'چت صوتی همزمان',
"realtimeVoiceChatInfo": 'تجربه ویژگی‌های تعامل صوتی هوشمند (پیش‌نمایش)',
"loading": 'در حال بارگیری...',
//设备管理页面
"deviceTypeUnknown": "دستگاه ناشناخته",
@ -490,7 +716,7 @@ const Map<String, String> faIR = {
"confirmUnbindAction": "تأیید لغو اتصال",
//Agent 模块
//Agent View
// agent View
"Lily": "Lily",
"clearChatHistory": "پاک کردن تاریخچه چت",
"online": "آنلاین",
@ -516,19 +742,20 @@ const Map<String, String> faIR = {
"loadMoreMessages": "بارگیری پیام‌های بیشتر...",
"loadFailedClickRetry": "بارگیری ناموفق بود، برای تلاش مجدد کلیک کنید",
"swipeUpForMore": "برای مشاهده بیشتر به بالا بکشید",
"callingTool": "در حال کمک به شما هستم، لطفاً صبر کنید!",
"callingTool": "در حال کمک به شما هستم، لطفاً صبر کنید!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "پخش موسیقی",
"presetNavigation": "مسیریابی به",
"presetWeather": "آب و هوای امروز",
"presetNews": "اخبار امروز",
"presetFood": "غذای نزدیک",
"playSomeMusic": "پخش چند موسیقی محبوب",
"navigationTo": "لطفاً به من در مسیریابی به",
"todayWeather": "امروز هوا چطور است؟",
"todayNews": "اخبار امروز چیست؟",
"nearbyFood": "چه غذاهای خوشمزه‌ای در این نزدیکی هست؟",
"presetMusic": "پخش موسیقی", // 来点音乐
"presetNavigation": "مسیریابی به", // 导航
"presetWeather": "آب و هوای امروز", // 今日天气
"presetNews": "اخبار امروز", // 今日新闻
"presetFood": "غذای نزدیک", // 美食
"playSomeMusic": "پخش چند موسیقی محبوب", // 播放一些流行音乐
"navigationTo": "لطفاً به من در مسیریابی به", // 导航到
"todayWeather": "امروز هوا چطور است؟", // 今日天气
"todayNews": "اخبار امروز چیست؟", // 今日新闻
"nearbyFood": "چه غذاهای خوشمزه‌ای در این نزدیکی هست؟", // 美食
// Agent controller
'welcomeMessage': 'سلام! من **شیائویان** هستم، می‌توانم به شما کمک کنم:\n\n'
@ -550,8 +777,8 @@ const Map<String, String> faIR = {
'startPhoneCallMode': 'شروع حالت تماس تلفنی، شروع ورودی صوتی',
// Agent 全屏编辑器
'fullScreenEditorHint': 'پیام خود را اینجا تایپ کنید...',
'characterCount': '{count} کاراکتر',
'fullScreenEditorHint': 'پیام خود را اینجا تایپ کنید...', // 全屏编辑器输入提示
'characterCount': '{count} کاراکتر', // 字符计数显示
// 消息长按操作
'copy': 'کپی',
@ -560,6 +787,7 @@ const Map<String, String> faIR = {
'submitSuccess': 'ارسال موفقیت‌آمیز بود',
'submitFailed': 'ارسال ناموفق بود',
'reportSubmitted': 'گزارش ارسال شد، در اسرع وقت آن را پردازش خواهیم کرد',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'مضر/ناامن',
'pornographicVulgar': 'مستهجن/ مبتذل',
'misleadingAttack': 'گمراه‌کننده/تهاجمی',
@ -569,25 +797,26 @@ const Map<String, String> faIR = {
'other': 'دیگر',
'reportDescriptionHint':
'ما می‌خواهیم دلیل گزارش شما را بدانیم، می‌توانید مشکلی را که با آن مواجه شدید توصیف کنید.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'تولید شده توسط هوش مصنوعی',
//music_card
//音乐卡片 music_card
'recommendedMusic': 'در اینجا چند موسیقی توصیه‌شده وجود دارد:',
'playList': 'لیست پخش',
'moreMusic': 'موسیقی بیشتر',
//导航卡片 navigation_card
'kilometers': ' کیلومتر',
'meters': ' متر',
'hours': ' ساعت',
'minutes': ' دقیقه',
'seconds': ' ثانیه',
'navigating': 'در حال مسیریابی',
'currentLocation': 'موقعیت فعلی',
'approximate': 'حدود ',
'enterRoad': ' وارد ',
'kilometers': ' کیلومتر', // 公里单位
'meters': ' متر', // 米单位
'hours': ' ساعت', // 小时单位
'minutes': ' دقیقه', // 分钟单位
'seconds': ' ثانیه', // 秒单位
'navigating': 'در حال مسیریابی', // 导航状态
'currentLocation': 'موقعیت فعلی', // 当前位置
'approximate': 'حدود ', // 大约
'enterRoad': ' وارد ', // 进入道路
"driving": "رانندگی",
"walking": "پیاده‌روی",
"bicycling": "دوچرخه‌سواری",
@ -623,6 +852,17 @@ const Map<String, String> faIR = {
"friday": "جمعه",
"saturday": "شنبه",
"sunday": "یکشنبه",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "آفتابی",
"partlyCloudy": "کمی ابری",
@ -680,6 +920,8 @@ const Map<String, String> faIR = {
'خطای داخلی سرور، لطفاً بعداً دوباره تلاش کنید',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'فشرده‌سازی تصویر ناموفق بود',
'avatarUpdateFailed': 'به‌روزرسانی آواتار ناموفق بود',
'usernameCannotBeEmpty': 'نام کاربری نمی‌تواند خالی باشد',
@ -692,15 +934,19 @@ const Map<String, String> faIR = {
'deleteAccountFailedRetry': 'حذف حساب ناموفق بود، لطفاً دوباره تلاش کنید',
// 账号服务相关
'clearUserDataFailed': 'پاک کردن داده‌های کاربر ناموفق بود',
'deleteUserDataFailed': 'حذف داده‌های کاربر ناموفق بود',
'thirdPartyLogoutSuccess': 'خروج از حساب شخص ثالث موفقیت‌آمیز بود',
'thirdPartyLogoutFailed': 'خروج از حساب شخص ثالث ناموفق بود',
'signOutProcessError': 'خطا در طول فرآیند خروج از حساب رخ داد',
'deleteAccountProcessError': 'خطا در طول فرآیند حذف حساب رخ داد',
'userDataClearSuccess': 'داده‌های کاربر با موفقیت پاک شد',
'allUserDataClearSuccess': 'تمام داده‌های کاربر با موفقیت پاک شد',
'accountServiceInitialized': 'AccountService آماده‌سازی شد',
'clearUserDataFailed': 'پاک کردن داده‌های کاربر ناموفق بود', // 清理用户数据失败
'deleteUserDataFailed': 'حذف داده‌های کاربر ناموفق بود', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'خروج از حساب شخص ثالث موفقیت‌آمیز بود', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'خروج از حساب شخص ثالث ناموفق بود', // 第三方登录退出失败
'signOutProcessError': 'خطا در طول فرآیند خروج از حساب رخ داد', // 登出过程发生错误
'deleteAccountProcessError':
'خطا در طول فرآیند حذف حساب رخ داد', // 删除账号过程发生错误
'userDataClearSuccess': 'داده‌های کاربر با موفقیت پاک شد', // 用户数据清理成功
'allUserDataClearSuccess':
'تمام داده‌های کاربر با موفقیت پاک شد', // 所有用户数据清理成功
'accountServiceInitialized':
'AccountService آماده‌سازی شد', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'دریافت وضعیت مجوز ناموفق بود',
@ -715,6 +961,7 @@ const Map<String, String> faIR = {
'phone': 'تلفن',
'sms': 'پیامک',
'contacts': 'مخاطبین',
//'bluetooth': '蓝牙',
'notification': 'اعلان',
'alarm': 'زنگ هشدار',
'calendarWrite': 'نوشتن در تقویم',
@ -742,6 +989,12 @@ const Map<String, String> faIR = {
'smsPermissionDetailDesc': 'عملکرد پیامک به مجوز پیامک نیاز دارد',
'alarmPermissionDetailDesc':
'این مجوز برای تنظیم زنگ‌های هشدار دقیق و اطمینان از فعال شدن یادآوری‌ها به موقع مورد نیاز است',
'calendarWritePermissionDetailDesc':
'ایجاد رویدادهای تقویم به مجوز نوشتن در تقویم نیاز دارد',
'calendarFullAccessPermissionDetailDesc':
'مدیریت رویدادهای تقویم به مجوز دسترسی کامل به تقویم نیاز دارد',
'locationPermissionDetailDesc':
'دریافت اطلاعات موقعیت مکانی به مجوز موقعیت مکانی نیاز دارد',
'contactsPermissionDesc': 'برای دسترسی به اطلاعات مخاطبین استفاده می‌شود',
'contactsPermissionDetailDesc':
'عملکرد تماس تلفنی و پیامک برای انتخاب مخاطبین به مجوز مخاطبین نیاز دارد',
@ -760,12 +1013,6 @@ const Map<String, String> faIR = {
'notificationPermissionDesc': 'برای ارسال پیام‌های اعلان استفاده می‌شود',
'notificationPermissionDetailDesc':
'برنامه برای ارسال هشدارها و پیام‌های مهم به شما به مجوز اعلان نیاز دارد',
'calendarWritePermissionDetailDesc':
'ایجاد رویدادهای تقویم به مجوز نوشتن در تقویم نیاز دارد',
'calendarFullAccessPermissionDetailDesc':
'مدیریت رویدادهای تقویم به مجوز دسترسی کامل به تقویم نیاز دارد',
'locationPermissionDetailDesc':
'دریافت اطلاعات موقعیت مکانی به مجوز موقعیت مکانی نیاز دارد',
'appNeedsPermissionForFullFunction':
'برنامه برای ارائه عملکرد کامل به این مجوز نیاز دارد',
'permanentDenialText':
@ -785,6 +1032,8 @@ const Map<String, String> faIR = {
'مجوز اسکن بلوتوث برای همیشه رد شده است، لطفاً برای فعال کردن آن به صورت دستی به تنظیمات بروید.',
'bluetoothConnectPermanentDenial':
'مجوز اتصال بلوتوث برای همیشه رد شده است، لطفاً برای فعال کردن آن به صورت دستی به تنظیمات بروید.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'اعلان',
'locationPermission': 'موقعیت مکانی',
'notificationPermissionExplanation':
@ -795,6 +1044,7 @@ const Map<String, String> faIR = {
'شما مجوز اعلان را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات بروید.',
'locationPermissionPermanentDenial':
'شما مجوز موقعیت مکانی را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات بروید.',
//'microphonePermission': '录音',
'storagePermission': 'ذخیره‌سازی',
'microphonePermissionExplanation':
'ما برای ضبط محتوای صوتی به مجوز میکروفون نیاز داریم.',
@ -814,15 +1064,15 @@ const Map<String, String> faIR = {
'permissionUtilConfirm': 'تأیید',
// 版本更新对话框
'newVersionFound': 'نسخه جدید یافت شد',
'remindLater': 'بعداً یادآوری کن',
'updateNow': 'اکنون به‌روزرسانی کن',
'checkUpdate': 'بررسی به‌روزرسانی',
'updateFailed': 'به‌روزرسانی ناموفق بود',
'newVersionFound': 'نسخه جدید یافت شد', // 版本更新对话框标题
'remindLater': 'بعداً یادآوری کن', // 稍后提醒按钮
'updateNow': 'اکنون به‌روزرسانی کن', // 立即更新按钮
'checkUpdate': 'بررسی به‌روزرسانی', // 检查更新按钮
'updateFailed': 'به‌روزرسانی ناموفق بود', // 更新失败提示
'cannotOpenAppStore':
'نمی‌توان فروشگاه برنامه را باز کرد، لطفاً به صورت دستی به‌روزرسانی کنید',
'نمی‌توان فروشگاه برنامه را باز کرد، لطفاً به صورت دستی به‌روزرسانی کنید', // 无法打开应用商店提示
'updateErrorRetry':
'خطا در طول به‌روزرسانی رخ داد، لطفاً بعداً دوباره تلاش کنید',
'خطا در طول به‌روزرسانی رخ داد، لطفاً بعداً دوباره تلاش کنید', // 更新错误重试提示
//国家列表
"邮箱": "ایمیل",
@ -948,7 +1198,7 @@ const Map<String, String> faIR = {
"pictureTranslation": "ترجمه تصویر",
"textTranslation": "ترجمه متن",
// 翻译主页
// 翻译主页 (translation_view.dart)
"translationHistory": "تاریخچه ترجمه",
"enableRecording": "فعال کردن ضبط",
"viewAudioFiles": "مشاهده فایل‌های صوتی",
@ -958,12 +1208,22 @@ const Map<String, String> faIR = {
"selectTargetLanguage": "انتخاب زبان مقصد",
"me": "من",
"counterPart": "طرف مقابل",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
"autoDetect": "تشخیص خودکار",
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "تشخیص خودکار", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页
"noTranslationHistory": "تاریخچه ترجمه وجود ندارد",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "پاک کردن تاریخچه",
"clearHistoryConfirm":
"آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.",
@ -972,7 +1232,58 @@ const Map<String, String> faIR = {
"deleteSessionConfirm":
"آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.",
// 翻译音频文件列表页
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "ترجمه فایل‌های صوتی",
"noAudioFiles": "فایل صوتی وجود ندارد",
"calculating": "در حال محاسبه...",
@ -1008,7 +1319,7 @@ const Map<String, String> faIR = {
"translationSessionRecord": "سابقه جلسه ترجمه",
// 配对模块
// 配对页面
// 配对页面 (pairing_view.dart & pairing_view_new.dart)
"devicePairing": "جفت‌سازی دستگاه",
"connectYourDeepSoundHeadset": "هدست Voitrans خود را متصل کنید",
"bind": "اتصال",
@ -1017,7 +1328,7 @@ const Map<String, String> faIR = {
"autoInputCode": "ورود خودکار کد",
"skipBinding": "رد کردن اتصال",
"rescan": "اسکن مجدد",
"skip": "رد کردن",
"verifyingDevice": "در حال تأیید دستگاه...",
"confirmBinding": "تأیید اتصال",
"associatingDevice": "در حال مرتبط‌سازی دستگاه...",
@ -1049,12 +1360,17 @@ const Map<String, String> faIR = {
"pairingFailedRetry": "جفت‌سازی ناموفق بود، لطفاً دوباره تلاش کنید",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'لطفاً بلوتوث را فعال کنید',
'deviceDisconnected': 'دستگاه قطع شد',
'readyToStartPairing': 'آماده برای شروع جفت‌سازی',
'checkingEnvironment': 'در حال بررسی محیط...',
'ensureHeadsetOnAndPairingMode':
'لطفاً اطمینان حاصل کنید که هدست روشن و در حالت جفت‌سازی است',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'در حال برقراری اتصال امن...',
'needManualBindingAuthCode': 'کد مجوز اتصال دستی مورد نیاز است...',
'pairingSuccessful': 'جفت‌سازی موفقیت‌آمیز بود!',
@ -1077,16 +1393,18 @@ const Map<String, String> faIR = {
'deviceAuthorizationFailedCheckCode':
'مجوز دستگاه ناموفق بود، لطفاً کد مجوز را بررسی کنید',
// iOS蓝牙引导窗
'bluetoothGuideTitle': 'فعال‌سازی دستی بلوتوث مورد نیاز است',
'bluetoothGuideSteps': 'لطفاً این مراحل را دنبال کنید:',
'bluetoothGuideStep1': 'فعال کردن بلوتوث: تنظیمات ← بلوتوث ← روشن کردن',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'فعال‌سازی دستی بلوتوث مورد نیاز است', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'لطفاً این مراحل را دنبال کنید:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'فعال کردن بلوتوث: تنظیمات ← بلوتوث ← روشن کردن', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'اتصال دستگاه: دستگاه خود را در «دستگاه‌های من» پیدا کنید و برای اتصال ضربه بزنید',
'bluetoothGuideStep3': 'بازگشت به برنامه برای ادامه فرآیند جفت‌سازی',
'اتصال دستگاه: دستگاه خود را در «دستگاه‌های من» پیدا کنید و برای اتصال ضربه بزنید', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'بازگشت به برنامه برای ادامه فرآیند جفت‌سازی', // 返回应用继续配对流程
'bluetoothGuideTip':
'نکته: می‌توانید آیکون بلوتوث را در مرکز کنترل به مدت طولانی فشار دهید تا به سرعت به تنظیمات بلوتوث دسترسی پیدا کنید',
'iKnow': 'متوجه شدم',
'نکته: می‌توانید آیکون بلوتوث را در مرکز کنترل به مدت طولانی فشار دهید تا به سرعت به تنظیمات بلوتوث دسترسی پیدا کنید', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'متوجه شدم', // 我知道了
//用户反馈页
"feedback": "بازخورد",
@ -1115,6 +1433,13 @@ const Map<String, String> faIR = {
"connectionFailed": "اتصال ناموفق",
"retryConnection": "تلاش مجدد برای اتصال",
"ota_updateNow": "اکنون به‌روزرسانی کن",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "لطفاً دستگاه را متصل نگه دارید، برنامه را نبندید",
"doNotDisconnect": "اتصال را قطع نکنید",
"charging": "در حال شارژ",
@ -1123,11 +1448,11 @@ const Map<String, String> faIR = {
"هر دو ایرباد را بردارید و اطمینان حاصل کنید که سطح باتری بالای ۲۰٪ است",
// 音乐列表页面
"noMusic": "بدون موسیقی",
"noPlayingMusic": "موسیقی در حال پخش نیست",
"unknownSong": "آهنگ ناشناخته",
"unknownArtist": "هنرمند ناشناخته",
"playAll": "پخش همه",
"noMusic": "بدون موسیقی", // 暂无音乐
"noPlayingMusic": "موسیقی در حال پخش نیست", // 暂无播放音乐
"unknownSong": "آهنگ ناشناخته", // 未知歌曲
"unknownArtist": "هنرمند ناشناخته", // 未知歌手
"playAll": "پخش همه", // 播放全部
// 语言名称
"中文(简体)": "چینی (ساده‌شده)",
@ -1170,8 +1495,22 @@ const Map<String, String> faIR = {
"波斯语": "فارسی",
"斯瓦希里语": "سواحیلی",
// Time related
// 时间相关
"justNow": "همین الان",
"minutesAgo": "@minutes دقیقه پیش",
"yesterday": "دیروز",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> fiFI = {
"spanish": "Espanja",
"portuguese": "Portugali",
"traditionalChinese": "Perinteinen kiina",
"traditionalChineseHK": "Perinteinen kiina (Hongkong)",
"japanese": "Japani",
"korean": "Korea",
"french": "Ranska",
@ -100,12 +101,15 @@ const Map<String, String> fiFI = {
"usePasswordLogin": "Kirjaudu sisään salasanalla",
// 隐私政策弹窗
"loginDeclaration": "Voitransin ilmoitus",
"welcomeToThisApp": "Tervetuloa Voitransiin, lue huolellisesti",
"loginDeclaration": "Voitransin ilmoitus", // Voitrans 声明
"welcomeToThisApp":
"Tervetuloa Voitransiin, lue huolellisesti", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", klikkaamalla 'Hyväksy ja siirry' vahvistat, että olet lukenut ja hyväksynyt yllä olevat sopimukset. Klikkaamalla 'Hylkää' poistut sovelluksesta.",
"disagree": "Hylkää",
"agreeAndEnter": "Hyväksy ja siirry",
", klikkaamalla 'Hyväksy ja siirry' vahvistat, että olet lukenut ja hyväksynyt yllä olevat sopimukset. Klikkaamalla 'Hylkää' poistut sovelluksesta.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Hylkää", // 不同意
"agreeAndEnter": "Hyväksy ja siirry", // 同意并进入
// 首页
"deviceStatus": "Laitteen tila",
@ -185,6 +189,209 @@ const Map<String, String> fiFI = {
"usageStats": "Käyttöstatistiikka",
"usageStatsInfo": "Näytä sovelluksen käytön statistiikka",
"scene": "Skenaario",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Ohita",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Aloita kokous",
@ -199,13 +406,244 @@ const Map<String, String> fiFI = {
'aiSummary': 'AI-yhteenveto',
'meetingTranscript': 'Kokouksen transkriptio',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Järjestelmäasetukset", //系统设置
"vipRecharge": "Premium-jäsenvaraus", //会员充值
"aiRecharge": "Premium-jäsen", //AI充值
"translationRecharge": "Käännösvaraus", //翻译充值
"meetingAssistantRecharge": "Kokousavustajan varaus", //会议助手充值
"cloudSync": "Pääsyvaraus cloud-synkronointiin", //云端同步
"systemSettings": "Järjestelmäasetukset",
"vipRecharge": "Premium-jäsenvaraus",
"aiRecharge": "Premium-jäsen",
"translationRecharge": "Käännösvaraus",
"meetingAssistantRecharge": "Kokousavustajan varaus",
"cloudSync": "Pääsyvaraus cloud-synkronointiin",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Yhdistetty laite:",
"accountId": "Tilin tunnus:",
"systemSetting": "Järjestelmäasetukset",
@ -217,8 +655,9 @@ const Map<String, String> fiFI = {
"lastBackup": "Viimeisin varmuuskopio:",
"privacySettings": "Tietosuoja-asetukset",
"privacySettingsInfo": "Hallitse tiedonkeruuta ja käyttöoikeuksia",
"permissionManagement": "Käyttöoikeuksien hallinta",
"permissionManagementInfo": "Hallitse sovelluksen käyttöoikeusasetuksia",
"permissionManagement": "Käyttöoikeuksien hallinta", // 权限管理
"permissionManagementInfo":
"Hallitse sovelluksen käyttöoikeusasetuksia", // 管理应用权限设置
"aboutApplication": "Tietoja sovelluksesta",
"versions": "Versio",
"checkUpdates": "Tarkista päivitykset",
@ -254,11 +693,10 @@ const Map<String, String> fiFI = {
'networkErrorRetry': 'Verkkovirhe, yritä myöhemmin uudelleen',
// 设备管理相关
'clearPairedDevices': 'Tyhjennä paritetut laitteet',
'clearPairedDevicesConfirm':
'Oletko varma, että haluat tyhjentää kaikki paritetut laitteet?',
'clearPairedDevicesSuccess': 'Paritettujen laitteiden tyhjennys onnistui',
'clearPairedDevicesFailed': 'Paritettujen laitteiden tyhjennys epäonnistui',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Reaaliaikainen puhekeskustelu",
@ -267,11 +705,20 @@ const Map<String, String> fiFI = {
"loading": "Ladataan...",
//设备管理页面
"earphone": "Kuulokkeet",
"voicerecorder": "Ääninauhuri",
"notBound": "Ei sidottu",
"deviceNotBoundYet": "Laitetta ei ole vielä sidottu",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Poista sidonta",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -300,6 +747,20 @@ const Map<String, String> fiFI = {
"loadMoreMessages": "Lataa lisää viestejä...",
"loadFailedClickRetry": "Lataus epäonnistui, yritä uudelleen napsauttamalla",
"swipeUpForMore": "Pyyhkäise ylös nähdäksesi lisää",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Hei! Olen **Lily**, voin auttaa sinua:\n\n'
@ -322,8 +783,8 @@ const Map<String, String> fiFI = {
'startPhoneCallMode': 'Aloita puhelutila, aloita puhesyöttö',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Kirjoita viestisi tähän...',
'characterCount': '{count} merkkiä',
'fullScreenEditorHint': 'Kirjoita viestisi tähän...', // 全屏编辑器输入提示
'characterCount': '{count} merkkiä', // 字符计数显示
// 消息长按操作
'copy': 'Kopioi',
@ -332,6 +793,7 @@ const Map<String, String> fiFI = {
'submitSuccess': 'Lähetetty onnistuneesti',
'submitFailed': 'Lähetys epäonnistui',
'reportSubmitted': 'Ilmoitus lähetetty, käsittelemme sen mahdollisimman pian',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Haitallinen/Turvaton',
'pornographicVulgar': 'Pornografinen/Mauton',
'misleadingAttack': 'Harhaanjohtava/Hyökkäys',
@ -341,6 +803,7 @@ const Map<String, String> fiFI = {
'other': 'Muu',
'reportDescriptionHint':
'Haluamme tietää, miksi ilmoitat, voit kuvailla kohtaamaasi ongelmaa.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'AI:n luoma',
@ -351,15 +814,15 @@ const Map<String, String> fiFI = {
'moreMusic': 'Lisää musiikkia',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'tuntia',
'minutes': 'minuuttia',
'seconds': 'sekuntia',
'navigating': 'Navigoidaan',
'currentLocation': 'Nykyinen sijainti',
'approximate': 'Noin',
'enterRoad': 'Aja tielle',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'tuntia', // 小时单位
'minutes': 'minuuttia', // 分钟单位
'seconds': 'sekuntia', // 秒单位
'navigating': 'Navigoidaan', // 导航状态
'currentLocation': 'Nykyinen sijainti', // 当前位置
'approximate': 'Noin', // 大约
'enterRoad': 'Aja tielle', // 进入道路
"driving": 'Autolla',
"walking": 'Kävellen',
"bicycling": 'Pyörällä',
@ -393,6 +856,17 @@ const Map<String, String> fiFI = {
"friday": "Pe",
"saturday": "La",
"sunday": "Su",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Aurinkoinen",
"partlyCloudy": "Puolipilvinen",
@ -428,6 +902,8 @@ const Map<String, String> fiFI = {
'deleteAccount': 'Poista tili',
'deleteAccountTips':
'Oletko varma, että haluat poistaa tilisi pysyvästi? Tätä toimintoa ei voi kumota.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -450,6 +926,8 @@ const Map<String, String> fiFI = {
'Sisäinen palvelinvirhe, yritä myöhemmin uudelleen',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Kuvan pakkaus epäonnistui',
'avatarUpdateFailed': 'Avatarin päivitys epäonnistui',
'usernameCannotBeEmpty': 'Käyttäjätunnus ei voi olla tyhjä',
@ -462,28 +940,46 @@ const Map<String, String> fiFI = {
'deleteAccountFailedRetry': 'Tilin poistaminen epäonnistui, yritä uudelleen',
// 账号服务相关
'clearUserDataFailed': 'Käyttäjätietojen tyhjennys epäonnistui',
'deleteUserDataFailed': 'Käyttäjätietojen poisto epäonnistui',
'thirdPartyLogoutSuccess': 'Kolmannen osapuolen uloskirjautuminen onnistui',
'thirdPartyLogoutFailed': 'Kolmannen osapuolen uloskirjautuminen epäonnistui',
'signOutProcessError': 'Uloskirjautumisprosessin aikana tapahtui virhe',
'deleteAccountProcessError': 'Tilin poistoprosessin aikana tapahtui virhe',
'userDataClearSuccess': 'Käyttäjätiedot tyhjennetty onnistuneesti',
'allUserDataClearSuccess': 'Kaikki käyttäjätiedot tyhjennetty onnistuneesti',
'accountServiceInitialized': 'Tili-palvelu on alustettu',
'clearUserDataFailed': 'Käyttäjätietojen tyhjennys epäonnistui', // 清理用户数据失败
'deleteUserDataFailed': 'Käyttäjätietojen poisto epäonnistui', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Kolmannen osapuolen uloskirjautuminen onnistui', // 第三方登录退出成功
'thirdPartyLogoutFailed':
'Kolmannen osapuolen uloskirjautuminen epäonnistui', // 第三方登录退出失败
'signOutProcessError':
'Uloskirjautumisprosessin aikana tapahtui virhe', // 登出过程发生错误
'deleteAccountProcessError':
'Tilin poistoprosessin aikana tapahtui virhe', // 删除账号过程发生错误
'userDataClearSuccess':
'Käyttäjätiedot tyhjennetty onnistuneesti', // 用户数据清理成功
'allUserDataClearSuccess':
'Kaikki käyttäjätiedot tyhjennetty onnistuneesti', // 所有用户数据清理成功
'accountServiceInitialized':
'Tili-palvelu on alustettu', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Käyttöoikeuden tilan haku epäonnistui',
'communicationPermissions': 'Viestintäoikeudet',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kalenterioikeudet',
'locationPermissions': 'Sijaintioikeudet',
'phone': 'Puhelin',
'sms': 'Tekstiviesti',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Kalenterin kirjoitus',
'calendarFullAccess': 'Täysi kalenterin käyttöoikeus',
'locationInfo': 'Sijaintitiedot',
'phonePermissionDesc': 'Käytetään soittotoimintoon',
'smsPermissionDesc': 'Käytetään tekstiviestien lähetystoimintoon',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Käytetään kalenteritapahtumien ja muistutusten luomiseen',
'calendarFullAccessPermissionDesc':
@ -500,27 +996,89 @@ const Map<String, String> fiFI = {
'phonePermissionDetailDesc': 'Soittotoiminto vaatii puhelinluvan',
'smsPermissionDetailDesc':
'Tekstiviestien lähetystoiminto vaatii tekstiviestiluvan',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Kalenteritapahtumien luominen vaatii kalenterin kirjoitusluvan',
'calendarFullAccessPermissionDetailDesc':
'Kalenteritapahtumien hallinta vaatii täyden kalenteriluvan',
'locationPermissionDetailDesc': 'Sijaintitietojen haku vaatii sijaintiluvan',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Sovellus tarvitsee tämän luvan täyden toiminnallisuuden varmistamiseksi',
'permanentDenialText':
'Olet pysyvästi kieltänyt {permission}-luvan, ota se käyttöön sovelluksen asetuksista',
'goToSettings': 'Siirry asetuksiin',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Uusi versio löytyi',
'remindLater': 'Muistuta myöhemmin',
'updateNow': 'Päivitä nyt',
'checkUpdate': 'Tarkista päivitys',
'updateFailed': 'Päivitys epäonnistui',
'newVersionFound': 'Uusi versio löytyi', // 版本更新对话框标题
'remindLater': 'Muistuta myöhemmin', // 稍后提醒按钮
'updateNow': 'Päivitä nyt', // 立即更新按钮
'checkUpdate': 'Tarkista päivitys', // 检查更新按钮
'updateFailed': 'Päivitys epäonnistui', // 更新失败提示
'cannotOpenAppStore':
'Sovelluskauppaa ei voi avata, siirry sovelluskauppaan manuaalisesti päivittääksesi',
'Sovelluskauppaa ei voi avata, siirry sovelluskauppaan manuaalisesti päivittääksesi', // 无法打开应用商店提示
'updateErrorRetry':
'Päivityksen aikana tapahtui virhe, yritä myöhemmin uudelleen',
'Päivityksen aikana tapahtui virhe, yritä myöhemmin uudelleen', // 更新错误重试提示
//国家列表
"邮箱": "Sähköposti",
@ -629,8 +1187,23 @@ const Map<String, String> fiFI = {
"东帝汶": "Itä-Timor",
"斐济": "Fidži",
"所罗门群岛": "Salomonsaaret",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Käännöshistoria",
"enableRecording": "Ota tallennus käyttöön",
@ -639,9 +1212,24 @@ const Map<String, String> fiFI = {
"phoneUser": "Puhelimen käyttäjä",
"selectSourceLanguage": "Valitse lähdekieli",
"selectTargetLanguage": "Valitse kohdekieli",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Ei historiaa vielä",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Tyhjennä historia",
"clearHistoryConfirm":
"Oletko varma, että haluat tyhjentää kaiken käännöshistorian? Tätä toimintoa ei voi kumota.",
@ -650,7 +1238,58 @@ const Map<String, String> fiFI = {
"deleteSessionConfirm":
"Oletko varma, että haluat poistaa kaikki tämän istunnon käännöstallenteet? Tätä toimintoa ei voi kumota.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Käännä äänitiedostot",
"noAudioFiles": "Ei äänitiedostoja vielä",
"calculating": "Lasketaan...",
@ -696,7 +1335,7 @@ const Map<String, String> fiFI = {
"autoInputCode": "Syötä koodi automaattisesti",
"skipBinding": "Ohita sidonta",
"rescan": "Skannaa uudelleen",
"skip": "Ohita",
"verifyingDevice": "Vahvistetaan laitetta...",
"confirmBinding": "Vahvista sidonta",
"associatingDevice": "Yhdistetään laitetta...",
@ -727,12 +1366,17 @@ const Map<String, String> fiFI = {
"pairingFailedRetry": "Paritus epäonnistui, yritä uudelleen",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Ota Bluetooth käyttöön',
'deviceDisconnected': 'Laite irrotettu',
'readyToStartPairing': 'Valmis aloittamaan parituksen',
'checkingEnvironment': 'Tarkistetaan ympäristöä...',
'ensureHeadsetOnAndPairingMode':
'Varmista, että kuulokkeet ovat päällä ja paritustilassa',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Luodaan turvallista yhteyttä...',
'needManualBindingAuthCode': 'Manuaalinen sidontavaltuutuskoodi vaaditaan...',
'pairingSuccessful': 'Paritus onnistui!',
@ -754,6 +1398,19 @@ const Map<String, String> fiFI = {
'deviceAuthorizationFailedCheckCode':
'Laitteen valtuutus epäonnistui, tarkista valtuutuskoodi',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Käyttäjäpalaute",
'feedbackInfo': 'Anna palautetta tai ehdotuksia',
@ -782,6 +1439,13 @@ const Map<String, String> fiFI = {
"connectionFailed": "Yhteys epäonnistui",
"retryConnection": "Yritä yhdistää uudelleen",
"ota_updateNow": "Päivitä nyt",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Pidä laite yhteydessä, älä sulje sovellusta",
"doNotDisconnect": "Älä katkaise yhteyttä",
"charging": "Ladataan",
@ -790,11 +1454,11 @@ const Map<String, String> fiFI = {
"Poista molemmat kuulokkeet ja varmista, että molempien akun varaus on yli 20%",
// 音乐列表页面
"noMusic": "Ei musiikkia",
"noPlayingMusic": "Ei soitettavaa musiikkia",
"unknownSong": "Tuntematon kappale",
"unknownArtist": "Tuntematon artisti",
"playAll": "Toista kaikki",
"noMusic": "Ei musiikkia", // 暂无音乐
"noPlayingMusic": "Ei soitettavaa musiikkia", // 暂无播放音乐
"unknownSong": "Tuntematon kappale", // 未知歌曲
"unknownArtist": "Tuntematon artisti", // 未知歌手
"playAll": "Toista kaikki", // 播放全部
// 语言名称
"中文(简体)": "Kiina (yksinkertaistettu)",
@ -836,4 +1500,23 @@ const Map<String, String> fiFI = {
"乌尔都语": "Urdu",
"波斯语": "Persia",
"斯瓦希里语": "Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> frFR = {
"spanish": "Espagnol",
"portuguese": "Portugais",
"traditionalChinese": "Chinois traditionnel",
"traditionalChineseHK": "Chinois traditionnel (Hong Kong)",
"japanese": "Japonais",
"korean": "Coréen",
"french": "Français",
@ -104,8 +105,8 @@ const Map<String, String> frFR = {
"loginDeclaration": "Déclaration Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Bienvenue sur Voitrans, veuillez lire attentivement", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "Politique de confidentialité", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "Accord d'utilisateur", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
". En cliquant sur 'Accepter et entrer', vous indiquez que vous avez entièrement lu et accepté les accords ci-dessus. Cliquer sur 'Refuser' fermera l'application.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Refuser", // 不同意
@ -190,6 +191,209 @@ const Map<String, String> frFR = {
"usageStats": "Statistiques d'utilisation",
"usageStatsInfo": "Consultez les statistiques d'utilisation de l'application",
"scene": "Scénarios",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Ignorer",
'next': 'Next',
'sayLilyHint': "Say \"Lily Lily\" to the mic",
'imHere': "I’m here~",
'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.",
'aiReplyCompleted': "Lily has finished the reply!",
'aiThinking': "Lily is thinking…",
'guideAwakenSuccess': "Great! Lily is awake—ask it to help.",
'confirmInput': "Confirm Input",
'guideClickSendPrefix': "Tap send, ",
// AI 引导步骤
'guideWeatherStart': "Tell Lily: “What’s the weather today?”",
'guideWeatherInput': "What’s the weather today?",
'guideWeatherSend': "Lily will report the weather in real time",
'guideWeatherEnd': "Lily can report weather live—try other commands",
'guideMusicStart': "Tell Lily: “Play some rock music”",
'guideMusicInput': "Play some rock music",
'guideMusicSend': "Lily will find music for you",
'guideMusicEnd': "Lily found music—try other commands",
'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”",
'guideNavInput': "Navigate to Shenzhen Airport",
'guideNavSend': "Lily will plan the route",
'guideNavEnd': "Navigation set—try other commands",
'guideMeetingStart':
"Tell Lily: “Create a meeting reminder for 3pm tomorrow”",
'guideMeetingInput': "Create a meeting reminder for 3pm tomorrow",
'guideMeetingSend': "Lily will create a meeting reminder",
'guideMeetingEnd': "Reminder created—try other commands",
'guidePhoneStart': "Tell Lily: “Call Mom”",
'guidePhoneInput': "Call Mom",
'guidePhoneSend': "Lily will make the call",
'guidePhoneEnd': "Call placed—try other commands",
'guideSmsStart': "Tell Lily: “Send Dad a text: I’ll be home for dinner”",
'guideSmsInput': "Text Dad: I’ll be home for dinner",
'guideSmsSend': "Lily will send the message",
'guideSmsEnd': "Message sent—voice control is convenient",
// 商务会议助手页
"startMeeting": "Démarrer la réunion",
@ -204,13 +408,244 @@ const Map<String, String> frFR = {
'aiSummary': 'Résumé IA',
'meetingTranscript': 'Transcription de la réunion',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Paramètres système", //系统设置
"vipRecharge": "Recharge de VIP", //会员充值
"aiRecharge": "Membre premium", //AI充值
"translationRecharge": "Recharge de traduction", //翻译充值
"meetingAssistantRecharge": "Recharge de l'assistant de réunion", //会议助手充值
"cloudSync": "Recharge de synchronisation cloud", //云端同步
"systemSettings": "Paramètres système",
"vipRecharge": "Recharge de VIP",
"aiRecharge": "Membre premium",
"translationRecharge": "Recharge de traduction",
"meetingAssistantRecharge": "Recharge de l'assistant de réunion",
"cloudSync": "Recharge de synchronisation cloud",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Appareil connecté :",
"accountId": "ID du compte :",
"systemSetting": "Paramètres système",
@ -248,12 +683,10 @@ const Map<String, String> frFR = {
'selecttimbre': 'Sélectionner le timbre',
'pleaseRead': 'Veuillez lire',
'completeRecording': 'Terminer l\'enregistrement',
"firmwareUpgrade": "Mise à niveau du firmware", // 固件升级
"bleHeadsetFirmwareUpgrade":
"Mise à niveau du firmware des écouteurs BLE", // BLE耳机固件版本升级
"deviceManagement": "Gestion des appareils", // 设备管理
"manageConnectedDevices":
"Gérer les appareils Bluetooth connectés", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "Mise à niveau du firmware",
"bleHeadsetFirmwareUpgrade": "Mise à niveau du firmware des écouteurs BLE",
"deviceManagement": "Gestion des appareils",
"manageConnectedDevices": "Gérer les appareils Bluetooth connectés",
//设置setting_controller
// 版本更新相关
@ -262,24 +695,32 @@ const Map<String, String> frFR = {
'networkErrorRetry': 'Erreur réseau, veuillez réessayer plus tard',
// 设备管理相关
'clearPairedDevices': 'Effacer les appareils appairés',
'clearPairedDevicesConfirm':
'Êtes-vous sûr de vouloir effacer tous les appareils appairés ?',
'clearPairedDevicesSuccess': 'Appareils appairés effacés avec succès',
'clearPairedDevicesFailed': 'Échec de l\'effacement des appareils appairés',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
'realtimeVoiceChat': 'Conversation vocale en temps réel',
'realtimeVoiceChatInfo':
"realtimeVoiceChat": 'Conversation vocale en temps réel',
"realtimeVoiceChatInfo":
'Découvrez les fonctions d\'interaction vocale intelligente (Aperçu)',
'loading': 'Chargement...',
"loading": 'Chargement...',
//设备管理页面
"earphone": "Écouteurs", // 耳机
"voicerecorder": "Enregistreur vocal", // 录音笔
"notBound": "Non lié", // 未绑定
"deviceNotBoundYet": "Appareil pas encore lié", // 还未绑定设备
"unbind": "Délier", // 解绑
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Délier",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -309,6 +750,20 @@ const Map<String, String> frFR = {
"loadMoreMessages": "Charger plus de messages...",
"loadFailedClickRetry": "Échec du chargement, cliquer pour réessayer",
"swipeUpForMore": "Glisser vers le haut pour plus",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Bonjour ! Je suis **Lily**, je peux vous aider avec :\n\n'
@ -341,7 +796,7 @@ const Map<String, String> frFR = {
'submitSuccess': 'Soumis avec succès',
'submitFailed': 'Échec de la soumission',
'reportSubmitted': 'Signalement soumis, nous le traiterons dès que possible',
//'networkError': 'Erreur réseau, veuillez réessayer plus tard',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Nuisible/Dangereux',
'pornographicVulgar': 'Pornographique/Vulgaire',
'misleadingAttack': 'Trompeur/Attaque',
@ -352,7 +807,7 @@ const Map<String, String> frFR = {
'other': 'Autre',
'reportDescriptionHint':
'Nous aimerions connaître la raison de votre signalement, vous pouvez décrire le problème que vous avez rencontré.',
//'submit': 'Soumettre',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Généré par IA',
@ -375,7 +830,7 @@ const Map<String, String> frFR = {
"driving": "Conduite",
"walking": "Marche",
"bicycling": "Vélo",
"transit": "Transport public",
"tsransit": "Transit",
//天气卡片 weather_card
'weatherQuery': 'Requête météo :',
@ -407,6 +862,17 @@ const Map<String, String> frFR = {
"friday": "Ven",
"saturday": "Sam",
"sunday": "Dim",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Ensoleillé",
"partlyCloudy": "Partiellement nuageux",
@ -442,6 +908,8 @@ const Map<String, String> frFR = {
'deleteAccount': 'Supprimer le compte',
'deleteAccountTips':
'Êtes-vous sûr de vouloir supprimer définitivement votre compte ? Cette action ne peut pas être annulée.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -462,8 +930,8 @@ const Map<String, String> frFR = {
'Erreur interne du serveur, veuillez réessayer plus tard',
// Profile 用户交互
//'error': 'Erreur',
//'success': 'Succès',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Échec de la compression de l\'image',
'avatarUpdateFailed': 'Échec de la mise à jour de l\'avatar',
'usernameCannotBeEmpty': 'Le nom d\'utilisateur ne peut pas être vide',
@ -498,15 +966,26 @@ const Map<String, String> frFR = {
'getPermissionStatusFailed':
'Échec de l\'obtention du statut d\'autorisation',
'communicationPermissions': 'Autorisations de communication',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Autorisations de calendrier',
'locationPermissions': 'Autorisations de localisation',
'phone': 'Téléphone',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Écriture calendrier',
'calendarFullAccess': 'Accès complet au calendrier',
'locationInfo': 'Informations de localisation',
'phonePermissionDesc': 'Utilisé pour les fonctions d\'appel',
'smsPermissionDesc': 'Utilisé pour les fonctions SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Utilisé pour créer des événements de calendrier et des rappels',
'calendarFullAccessPermissionDesc':
@ -524,18 +1003,80 @@ const Map<String, String> frFR = {
'phonePermissionDetailDesc':
'La fonction d\'appel nécessite l\'autorisation téléphone',
'smsPermissionDetailDesc': 'La fonction SMS nécessite l\'autorisation SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'La création d\'événements de calendrier nécessite l\'autorisation d\'écriture calendrier',
'calendarFullAccessPermissionDetailDesc':
'La gestion des événements de calendrier nécessite l\'autorisation complète du calendrier',
'locationPermissionDetailDesc':
'L\'obtention d\'informations de localisation nécessite l\'autorisation de localisation',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'L\'application a besoin de cette autorisation pour une fonctionnalité complète',
'permanentDenialText':
'Vous avez refusé définitivement l\'autorisation {permission}, veuillez aller dans les paramètres de l\'application pour l\'activer',
'goToSettings': 'Aller aux paramètres',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Nouvelle version trouvée', // 版本更新对话框标题
'remindLater': 'Rappeler plus tard', // 稍后提醒按钮
@ -654,8 +1195,23 @@ const Map<String, String> frFR = {
"东帝汶": "Timor Oriental",
"斐济": "Fidji",
"所罗门群岛": "Îles Salomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Historique de traduction",
"enableRecording": "Activer l'enregistrement",
@ -664,9 +1220,24 @@ const Map<String, String> frFR = {
"phoneUser": "Utilisateur de téléphone",
"selectSourceLanguage": "Sélectionner la langue source",
"selectTargetLanguage": "Sélectionner la langue cible",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Aucun historique de traduction",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Effacer l'historique",
"clearHistoryConfirm":
"Êtes-vous sûr de vouloir effacer tout l'historique de traduction ? Cette action ne peut pas être annulée.",
@ -675,7 +1246,58 @@ const Map<String, String> frFR = {
"deleteSessionConfirm":
"Êtes-vous sûr de vouloir supprimer tous les enregistrements de traduction pour cette session ? Cette action ne peut pas être annulée.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Traduire les fichiers audio",
"noAudioFiles": "Aucun fichier audio",
"calculating": "Calcul en cours...",
@ -721,7 +1343,7 @@ const Map<String, String> frFR = {
"autoInputCode": "Saisie automatique du code",
"skipBinding": "Ignorer la liaison",
"rescan": "Rescanner",
"skip": "Ignorer",
"verifyingDevice": "Vérification de l'appareil...",
"confirmBinding": "Confirmer la liaison",
"associatingDevice": "Association de l'appareil...",
@ -756,17 +1378,17 @@ const Map<String, String> frFR = {
"pairingFailedRetry": "Échec de l'appairage, veuillez réessayer",
// 配对控制器相关
//'connectDevice': 'Connecter l\'appareil',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Veuillez activer le Bluetooth',
'deviceDisconnected': 'Appareil déconnecté',
'readyToStartPairing': 'Prêt à démarrer l\'appairage',
'checkingEnvironment': 'Vérification de l\'environnement...',
'ensureHeadsetOnAndPairingMode':
'Veuillez vous assurer que le casque est allumé et en mode appairage',
//'goToBluetoothSettings': 'Aller aux paramètres Bluetooth',
//'verifyingDevice': 'Vérification de l\'appareil...',
//'confirmBinding': 'Confirmer la liaison',
//'associatingDevice': 'Association de l\'appareil...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Établissement d\'une connexion sécurisée...',
'needManualBindingAuthCode':
'Liaison manuelle du code d\'autorisation nécessaire...',
@ -791,6 +1413,19 @@ const Map<String, String> frFR = {
'deviceAuthorizationFailedCheckCode':
'Échec de l\'autorisation d\'appareil, veuillez vérifier le code d\'autorisation',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Commentaires",
'feedbackInfo': 'Donner des commentaires ou suggestions',
@ -818,6 +1453,13 @@ const Map<String, String> frFR = {
"connectionFailed": "Échec de la connexion",
"retryConnection": "Réessayer la connexion",
"ota_updateNow": "Mettre à jour maintenant",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Veuillez maintenir l'appareil connecté, ne fermez pas l'application",
"doNotDisconnect": "Ne pas déconnecter",
@ -873,38 +1515,23 @@ const Map<String, String> frFR = {
"乌尔都语": "Ourdou",
"波斯语": "Persan",
"斯瓦希里语": "Swahili",
// Guide overlay keys (placeholders in English)
"sayLilyHint": "Say \"Lily Lily\" to the mic",
"imHere": "I’m here~",
"guideWelcomeWakeAI": "Welcome to Voitrans! First, wake your AI “Lily”.",
"aiReplyCompleted": "Lily has finished the reply!",
"aiThinking": "Lily is thinking…",
"guideAwakenSuccess": "Great! Lily is awake—ask it to help.",
"confirmInput": "Confirm Input",
"guideClickSendPrefix": "Tap send, ",
"guideWeatherStart": "Tell Lily: “What’s the weather today?”",
"guideWeatherInput": "What’s the weather today?",
"guideWeatherSend": "Lily will report the weather in real time",
"guideWeatherEnd": "Lily can report weather live—try other commands",
"guideMusicStart": "Tell Lily: “Play some rock music”",
"guideMusicInput": "Play some rock music",
"guideMusicSend": "Lily will find music for you",
"guideMusicEnd": "Lily found music—try other commands",
"guideNavStart": "Tell Lily: “Navigate to Shenzhen Airport”",
"guideNavInput": "Navigate to Shenzhen Airport",
"guideNavSend": "Lily will plan the route",
"guideNavEnd": "Navigation set—try other commands",
"guideMeetingStart":
"Tell Lily: “Create a meeting reminder for 3pm tomorrow”",
"guideMeetingInput": "Create a meeting reminder for 3pm tomorrow",
"guideMeetingSend": "Lily will create a meeting reminder",
"guideMeetingEnd": "Reminder created—try other commands",
"guidePhoneStart": "Tell Lily: “Call Mom”",
"guidePhoneInput": "Call Mom",
"guidePhoneSend": "Lily will make the call",
"guidePhoneEnd": "Call placed—try other commands",
"guideSmsStart": "Tell Lily: “Send Dad a text: I’ll be home for dinner”",
"guideSmsInput": "Text Dad: I’ll be home for dinner",
"guideSmsSend": "Lily will send the message",
"guideSmsEnd": "Message sent—voice control is convenient",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

File diff suppressed because it is too large

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

@ -33,6 +33,7 @@ const Map<String, String> hrHR = {
"spanish": "Španjolski",
"portuguese": "Portugalski",
"traditionalChinese": "Tradicionalni kineski",
"traditionalChineseHK": "Tradicionalni kineski (Hong Kong)",
"japanese": "Japanski",
"korean": "Korejski",
"french": "Francuski",
@ -100,12 +101,15 @@ const Map<String, String> hrHR = {
"usePasswordLogin": "Prijava lozinkom",
// 隐私政策弹窗
"loginDeclaration": "Izjava tvrtke Voitrans",
"welcomeToThisApp": "Dobrodošli u Voitrans, molimo pročitajte pažljivo",
"loginDeclaration": "Izjava tvrtke Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Dobrodošli u Voitrans, molimo pročitajte pažljivo", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", klikom na 'Slažem se i ulazim' potvrđujete da ste u potpunosti pročitali i da se slažete s gore navedenim ugovorima. Klikom na 'Ne slažem se' izaći ćete iz aplikacije.",
"disagree": "Ne slažem se",
"agreeAndEnter": "Slažem se i ulazim",
", klikom na 'Slažem se i ulazim' potvrđujete da ste u potpunosti pročitali i da se slažete s gore navedenim ugovorima. Klikom na 'Ne slažem se' izaći ćete iz aplikacije.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Ne slažem se", // 不同意
"agreeAndEnter": "Slažem se i ulazim", // 同意并进入
// 首页
"deviceStatus": "Status uređaja",
@ -187,6 +191,209 @@ const Map<String, String> hrHR = {
"usageStats": "Statistika upotrebe",
"usageStatsInfo": "Pregledajte statistiku upotrebe aplikacije",
"scene": "Scenarij",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Preskoči",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Započni sastanak",
@ -201,13 +408,244 @@ const Map<String, String> hrHR = {
'aiSummary': 'AI sažetak',
'meetingTranscript': 'Transkript sastanka',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Postavke sustava", //系统设置
"vipRecharge": "Ponuda premium članstva", //会员充值
"aiRecharge": "Premium član", //AI充值
"translationRecharge": "Prijevod ponuda", //翻译充值
"meetingAssistantRecharge": "Asistent sastanka ponuda", //会议助手充值
"cloudSync": "Synchronizacija u oblaku ponuda", //云端同步
"systemSettings": "Postavke sustava",
"vipRecharge": "Ponuda premium članstva",
"aiRecharge": "Premium član",
"translationRecharge": "Prijevod ponuda",
"meetingAssistantRecharge": "Asistent sastanka ponuda",
"cloudSync": "Synchronizacija u oblaku ponuda",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Povezan uređaj:",
"accountId": "ID računa:",
"systemSetting": "Postavke sustava",
@ -219,8 +657,9 @@ const Map<String, String> hrHR = {
"lastBackup": "Posljednja sigurnosna kopija:",
"privacySettings": "Postavke privatnosti",
"privacySettingsInfo": "Upravljanje prikupljanjem podataka i dopuštenjima",
"permissionManagement": "Upravljanje dopuštenjima",
"permissionManagementInfo": "Upravljanje postavkama dopuštenja aplikacije",
"permissionManagement": "Upravljanje dopuštenjima", // 权限管理
"permissionManagementInfo":
"Upravljanje postavkama dopuštenja aplikacije", // 管理应用权限设置
"aboutApplication": "O aplikaciji",
"versions": "Verzija",
"checkUpdates": "Provjeri ažuriranja",
@ -255,11 +694,10 @@ const Map<String, String> hrHR = {
'networkErrorRetry': 'Mrežna greška, pokušajte ponovno kasnije',
// 设备管理相关
'clearPairedDevices': 'Obriši uparene uređaje',
'clearPairedDevicesConfirm':
'Jeste li sigurni da želite obrisati sve uparene uređaje?',
'clearPairedDevicesSuccess': 'Uspješno obrisani upareni uređaji',
'clearPairedDevicesFailed': 'Brisanje uparenih uređaja nije uspjelo',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Glasovni chat u stvarnom vremenu",
@ -268,11 +706,20 @@ const Map<String, String> hrHR = {
"loading": "Učitavanje...",
//设备管理页面
"earphone": "Slušalice",
"voicerecorder": "Diktafon",
"notBound": "Nije povezano",
"deviceNotBoundYet": "Uređaj još uvijek nije povezan",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Prekini vezu",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -301,6 +748,20 @@ const Map<String, String> hrHR = {
"loadMoreMessages": "Učitaj još poruka...",
"loadFailedClickRetry": "Neuspješno učitavanje, kliknite za ponovni pokušaj",
"swipeUpForMore": "Prijeđite prstom prema gore za više",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Zdravo! Ja sam **Lily**, mogu vam pomoći:\n\n'
@ -323,8 +784,8 @@ const Map<String, String> hrHR = {
'startPhoneCallMode': 'Započni način poziva, započni unos glasom',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Unesite svoju poruku ovdje...',
'characterCount': '{count} znakova',
'fullScreenEditorHint': 'Unesite svoju poruku ovdje...', // 全屏编辑器输入提示
'characterCount': '{count} znakova', // 字符计数显示
// 消息长按操作
'copy': 'Kopiraj',
@ -333,6 +794,7 @@ const Map<String, String> hrHR = {
'submitSuccess': 'Uspješno poslano',
'submitFailed': 'Slanje nije uspjelo',
'reportSubmitted': 'Prijava je poslana, obradit ćemo je što je prije moguće',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Štetno/Opasno',
'pornographicVulgar': 'Pornografski/Prostački',
'misleadingAttack': 'Obmanjujuće/Napad',
@ -342,6 +804,7 @@ const Map<String, String> hrHR = {
'other': 'Ostalo',
'reportDescriptionHint':
'Želimo znati razlog vaše prijave, možete opisati problem s kojim ste se suočili.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Generirano od strane AI',
@ -352,15 +815,15 @@ const Map<String, String> hrHR = {
'moreMusic': 'Još glazbe',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'sati',
'minutes': 'minuta',
'seconds': 'sekundi',
'navigating': 'Navigacija',
'currentLocation': 'Trenutna lokacija',
'approximate': 'Približno',
'enterRoad': 'Uđi na cestu',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'sati', // 小时单位
'minutes': 'minuta', // 分钟单位
'seconds': 'sekundi', // 秒单位
'navigating': 'Navigacija', // 导航状态
'currentLocation': 'Trenutna lokacija', // 当前位置
'approximate': 'Približno', // 大约
'enterRoad': 'Uđi na cestu', // 进入道路
"driving": "Vožnja",
"walking": "Hodanje",
"bicycling": "Biciklizam",
@ -395,6 +858,17 @@ const Map<String, String> hrHR = {
"friday": "Pet",
"saturday": "Sub",
"sunday": "Ned",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Sunčano",
"partlyCloudy": "Djelomično oblačno",
@ -430,6 +904,8 @@ const Map<String, String> hrHR = {
'deleteAccount': 'Obriši račun',
'deleteAccountTips':
'Jeste li sigurni da želite trajno obrisati svoj račun? Ova se radnja ne može poništiti.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -450,6 +926,8 @@ const Map<String, String> hrHR = {
'Interna greška na poslužitelju, pokušajte ponovno kasnije',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Kompresija slike nije uspjela',
'avatarUpdateFailed': 'Ažuriranje avatara nije uspjelo',
'usernameCannotBeEmpty': 'Korisničko ime ne može biti prazno',
@ -462,29 +940,45 @@ const Map<String, String> hrHR = {
'deleteAccountFailedRetry': 'Brisanje računa nije uspjelo, pokušajte ponovno',
// 账号服务相关
'clearUserDataFailed': 'Brisanje korisničkih podataka nije uspjelo',
'deleteUserDataFailed': 'Brisanje korisničkih podataka nije uspjelo',
'thirdPartyLogoutSuccess': 'Uspješna odjava treće strane',
'thirdPartyLogoutFailed': 'Odjava treće strane nije uspjela',
'signOutProcessError': 'Došlo je do greške tijekom procesa odjave',
'clearUserDataFailed':
'Brisanje korisničkih podataka nije uspjelo', // 清理用户数据失败
'deleteUserDataFailed':
'Brisanje korisničkih podataka nije uspjelo', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Uspješna odjava treće strane', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Odjava treće strane nije uspjela', // 第三方登录退出失败
'signOutProcessError':
'Došlo je do greške tijekom procesa odjave', // 登出过程发生错误
'deleteAccountProcessError':
'Došlo je do greške tijekom procesa brisanja računa',
'userDataClearSuccess': 'Korisnički podaci uspješno obrisani',
'allUserDataClearSuccess': 'Svi korisnički podaci uspješno obrisani',
'accountServiceInitialized': 'AccountService je inicijaliziran',
'Došlo je do greške tijekom procesa brisanja računa', // 删除账号过程发生错误
'userDataClearSuccess': 'Korisnički podaci uspješno obrisani', // 用户数据清理成功
'allUserDataClearSuccess':
'Svi korisnički podaci uspješno obrisani', // 所有用户数据清理成功
'accountServiceInitialized':
'AccountService je inicijaliziran', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Dohvaćanje statusa dopuštenja nije uspjelo',
'communicationPermissions': 'Komunikacijska dopuštenja',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Dopuštenja za kalendar',
'locationPermissions': 'Dopuštenja za lokaciju',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Pisanje u kalendar',
'calendarFullAccess': 'Potpuni pristup kalendaru',
'locationInfo': 'Informacije o lokaciji',
'phonePermissionDesc': 'Koristi se za funkciju pozivanja',
'smsPermissionDesc': 'Koristi se za funkciju slanja SMS-a',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Koristi se za stvaranje događaja i podsjetnika u kalendaru',
'calendarFullAccessPermissionDesc':
@ -503,28 +997,90 @@ const Map<String, String> hrHR = {
'Funkcija pozivanja zahtijeva dopuštenje za telefon',
'smsPermissionDetailDesc':
'Funkcija slanja SMS-a zahtijeva dopuštenje za SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Stvaranje događaja u kalendaru zahtijeva dopuštenje za pisanje u kalendar',
'calendarFullAccessPermissionDetailDesc':
'Upravljanje događajima u kalendaru zahtijeva potpuno dopuštenje za kalendar',
'locationPermissionDetailDesc':
'Dobivanje informacija o lokaciji zahtijeva dopuštenje za lokaciju',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplikacija zahtijeva ovo dopuštenje za punu funkcionalnost',
'permanentDenialText':
'Trajno ste odbili dopuštenje za {permission}, idite u postavke aplikacije da biste ga omogućili',
'goToSettings': 'Idi na postavke',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Pronađena nova verzija',
'remindLater': 'Podsjeti me kasnije',
'updateNow': 'Ažuriraj sada',
'checkUpdate': 'Provjeri ažuriranja',
'updateFailed': 'Ažuriranje nije uspjelo',
'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题
'remindLater': 'Podsjeti me kasnije', // 稍后提醒按钮
'updateNow': 'Ažuriraj sada', // 立即更新按钮
'checkUpdate': 'Provjeri ažuriranja', // 检查更新按钮
'updateFailed': 'Ažuriranje nije uspjelo', // 更新失败提示
'cannotOpenAppStore':
'Nije moguće otvoriti trgovinu aplikacija, idite ručno u trgovinu da biste ažurirali',
'Nije moguće otvoriti trgovinu aplikacija, idite ručno u trgovinu da biste ažurirali', // 无法打开应用商店提示
'updateErrorRetry':
'Došlo je do greške tijekom ažuriranja, pokušajte ponovno kasnije',
'Došlo je do greške tijekom ažuriranja, pokušajte ponovno kasnije', // 更新错误重试提示
//国家列表
"邮箱": "E-pošta",
@ -633,8 +1189,23 @@ const Map<String, String> hrHR = {
"东帝汶": "Istočni Timor",
"斐济": "Fidži",
"所罗门群岛": "Salomonski Otoci",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Povijest prijevoda",
"enableRecording": "Omogući snimanje",
@ -643,9 +1214,24 @@ const Map<String, String> hrHR = {
"phoneUser": "Korisnik telefona",
"selectSourceLanguage": "Odaberi izvorni jezik",
"selectTargetLanguage": "Odaberi ciljni jezik",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Nema povijesti",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Obriši povijest",
"clearHistoryConfirm":
"Jeste li sigurni da želite obrisati cijelu povijest prijevoda? Ova se radnja ne može poništiti.",
@ -654,7 +1240,58 @@ const Map<String, String> hrHR = {
"deleteSessionConfirm":
"Jeste li sigurni da želite obrisati sve zapise prijevoda za ovu sesiju? Ova se radnja ne može poništiti.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Prevedi audio datoteke",
"noAudioFiles": "Nema audio datoteka",
"calculating": "Izračunavanje...",
@ -700,7 +1337,7 @@ const Map<String, String> hrHR = {
"autoInputCode": "Automatski unos koda",
"skipBinding": "Preskoči povezivanje",
"rescan": "Ponovno skeniraj",
"skip": "Preskoči",
"verifyingDevice": "Verifikacija uređaja...",
"confirmBinding": "Potvrdi povezivanje",
"associatingDevice": "Povezivanje uređaja...",
@ -733,12 +1370,17 @@ const Map<String, String> hrHR = {
"pairingFailedRetry": "Uparivanje nije uspjelo, pokušajte ponovno",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Omogućite Bluetooth',
'deviceDisconnected': 'Uređaj je isključen',
'readyToStartPairing': 'Spremno za početak uparivanja',
'checkingEnvironment': 'Provjera okruženja...',
'ensureHeadsetOnAndPairingMode':
'Provjerite jesu li slušalice uključene i u načinu uparivanja',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Uspostavljanje sigurne veze...',
'needManualBindingAuthCode':
'Potreban je kod za autorizaciju ručnog povezivanja...',
@ -762,6 +1404,19 @@ const Map<String, String> hrHR = {
'deviceAuthorizationFailedCheckCode':
'Autorizacija uređaja nije uspjela, provjerite autorizacijski kod',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Povratne informacije korisnika",
'feedbackInfo': 'Dajte povratne informacije ili prijedloge',
@ -791,6 +1446,13 @@ const Map<String, String> hrHR = {
"connectionFailed": "Povezivanje nije uspjelo",
"retryConnection": "Pokušaj ponovno povezivanje",
"ota_updateNow": "Ažuriraj sada",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Držite uređaj povezanim, ne zatvarajte aplikaciju",
"doNotDisconnect": "Ne prekidajte vezu",
"charging": "Punjenje",
@ -799,11 +1461,11 @@ const Map<String, String> hrHR = {
"Izvadite obje slušalice i provjerite je li baterija obje iznad 20%",
// 音乐列表页面
"noMusic": "Nema glazbe",
"noPlayingMusic": "Nema glazbe koja se reproducira",
"unknownSong": "Nepoznata pjesma",
"unknownArtist": "Nepoznat izvođač",
"playAll": "Reproduciraj sve",
"noMusic": "Nema glazbe", // 暂无音乐
"noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐
"unknownSong": "Nepoznata pjesma", // 未知歌曲
"unknownArtist": "Nepoznat izvođač", // 未知歌手
"playAll": "Reproduciraj sve", // 播放全部
// 语言名称
"中文(简体)": "Kineski (pojednostavljeni)",
@ -845,4 +1507,23 @@ const Map<String, String> hrHR = {
"乌尔都语": "Urdu",
"波斯语": "Perzijski",
"斯瓦希里语": "Svahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> huHU = {
"spanish": "Spanyol",
"portuguese": "Portugál",
"traditionalChinese": "Hagyományos kínai",
"traditionalChineseHK": "Hagyományos kínai (Hongkong)",
"japanese": "Japán",
"korean": "Koreai",
"french": "Francia",
@ -101,13 +102,15 @@ const Map<String, String> huHU = {
"usePasswordLogin": "Bejelentkezés jelszóval",
// 隐私政策弹窗
"loginDeclaration": "Voitrans nyilatkozat",
"loginDeclaration": "Voitrans nyilatkozat", // Voitrans 声明
"welcomeToThisApp":
"Üdvözöljük a Voitransban, kérjük, olvassa el figyelmesen",
"Üdvözöljük a Voitransban, kérjük, olvassa el figyelmesen", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", a 'Elfogadom és belépek' gombra kattintva megerősíti, hogy elolvasta és elfogadja a fenti megállapodásokat. A 'Nem fogadom el' gombra kattintva kilép az alkalmazásból.",
"disagree": "Nem fogadom el",
"agreeAndEnter": "Elfogadom és belépek",
", a 'Elfogadom és belépek' gombra kattintva megerősíti, hogy elolvasta és elfogadja a fenti megállapodásokat. A 'Nem fogadom el' gombra kattintva kilép az alkalmazásból.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Nem fogadom el", // 不同意
"agreeAndEnter": "Elfogadom és belépek", // 同意并进入
// 首页
"deviceStatus": "Eszköz állapota",
@ -188,6 +191,209 @@ const Map<String, String> huHU = {
"usageStats": "Használati statisztika",
"usageStatsInfo": "Lásd a használati statisztikát",
"scene": "Helyzet",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Kihagyás",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Megbeszélés indítása",
@ -202,13 +408,244 @@ const Map<String, String> huHU = {
'aiSummary': 'AI összefoglaló',
'meetingTranscript': 'Megbeszélés átirata',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Rendszerbeállítások", //系统设置
"vipRecharge": "Prémium tag ponuda", //会员充值
"aiRecharge": "Prémium tag", //AI充值
"translationRecharge": "Fordítás ponuda", //翻译充值
"meetingAssistantRecharge": "Megbeszélés asszisztens ponuda", //会议助手充值
"cloudSync": "Synchronizációs ponuda", //云端同步
"systemSettings": "Rendszerbeállítások",
"vipRecharge": "Prémium tag ponuda",
"aiRecharge": "Prémium tag",
"translationRecharge": "Fordítás ponuda",
"meetingAssistantRecharge": "Megbeszélés asszisztens ponuda",
"cloudSync": "Synchronizációs ponuda",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Csatlakoztatott eszköz:",
"accountId": "Fiók azonosító:",
"systemSetting": "Rendszerbeállítás",
@ -220,8 +657,9 @@ const Map<String, String> huHU = {
"lastBackup": "Utolsó mentés:",
"privacySettings": "Adatvédelmi beállítások",
"privacySettingsInfo": "Adatgyűjtés és engedélyek kezelése",
"permissionManagement": "Engedélykezelés",
"permissionManagementInfo": "Alkalmazásengedély-beállítások kezelése",
"permissionManagement": "Engedélykezelés", // 权限管理
"permissionManagementInfo":
"Alkalmazásengedély-beállítások kezelése", // 管理应用权限设置
"aboutApplication": "Az alkalmazásról",
"versions": "Verzió",
"checkUpdates": "Frissítések keresése",
@ -257,10 +695,10 @@ const Map<String, String> huHU = {
'networkErrorRetry': 'Hálózati hiba, próbálja újra később',
// 设备管理相关
'clearPairedDevices': 'Párosított eszközök törlése',
'clearPairedDevicesConfirm': 'Biztosan törli az összes párosított eszközt?',
'clearPairedDevicesSuccess': 'A párosított eszközök sikeresen törölve',
'clearPairedDevicesFailed': 'A párosított eszközök törlése sikertelen',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Valós idejű hangcsevegés",
@ -269,11 +707,20 @@ const Map<String, String> huHU = {
"loading": "Betöltés...",
//设备管理页面
"earphone": "Fülhallgató",
"voicerecorder": "Diktafon",
"notBound": "Nincs párosítva",
"deviceNotBoundYet": "Még nincs párosított eszköz",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Párosítás megszüntetése",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -303,6 +750,20 @@ const Map<String, String> huHU = {
"loadFailedClickRetry":
"Betöltés sikertelen, kattintson az újrapróbálkozáshoz",
"swipeUpForMore": "Húzza felfelé a továbbiakért",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Szia! **Lily** vagyok, segíthetek neked:\n\n'
@ -325,8 +786,8 @@ const Map<String, String> huHU = {
'startPhoneCallMode': 'Hívás mód indítása, hangbevitel indítása',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Írja ide az üzenetét...',
'characterCount': '{count} karakter',
'fullScreenEditorHint': 'Írja ide az üzenetét...', // 全屏编辑器输入提示
'characterCount': '{count} karakter', // 字符计数显示
// 消息长按操作
'copy': 'Másolás',
@ -335,6 +796,7 @@ const Map<String, String> huHU = {
'submitSuccess': 'Sikeresen elküldve',
'submitFailed': 'Küldés sikertelen',
'reportSubmitted': 'A jelentés elküldve, mihamarabb feldolgozzuk',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Káros/Nem biztonságos',
'pornographicVulgar': 'Pornográf/Vulgáris',
'misleadingAttack': 'Félrevezető/Támadó',
@ -344,6 +806,7 @@ const Map<String, String> huHU = {
'other': 'Egyéb',
'reportDescriptionHint':
'Szeretnénk tudni a jelentés okát, leírhatja a tapasztalt problémát.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'AI által generált',
@ -354,15 +817,15 @@ const Map<String, String> huHU = {
'moreMusic': 'Több zene',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'óra',
'minutes': 'perc',
'seconds': 'másodperc',
'navigating': 'Navigálás',
'currentLocation': 'Jelenlegi hely',
'approximate': 'Kb.',
'enterRoad': 'Ráhajtás',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'óra', // 小时单位
'minutes': 'perc', // 分钟单位
'seconds': 'másodperc', // 秒单位
'navigating': 'Navigálás', // 导航状态
'currentLocation': 'Jelenlegi hely', // 当前位置
'approximate': 'Kb.', // 大约
'enterRoad': 'Ráhajtás', // 进入道路
"driving": "Vezetés",
"walking": "Gyaloglás",
"bicycling": "Kerékpározás",
@ -397,6 +860,17 @@ const Map<String, String> huHU = {
"friday": "Pé",
"saturday": "Szo",
"sunday": "Va",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Napos",
"partlyCloudy": "Részben felhős",
@ -432,6 +906,8 @@ const Map<String, String> huHU = {
'deleteAccount': 'Fiók törlése',
'deleteAccountTips':
'Biztosan véglegesen törli a fiókját? Ezt a műveletet nem lehet visszavonni.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -453,6 +929,8 @@ const Map<String, String> huHU = {
'serverInternalErrorRetryLater': 'Belső szerverhiba, próbálja újra később',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'A képtömörítés sikertelen',
'avatarUpdateFailed': 'Az avatar frissítése sikertelen',
'usernameCannotBeEmpty': 'A felhasználónév nem lehet üres',
@ -465,29 +943,46 @@ const Map<String, String> huHU = {
'deleteAccountFailedRetry': 'A fiók törlése sikertelen, próbálja újra',
// 账号服务相关
'clearUserDataFailed': 'A felhasználói adatok törlése sikertelen',
'deleteUserDataFailed': 'A felhasználói adatok törlése sikertelen',
'thirdPartyLogoutSuccess': 'A harmadik féltől származó kijelentkezés sikeres',
'clearUserDataFailed': 'A felhasználói adatok törlése sikertelen', // 清理用户数据失败
'deleteUserDataFailed':
'A felhasználói adatok törlése sikertelen', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'A harmadik féltől származó kijelentkezés sikeres', // 第三方登录退出成功
'thirdPartyLogoutFailed':
'A harmadik féltől származó kijelentkezés sikertelen',
'signOutProcessError': 'Hiba történt a kijelentkezési folyamat során',
'deleteAccountProcessError': 'Hiba történt a fióktörlési folyamat során',
'userDataClearSuccess': 'A felhasználói adatok sikeresen törölve',
'allUserDataClearSuccess': 'Az összes felhasználói adat sikeresen törölve',
'accountServiceInitialized': 'A fiókszolgáltatás inicializálva',
'A harmadik féltől származó kijelentkezés sikertelen', // 第三方登录退出失败
'signOutProcessError':
'Hiba történt a kijelentkezési folyamat során', // 登出过程发生错误
'deleteAccountProcessError':
'Hiba történt a fióktörlési folyamat során', // 删除账号过程发生错误
'userDataClearSuccess': 'A felhasználói adatok sikeresen törölve', // 用户数据清理成功
'allUserDataClearSuccess':
'Az összes felhasználói adat sikeresen törölve', // 所有用户数据清理成功
'accountServiceInitialized':
'A fiókszolgáltatás inicializálva', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Az engedély állapotának lekérése sikertelen',
'communicationPermissions': 'Kommunikációs engedélyek',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Naptár engedélyek',
'locationPermissions': 'Helymeghatározási engedélyek',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Naptárba írás',
'calendarFullAccess': 'Teljes naptár-hozzáférés',
'locationInfo': 'Helyinformáció',
'phonePermissionDesc': 'A hívás funkcióhoz használatos',
'smsPermissionDesc': 'Az SMS küldési funkcióhoz használatos',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Naptáresemények és emlékeztetők létrehozásához használatos',
'calendarFullAccessPermissionDesc':
@ -504,27 +999,90 @@ const Map<String, String> huHU = {
'permissionRequestError': 'Hiba az engedély kérésekor',
'phonePermissionDetailDesc': 'A hívás funkcióhoz telefonengedély szükséges',
'smsPermissionDetailDesc': 'Az SMS küldési funkcióhoz SMS engedély szükséges',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'A naptáresemények létrehozásához naptárírási engedély szükséges',
'calendarFullAccessPermissionDetailDesc':
'A naptáresemények kezeléséhez teljes naptárengedély szükséges',
'locationPermissionDetailDesc':
'A helyinformációk lekéréséhez helymeghatározási engedély szükséges',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Az alkalmazásnak szüksége van erre az engedélyre a teljes funkcionalitáshoz',
'permanentDenialText':
'Véglegesen letiltotta a(z) {permission} engedélyt, kérjük, engedélyezze az alkalmazás beállításaiban',
'goToSettings': 'Ugrás a beállításokhoz',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Új verzió található',
'remindLater': 'Emlékeztessen később',
'updateNow': 'Frissítés most',
'checkUpdate': 'Frissítés keresése',
'updateFailed': 'A frissítés sikertelen',
'newVersionFound': 'Új verzió található', // 版本更新对话框标题
'remindLater': 'Emlékeztessen később', // 稍后提醒按钮
'updateNow': 'Frissítés most', // 立即更新按钮
'checkUpdate': 'Frissítés keresése', // 检查更新按钮
'updateFailed': 'A frissítés sikertelen', // 更新失败提示
'cannotOpenAppStore':
'Nem lehet megnyitni az alkalmazásboltot, kérjük, manuálisan keresse fel a frissítéshez',
'updateErrorRetry': 'Hiba történt a frissítés során, próbálja újra később',
'Nem lehet megnyitni az alkalmazásboltot, kérjük, manuálisan keresse fel a frissítéshez', // 无法打开应用商店提示
'updateErrorRetry':
'Hiba történt a frissítés során, próbálja újra később', // 更新错误重试提示
//国家列表
"邮箱": "E-mail",
@ -633,8 +1191,23 @@ const Map<String, String> huHU = {
"东帝汶": "Kelet-Timor",
"斐济": "Fidzsi-szigetek",
"所罗门群岛": "Salamon-szigetek",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Fordítási előzmények",
"enableRecording": "Felvétel engedélyezése",
@ -643,9 +1216,24 @@ const Map<String, String> huHU = {
"phoneUser": "Telefon-felhasználó",
"selectSourceLanguage": "Forrásnyelv kiválasztása",
"selectTargetLanguage": "Célnyelv kiválasztása",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Még nincsenek előzmények",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Előzmények törlése",
"clearHistoryConfirm":
"Biztosan törli az összes fordítási előzményt? Ezt a műveletet nem lehet visszavonni.",
@ -654,7 +1242,58 @@ const Map<String, String> huHU = {
"deleteSessionConfirm":
"Biztosan törli az összes fordítási rekordot ehhez a munkamenethez? Ezt a műveletet nem lehet visszavonni.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Hangfájlok fordítása",
"noAudioFiles": "Még nincsenek hangfájlok",
"calculating": "Számítás...",
@ -700,7 +1339,7 @@ const Map<String, String> huHU = {
"autoInputCode": "Kód automatikus bevitele",
"skipBinding": "Párosítás kihagyása",
"rescan": "Újraszkennelés",
"skip": "Kihagyás",
"verifyingDevice": "Eszköz ellenőrzése...",
"confirmBinding": "Párosítás megerősítése",
"associatingDevice": "Eszköz társítása...",
@ -732,12 +1371,17 @@ const Map<String, String> huHU = {
"pairingFailedRetry": "A párosítás sikertelen, próbálja újra",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Kérjük, engedélyezze a Bluetooth-t',
'deviceDisconnected': 'Az eszköz lecsatlakoztatva',
'readyToStartPairing': 'Készen áll a párosítás megkezdésére',
'checkingEnvironment': 'Környezet ellenőrzése...',
'ensureHeadsetOnAndPairingMode':
'Győződjön meg róla, hogy a fülhallgató be van kapcsolva és párosítási módban van',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Biztonságos kapcsolat létrehozása...',
'needManualBindingAuthCode': 'Kézi párosítási engedélyezési kód szükséges...',
'pairingSuccessful': 'A párosítás sikeres!',
@ -761,6 +1405,19 @@ const Map<String, String> huHU = {
'deviceAuthorizationFailedCheckCode':
'Az eszközengedélyezés sikertelen, ellenőrizze az engedélyezési kódot',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Felhasználói visszajelzés",
'feedbackInfo': 'Adjon visszajelzést vagy javaslatot',
@ -790,6 +1447,13 @@ const Map<String, String> huHU = {
"connectionFailed": "A kapcsolat sikertelen",
"retryConnection": "Kapcsolat újrapróbálása",
"ota_updateNow": "Frissítés most",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Tartsa csatlakoztatva az eszközt, ne zárja be az alkalmazást",
"doNotDisconnect": "Ne szakítsa meg a kapcsolatot",
@ -799,11 +1463,11 @@ const Map<String, String> huHU = {
"Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van",
// 音乐列表页面
"noMusic": "Nincs zene",
"noPlayingMusic": "Nincs lejátszott zene",
"unknownSong": "Ismeretlen dal",
"unknownArtist": "Ismeretlen előadó",
"playAll": "Összes lejátszása",
"noMusic": "Nincs zene", // 暂无音乐
"noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐
"unknownSong": "Ismeretlen dal", // 未知歌曲
"unknownArtist": "Ismeretlen előadó", // 未知歌手
"playAll": "Összes lejátszása", // 播放全部
// 语言名称
"中文(简体)": "Kínai (egyszerűsített)",
@ -845,4 +1509,23 @@ const Map<String, String> huHU = {
"乌尔都语": "Urdu",
"波斯语": "Perzsa",
"斯瓦希里语": "Szuahéli",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> idID = {
"spanish": "Bahasa Spanyol",
"portuguese": "Bahasa Portugis",
"traditionalChinese": "Bahasa Mandarin Tradisional",
"traditionalChineseHK": "Cina Tradisional (Hong Kong)",
"japanese": "Bahasa Jepang",
"korean": "Bahasa Korea",
"french": "Bahasa Prancis",
@ -99,12 +100,15 @@ const Map<String, String> idID = {
"usePasswordLogin": "Masuk dengan kata sandi",
// 隐私政策弹窗
"loginDeclaration": "Deklarasi Voitrans",
"welcomeToThisApp": "Selamat datang di Voitrans, silakan baca dengan seksama",
"loginDeclaration": "Deklarasi Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Selamat datang di Voitrans, silakan baca dengan seksama", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", dengan mengklik 'Setuju dan Masuk' berarti Anda telah membaca dan menyetujui perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.",
"disagree": "Tidak Setuju",
"agreeAndEnter": "Setuju dan Masuk",
", dengan mengklik 'Setuju dan Masuk' berarti Anda telah membaca dan menyetujui perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Tidak Setuju", // 不同意
"agreeAndEnter": "Setuju dan Masuk", // 同意并进入
// 首页
"deviceStatus": "Status Perangkat",
@ -183,6 +187,209 @@ const Map<String, String> idID = {
"usageStats": "Statistik Penggunaan",
"usageStatsInfo": "Lihat statistik penggunaan aplikasi",
"scene": "Skenario",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Lewati",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Mulai Rapat",
@ -197,13 +404,244 @@ const Map<String, String> idID = {
'aiSummary': 'Ringkasan AI',
'meetingTranscript': 'Transkrip Rapat',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Pengaturan Sistem", //系统设置
"vipRecharge": "Pembayaran Premium", //会员充值
"aiRecharge": "Anggota Premium", //AI充值
"translationRecharge": "Pembayaran Terjemahan", //翻译充值
"meetingAssistantRecharge": "Pembayaran Asisten Rapat", //会议助手充值
"cloudSync": "Pembayaran Sinkronisasi awan", //云端同步
"systemSettings": "Pengaturan Sistem",
"vipRecharge": "Pembayaran Premium",
"aiRecharge": "Anggota Premium",
"translationRecharge": "Pembayaran Terjemahan",
"meetingAssistantRecharge": "Pembayaran Asisten Rapat",
"cloudSync": "Pembayaran Sinkronisasi awan",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Perangkat terhubung:",
"accountId": "ID Akun:",
"systemSetting": "Pengaturan Sistem",
@ -215,8 +653,8 @@ const Map<String, String> idID = {
"lastBackup": "Cadangan terakhir:",
"privacySettings": "Pengaturan Privasi",
"privacySettingsInfo": "Kelola pengumpulan data dan izin",
"permissionManagement": "Manajemen Izin",
"permissionManagementInfo": "Kelola pengaturan izin aplikasi",
"permissionManagement": "Manajemen Izin", // 权限管理
"permissionManagementInfo": "Kelola pengaturan izin aplikasi", // 管理应用权限设置
"aboutApplication": "Tentang Aplikasi",
"versions": "Versi",
"checkUpdates": "Periksa Pembaruan",
@ -251,11 +689,10 @@ const Map<String, String> idID = {
'networkErrorRetry': 'Kesalahan jaringan, silakan coba lagi nanti',
// 设备管理相关
'clearPairedDevices': 'Hapus Perangkat yang Dipasangkan',
'clearPairedDevicesConfirm':
'Apakah Anda yakin ingin menghapus semua perangkat yang dipasangkan?',
'clearPairedDevicesSuccess': 'Berhasil menghapus perangkat yang dipasangkan',
'clearPairedDevicesFailed': 'Gagal menghapus perangkat yang dipasangkan',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Obrolan Suara Waktu Nyata",
@ -264,11 +701,20 @@ const Map<String, String> idID = {
"loading": "Memuat...",
//设备管理页面
"earphone": "Earphone",
"voicerecorder": "Perekam Suara",
"notBound": "Tidak Terikat",
"deviceNotBoundYet": "Belum ada perangkat yang terikat",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Putuskan Ikatan",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -298,6 +744,20 @@ const Map<String, String> idID = {
"loadMoreMessages": "Muat lebih banyak pesan...",
"loadFailedClickRetry": "Gagal memuat, klik untuk mencoba lagi",
"swipeUpForMore": "Geser ke atas untuk lebih banyak",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Halo! Saya **Lily**, saya bisa membantu Anda:\n\n'
@ -320,8 +780,8 @@ const Map<String, String> idID = {
'startPhoneCallMode': 'Mulai mode panggilan telepon, mulai input suara',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Masukkan pesan Anda di sini...',
'characterCount': '{count} karakter',
'fullScreenEditorHint': 'Masukkan pesan Anda di sini...', // 全屏编辑器输入提示
'characterCount': '{count} karakter', // 字符计数显示
// 消息长按操作
'copy': 'Salin',
@ -331,6 +791,7 @@ const Map<String, String> idID = {
'submitFailed': 'Gagal dikirim',
'reportSubmitted':
'Laporan telah dikirim, kami akan memprosesnya sesegera mungkin',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Berbahaya/Tidak Aman',
'pornographicVulgar': 'Pornografi/Vulgär',
'misleadingAttack': 'Menyesatkan/Serangan',
@ -340,6 +801,7 @@ const Map<String, String> idID = {
'other': 'Lainnya',
'reportDescriptionHint':
'Kami ingin tahu alasan Anda melaporkan, Anda dapat menjelaskan masalah yang Anda hadapi.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Dihasilkan oleh AI',
@ -350,15 +812,15 @@ const Map<String, String> idID = {
'moreMusic': 'Lebih Banyak Musik',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'jam',
'minutes': 'menit',
'seconds': 'detik',
'navigating': 'Menavigasi',
'currentLocation': 'Lokasi Saat Ini',
'approximate': 'Kira-kira',
'enterRoad': 'Masuk jalan',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'jam', // 小时单位
'minutes': 'menit', // 分钟单位
'seconds': 'detik', // 秒单位
'navigating': 'Menavigasi', // 导航状态
'currentLocation': 'Lokasi Saat Ini', // 当前位置
'approximate': 'Kira-kira', // 大约
'enterRoad': 'Masuk jalan', // 进入道路
"driving": "Mengemudi",
"walking": "Berjalan",
"bicycling": "Bersepeda",
@ -394,6 +856,17 @@ const Map<String, String> idID = {
"friday": "Jumat",
"saturday": "Sabtu",
"sunday": "Minggu",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Cerah",
"partlyCloudy": "Setengah Berawan",
@ -429,6 +902,8 @@ const Map<String, String> idID = {
'deleteAccount': 'Hapus Akun',
'deleteAccountTips':
'Apakah Anda yakin ingin menghapus akun Anda secara permanen? Tindakan ini tidak dapat dibatalkan',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -450,6 +925,8 @@ const Map<String, String> idID = {
'Kesalahan internal server, silakan coba lagi nanti',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Kompresi gambar gagal',
'avatarUpdateFailed': 'Pembaruan avatar gagal',
'usernameCannotBeEmpty': 'Nama pengguna tidak boleh kosong',
@ -462,28 +939,42 @@ const Map<String, String> idID = {
'deleteAccountFailedRetry': 'Gagal menghapus akun, silakan coba lagi',
// 账号服务相关
'clearUserDataFailed': 'Gagal menghapus data pengguna',
'deleteUserDataFailed': 'Gagal menghapus data pengguna',
'thirdPartyLogoutSuccess': 'Berhasil keluar dari pihak ketiga',
'thirdPartyLogoutFailed': 'Gagal keluar dari pihak ketiga',
'signOutProcessError': 'Terjadi kesalahan saat proses keluar',
'deleteAccountProcessError': 'Terjadi kesalahan saat proses penghapusan akun',
'userDataClearSuccess': 'Data pengguna berhasil dihapus',
'allUserDataClearSuccess': 'Semua data pengguna berhasil dihapus',
'accountServiceInitialized': 'Layanan Akun telah diinisialisasi',
'clearUserDataFailed': 'Gagal menghapus data pengguna', // 清理用户数据失败
'deleteUserDataFailed': 'Gagal menghapus data pengguna', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Berhasil keluar dari pihak ketiga', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Gagal keluar dari pihak ketiga', // 第三方登录退出失败
'signOutProcessError': 'Terjadi kesalahan saat proses keluar', // 登出过程发生错误
'deleteAccountProcessError':
'Terjadi kesalahan saat proses penghapusan akun', // 删除账号过程发生错误
'userDataClearSuccess': 'Data pengguna berhasil dihapus', // 用户数据清理成功
'allUserDataClearSuccess':
'Semua data pengguna berhasil dihapus', // 所有用户数据清理成功
'accountServiceInitialized':
'Layanan Akun telah diinisialisasi', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Gagal mendapatkan status izin',
'communicationPermissions': 'Izin Komunikasi',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Izin Kalender',
'locationPermissions': 'Izin Lokasi',
'phone': 'Telepon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Tulis Kalender',
'calendarFullAccess': 'Akses Penuh Kalender',
'locationInfo': 'Informasi Lokasi',
'phonePermissionDesc': 'Digunakan untuk fungsi melakukan panggilan',
'smsPermissionDesc': 'Digunakan untuk fungsi mengirim SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Digunakan untuk membuat acara kalender dan pengingat',
'calendarFullAccessPermissionDesc':
@ -500,28 +991,90 @@ const Map<String, String> idID = {
'permissionRequestError': 'Kesalahan saat meminta izin',
'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan izin telepon',
'smsPermissionDetailDesc': 'Fungsi mengirim SMS memerlukan izin SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Membuat acara kalender memerlukan izin menulis kalender',
'calendarFullAccessPermissionDetailDesc':
'Mengelola acara kalender memerlukan izin penuh kalender',
'locationPermissionDetailDesc':
'Mendapatkan informasi lokasi memerlukan izin lokasi',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplikasi memerlukan izin ini untuk fungsionalitas penuh',
'permanentDenialText':
'Anda telah menolak izin {permission} secara permanen, silakan buka pengaturan aplikasi untuk mengaktifkannya',
'goToSettings': 'Buka Pengaturan',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Versi Baru Ditemukan',
'remindLater': 'Ingatkan Nanti',
'updateNow': 'Perbarui Sekarang',
'checkUpdate': 'Periksa Pembaruan',
'updateFailed': 'Pembaruan Gagal',
'newVersionFound': 'Versi Baru Ditemukan', // 版本更新对话框标题
'remindLater': 'Ingatkan Nanti', // 稍后提醒按钮
'updateNow': 'Perbarui Sekarang', // 立即更新按钮
'checkUpdate': 'Periksa Pembaruan', // 检查更新按钮
'updateFailed': 'Pembaruan Gagal', // 更新失败提示
'cannotOpenAppStore':
'Tidak dapat membuka toko aplikasi, silakan buka toko aplikasi secara manual untuk memperbarui',
'Tidak dapat membuka toko aplikasi, silakan buka toko aplikasi secara manual untuk memperbarui', // 无法打开应用商店提示
'updateErrorRetry':
'Terjadi kesalahan saat pembaruan, silakan coba lagi nanti',
'Terjadi kesalahan saat pembaruan, silakan coba lagi nanti', // 更新错误重试提示
//国家列表
"邮箱": "Email",
@ -630,8 +1183,23 @@ const Map<String, String> idID = {
"东帝汶": "Timor Leste",
"斐济": "Fiji",
"所罗门群岛": "Kepulauan Solomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Riwayat Terjemahan",
"enableRecording": "Aktifkan Perekaman",
@ -640,9 +1208,24 @@ const Map<String, String> idID = {
"phoneUser": "Pengguna Telepon",
"selectSourceLanguage": "Pilih bahasa sumber",
"selectTargetLanguage": "Pilih bahasa target",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Belum ada riwayat",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Hapus Riwayat",
"clearHistoryConfirm":
"Apakah Anda yakin ingin menghapus semua riwayat terjemahan? Tindakan ini tidak dapat dibatalkan.",
@ -651,7 +1234,58 @@ const Map<String, String> idID = {
"deleteSessionConfirm":
"Apakah Anda yakin ingin menghapus semua rekaman terjemahan untuk sesi ini? Tindakan ini tidak dapat dibatalkan.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Terjemahkan File Audio",
"noAudioFiles": "Belum ada file audio",
"calculating": "Menghitung...",
@ -696,7 +1330,7 @@ const Map<String, String> idID = {
"autoInputCode": "Masukkan kode secara otomatis",
"skipBinding": "Lewati Pengikatan",
"rescan": "Pindai Ulang",
"skip": "Lewati",
"verifyingDevice": "Memverifikasi perangkat...",
"confirmBinding": "Konfirmasi Pengikatan",
"associatingDevice": "Mengasosiasikan perangkat...",
@ -728,12 +1362,17 @@ const Map<String, String> idID = {
"pairingFailedRetry": "Pemasangan gagal, silakan coba lagi",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Harap aktifkan Bluetooth',
'deviceDisconnected': 'Perangkat terputus',
'readyToStartPairing': 'Siap untuk memulai pemasangan',
'checkingEnvironment': 'Memeriksa lingkungan...',
'ensureHeadsetOnAndPairingMode':
'Harap pastikan headset dihidupkan dan dalam mode pemasangan',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Membangun koneksi aman...',
'needManualBindingAuthCode': 'Diperlukan kode otorisasi pengikatan manual...',
'pairingSuccessful': 'Pemasangan berhasil!',
@ -754,6 +1393,19 @@ const Map<String, String> idID = {
'deviceAuthorizationFailedCheckCode':
'Otorisasi perangkat gagal, harap periksa kode otorisasi',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Umpan Balik Pengguna",
'feedbackInfo': 'Berikan umpan balik atau saran',
@ -782,6 +1434,13 @@ const Map<String, String> idID = {
"connectionFailed": "Koneksi Gagal",
"retryConnection": "Coba Sambungkan Kembali",
"ota_updateNow": "Perbarui Sekarang",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Jaga agar perangkat tetap terhubung, jangan tutup aplikasi",
"doNotDisconnect": "Jangan putuskan sambungan",
@ -791,11 +1450,11 @@ const Map<String, String> idID = {
"Keluarkan kedua earbud, dan pastikan baterai keduanya di atas 20%",
// 音乐列表页面
"noMusic": "Tidak Ada Musik",
"noPlayingMusic": "Tidak ada musik yang diputar",
"unknownSong": "Lagu Tidak Dikenal",
"unknownArtist": "Artis Tidak Dikenal",
"playAll": "Putar Semua",
"noMusic": "Tidak Ada Musik", // 暂无音乐
"noPlayingMusic": "Tidak ada musik yang diputar", // 暂无播放音乐
"unknownSong": "Lagu Tidak Dikenal", // 未知歌曲
"unknownArtist": "Artis Tidak Dikenal", // 未知歌手
"playAll": "Putar Semua", // 播放全部
// 语言名称
"中文(简体)": "Bahasa Mandarin (Sederhana)",
@ -837,4 +1496,23 @@ const Map<String, String> idID = {
"乌尔都语": "Bahasa Urdu",
"波斯语": "Bahasa Persia",
"斯瓦希里语": "Bahasa Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> isIS = {
"spanish": "Spænska",
"portuguese": "Portúgalska",
"traditionalChinese": "Hefðbundin kínverska",
"traditionalChineseHK": "Hefðbundin kínverska (Hong Kong)",
"japanese": "Japanska",
"korean": "Kóreska",
"french": "Franska",
@ -99,12 +100,15 @@ const Map<String, String> isIS = {
"usePasswordLogin": "Innskráning með lykilorði",
// 隐私政策弹窗
"loginDeclaration": "Yfirlýsing Voitrans",
"welcomeToThisApp": "Velkomin(n) í Voitrans, vinsamlegast lestu vandlega",
"loginDeclaration": "Yfirlýsing Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Velkomin(n) í Voitrans, vinsamlegast lestu vandlega", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", með því að smella á 'Samþykkja og halda áfram' staðfestir þú að þú hafir lesið og samþykkt ofangreinda samninga. Með því að smella á 'Hafna' lokarðu forritinu.",
"disagree": "Hafna",
"agreeAndEnter": "Samþykkja og halda áfram",
", með því að smella á 'Samþykkja og halda áfram' staðfestir þú að þú hafir lesið og samþykkt ofangreinda samninga. Með því að smella á 'Hafna' lokarðu forritinu.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Hafna", // 不同意
"agreeAndEnter": "Samþykkja og halda áfram", // 同意并进入
// 首页
"deviceStatus": "Staða tækis",
@ -184,6 +188,209 @@ const Map<String, String> isIS = {
"usageStats": "Notendastatistika",
"usageStatsInfo": " skoða notendastatistika",
"scene": "Atburðarás",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Sleppa",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Hefja fund",
@ -198,13 +405,244 @@ const Map<String, String> isIS = {
'aiSummary': 'Gervigreindaryfirlit',
'meetingTranscript': 'Fundarritun',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Kerfisstillingar", //系统设置
"vipRecharge": "Premium meðlimurinnsla", //会员充值
"aiRecharge": "Premium meðlimur", //AI充值
"translationRecharge": "Þýðingsponsoring", //翻译充值
"meetingAssistantRecharge": "Fundarasistentsponsoring", //会议助手充值
"cloudSync": "Synchronisering með skýjaraddþjónustu", //云端同步
"systemSettings": "Kerfisstillingar",
"vipRecharge": "Premium meðlimurinnsla",
"aiRecharge": "Premium meðlimur",
"translationRecharge": "Þýðingsponsoring",
"meetingAssistantRecharge": "Fundarasistentsponsoring",
"cloudSync": "Synchronisering með skýjaraddþjónustu",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Tengt tæki:",
"accountId": "Auðkenni reiknings:",
"systemSetting": "Kerfisstillingar",
@ -216,8 +654,9 @@ const Map<String, String> isIS = {
"lastBackup": "Síðasta afritun:",
"privacySettings": "Persónuverndarstillingar",
"privacySettingsInfo": "Stjórna gagnaöflun og heimildum",
"permissionManagement": "Heimildastjórnun",
"permissionManagementInfo": "Stjórna heimildastillingum forritsins",
"permissionManagement": "Heimildastjórnun", // 权限管理
"permissionManagementInfo":
"Stjórna heimildastillingum forritsins", // 管理应用权限设置
"aboutApplication": "Um forritið",
"versions": "Útgáfa",
"checkUpdates": "Athuga með uppfærslur",
@ -252,11 +691,10 @@ const Map<String, String> isIS = {
'networkErrorRetry': 'Netvilla, vinsamlegast reyndu aftur síðar',
// 设备管理相关
'clearPairedDevices': 'Hreinsa pöruð tæki',
'clearPairedDevicesConfirm':
'Ertu viss um að þú viljir hreinsa öll pöruð tæki?',
'clearPairedDevicesSuccess': 'Pöruðum tækjum var eytt',
'clearPairedDevicesFailed': 'Ekki tókst að hreinsa pöruð tæki',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Rauntíma raddspjall",
@ -265,11 +703,20 @@ const Map<String, String> isIS = {
"loading": "Hleður...",
//设备管理页面
"earphone": "Heyrnartól",
"voicerecorder": "Upptökutæki",
"notBound": "Óbundið",
"deviceNotBoundYet": "Tæki er ekki enn bundið",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Losa bindingu",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -298,6 +745,20 @@ const Map<String, String> isIS = {
"loadMoreMessages": "Hlaða fleiri skilaboðum...",
"loadFailedClickRetry": "Hleðsla mistókst, smelltu til að reyna aftur",
"swipeUpForMore": "Strjúktu upp til að sjá meira",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Halló! Ég er **Lily**, ég get hjálpað þér með:\n\n'
@ -319,8 +780,8 @@ const Map<String, String> isIS = {
'startPhoneCallMode': 'Hefja símtalsham, hefja raddinnslátt',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Sláðu inn skilaboðin þín hér...',
'characterCount': '{count} stafir',
'fullScreenEditorHint': 'Sláðu inn skilaboðin þín hér...', // 全屏编辑器输入提示
'characterCount': '{count} stafir', // 字符计数显示
// 消息长按操作
'copy': 'Afrita',
@ -330,6 +791,7 @@ const Map<String, String> isIS = {
'submitFailed': 'Sending mistókst',
'reportSubmitted':
'Tilkynning send, við munum afgreiða hana eins fljótt og auðið er',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Skaðlegt/Óöruggt',
'pornographicVulgar': 'Klámfengið/Gróft',
'misleadingAttack': 'Villandi/Árás',
@ -339,6 +801,7 @@ const Map<String, String> isIS = {
'other': 'Annað',
'reportDescriptionHint':
'Við viljum vita hvers vegna þú ert að tilkynna, þú getur lýst vandamálinu sem þú lendir í.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Myndað af gervigreind',
@ -349,15 +812,15 @@ const Map<String, String> isIS = {
'moreMusic': 'Meiri tónlist',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'klst.',
'minutes': 'mín.',
'seconds': 'sek.',
'navigating': 'Leiðsögn',
'currentLocation': 'Núverandi staðsetning',
'approximate': 'U.þ.b.',
'enterRoad': 'Fara inn á',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'klst.', // 小时单位
'minutes': 'mín.', // 分钟单位
'seconds': 'sek.', // 秒单位
'navigating': 'Leiðsögn', // 导航状态
'currentLocation': 'Núverandi staðsetning', // 当前位置
'approximate': 'U.þ.b.', // 大约
'enterRoad': 'Fara inn á', // 进入道路
"driving": 'Akstur',
"walking": 'Ganga',
"bicycling": 'Hjólreiðar',
@ -393,6 +856,17 @@ const Map<String, String> isIS = {
"friday": "Fös",
"saturday": "Lau",
"sunday": "Sun",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Sólskin",
"partlyCloudy": "Skýjað með köflum",
@ -428,6 +902,8 @@ const Map<String, String> isIS = {
'deleteAccount': 'Eyða reikningi',
'deleteAccountTips':
'Ertu viss um að þú viljir eyða reikningnum þínum varanlega? Ekki er hægt að afturkalla þessa aðgerð.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -450,6 +926,8 @@ const Map<String, String> isIS = {
'Innri netþjónsvilla, vinsamlegast reyndu aftur síðar',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Myndþjöppun mistókst',
'avatarUpdateFailed': 'Uppfærsla prófílmyndar mistókst',
'usernameCannotBeEmpty': 'Notandanafn má ekki vera autt',
@ -463,28 +941,41 @@ const Map<String, String> isIS = {
'Eyðing reiknings mistókst, vinsamlegast reyndu aftur',
// 账号服务相关
'clearUserDataFailed': 'Ekki tókst að hreinsa notandagögn',
'deleteUserDataFailed': 'Ekki tókst að eyða notandagögnum',
'thirdPartyLogoutSuccess': 'Útskráning þriðja aðila tókst',
'thirdPartyLogoutFailed': 'Útskráning þriðja aðila mistókst',
'signOutProcessError': 'Villa kom upp við útskráningu',
'deleteAccountProcessError': 'Villa kom upp við eyðingu reiknings',
'userDataClearSuccess': 'Notandagögnum var eytt',
'allUserDataClearSuccess': 'Öllum notandagögnum var eytt',
'accountServiceInitialized': 'Reikningsþjónusta frumstillt',
'clearUserDataFailed': 'Ekki tókst að hreinsa notandagögn', // 清理用户数据失败
'deleteUserDataFailed': 'Ekki tókst að eyða notandagögnum', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Útskráning þriðja aðila tókst', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Útskráning þriðja aðila mistókst', // 第三方登录退出失败
'signOutProcessError': 'Villa kom upp við útskráningu', // 登出过程发生错误
'deleteAccountProcessError':
'Villa kom upp við eyðingu reiknings', // 删除账号过程发生错误
'userDataClearSuccess': 'Notandagögnum var eytt', // 用户数据清理成功
'allUserDataClearSuccess': 'Öllum notandagögnum var eytt', // 所有用户数据清理成功
'accountServiceInitialized':
'Reikningsþjónusta frumstillt', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Ekki tókst að fá stöðu heimilda',
'communicationPermissions': 'Samskiptaheimildir',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Dagbókarheimildir',
'locationPermissions': 'Staðsetningarheimildir',
'phone': 'Sími',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Skrifa í dagbók',
'calendarFullAccess': 'Fullur aðgangur að dagbók',
'locationInfo': 'Staðsetningarupplýsingar',
'phonePermissionDesc': 'Notað fyrir símtalsaðgerð',
'smsPermissionDesc': 'Notað fyrir SMS sendingaraðgerð',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Notað til að búa til dagbókarviðburði og áminningar',
'calendarFullAccessPermissionDesc':
@ -501,28 +992,90 @@ const Map<String, String> isIS = {
'permissionRequestError': 'Villa við beiðni um heimild',
'phonePermissionDetailDesc': 'Símtalsaðgerð krefst símaheimildar',
'smsPermissionDetailDesc': 'SMS sendingaraðgerð krefst SMS heimildar',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Að búa til dagbókarviðburði krefst skrifheimildar í dagbók',
'calendarFullAccessPermissionDetailDesc':
'Að stjórna dagbókarviðburðum krefst fullrar dagbókarheimildar',
'locationPermissionDetailDesc':
'Að fá staðsetningarupplýsingar krefst staðsetningarheimildar',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Forritið þarf þessa heimild til að veita fulla virkni',
'permanentDenialText':
'Þú hefur varanlega hafnað {permission}-heimild, vinsamlegast farðu í forritastillingar til að virkja hana',
'goToSettings': 'Fara í stillingar',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Ný útgáfa fannst',
'remindLater': 'Minn mig á síðar',
'updateNow': 'Uppfæra núna',
'checkUpdate': 'Athuga með uppfærslu',
'updateFailed': 'Uppfærsla mistókst',
'newVersionFound': 'Ný útgáfa fannst', // 版本更新对话框标题
'remindLater': 'Minn mig á síðar', // 稍后提醒按钮
'updateNow': 'Uppfæra núna', // 立即更新按钮
'checkUpdate': 'Athuga með uppfærslu', // 检查更新按钮
'updateFailed': 'Uppfærsla mistókst', // 更新失败提示
'cannotOpenAppStore':
'Ekki hægt að opna forritaverslun, vinsamlegast farðu handvirkt í forritaverslun til að uppfæra',
'Ekki hægt að opna forritaverslun, vinsamlegast farðu handvirkt í forritaverslun til að uppfæra', // 无法打开应用商店提示
'updateErrorRetry':
'Villa kom upp við uppfærslu, vinsamlegast reyndu aftur síðar',
'Villa kom upp við uppfærslu, vinsamlegast reyndu aftur síðar', // 更新错误重试提示
//国家列表
"邮箱": "Tölvupóstur",
@ -631,8 +1184,23 @@ const Map<String, String> isIS = {
"东帝汶": "Austur-Tímor",
"斐济": "Fídjí",
"所罗门群岛": "Salómonseyjar",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Þýðingasaga",
"enableRecording": "Virkja upptöku",
@ -641,9 +1209,24 @@ const Map<String, String> isIS = {
"phoneUser": "Notandi síma",
"selectSourceLanguage": "Veldu upprunamál",
"selectTargetLanguage": "Veldu markmál",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Engin saga ennþá",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Hreinsa sögu",
"clearHistoryConfirm":
"Ertu viss um að þú viljir hreinsa alla þýðingasögu? Ekki er hægt að afturkalla þessa aðgerð.",
@ -652,7 +1235,58 @@ const Map<String, String> isIS = {
"deleteSessionConfirm":
"Ertu viss um að þú viljir eyða öllum þýðingarupptökum fyrir þessa lotu? Ekki er hægt að afturkalla þessa aðgerð.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Þýða hljóðskrár",
"noAudioFiles": "Engar hljóðskrár ennþá",
"calculating": "Reiknar...",
@ -698,7 +1332,7 @@ const Map<String, String> isIS = {
"autoInputCode": "Sjálfvirk innsláttur kóða",
"skipBinding": "Sleppa bindingu",
"rescan": "Skanna aftur",
"skip": "Sleppa",
"verifyingDevice": "Staðfestir tæki...",
"confirmBinding": "Staðfesta bindingu",
"associatingDevice": "Tengir tæki...",
@ -729,12 +1363,17 @@ const Map<String, String> isIS = {
"pairingFailedRetry": "Pörun mistókst, vinsamlegast reyndu aftur",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Vinsamlegast virkjaðu Bluetooth',
'deviceDisconnected': 'Tæki aftengt',
'readyToStartPairing': 'Tilbúið til að hefja pörun',
'checkingEnvironment': 'Athuga umhverfi...',
'ensureHeadsetOnAndPairingMode':
'Gakktu úr skugga um að heyrnartólin séu á og í pörunarham',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Stofna örugga tengingu...',
'needManualBindingAuthCode':
'Handvirkur bindingarheimildarkóði er nauðsynlegur...',
@ -759,6 +1398,19 @@ const Map<String, String> isIS = {
'deviceAuthorizationFailedCheckCode':
'Tækisheimildun mistókst, athugaðu heimildarkóðann',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Endurgjöf notenda",
'feedbackInfo': 'Gefðu endurgjöf eða tillögur',
@ -786,6 +1438,13 @@ const Map<String, String> isIS = {
"connectionFailed": "Tenging mistókst",
"retryConnection": "Reyna að tengjast aftur",
"ota_updateNow": "Uppfæra núna",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Haltu tækinu tengdu, ekki loka forritinu",
"doNotDisconnect": "Ekki aftengja",
"charging": "Hleður",
@ -794,11 +1453,11 @@ const Map<String, String> isIS = {
"Taktu báðar heyrnartólin úr og gakktu úr skugga um að rafhlaðan á báðum sé yfir 20%",
// 音乐列表页面
"noMusic": "Engin tónlist",
"noPlayingMusic": "Engin tónlist í spilun",
"unknownSong": "Óþekkt lag",
"unknownArtist": "Óþekktur flytjandi",
"playAll": "Spila allt",
"noMusic": "Engin tónlist", // 暂无音乐
"noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐
"unknownSong": "Óþekkt lag", // 未知歌曲
"unknownArtist": "Óþekktur flytjandi", // 未知歌手
"playAll": "Spila allt", // 播放全部
// 语言名称
"中文(简体)": "Kínverska (einfölduð)",
@ -840,4 +1499,23 @@ const Map<String, String> isIS = {
"乌尔都语": "Úrdú",
"波斯语": "Persneska",
"斯瓦希里语": "Svahílí",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

File diff suppressed because it is too large

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

@ -33,6 +33,7 @@ const Map<String, String> jaJP = {
"spanish": "スペイン語",
"portuguese": "ポルトガル語",
"traditionalChinese": "繁体字中国語",
"traditionalChineseHK": "中国語(繁体字・香港)",
"japanese": "日本語",
"korean": "韓国語",
"french": "フランス語",
@ -100,8 +101,8 @@ const Map<String, String> jaJP = {
// 隐私政策弹窗
"loginDeclaration": "Voitrans 声明", // Voitrans 声明
"welcomeToThisApp": "Voitransへようこそ、十分にお読みください", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "プライバシーポリシー", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "利用規約", // 《用户协议》 - 已存在,使用现有键
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
"。「同意して進む」をクリックすると、上記の規約を十分に読み、同意したことを示します。「同意しない」をクリックするとアプリケーションが終了します。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "同意しない", // 不同意
@ -179,6 +180,209 @@ const Map<String, String> jaJP = {
"usageStats": "使用統計",
"usageStatsInfo": "使用統計を確認",
"scene": "シナリオ",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "スキップ",
'next': 'Next',
'sayLilyHint': "Say \"Lily Lily\" to the mic",
'imHere': "I’m here~",
'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.",
'aiReplyCompleted': "Lily has finished the reply!",
'aiThinking': "Lily is thinking…",
'guideAwakenSuccess': "Great! Lily is awake—ask it to help.",
'confirmInput': "Confirm Input",
'guideClickSendPrefix': "Tap send, ",
// AI 引导步骤
'guideWeatherStart': "Tell Lily: “What’s the weather today?”",
'guideWeatherInput': "What’s the weather today?",
'guideWeatherSend': "Lily will report the weather in real time",
'guideWeatherEnd': "Lily can report weather live—try other commands",
'guideMusicStart': "Tell Lily: “Play some rock music”",
'guideMusicInput': "Play some rock music",
'guideMusicSend': "Lily will find music for you",
'guideMusicEnd': "Lily found music—try other commands",
'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”",
'guideNavInput': "Navigate to Shenzhen Airport",
'guideNavSend': "Lily will plan the route",
'guideNavEnd': "Navigation set—try other commands",
'guideMeetingStart':
"Tell Lily: “Create a meeting reminder for 3pm tomorrow”",
'guideMeetingInput': "Create a meeting reminder for 3pm tomorrow",
'guideMeetingSend': "Lily will create a meeting reminder",
'guideMeetingEnd': "Reminder created—try other commands",
'guidePhoneStart': "Tell Lily: “Call Mom”",
'guidePhoneInput': "Call Mom",
'guidePhoneSend': "Lily will make the call",
'guidePhoneEnd': "Call placed—try other commands",
'guideSmsStart': "Tell Lily: “Send Dad a text: I’ll be home for dinner”",
'guideSmsInput': "Text Dad: I’ll be home for dinner",
'guideSmsSend': "Lily will send the message",
'guideSmsEnd': "Message sent—voice control is convenient",
// 商务会议助手页
"startMeeting": "会議を開始",
@ -191,15 +395,246 @@ const Map<String, String> jaJP = {
'meeting': '会議',
'recordingDetails': '録音詳細',
'aiSummary': 'AI要約',
'meetingTranscript': '会議記録', //会议记录
'meetingTranscript': '会議記録',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "システム設定", //系统设置
"vipRecharge": "プレミアムメンバー料金", //会员充值
"aiRecharge": "プレミアムメンバー", //AI充值
"translationRecharge": "翻訳料金", //翻译充值
"meetingAssistantRecharge": "会議アシスタント料金", //会议助手充值
"cloudSync": "クラウド同期料金", //云端同步
"systemSettings": "システム設定",
"vipRecharge": "プレミアムメンバー料金",
"aiRecharge": "プレミアムメンバー",
"translationRecharge": "翻訳料金",
"meetingAssistantRecharge": "会議アシスタント料金",
"cloudSync": "クラウド同期料金",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "接続デバイス:",
"accountId": "アカウントID:",
"systemSetting": "システム設定",
@ -233,10 +668,10 @@ const Map<String, String> jaJP = {
'selecttimbre': '音色を選択',
'pleaseRead': 'お読みください',
'completeRecording': '録音を完了',
"firmwareUpgrade": "ファームウェアアップグレード", // 固件升级
"bleHeadsetFirmwareUpgrade": "BLEイヤホンファームウェアアップグレード", // BLE耳机固件版本升级
"deviceManagement": "デバイス管理", // 设备管理
"manageConnectedDevices": "接続されたBluetoothデバイスを管理", // 管理已绑定的蓝牙设备
"firmwareUpgrade": "ファームウェアアップグレード",
"bleHeadsetFirmwareUpgrade": "BLEイヤホンファームウェアアップグレード",
"deviceManagement": "デバイス管理",
"manageConnectedDevices": "接続されたBluetoothデバイスを管理",
//设置setting_controller
// 版本更新相关
@ -245,22 +680,31 @@ const Map<String, String> jaJP = {
'networkErrorRetry': 'ネットワークエラー、後でもう一度お試しください',
// 设备管理相关
'clearPairedDevices': 'ペアリングデバイスをクリア',
'clearPairedDevicesConfirm': 'すべてのペアリングデバイスをクリアしてもよろしいですか?',
'clearPairedDevicesSuccess': 'ペアリングデバイスのクリアに成功',
'clearPairedDevicesFailed': 'ペアリングデバイスのクリアに失敗',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
'realtimeVoiceChat': 'リアルタイム音声会話',
'realtimeVoiceChatInfo': 'スマート音声インタラクション機能を体験(プレビュー)',
'loading': '読み込み中...',
"realtimeVoiceChat": 'リアルタイム音声会話',
"realtimeVoiceChatInfo": 'スマート音声インタラクション機能を体験(プレビュー)',
"loading": '読み込み中...',
//设备管理页面
"earphone": "イヤホン", // 耳机
"voicerecorder": "ボイスレコーダー", // 录音笔
"notBound": "未バインド", // 未绑定
"deviceNotBoundYet": "デバイスはまだバインドされていません", // 还未绑定设备
"unbind": "バインド解除", // 解绑
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "バインド解除",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -289,6 +733,20 @@ const Map<String, String> jaJP = {
"loadMoreMessages": "さらにメッセージを読み込み...",
"loadFailedClickRetry": "読み込みに失敗、クリックして再試行",
"swipeUpForMore": "上にスワイプしてさらに表示",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'こんにちは!私は**Lily**です。以下のことでお手伝いできます:\n\n'
@ -317,7 +775,7 @@ const Map<String, String> jaJP = {
'submitSuccess': '送信に成功',
'submitFailed': '送信に失敗',
'reportSubmitted': '報告を送信しました。できるだけ早く処理いたします',
//'networkError': 'ネットワークエラー、後でもう一度お試しください',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': '有害/危険',
'pornographicVulgar': 'ポルノ/下品',
'misleadingAttack': '誤解を招く/攻撃',
@ -326,7 +784,7 @@ const Map<String, String> jaJP = {
'copyrightViolation': '私の著作権、人格権などの侵害',
'other': 'その他',
'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。',
//'submit': '送信',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'AIによって生成',
@ -349,7 +807,7 @@ const Map<String, String> jaJP = {
"driving": "運転",
"walking": "徒歩",
"bicycling": "自転車",
"transit": "公共交通機関",
"tsransit": "Transit",
//天气卡片 weather_card
'weatherQuery': '天気照会:',
@ -372,6 +830,17 @@ const Map<String, String> jaJP = {
"friday": "金",
"saturday": "土",
"sunday": "日",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "晴れ",
"partlyCloudy": "一部曇り",
@ -406,6 +875,8 @@ const Map<String, String> jaJP = {
"logoutTips": "現在のアカウントからログアウトしてもよろしいですか?",
'deleteAccount': 'アカウント削除',
'deleteAccountTips': 'アカウントを永続的に削除してもよろしいですか?この操作は元に戻せません。',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed': 'ネットワーク接続に失敗しました。ネットワーク設定を確認して再試行してください',
@ -421,7 +892,7 @@ const Map<String, String> jaJP = {
'serverInternalErrorRetryLater': 'サーバー内部エラー、後でもう一度お試しください',
// Profile 用户交互
//'error': 'エラー',
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': '画像圧縮に失敗',
'avatarUpdateFailed': 'アバター更新に失敗',
@ -448,15 +919,26 @@ const Map<String, String> jaJP = {
// 权限管理页面
'getPermissionStatusFailed': '権限状態の取得に失敗',
'communicationPermissions': '通信権限',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'カレンダー権限',
'locationPermissions': '位置情報権限',
'phone': '電話',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'カレンダー書き込み',
'calendarFullAccess': 'カレンダーフルアクセス',
'locationInfo': '位置情報',
'phonePermissionDesc': '通話機能に使用',
'smsPermissionDesc': 'SMS機能に使用',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc': 'カレンダーイベントとリマインダーの作成に使用',
'calendarFullAccessPermissionDesc': 'カレンダーイベントとリマインダーの読み取りと管理に使用',
'locationPermissionDesc': '現在の位置情報の取得に使用',
@ -470,13 +952,75 @@ const Map<String, String> jaJP = {
'permissionRequestError': '権限要求エラー',
'phonePermissionDetailDesc': '通話機能には電話権限が必要',
'smsPermissionDetailDesc': 'SMS機能にはSMS権限が必要',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc': 'カレンダーイベントの作成にはカレンダー書き込み権限が必要',
'calendarFullAccessPermissionDetailDesc': 'カレンダーイベントの管理には完全なカレンダー権限が必要',
'locationPermissionDetailDesc': '位置情報の取得には位置情報権限が必要',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction': 'アプリは完全な機能のためにこの権限が必要です',
'permanentDenialText': '{permission}権限を永続的に拒否されました。アプリ設定で有効にしてください',
'goToSettings': '設定に移動',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': '新しいバージョンが見つかりました', // 版本更新对话框标题
'remindLater': '後で通知', // 稍后提醒按钮
@ -593,8 +1137,23 @@ const Map<String, String> jaJP = {
"东帝汶": "東ティモール",
"斐济": "フィジー",
"所罗门群岛": "ソロモン諸島",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "翻訳履歴",
"enableRecording": "録音を有効にする",
@ -603,16 +1162,82 @@ const Map<String, String> jaJP = {
"phoneUser": "電話ユーザー",
"selectSourceLanguage": "ソース言語を選択",
"selectTargetLanguage": "ターゲット言語を選択",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "翻訳履歴がありません",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "履歴をクリア",
"clearHistoryConfirm": "すべての翻訳履歴をクリアしてもよろしいですか?この操作は元に戻せません。",
"unknownLanguage": "不明な言語",
"deleteSessionRecord": "セッション記録を削除",
"deleteSessionConfirm": "このセッションのすべての翻訳記録を削除してもよろしいですか?この操作は元に戻せません。",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "音声ファイルを翻訳",
"noAudioFiles": "音声ファイルがありません",
"calculating": "計算中...",
@ -656,7 +1281,7 @@ const Map<String, String> jaJP = {
"autoInputCode": "コードを自動入力",
"skipBinding": "バインドをスキップ",
"rescan": "再スキャン",
"skip": "スキップ",
"verifyingDevice": "デバイスを確認中...",
"confirmBinding": "バインドを確認",
"associatingDevice": "デバイスを関連付け中...",
@ -683,16 +1308,16 @@ const Map<String, String> jaJP = {
"pairingFailedRetry": "ペアリングに失敗しました。再試行してください",
// 配对控制器相关
//'connectDevice': 'デバイスを接続',
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Bluetoothを有効にしてください',
'deviceDisconnected': 'デバイスが切断されました',
'readyToStartPairing': 'ペアリング開始準備完了',
'checkingEnvironment': '環境を確認中...',
'ensureHeadsetOnAndPairingMode': 'ヘッドセットがオンでペアリングモードであることを確認してください',
//'goToBluetoothSettings': 'Bluetooth設定に移動',
//'verifyingDevice': 'デバイスを確認中...',
//'confirmBinding': 'バインドを確認',
//'associatingDevice': 'デバイスを関連付け中...',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'セキュア接続を確立中...',
'needManualBindingAuthCode': '手動バインド承認コードが必要...',
'pairingSuccessful': 'ペアリング成功!',
@ -712,6 +1337,19 @@ const Map<String, String> jaJP = {
'bleConnectionFailed': 'BLE接続に失敗',
'deviceAuthorizationFailedCheckCode': 'デバイス承認に失敗しました。承認コードを確認してください',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "フィードバック",
'feedbackInfo': 'フィードバックや提案を提供',
@ -737,6 +1375,13 @@ const Map<String, String> jaJP = {
"connectionFailed": "接続に失敗",
"retryConnection": "接続を再試行",
"ota_updateNow": "今すぐ更新",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "デバイスを接続したままにし、アプリを閉じないでください",
"doNotDisconnect": "切断しないでください",
"charging": "充電中",
@ -790,38 +1435,23 @@ const Map<String, String> jaJP = {
"乌尔都语": "ウルドゥー語",
"波斯语": "ペルシャ語",
"斯瓦希里语": "スワヒリ語",
// Guide overlay keys (placeholders in English)
"sayLilyHint": "Say \"Lily Lily\" to the mic",
"imHere": "I’m here~",
"guideWelcomeWakeAI": "Welcome to Voitrans! First, wake your AI “Lily”.",
"aiReplyCompleted": "Lily has finished the reply!",
"aiThinking": "Lily is thinking…",
"guideAwakenSuccess": "Great! Lily is awake—ask it to help.",
"confirmInput": "Confirm Input",
"guideClickSendPrefix": "Tap send, ",
"guideWeatherStart": "Tell Lily: “What’s the weather today?”",
"guideWeatherInput": "What’s the weather today?",
"guideWeatherSend": "Lily will report the weather in real time",
"guideWeatherEnd": "Lily can report weather live—try other commands",
"guideMusicStart": "Tell Lily: “Play some rock music”",
"guideMusicInput": "Play some rock music",
"guideMusicSend": "Lily will find music for you",
"guideMusicEnd": "Lily found music—try other commands",
"guideNavStart": "Tell Lily: “Navigate to Shenzhen Airport”",
"guideNavInput": "Navigate to Shenzhen Airport",
"guideNavSend": "Lily will plan the route",
"guideNavEnd": "Navigation set—try other commands",
"guideMeetingStart":
"Tell Lily: “Create a meeting reminder for 3pm tomorrow”",
"guideMeetingInput": "Create a meeting reminder for 3pm tomorrow",
"guideMeetingSend": "Lily will create a meeting reminder",
"guideMeetingEnd": "Reminder created—try other commands",
"guidePhoneStart": "Tell Lily: “Call Mom”",
"guidePhoneInput": "Call Mom",
"guidePhoneSend": "Lily will make the call",
"guidePhoneEnd": "Call placed—try other commands",
"guideSmsStart": "Tell Lily: “Send Dad a text: I’ll be home for dinner”",
"guideSmsInput": "Text Dad: I’ll be home for dinner",
"guideSmsSend": "Lily will send the message",
"guideSmsEnd": "Message sent—voice control is convenient",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

File diff suppressed because it is too large

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

@ -34,6 +34,7 @@ const Map<String, String> ltLT = {
"spanish": "Ispanų",
"portuguese": "Portugalų",
"traditionalChinese": "Tradicinė kinų",
"traditionalChineseHK": "Tradicinė kinų (Honkongas)",
"japanese": "Japonų",
"korean": "Korėjiečių",
"french": "Prancūzų",
@ -101,12 +102,15 @@ const Map<String, String> ltLT = {
"usePasswordLogin": "Prisijungti su slaptažodžiu",
// 隐私政策弹窗
"loginDeclaration": "Voitrans deklaracija",
"welcomeToThisApp": "Sveiki atvykę į Voitrans, prašome atidžiai perskaityti",
"loginDeclaration": "Voitrans deklaracija", // Voitrans 声明
"welcomeToThisApp":
"Sveiki atvykę į Voitrans, prašome atidžiai perskaityti", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", paspaudus 'Sutinku ir tęsti' reiškia, kad jūs visiškai perskaitėte ir sutinkate su aukščiau nurodytomis sutartimis. Paspaudus 'Nesutinku' išeisite iš programos.",
"disagree": "Nesutinku",
"agreeAndEnter": "Sutinku ir tęsti",
", paspaudus 'Sutinku ir tęsti' reiškia, kad jūs visiškai perskaitėte ir sutinkate su aukščiau nurodytomis sutartimis. Paspaudus 'Nesutinku' išeisite iš programos.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Nesutinku", // 不同意
"agreeAndEnter": "Sutinku ir tęsti", // 同意并进入
// 首页
"deviceStatus": "Įrenginio būsena",
@ -187,6 +191,209 @@ const Map<String, String> ltLT = {
"usageStats": "Naudojimo statistika",
"usageStatsInfo": "Peržiūrėkite jūsų naudojimo statistiką",
"scene": "Scenarijus",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Praleisti",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Pradėti susitikimą",
@ -201,13 +408,244 @@ const Map<String, String> ltLT = {
'aiSummary': 'AI santrauka',
'meetingTranscript': 'Susitikimo stenograma',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Sistemos nustatymai", //系统设置
"vipRecharge": "Premium naryso užsipirkimas", //会员充值
"aiRecharge": "Premium narys", //AI充值
"translationRecharge": "Vertimo užsipirkimas", //翻译充值
"meetingAssistantRecharge": "Susitikimų asistento užsipirkimas", //会议助手充值
"cloudSync": "Synchronizacijos užsipirkimas", //云端同步
"systemSettings": "Sistemos nustatymai",
"vipRecharge": "Premium naryso užsipirkimas",
"aiRecharge": "Premium narys",
"translationRecharge": "Vertimo užsipirkimas",
"meetingAssistantRecharge": "Susitikimų asistento užsipirkimas",
"cloudSync": "Synchronizacijos užsipirkimas",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Prijungtas įrenginys:",
"accountId": "Paskyros ID:",
"systemSetting": "Sistemos nustatymas",
@ -219,8 +657,9 @@ const Map<String, String> ltLT = {
"lastBackup": "Paskutinė atsarginė kopija:",
"privacySettings": "Privatumo nustatymai",
"privacySettingsInfo": "Valdyti duomenų rinkimą ir leidimus",
"permissionManagement": "Leidimų valdymas",
"permissionManagementInfo": "Valdyti programos leidimų nustatymus",
"permissionManagement": "Leidimų valdymas", // 权限管理
"permissionManagementInfo":
"Valdyti programos leidimų nustatymus", // 管理应用权限设置
"aboutApplication": "Apie programą",
"versions": "Versija",
"checkUpdates": "Patikrinti atnaujinimus",
@ -256,11 +695,10 @@ const Map<String, String> ltLT = {
'networkErrorRetry': 'Tinklo klaida, bandykite dar kartą vėliau',
// 设备管理相关
'clearPairedDevices': 'Išvalyti susietus įrenginius',
'clearPairedDevicesConfirm':
'Ar tikrai norite išvalyti visus susietus įrenginius?',
'clearPairedDevicesSuccess': 'Susieti įrenginiai sėkmingai išvalyti',
'clearPairedDevicesFailed': 'Nepavyko išvalyti susietų įrenginių',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Balso pokalbis realiuoju laiku",
@ -269,11 +707,20 @@ const Map<String, String> ltLT = {
"loading": "Įkeliama...",
//设备管理页面
"earphone": "Ausinės",
"voicerecorder": "Diktofonas",
"notBound": "Nesusieta",
"deviceNotBoundYet": "Įrenginys dar nesusietas",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Atsieti",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -303,6 +750,20 @@ const Map<String, String> ltLT = {
"loadFailedClickRetry":
"Įkėlimas nepavyko, spustelėkite, kad bandytumėte dar kartą",
"swipeUpForMore": "Braukite aukštyn, kad pamatytumėte daugiau",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Sveiki! Aš esu **Lily**, galiu jums padėti:\n\n'
@ -325,8 +786,8 @@ const Map<String, String> ltLT = {
'startPhoneCallMode': 'Pradėti skambinimo režimą, pradėti balso įvestį',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Įveskite savo žinutę čia...',
'characterCount': '{count} simbolių',
'fullScreenEditorHint': 'Įveskite savo žinutę čia...', // 全屏编辑器输入提示
'characterCount': '{count} simbolių', // 字符计数显示
// 消息长按操作
'copy': 'Kopijuoti',
@ -335,6 +796,7 @@ const Map<String, String> ltLT = {
'submitSuccess': 'Sėkmingai pateikta',
'submitFailed': 'Pateikimas nepavyko',
'reportSubmitted': 'Pranešimas pateiktas, mes jį apdorosime kuo greičiau',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Žalingas/Nesaugus',
'pornographicVulgar': 'Pornografinis/Vulgarus',
'misleadingAttack': 'Klaidinantis/Užpuolimas',
@ -344,6 +806,7 @@ const Map<String, String> ltLT = {
'other': 'Kita',
'reportDescriptionHint':
'Norėtume sužinoti, kodėl pranešate, galite aprašyti problemą, su kuria susidūrėte.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Sugeneruota AI',
@ -354,15 +817,15 @@ const Map<String, String> ltLT = {
'moreMusic': 'Daugiau muzikos',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'val.',
'minutes': 'min.',
'seconds': 'sek.',
'navigating': 'Naviguojama',
'currentLocation': 'Dabartinė vieta',
'approximate': 'Apytiksliai',
'enterRoad': 'Įvažiuoti į',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'val.', // 小时单位
'minutes': 'min.', // 分钟单位
'seconds': 'sek.', // 秒单位
'navigating': 'Naviguojama', // 导航状态
'currentLocation': 'Dabartinė vieta', // 当前位置
'approximate': 'Apytiksliai', // 大约
'enterRoad': 'Įvažiuoti į', // 进入道路
"driving": "Važiavimas",
"walking": "Ėjimas",
"bicycling": "Važiavimas dviračiu",
@ -398,6 +861,17 @@ const Map<String, String> ltLT = {
"friday": "Penkt",
"saturday": "Šešt",
"sunday": "Sekm",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Saulėta",
"partlyCloudy": "Mažai debesuota",
@ -433,6 +907,8 @@ const Map<String, String> ltLT = {
'deleteAccount': 'Ištrinti paskyrą',
'deleteAccountTips':
'Ar tikrai norite visam laikui ištrinti savo paskyrą? Šio veiksmo negalima atšaukti.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -454,6 +930,8 @@ const Map<String, String> ltLT = {
'Vidinė serverio klaida, bandykite dar kartą vėliau',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Vaizdo suspaudimas nepavyko',
'avatarUpdateFailed': 'Avataro atnaujinimas nepavyko',
'usernameCannotBeEmpty': 'Vartotojo vardas negali būti tuščias',
@ -467,28 +945,44 @@ const Map<String, String> ltLT = {
'Paskyros ištrynimas nepavyko, bandykite dar kartą',
// 账号服务相关
'clearUserDataFailed': 'Nepavyko išvalyti vartotojo duomenų',
'deleteUserDataFailed': 'Nepavyko ištrinti vartotojo duomenų',
'thirdPartyLogoutSuccess': 'Trečiosios šalies atsijungimas sėkmingas',
'thirdPartyLogoutFailed': 'Trečiosios šalies atsijungimas nepavyko',
'signOutProcessError': 'Atsijungimo proceso metu įvyko klaida',
'deleteAccountProcessError': 'Paskyros ištrynimo proceso metu įvyko klaida',
'userDataClearSuccess': 'Vartotojo duomenys sėkmingai išvalyti',
'allUserDataClearSuccess': 'Visi vartotojo duomenys sėkmingai išvalyti',
'accountServiceInitialized': 'Paskyros paslauga inicijuota',
'clearUserDataFailed': 'Nepavyko išvalyti vartotojo duomenų', // 清理用户数据失败
'deleteUserDataFailed': 'Nepavyko ištrinti vartotojo duomenų', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Trečiosios šalies atsijungimas sėkmingas', // 第三方登录退出成功
'thirdPartyLogoutFailed':
'Trečiosios šalies atsijungimas nepavyko', // 第三方登录退出失败
'signOutProcessError': 'Atsijungimo proceso metu įvyko klaida', // 登出过程发生错误
'deleteAccountProcessError':
'Paskyros ištrynimo proceso metu įvyko klaida', // 删除账号过程发生错误
'userDataClearSuccess': 'Vartotojo duomenys sėkmingai išvalyti', // 用户数据清理成功
'allUserDataClearSuccess':
'Visi vartotojo duomenys sėkmingai išvalyti', // 所有用户数据清理成功
'accountServiceInitialized':
'Paskyros paslauga inicijuota', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Nepavyko gauti leidimo būsenos',
'communicationPermissions': 'Komunikacijos leidimai',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kalendoriaus leidimai',
'locationPermissions': 'Vietovės leidimai',
'phone': 'Telefonas',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Rašyti į kalendorių',
'calendarFullAccess': 'Visiškas priėjimas prie kalendoriaus',
'locationInfo': 'Vietovės informacija',
'phonePermissionDesc': 'Naudojama skambinimo funkcijai',
'smsPermissionDesc': 'Naudojama SMS siuntimo funkcijai',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Naudojama kuriant kalendoriaus įvykius ir priminimus',
'calendarFullAccessPermissionDesc':
@ -505,28 +999,90 @@ const Map<String, String> ltLT = {
'phonePermissionDetailDesc':
'Skambinimo funkcijai reikalingas telefono leidimas',
'smsPermissionDetailDesc': 'SMS siuntimo funkcijai reikalingas SMS leidimas',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Kalendoriaus įvykių kūrimui reikalingas rašymo į kalendorių leidimas',
'calendarFullAccessPermissionDetailDesc':
'Kalendoriaus įvykių valdymui reikalingas visiškas kalendoriaus leidimas',
'locationPermissionDetailDesc':
'Vietovės informacijos gavimui reikalingas vietovės leidimas',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Programai reikalingas šis leidimas, kad veiktų visa funkcionalumas',
'permanentDenialText':
'Jūs visam laikui atmetėte {permission} leidimą, eikite į programos nustatymus, kad jį įjungtumėte',
'goToSettings': 'Eiti į nustatymus',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Rasta nauja versija',
'remindLater': 'Priminti vėliau',
'updateNow': 'Atnaujinti dabar',
'checkUpdate': 'Patikrinti atnaujinimą',
'updateFailed': 'Atnaujinimas nepavyko',
'newVersionFound': 'Rasta nauja versija', // 版本更新对话框标题
'remindLater': 'Priminti vėliau', // 稍后提醒按钮
'updateNow': 'Atnaujinti dabar', // 立即更新按钮
'checkUpdate': 'Patikrinti atnaujinimą', // 检查更新按钮
'updateFailed': 'Atnaujinimas nepavyko', // 更新失败提示
'cannotOpenAppStore':
'Negalima atidaryti programų parduotuvės, eikite į parduotuvę rankiniu būdu, kad atnaujintumėte',
'Negalima atidaryti programų parduotuvės, eikite į parduotuvę rankiniu būdu, kad atnaujintumėte', // 无法打开应用商店提示
'updateErrorRetry':
'Atnaujinimo metu įvyko klaida, bandykite dar kartą vėliau',
'Atnaujinimo metu įvyko klaida, bandykite dar kartą vėliau', // 更新错误重试提示
//国家列表
"邮箱": "El. paštas",
@ -635,8 +1191,23 @@ const Map<String, String> ltLT = {
"东帝汶": "Rytų Timoras",
"斐济": "Fidžis",
"所罗门群岛": "Saliamono Salos",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Vertimų istorija",
"enableRecording": "Įjungti įrašymą",
@ -645,9 +1216,24 @@ const Map<String, String> ltLT = {
"phoneUser": "Telefono naudotojas",
"selectSourceLanguage": "Pasirinkite šaltinio kalbą",
"selectTargetLanguage": "Pasirinkite tikslo kalbą",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Dar nėra istorijos",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Išvalyti istoriją",
"clearHistoryConfirm":
"Ar tikrai norite išvalyti visą vertimų istoriją? Šio veiksmo negalima atšaukti.",
@ -656,7 +1242,58 @@ const Map<String, String> ltLT = {
"deleteSessionConfirm":
"Ar tikrai norite ištrinti visus šios sesijos vertimų įrašus? Šio veiksmo negalima atšaukti.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Versti garso failus",
"noAudioFiles": "Dar nėra garso failų",
"calculating": "Skaičiuojama...",
@ -702,7 +1339,7 @@ const Map<String, String> ltLT = {
"autoInputCode": "Automatinis kodo įvedimas",
"skipBinding": "Praleisti susiejimą",
"rescan": "Nuskaityti iš naujo",
"skip": "Praleisti",
"verifyingDevice": "Tikrinamas įrenginys...",
"confirmBinding": "Patvirtinti susiejimą",
"associatingDevice": "Asocijuojamas įrenginys...",
@ -735,12 +1372,17 @@ const Map<String, String> ltLT = {
"pairingFailedRetry": "Susiejimas nepavyko, bandykite dar kartą",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Įjunkite Bluetooth',
'deviceDisconnected': 'Įrenginys atjungtas',
'readyToStartPairing': 'Pasiruošta pradėti susiejimą',
'checkingEnvironment': 'Tikrinama aplinka...',
'ensureHeadsetOnAndPairingMode':
'Įsitikinkite, kad ausinės įjungtos ir yra susiejimo režime',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Kuriama saugi jungtis...',
'needManualBindingAuthCode':
'Reikalingas rankinio susiejimo autorizacijos kodas...',
@ -763,6 +1405,19 @@ const Map<String, String> ltLT = {
'deviceAuthorizationFailedCheckCode':
'Įrenginio autorizacija nepavyko, patikrinkite autorizacijos kodą',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Vartotojų atsiliepimai",
'feedbackInfo': 'Pateikite atsiliepimą ar pasiūlymą',
@ -792,6 +1447,13 @@ const Map<String, String> ltLT = {
"connectionFailed": "Ryšys nepavyko",
"retryConnection": "Bandyti prisijungti dar kartą",
"ota_updateNow": "Atnaujinti dabar",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Laikykite įrenginį prijungtą, neuždarykite programos",
"doNotDisconnect": "Neatjunkite",
@ -801,11 +1463,11 @@ const Map<String, String> ltLT = {
"Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%",
// 音乐列表页面
"noMusic": "Nėra muzikos",
"noPlayingMusic": "Negrojama jokia muzika",
"unknownSong": "Nežinoma daina",
"unknownArtist": "Nežinomas atlikėjas",
"playAll": "Groti viską",
"noMusic": "Nėra muzikos", // 暂无音乐
"noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐
"unknownSong": "Nežinoma daina", // 未知歌曲
"unknownArtist": "Nežinomas atlikėjas", // 未知歌手
"playAll": "Groti viską", // 播放全部
// 语言名称
"中文(简体)": "Kinų (supaprastinta)",
@ -847,4 +1509,23 @@ const Map<String, String> ltLT = {
"乌尔都语": "Urdu",
"波斯语": "Persų",
"斯瓦希里语": "Svahilių",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> lvLV = {
"spanish": "Spāņu",
"portuguese": "Portugāļu",
"traditionalChinese": "Tradicionālā ķīniešu",
"traditionalChineseHK": "Tradicionālā ķīniešu (Honkonga)",
"japanese": "Japāņu",
"korean": "Korejiešu",
"french": "Franču",
@ -100,12 +101,15 @@ const Map<String, String> lvLV = {
"usePasswordLogin": "Pieteikties ar paroli",
// 隐私政策弹窗
"loginDeclaration": "Voitrans deklarācija",
"welcomeToThisApp": "Laipni lūdzam Voitrans, lūdzu, uzmanīgi izlasiet",
"loginDeclaration": "Voitrans deklarācija", // Voitrans 声明
"welcomeToThisApp":
"Laipni lūdzam Voitrans, lūdzu, uzmanīgi izlasiet", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", noklikšķinot uz 'Piekrītu un ienākt', jūs apliecināt, ka esat pilnībā izlasījis un piekrītat iepriekš minētajiem līgumiem. Noklikšķinot uz 'Nepiekrītu', jūs iziesiet no lietotnes.",
"disagree": "Nepiekrītu",
"agreeAndEnter": "Piekrītu un ienākt",
", noklikšķinot uz 'Piekrītu un ienākt', jūs apliecināt, ka esat pilnībā izlasījis un piekrītat iepriekš minētajiem līgumiem. Noklikšķinot uz 'Nepiekrītu', jūs iziesiet no lietotnes.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Nepiekrītu", // 不同意
"agreeAndEnter": "Piekrītu un ienākt", // 同意并进入
// 首页
"deviceStatus": "Ierīces statuss",
@ -186,6 +190,209 @@ const Map<String, String> lvLV = {
"usageStats": "Pārskatījumu statistika",
"usageStatsInfo": "Pārskatiet jūsu lietotāja pārskatījumu statistiku",
"scene": "Scenārijs",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Izlaist",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Sākt sapulci",
@ -200,13 +407,244 @@ const Map<String, String> lvLV = {
'aiSummary': 'AI kopsavilkums',
'meetingTranscript': 'Sapulces atšifrējums',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Sistēmas iestatījumi", //系统设置
"vipRecharge": "Premium biedra pārrakstīšana", //会员充值
"aiRecharge": "Premium biedrs", //AI充值
"translationRecharge": "Tulkošanas pārrakstīšana", //翻译充值
"meetingAssistantRecharge": "Sapulces palīgs pārrakstīšana", //会议助手充值
"cloudSync": "Tīkla sincronizācijas pārrakstīšana", //云端同步
"systemSettings": "Sistēmas iestatījumi",
"vipRecharge": "Premium biedra pārrakstīšana",
"aiRecharge": "Premium biedrs",
"translationRecharge": "Tulkošanas pārrakstīšana",
"meetingAssistantRecharge": "Sapulces palīgs pārrakstīšana",
"cloudSync": "Tīkla sincronizācijas pārrakstīšana",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Savienotā ierīce:",
"accountId": "Konta ID:",
"systemSetting": "Sistēmas iestatījumi",
@ -218,8 +656,9 @@ const Map<String, String> lvLV = {
"lastBackup": "Pēdējā dublēšana:",
"privacySettings": "Privātuma iestatījumi",
"privacySettingsInfo": "Pārvaldīt datu vākšanu un atļaujas",
"permissionManagement": "Atļauju pārvaldība",
"permissionManagementInfo": "Pārvaldīt lietotnes atļauju iestatījumus",
"permissionManagement": "Atļauju pārvaldība", // 权限管理
"permissionManagementInfo":
"Pārvaldīt lietotnes atļauju iestatījumus", // 管理应用权限设置
"aboutApplication": "Par lietotni",
"versions": "Versija",
"checkUpdates": "Pārbaudīt atjauninājumus",
@ -255,11 +694,10 @@ const Map<String, String> lvLV = {
'networkErrorRetry': 'Tīkla kļūda, lūdzu, mēģiniet vēlreiz vēlāk',
// 设备管理相关
'clearPairedDevices': 'Notīrīt pārī savienotās ierīces',
'clearPairedDevicesConfirm':
'Vai esat pārliecināts, ka vēlaties notīrīt visas pārī savienotās ierīces?',
'clearPairedDevicesSuccess': 'Pārī savienotās ierīces veiksmīgi notīrītas',
'clearPairedDevicesFailed': 'Neizdevās notīrīt pārī savienotās ierīces',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Reāllaika balss tērzēšana",
@ -268,11 +706,20 @@ const Map<String, String> lvLV = {
"loading": "Ielādē...",
//设备管理页面
"earphone": "Austiņas",
"voicerecorder": "Diktofons",
"notBound": "Nav saistīts",
"deviceNotBoundYet": "Ierīce vēl nav saistīta",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Atsaistīt",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -302,6 +749,20 @@ const Map<String, String> lvLV = {
"loadFailedClickRetry":
"Ielāde neizdevās, noklikšķiniet, lai mēģinātu vēlreiz",
"swipeUpForMore": "Velciet uz augšu, lai redzētu vairāk",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Sveiki! Esmu **SjaoJaņ**, es varu jums palīdzēt:\n\n'
@ -324,8 +785,8 @@ const Map<String, String> lvLV = {
'startPhoneCallMode': 'Sākt zvanīšanas režīmu, sākt balss ievadi',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Ievadiet savu ziņu šeit...',
'characterCount': '{count} rakstzīmes',
'fullScreenEditorHint': 'Ievadiet savu ziņu šeit...', // 全屏编辑器输入提示
'characterCount': '{count} rakstzīmes', // 字符计数显示
// 消息长按操作
'copy': 'Kopēt',
@ -335,6 +796,7 @@ const Map<String, String> lvLV = {
'submitFailed': 'Iesniegšana neizdevās',
'reportSubmitted':
'Ziņojums iesniegts, mēs to apstrādāsim pēc iespējas ātrāk',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Kaitīgs/Nedrošs',
'pornographicVulgar': 'Pornogrāfisks/Vulgārs',
'misleadingAttack': 'Maldinošs/Uzbrukums',
@ -344,6 +806,7 @@ const Map<String, String> lvLV = {
'other': 'Cits',
'reportDescriptionHint':
'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.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Ģenerējis AI',
@ -354,15 +817,15 @@ const Map<String, String> lvLV = {
'moreMusic': 'Vairāk mūzikas',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'stundas',
'minutes': 'minūtes',
'seconds': 'sekundes',
'navigating': 'Navigē',
'currentLocation': 'Pašreizējā atrašanās vieta',
'approximate': 'Apm.',
'enterRoad': 'Iebraukt',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'stundas', // 小时单位
'minutes': 'minūtes', // 分钟单位
'seconds': 'sekundes', // 秒单位
'navigating': 'Navigē', // 导航状态
'currentLocation': 'Pašreizējā atrašanās vieta', // 当前位置
'approximate': 'Apm.', // 大约
'enterRoad': 'Iebraukt', // 进入道路
"driving": "Braukšana",
"walking": "Iešana",
"bicycling": "Riteņbraukšana",
@ -398,6 +861,17 @@ const Map<String, String> lvLV = {
"friday": "Piekt.",
"saturday": "Sest.",
"sunday": "Svēt.",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Saulains",
"partlyCloudy": "Daļēji apmācies",
@ -434,6 +908,8 @@ const Map<String, String> lvLV = {
'deleteAccount': 'Dzēst kontu',
'deleteAccountTips':
'Vai esat pārliecināts, ka vēlaties neatgriezeniski dzēst savu kontu? Šī darbība nav atgriezeniska.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -455,6 +931,8 @@ const Map<String, String> lvLV = {
'Iekšēja servera kļūda, lūdzu, mēģiniet vēlreiz vēlāk',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Attēla saspiešana neizdevās',
'avatarUpdateFailed': 'Avatara atjaunināšana neizdevās',
'usernameCannotBeEmpty': 'Lietotājvārds nevar būt tukšs',
@ -468,28 +946,43 @@ const Map<String, String> lvLV = {
'Konta dzēšana neizdevās, lūdzu, mēģiniet vēlreiz',
// 账号服务相关
'clearUserDataFailed': 'Neizdevās notīrīt lietotāja datus',
'deleteUserDataFailed': 'Neizdevās dzēst lietotāja datus',
'thirdPartyLogoutSuccess': 'Trešās puses izrakstīšanās veiksmīga',
'thirdPartyLogoutFailed': 'Trešās puses izrakstīšanās neizdevās',
'signOutProcessError': 'Izrakstīšanās procesā radās kļūda',
'deleteAccountProcessError': 'Konta dzēšanas procesā radās kļūda',
'userDataClearSuccess': 'Lietotāja dati veiksmīgi notīrīti',
'allUserDataClearSuccess': 'Visi lietotāja dati veiksmīgi notīrīti',
'accountServiceInitialized': 'Konta pakalpojums ir inicializēts',
'clearUserDataFailed': 'Neizdevās notīrīt lietotāja datus', // 清理用户数据失败
'deleteUserDataFailed': 'Neizdevās dzēst lietotāja datus', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Trešās puses izrakstīšanās veiksmīga', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Trešās puses izrakstīšanās neizdevās', // 第三方登录退出失败
'signOutProcessError': 'Izrakstīšanās procesā radās kļūda', // 登出过程发生错误
'deleteAccountProcessError':
'Konta dzēšanas procesā radās kļūda', // 删除账号过程发生错误
'userDataClearSuccess': 'Lietotāja dati veiksmīgi notīrīti', // 用户数据清理成功
'allUserDataClearSuccess':
'Visi lietotāja dati veiksmīgi notīrīti', // 所有用户数据清理成功
'accountServiceInitialized':
'Konta pakalpojums ir inicializēts', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Neizdevās iegūt atļaujas statusu',
'communicationPermissions': 'Komunikācijas atļaujas',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kalendāra atļaujas',
'locationPermissions': 'Atrašanās vietas atļaujas',
'phone': 'Tālrunis',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Rakstīt kalendārā',
'calendarFullAccess': 'Pilna piekļuve kalendāram',
'locationInfo': 'Atrašanās vietas informācija',
'phonePermissionDesc': 'Izmanto zvanīšanas funkcijai',
'smsPermissionDesc': 'Izmanto SMS sūtīšanas funkcijai',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Izmanto kalendāra notikumu un atgādinājumu izveidei',
'calendarFullAccessPermissionDesc':
@ -507,28 +1000,90 @@ const Map<String, String> lvLV = {
'phonePermissionDetailDesc':
'Zvanīšanas funkcijai nepieciešama tālruņa atļauja',
'smsPermissionDetailDesc': 'SMS sūtīšanas funkcijai nepieciešama SMS atļauja',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Kalendāra notikumu izveidei nepieciešama kalendāra rakstīšanas atļauja',
'calendarFullAccessPermissionDetailDesc':
'Kalendāra notikumu pārvaldībai nepieciešama pilna kalendāra atļauja',
'locationPermissionDetailDesc':
'Atrašanās vietas informācijas iegūšanai nepieciešama atrašanās vietas atļauja',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Lietotnei ir nepieciešama šī atļauja pilnai funkcionalitātei',
'permanentDenialText':
'Jūs esat neatgriezeniski atteicis {permission} atļauju, lūdzu, dodieties uz lietotnes iestatījumiem, lai to iespējotu',
'goToSettings': 'Doties uz iestatījumiem',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Atrasta jauna versija',
'remindLater': 'Atgādināt vēlāk',
'updateNow': 'Atjaunināt tagad',
'checkUpdate': 'Pārbaudīt atjauninājumu',
'updateFailed': 'Atjaunināšana neizdevās',
'newVersionFound': 'Atrasta jauna versija', // 版本更新对话框标题
'remindLater': 'Atgādināt vēlāk', // 稍后提醒按钮
'updateNow': 'Atjaunināt tagad', // 立即更新按钮
'checkUpdate': 'Pārbaudīt atjauninājumu', // 检查更新按钮
'updateFailed': 'Atjaunināšana neizdevās', // 更新失败提示
'cannotOpenAppStore':
'Nevar atvērt lietotņu veikalu, lūdzu, dodieties uz lietotņu veikalu manuāli, lai atjauninātu',
'Nevar atvērt lietotņu veikalu, lūdzu, dodieties uz lietotņu veikalu manuāli, lai atjauninātu', // 无法打开应用商店提示
'updateErrorRetry':
'Atjaunināšanas laikā radās kļūda, lūdzu, mēģiniet vēlreiz vēlāk',
'Atjaunināšanas laikā radās kļūda, lūdzu, mēģiniet vēlreiz vēlāk', // 更新错误重试提示
//国家列表
"邮箱": "E-pasts",
@ -637,8 +1192,23 @@ const Map<String, String> lvLV = {
"东帝汶": "Austrumtimora",
"斐济": "Fidži",
"所罗门群岛": "Zālamana Salas",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Tulkošanas vēsture",
"enableRecording": "Iespējot ierakstīšanu",
@ -647,9 +1217,24 @@ const Map<String, String> lvLV = {
"phoneUser": "Tālruņa lietotājs",
"selectSourceLanguage": "Izvēlēties avota valodu",
"selectTargetLanguage": "Izvēlēties mērķa valodu",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Vēl nav vēstures",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Notīrīt vēsturi",
"clearHistoryConfirm":
"Vai esat pārliecināts, ka vēlaties notīrīt visu tulkošanas vēsturi? Šī darbība nav atgriezeniska.",
@ -658,7 +1243,58 @@ const Map<String, String> lvLV = {
"deleteSessionConfirm":
"Vai esat pārliecināts, ka vēlaties dzēst visus šīs sesijas tulkošanas ierakstus? Šī darbība nav atgriezeniska.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Tulkot audio failus",
"noAudioFiles": "Vēl nav audio failu",
"calculating": "Aprēķina...",
@ -704,7 +1340,7 @@ const Map<String, String> lvLV = {
"autoInputCode": "Automātiska koda ievade",
"skipBinding": "Izlaist saistīšanu",
"rescan": "Skenēt vēlreiz",
"skip": "Izlaist",
"verifyingDevice": "Pārbauda ierīci...",
"confirmBinding": "Apstiprināt saistīšanu",
"associatingDevice": "Asociē ierīci...",
@ -736,12 +1372,17 @@ const Map<String, String> lvLV = {
"pairingFailedRetry": "Savienošana pārī neizdevās, lūdzu, mēģiniet vēlreiz",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Lūdzu, iespējojiet Bluetooth',
'deviceDisconnected': 'Ierīce atvienota',
'readyToStartPairing': 'Gatavs sākt savienošanu pārī',
'checkingEnvironment': 'Pārbauda vidi...',
'ensureHeadsetOnAndPairingMode':
'Lūdzu, pārliecinieties, ka austiņas ir ieslēgtas un savienošanas pārī režīmā',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Izveido drošu savienojumu...',
'needManualBindingAuthCode':
'Nepieciešams manuālas saistīšanas autorizācijas kods...',
@ -765,6 +1406,19 @@ const Map<String, String> lvLV = {
'deviceAuthorizationFailedCheckCode':
'Ierīces autorizācija neizdevās, lūdzu, pārbaudiet autorizācijas kodu',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Lietotāju atsauksmes",
'feedbackInfo': 'Sniedziet atsauksmes vai ieteikumus',
@ -794,6 +1448,13 @@ const Map<String, String> lvLV = {
"connectionFailed": "Savienojums neizdevās",
"retryConnection": "Mēģināt savienot vēlreiz",
"ota_updateNow": "Atjaunināt tagad",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Turiet ierīci savienotu, neaizveriet lietotni",
"doNotDisconnect": "Neatvienojiet",
"charging": "Uzlādējas",
@ -802,11 +1463,11 @@ const Map<String, String> lvLV = {
"Izņemiet abas austiņas un pārliecinieties, ka abu baterijas līmenis ir virs 20%",
// 音乐列表页面
"noMusic": "Nav mūzikas",
"noPlayingMusic": "Netiek atskaņota mūzika",
"unknownSong": "Nezināma dziesma",
"unknownArtist": "Nezināms izpildītājs",
"playAll": "Atskaņot visu",
"noMusic": "Nav mūzikas", // 暂无音乐
"noPlayingMusic": "Netiek atskaņota mūzika", // 暂无播放音乐
"unknownSong": "Nezināma dziesma", // 未知歌曲
"unknownArtist": "Nezināms izpildītājs", // 未知歌手
"playAll": "Atskaņot visu", // 播放全部
// 语言名称
"中文(简体)": "Ķīniešu (vienkāršotā)",
@ -848,4 +1509,23 @@ const Map<String, String> lvLV = {
"乌尔都语": "Urdu",
"波斯语": "Persiešu",
"斯瓦希里语": "Svahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> msMY = {
"spanish": "Bahasa Sepanyol",
"portuguese": "Bahasa Portugis",
"traditionalChinese": "Bahasa Cina Tradisional",
"traditionalChineseHK": "Cina Tradisional (Hong Kong)",
"japanese": "Bahasa Jepun",
"korean": "Bahasa Korea",
"french": "Bahasa Perancis",
@ -100,12 +101,15 @@ const Map<String, String> msMY = {
"usePasswordLogin": "Log masuk dengan kata laluan",
// 隐私政策弹窗
"loginDeclaration": "Pengisytiharan Voitrans",
"welcomeToThisApp": "Selamat datang ke Voitrans, sila baca dengan teliti",
"loginDeclaration": "Pengisytiharan Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Selamat datang ke Voitrans, sila baca dengan teliti", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", dengan mengklik 'Setuju dan Masuk' bermakna anda telah membaca sepenuhnya dan bersetuju dengan perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.",
"disagree": "Tidak Setuju",
"agreeAndEnter": "Setuju dan Masuk",
", dengan mengklik 'Setuju dan Masuk' bermakna anda telah membaca sepenuhnya dan bersetuju dengan perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Tidak Setuju", // 不同意
"agreeAndEnter": "Setuju dan Masuk", // 同意并进入
// 首页
"deviceStatus": "Status Peranti",
@ -185,6 +189,209 @@ const Map<String, String> msMY = {
"usageStats": "Statistik Penggunaan",
"usageStatsInfo": "Lihat statistik penggunaan aplikasi",
"scene": "Senario",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Langkau",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Mula Mesyuarat",
@ -199,13 +406,244 @@ const Map<String, String> msMY = {
'aiSummary': 'Ringkasan AI',
'meetingTranscript': 'Transkrip Mesyuarat',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Tetapan Sistem", //系统设置
"vipRecharge": "Pembayaran Ahli Premium", //会员充值
"aiRecharge": "Ahli Premium", //AI充值
"translationRecharge": "Pembayaran Penterjemahan", //翻译充值
"meetingAssistantRecharge": "Pembayaran Pembantu Mesyuarat", //会议助手充值
"cloudSync": "Pembayaran Sinkronisasi awan", //云端同步
"systemSettings": "Tetapan Sistem",
"vipRecharge": "Pembayaran Ahli Premium",
"aiRecharge": "Ahli Premium",
"translationRecharge": "Pembayaran Penterjemahan",
"meetingAssistantRecharge": "Pembayaran Pembantu Mesyuarat",
"cloudSync": "Pembayaran Sinkronisasi awan",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Peranti disambungkan:",
"accountId": "ID Akaun:",
"systemSetting": "Tetapan Sistem",
@ -217,8 +655,8 @@ const Map<String, String> msMY = {
"lastBackup": "Sandaran terakhir:",
"privacySettings": "Tetapan Privasi",
"privacySettingsInfo": "Urus pengumpulan data dan kebenaran",
"permissionManagement": "Pengurusan Kebenaran",
"permissionManagementInfo": "Urus tetapan kebenaran aplikasi",
"permissionManagement": "Pengurusan Kebenaran", // 权限管理
"permissionManagementInfo": "Urus tetapan kebenaran aplikasi", // 管理应用权限设置
"aboutApplication": "Mengenai Aplikasi",
"versions": "Versi",
"checkUpdates": "Semak Kemas Kini",
@ -253,11 +691,10 @@ const Map<String, String> msMY = {
'networkErrorRetry': 'Ralat rangkaian, sila cuba lagi nanti',
// 设备管理相关
'clearPairedDevices': 'Kosongkan Peranti Dipasangkan',
'clearPairedDevicesConfirm':
'Adakah anda pasti mahu mengosongkan semua peranti yang dipasangkan?',
'clearPairedDevicesSuccess': 'Berjaya mengosongkan peranti yang dipasangkan',
'clearPairedDevicesFailed': 'Gagal mengosongkan peranti yang dipasangkan',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Sembang Suara Masa Nyata",
@ -266,11 +703,20 @@ const Map<String, String> msMY = {
"loading": "Memuatkan...",
//设备管理页面
"earphone": "Fon Telinga",
"voicerecorder": "Perakam Suara",
"notBound": "Tidak Diikat",
"deviceNotBoundYet": "Belum ada peranti yang diikat",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Nyahikat",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -299,6 +745,20 @@ const Map<String, String> msMY = {
"loadMoreMessages": "Muatkan lebih banyak mesej...",
"loadFailedClickRetry": "Gagal memuatkan, klik untuk cuba lagi",
"swipeUpForMore": "Leret ke atas untuk lebih banyak",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Helo! Saya **Lily**, saya boleh bantu anda:\n\n'
@ -321,8 +781,8 @@ const Map<String, String> msMY = {
'startPhoneCallMode': 'Mula mod panggilan telefon, mula input suara',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Masukkan mesej anda di sini...',
'characterCount': '{count} aksara',
'fullScreenEditorHint': 'Masukkan mesej anda di sini...', // 全屏编辑器输入提示
'characterCount': '{count} aksara', // 字符计数显示
// 消息长按操作
'copy': 'Salin',
@ -332,6 +792,7 @@ const Map<String, String> msMY = {
'submitFailed': 'Gagal dihantar',
'reportSubmitted':
'Laporan telah dihantar, kami akan memprosesnya secepat mungkin',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Berbahaya/Tidak Selamat',
'pornographicVulgar': 'Pornografi/Lucah',
'misleadingAttack': 'Mengelirukan/Serangan',
@ -341,6 +802,7 @@ const Map<String, String> msMY = {
'other': 'Lain-lain',
'reportDescriptionHint':
'Kami ingin tahu sebab anda melaporkan, anda boleh menerangkan masalah yang anda hadapi.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Dihasilkan oleh AI',
@ -351,15 +813,15 @@ const Map<String, String> msMY = {
'moreMusic': 'Lagi Muzik',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'jam',
'minutes': 'minit',
'seconds': 'saat',
'navigating': 'Menavigasi',
'currentLocation': 'Lokasi Semasa',
'approximate': 'Anggaran',
'enterRoad': 'Masuk jalan',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'jam', // 小时单位
'minutes': 'minit', // 分钟单位
'seconds': 'saat', // 秒单位
'navigating': 'Menavigasi', // 导航状态
'currentLocation': 'Lokasi Semasa', // 当前位置
'approximate': 'Anggaran', // 大约
'enterRoad': 'Masuk jalan', // 进入道路
"driving": "Memandu",
"walking": "Berjalan",
"bicycling": "Berbasikal",
@ -395,6 +857,17 @@ const Map<String, String> msMY = {
"friday": "Jumaat",
"saturday": "Sabtu",
"sunday": "Ahad",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Cerah",
"partlyCloudy": "Separuh Berawan",
@ -430,6 +903,8 @@ const Map<String, String> msMY = {
'deleteAccount': 'Padam Akaun',
'deleteAccountTips':
'Adakah anda pasti mahu memadam akaun anda secara kekal? Tindakan ini tidak boleh dibatalkan',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -452,6 +927,8 @@ const Map<String, String> msMY = {
'Ralat dalaman pelayan, sila cuba lagi nanti',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Mampatan imej gagal',
'avatarUpdateFailed': 'Kemas kini avatar gagal',
'usernameCannotBeEmpty': 'Nama pengguna tidak boleh kosong',
@ -464,28 +941,42 @@ const Map<String, String> msMY = {
'deleteAccountFailedRetry': 'Gagal memadam akaun, sila cuba lagi',
// 账号服务相关
'clearUserDataFailed': 'Gagal mengosongkan data pengguna',
'deleteUserDataFailed': 'Gagal memadam data pengguna',
'thirdPartyLogoutSuccess': 'Log keluar pihak ketiga berjaya',
'thirdPartyLogoutFailed': 'Log keluar pihak ketiga gagal',
'signOutProcessError': 'Berlaku ralat semasa proses log keluar',
'deleteAccountProcessError': 'Berlaku ralat semasa proses pemadaman akaun',
'userDataClearSuccess': 'Data pengguna berjaya dikosongkan',
'allUserDataClearSuccess': 'Semua data pengguna berjaya dikosongkan',
'accountServiceInitialized': 'Perkhidmatan Akaun telah dimulakan',
'clearUserDataFailed': 'Gagal mengosongkan data pengguna', // 清理用户数据失败
'deleteUserDataFailed': 'Gagal memadam data pengguna', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Log keluar pihak ketiga berjaya', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Log keluar pihak ketiga gagal', // 第三方登录退出失败
'signOutProcessError': 'Berlaku ralat semasa proses log keluar', // 登出过程发生错误
'deleteAccountProcessError':
'Berlaku ralat semasa proses pemadaman akaun', // 删除账号过程发生错误
'userDataClearSuccess': 'Data pengguna berjaya dikosongkan', // 用户数据清理成功
'allUserDataClearSuccess':
'Semua data pengguna berjaya dikosongkan', // 所有用户数据清理成功
'accountServiceInitialized':
'Perkhidmatan Akaun telah dimulakan', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Gagal mendapatkan status kebenaran',
'communicationPermissions': 'Kebenaran Komunikasi',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kebenaran Kalendar',
'locationPermissions': 'Kebenaran Lokasi',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Tulis Kalendar',
'calendarFullAccess': 'Akses Penuh Kalendar',
'locationInfo': 'Maklumat Lokasi',
'phonePermissionDesc': 'Digunakan untuk fungsi membuat panggilan',
'smsPermissionDesc': 'Digunakan untuk fungsi menghantar SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Digunakan untuk membuat acara kalendar dan peringatan',
'calendarFullAccessPermissionDesc':
@ -502,27 +993,90 @@ const Map<String, String> msMY = {
'permissionRequestError': 'Ralat semasa meminta kebenaran',
'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan kebenaran telefon',
'smsPermissionDetailDesc': 'Fungsi menghantar SMS memerlukan kebenaran SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Membuat acara kalendar memerlukan kebenaran menulis kalendar',
'calendarFullAccessPermissionDetailDesc':
'Mengurus acara kalendar memerlukan kebenaran penuh kalendar',
'locationPermissionDetailDesc':
'Mendapatkan maklumat lokasi memerlukan kebenaran lokasi',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplikasi memerlukan kebenaran ini untuk fungsi penuh',
'permanentDenialText':
'Anda telah menafikan kebenaran {permission} secara kekal, sila pergi ke tetapan aplikasi untuk mendayakannya',
'goToSettings': 'Pergi ke Tetapan',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Versi Baharu Ditemui',
'remindLater': 'Ingatkan Kemudian',
'updateNow': 'Kemas Kini Sekarang',
'checkUpdate': 'Semak Kemas Kini',
'updateFailed': 'Kemas Kini Gagal',
'newVersionFound': 'Versi Baharu Ditemui', // 版本更新对话框标题
'remindLater': 'Ingatkan Kemudian', // 稍后提醒按钮
'updateNow': 'Kemas Kini Sekarang', // 立即更新按钮
'checkUpdate': 'Semak Kemas Kini', // 检查更新按钮
'updateFailed': 'Kemas Kini Gagal', // 更新失败提示
'cannotOpenAppStore':
'Tidak dapat membuka gedung aplikasi, sila pergi ke gedung aplikasi secara manual untuk mengemas kini',
'updateErrorRetry': 'Berlaku ralat semasa kemas kini, sila cuba lagi nanti',
'Tidak dapat membuka gedung aplikasi, sila pergi ke gedung aplikasi secara manual untuk mengemas kini', // 无法打开应用商店提示
'updateErrorRetry':
'Berlaku ralat semasa kemas kini, sila cuba lagi nanti', // 更新错误重试提示
//国家列表
"邮箱": "E-mel",
@ -631,8 +1185,23 @@ const Map<String, String> msMY = {
"东帝汶": "Timor-Leste",
"斐济": "Fiji",
"所罗门群岛": "Solomon Islands",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Sejarah Terjemahan",
"enableRecording": "Dayakan Rakaman",
@ -641,9 +1210,24 @@ const Map<String, String> msMY = {
"phoneUser": "Pengguna Telefon",
"selectSourceLanguage": "Pilih bahasa sumber",
"selectTargetLanguage": "Pilih bahasa sasaran",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Tiada sejarah lagi",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Kosongkan Sejarah",
"clearHistoryConfirm":
"Adakah anda pasti mahu mengosongkan semua sejarah terjemahan? Tindakan ini tidak boleh dibatalkan.",
@ -652,7 +1236,58 @@ const Map<String, String> msMY = {
"deleteSessionConfirm":
"Adakah anda pasti mahu memadam semua rekod terjemahan untuk sesi ini? Tindakan ini tidak boleh dibatalkan.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Terjemah Fail Audio",
"noAudioFiles": "Tiada fail audio lagi",
"calculating": "Mengira...",
@ -697,7 +1332,7 @@ const Map<String, String> msMY = {
"autoInputCode": "Masukkan kod secara automatik",
"skipBinding": "Langkau Pengikatan",
"rescan": "Imbas Semula",
"skip": "Langkau",
"verifyingDevice": "Mengesahkan peranti...",
"confirmBinding": "Sahkan Pengikatan",
"associatingDevice": "Mengaitkan peranti...",
@ -729,12 +1364,17 @@ const Map<String, String> msMY = {
"pairingFailedRetry": "Pemasangan gagal, sila cuba lagi",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Sila dayakan Bluetooth',
'deviceDisconnected': 'Peranti diputuskan sambungan',
'readyToStartPairing': 'Sedia untuk memulakan pemasangan',
'checkingEnvironment': 'Menyemak persekitaran...',
'ensureHeadsetOnAndPairingMode':
'Sila pastikan fon kepala dihidupkan dan dalam mod pemasangan',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Mewujudkan sambungan selamat...',
'needManualBindingAuthCode': 'Kod kebenaran pengikatan manual diperlukan...',
'pairingSuccessful': 'Pemasangan berjaya!',
@ -755,6 +1395,19 @@ const Map<String, String> msMY = {
'deviceAuthorizationFailedCheckCode':
'Kebenaran peranti gagal, sila semak kod kebenaran',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Maklum Balas Pengguna",
'feedbackInfo': 'Berikan maklum balas atau cadangan',
@ -783,6 +1436,13 @@ const Map<String, String> msMY = {
"connectionFailed": "Sambungan Gagal",
"retryConnection": "Cuba Sambung Semula",
"ota_updateNow": "Kemas Kini Sekarang",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Pastikan peranti sentiasa bersambung, jangan tutup aplikasi",
"doNotDisconnect": "Jangan putuskan sambungan",
@ -792,11 +1452,11 @@ const Map<String, String> msMY = {
"Keluarkan kedua-dua fon telinga, dan pastikan bateri kedua-duanya melebihi 20%",
// 音乐列表页面
"noMusic": "Tiada Muzik",
"noPlayingMusic": "Tiada muzik dimainkan",
"unknownSong": "Lagu Tidak Diketahui",
"unknownArtist": "Artis Tidak Diketahui",
"playAll": "Main Semua",
"noMusic": "Tiada Muzik", // 暂无音乐
"noPlayingMusic": "Tiada muzik dimainkan", // 暂无播放音乐
"unknownSong": "Lagu Tidak Diketahui", // 未知歌曲
"unknownArtist": "Artis Tidak Diketahui", // 未知歌手
"playAll": "Main Semua", // 播放全部
// 语言名称
"中文(简体)": "Bahasa Cina (Ringkas)",
@ -838,4 +1498,23 @@ const Map<String, String> msMY = {
"乌尔都语": "Bahasa Urdu",
"波斯语": "Bahasa Parsi",
"斯瓦希里语": "Bahasa Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> nbNO = {
"spanish": "Spansk",
"portuguese": "Portugisisk",
"traditionalChinese": "Tradisjonell kinesisk",
"traditionalChineseHK": "Tradisjonell kinesisk (Hongkong)",
"japanese": "Japansk",
"korean": "Koreansk",
"french": "Fransk",
@ -99,12 +100,15 @@ const Map<String, String> nbNO = {
"usePasswordLogin": "Logg inn med passord",
// 隐私政策弹窗
"loginDeclaration": "Voitrans-erklæring",
"welcomeToThisApp": "Velkommen til Voitrans, vennligst les nøye",
"loginDeclaration": "Voitrans-erklæring", // Voitrans 声明
"welcomeToThisApp":
"Velkommen til Voitrans, vennligst les nøye", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", ved å klikke 'Godta og gå inn' bekrefter du at du har lest og godtar de ovennevnte avtalene. Ved å klikke 'Avslå' vil du avslutte applikasjonen.",
"disagree": "Avslå",
"agreeAndEnter": "Godta og gå inn",
", ved å klikke 'Godta og gå inn' bekrefter du at du har lest og godtar de ovennevnte avtalene. Ved å klikke 'Avslå' vil du avslutte applikasjonen.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Avslå", // 不同意
"agreeAndEnter": "Godta og gå inn", // 同意并进入
// 首页
"deviceStatus": "Enhetsstatus",
@ -185,6 +189,209 @@ const Map<String, String> nbNO = {
"usageStats": "Brukstatistikk",
"usageStatsInfo": "Vis brukstatistikk for din app",
"scene": "Scenario",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Hopp over",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Start møte",
@ -199,13 +406,244 @@ const Map<String, String> nbNO = {
'aiSummary': 'AI-sammendrag',
'meetingTranscript': 'Møtetranskripsjon',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Systeminnstillinger", //系统设置
"vipRecharge": "Premium-medlemsinnskudd", //会员充值
"aiRecharge": "Premium-medlem", //AI充值
"translationRecharge": "Oversettelsespenger", //翻译充值
"meetingAssistantRecharge": "Møteassistentpenger", //会议助手充值
"cloudSync": "Cloud-synchroniseringspenger", //云端同步
"systemSettings": "Systeminnstillinger",
"vipRecharge": "Premium-medlemsinnskudd",
"aiRecharge": "Premium-medlem",
"translationRecharge": "Oversettelsespenger",
"meetingAssistantRecharge": "Møteassistentpenger",
"cloudSync": "Cloud-synchroniseringspenger",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Tilkoblet enhet:",
"accountId": "Konto-ID:",
"systemSetting": "Systeminnstillinger",
@ -217,8 +655,9 @@ const Map<String, String> nbNO = {
"lastBackup": "Siste sikkerhetskopi:",
"privacySettings": "Personverninnstillinger",
"privacySettingsInfo": "Administrer datainnsamling og tillatelser",
"permissionManagement": "Tillatelsesadministrasjon",
"permissionManagementInfo": "Administrer innstillinger for app-tillatelser",
"permissionManagement": "Tillatelsesadministrasjon", // 权限管理
"permissionManagementInfo":
"Administrer innstillinger for app-tillatelser", // 管理应用权限设置
"aboutApplication": "Om appen",
"versions": "Versjon",
"checkUpdates": "Se etter oppdateringer",
@ -254,11 +693,10 @@ const Map<String, String> nbNO = {
'networkErrorRetry': 'Nettverksfeil, prøv igjen senere',
// 设备管理相关
'clearPairedDevices': 'Fjern parede enheter',
'clearPairedDevicesConfirm':
'Er du sikker på at du vil fjerne alle parede enheter?',
'clearPairedDevicesSuccess': 'Parede enheter fjernet',
'clearPairedDevicesFailed': 'Fjerning av parede enheter mislyktes',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Sanntids talechat",
@ -267,11 +705,20 @@ const Map<String, String> nbNO = {
"loading": "Laster inn...",
//设备管理页面
"earphone": "Ørepropper",
"voicerecorder": "Lydopptaker",
"notBound": "Ikke bundet",
"deviceNotBoundYet": "Enheten er ikke bundet ennå",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Fjern binding",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -301,6 +748,20 @@ const Map<String, String> nbNO = {
"loadMoreMessages": "Last inn flere meldinger...",
"loadFailedClickRetry": "Innlasting mislyktes, klikk for å prøve igjen",
"swipeUpForMore": "Sveip opp for mer",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Hei! Jeg er **Lily**, jeg kan hjelpe deg med:\n\n'
@ -323,8 +784,8 @@ const Map<String, String> nbNO = {
'startPhoneCallMode': 'Start anropsmodus, start taleinndata',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Skriv meldingen din her...',
'characterCount': '{count} tegn',
'fullScreenEditorHint': 'Skriv meldingen din her...', // 全屏编辑器输入提示
'characterCount': '{count} tegn', // 字符计数显示
// 消息长按操作
'copy': 'Kopier',
@ -333,6 +794,7 @@ const Map<String, String> nbNO = {
'submitSuccess': 'Sendt inn',
'submitFailed': 'Innsending mislyktes',
'reportSubmitted': 'Rapport sendt, vi vil behandle den så snart som mulig',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Skadelig/Usikker',
'pornographicVulgar': 'Pornografisk/Vulgær',
'misleadingAttack': 'Villedende/Angrep',
@ -342,6 +804,7 @@ const Map<String, String> nbNO = {
'other': 'Annet',
'reportDescriptionHint':
'Vi vil gjerne vite hvorfor du rapporterer, du kan beskrive problemet du opplevde.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Generert av AI',
@ -352,15 +815,15 @@ const Map<String, String> nbNO = {
'moreMusic': 'Mer musikk',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'timer',
'minutes': 'minutter',
'seconds': 'sekunder',
'navigating': 'Navigerer',
'currentLocation': 'Nåværende posisjon',
'approximate': 'Omtrent',
'enterRoad': 'Kjør inn på',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'timer', // 小时单位
'minutes': 'minutter', // 分钟单位
'seconds': 'sekunder', // 秒单位
'navigating': 'Navigerer', // 导航状态
'currentLocation': 'Nåværende posisjon', // 当前位置
'approximate': 'Omtrent', // 大约
'enterRoad': 'Kjør inn på', // 进入道路
"driving": 'Kjøring',
"walking": 'Gåing',
"bicycling": 'Sykling',
@ -396,6 +859,17 @@ const Map<String, String> nbNO = {
"friday": "Fre",
"saturday": "Lør",
"sunday": "Søn",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Sol",
"partlyCloudy": "Delvis skyet",
@ -431,6 +905,8 @@ const Map<String, String> nbNO = {
'deleteAccount': 'Slett konto',
'deleteAccountTips':
'Er du sikker på at du vil slette kontoen din permanent? Denne handlingen kan ikke angres.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -452,6 +928,8 @@ const Map<String, String> nbNO = {
'serverInternalErrorRetryLater': 'Intern serverfeil, prøv igjen senere',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Bildekomprimering mislyktes',
'avatarUpdateFailed': 'Avatar-oppdatering mislyktes',
'usernameCannotBeEmpty': 'Brukernavn kan ikke være tomt',
@ -464,28 +942,41 @@ const Map<String, String> nbNO = {
'deleteAccountFailedRetry': 'Sletting av konto mislyktes, prøv igjen',
// 账号服务相关
'clearUserDataFailed': 'Fjerning av brukerdata mislyktes',
'deleteUserDataFailed': 'Sletting av brukerdata mislyktes',
'thirdPartyLogoutSuccess': 'Utlogging fra tredjepart vellykket',
'thirdPartyLogoutFailed': 'Utlogging fra tredjepart mislyktes',
'signOutProcessError': 'Det oppstod en feil under utloggingen',
'deleteAccountProcessError': 'Det oppstod en feil under sletting av kontoen',
'userDataClearSuccess': 'Brukerdata fjernet',
'allUserDataClearSuccess': 'Alle brukerdata fjernet',
'accountServiceInitialized': 'Kontotjenesten er initialisert',
'clearUserDataFailed': 'Fjerning av brukerdata mislyktes', // 清理用户数据失败
'deleteUserDataFailed': 'Sletting av brukerdata mislyktes', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Utlogging fra tredjepart vellykket', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Utlogging fra tredjepart mislyktes', // 第三方登录退出失败
'signOutProcessError': 'Det oppstod en feil under utloggingen', // 登出过程发生错误
'deleteAccountProcessError':
'Det oppstod en feil under sletting av kontoen', // 删除账号过程发生错误
'userDataClearSuccess': 'Brukerdata fjernet', // 用户数据清理成功
'allUserDataClearSuccess': 'Alle brukerdata fjernet', // 所有用户数据清理成功
'accountServiceInitialized':
'Kontotjenesten er initialisert', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Henting av tillatelsesstatus mislyktes',
'communicationPermissions': 'Kommunikasjonstillatelser',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kalendertillatelser',
'locationPermissions': 'Posisjonstillatelser',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Skriv til kalender',
'calendarFullAccess': 'Full tilgang til kalender',
'locationInfo': 'Posisjonsinformasjon',
'phonePermissionDesc': 'Brukes for å ringe',
'smsPermissionDesc': 'Brukes for å sende SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Brukes for å opprette kalenderhendelser og påminnelser',
'calendarFullAccessPermissionDesc':
@ -501,28 +992,90 @@ const Map<String, String> nbNO = {
'permissionRequestError': 'Feil ved forespørsel om tillatelse',
'phonePermissionDetailDesc': 'Ringefunksjonen krever telefontillatelse',
'smsPermissionDetailDesc': 'Send SMS-funksjonen krever SMS-tillatelse',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Å opprette kalenderhendelser krever skrivetilgang til kalenderen',
'calendarFullAccessPermissionDetailDesc':
'Å administrere kalenderhendelser krever full tilgang til kalenderen',
'locationPermissionDetailDesc':
'Å hente posisjonsinformasjon krever posisjonstillatelse',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Appen trenger denne tillatelsen for full funksjonalitet',
'permanentDenialText':
'Du har permanent nektet {permission}-tillatelse, gå til appinnstillingene for å aktivere den',
'goToSettings': 'Gå til innstillinger',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Ny versjon funnet',
'remindLater': 'Minn meg senere',
'updateNow': 'Oppdater nå',
'checkUpdate': 'Se etter oppdatering',
'updateFailed': 'Oppdatering mislyktes',
'newVersionFound': 'Ny versjon funnet', // 版本更新对话框标题
'remindLater': 'Minn meg senere', // 稍后提醒按钮
'updateNow': 'Oppdater nå', // 立即更新按钮
'checkUpdate': 'Se etter oppdatering', // 检查更新按钮
'updateFailed': 'Oppdatering mislyktes', // 更新失败提示
'cannotOpenAppStore':
'Kan ikke åpne appbutikken, gå til appbutikken manuelt for å oppdatere',
'Kan ikke åpne appbutikken, gå til appbutikken manuelt for å oppdatere', // 无法打开应用商店提示
'updateErrorRetry':
'Det oppstod en feil under oppdateringen, prøv igjen senere',
'Det oppstod en feil under oppdateringen, prøv igjen senere', // 更新错误重试提示
//国家列表
"邮箱": "E-post",
@ -631,8 +1184,23 @@ const Map<String, String> nbNO = {
"东帝汶": "Øst-Timor",
"斐济": "Fiji",
"所罗门群岛": "Salomonøyene",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Oversettelseshistorikk",
"enableRecording": "Aktiver opptak",
@ -641,9 +1209,24 @@ const Map<String, String> nbNO = {
"phoneUser": "Telefonbruker",
"selectSourceLanguage": "Velg kildespråk",
"selectTargetLanguage": "Velg målspråk",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Ingen historikk ennå",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Tøm historikk",
"clearHistoryConfirm":
"Er du sikker på at du vil tømme all oversettelseshistorikk? Denne handlingen kan ikke angres.",
@ -652,7 +1235,58 @@ const Map<String, String> nbNO = {
"deleteSessionConfirm":
"Er du sikker på at du vil slette alle oversettelsesopptak for denne sesjonen? Denne handlingen kan ikke angres.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Oversett lydfiler",
"noAudioFiles": "Ingen lydfiler ennå",
"calculating": "Beregner...",
@ -698,7 +1332,7 @@ const Map<String, String> nbNO = {
"autoInputCode": "Automatisk innsetting av kode",
"skipBinding": "Hopp over binding",
"rescan": "Skann på nytt",
"skip": "Hopp over",
"verifyingDevice": "Verifiserer enhet...",
"confirmBinding": "Bekreft binding",
"associatingDevice": "Knytter til enhet...",
@ -730,12 +1364,17 @@ const Map<String, String> nbNO = {
"pairingFailedRetry": "Paring mislyktes, prøv igjen",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Vennligst aktiver Bluetooth',
'deviceDisconnected': 'Enheten er frakoblet',
'readyToStartPairing': 'Klar til å starte paring',
'checkingEnvironment': 'Sjekker miljø...',
'ensureHeadsetOnAndPairingMode':
'Sørg for at hodesettet er på og i paringsmodus',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Oppretter sikker tilkobling...',
'needManualBindingAuthCode': 'Manuell bindingsautorisasjonskode kreves...',
'pairingSuccessful': 'Paring vellykket!',
@ -756,6 +1395,19 @@ const Map<String, String> nbNO = {
'deviceAuthorizationFailedCheckCode':
'Enhetsautorisasjon mislyktes, sjekk autorisasjonskoden',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Bruker-tilbakemelding",
'feedbackInfo': 'Gi tilbakemelding eller forslag',
@ -783,6 +1435,13 @@ const Map<String, String> nbNO = {
"connectionFailed": "Tilkobling mislyktes",
"retryConnection": "Prøv å koble til på nytt",
"ota_updateNow": "Oppdater nå",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Hold enheten tilkoblet, ikke lukk appen",
"doNotDisconnect": "Ikke koble fra",
"charging": "Lader",
@ -791,11 +1450,11 @@ const Map<String, String> nbNO = {
"Ta ut begge øreproppene og sørg for at batterinivået på begge er over 20 %",
// 音乐列表页面
"noMusic": "Ingen musikk",
"noPlayingMusic": "Ingen musikk spilles av",
"unknownSong": "Ukjent sang",
"unknownArtist": "Ukjent artist",
"playAll": "Spill alle",
"noMusic": "Ingen musikk", // 暂无音乐
"noPlayingMusic": "Ingen musikk spilles av", // 暂无播放音乐
"unknownSong": "Ukjent sang", // 未知歌曲
"unknownArtist": "Ukjent artist", // 未知歌手
"playAll": "Spill alle", // 播放全部
// 语言名称
"中文(简体)": "Kinesisk (forenklet)",
@ -837,4 +1496,23 @@ const Map<String, String> nbNO = {
"乌尔都语": "Urdu",
"波斯语": "Persisk",
"斯瓦希里语": "Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> nlNL = {
"spanish": "Spaans",
"portuguese": "Portugees",
"traditionalChinese": "Traditioneel Chinees",
"traditionalChineseHK": "Traditioneel Chinees (Hongkong)",
"japanese": "Japans",
"korean": "Koreaans",
"french": "Frans",
@ -99,12 +100,15 @@ const Map<String, String> nlNL = {
"usePasswordLogin": "Inloggen met wachtwoord",
// 隐私政策弹窗
"loginDeclaration": "Voitrans Verklaring",
"welcomeToThisApp": "Welkom bij Voitrans, lees aandachtig door",
"loginDeclaration": "Voitrans Verklaring", // Voitrans 声明
"welcomeToThisApp":
"Welkom bij Voitrans, lees aandachtig door", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", door op 'Akkoord en doorgaan' te klikken, geeft u aan dat u de bovenstaande overeenkomsten volledig hebt gelezen en ermee akkoord gaat. Door op 'Niet akkoord' te klikken, wordt de applicatie afgesloten.",
"disagree": "Niet akkoord",
"agreeAndEnter": "Akkoord en doorgaan",
", door op 'Akkoord en doorgaan' te klikken, geeft u aan dat u de bovenstaande overeenkomsten volledig hebt gelezen en ermee akkoord gaat. Door op 'Niet akkoord' te klikken, wordt de applicatie afgesloten.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Niet akkoord", // 不同意
"agreeAndEnter": "Akkoord en doorgaan", // 同意并进入
// 首页
"deviceStatus": "Apparaatstatus",
@ -186,6 +190,209 @@ const Map<String, String> nlNL = {
"usageStats": "Gebruikstatistieken",
"usageStatsInfo": " Bekijk de gebruikstatistieken van uw applicatie",
"scene": "Scenario",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Overslaan",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Start vergadering",
@ -200,13 +407,244 @@ const Map<String, String> nlNL = {
'aiSummary': 'AI-samenvatting',
'meetingTranscript': 'Vergadertranscript',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Systeeminstellingen", //系统设置
"vipRecharge": "Premium lidspayering", //会员充值
"aiRecharge": "Premium lid", //AI充值
"translationRecharge": "Vertalingspayering", //翻译充值
"meetingAssistantRecharge": "Vergaderassistentpayering", //会议助手充值
"cloudSync": "Cloud-synchronisatiepayering", //云端同步
"systemSettings": "Systeeminstellingen",
"vipRecharge": "Premium lidspayering",
"aiRecharge": "Premium lid",
"translationRecharge": "Vertalingspayering",
"meetingAssistantRecharge": "Vergaderassistentpayering",
"cloudSync": "Cloud-synchronisatiepayering",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Verbonden apparaat:",
"accountId": "Account-ID:",
"systemSetting": "Systeeminstellingen",
@ -218,8 +656,8 @@ const Map<String, String> nlNL = {
"lastBackup": "Laatste back-up:",
"privacySettings": "Privacyinstellingen",
"privacySettingsInfo": "Beheer gegevensverzameling en toestemmingen",
"permissionManagement": "Toestemmingsbeheer",
"permissionManagementInfo": "Beheer app-toestemmingsinstellingen",
"permissionManagement": "Toestemmingsbeheer", // 权限管理
"permissionManagementInfo": "Beheer app-toestemmingsinstellingen", // 管理应用权限设置
"aboutApplication": "Over de app",
"versions": "Versie",
"checkUpdates": "Controleren op updates",
@ -254,11 +692,10 @@ const Map<String, String> nlNL = {
'networkErrorRetry': 'Netwerkfout, probeer het later opnieuw',
// 设备管理相关
'clearPairedDevices': 'Gekoppelde apparaten wissen',
'clearPairedDevicesConfirm':
'Weet u zeker dat u alle gekoppelde apparaten wilt wissen?',
'clearPairedDevicesSuccess': 'Gekoppelde apparaten met succes gewist',
'clearPairedDevicesFailed': 'Wissen van gekoppelde apparaten mislukt',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Realtime spraakchat",
@ -267,11 +704,20 @@ const Map<String, String> nlNL = {
"loading": "Laden...",
//设备管理页面
"earphone": "Oortjes",
"voicerecorder": "Spraakrecorder",
"notBound": "Niet gekoppeld",
"deviceNotBoundYet": "Nog geen apparaat gekoppeld",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Ontkoppelen",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -301,6 +747,20 @@ const Map<String, String> nlNL = {
"loadMoreMessages": "Meer berichten laden...",
"loadFailedClickRetry": "Laden mislukt, klik om opnieuw te proberen",
"swipeUpForMore": "Veeg omhoog voor meer",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Hallo! Ik ben **Lily**, ik kan u helpen met:\n\n'
@ -323,8 +783,8 @@ const Map<String, String> nlNL = {
'startPhoneCallMode': 'Start belmodus, start spraakinvoer',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Voer uw bericht hier in...',
'characterCount': '{count} tekens',
'fullScreenEditorHint': 'Voer uw bericht hier in...', // 全屏编辑器输入提示
'characterCount': '{count} tekens', // 字符计数显示
// 消息长按操作
'copy': 'Kopiëren',
@ -334,6 +794,7 @@ const Map<String, String> nlNL = {
'submitFailed': 'Indienen mislukt',
'reportSubmitted':
'Rapport ingediend, we zullen het zo snel mogelijk verwerken',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Schadelijk/Onveilig',
'pornographicVulgar': 'Pornografisch/Vulgair',
'misleadingAttack': 'Misleidend/Aanval',
@ -343,6 +804,7 @@ const Map<String, String> nlNL = {
'other': 'Overig',
'reportDescriptionHint':
'We willen weten waarom u rapporteert, u kunt het probleem dat u tegenkwam beschrijven.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Gegenereerd door AI',
@ -353,15 +815,15 @@ const Map<String, String> nlNL = {
'moreMusic': 'Meer muziek',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'uur',
'minutes': 'minuten',
'seconds': 'seconden',
'navigating': 'Navigeren',
'currentLocation': 'Huidige locatie',
'approximate': 'Ongeveer',
'enterRoad': 'Weg oprijden',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'uur', // 小时单位
'minutes': 'minuten', // 分钟单位
'seconds': 'seconden', // 秒单位
'navigating': 'Navigeren', // 导航状态
'currentLocation': 'Huidige locatie', // 当前位置
'approximate': 'Ongeveer', // 大约
'enterRoad': 'Weg oprijden', // 进入道路
"driving": 'Rijden',
"walking": 'Lopen',
"bicycling": 'Fietsen',
@ -396,6 +858,17 @@ const Map<String, String> nlNL = {
"friday": "Vr",
"saturday": "Za",
"sunday": "Zo",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Zonnig",
"partlyCloudy": "Licht bewolkt",
@ -431,6 +904,8 @@ const Map<String, String> nlNL = {
'deleteAccount': 'Account verwijderen',
'deleteAccountTips':
'Weet u zeker dat u uw account permanent wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -452,6 +927,8 @@ const Map<String, String> nlNL = {
'Interne serverfout, probeer het later opnieuw',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Beeldcompressie mislukt',
'avatarUpdateFailed': 'Avatar-update mislukt',
'usernameCannotBeEmpty': 'Gebruikersnaam mag niet leeg zijn',
@ -465,30 +942,46 @@ const Map<String, String> nlNL = {
'Verwijderen van account mislukt, probeer het opnieuw',
// 账号服务相关
'clearUserDataFailed': 'Wissen van gebruikersgegevens mislukt',
'deleteUserDataFailed': 'Verwijderen van gebruikersgegevens mislukt',
'thirdPartyLogoutSuccess': 'Uitloggen bij derde partij succesvol',
'thirdPartyLogoutFailed': 'Uitloggen bij derde partij mislukt',
'signOutProcessError': 'Er is een fout opgetreden tijdens het uitloggen',
'clearUserDataFailed': 'Wissen van gebruikersgegevens mislukt', // 清理用户数据失败
'deleteUserDataFailed':
'Verwijderen van gebruikersgegevens mislukt', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Uitloggen bij derde partij succesvol', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Uitloggen bij derde partij mislukt', // 第三方登录退出失败
'signOutProcessError':
'Er is een fout opgetreden tijdens het uitloggen', // 登出过程发生错误
'deleteAccountProcessError':
'Er is een fout opgetreden tijdens het verwijderen van het account',
'userDataClearSuccess': 'Gebruikersgegevens succesvol gewist',
'allUserDataClearSuccess': 'Alle gebruikersgegevens succesvol gewist',
'accountServiceInitialized': 'Accountservice is geïnitialiseerd',
'Er is een fout opgetreden tijdens het verwijderen van het account', // 删除账号过程发生错误
'userDataClearSuccess': 'Gebruikersgegevens succesvol gewist', // 用户数据清理成功
'allUserDataClearSuccess':
'Alle gebruikersgegevens succesvol gewist', // 所有用户数据清理成功
'accountServiceInitialized':
'Accountservice is geïnitialiseerd', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Ophalen van toestemmingsstatus mislukt',
'communicationPermissions': 'Communicatietoestemmingen',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kalendertoestemmingen',
'locationPermissions': 'Locatietoestemmingen',
'phone': 'Telefoon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Kalender schrijven',
'calendarFullAccess': 'Volledige kalendertoegang',
'locationInfo': 'Locatie-informatie',
'phonePermissionDesc': 'Gebruikt voor de belfunctie',
'smsPermissionDesc':
'Gebruikt voor de functie voor het verzenden van sms-berichten',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Gebruikt voor het maken van kalenderafspraken en herinneringen',
'calendarFullAccessPermissionDesc':
@ -507,28 +1000,90 @@ const Map<String, String> nlNL = {
'phonePermissionDetailDesc': 'De belfunctie vereist telefoontoestemming',
'smsPermissionDetailDesc':
'De functie voor het verzenden van sms-berichten vereist sms-toestemming',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Het maken van kalenderafspraken vereist schrijftoestemming voor de kalender',
'calendarFullAccessPermissionDetailDesc':
'Het beheren van kalenderafspraken vereist volledige kalendertoegang',
'locationPermissionDetailDesc':
'Het ophalen van locatie-informatie vereist locatietoestemming',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'De app heeft deze toestemming nodig voor volledige functionaliteit',
'permanentDenialText':
'U hebt de toestemming {permission} permanent geweigerd, ga naar de app-instellingen om deze in te schakelen',
'goToSettings': 'Ga naar instellingen',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Nieuwe versie gevonden',
'remindLater': 'Later herinneren',
'updateNow': 'Nu bijwerken',
'checkUpdate': 'Controleren op update',
'updateFailed': 'Update mislukt',
'newVersionFound': 'Nieuwe versie gevonden', // 版本更新对话框标题
'remindLater': 'Later herinneren', // 稍后提醒按钮
'updateNow': 'Nu bijwerken', // 立即更新按钮
'checkUpdate': 'Controleren op update', // 检查更新按钮
'updateFailed': 'Update mislukt', // 更新失败提示
'cannotOpenAppStore':
'Kan de app store niet openen, ga handmatig naar de app store om bij te werken',
'Kan de app store niet openen, ga handmatig naar de app store om bij te werken', // 无法打开应用商店提示
'updateErrorRetry':
'Er is een fout opgetreden tijdens het bijwerken, probeer het later opnieuw',
'Er is een fout opgetreden tijdens het bijwerken, probeer het later opnieuw', // 更新错误重试提示
//国家列表
"邮箱": "E-mail",
@ -637,8 +1192,23 @@ const Map<String, String> nlNL = {
"东帝汶": "Oost-Timor",
"斐济": "Fiji",
"所罗门群岛": "Salomonseilanden",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Vertaalgeschiedenis",
"enableRecording": "Opname inschakelen",
@ -647,9 +1217,24 @@ const Map<String, String> nlNL = {
"phoneUser": "Telefoongebruiker",
"selectSourceLanguage": "Selecteer brontaal",
"selectTargetLanguage": "Selecteer doeltaal",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Nog geen geschiedenis",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Geschiedenis wissen",
"clearHistoryConfirm":
"Weet u zeker dat u alle vertaalgeschiedenis wilt wissen? Deze actie kan niet ongedaan worden gemaakt.",
@ -658,7 +1243,58 @@ const Map<String, String> nlNL = {
"deleteSessionConfirm":
"Weet u zeker dat u alle vertaalopnamen voor deze sessie wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Audiobestanden vertalen",
"noAudioFiles": "Nog geen audiobestanden",
"calculating": "Berekenen...",
@ -704,7 +1340,7 @@ const Map<String, String> nlNL = {
"autoInputCode": "Code automatisch invoeren",
"skipBinding": "Koppeling overslaan",
"rescan": "Opnieuw scannen",
"skip": "Overslaan",
"verifyingDevice": "Apparaat verifiëren...",
"confirmBinding": "Koppeling bevestigen",
"associatingDevice": "Apparaat associëren...",
@ -736,12 +1372,17 @@ const Map<String, String> nlNL = {
"pairingFailedRetry": "Koppelen mislukt, probeer het opnieuw",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Schakel Bluetooth in',
'deviceDisconnected': 'Apparaat losgekoppeld',
'readyToStartPairing': 'Klaar om te beginnen met koppelen',
'checkingEnvironment': 'Omgeving controleren...',
'ensureHeadsetOnAndPairingMode':
'Zorg ervoor dat de headset is ingeschakeld en in de koppelingsmodus staat',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Beveiligde verbinding tot stand brengen...',
'needManualBindingAuthCode':
'Handmatige koppelingsautorisatiecode vereist...',
@ -764,6 +1405,19 @@ const Map<String, String> nlNL = {
'deviceAuthorizationFailedCheckCode':
'Apparaatautorisatie mislukt, controleer de autorisatiecode',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Gebruikersfeedback",
'feedbackInfo': 'Geef feedback of suggesties',
@ -793,6 +1447,13 @@ const Map<String, String> nlNL = {
"connectionFailed": "Verbinding mislukt",
"retryConnection": "Verbinding opnieuw proberen",
"ota_updateNow": "Nu bijwerken",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Houd het apparaat verbonden, sluit de app niet",
"doNotDisconnect": "Verbreek de verbinding niet",
"charging": "Opladen",
@ -801,11 +1462,11 @@ const Map<String, String> nlNL = {
"Haal beide oortjes eruit en zorg ervoor dat de batterij van beide meer dan 20% is",
// 音乐列表页面
"noMusic": "Geen muziek",
"noPlayingMusic": "Geen muziek aan het afspelen",
"unknownSong": "Onbekend nummer",
"unknownArtist": "Onbekende artiest",
"playAll": "Alles afspelen",
"noMusic": "Geen muziek", // 暂无音乐
"noPlayingMusic": "Geen muziek aan het afspelen", // 暂无播放音乐
"unknownSong": "Onbekend nummer", // 未知歌曲
"unknownArtist": "Onbekende artiest", // 未知歌手
"playAll": "Alles afspelen", // 播放全部
// 语言名称
"中文(简体)": "Chinees (vereenvoudigd)",
@ -847,4 +1508,23 @@ const Map<String, String> nlNL = {
"乌尔都语": "Urdu",
"波斯语": "Perzisch",
"斯瓦希里语": "Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> plPL = {
"spanish": "Hiszpański",
"portuguese": "Portugalski",
"traditionalChinese": "Chiński tradycyjny",
"traditionalChineseHK": "Chiński tradycyjny (Hongkong)",
"japanese": "Japoński",
"korean": "Koreański",
"french": "Francuski",
@ -100,12 +101,15 @@ const Map<String, String> plPL = {
"usePasswordLogin": "Zaloguj się hasłem",
// 隐私政策弹窗
"loginDeclaration": "Oświadczenie Voitrans",
"welcomeToThisApp": "Witaj w Voitrans, prosimy o uważne przeczytanie",
"loginDeclaration": "Oświadczenie Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Witaj w Voitrans, prosimy o uważne przeczytanie", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", kliknięcie 'Zgadzam się i wchodzę' oznacza, że przeczytałeś i zgadzasz się z powyższymi umowami. Kliknięcie 'Nie zgadzam się' spowoduje wyjście z aplikacji.",
"disagree": "Nie zgadzam się",
"agreeAndEnter": "Zgadzam się i wchodzę",
", kliknięcie 'Zgadzam się i wchodzę' oznacza, że przeczytałeś i zgadzasz się z powyższymi umowami. Kliknięcie 'Nie zgadzam się' spowoduje wyjście z aplikacji.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Nie zgadzam się", // 不同意
"agreeAndEnter": "Zgadzam się i wchodzę", // 同意并进入
// 首页
"deviceStatus": "Stan urządzenia",
@ -187,6 +191,209 @@ const Map<String, String> plPL = {
"usageStats": "Statystyki użycia",
"usageStatsInfo": "Przeglądaj statystyki użycia aplikacji",
"scene": "Scenariusz",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Pomiń",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Rozpocznij spotkanie",
@ -201,13 +408,244 @@ const Map<String, String> plPL = {
'aiSummary': 'Podsumowanie AI',
'meetingTranscript': 'Transkrypcja spotkania',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Ustawienia systemowe", //系统设置
"vipRecharge": "Płatność Premium", //会员充值
"aiRecharge": "Członek Premium", //AI充值
"translationRecharge": "Płatność tłumaczenia", //翻译充值
"meetingAssistantRecharge": "Płatność asystenta spotkań", //会议助手充值
"cloudSync": "Płatność synchronizacji w chmurze", //云端同步
"systemSettings": "Ustawienia systemowe",
"vipRecharge": "Płatność Premium",
"aiRecharge": "Członek Premium",
"translationRecharge": "Płatność tłumaczenia",
"meetingAssistantRecharge": "Płatność asystenta spotkań",
"cloudSync": "Płatność synchronizacji w chmurze",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Podłączone urządzenie:",
"accountId": "ID konta:",
"systemSetting": "Ustawienia systemowe",
@ -219,8 +657,9 @@ const Map<String, String> plPL = {
"lastBackup": "Ostatnia kopia zapasowa:",
"privacySettings": "Ustawienia prywatności",
"privacySettingsInfo": "Zarządzaj zbieraniem danych i uprawnieniami",
"permissionManagement": "Zarządzanie uprawnieniami",
"permissionManagementInfo": "Zarządzaj ustawieniami uprawnień aplikacji",
"permissionManagement": "Zarządzanie uprawnieniami", // 权限管理
"permissionManagementInfo":
"Zarządzaj ustawieniami uprawnień aplikacji", // 管理应用权限设置
"aboutApplication": "O aplikacji",
"versions": "Wersja",
"checkUpdates": "Sprawdź aktualizacje",
@ -256,12 +695,10 @@ const Map<String, String> plPL = {
'networkErrorRetry': 'Błąd sieci, spróbuj ponownie później',
// 设备管理相关
'clearPairedDevices': 'Wyczyść sparowane urządzenia',
'clearPairedDevicesConfirm':
'Czy na pewno chcesz wyczyścić wszystkie sparowane urządzenia?',
'clearPairedDevicesSuccess': 'Pomyślnie wyczyszczono sparowane urządzenia',
'clearPairedDevicesFailed':
'Wyczyszczenie sparowanych urządzeń nie powiodło się',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Czat głosowy w czasie rzeczywistym",
@ -270,11 +707,20 @@ const Map<String, String> plPL = {
"loading": "Ładowanie...",
//设备管理页面
"earphone": "Słuchawki",
"voicerecorder": "Dyktafon",
"notBound": "Niepowiązane",
"deviceNotBoundYet": "Urządzenie nie jest jeszcze powiązane",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Rozłącz",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -304,6 +750,20 @@ const Map<String, String> plPL = {
"loadFailedClickRetry":
"Ładowanie nie powiodło się, kliknij, aby spróbować ponownie",
"swipeUpForMore": "Przesuń w górę, aby zobaczyć więcej",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Cześć! Jestem **Lily**, mogę Ci pomóc:\n\n'
@ -327,8 +787,8 @@ const Map<String, String> plPL = {
'Rozpocznij tryb dzwonienia, rozpocznij wprowadzanie głosowe',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Wpisz swoją wiadomość tutaj...',
'characterCount': '{count} znaków',
'fullScreenEditorHint': 'Wpisz swoją wiadomość tutaj...', // 全屏编辑器输入提示
'characterCount': '{count} znaków', // 字符计数显示
// 消息长按操作
'copy': 'Kopiuj',
@ -338,6 +798,7 @@ const Map<String, String> plPL = {
'submitFailed': 'Przesyłanie nie powiodło się',
'reportSubmitted':
'Zgłoszenie zostało przesłane, zajmiemy się nim jak najszybciej',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Szkodliwe/Niebezpieczne',
'pornographicVulgar': 'Pornograficzne/Wulgarne',
'misleadingAttack': 'Wprowadzające w błąd/Atak',
@ -348,6 +809,7 @@ const Map<String, String> plPL = {
'other': 'Inne',
'reportDescriptionHint':
'Chcielibyśmy wiedzieć, dlaczego zgłaszasz, możesz opisać problem, z którym się spotkałeś.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Wygenerowano przez AI',
@ -358,15 +820,15 @@ const Map<String, String> plPL = {
'moreMusic': 'Więcej muzyki',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'godz.',
'minutes': 'min',
'seconds': 's',
'navigating': 'Nawigacja',
'currentLocation': 'Obecna lokalizacja',
'approximate': 'Około',
'enterRoad': 'Wjedź na',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'godz.', // 小时单位
'minutes': 'min', // 分钟单位
'seconds': 's', // 秒单位
'navigating': 'Nawigacja', // 导航状态
'currentLocation': 'Obecna lokalizacja', // 当前位置
'approximate': 'Około', // 大约
'enterRoad': 'Wjedź na', // 进入道路
"driving": 'Jazda samochodem',
"walking": 'Pieszo',
"bicycling": 'Rowerem',
@ -402,6 +864,17 @@ const Map<String, String> plPL = {
"friday": "Pt",
"saturday": "Sob",
"sunday": "Niedz",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Słonecznie",
"partlyCloudy": "Częściowe zachmurzenie",
@ -437,6 +910,8 @@ const Map<String, String> plPL = {
'deleteAccount': 'Usuń konto',
'deleteAccountTips':
'Czy na pewno chcesz trwale usunąć swoje konto? Tej operacji nie można cofnąć.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -458,6 +933,8 @@ const Map<String, String> plPL = {
'Wewnętrzny błąd serwera, spróbuj ponownie później',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Kompresja obrazu nie powiodła się',
'avatarUpdateFailed': 'Aktualizacja awatara nie powiodła się',
'usernameCannotBeEmpty': 'Nazwa użytkownika nie może być pusta',
@ -471,29 +948,47 @@ const Map<String, String> plPL = {
'Usuwanie konta nie powiodło się, spróbuj ponownie',
// 账号服务相关
'clearUserDataFailed': 'Wyczyszczenie danych użytkownika nie powiodło się',
'deleteUserDataFailed': 'Usunięcie danych użytkownika nie powiodło się',
'thirdPartyLogoutSuccess': 'Wylogowanie z usługi zewnętrznej powiodło się',
'thirdPartyLogoutFailed': 'Wylogowanie z usługi zewnętrznej nie powiodło się',
'signOutProcessError': 'Wystąpił błąd podczas wylogowywania',
'deleteAccountProcessError': 'Wystąpił błąd podczas usuwania konta',
'userDataClearSuccess': 'Dane użytkownika zostały pomyślnie wyczyszczone',
'clearUserDataFailed':
'Wyczyszczenie danych użytkownika nie powiodło się', // 清理用户数据失败
'deleteUserDataFailed':
'Usunięcie danych użytkownika nie powiodło się', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Wylogowanie z usługi zewnętrznej powiodło się', // 第三方登录退出成功
'thirdPartyLogoutFailed':
'Wylogowanie z usługi zewnętrznej nie powiodło się', // 第三方登录退出失败
'signOutProcessError': 'Wystąpił błąd podczas wylogowywania', // 登出过程发生错误
'deleteAccountProcessError':
'Wystąpił błąd podczas usuwania konta', // 删除账号过程发生错误
'userDataClearSuccess':
'Dane użytkownika zostały pomyślnie wyczyszczone', // 用户数据清理成功
'allUserDataClearSuccess':
'Wszystkie dane użytkownika zostały pomyślnie wyczyszczone',
'accountServiceInitialized': 'Usługa konta została zainicjowana',
'Wszystkie dane użytkownika zostały pomyślnie wyczyszczone', // 所有用户数据清理成功
'accountServiceInitialized':
'Usługa konta została zainicjowana', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Pobranie stanu uprawnień nie powiodło się',
'communicationPermissions': 'Uprawnienia komunikacyjne',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Uprawnienia kalendarza',
'locationPermissions': 'Uprawnienia lokalizacji',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Zapis do kalendarza',
'calendarFullAccess': 'Pełny dostęp do kalendarza',
'locationInfo': 'Informacje o lokalizacji',
'phonePermissionDesc': 'Używane do funkcji dzwonienia',
'smsPermissionDesc': 'Używane do funkcji wysyłania SMS-ów',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Używane do tworzenia wydarzeń i przypomnień w kalendarzu',
'calendarFullAccessPermissionDesc':
@ -511,28 +1006,90 @@ const Map<String, String> plPL = {
'phonePermissionDetailDesc':
'Funkcja dzwonienia wymaga uprawnień telefonicznych',
'smsPermissionDetailDesc': 'Funkcja wysyłania SMS-ów wymaga uprawnień SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Tworzenie wydarzeń w kalendarzu wymaga uprawnień do zapisu w kalendarzu',
'calendarFullAccessPermissionDetailDesc':
'Zarządzanie wydarzeniami w kalendarzu wymaga pełnych uprawnień do kalendarza',
'locationPermissionDetailDesc':
'Uzyskiwanie informacji o lokalizacji wymaga uprawnień lokalizacyjnych',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplikacja wymaga tego uprawnienia do pełnej funkcjonalności',
'permanentDenialText':
'Trwale odmówiłeś uprawnienia {permission}, przejdź do ustawień aplikacji, aby je włączyć',
'goToSettings': 'Przejdź do ustawień',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Znaleziono nową wersję',
'remindLater': 'Przypomnij później',
'updateNow': 'Zaktualizuj teraz',
'checkUpdate': 'Sprawdź aktualizację',
'updateFailed': 'Aktualizacja nie powiodła się',
'newVersionFound': 'Znaleziono nową wersję', // 版本更新对话框标题
'remindLater': 'Przypomnij później', // 稍后提醒按钮
'updateNow': 'Zaktualizuj teraz', // 立即更新按钮
'checkUpdate': 'Sprawdź aktualizację', // 检查更新按钮
'updateFailed': 'Aktualizacja nie powiodła się', // 更新失败提示
'cannotOpenAppStore':
'Nie można otworzyć sklepu z aplikacjami, przejdź do sklepu ręcznie, aby zaktualizować',
'Nie można otworzyć sklepu z aplikacjami, przejdź do sklepu ręcznie, aby zaktualizować', // 无法打开应用商店提示
'updateErrorRetry':
'Wystąpił błąd podczas aktualizacji, spróbuj ponownie później',
'Wystąpił błąd podczas aktualizacji, spróbuj ponownie później', // 更新错误重试提示
//国家列表
"邮箱": "E-mail",
@ -641,8 +1198,23 @@ const Map<String, String> plPL = {
"东帝汶": "Timor Wschodni",
"斐济": "Fidżi",
"所罗门群岛": "Wyspy Salomona",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Historia tłumaczeń",
"enableRecording": "Włącz nagrywanie",
@ -651,9 +1223,24 @@ const Map<String, String> plPL = {
"phoneUser": "Użytkownik telefonu",
"selectSourceLanguage": "Wybierz język źródłowy",
"selectTargetLanguage": "Wybierz język docelowy",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Brak historii",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Wyczyść historię",
"clearHistoryConfirm":
"Czy na pewno chcesz wyczyścić całą historię tłumaczeń? Tej operacji nie można cofnąć.",
@ -662,7 +1249,58 @@ const Map<String, String> plPL = {
"deleteSessionConfirm":
"Czy na pewno chcesz usunąć wszystkie zapisy tłumaczeń dla tej sesji? Tej operacji nie można cofnąć.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Przetłumacz pliki audio",
"noAudioFiles": "Brak plików audio",
"calculating": "Obliczanie...",
@ -708,7 +1346,7 @@ const Map<String, String> plPL = {
"autoInputCode": "Automatyczne wprowadzanie kodu",
"skipBinding": "Pomiń powiązanie",
"rescan": "Skanuj ponownie",
"skip": "Pomiń",
"verifyingDevice": "Weryfikacja urządzenia...",
"confirmBinding": "Potwierdź powiązanie",
"associatingDevice": "Kojarzenie urządzenia...",
@ -741,12 +1379,17 @@ const Map<String, String> plPL = {
"pairingFailedRetry": "Parowanie nie powiodło się, spróbuj ponownie",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Włącz Bluetooth',
'deviceDisconnected': 'Urządzenie odłączone',
'readyToStartPairing': 'Gotowy do rozpoczęcia parowania',
'checkingEnvironment': 'Sprawdzanie środowiska...',
'ensureHeadsetOnAndPairingMode':
'Upewnij się, że słuchawki są włączone i w trybie parowania',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Ustanawianie bezpiecznego połączenia...',
'needManualBindingAuthCode':
'Wymagany jest kod autoryzacji do ręcznego powiązania...',
@ -770,6 +1413,19 @@ const Map<String, String> plPL = {
'deviceAuthorizationFailedCheckCode':
'Autoryzacja urządzenia nie powiodła się, sprawdź kod autoryzacji',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Opinie użytkowników",
'feedbackInfo': 'Prześlij opinię lub sugestię',
@ -798,6 +1454,13 @@ const Map<String, String> plPL = {
"connectionFailed": "Połączenie nie powiodło się",
"retryConnection": "Spróbuj połączyć ponownie",
"ota_updateNow": "Zaktualizuj teraz",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Utrzymuj urządzenie w stanie połączenia, nie zamykaj aplikacji",
"doNotDisconnect": "Nie odłączaj",
@ -807,11 +1470,11 @@ const Map<String, String> plPL = {
"Wyjmij obie słuchawki i upewnij się, że poziom naładowania baterii obu wynosi ponad 20%",
// 音乐列表页面
"noMusic": "Brak muzyki",
"noPlayingMusic": "Brak odtwarzanej muzyki",
"unknownSong": "Nieznana piosenka",
"unknownArtist": "Nieznany artysta",
"playAll": "Odtwórz wszystko",
"noMusic": "Brak muzyki", // 暂无音乐
"noPlayingMusic": "Brak odtwarzanej muzyki", // 暂无播放音乐
"unknownSong": "Nieznana piosenka", // 未知歌曲
"unknownArtist": "Nieznany artysta", // 未知歌手
"playAll": "Odtwórz wszystko", // 播放全部
// 语言名称
"中文(简体)": "Chiński (uproszczony)",
@ -853,4 +1516,23 @@ const Map<String, String> plPL = {
"乌尔都语": "Urdu",
"波斯语": "Perski",
"斯瓦希里语": "Suahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

File diff suppressed because it is too large

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

@ -33,6 +33,7 @@ const Map<String, String> roRO = {
"spanish": "Spaniolă",
"portuguese": "Portugheză",
"traditionalChinese": "Chineză tradițională",
"traditionalChineseHK": "Chineză tradițională (Hong Kong)",
"japanese": "Japoneză",
"korean": "Coreeană",
"french": "Franceză",
@ -100,12 +101,15 @@ const Map<String, String> roRO = {
"usePasswordLogin": "Autentificare cu parolă",
// 隐私政策弹窗
"loginDeclaration": "Declarația Voitrans",
"welcomeToThisApp": "Bun venit la Voitrans, vă rugăm să citiți cu atenție",
"loginDeclaration": "Declarația Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Bun venit la Voitrans, vă rugăm să citiți cu atenție", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", apăsând 'De acord și intră' înseamnă că ați citit complet și sunteți de acord cu acordurile de mai sus. Apăsând 'Nu sunt de acord' veți ieși din aplicație.",
"disagree": "Nu sunt de acord",
"agreeAndEnter": "De acord și intră",
", apăsând 'De acord și intră' înseamnă că ați citit complet și sunteți de acord cu acordurile de mai sus. Apăsând 'Nu sunt de acord' veți ieși din aplicație.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Nu sunt de acord", // 不同意
"agreeAndEnter": "De acord și intră", // 同意并进入
// 首页
"deviceStatus": "Starea dispozitivului",
@ -188,6 +192,209 @@ const Map<String, String> roRO = {
"usageStats": "Statistici de utilizare",
"usageStatsInfo": "Vizualizați istoricul utilizării aplicației",
"scene": "Scenariu",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Omite",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Începe ședința",
@ -202,13 +409,244 @@ const Map<String, String> roRO = {
'aiSummary': 'Rezumat AI',
'meetingTranscript': 'Transcriere ședință',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Setări de sistem", //系统设置
"vipRecharge": "Recarga Premium", //会员充值
"aiRecharge": "Membru Premium", //AI充值
"translationRecharge": "Recarga de traducere", //翻译充值
"meetingAssistantRecharge": "Recarga de asistent ședință", //会议助手充值
"cloudSync": "Recarga de sincronizare în cloud", //云端同步
"systemSettings": "Setări de sistem",
"vipRecharge": "Recarga Premium",
"aiRecharge": "Membru Premium",
"translationRecharge": "Recarga de traducere",
"meetingAssistantRecharge": "Recarga de asistent ședință",
"cloudSync": "Recarga de sincronizare în cloud",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Dispozitiv conectat:",
"accountId": "ID cont:",
"systemSetting": "Setări de sistem",
@ -220,9 +658,9 @@ const Map<String, String> roRO = {
"lastBackup": "Ultimul backup:",
"privacySettings": "Setări de confidențialitate",
"privacySettingsInfo": "Gestionați colectarea datelor și permisiunile",
"permissionManagement": "Gestionarea permisiunilor",
"permissionManagement": "Gestionarea permisiunilor", // 权限管理
"permissionManagementInfo":
"Gestionați setările de permisiuni ale aplicației",
"Gestionați setările de permisiuni ale aplicației", // 管理应用权限设置
"aboutApplication": "Despre aplicație",
"versions": "Versiune",
"checkUpdates": "Verifică actualizări",
@ -257,12 +695,10 @@ const Map<String, String> roRO = {
'networkErrorRetry': 'Eroare de rețea, reîncercați mai târziu',
// 设备管理相关
'clearPairedDevices': 'Șterge dispozitivele asociate',
'clearPairedDevicesConfirm':
'Sunteți sigur că doriți să ștergeți toate dispozitivele asociate?',
'clearPairedDevicesSuccess':
'Dispozitivele asociate au fost șterse cu succes',
'clearPairedDevicesFailed': 'Ștergerea dispozitivelor asociate a eșuat',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Chat vocal în timp real",
@ -271,11 +707,20 @@ const Map<String, String> roRO = {
"loading": "Se încarcă...",
//设备管理页面
"earphone": "Căști",
"voicerecorder": "Reportofon",
"notBound": "Nelegat",
"deviceNotBoundYet": "Niciun dispozitiv nu este legat încă",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Deleagă",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -305,6 +750,20 @@ const Map<String, String> roRO = {
"loadMoreMessages": "Încarcă mai multe mesaje...",
"loadFailedClickRetry": "Încărcare eșuată, faceți clic pentru a reîncerca",
"swipeUpForMore": "Glisați în sus pentru mai mult",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Bună! Sunt **Lily**, vă pot ajuta cu:\n\n'
@ -327,8 +786,8 @@ const Map<String, String> roRO = {
'startPhoneCallMode': 'Începe modul de apel, începe intrarea vocală',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Introduceți mesajul dvs. aici...',
'characterCount': '{count} caractere',
'fullScreenEditorHint': 'Introduceți mesajul dvs. aici...', // 全屏编辑器输入提示
'characterCount': '{count} caractere', // 字符计数显示
// 消息长按操作
'copy': 'Copiază',
@ -337,6 +796,7 @@ const Map<String, String> roRO = {
'submitSuccess': 'Trimis cu succes',
'submitFailed': 'Trimitere eșuată',
'reportSubmitted': 'Raport trimis, îl vom procesa în curând',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Dăunător/Periculos',
'pornographicVulgar': 'Pornografic/Vulgar',
'misleadingAttack': 'Înșelător/Atac',
@ -347,6 +807,7 @@ const Map<String, String> roRO = {
'other': 'Altele',
'reportDescriptionHint':
'Dorim să știm de ce raportați, puteți descrie problema pe care ați întâmpinat-o.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Generat de AI',
@ -357,15 +818,15 @@ const Map<String, String> roRO = {
'moreMusic': 'Mai multă muzică',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'ore',
'minutes': 'minute',
'seconds': 'secunde',
'navigating': 'Navigare',
'currentLocation': 'Locație curentă',
'approximate': 'Aprox.',
'enterRoad': 'Intră pe drum',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'ore', // 小时单位
'minutes': 'minute', // 分钟单位
'seconds': 'secunde', // 秒单位
'navigating': 'Navigare', // 导航状态
'currentLocation': 'Locație curentă', // 当前位置
'approximate': 'Aprox.', // 大约
'enterRoad': 'Intră pe drum', // 进入道路
"driving": "Cu mașina",
"walking": "Pe jos",
"bicycling": "Cu bicicleta",
@ -401,6 +862,17 @@ const Map<String, String> roRO = {
"friday": "Vi",
"saturday": "Sâ",
"sunday": "Du",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Însorit",
"partlyCloudy": "Parțial înnorat",
@ -437,6 +909,8 @@ const Map<String, String> roRO = {
'deleteAccount': 'Șterge contul',
'deleteAccountTips':
'Sunteți sigur că doriți să ștergeți permanent contul? Această acțiune nu poate fi anulată.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -459,6 +933,8 @@ const Map<String, String> roRO = {
'Eroare internă de server, reîncercați mai târziu',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Comprimarea imaginii a eșuat',
'avatarUpdateFailed': 'Actualizarea avatarului a eșuat',
'usernameCannotBeEmpty': 'Numele de utilizator nu poate fi gol',
@ -471,31 +947,44 @@ const Map<String, String> roRO = {
'deleteAccountFailedRetry': 'Ștergerea contului a eșuat, reîncercați',
// 账号服务相关
'clearUserDataFailed': 'Ștergerea datelor de utilizator a eșuat',
'deleteUserDataFailed': 'Ștergerea datelor de utilizator a eșuat',
'thirdPartyLogoutSuccess': 'Deconectarea terță parte a reușit',
'thirdPartyLogoutFailed': 'Deconectarea terță parte a eșuat',
'clearUserDataFailed': 'Ștergerea datelor de utilizator a eșuat', // 清理用户数据失败
'deleteUserDataFailed': 'Ștergerea datelor de utilizator a eșuat', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Deconectarea terță parte a reușit', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Deconectarea terță parte a eșuat', // 第三方登录退出失败
'signOutProcessError':
'A apărut o eroare în timpul procesului de deconectare',
'A apărut o eroare în timpul procesului de deconectare', // 登出过程发生错误
'deleteAccountProcessError':
'A apărut o eroare în timpul procesului de ștergere a contului',
'userDataClearSuccess': 'Datele de utilizator au fost șterse cu succes',
'A apărut o eroare în timpul procesului de ștergere a contului', // 删除账号过程发生错误
'userDataClearSuccess':
'Datele de utilizator au fost șterse cu succes', // 用户数据清理成功
'allUserDataClearSuccess':
'Toate datele de utilizator au fost șterse cu succes',
'accountServiceInitialized': 'Serviciul de cont a fost inițializat',
'Toate datele de utilizator au fost șterse cu succes', // 所有用户数据清理成功
'accountServiceInitialized':
'Serviciul de cont a fost inițializat', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Obținerea stării permisiunii a eșuat',
'communicationPermissions': 'Permisiuni de comunicare',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Permisiuni calendar',
'locationPermissions': 'Permisiuni locație',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Scriere în calendar',
'calendarFullAccess': 'Acces complet la calendar',
'locationInfo': 'Informații locație',
'phonePermissionDesc': 'Utilizat pentru funcția de apelare',
'smsPermissionDesc': 'Utilizat pentru funcția de trimitere SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Utilizat pentru crearea de evenimente și memento-uri în calendar',
'calendarFullAccessPermissionDesc':
@ -514,28 +1003,90 @@ const Map<String, String> roRO = {
'Funcția de apelare necesită permisiunea pentru telefon',
'smsPermissionDetailDesc':
'Funcția de trimitere SMS necesită permisiunea pentru SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Crearea de evenimente în calendar necesită permisiunea de scriere în calendar',
'calendarFullAccessPermissionDetailDesc':
'Gestionarea evenimentelor din calendar necesită permisiunea completă pentru calendar',
'locationPermissionDetailDesc':
'Obținerea informațiilor despre locație necesită permisiunea pentru locație',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplicația necesită această permisiune pentru funcționalitate completă',
'permanentDenialText':
'Ați refuzat permanent permisiunea {permission}, vă rugăm să mergeți la setările aplicației pentru a o activa',
'goToSettings': 'Mergeți la setări',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Versiune nouă găsită',
'remindLater': 'Amintește-mi mai târziu',
'updateNow': 'Actualizează acum',
'checkUpdate': 'Verifică actualizări',
'updateFailed': 'Actualizare eșuată',
'newVersionFound': 'Versiune nouă găsită', // 版本更新对话框标题
'remindLater': 'Amintește-mi mai târziu', // 稍后提醒按钮
'updateNow': 'Actualizează acum', // 立即更新按钮
'checkUpdate': 'Verifică actualizări', // 检查更新按钮
'updateFailed': 'Actualizare eșuată', // 更新失败提示
'cannotOpenAppStore':
'Nu se poate deschide magazinul de aplicații, mergeți manual la magazin pentru a actualiza',
'Nu se poate deschide magazinul de aplicații, mergeți manual la magazin pentru a actualiza', // 无法打开应用商店提示
'updateErrorRetry':
'A apărut o eroare în timpul actualizării, reîncercați mai târziu',
'A apărut o eroare în timpul actualizării, reîncercați mai târziu', // 更新错误重试提示
//国家列表
"邮箱": "E-mail",
@ -644,8 +1195,23 @@ const Map<String, String> roRO = {
"东帝汶": "Timorul de Est",
"斐济": "Fiji",
"所罗门群岛": "Insulele Solomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Istoric traduceri",
"enableRecording": "Activează înregistrarea",
@ -654,9 +1220,24 @@ const Map<String, String> roRO = {
"phoneUser": "Utilizator telefon",
"selectSourceLanguage": "Selectează limba sursă",
"selectTargetLanguage": "Selectează limba țintă",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Niciun istoric",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Șterge istoricul",
"clearHistoryConfirm":
"Sunteți sigur că doriți să ștergeți tot istoricul traducerilor? Această acțiune nu poate fi anulată.",
@ -665,7 +1246,58 @@ const Map<String, String> roRO = {
"deleteSessionConfirm":
"Sunteți sigur că doriți să ștergeți toate înregistrările de traducere pentru această sesiune? Această acțiune nu poate fi anulată.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Tradu fișierele audio",
"noAudioFiles": "Niciun fișier audio",
"calculating": "Se calculează...",
@ -711,7 +1343,7 @@ const Map<String, String> roRO = {
"autoInputCode": "Introducere automată a codului",
"skipBinding": "Omite legarea",
"rescan": "Rescanează",
"skip": "Omite",
"verifyingDevice": "Se verifică dispozitivul...",
"confirmBinding": "Confirmă legarea",
"associatingDevice": "Se asociază dispozitivul...",
@ -743,12 +1375,17 @@ const Map<String, String> roRO = {
"pairingFailedRetry": "Asociere eșuată, reîncercați",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Activați Bluetooth',
'deviceDisconnected': 'Dispozitiv deconectat',
'readyToStartPairing': 'Gata pentru a începe asocierea',
'checkingEnvironment': 'Se verifică mediul...',
'ensureHeadsetOnAndPairingMode':
'Asigurați-vă că căștile sunt pornite și în modul de asociere',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Se stabilește o conexiune sigură...',
'needManualBindingAuthCode':
'Este necesar un cod de autorizare pentru legarea manuală...',
@ -771,6 +1408,19 @@ const Map<String, String> roRO = {
'deviceAuthorizationFailedCheckCode':
'Autorizarea dispozitivului a eșuat, verificați codul de autorizare',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Feedback utilizator",
'feedbackInfo': 'Oferiți feedback sau sugestii',
@ -800,6 +1450,13 @@ const Map<String, String> roRO = {
"connectionFailed": "Conexiune eșuată",
"retryConnection": "Reîncearcă conexiunea",
"ota_updateNow": "Actualizează acum",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Mențineți dispozitivul conectat, nu închideți aplicația",
"doNotDisconnect": "Nu deconectați",
@ -809,11 +1466,11 @@ const Map<String, String> roRO = {
"Scoateți ambele căști și asigurați-vă că bateria ambelor este peste 20%",
// 音乐列表页面
"noMusic": "Fără muzică",
"noPlayingMusic": "Nicio melodie în redare",
"unknownSong": "Melodie necunoscută",
"unknownArtist": "Artist necunoscut",
"playAll": "Redă tot",
"noMusic": "Fără muzică", // 暂无音乐
"noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐
"unknownSong": "Melodie necunoscută", // 未知歌曲
"unknownArtist": "Artist necunoscut", // 未知歌手
"playAll": "Redă tot", // 播放全部
// 语言名称
"中文(简体)": "Chineză (simplificată)",
@ -855,4 +1512,23 @@ const Map<String, String> roRO = {
"乌尔都语": "Urdu",
"波斯语": "Persană",
"斯瓦希里语": "Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

File diff suppressed because it is too large

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

@ -33,6 +33,7 @@ const Map<String, String> skSK = {
"spanish": "Španielčina",
"portuguese": "Portugalčina",
"traditionalChinese": "Tradičná čínština",
"traditionalChineseHK": "Tradičná čínština (Hongkong)",
"japanese": "Japončina",
"korean": "Kórejčina",
"french": "Francúzština",
@ -100,12 +101,15 @@ const Map<String, String> skSK = {
"usePasswordLogin": "Prihlásiť sa heslom",
// 隐私政策弹窗
"loginDeclaration": "Vyhlásenie Voitrans",
"welcomeToThisApp": "Vitajte v Voitrans, prečítajte si prosím pozorne",
"loginDeclaration": "Vyhlásenie Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Vitajte v Voitrans, prečítajte si prosím pozorne", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", kliknutím na 'Súhlasím a vstúpiť' potvrdzujete, že ste si prečítali a súhlasíte s vyššie uvedenými zmluvami. Kliknutím на 'Nesúhlasím' opustíte aplikáciu.",
"disagree": "Nesúhlasím",
"agreeAndEnter": "Súhlasím a vstúpiť",
", kliknutím na 'Súhlasím a vstúpiť' potvrdzujete, že ste si prečítali a súhlasíte s vyššie uvedenými zmluvami. Kliknutím на 'Nesúhlasím' opustíte aplikáciu.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Nesúhlasím", // 不同意
"agreeAndEnter": "Súhlasím a vstúpiť", // 同意并进入
// 首页
"deviceStatus": "Stav zariadenia",
@ -186,6 +190,209 @@ const Map<String, String> skSK = {
"usageStats": "Statistiky využitia",
"usageStatsInfo": "Zobrazte vaše využitie aplikácie",
"scene": "Scenár",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Preskočiť",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Začať stretnutie",
@ -200,13 +407,244 @@ const Map<String, String> skSK = {
'aiSummary': 'AI zhrnutie',
'meetingTranscript': 'Prepis stretnutia',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Systémové nastavenia", //系统设置
"vipRecharge": "Nákup prémium členstva", //会员充值
"aiRecharge": "Prémium člen", //AI充值
"translationRecharge": "Nákup prekladov", //翻译充值
"meetingAssistantRecharge": "Nákup asistentu stretnutia", //会议助手充值
"cloudSync": "Nákup synchronizácie v cloude", //云端同步
"systemSettings": "Systémové nastavenia",
"vipRecharge": "Nákup prémium členstva",
"aiRecharge": "Prémium člen",
"translationRecharge": "Nákup prekladov",
"meetingAssistantRecharge": "Nákup asistentu stretnutia",
"cloudSync": "Nákup synchronizácie v cloude",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Pripojené zariadenie:",
"accountId": "ID účtu:",
"systemSetting": "Systémové nastavenie",
@ -218,8 +656,8 @@ const Map<String, String> skSK = {
"lastBackup": "Posledná záloha:",
"privacySettings": "Nastavenia ochrany osobných údajov",
"privacySettingsInfo": "Správa zberu údajov a povolení",
"permissionManagement": "Správa povolení",
"permissionManagementInfo": "Správa nastavení povolení aplikácie",
"permissionManagement": "Správa povolení", // 权限管理
"permissionManagementInfo": "Správa nastavení povolení aplikácie", // 管理应用权限设置
"aboutApplication": "O aplikácii",
"versions": "Verzia",
"checkUpdates": "Skontrolovať aktualizácie",
@ -254,11 +692,10 @@ const Map<String, String> skSK = {
'networkErrorRetry': 'Chyba siete, skúste to znova neskôr',
// 设备管理相关
'clearPairedDevices': 'Vymazať spárované zariadenia',
'clearPairedDevicesConfirm':
'Ste si istí, že chcete vymazať všetky spárované zariadenia?',
'clearPairedDevicesSuccess': 'Spárované zariadenia úspešne vymazané',
'clearPairedDevicesFailed': 'Vymazanie spárovaných zariadení zlyhalo',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Hlasový chat v reálnom čase",
@ -267,11 +704,20 @@ const Map<String, String> skSK = {
"loading": "Načítava sa...",
//设备管理页面
"earphone": "Slúchadlá",
"voicerecorder": "Diktafón",
"notBound": "Neprepojené",
"deviceNotBoundYet": "Zariadenie ešte nie je prepojené",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Zrušiť prepojenie",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -300,6 +746,20 @@ const Map<String, String> skSK = {
"loadMoreMessages": "Načítať viac správ...",
"loadFailedClickRetry": "Načítanie zlyhalo, kliknite pre opakovanie",
"swipeUpForMore": "Potiahnite nahor pre viac",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Ahoj! Som **Lily**, môžem vám pomôcť:\n\n'
@ -322,8 +782,8 @@ const Map<String, String> skSK = {
'startPhoneCallMode': 'Začať režim volania, začať hlasový vstup',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Sem zadajte svoju správu...',
'characterCount': '{count} znakov',
'fullScreenEditorHint': 'Sem zadajte svoju správu...', // 全屏编辑器输入提示
'characterCount': '{count} znakov', // 字符计数显示
// 消息长按操作
'copy': 'Kopírovať',
@ -332,6 +792,7 @@ const Map<String, String> skSK = {
'submitSuccess': 'Úspešne odoslané',
'submitFailed': 'Odoslanie zlyhalo',
'reportSubmitted': 'Hlásenie bolo odoslané, spracujeme ho čo najskôr',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Škodlivé/Nebezpečné',
'pornographicVulgar': 'Pornografické/Vulgárne',
'misleadingAttack': 'Zavádzajúce/Útok',
@ -341,6 +802,7 @@ const Map<String, String> skSK = {
'other': 'Iné',
'reportDescriptionHint':
'Chceme vedieť dôvod vášho hlásenia, môžete opísať problém, s ktorým ste sa stretli.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Vygenerované AI',
@ -351,15 +813,15 @@ const Map<String, String> skSK = {
'moreMusic': 'Viac hudby',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'hodín',
'minutes': 'minút',
'seconds': 'sekúnd',
'navigating': 'Navigácia',
'currentLocation': 'Aktuálna poloha',
'approximate': 'Pribl.',
'enterRoad': 'Vstúpiť na cestu',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'hodín', // 小时单位
'minutes': 'minút', // 分钟单位
'seconds': 'sekúnd', // 秒单位
'navigating': 'Navigácia', // 导航状态
'currentLocation': 'Aktuálna poloha', // 当前位置
'approximate': 'Pribl.', // 大约
'enterRoad': 'Vstúpiť na cestu', // 进入道路
"driving": "Jazda autom",
"walking": "Chôdza",
"bicycling": "Bicyklovanie",
@ -394,6 +856,17 @@ const Map<String, String> skSK = {
"friday": "Pi",
"saturday": "So",
"sunday": "Ne",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Slnečno",
"partlyCloudy": "Polooblačno",
@ -429,6 +902,8 @@ const Map<String, String> skSK = {
'deleteAccount': 'Odstrániť účet',
'deleteAccountTips':
'Ste si istí, že chcete natrvalo odstrániť svoj účet? Túto akciu nie je možné vrátiť späť.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -449,6 +924,8 @@ const Map<String, String> skSK = {
'Interná chyba servera, skúste to znova neskôr',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Kompresia obrázka zlyhala',
'avatarUpdateFailed': 'Aktualizácia avatara zlyhala',
'usernameCannotBeEmpty': 'Používateľské meno nemôže byť prázdne',
@ -461,29 +938,44 @@ const Map<String, String> skSK = {
'deleteAccountFailedRetry': 'Odstránenie účtu zlyhalo, skúste to znova',
// 账号服务相关
'clearUserDataFailed': 'Vymazanie používateľských údajov zlyhalo',
'deleteUserDataFailed': 'Odstránenie používateľských údajov zlyhalo',
'thirdPartyLogoutSuccess': 'Odhlásenie tretej strany úspešné',
'thirdPartyLogoutFailed': 'Odhlásenie tretej strany zlyhalo',
'signOutProcessError': 'Počas procesu odhlásenia sa vyskytla chyba',
'clearUserDataFailed': 'Vymazanie používateľských údajov zlyhalo', // 清理用户数据失败
'deleteUserDataFailed':
'Odstránenie používateľských údajov zlyhalo', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Odhlásenie tretej strany úspešné', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Odhlásenie tretej strany zlyhalo', // 第三方登录退出失败
'signOutProcessError':
'Počas procesu odhlásenia sa vyskytla chyba', // 登出过程发生错误
'deleteAccountProcessError':
'Počas procesu odstraňovania účtu sa vyskytla chyba',
'userDataClearSuccess': 'Používateľské údaje úspešne vymazané',
'allUserDataClearSuccess': 'Všetky používateľské údaje úspešne vymazané',
'accountServiceInitialized': 'Služba účtu bola inicializovaná',
'Počas procesu odstraňovania účtu sa vyskytla chyba', // 删除账号过程发生错误
'userDataClearSuccess': 'Používateľské údaje úspešne vymazané', // 用户数据清理成功
'allUserDataClearSuccess':
'Všetky používateľské údaje úspešne vymazané', // 所有用户数据清理成功
'accountServiceInitialized':
'Služba účtu bola inicializovaná', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Získanie stavu povolenia zlyhalo',
'communicationPermissions': 'Komunikačné povolenia',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Povolenia kalendára',
'locationPermissions': 'Povolenia polohy',
'phone': 'Telefón',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Zápis do kalendára',
'calendarFullAccess': 'Plný prístup ku kalendáru',
'locationInfo': 'Informácie o polohe',
'phonePermissionDesc': 'Používa sa pre funkciu volania',
'smsPermissionDesc': 'Používa sa pre funkciu odosielania SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Používa sa na vytváranie udalostí a pripomienok v kalendári',
'calendarFullAccessPermissionDesc':
@ -501,28 +993,90 @@ const Map<String, String> skSK = {
'phonePermissionDetailDesc': 'Funkcia volania vyžaduje povolenie pre telefón',
'smsPermissionDetailDesc':
'Funkcia odosielania SMS vyžaduje povolenie pre SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Vytváranie udalostí v kalendári vyžaduje povolenie na zápis do kalendára',
'calendarFullAccessPermissionDetailDesc':
'Správa udalostí v kalendári vyžaduje úplné povolenie pre kalendár',
'locationPermissionDetailDesc':
'Získanie informácií o polohe vyžaduje povolenie pre polohu',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplikácia vyžaduje toto povolenie pre plnú funkčnosť',
'permanentDenialText':
'Trvalo ste odmietli povolenie {permission}, prejdite do nastavení aplikácie, aby ste ho povolili',
'goToSettings': 'Prejsť do nastavení',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Nájdená nová verzia',
'remindLater': 'Pripomenúť neskôr',
'updateNow': 'Aktualizovať teraz',
'checkUpdate': 'Skontrolovať aktualizácie',
'updateFailed': 'Aktualizácia zlyhala',
'newVersionFound': 'Nájdená nová verzia', // 版本更新对话框标题
'remindLater': 'Pripomenúť neskôr', // 稍后提醒按钮
'updateNow': 'Aktualizovať teraz', // 立即更新按钮
'checkUpdate': 'Skontrolovať aktualizácie', // 检查更新按钮
'updateFailed': 'Aktualizácia zlyhala', // 更新失败提示
'cannotOpenAppStore':
'Nie je možné otvoriť obchod s aplikáciami, prejdite do obchodu manuálne a aktualizujte',
'Nie je možné otvoriť obchod s aplikáciami, prejdite do obchodu manuálne a aktualizujte', // 无法打开应用商店提示
'updateErrorRetry':
'Počas aktualizácie sa vyskytla chyba, skúste to znova neskôr',
'Počas aktualizácie sa vyskytla chyba, skúste to znova neskôr', // 更新错误重试提示
//国家列表
"邮箱": "E-mail",
@ -631,8 +1185,23 @@ const Map<String, String> skSK = {
"东帝汶": "Východný Timor",
"斐济": "Fidži",
"所罗门群岛": "Šalamúnove ostrovy",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "História prekladov",
"enableRecording": "Povoliť nahrávanie",
@ -641,9 +1210,24 @@ const Map<String, String> skSK = {
"phoneUser": "Používateľ telefónu",
"selectSourceLanguage": "Vyberte zdrojový jazyk",
"selectTargetLanguage": "Vyberte cieľový jazyk",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Žiadna história",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Vymazať históriu",
"clearHistoryConfirm":
"Ste si istí, že chcete vymazať celú históriu prekladov? Túto akciu nie je možné vrátiť späť.",
@ -652,7 +1236,58 @@ const Map<String, String> skSK = {
"deleteSessionConfirm":
"Ste si istí, že chcete odstrániť všetky záznamy prekladov pre túto reláciu? Túto akciu nie je možné vrátiť späť.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Preložiť zvukové súbory",
"noAudioFiles": "Žiadne zvukové súbory",
"calculating": "Vypočítava sa...",
@ -698,7 +1333,7 @@ const Map<String, String> skSK = {
"autoInputCode": "Automatické zadanie kódu",
"skipBinding": "Preskočiť prepojenie",
"rescan": "Znova skenovať",
"skip": "Preskočiť",
"verifyingDevice": "Overuje sa zariadenie...",
"confirmBinding": "Potvrdiť prepojenie",
"associatingDevice": "Priraďuje sa zariadenie...",
@ -730,12 +1365,17 @@ const Map<String, String> skSK = {
"pairingFailedRetry": "Párovanie zlyhalo, skúste to znova",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Zapnite Bluetooth',
'deviceDisconnected': 'Zariadenie odpojené',
'readyToStartPairing': 'Pripravené na začatie párovania',
'checkingEnvironment': 'Kontrola prostredia...',
'ensureHeadsetOnAndPairingMode':
'Uistite sa, že sú slúchadlá zapnuté a v režime párovania',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Vytvára sa bezpečné pripojenie...',
'needManualBindingAuthCode':
'Vyžaduje sa kód pre autorizáciu manuálneho prepojenia...',
@ -758,6 +1398,19 @@ const Map<String, String> skSK = {
'deviceAuthorizationFailedCheckCode':
'Autorizácia zariadenia zlyhala, skontrolujte autorizačný kód',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Spätná väzba používateľa",
'feedbackInfo': 'Poskytnite spätnú väzbu alebo návrhy',
@ -787,6 +1440,13 @@ const Map<String, String> skSK = {
"connectionFailed": "Pripojenie zlyhalo",
"retryConnection": "Znova pripojiť",
"ota_updateNow": "Aktualizovať teraz",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Udržujte zariadenie pripojené, nezatvárajte aplikáciu",
"doNotDisconnect": "Neodpájajte",
@ -796,11 +1456,11 @@ const Map<String, String> skSK = {
"Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%",
// 音乐列表页面
"noMusic": "Žiadna hudba",
"noPlayingMusic": "Neprehráva sa žiadna hudba",
"unknownSong": "Neznáma pieseň",
"unknownArtist": "Neznámy interpret",
"playAll": "Prehrať všetko",
"noMusic": "Žiadna hudba", // 暂无音乐
"noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐
"unknownSong": "Neznáma pieseň", // 未知歌曲
"unknownArtist": "Neznámy interpret", // 未知歌手
"playAll": "Prehrať všetko", // 播放全部
// 语言名称
"中文(简体)": "Čínština (zjednodušená)",
@ -842,4 +1502,23 @@ const Map<String, String> skSK = {
"乌尔都语": "Urdčina",
"波斯语": "Perzština",
"斯瓦希里语": "Svahilčina",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> slSI = {
"spanish": "Španščina",
"portuguese": "Portugalščina",
"traditionalChinese": "Tradicionalna kitajščina",
"traditionalChineseHK": "Tradicionalna kitajščina (Hongkong)",
"japanese": "Japonščina",
"korean": "Korejščina",
"french": "Francoščina",
@ -100,12 +101,15 @@ const Map<String, String> slSI = {
"usePasswordLogin": "Prijava z geslom",
// 隐私政策弹窗
"loginDeclaration": "Izjava Voitrans",
"welcomeToThisApp": "Dobrodošli v Voitrans, prosimo, da natančno preberete",
"loginDeclaration": "Izjava Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Dobrodošli v Voitrans, prosimo, da natančno preberete", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", s klikom na 'Strinjam se in vstopi' potrjujete, da ste v celoti prebrali in se strinjate z zgoraj navedenimi sporazumi. S klikom na 'Ne strinjam se' boste zapustili aplikacijo.",
"disagree": "Ne strinjam se",
"agreeAndEnter": "Strinjam se in vstopi",
", s klikom na 'Strinjam se in vstopi' potrjujete, da ste v celoti prebrali in se strinjate z zgoraj navedenimi sporazumi. S klikom na 'Ne strinjam se' boste zapustili aplikacijo.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Ne strinjam se", // 不同意
"agreeAndEnter": "Strinjam se in vstopi", // 同意并进入
// 首页
"deviceStatus": "Stanje naprave",
@ -186,6 +190,209 @@ const Map<String, String> slSI = {
"usageStats": "Statistika uporabe",
"usageStatsInfo": "Pregledajte vaše uporabo aplikacije",
"scene": "Scenarij",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Preskoči",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Začni sestanek",
@ -200,13 +407,244 @@ const Map<String, String> slSI = {
'aiSummary': 'Povzetek AI',
'meetingTranscript': 'Prepis sestanka',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Sistemske nastavitve", //系统设置
"vipRecharge": "Nákup premium člana", //会员充值
"aiRecharge": "Premium član", //AI充值
"translationRecharge": "Nákup prevajanja", //翻译充值
"meetingAssistantRecharge": "Nákup asistenta sestanka", //会议助手充值
"cloudSync": "Nákup sinkronizacije v oblaku", //云端同步
"systemSettings": "Sistemske nastavitve",
"vipRecharge": "Nákup premium člana",
"aiRecharge": "Premium član",
"translationRecharge": "Nákup prevajanja",
"meetingAssistantRecharge": "Nákup asistenta sestanka",
"cloudSync": "Nákup sinkronizacije v oblaku",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Povezana naprava:",
"accountId": "ID računa:",
"systemSetting": "Sistemska nastavitev",
@ -218,8 +656,9 @@ const Map<String, String> slSI = {
"lastBackup": "Zadnja varnostna kopija:",
"privacySettings": "Nastavitve zasebnosti",
"privacySettingsInfo": "Upravljanje zbiranja podatkov in dovoljenj",
"permissionManagement": "Upravljanje dovoljenj",
"permissionManagementInfo": "Upravljanje nastavitev dovoljenj aplikacije",
"permissionManagement": "Upravljanje dovoljenj", // 权限管理
"permissionManagementInfo":
"Upravljanje nastavitev dovoljenj aplikacije", // 管理应用权限设置
"aboutApplication": "O aplikaciji",
"versions": "Različica",
"checkUpdates": "Preveri posodobitve",
@ -255,11 +694,10 @@ const Map<String, String> slSI = {
'networkErrorRetry': 'Napaka v omrežju, poskusite znova kasneje',
// 设备管理相关
'clearPairedDevices': 'Počisti seznanjene naprave',
'clearPairedDevicesConfirm':
'Ali ste prepričani, da želite počistiti vse seznanjene naprave?',
'clearPairedDevicesSuccess': 'Seznanjene naprave uspešno počiščene',
'clearPairedDevicesFailed': 'Čiščenje seznanjenih naprav ni uspelo',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Glasovni klepet v realnem času",
@ -268,11 +706,20 @@ const Map<String, String> slSI = {
"loading": "Nalaganje...",
//设备管理页面
"earphone": "Slušalke",
"voicerecorder": "Snemalnik zvoka",
"notBound": "Ni povezan",
"deviceNotBoundYet": "Naprava še ni povezana",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Prekini povezavo",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -301,6 +748,20 @@ const Map<String, String> slSI = {
"loadMoreMessages": "Naloži več sporočil...",
"loadFailedClickRetry": "Nalaganje ni uspelo, kliknite za ponovni poskus",
"swipeUpForMore": "Povlecite navzgor za več",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Živjo! Sem **Lily**, lahko vam pomagam:\n\n'
@ -323,8 +784,8 @@ const Map<String, String> slSI = {
'startPhoneCallMode': 'Začni način klicanja, začni glasovni vnos',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Tukaj vnesite svoje sporočilo...',
'characterCount': '{count} znakov',
'fullScreenEditorHint': 'Tukaj vnesite svoje sporočilo...', // 全屏编辑器输入提示
'characterCount': '{count} znakov', // 字符计数显示
// 消息长按操作
'copy': 'Kopiraj',
@ -334,6 +795,7 @@ const Map<String, String> slSI = {
'submitFailed': 'Pošiljanje ni uspelo',
'reportSubmitted':
'Prijava je bila poslana, obdelali jo bomo v najkrajšem možnem času',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Škodljivo/Nevarno',
'pornographicVulgar': 'Pornografsko/Vulgarno',
'misleadingAttack': 'Zavajajoče/Napad',
@ -343,6 +805,7 @@ const Map<String, String> slSI = {
'other': 'Drugo',
'reportDescriptionHint':
'Želimo vedeti, zakaj prijavljate, lahko opišete težavo, s katero ste se soočili.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Generirano s strani AI',
@ -353,15 +816,15 @@ const Map<String, String> slSI = {
'moreMusic': 'Več glasbe',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'ur',
'minutes': 'minut',
'seconds': 'sekund',
'navigating': 'Navigacija',
'currentLocation': 'Trenutna lokacija',
'approximate': 'Pribl.',
'enterRoad': 'Vstopi na cesto',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'ur', // 小时单位
'minutes': 'minut', // 分钟单位
'seconds': 'sekund', // 秒单位
'navigating': 'Navigacija', // 导航状态
'currentLocation': 'Trenutna lokacija', // 当前位置
'approximate': 'Pribl.', // 大约
'enterRoad': 'Vstopi na cesto', // 进入道路
"driving": 'Vožnja',
"walking": 'Hoja',
"bicycling": 'Kolesarjenje',
@ -397,6 +860,17 @@ const Map<String, String> slSI = {
"friday": "Pet",
"saturday": "Sob",
"sunday": "Ned",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Sončno",
"partlyCloudy": "Delno oblačno",
@ -433,6 +907,8 @@ const Map<String, String> slSI = {
'deleteAccount': 'Izbriši račun',
'deleteAccountTips':
'Ali ste prepričani, da želite trajno izbrisati svoj račun? Tega dejanja ni mogoče razveljaviti',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -453,6 +929,8 @@ const Map<String, String> slSI = {
'Notranja napaka strežnika, poskusite znova kasneje',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Stiskanje slike ni uspelo',
'avatarUpdateFailed': 'Posodobitev avatarja ni uspela',
'usernameCannotBeEmpty': 'Uporabniško ime ne sme biti prazno',
@ -465,29 +943,43 @@ const Map<String, String> slSI = {
'deleteAccountFailedRetry': 'Brisanje računa ni uspelo, poskusite znova',
// 账号服务相关
'clearUserDataFailed': 'Čiščenje uporabniških podatkov ni uspelo',
'deleteUserDataFailed': 'Brisanje uporabniških podatkov ni uspelo',
'thirdPartyLogoutSuccess': 'Odjava tretje osebe uspela',
'thirdPartyLogoutFailed': 'Odjava tretje osebe ni uspela',
'signOutProcessError': 'Prišlo je do napake med postopkom odjave',
'clearUserDataFailed': 'Čiščenje uporabniških podatkov ni uspelo', // 清理用户数据失败
'deleteUserDataFailed':
'Brisanje uporabniških podatkov ni uspelo', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Odjava tretje osebe uspela', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Odjava tretje osebe ni uspela', // 第三方登录退出失败
'signOutProcessError': 'Prišlo je do napake med postopkom odjave', // 登出过程发生错误
'deleteAccountProcessError':
'Prišlo je do napake med postopkom brisanja računa',
'userDataClearSuccess': 'Uporabniški podatki uspešno počiščeni',
'allUserDataClearSuccess': 'Vsi uporabniški podatki uspešno počiščeni',
'accountServiceInitialized': 'AccountService je bil inicializiran',
'Prišlo je do napake med postopkom brisanja računa', // 删除账号过程发生错误
'userDataClearSuccess': 'Uporabniški podatki uspešno počiščeni', // 用户数据清理成功
'allUserDataClearSuccess':
'Vsi uporabniški podatki uspešno počiščeni', // 所有用户数据清理成功
'accountServiceInitialized':
'AccountService je bil inicializiran', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Pridobivanje stanja dovoljenja ni uspelo',
'communicationPermissions': 'Dovoljenja za komunikacijo',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Dovoljenja za koledar',
'locationPermissions': 'Dovoljenja za lokacijo',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Pisanje v koledar',
'calendarFullAccess': 'Poln dostop do koledarja',
'locationInfo': 'Informacije o lokaciji',
'phonePermissionDesc': 'Uporablja se za funkcijo klicanja',
'smsPermissionDesc': 'Uporablja se za funkcijo pošiljanja SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Uporablja se za ustvarjanje dogodkov in opomnikov v koledarju',
'calendarFullAccessPermissionDesc':
@ -506,28 +998,90 @@ const Map<String, String> slSI = {
'Funkcija klicanja zahteva dovoljenje za telefon',
'smsPermissionDetailDesc':
'Funkcija pošiljanja SMS zahteva dovoljenje za SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Ustvarjanje dogodkov v koledarju zahteva dovoljenje za pisanje v koledar',
'calendarFullAccessPermissionDetailDesc':
'Upravljanje dogodkov v koledarju zahteva polno dovoljenje za koledar',
'locationPermissionDetailDesc':
'Pridobivanje informacij o lokaciji zahteva dovoljenje za lokacijo',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplikacija zahteva to dovoljenje za polno funkcionalnost',
'permanentDenialText':
'Trajno ste zavrnili dovoljenje za {permission}, pojdite v nastavitve aplikacije, da ga omogočite',
'goToSettings': 'Pojdi na nastavitve',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Najdena nova različica',
'remindLater': 'Opomni me kasneje',
'updateNow': 'Posodobi zdaj',
'checkUpdate': 'Preveri posodobitve',
'updateFailed': 'Posodobitev ni uspela',
'newVersionFound': 'Najdena nova različica', // 版本更新对话框标题
'remindLater': 'Opomni me kasneje', // 稍后提醒按钮
'updateNow': 'Posodobi zdaj', // 立即更新按钮
'checkUpdate': 'Preveri posodobitve', // 检查更新按钮
'updateFailed': 'Posodobitev ni uspela', // 更新失败提示
'cannotOpenAppStore':
'Ni mogoče odpreti trgovine z aplikacijami, pojdite ročno v trgovino, da posodobite',
'Ni mogoče odpreti trgovine z aplikacijami, pojdite ročno v trgovino, da posodobite', // 无法打开应用商店提示
'updateErrorRetry':
'Prišlo je do napake med posodabljanjem, poskusite znova kasneje',
'Prišlo je do napake med posodabljanjem, poskusite znova kasneje', // 更新错误重试提示
//国家列表
"邮箱": "E-pošta",
@ -636,8 +1190,23 @@ const Map<String, String> slSI = {
"东帝汶": "Vzhodni Timor",
"斐济": "Fidži",
"所罗门群岛": "Salomonovi otoki",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Zgodovina prevodov",
"enableRecording": "Omogoči snemanje",
@ -646,9 +1215,24 @@ const Map<String, String> slSI = {
"phoneUser": "Uporabnik telefona",
"selectSourceLanguage": "Izberi izvorni jezik",
"selectTargetLanguage": "Izberi ciljni jezik",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Ni zgodovine",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Počisti zgodovino",
"clearHistoryConfirm":
"Ali ste prepričani, da želite počistiti vso zgodovino prevodov? Tega dejanja ni mogoče razveljaviti.",
@ -657,7 +1241,58 @@ const Map<String, String> slSI = {
"deleteSessionConfirm":
"Ali ste prepričani, da želite izbrisati vse zapise prevodov za to sejo? Tega dejanja ni mogoče razveljaviti.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Prevedi zvočne datoteke",
"noAudioFiles": "Ni zvočnih datotek",
"calculating": "Izračunavanje...",
@ -703,7 +1338,7 @@ const Map<String, String> slSI = {
"autoInputCode": "Samodejni vnos kode",
"skipBinding": "Preskoči povezavo",
"rescan": "Ponovno skeniraj",
"skip": "Preskoči",
"verifyingDevice": "Preverjanje naprave...",
"confirmBinding": "Potrdi povezavo",
"associatingDevice": "Povezovanje naprave...",
@ -735,12 +1370,17 @@ const Map<String, String> slSI = {
"pairingFailedRetry": "Seznanjanje ni uspelo, poskusite znova",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Omogočite Bluetooth',
'deviceDisconnected': 'Naprava je bila odklopljena',
'readyToStartPairing': 'Pripravljen za začetek seznanjanja',
'checkingEnvironment': 'Preverjanje okolja...',
'ensureHeadsetOnAndPairingMode':
'Prepričajte se, da so slušalke vklopljene in v načinu seznanjanja',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Vzpostavljanje varne povezave...',
'needManualBindingAuthCode':
'Potrebna je koda za avtorizacijo ročne povezave...',
@ -764,6 +1404,19 @@ const Map<String, String> slSI = {
'deviceAuthorizationFailedCheckCode':
'Avtorizacija naprave ni uspela, preverite avtorizacijsko kodo',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Povratne informacije uporabnikov",
'feedbackInfo': 'Podajte povratne informacije ali predloge',
@ -792,6 +1445,13 @@ const Map<String, String> slSI = {
"connectionFailed": "Povezava ni uspela",
"retryConnection": "Ponovno poskusi povezati",
"ota_updateNow": "Posodobi zdaj",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Ohranite napravo povezano, ne zapirajte aplikacije",
"doNotDisconnect": "Ne prekinjajte povezave",
@ -801,11 +1461,11 @@ const Map<String, String> slSI = {
"Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%",
// 音乐列表页面
"noMusic": "Ni glasbe",
"noPlayingMusic": "Ni predvajane glasbe",
"unknownSong": "Neznana pesem",
"unknownArtist": "Neznan izvajalec",
"playAll": "Predvajaj vse",
"noMusic": "Ni glasbe", // 暂无音乐
"noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐
"unknownSong": "Neznana pesem", // 未知歌曲
"unknownArtist": "Neznan izvajalec", // 未知歌手
"playAll": "Predvajaj vse", // 播放全部
// 语言名称
"中文(简体)": "Kitajščina (poenostavljena)",
@ -847,4 +1507,23 @@ const Map<String, String> slSI = {
"乌尔都语": "Urdujščina",
"波斯语": "Perzijščina",
"斯瓦希里语": "Svahilščina",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> srRS = {
"spanish": "Španski",
"portuguese": "Portugalski",
"traditionalChinese": "Tradicionalni kineski",
"traditionalChineseHK": "Tradicionalni kineski (Hong Kong)",
"japanese": "Japanski",
"korean": "Korejski",
"french": "Francuski",
@ -99,12 +100,15 @@ const Map<String, String> srRS = {
"usePasswordLogin": "Prijavi se lozinkom",
// 隐私政策弹窗
"loginDeclaration": "Voitrans izjava",
"welcomeToThisApp": "Dobrodošli u Voitrans, molimo vas da pažljivo pročitate",
"loginDeclaration": "Voitrans izjava", // Voitrans 声明
"welcomeToThisApp":
"Dobrodošli u Voitrans, molimo vas da pažljivo pročitate", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", klikom na 'Slažem se i ulazim' potvrđujete da ste u potpunosti pročitali i da se slažete sa gore navedenim ugovorima. Klikom na 'Ne slažem se' izaći ćete iz aplikacije.",
"disagree": "Ne slažem se",
"agreeAndEnter": "Slažem se i ulazim",
", klikom na 'Slažem se i ulazim' potvrđujete da ste u potpunosti pročitali i da se slažete sa gore navedenim ugovorima. Klikom na 'Ne slažem se' izaći ćete iz aplikacije.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Ne slažem se", // 不同意
"agreeAndEnter": "Slažem se i ulazim", // 同意并进入
// 首页
"deviceStatus": "Status uređaja",
@ -185,6 +189,209 @@ const Map<String, String> srRS = {
"usageStats": "Statistika korišćenja",
"usageStatsInfo": "Pregledajte vaše korišćenje aplikacije",
"scene": "Scena",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Preskoči",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Započni sastanak",
@ -199,13 +406,244 @@ const Map<String, String> srRS = {
'aiSummary': 'AI sažetak',
'meetingTranscript': 'Transkript sastanka',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Sistemska podešavanja", //系统设置
"vipRecharge": "Nákup premium člana", //会员充值
"aiRecharge": "Premium član", //AI充值
"translationRecharge": "Nákup prevajanja", //翻译充值
"meetingAssistantRecharge": "Nákup asistenta sastanka", //会议助手充值
"cloudSync": "Nákup sinkronizacije u oblaku", //云端同步
"systemSettings": "Sistemska podešavanja",
"vipRecharge": "Nákup premium člana",
"aiRecharge": "Premium član",
"translationRecharge": "Nákup prevajanja",
"meetingAssistantRecharge": "Nákup asistenta sastanka",
"cloudSync": "Nákup sinkronizacije u oblaku",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Povezan uređaj:",
"accountId": "ID naloga:",
"systemSetting": "Sistemsko podešavanje",
@ -217,8 +655,9 @@ const Map<String, String> srRS = {
"lastBackup": "Poslednja rezervna kopija:",
"privacySettings": "Podešavanja privatnosti",
"privacySettingsInfo": "Upravljanje prikupljanjem podataka i dozvolama",
"permissionManagement": "Upravljanje dozvolama",
"permissionManagementInfo": "Upravljanje podešavanjima dozvola aplikacije",
"permissionManagement": "Upravljanje dozvolama", // 权限管理
"permissionManagementInfo":
"Upravljanje podešavanjima dozvola aplikacije", // 管理应用权限设置
"aboutApplication": "O aplikaciji",
"versions": "Verzija",
"checkUpdates": "Proveri ažuriranja",
@ -253,11 +692,10 @@ const Map<String, String> srRS = {
'networkErrorRetry': 'Mrežna greška, pokušajte ponovo kasnije',
// 设备管理相关
'clearPairedDevices': 'Obriši uparene uređaje',
'clearPairedDevicesConfirm':
'Da li ste sigurni da želite da obrišete sve uparene uređaje?',
'clearPairedDevicesSuccess': 'Uspešno obrisani upareni uređaji',
'clearPairedDevicesFailed': 'Neuspešno brisanje uparenih uređaja',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Glasovno ćaskanje u realnom vremenu",
@ -266,11 +704,20 @@ const Map<String, String> srRS = {
"loading": "Učitavanje...",
//设备管理页面
"earphone": "Slušalice",
"voicerecorder": "Diktafon",
"notBound": "Nije povezano",
"deviceNotBoundYet": "Uređaj još uvek nije povezan",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Prekini vezu",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -299,6 +746,20 @@ const Map<String, String> srRS = {
"loadMoreMessages": "Učitaj još poruka...",
"loadFailedClickRetry": "Neuspešno učitavanje, kliknite da pokušate ponovo",
"swipeUpForMore": "Prevucite nagore za više",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Zdravo! Ja sam **Lily**, mogu vam pomoći:\n\n'
@ -321,8 +782,8 @@ const Map<String, String> srRS = {
'startPhoneCallMode': 'Započni režim poziva, započni unos glasom',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Unesite svoju poruku ovde...',
'characterCount': '{count} karaktera',
'fullScreenEditorHint': 'Unesite svoju poruku ovde...', // 全屏编辑器输入提示
'characterCount': '{count} karaktera', // 字符计数显示
// 消息长按操作
'copy': 'Kopiraj',
@ -331,6 +792,7 @@ const Map<String, String> srRS = {
'submitSuccess': 'Uspešno poslato',
'submitFailed': 'Neuspešno slanje',
'reportSubmitted': 'Prijava je poslata, obradićemo je što je pre moguće',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Štetno/Opasno',
'pornographicVulgar': 'Pornografski/Prostački',
'misleadingAttack': 'Obmanjujuće/Napad',
@ -340,6 +802,7 @@ const Map<String, String> srRS = {
'other': 'Ostalo',
'reportDescriptionHint':
'Želimo da znamo razlog vaše prijave, možete opisati problem sa kojim ste se suočili.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Generisano od strane AI',
@ -350,15 +813,15 @@ const Map<String, String> srRS = {
'moreMusic': 'Još muzike',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'sati',
'minutes': 'minuta',
'seconds': 'sekundi',
'navigating': 'Navigacija',
'currentLocation': 'Trenutna lokacija',
'approximate': 'Približno',
'enterRoad': 'Uđi na put',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'sati', // 小时单位
'minutes': 'minuta', // 分钟单位
'seconds': 'sekundi', // 秒单位
'navigating': 'Navigacija', // 导航状态
'currentLocation': 'Trenutna lokacija', // 当前位置
'approximate': 'Približno', // 大约
'enterRoad': 'Uđi na put', // 进入道路
"driving": "Vožnja",
"walking": "Hodanje",
"bicycling": "Biciklizam",
@ -393,6 +856,17 @@ const Map<String, String> srRS = {
"friday": "Pet",
"saturday": "Sub",
"sunday": "Ned",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Sunčano",
"partlyCloudy": "Delimično oblačno",
@ -429,6 +903,8 @@ const Map<String, String> srRS = {
'deleteAccount': 'Obriši nalog',
'deleteAccountTips':
'Da li ste sigurni da želite trajno da obrišete svoj nalog? Ova radnja se ne može opozvati',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -449,6 +925,8 @@ const Map<String, String> srRS = {
'Interna greška na serveru, pokušajte ponovo kasnije',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Neuspešna kompresija slike',
'avatarUpdateFailed': 'Neuspešno ažuriranje avatara',
'usernameCannotBeEmpty': 'Korisničko ime ne može biti prazno',
@ -461,29 +939,45 @@ const Map<String, String> srRS = {
'deleteAccountFailedRetry': 'Neuspešno brisanje naloga, pokušajte ponovo',
// 账号服务相关
'clearUserDataFailed': 'Neuspešno brisanje korisničkih podataka',
'deleteUserDataFailed': 'Neuspešno brisanje korisničkih podataka',
'thirdPartyLogoutSuccess': 'Uspešno odjavljivanje sa treće strane',
'thirdPartyLogoutFailed': 'Neuspešno odjavljivanje sa treće strane',
'signOutProcessError': 'Došlo je do greške tokom procesa odjavljivanja',
'clearUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 清理用户数据失败
'deleteUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Uspešno odjavljivanje sa treće strane', // 第三方登录退出成功
'thirdPartyLogoutFailed':
'Neuspešno odjavljivanje sa treće strane', // 第三方登录退出失败
'signOutProcessError':
'Došlo je do greške tokom procesa odjavljivanja', // 登出过程发生错误
'deleteAccountProcessError':
'Došlo je do greške tokom procesa brisanja naloga',
'userDataClearSuccess': 'Korisnički podaci uspešno obrisani',
'allUserDataClearSuccess': 'Svi korisnički podaci uspešno obrisani',
'accountServiceInitialized': 'AccountService je inicijalizovan',
'Došlo je do greške tokom procesa brisanja naloga', // 删除账号过程发生错误
'userDataClearSuccess': 'Korisnički podaci uspešno obrisani', // 用户数据清理成功
'allUserDataClearSuccess':
'Svi korisnički podaci uspešno obrisani', // 所有用户数据清理成功
'accountServiceInitialized':
'AccountService je inicijalizovan', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Neuspešno dobijanje statusa dozvole',
'communicationPermissions': 'Dozvole za komunikaciju',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Dozvole za kalendar',
'locationPermissions': 'Dozvole za lokaciju',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Pisanje u kalendar',
'calendarFullAccess': 'Potpuni pristup kalendaru',
'locationInfo': 'Informacije o lokaciji',
'phonePermissionDesc': 'Koristi se za funkciju pozivanja',
'smsPermissionDesc': 'Koristi se za funkciju slanja SMS-a',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Koristi se za kreiranje događaja i podsetnika u kalendaru',
'calendarFullAccessPermissionDesc':
@ -501,28 +995,90 @@ const Map<String, String> srRS = {
'permissionRequestError': 'Greška prilikom traženja dozvole',
'phonePermissionDetailDesc': 'Funkcija pozivanja zahteva dozvolu za telefon',
'smsPermissionDetailDesc': 'Funkcija slanja SMS-a zahteva dozvolu za SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Kreiranje događaja u kalendaru zahteva dozvolu za pisanje u kalendar',
'calendarFullAccessPermissionDetailDesc':
'Upravljanje događajima u kalendaru zahteva potpunu dozvolu za kalendar',
'locationPermissionDetailDesc':
'Dobijanje informacija o lokaciji zahteva dozvolu za lokaciju',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Aplikacija zahteva ovu dozvolu za punu funkcionalnost',
'permanentDenialText':
'Trajno ste odbili dozvolu za {permission}, idite u podešavanja aplikacije da biste je omogućili',
'goToSettings': 'Idi na podešavanja',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Pronađena nova verzija',
'remindLater': 'Podseti me kasnije',
'updateNow': 'Ažuriraj sada',
'checkUpdate': 'Proveri ažuriranja',
'updateFailed': 'Neuspešno ažuriranje',
'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题
'remindLater': 'Podseti me kasnije', // 稍后提醒按钮
'updateNow': 'Ažuriraj sada', // 立即更新按钮
'checkUpdate': 'Proveri ažuriranja', // 检查更新按钮
'updateFailed': 'Neuspešno ažuriranje', // 更新失败提示
'cannotOpenAppStore':
'Nije moguće otvoriti prodavnicu aplikacija, idite ručno u prodavnicu da biste ažurirali',
'Nije moguće otvoriti prodavnicu aplikacija, idite ručno u prodavnicu da biste ažurirali', // 无法打开应用商店提示
'updateErrorRetry':
'Došlo je do greške tokom ažuriranja, pokušajte ponovo kasnije',
'Došlo je do greške tokom ažuriranja, pokušajte ponovo kasnije', // 更新错误重试提示
//国家列表
"邮箱": "E-pošta",
@ -631,8 +1187,23 @@ const Map<String, String> srRS = {
"东帝汶": "Istočni Timor",
"斐济": "Fidži",
"所罗门群岛": "Solomonska Ostrva",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Istorija prevođenja",
"enableRecording": "Omogući snimanje",
@ -641,9 +1212,24 @@ const Map<String, String> srRS = {
"phoneUser": "Korisnik telefona",
"selectSourceLanguage": "Izaberi izvorni jezik",
"selectTargetLanguage": "Izaberi ciljni jezik",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Nema istorije",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Obriši istoriju",
"clearHistoryConfirm":
"Da li ste sigurni da želite da obrišete celu istoriju prevođenja? Ova radnja se ne može opozvati.",
@ -652,7 +1238,58 @@ const Map<String, String> srRS = {
"deleteSessionConfirm":
"Da li ste sigurni da želite da obrišete sve zapise prevođenja za ovu sesiju? Ova radnja se ne može opozvati.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Prevedi audio datoteke",
"noAudioFiles": "Nema audio datoteka",
"calculating": "Izračunavanje...",
@ -698,7 +1335,7 @@ const Map<String, String> srRS = {
"autoInputCode": "Automatski unos koda",
"skipBinding": "Preskoči povezivanje",
"rescan": "Ponovo skeniraj",
"skip": "Preskoči",
"verifyingDevice": "Verifikacija uređaja...",
"confirmBinding": "Potvrdi povezivanje",
"associatingDevice": "Povezivanje uređaja...",
@ -730,12 +1367,17 @@ const Map<String, String> srRS = {
"pairingFailedRetry": "Neuspešno uparivanje, pokušajte ponovo",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Omogućite Bluetooth',
'deviceDisconnected': 'Uređaj je isključen',
'readyToStartPairing': 'Spremno za početak uparivanja',
'checkingEnvironment': 'Provera okruženja...',
'ensureHeadsetOnAndPairingMode':
'Uverite se da su slušalice uključene i u režimu uparivanja',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Uspostavljanje bezbedne veze...',
'needManualBindingAuthCode':
'Potreban je kod za autorizaciju ručnog povezivanja...',
@ -758,6 +1400,19 @@ const Map<String, String> srRS = {
'deviceAuthorizationFailedCheckCode':
'Neuspešna autorizacija uređaja, proverite autorizacioni kod',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Povratne informacije korisnika",
'feedbackInfo': 'Dajte povratne informacije ili predloge',
@ -787,6 +1442,13 @@ const Map<String, String> srRS = {
"connectionFailed": "Neuspešno povezivanje",
"retryConnection": "Pokušaj ponovo povezivanje",
"ota_updateNow": "Ažuriraj sada",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Držite uređaj povezanim, ne zatvarajte aplikaciju",
"doNotDisconnect": "Ne prekidajte vezu",
"charging": "Punjenje",
@ -795,11 +1457,11 @@ const Map<String, String> srRS = {
"Izvadite obe slušalice i uverite se da je baterija obe iznad 20%",
// 音乐列表页面
"noMusic": "Nema muzike",
"noPlayingMusic": "Nema muzike koja se reprodukuje",
"unknownSong": "Nepoznata pesma",
"unknownArtist": "Nepoznat izvođač",
"playAll": "Reprodukuj sve",
"noMusic": "Nema muzike", // 暂无音乐
"noPlayingMusic": "Nema muzike koja se reprodukuje", // 暂无播放音乐
"unknownSong": "Nepoznata pesma", // 未知歌曲
"unknownArtist": "Nepoznat izvođač", // 未知歌手
"playAll": "Reprodukuj sve", // 播放全部
// 语言名称
"中文(简体)": "Kineski (pojednostavljeni)",
@ -841,4 +1503,23 @@ const Map<String, String> srRS = {
"乌尔都语": "Urdu",
"波斯语": "Persijski",
"斯瓦希里语": "Svahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> svSE = {
"spanish": "Spanska",
"portuguese": "Portugisiska",
"traditionalChinese": "Traditionell kinesiska",
"traditionalChineseHK": "Traditionell kinesiska (Hongkong)",
"japanese": "Japanska",
"korean": "Koreanska",
"french": "Franska",
@ -100,12 +101,15 @@ const Map<String, String> svSE = {
"usePasswordLogin": "Logga in med lösenord",
// 隐私政策弹窗
"loginDeclaration": "Voitrans-deklaration",
"welcomeToThisApp": "Välkommen till Voitrans, vänligen läs noggrant",
"loginDeclaration": "Voitrans-deklaration", // Voitrans 声明
"welcomeToThisApp":
"Välkommen till Voitrans, vänligen läs noggrant", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", genom att klicka på 'Godkänn och gå in' bekräftar du att du har läst och godkänt ovanstående avtal. Att klicka på 'Godkänner inte' kommer att avsluta applikationen.",
"disagree": "Godkänner inte",
"agreeAndEnter": "Godkänn och gå in",
", genom att klicka på 'Godkänn och gå in' bekräftar du att du har läst och godkänt ovanstående avtal. Att klicka på 'Godkänner inte' kommer att avsluta applikationen.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Godkänner inte", // 不同意
"agreeAndEnter": "Godkänn och gå in", // 同意并进入
// 首页
"deviceStatus": "Enhetsstatus",
@ -185,6 +189,209 @@ const Map<String, String> svSE = {
"usageStats": "Användningsstatistik",
"usageStatsInfo": "Visa din användningsstatistik",
"scene": "Scenario",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Hoppa över",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Starta möte",
@ -199,13 +406,244 @@ const Map<String, String> svSE = {
'aiSummary': 'AI-sammanfattning',
'meetingTranscript': 'Mötesutskrift',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Systeminställningar", //系统设置
"vipRecharge": "Premium-låntagning", //会员充值
"aiRecharge": "Premium-medlem", //AI充值
"translationRecharge": "Översättningslåntagning", //翻译充值
"meetingAssistantRecharge": "Mötesassistentlåntagning", //会议助手充值
"cloudSync": "Molnsynkronisering", //云端同步
"systemSettings": "Systeminställningar",
"vipRecharge": "Premium-låntagning",
"aiRecharge": "Premium-medlem",
"translationRecharge": "Översättningslåntagning",
"meetingAssistantRecharge": "Mötesassistentlåntagning",
"cloudSync": "Molnsynkronisering",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Ansluten enhet:",
"accountId": "Konto-ID:",
"systemSetting": "Systeminställning",
@ -217,8 +655,9 @@ const Map<String, String> svSE = {
"lastBackup": "Senaste säkerhetskopia:",
"privacySettings": "Integritetsinställningar",
"privacySettingsInfo": "Hantera datainsamling och behörigheter",
"permissionManagement": "Behörighetshantering",
"permissionManagementInfo": "Hantera inställningar för appbehörigheter",
"permissionManagement": "Behörighetshantering", // 权限管理
"permissionManagementInfo":
"Hantera inställningar för appbehörigheter", // 管理应用权限设置
"aboutApplication": "Om appen",
"versions": "Version",
"checkUpdates": "Sök efter uppdateringar",
@ -253,11 +692,10 @@ const Map<String, String> svSE = {
'networkErrorRetry': 'Nätverksfel, försök igen senare',
// 设备管理相关
'clearPairedDevices': 'Rensa parkopplade enheter',
'clearPairedDevicesConfirm':
'Är du säker på att du vill rensa alla parkopplade enheter?',
'clearPairedDevicesSuccess': 'Rensning av parkopplade enheter lyckades',
'clearPairedDevicesFailed': 'Rensning av parkopplade enheter misslyckades',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Realtids röstchatt",
@ -266,11 +704,20 @@ const Map<String, String> svSE = {
"loading": "Laddar...",
//设备管理页面
"earphone": "Hörlurar",
"voicerecorder": "Röstinspelare",
"notBound": "Inte bunden",
"deviceNotBoundYet": "Ingen enhet är bunden ännu",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Lossa bindning",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -299,6 +746,20 @@ const Map<String, String> svSE = {
"loadMoreMessages": "Ladda fler meddelanden...",
"loadFailedClickRetry": "Inläsning misslyckades, klicka för att försöka igen",
"swipeUpForMore": "Svep upp för mer",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Hej! Jag är **Lily**, jag kan hjälpa dig med:\n\n'
@ -321,8 +782,8 @@ const Map<String, String> svSE = {
'startPhoneCallMode': 'Starta samtalsläge, starta röstinmatning',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Skriv ditt meddelande här...',
'characterCount': '{count} tecken',
'fullScreenEditorHint': 'Skriv ditt meddelande här...', // 全屏编辑器输入提示
'characterCount': '{count} tecken', // 字符计数显示
// 消息长按操作
'copy': 'Kopiera',
@ -331,6 +792,7 @@ const Map<String, String> svSE = {
'submitSuccess': 'Inskickat',
'submitFailed': 'Inskickning misslyckades',
'reportSubmitted': 'Anmälan inskickad, vi behandlar den så snart som möjligt',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Skadligt/Osäkert',
'pornographicVulgar': 'Pornografiskt/Vulgärt',
'misleadingAttack': 'Vilseledande/Attack',
@ -340,6 +802,7 @@ const Map<String, String> svSE = {
'other': 'Annat',
'reportDescriptionHint':
'Vi vill veta varför du anmäler, du kan beskriva problemet du stött på.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Genererad av AI',
@ -350,15 +813,15 @@ const Map<String, String> svSE = {
'moreMusic': 'Mer musik',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'timmar',
'minutes': 'minuter',
'seconds': 'sekunder',
'navigating': 'Navigerar',
'currentLocation': 'Nuvarande plats',
'approximate': 'Ungefär',
'enterRoad': 'Kör in på',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'timmar', // 小时单位
'minutes': 'minuter', // 分钟单位
'seconds': 'sekunder', // 秒单位
'navigating': 'Navigerar', // 导航状态
'currentLocation': 'Nuvarande plats', // 当前位置
'approximate': 'Ungefär', // 大约
'enterRoad': 'Kör in på', // 进入道路
"driving": "Körning",
"walking": "Gång",
"bicycling": "Cykling",
@ -394,6 +857,17 @@ const Map<String, String> svSE = {
"friday": "Fre",
"saturday": "Lör",
"sunday": "Sön",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Soligt",
"partlyCloudy": "Delvis molnigt",
@ -430,6 +904,8 @@ const Map<String, String> svSE = {
'deleteAccount': 'Ta bort konto',
'deleteAccountTips':
'Är du säker på att du vill ta bort ditt konto permanent? Denna åtgärd kan inte ångras',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -451,6 +927,8 @@ const Map<String, String> svSE = {
'serverInternalErrorRetryLater': 'Internt serverfel, försök igen senare',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Bildkomprimering misslyckades',
'avatarUpdateFailed': 'Avataruppdatering misslyckades',
'usernameCannotBeEmpty': 'Användarnamn kan inte vara tomt',
@ -463,29 +941,45 @@ const Map<String, String> svSE = {
'deleteAccountFailedRetry': 'Borttagning av konto misslyckades, försök igen',
// 账号服务相关
'clearUserDataFailed': 'Rensning av användardata misslyckades',
'deleteUserDataFailed': 'Borttagning av användardata misslyckades',
'thirdPartyLogoutSuccess': 'Utloggning från tredje part lyckades',
'thirdPartyLogoutFailed': 'Utloggning från tredje part misslyckades',
'signOutProcessError': 'Ett fel uppstod under utloggningsprocessen',
'clearUserDataFailed': 'Rensning av användardata misslyckades', // 清理用户数据失败
'deleteUserDataFailed':
'Borttagning av användardata misslyckades', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Utloggning från tredje part lyckades', // 第三方登录退出成功
'thirdPartyLogoutFailed':
'Utloggning från tredje part misslyckades', // 第三方登录退出失败
'signOutProcessError':
'Ett fel uppstod under utloggningsprocessen', // 登出过程发生错误
'deleteAccountProcessError':
'Ett fel uppstod under borttagningsprocessen av kontot',
'userDataClearSuccess': 'Rensning av användardata lyckades',
'allUserDataClearSuccess': 'All användardata har rensats',
'accountServiceInitialized': 'Kontotjänsten har initierats',
'Ett fel uppstod under borttagningsprocessen av kontot', // 删除账号过程发生错误
'userDataClearSuccess': 'Rensning av användardata lyckades', // 用户数据清理成功
'allUserDataClearSuccess': 'All användardata har rensats', // 所有用户数据清理成功
'accountServiceInitialized':
'Kontotjänsten har initierats', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Hämtning av behörighetsstatus misslyckades',
'communicationPermissions': 'Kommunikationsbehörigheter',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Kalenderbehörigheter',
'locationPermissions': 'Platsbehörigheter',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Skriv till kalender',
'calendarFullAccess': 'Fullständig kalenderåtkomst',
'locationInfo': 'Platsinformation',
'phonePermissionDesc': 'Används för att ringa samtal',
'smsPermissionDesc': 'Används för att skicka SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Används för att skapa kalenderhändelser och påminnelser',
'calendarFullAccessPermissionDesc':
@ -501,27 +995,90 @@ const Map<String, String> svSE = {
'permissionRequestError': 'Fel vid begäran om behörighet',
'phonePermissionDetailDesc': 'Samtalsfunktionen kräver telefonbehörighet',
'smsPermissionDetailDesc': 'SMS-funktionen kräver SMS-behörighet',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Att skapa kalenderhändelser kräver skrivbehörighet till kalendern',
'calendarFullAccessPermissionDetailDesc':
'Att hantera kalenderhändelser kräver fullständig kalenderåtkomst',
'locationPermissionDetailDesc':
'Att hämta platsinformation kräver platsbehörighet',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Appen behöver denna behörighet för full funktionalitet',
'permanentDenialText':
'Du har permanent nekat {permission}-behörighet, vänligen gå till appinställningarna för att aktivera den',
'goToSettings': 'Gå till inställningar',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Ny version hittad',
'remindLater': 'Påminn mig senare',
'updateNow': 'Uppdatera nu',
'checkUpdate': 'Sök efter uppdatering',
'updateFailed': 'Uppdatering misslyckades',
'newVersionFound': 'Ny version hittad', // 版本更新对话框标题
'remindLater': 'Påminn mig senare', // 稍后提醒按钮
'updateNow': 'Uppdatera nu', // 立即更新按钮
'checkUpdate': 'Sök efter uppdatering', // 检查更新按钮
'updateFailed': 'Uppdatering misslyckades', // 更新失败提示
'cannotOpenAppStore':
'Kan inte öppna appbutiken, vänligen gå till appbutiken manuellt för att uppdatera',
'updateErrorRetry': 'Ett fel uppstod under uppdateringen, försök igen senare',
'Kan inte öppna appbutiken, vänligen gå till appbutiken manuellt för att uppdatera', // 无法打开应用商店提示
'updateErrorRetry':
'Ett fel uppstod under uppdateringen, försök igen senare', // 更新错误重试提示
//国家列表
"邮箱": "E-post",
@ -630,8 +1187,23 @@ const Map<String, String> svSE = {
"东帝汶": "Östtimor",
"斐济": "Fiji",
"所罗门群岛": "Salomonöarna",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Översättningshistorik",
"enableRecording": "Aktivera inspelning",
@ -640,9 +1212,24 @@ const Map<String, String> svSE = {
"phoneUser": "Telefonanvändare",
"selectSourceLanguage": "Välj källspråk",
"selectTargetLanguage": "Välj målspråk",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Ingen historik ännu",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Rensa historik",
"clearHistoryConfirm":
"Är du säker på att du vill rensa all översättningshistorik? Denna åtgärd kan inte ångras.",
@ -651,7 +1238,58 @@ const Map<String, String> svSE = {
"deleteSessionConfirm":
"Är du säker på att du vill ta bort alla översättningsinspelningar för denna session? Denna åtgärd kan inte ångras.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Översätt ljudfiler",
"noAudioFiles": "Inga ljudfiler ännu",
"calculating": "Beräknar...",
@ -697,7 +1335,7 @@ const Map<String, String> svSE = {
"autoInputCode": "Ange koden automatiskt",
"skipBinding": "Hoppa över bindning",
"rescan": "Skanna igen",
"skip": "Hoppa över",
"verifyingDevice": "Verifierar enhet...",
"confirmBinding": "Bekräfta bindning",
"associatingDevice": "Associerar enhet...",
@ -729,12 +1367,17 @@ const Map<String, String> svSE = {
"pairingFailedRetry": "Parkoppling misslyckades, försök igen",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Aktivera Bluetooth',
'deviceDisconnected': 'Enheten frånkopplad',
'readyToStartPairing': 'Redo att starta parkoppling',
'checkingEnvironment': 'Kontrollerar miljö...',
'ensureHeadsetOnAndPairingMode':
'Se till att hörlurarna är på och i parkopplingsläge',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Upprättar säker anslutning...',
'needManualBindingAuthCode': 'Manuell bindningsauktoriseringskod krävs...',
'pairingSuccessful': 'Parkoppling lyckades!',
@ -755,6 +1398,19 @@ const Map<String, String> svSE = {
'deviceAuthorizationFailedCheckCode':
'Enhetsauktorisering misslyckades, kontrollera auktoriseringskoden',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Användarfeedback",
'feedbackInfo': 'Ge feedback eller förslag',
@ -782,6 +1438,13 @@ const Map<String, String> svSE = {
"connectionFailed": "Anslutning misslyckades",
"retryConnection": "Försök ansluta igen",
"ota_updateNow": "Uppdatera nu",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose": "Håll enheten ansluten, stäng inte appen",
"doNotDisconnect": "Koppla inte från",
"charging": "Laddar",
@ -790,11 +1453,11 @@ const Map<String, String> svSE = {
"Ta ut båda hörlurarna och se till att batterinivån är över 20 % på båda",
// 音乐列表页面
"noMusic": "Ingen musik",
"noPlayingMusic": "Ingen musik spelas",
"unknownSong": "Okänd låt",
"unknownArtist": "Okänd artist",
"playAll": "Spela alla",
"noMusic": "Ingen musik", // 暂无音乐
"noPlayingMusic": "Ingen musik spelas", // 暂无播放音乐
"unknownSong": "Okänd låt", // 未知歌曲
"unknownArtist": "Okänd artist", // 未知歌手
"playAll": "Spela alla", // 播放全部
// 语言名称
"中文(简体)": "Kinesiska (förenklad)",
@ -836,4 +1499,23 @@ const Map<String, String> svSE = {
"乌尔都语": "Urdu",
"波斯语": "Persiska",
"斯瓦希里语": "Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> thTH = {
"spanish": "ภาษาสเปน",
"portuguese": "ภาษาโปรตุเกส",
"traditionalChinese": "ภาษาจีนตัวเต็ม",
"traditionalChineseHK": "ภาษาจีนตัวเต็ม (ฮ่องกง)",
"japanese": "ภาษาญี่ปุ่น",
"korean": "ภาษาเกาหลี",
"french": "ภาษาฝรั่งเศส",
@ -99,12 +100,15 @@ const Map<String, String> thTH = {
"usePasswordLogin": "เข้าสู่ระบบด้วยรหัสผ่าน",
// 隐私政策弹窗
"loginDeclaration": "คำประกาศของ Voitrans",
"welcomeToThisApp": "ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด",
"loginDeclaration": "คำประกาศของ Voitrans", // Voitrans 声明
"welcomeToThisApp":
"ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
" การคลิก 'ยอมรับและเข้าสู่' หมายความว่าคุณได้อ่านและยอมรับข้อตกลงข้างต้นแล้ว การคลิก 'ไม่ยอมรับ' จะเป็นการออกจากแอปพลิเคชัน",
"disagree": "ไม่ยอมรับ",
"agreeAndEnter": "ยอมรับและเข้าสู่",
" การคลิก 'ยอมรับและเข้าสู่' หมายความว่าคุณได้อ่านและยอมรับข้อตกลงข้างต้นแล้ว การคลิก 'ไม่ยอมรับ' จะเป็นการออกจากแอปพลิเคชัน", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "ไม่ยอมรับ", // 不同意
"agreeAndEnter": "ยอมรับและเข้าสู่", // 同意并进入
// 首页
"deviceStatus": "สถานะอุปกรณ์",
@ -179,6 +183,209 @@ const Map<String, String> thTH = {
"usageStats": "สถิติการใช้งาน",
"usageStatsInfo": "ดูสถิติการใช้งานของคุณ",
"scene": "สถานการณ์",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "ข้าม",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "เริ่มการประชุม",
@ -193,13 +400,244 @@ const Map<String, String> thTH = {
'aiSummary': 'สรุปโดย AI',
'meetingTranscript': 'ข้อความถอดเสียงการประชุม',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "การตั้งค่าระบบ", //系统设置
"vipRecharge": "การเติมเงินสมาชิกระดับพรีเมียม", //会员充值
"aiRecharge": "สมาชิกระดับพรีเมียม", //AI充值
"translationRecharge": "การเติมเงินการแปล", //翻译充值
"meetingAssistantRecharge": "การเติมเงินผู้ช่วยการประชุม", //会议助手充值
"cloudSync": "การเติมเงินการ đồng bộ hóaคลาวด์", //云端同步
"systemSettings": "การตั้งค่าระบบ",
"vipRecharge": "การเติมเงินสมาชิกระดับพรีเมียม",
"aiRecharge": "สมาชิกระดับพรีเมียม",
"translationRecharge": "การเติมเงินการแปล",
"meetingAssistantRecharge": "การเติมเงินผู้ช่วยการประชุม",
"cloudSync": "การเติมเงินการ đồng bộ hóaคลาวด์",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "อุปกรณ์ที่เชื่อมต่อ:",
"accountId": "ID บัญชี:",
"systemSetting": "การตั้งค่าระบบ",
@ -211,8 +649,9 @@ const Map<String, String> thTH = {
"lastBackup": "การสำรองข้อมูลล่าสุด:",
"privacySettings": "การตั้งค่าความเป็นส่วนตัว",
"privacySettingsInfo": "จัดการการรวบรวมข้อมูลและสิทธิ์",
"permissionManagement": "การจัดการสิทธิ์",
"permissionManagementInfo": "จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน",
"permissionManagement": "การจัดการสิทธิ์", // 权限管理
"permissionManagementInfo":
"จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน", // 管理应用权限设置
"aboutApplication": "เกี่ยวกับแอปพลิเคชัน",
"versions": "เวอร์ชัน",
"checkUpdates": "ตรวจสอบการอัปเดต",
@ -247,11 +686,10 @@ const Map<String, String> thTH = {
'networkErrorRetry': 'ข้อผิดพลาดเครือข่าย กรุณาลองใหม่ในภายหลัง',
// 设备管理相关
'clearPairedDevices': 'ล้างอุปกรณ์ที่จับคู่แล้ว',
'clearPairedDevicesConfirm':
'คุณแน่ใจหรือไม่ว่าต้องการล้างอุปกรณ์ที่จับคู่แล้วทั้งหมด',
'clearPairedDevicesSuccess': 'ล้างอุปกรณ์ที่จับคู่แล้วสำเร็จ',
'clearPairedDevicesFailed': 'ล้างอุปกรณ์ที่จับคู่แล้วล้มเหลว',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "แชทเสียงแบบเรียลไทม์",
@ -260,11 +698,20 @@ const Map<String, String> thTH = {
"loading": "กำลังโหลด...",
//设备管理页面
"earphone": "หูฟัง",
"voicerecorder": "เครื่องบันทึกเสียง",
"notBound": "ยังไม่ได้ผูก",
"deviceNotBoundYet": "ยังไม่ได้ผูกอุปกรณ์",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "ยกเลิกการผูก",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -293,6 +740,20 @@ const Map<String, String> thTH = {
"loadMoreMessages": "โหลดข้อความเพิ่มเติม...",
"loadFailedClickRetry": "โหลดล้มเหลว คลิกเพื่อลองใหม่",
"swipeUpForMore": "ปัดขึ้นเพื่อดูเพิ่มเติม",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'สวัสดี! ฉันคือ **เสี่ยวเหยียน** ฉันสามารถช่วยคุณได้:\n\n'
@ -315,8 +776,8 @@ const Map<String, String> thTH = {
'startPhoneCallMode': 'เริ่มโหมดโทรศัพท์ เริ่มการป้อนข้อมูลด้วยเสียง',
// Agent 全屏编辑器
'fullScreenEditorHint': 'ป้อนข้อความของคุณที่นี่...',
'characterCount': '{count} ตัวอักษร',
'fullScreenEditorHint': 'ป้อนข้อความของคุณที่นี่...', // 全屏编辑器输入提示
'characterCount': '{count} ตัวอักษร', // 字符计数显示
// 消息长按操作
'copy': 'คัดลอก',
@ -325,6 +786,7 @@ const Map<String, String> thTH = {
'submitSuccess': 'ส่งสำเร็จ',
'submitFailed': 'ส่งล้มเหลว',
'reportSubmitted': 'รายงานถูกส่งแล้ว เราจะดำเนินการโดยเร็วที่สุด',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'เป็นอันตราย/ไม่ปลอดภัย',
'pornographicVulgar': 'ลามกอนาจาร',
'misleadingAttack': 'ทำให้เข้าใจผิด/โจมตี',
@ -334,6 +796,7 @@ const Map<String, String> thTH = {
'other': 'อื่นๆ',
'reportDescriptionHint':
'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'สร้างโดย AI',
@ -344,15 +807,15 @@ const Map<String, String> thTH = {
'moreMusic': 'เพลงเพิ่มเติม',
//导航卡片 navigation_card
'kilometers': 'กม.',
'meters': 'ม.',
'hours': 'ชม.',
'minutes': 'นาที',
'seconds': 'วินาที',
'navigating': 'กำลังนำทาง',
'currentLocation': 'ตำแหน่งปัจจุบัน',
'approximate': 'ประมาณ',
'enterRoad': 'เข้าสู่',
'kilometers': 'กม.', // 公里单位
'meters': 'ม.', // 米单位
'hours': 'ชม.', // 小时单位
'minutes': 'นาที', // 分钟单位
'seconds': 'วินาที', // 秒单位
'navigating': 'กำลังนำทาง', // 导航状态
'currentLocation': 'ตำแหน่งปัจจุบัน', // 当前位置
'approximate': 'ประมาณ', // 大约
'enterRoad': 'เข้าสู่', // 进入道路
"driving": "ขับรถ",
"walking": "เดิน",
"bicycling": "ขี่จักรยาน",
@ -386,6 +849,17 @@ const Map<String, String> thTH = {
"friday": "ศ.",
"saturday": "ส.",
"sunday": "อา.",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "แจ่มใส",
"partlyCloudy": "มีเมฆบางส่วน",
@ -421,6 +895,8 @@ const Map<String, String> thTH = {
'deleteAccount': 'ลบบัญชี',
'deleteAccountTips':
'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -442,6 +918,8 @@ const Map<String, String> thTH = {
'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'การบีบอัดรูปภาพล้มเหลว',
'avatarUpdateFailed': 'อัปเดตอวาตาร์ล้มเหลว',
'usernameCannotBeEmpty': 'ชื่อผู้ใช้ต้องไม่ว่างเปล่า',
@ -454,28 +932,41 @@ const Map<String, String> thTH = {
'deleteAccountFailedRetry': 'ลบบัญชีล้มเหลว โปรดลองใหม่',
// 账号服务相关
'clearUserDataFailed': 'ล้างข้อมูลผู้ใช้ล้มเหลว',
'deleteUserDataFailed': 'ลบข้อมูลผู้ใช้ล้มเหลว',
'thirdPartyLogoutSuccess': 'ออกจากระบบบุคคลที่สามสำเร็จ',
'thirdPartyLogoutFailed': 'ออกจากระบบบุคคลที่สามล้มเหลว',
'signOutProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการออกจากระบบ',
'deleteAccountProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี',
'userDataClearSuccess': 'ล้างข้อมูลผู้ใช้สำเร็จ',
'allUserDataClearSuccess': 'ล้างข้อมูลผู้ใช้ทั้งหมดสำเร็จ',
'accountServiceInitialized': 'AccountService ได้รับการเริ่มต้นแล้ว',
'clearUserDataFailed': 'ล้างข้อมูลผู้ใช้ล้มเหลว', // 清理用户数据失败
'deleteUserDataFailed': 'ลบข้อมูลผู้ใช้ล้มเหลว', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'ออกจากระบบบุคคลที่สามสำเร็จ', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'ออกจากระบบบุคคลที่สามล้มเหลว', // 第三方登录退出失败
'signOutProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการออกจากระบบ', // 登出过程发生错误
'deleteAccountProcessError':
'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี', // 删除账号过程发生错误
'userDataClearSuccess': 'ล้างข้อมูลผู้ใช้สำเร็จ', // 用户数据清理成功
'allUserDataClearSuccess': 'ล้างข้อมูลผู้ใช้ทั้งหมดสำเร็จ', // 所有用户数据清理成功
'accountServiceInitialized':
'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'รับสถานะสิทธิ์ล้มเหลว',
'communicationPermissions': 'สิทธิ์การสื่อสาร',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'สิทธิ์ปฏิทิน',
'locationPermissions': 'สิทธิ์ตำแหน่ง',
'phone': 'โทรศัพท์',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'เขียนปฏิทิน',
'calendarFullAccess': 'เข้าถึงปฏิทินเต็มรูปแบบ',
'locationInfo': 'ข้อมูลตำแหน่ง',
'phonePermissionDesc': 'ใช้สำหรับฟังก์ชันการโทรออก',
'smsPermissionDesc': 'ใช้สำหรับฟังก์ชันการส่ง SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc': 'ใช้สำหรับสร้างกิจกรรมและการแจ้งเตือนในปฏิทิน',
'calendarFullAccessPermissionDesc':
'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน',
@ -490,26 +981,89 @@ const Map<String, String> thTH = {
'permissionRequestError': 'เกิดข้อผิดพลาดขณะขอสิทธิ์',
'phonePermissionDetailDesc': 'ฟังก์ชันโทรออกต้องการสิทธิ์โทรศัพท์',
'smsPermissionDetailDesc': 'ฟังก์ชันส่ง SMS ต้องการสิทธิ์ SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'การสร้างกิจกรรมในปฏิทินต้องการสิทธิ์เขียนปฏิทิน',
'calendarFullAccessPermissionDetailDesc':
'การจัดการกิจกรรมในปฏิทินต้องการสิทธิ์เข้าถึงปฏิทินเต็มรูปแบบ',
'locationPermissionDetailDesc': 'การรับข้อมูลตำแหน่งต้องการสิทธิ์ตำแหน่ง',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ',
'permanentDenialText':
'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน',
'goToSettings': 'ไปที่การตั้งค่า',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'พบเวอร์ชันใหม่',
'remindLater': 'เตือนภายหลัง',
'updateNow': 'อัปเดตทันที',
'checkUpdate': 'ตรวจสอบการอัปเดต',
'updateFailed': 'อัปเดตล้มเหลว',
'newVersionFound': 'พบเวอร์ชันใหม่', // 版本更新对话框标题
'remindLater': 'เตือนภายหลัง', // 稍后提醒按钮
'updateNow': 'อัปเดตทันที', // 立即更新按钮
'checkUpdate': 'ตรวจสอบการอัปเดต', // 检查更新按钮
'updateFailed': 'อัปเดตล้มเหลว', // 更新失败提示
'cannotOpenAppStore':
'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง',
'updateErrorRetry': 'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง',
'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示
'updateErrorRetry':
'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示
//国家列表
"邮箱": "อีเมล",
@ -618,8 +1172,23 @@ const Map<String, String> thTH = {
"东帝汶": "ติมอร์-เลสเต",
"斐济": "ฟิจิ",
"所罗门群岛": "หมู่เกาะโซโลมอน",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "ประวัติการแปล",
"enableRecording": "เปิดใช้งานการบันทึก",
@ -628,9 +1197,24 @@ const Map<String, String> thTH = {
"phoneUser": "ผู้ใช้โทรศัพท์",
"selectSourceLanguage": "เลือกภาษาต้นทาง",
"selectTargetLanguage": "เลือกภาษาเป้าหมาย",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "ยังไม่มีประวัติ",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "ล้างประวัติ",
"clearHistoryConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้",
@ -639,7 +1223,58 @@ const Map<String, String> thTH = {
"deleteSessionConfirm":
"คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "แปลไฟล์เสียง",
"noAudioFiles": "ยังไม่มีไฟล์เสียง",
"calculating": "กำลังคำนวณ...",
@ -684,7 +1319,7 @@ const Map<String, String> thTH = {
"autoInputCode": "ป้อนรหัสอัตโนมัติ",
"skipBinding": "ข้ามการผูก",
"rescan": "สแกนอีกครั้ง",
"skip": "ข้าม",
"verifyingDevice": "กำลังตรวจสอบอุปกรณ์...",
"confirmBinding": "ยืนยันการผูก",
"associatingDevice": "กำลังเชื่อมโยงอุปกรณ์...",
@ -715,12 +1350,17 @@ const Map<String, String> thTH = {
"pairingFailedRetry": "การจับคู่ล้มเหลว โปรดลองอีกครั้ง",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'กรุณาเปิดใช้งานบลูทูธ',
'deviceDisconnected': 'อุปกรณ์ตัดการเชื่อมต่อแล้ว',
'readyToStartPairing': 'พร้อมที่จะเริ่มการจับคู่',
'checkingEnvironment': 'กำลังตรวจสอบสภาพแวดล้อม...',
'ensureHeadsetOnAndPairingMode':
'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'กำลังสร้างการเชื่อมต่อที่ปลอดภัย...',
'needManualBindingAuthCode': 'ต้องใช้รหัสอนุญาตการผูกด้วยตนเอง...',
'pairingSuccessful': 'การจับคู่สำเร็จ!',
@ -741,6 +1381,19 @@ const Map<String, String> thTH = {
'deviceAuthorizationFailedCheckCode':
'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "ความคิดเห็นของผู้ใช้",
'feedbackInfo': 'ให้ความคิดเห็นหรือข้อเสนอแนะ',
@ -768,6 +1421,13 @@ const Map<String, String> thTH = {
"connectionFailed": "การเชื่อมต่อล้มเหลว",
"retryConnection": "ลองเชื่อมต่อใหม่",
"ota_updateNow": "อัปเดตทันที",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน",
"doNotDisconnect": "โปรดอย่าตัดการเชื่อมต่อ",
@ -777,11 +1437,11 @@ const Map<String, String> thTH = {
"ถอดหูฟังทั้งสองข้างออก และตรวจสอบให้แน่ใจว่าแบตเตอรี่ทั้งสองข้างมีพลังงานมากกว่า 20%",
// 音乐列表页面
"noMusic": "ไม่มีเพลง",
"noPlayingMusic": "ไม่มีเพลงที่กำลังเล่น",
"unknownSong": "เพลงที่ไม่รู้จัก",
"unknownArtist": "ศิลปินที่ไม่รู้จัก",
"playAll": "เล่นทั้งหมด",
"noMusic": "ไม่มีเพลง", // 暂无音乐
"noPlayingMusic": "ไม่มีเพลงที่กำลังเล่น", // 暂无播放音乐
"unknownSong": "เพลงที่ไม่รู้จัก", // 未知歌曲
"unknownArtist": "ศิลปินที่ไม่รู้จัก", // 未知歌手
"playAll": "เล่นทั้งหมด", // 播放全部
// 语言名称
"中文(简体)": "ภาษาจีน (ตัวย่อ)",
@ -823,4 +1483,23 @@ const Map<String, String> thTH = {
"乌尔都语": "ภาษาอูรดู",
"波斯语": "ภาษาเปอร์เซีย",
"斯瓦希里语": "ภาษาสวาฮีลี",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> tlPH = {
"spanish": "Espanyol",
"portuguese": "Portuges",
"traditionalChinese": "Tradisyonal na Chinese",
"traditionalChineseHK": "Tradisyunal na Tsino (Hong Kong)",
"japanese": "Hapon",
"korean": "Koreano",
"french": "Pranses",
@ -100,13 +101,15 @@ const Map<String, String> tlPH = {
"usePasswordLogin": "Gamitin ang password para mag-login",
// 隐私政策弹窗
"loginDeclaration": "Pahayag ng Voitrans",
"loginDeclaration": "Pahayag ng Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Maligayang pagdating sa Voitrans, mangyaring basahin nang mabuti",
"Maligayang pagdating sa Voitrans, mangyaring basahin nang mabuti", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", ang pag-click sa 'Sumang-ayon at Pumasok' ay nangangahulugang nabasa mo nang buo at sumasang-ayon ka sa mga nabanggit na kasunduan. Ang pag-click sa 'Hindi Sumasang-ayon' ay magsasara ng app.",
"disagree": "Hindi Sumasang-ayon",
"agreeAndEnter": "Sumang-ayon at Pumasok",
", ang pag-click sa 'Sumang-ayon at Pumasok' ay nangangahulugang nabasa mo nang buo at sumasang-ayon ka sa mga nabanggit na kasunduan. Ang pag-click sa 'Hindi Sumasang-ayon' ay magsasara ng app.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Hindi Sumasang-ayon", // 不同意
"agreeAndEnter": "Sumang-ayon at Pumasok", // 同意并进入
// 首页
"deviceStatus": "Katayuan ng Device",
@ -188,6 +191,209 @@ const Map<String, String> tlPH = {
"usageStats": "Usage Statistics",
"usageStatsInfo": "View your usage statistics",
"scene": "Eksena",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Laktawan",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Simulan ang Pulong",
@ -202,13 +408,244 @@ const Map<String, String> tlPH = {
'aiSummary': 'Buod ng AI',
'meetingTranscript': 'Transkripsyon ng Pulong',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Mga Setting ng System", //系统设置
"vipRecharge": "Pagsasalin ng Recharge ng Premium na Miyembro", //会员充值
"aiRecharge": "Premium na Miyembro", //AI充值
"translationRecharge": "Pagsasalin ng Recharge", //翻译充值
"meetingAssistantRecharge": "Pagsasalin ng Recharge ng Pulong", //会议助手充值
"cloudSync": "Pagsasalin ng Recharge ng Cloud", //云端同步
"systemSettings": "Mga Setting ng System",
"vipRecharge": "Pagsasalin ng Recharge ng Premium na Miyembro",
"aiRecharge": "Premium na Miyembro",
"translationRecharge": "Pagsasalin ng Recharge",
"meetingAssistantRecharge": "Pagsasalin ng Recharge ng Pulong",
"cloudSync": "Pagsasalin ng Recharge ng Cloud",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Konektadong device:",
"accountId": "Account ID:",
"systemSetting": "Setting ng System",
@ -220,8 +657,9 @@ const Map<String, String> tlPH = {
"lastBackup": "Huling backup:",
"privacySettings": "Mga Setting ng Privacy",
"privacySettingsInfo": "Pamahalaan ang koleksyon ng data at mga pahintulot",
"permissionManagement": "Pamamahala ng Pahintulot",
"permissionManagementInfo": "Pamahalaan ang mga setting ng pahintulot ng app",
"permissionManagement": "Pamamahala ng Pahintulot", // 权限管理
"permissionManagementInfo":
"Pamahalaan ang mga setting ng pahintulot ng app", // 管理应用权限设置
"aboutApplication": "Tungkol sa App",
"versions": "Bersyon",
"checkUpdates": "Suriin kung may mga Update",
@ -258,12 +696,10 @@ const Map<String, String> tlPH = {
'networkErrorRetry': 'Error sa network, pakisubukang muli mamaya',
// 设备管理相关
'clearPairedDevices': 'Alisin ang mga Naka-pair na Device',
'clearPairedDevicesConfirm':
'Sigurado ka bang gusto mong alisin ang lahat ng naka-pair na device?',
'clearPairedDevicesSuccess':
'Matagumpay na naalis ang mga naka-pair na device',
'clearPairedDevicesFailed': 'Nabigong alisin ang mga naka-pair na device',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Real-time na Voice Chat",
@ -272,11 +708,20 @@ const Map<String, String> tlPH = {
"loading": "Naglo-load...",
//设备管理页面
"earphone": "Earphones",
"voicerecorder": "Voice Recorder",
"notBound": "Hindi Naka-bind",
"deviceNotBoundYet": "Wala pang naka-bind na device",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Alisin sa pagkaka-bind",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -306,6 +751,20 @@ const Map<String, String> tlPH = {
"loadMoreMessages": "Mag-load ng mas maraming mensahe...",
"loadFailedClickRetry": "Nabigo ang pag-load, i-click para subukang muli",
"swipeUpForMore": "Mag-swipe pataas para sa higit pa",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Kumusta! Ako si **Lily**, matutulungan kita sa:\n\n'
@ -328,8 +787,8 @@ const Map<String, String> tlPH = {
'startPhoneCallMode': 'Simulan ang mode ng pagtawag, simulan ang voice input',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Ilagay ang iyong mensahe dito...',
'characterCount': '{count} na character',
'fullScreenEditorHint': 'Ilagay ang iyong mensahe dito...', // 全屏编辑器输入提示
'characterCount': '{count} na character', // 字符计数显示
// 消息长按操作
'copy': 'Kopyahin',
@ -339,6 +798,7 @@ const Map<String, String> tlPH = {
'submitFailed': 'Nabigo ang pagsusumite',
'reportSubmitted':
'Naisumite na ang report, ipoproseso namin ito sa lalong madaling panahon',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Nakapipinsala/Hindi Ligtas',
'pornographicVulgar': 'Pornograpiko/Bastos',
'misleadingAttack': 'Mapanlinlang/Pag-atake',
@ -348,6 +808,7 @@ const Map<String, String> tlPH = {
'other': 'Iba pa',
'reportDescriptionHint':
'Gusto naming malaman kung bakit ka nagre-report, maaari mong ilarawan ang problemang iyong naranasan.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Nilikha ng AI',
@ -358,15 +819,15 @@ const Map<String, String> tlPH = {
'moreMusic': 'Higit pang Musika',
//导航卡片 navigation_card
'kilometers': 'kilometro',
'meters': 'metro',
'hours': 'oras',
'minutes': 'minuto',
'seconds': 'segundo',
'navigating': 'Nag-na-navigate',
'currentLocation': 'Kasalukuyang Lokasyon',
'approximate': 'Tinatayang',
'enterRoad': 'Pumasok sa',
'kilometers': 'kilometro', // 公里单位
'meters': 'metro', // 米单位
'hours': 'oras', // 小时单位
'minutes': 'minuto', // 分钟单位
'seconds': 'segundo', // 秒单位
'navigating': 'Nag-na-navigate', // 导航状态
'currentLocation': 'Kasalukuyang Lokasyon', // 当前位置
'approximate': 'Tinatayang', // 大约
'enterRoad': 'Pumasok sa', // 进入道路
"driving": "Pagmamaneho",
"walking": "Paglalakad",
"bicycling": "Pagbibisikleta",
@ -402,6 +863,17 @@ const Map<String, String> tlPH = {
"friday": "Biyernes",
"saturday": "Sabado",
"sunday": "Linggo",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Maaraw",
"partlyCloudy": "Bahagyang Maulap",
@ -438,6 +910,8 @@ const Map<String, String> tlPH = {
'deleteAccount': 'Burahin ang Account',
'deleteAccountTips':
'Sigurado ka bang gusto mong permanenteng burahin ang iyong account? Hindi na ito maibabalik.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -460,6 +934,8 @@ const Map<String, String> tlPH = {
'Internal na error sa server, pakisubukang muli mamaya',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Nabigo ang pag-compress ng imahe',
'avatarUpdateFailed': 'Nabigo ang pag-update ng avatar',
'usernameCannotBeEmpty': 'Hindi maaaring walang laman ang username',
@ -472,29 +948,44 @@ const Map<String, String> tlPH = {
'deleteAccountFailedRetry': 'Nabigong burahin ang account, pakisubukang muli',
// 账号服务相关
'clearUserDataFailed': 'Nabigong i-clear ang data ng user',
'deleteUserDataFailed': 'Nabigong burahin ang data ng user',
'thirdPartyLogoutSuccess': 'Matagumpay na naka-logout sa third-party',
'thirdPartyLogoutFailed': 'Nabigo ang pag-logout sa third-party',
'signOutProcessError': 'Nagkaroon ng error sa proseso ng pag-sign out',
'clearUserDataFailed': 'Nabigong i-clear ang data ng user', // 清理用户数据失败
'deleteUserDataFailed': 'Nabigong burahin ang data ng user', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Matagumpay na naka-logout sa third-party', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Nabigo ang pag-logout sa third-party', // 第三方登录退出失败
'signOutProcessError':
'Nagkaroon ng error sa proseso ng pag-sign out', // 登出过程发生错误
'deleteAccountProcessError':
'Nagkaroon ng error sa proseso ng pagbura ng account',
'userDataClearSuccess': 'Matagumpay na na-clear ang data ng user',
'allUserDataClearSuccess': 'Matagumpay na na-clear ang lahat ng data ng user',
'accountServiceInitialized': 'Naisimulan na ang AccountService',
'Nagkaroon ng error sa proseso ng pagbura ng account', // 删除账号过程发生错误
'userDataClearSuccess': 'Matagumpay na na-clear ang data ng user', // 用户数据清理成功
'allUserDataClearSuccess':
'Matagumpay na na-clear ang lahat ng data ng user', // 所有用户数据清理成功
'accountServiceInitialized':
'Naisimulan na ang AccountService', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Nabigong makuha ang katayuan ng pahintulot',
'communicationPermissions': 'Mga Pahintulot sa Komunikasyon',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Mga Pahintulot sa Kalendaryo',
'locationPermissions': 'Mga Pahintulot sa Lokasyon',
'phone': 'Telepono',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Pagsulat sa Kalendaryo',
'calendarFullAccess': 'Buong Access sa Kalendaryo',
'locationInfo': 'Impormasyon sa Lokasyon',
'phonePermissionDesc': 'Ginagamit para sa function ng pagtawag',
'smsPermissionDesc': 'Ginagamit para sa function ng pagpapadala ng SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Ginagamit para sa paglikha ng mga kaganapan at paalala sa kalendaryo',
'calendarFullAccessPermissionDesc':
@ -513,28 +1004,90 @@ const Map<String, String> tlPH = {
'Ang function ng pagtawag ay nangangailangan ng pahintulot sa telepono',
'smsPermissionDetailDesc':
'Ang function ng pagpapadala ng SMS ay nangangailangan ng pahintulot sa SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Ang paglikha ng mga kaganapan sa kalendaryo ay nangangailangan ng pahintulot sa pagsulat sa kalendaryo',
'calendarFullAccessPermissionDetailDesc':
'Ang pamamahala ng mga kaganapan sa kalendaryo ay nangangailangan ng buong pahintulot sa kalendaryo',
'locationPermissionDetailDesc':
'Ang pagkuha ng impormasyon sa lokasyon ay nangangailangan ng pahintulot sa lokasyon',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Kailangan ng app ang pahintulot na ito para sa buong paggana',
'permanentDenialText':
'Permanenteng tinanggihan mo ang pahintulot sa {permission}, mangyaring pumunta sa mga setting ng app para paganahin ito',
'goToSettings': 'Pumunta sa Mga Setting',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'May Natagpuang Bagong Bersyon',
'remindLater': 'Paalalahanan Mamaya',
'updateNow': 'I-update Ngayon',
'checkUpdate': 'Suriin kung may Update',
'updateFailed': 'Nabigo ang Pag-update',
'newVersionFound': 'May Natagpuang Bagong Bersyon', // 版本更新对话框标题
'remindLater': 'Paalalahanan Mamaya', // 稍后提醒按钮
'updateNow': 'I-update Ngayon', // 立即更新按钮
'checkUpdate': 'Suriin kung may Update', // 检查更新按钮
'updateFailed': 'Nabigo ang Pag-update', // 更新失败提示
'cannotOpenAppStore':
'Hindi mabuksan ang app store, mangyaring pumunta nang manu-mano sa app store para mag-update',
'Hindi mabuksan ang app store, mangyaring pumunta nang manu-mano sa app store para mag-update', // 无法打开应用商店提示
'updateErrorRetry':
'Nagkaroon ng error habang nag-a-update, pakisubukang muli mamaya',
'Nagkaroon ng error habang nag-a-update, pakisubukang muli mamaya', // 更新错误重试提示
//国家列表
"邮箱": "Email",
@ -643,8 +1196,23 @@ const Map<String, String> tlPH = {
"东帝汶": "Timor-Leste",
"斐济": "Fiji",
"所罗门群岛": "Solomon Islands",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Kasaysayan ng Pagsasalin",
"enableRecording": "Paganahin ang Pag-record",
@ -653,9 +1221,24 @@ const Map<String, String> tlPH = {
"phoneUser": "User ng Telepono",
"selectSourceLanguage": "Pumili ng pinagmulang wika",
"selectTargetLanguage": "Pumili ng target na wika",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Wala pang kasaysayan",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Burahin ang Kasaysayan",
"clearHistoryConfirm":
"Sigurado ka bang gusto mong burahin ang lahat ng kasaysayan ng pagsasalin? Hindi na ito maibabalik.",
@ -664,7 +1247,58 @@ const Map<String, String> tlPH = {
"deleteSessionConfirm":
"Sigurado ka bang gusto mong burahin ang lahat ng record ng pagsasalin para sa session na ito? Hindi na ito maibabalik.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Isalin ang mga Audio File",
"noAudioFiles": "Wala pang mga audio file",
"calculating": "Kinakalkula...",
@ -710,7 +1344,7 @@ const Map<String, String> tlPH = {
"autoInputCode": "Awtomatikong ilagay ang code",
"skipBinding": "Laktawan ang pag-bind",
"rescan": "I-scan muli",
"skip": "Laktawan",
"verifyingDevice": "Bine-verify ang device...",
"confirmBinding": "Kumpirmahin ang pag-bind",
"associatingDevice": "Inuugnay ang device...",
@ -744,12 +1378,17 @@ const Map<String, String> tlPH = {
"pairingFailedRetry": "Nabigo ang pag-pair, pakisubukang muli",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Paki-enable ang Bluetooth',
'deviceDisconnected': 'Nadiskonekta ang device',
'readyToStartPairing': 'Handa nang simulan ang pag-pair',
'checkingEnvironment': 'Sinusuri ang kapaligiran...',
'ensureHeadsetOnAndPairingMode':
'Pakitiyak na naka-on ang headset at nasa pairing mode',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Itinatatag ang secure na koneksyon...',
'needManualBindingAuthCode':
'Kailangan ng manual binding authorization code...',
@ -774,6 +1413,19 @@ const Map<String, String> tlPH = {
'deviceAuthorizationFailedCheckCode':
'Nabigo ang awtorisasyon ng device, pakisuri ang authorization code',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Feedback ng User",
'feedbackInfo': 'Magbigay ng feedback o suhestiyon',
@ -803,6 +1455,13 @@ const Map<String, String> tlPH = {
"connectionFailed": "Nabigo ang Koneksyon",
"retryConnection": "Muling kumonekta",
"ota_updateNow": "I-update Ngayon",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Panatilihing konektado ang device, huwag isara ang app",
"doNotDisconnect": "Huwag idiskonekta",
@ -812,11 +1471,11 @@ const Map<String, String> tlPH = {
"Alisin ang parehong earbuds, at tiyaking parehong may 20% o higit pang baterya",
// 音乐列表页面
"noMusic": "Walang Musika",
"noPlayingMusic": "Walang tumutugtog na musika",
"unknownSong": "Hindi Kilalang Kanta",
"unknownArtist": "Hindi Kilalang Artista",
"playAll": "I-play Lahat",
"noMusic": "Walang Musika", // 暂无音乐
"noPlayingMusic": "Walang tumutugtog na musika", // 暂无播放音乐
"unknownSong": "Hindi Kilalang Kanta", // 未知歌曲
"unknownArtist": "Hindi Kilalang Artista", // 未知歌手
"playAll": "I-play Lahat", // 播放全部
// 语言名称
"中文(简体)": "Chinese (Pinasimple)",
@ -858,4 +1517,23 @@ const Map<String, String> tlPH = {
"乌尔都语": "Urdu",
"波斯语": "Persian",
"斯瓦希里语": "Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> trTR = {
"spanish": "İspanyolca",
"portuguese": "Portekizce",
"traditionalChinese": "Geleneksel Çince",
"traditionalChineseHK": "Geleneksel Çince (Hong Kong)",
"japanese": "Japonca",
"korean": "Korece",
"french": "Fransızca",
@ -100,12 +101,15 @@ const Map<String, String> trTR = {
"usePasswordLogin": "Parolayla Giriş Yap",
// 隐私政策弹窗
"loginDeclaration": "Voitrans Beyanı",
"welcomeToThisApp": "Voitrans'a hoş geldiniz, lütfen dikkatlice okuyun",
"loginDeclaration": "Voitrans Beyanı", // Voitrans 声明
"welcomeToThisApp":
"Voitrans'a hoş geldiniz, lütfen dikkatlice okuyun", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", 'Kabul Et ve Gir' düğmesine tıklamak, yukarıdaki sözleşmeleri tamamen okuduğunuzu ve kabul ettiğinizi gösterir. 'Reddet' düğmesine tıklamak uygulamadan çıkacaktır.",
"disagree": "Reddet",
"agreeAndEnter": "Kabul Et ve Gir",
", 'Kabul Et ve Gir' düğmesine tıklamak, yukarıdaki sözleşmeleri tamamen okuduğunuzu ve kabul ettiğinizi gösterir. 'Reddet' düğmesine tıklamak uygulamadan çıkacaktır.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Reddet", // 不同意
"agreeAndEnter": "Kabul Et ve Gir", // 同意并进入
// 首页
"deviceStatus": "Cihaz Durumu",
@ -183,6 +187,209 @@ const Map<String, String> trTR = {
"usageStats": "Kullanım İstatistikleri",
"usageStatsInfo": "Kullanım istatistiklerinizi görüntüleyin",
"scene": "Senaryo",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Atla",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Toplantıyı Başlat",
@ -197,13 +404,244 @@ const Map<String, String> trTR = {
'aiSummary': 'Yapay Zeka Özeti',
'meetingTranscript': 'Toplantı Metni',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Sistem Ayarları", //系统设置
"vipRecharge": "Premium Üye Recharge", //会员充值
"aiRecharge": "Premium Üye", //AI充值
"translationRecharge": "Çeviri Toplantı Recharge", //翻译充值
"meetingAssistantRecharge": "Toplantı Asistanı Recharge", //会议助手充值
"cloudSync": "Bulut Sincronizasyonu", //云端同步
"systemSettings": "Sistem Ayarları",
"vipRecharge": "Premium Üye Recharge",
"aiRecharge": "Premium Üye",
"translationRecharge": "Çeviri Toplantı Recharge",
"meetingAssistantRecharge": "Toplantı Asistanı Recharge",
"cloudSync": "Bulut Sincronizasyonu",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Bağlı cihaz:",
"accountId": "Hesap Kimliği:",
"systemSetting": "Sistem Ayarları",
@ -216,8 +654,8 @@ const Map<String, String> trTR = {
"lastBackup": "Son yedekleme:",
"privacySettings": "Gizlilik Ayarları",
"privacySettingsInfo": "Veri toplama ve izinleri yönetin",
"permissionManagement": "İzin Yönetimi",
"permissionManagementInfo": "Uygulama izin ayarlarını yönetin",
"permissionManagement": "İzin Yönetimi", // 权限管理
"permissionManagementInfo": "Uygulama izin ayarlarını yönetin", // 管理应用权限设置
"aboutApplication": "Uygulama Hakkında",
"versions": "Sürüm",
"checkUpdates": "Güncellemeleri Kontrol Et",
@ -253,11 +691,10 @@ const Map<String, String> trTR = {
'networkErrorRetry': 'Ağ hatası, lütfen daha sonra tekrar deneyin',
// 设备管理相关
'clearPairedDevices': 'Eşleştirilmiş Cihazları Temizle',
'clearPairedDevicesConfirm':
'Tüm eşleştirilmiş cihazları temizlemek istediğinizden emin misiniz?',
'clearPairedDevicesSuccess': 'Eşleştirilmiş cihazlar başarıyla temizlendi',
'clearPairedDevicesFailed': 'Eşleştirilmiş cihazlar temizlenemedi',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Gerçek Zamanlı Sesli Sohbet",
@ -266,11 +703,20 @@ const Map<String, String> trTR = {
"loading": "Yükleniyor...",
//设备管理页面
"earphone": "Kulaklık",
"voicerecorder": "Ses Kaydedici",
"notBound": "Bağlı Değil",
"deviceNotBoundYet": "Henüz cihaz bağlanmadı",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Bağlantıyı Kaldır",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -299,6 +745,20 @@ const Map<String, String> trTR = {
"loadMoreMessages": "Daha fazla mesaj yükle...",
"loadFailedClickRetry": "Yüklenemedi, yeniden denemek için tıklayın",
"swipeUpForMore": "Daha fazlası için yukarı kaydırın",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage':
@ -322,8 +782,8 @@ const Map<String, String> trTR = {
'startPhoneCallMode': 'Arama modunu başlat, sesli girişi başlat',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Mesajınızı buraya girin...',
'characterCount': '{count} karakter',
'fullScreenEditorHint': 'Mesajınızı buraya girin...', // 全屏编辑器输入提示
'characterCount': '{count} karakter', // 字符计数显示
// 消息长按操作
'copy': 'Kopyala',
@ -332,6 +792,7 @@ const Map<String, String> trTR = {
'submitSuccess': 'Başarıyla gönderildi',
'submitFailed': 'Gönderim başarısız',
'reportSubmitted': 'Şikayetiniz gönderildi, en kısa sürede işleme alacağız',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Zararlı/Güvensiz',
'pornographicVulgar': 'Pornografik/Kaba',
'misleadingAttack': 'Yanıltıcı/Saldırgan',
@ -341,6 +802,7 @@ const Map<String, String> trTR = {
'other': 'Diğer',
'reportDescriptionHint':
'Şikayet nedeninizi öğrenmek istiyoruz, karşılaştığınız sorunu açıklayabilirsiniz.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Yapay Zeka tarafından oluşturuldu',
@ -351,15 +813,15 @@ const Map<String, String> trTR = {
'moreMusic': 'Daha Fazla Müzik',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'saat',
'minutes': 'dakika',
'seconds': 'saniye',
'navigating': 'Navigasyon sürüyor',
'currentLocation': 'Mevcut Konum',
'approximate': 'Yaklaşık',
'enterRoad': 'Yola Gir',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'saat', // 小时单位
'minutes': 'dakika', // 分钟单位
'seconds': 'saniye', // 秒单位
'navigating': 'Navigasyon sürüyor', // 导航状态
'currentLocation': 'Mevcut Konum', // 当前位置
'approximate': 'Yaklaşık', // 大约
'enterRoad': 'Yola Gir', // 进入道路
"driving": "Sürüş",
"walking": "Yürüme",
"bicycling": "Bisiklet",
@ -395,6 +857,17 @@ const Map<String, String> trTR = {
"friday": "Cum",
"saturday": "Cmt",
"sunday": "Paz",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Güneşli",
"partlyCloudy": "Az Bulutlu",
@ -430,6 +903,8 @@ const Map<String, String> trTR = {
'deleteAccount': 'Hesabı Sil',
'deleteAccountTips':
'Hesabınızı kalıcı olarak silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -450,6 +925,8 @@ const Map<String, String> trTR = {
'Sunucu iç hatası, lütfen daha sonra tekrar deneyin',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Resim sıkıştırılamadı',
'avatarUpdateFailed': 'Avatar güncellenemedi',
'usernameCannotBeEmpty': 'Kullanıcı adı boş olamaz',
@ -462,28 +939,44 @@ const Map<String, String> trTR = {
'deleteAccountFailedRetry': 'Hesap silinemedi, lütfen tekrar deneyin',
// 账号服务相关
'clearUserDataFailed': 'Kullanıcı verileri temizlenemedi',
'deleteUserDataFailed': 'Kullanıcı verileri silinemedi',
'thirdPartyLogoutSuccess': 'Üçüncü taraf oturumu başarıyla kapatıldı',
'thirdPartyLogoutFailed': 'Üçüncü taraf oturumu kapatılamadı',
'signOutProcessError': 'Oturum kapatma işlemi sırasında bir hata oluştu',
'deleteAccountProcessError': 'Hesap silme işlemi sırasında bir hata oluştu',
'userDataClearSuccess': 'Kullanıcı verileri başarıyla temizlendi',
'allUserDataClearSuccess': 'Tüm kullanıcı verileri başarıyla temizlendi',
'accountServiceInitialized': 'Hesap Hizmeti başlatıldı',
'clearUserDataFailed': 'Kullanıcı verileri temizlenemedi', // 清理用户数据失败
'deleteUserDataFailed': 'Kullanıcı verileri silinemedi', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Üçüncü taraf oturumu başarıyla kapatıldı', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Üçüncü taraf oturumu kapatılamadı', // 第三方登录退出失败
'signOutProcessError':
'Oturum kapatma işlemi sırasında bir hata oluştu', // 登出过程发生错误
'deleteAccountProcessError':
'Hesap silme işlemi sırasında bir hata oluştu', // 删除账号过程发生错误
'userDataClearSuccess': 'Kullanıcı verileri başarıyla temizlendi', // 用户数据清理成功
'allUserDataClearSuccess':
'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功
'accountServiceInitialized':
'Hesap Hizmeti başlatıldı', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'İzin durumu alınamadı',
'communicationPermissions': 'İletişim İzinleri',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Takvim İzinleri',
'locationPermissions': 'Konum İzinleri',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Takvime Yaz',
'calendarFullAccess': 'Tam Takvim Erişimi',
'locationInfo': 'Konum Bilgisi',
'phonePermissionDesc': 'Telefon arama özelliği için kullanılır',
'smsPermissionDesc': 'SMS gönderme özelliği için kullanılır',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Takvim etkinlikleri ve hatırlatıcılar oluşturmak için kullanılır',
'calendarFullAccessPermissionDesc':
@ -499,27 +992,89 @@ const Map<String, String> trTR = {
'permissionRequestError': 'İzin istenirken hata oluştu',
'phonePermissionDetailDesc': 'Arama özelliği telefon izni gerektirir',
'smsPermissionDetailDesc': 'SMS gönderme özelliği SMS izni gerektirir',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Takvim etkinliği oluşturma takvime yazma izni gerektirir',
'calendarFullAccessPermissionDetailDesc':
'Takvim etkinliklerini yönetme tam takvim erişimi gerektirir',
'locationPermissionDetailDesc': 'Konum bilgisi alma konum izni gerektirir',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Uygulamanın tam işlevsellik için bu izne ihtiyacı var',
'permanentDenialText':
'{permission} iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için uygulama ayarlarına gidin',
'goToSettings': 'Ayarlara Git',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Yeni Sürüm Bulundu',
'remindLater': 'Daha Sonra Hatırlat',
'updateNow': 'Şimdi Güncelle',
'checkUpdate': 'Güncellemeleri Kontrol Et',
'updateFailed': 'Güncelleme Başarısız',
'newVersionFound': 'Yeni Sürüm Bulundu', // 版本更新对话框标题
'remindLater': 'Daha Sonra Hatırlat', // 稍后提醒按钮
'updateNow': 'Şimdi Güncelle', // 立即更新按钮
'checkUpdate': 'Güncellemeleri Kontrol Et', // 检查更新按钮
'updateFailed': 'Güncelleme Başarısız', // 更新失败提示
'cannotOpenAppStore':
'Uygulama mağazası açılamıyor, lütfen güncellemek için manuel olarak gidin',
'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',
'Güncelleme sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin', // 更新错误重试提示
//国家列表
"邮箱": "E-posta",
@ -628,8 +1183,23 @@ const Map<String, String> trTR = {
"东帝汶": "Doğu Timor",
"斐济": "Fiji",
"所罗门群岛": "Solomon Adaları",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Çeviri Geçmişi",
"enableRecording": "Kaydı Etkinleştir",
@ -638,9 +1208,24 @@ const Map<String, String> trTR = {
"phoneUser": "Telefon Kullanıcısı",
"selectSourceLanguage": "Kaynak Dil Seç",
"selectTargetLanguage": "Hedef Dil Seç",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Henüz geçmiş yok",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Geçmişi Temizle",
"clearHistoryConfirm":
"Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
@ -649,7 +1234,58 @@ const Map<String, String> trTR = {
"deleteSessionConfirm":
"Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Ses Dosyalarını Çevir",
"noAudioFiles": "Henüz ses dosyası yok",
"calculating": "Hesaplanıyor...",
@ -695,7 +1331,7 @@ const Map<String, String> trTR = {
"autoInputCode": "Kodu otomatik gir",
"skipBinding": "Bağlamayı Atla",
"rescan": "Yeniden Tara",
"skip": "Atla",
"verifyingDevice": "Cihaz doğrulanıyor...",
"confirmBinding": "Bağlamayı Onayla",
"associatingDevice": "Cihaz ilişkilendiriliyor...",
@ -726,12 +1362,17 @@ const Map<String, String> trTR = {
"pairingFailedRetry": "Eşleştirme başarısız, lütfen tekrar deneyin",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Lütfen Bluetooth\'u etkinleştirin',
'deviceDisconnected': 'Cihaz bağlantısı kesildi',
'readyToStartPairing': 'Eşleştirmeye başlamaya hazır',
'checkingEnvironment': 'Ortam kontrol ediliyor...',
'ensureHeadsetOnAndPairingMode':
'Lütfen kulaklığın açık ve eşleştirme modunda olduğundan emin olun',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Güvenli bağlantı kuruluyor...',
'needManualBindingAuthCode': 'Manuel bağlama yetkilendirme kodu gerekli...',
'pairingSuccessful': 'Eşleştirme başarılı!',
@ -754,6 +1395,19 @@ const Map<String, String> trTR = {
'deviceAuthorizationFailedCheckCode':
'Cihaz yetkilendirmesi başarısız, lütfen yetkilendirme kodunu kontrol edin',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Kullanıcı Geri Bildirimi",
'feedbackInfo': 'Geri bildirim veya öneri sağlayın',
@ -783,6 +1437,13 @@ const Map<String, String> trTR = {
"connectionFailed": "Bağlantı Başarısız",
"retryConnection": "Yeniden Dene",
"ota_updateNow": "Şimdi Güncelle",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Lütfen cihazı bağlı tutun ve uygulamayı kapatmayın",
"doNotDisconnect": "Bağlantıyı kesmeyin",
@ -792,11 +1453,11 @@ const Map<String, String> trTR = {
"Her iki kulaklığı da çıkarın ve pil seviyelerinin %20'un üzerinde olduğundan emin olun",
// 音乐列表页面
"noMusic": "Müzik Yok",
"noPlayingMusic": "Çalan Müzik Yok",
"unknownSong": "Bilinmeyen Şarkı",
"unknownArtist": "Bilinmeyen Sanatçı",
"playAll": "Tümünü Oynat",
"noMusic": "Müzik Yok", // 暂无音乐
"noPlayingMusic": "Çalan Müzik Yok", // 暂无播放音乐
"unknownSong": "Bilinmeyen Şarkı", // 未知歌曲
"unknownArtist": "Bilinmeyen Sanatçı", // 未知歌手
"playAll": "Tümünü Oynat", // 播放全部
// 语言名称
"中文(简体)": "Çince (Basitleştirilmiş)",
@ -838,4 +1499,23 @@ const Map<String, String> trTR = {
"乌尔都语": "Urduca",
"波斯语": "Farsça",
"斯瓦希里语": "Svahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> ukUA = {
"spanish": "Іспанська",
"portuguese": "Португальська",
"traditionalChinese": "Традиційна китайська",
"traditionalChineseHK": "Традиційна китайська (Гонконг)",
"japanese": "Японська",
"korean": "Корейська",
"french": "Французька",
@ -100,13 +101,15 @@ const Map<String, String> ukUA = {
"usePasswordLogin": "Увійти за паролем",
// 隐私政策弹窗
"loginDeclaration": "Декларація Voitrans",
"loginDeclaration": "Декларація Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Ласкаво просимо до Voitrans, будь ласка, уважно прочитайте",
"Ласкаво просимо до Voitrans, будь ласка, уважно прочитайте", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", натискання 'Погодитися та увійти' означає, що ви повністю прочитали та погодилися з вищезазначеними угодами. Натискання 'Не погоджуватися' призведе до виходу з програми.",
"disagree": "Не погоджуватися",
"agreeAndEnter": "Погодитися та увійти",
", натискання 'Погодитися та увійти' означає, що ви повністю прочитали та погодилися з вищезазначеними угодами. Натискання 'Не погоджуватися' призведе до виходу з програми.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Не погоджуватися", // 不同意
"agreeAndEnter": "Погодитися та увійти", // 同意并进入
// 首页
"deviceStatus": "Статус пристрою",
@ -186,6 +189,209 @@ const Map<String, String> ukUA = {
"usageStats": "Статистика використання",
"usageStatsInfo": "Перегляньте статистику використання вашого пристрою",
"scene": "Сценарій",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Пропустити",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Почати зустріч",
@ -200,13 +406,244 @@ const Map<String, String> ukUA = {
'aiSummary': 'Підсумок від AI',
'meetingTranscript': 'Транскрипт зустрічі',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Системні налаштування", //系统设置
"vipRecharge": "Підписатися на премиум-членство", //会员充值
"aiRecharge": "Преміум-учасник", //AI充值
"translationRecharge": "Підписатися на переклад", //翻译充值
"meetingAssistantRecharge": "Підписатися на допомогу з зустрічю", //会议助手充值
"cloudSync": "Увімкнути синхронізацію в хмарі", //云端同步
"systemSettings": "Системні налаштування",
"vipRecharge": "Підписатися на премиум-членство",
"aiRecharge": "Преміум-учасник",
"translationRecharge": "Підписатися на переклад",
"meetingAssistantRecharge": "Підписатися на допомогу з зустрічю",
"cloudSync": "Увімкнути синхронізацію в хмарі",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Підключений пристрій:",
"accountId": "ID облікового запису:",
"systemSetting": "Системні налаштування",
@ -218,8 +655,9 @@ const Map<String, String> ukUA = {
"lastBackup": "Останнє резервне копіювання:",
"privacySettings": "Налаштування конфіденційності",
"privacySettingsInfo": "Керування збором даних та дозволами",
"permissionManagement": "Керування дозволами",
"permissionManagementInfo": "Керування налаштуваннями дозволів програми",
"permissionManagement": "Керування дозволами", // 权限管理
"permissionManagementInfo":
"Керування налаштуваннями дозволів програми", // 管理应用权限设置
"aboutApplication": "Про програму",
"versions": "Версія",
"checkUpdates": "Перевірити оновлення",
@ -254,11 +692,10 @@ const Map<String, String> ukUA = {
'networkErrorRetry': 'Помилка мережі, спробуйте ще раз пізніше',
// 设备管理相关
'clearPairedDevices': 'Очистити список спарених пристроїв',
'clearPairedDevicesConfirm':
'Ви впевнені, що хочете очистити всі спарені пристрої?',
'clearPairedDevicesSuccess': 'Список спарених пристроїв успішно очищено',
'clearPairedDevicesFailed': 'Не вдалося очистити список спарених пристроїв',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Голосовий чат у реальному часі",
@ -267,11 +704,20 @@ const Map<String, String> ukUA = {
"loading": "Завантаження...",
//设备管理页面
"earphone": "Навушники",
"voicerecorder": "Диктофон",
"notBound": "Не прив'язано",
"deviceNotBoundYet": "Пристрій ще не прив'язано",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Відв'язати",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -300,6 +746,20 @@ const Map<String, String> ukUA = {
"loadMoreMessages": "Завантажити більше повідомлень...",
"loadFailedClickRetry": "Не вдалося завантажити, натисніть, щоб повторити",
"swipeUpForMore": "Проведіть пальцем вгору, щоб побачити більше",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Привіт! Я **СяоЯнь**, я можу допомогти вам:\n\n'
@ -322,8 +782,8 @@ const Map<String, String> ukUA = {
'startPhoneCallMode': 'Почати режим дзвінка, почати голосове введення',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Введіть своє повідомлення тут...',
'characterCount': '{count} символів',
'fullScreenEditorHint': 'Введіть своє повідомлення тут...', // 全屏编辑器输入提示
'characterCount': '{count} символів', // 字符计数显示
// 消息长按操作
'copy': 'Копіювати',
@ -332,6 +792,7 @@ const Map<String, String> ukUA = {
'submitSuccess': 'Надіслано успішно',
'submitFailed': 'Не вдалося надіслати',
'reportSubmitted': 'Скаргу надіслано, ми її розглянемо найближчим часом',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Шкідливий/Небезпечний',
'pornographicVulgar': 'Порнографічний/Вульгарний',
'misleadingAttack': 'Вводить в оману/Атака',
@ -341,6 +802,7 @@ const Map<String, String> ukUA = {
'other': 'Інше',
'reportDescriptionHint':
'Ми хочемо знати причину вашої скарги, ви можете описати проблему, з якою зіткнулися.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Згенеровано AI',
@ -351,15 +813,15 @@ const Map<String, String> ukUA = {
'moreMusic': 'Більше музики',
//导航卡片 navigation_card
'kilometers': 'км',
'meters': 'м',
'hours': 'год',
'minutes': 'хв',
'seconds': 'с',
'navigating': 'Навігація',
'currentLocation': 'Поточне місцезнаходження',
'approximate': 'Прибл.',
'enterRoad': 'Виїзд на',
'kilometers': 'км', // 公里单位
'meters': 'м', // 米单位
'hours': 'год', // 小时单位
'minutes': 'хв', // 分钟单位
'seconds': 'с', // 秒单位
'navigating': 'Навігація', // 导航状态
'currentLocation': 'Поточне місцезнаходження', // 当前位置
'approximate': 'Прибл.', // 大约
'enterRoad': 'Виїзд на', // 进入道路
"driving": "Автомобілем",
"walking": "Пішки",
"bicycling": "Велосипедом",
@ -395,6 +857,17 @@ const Map<String, String> ukUA = {
"friday": "Пт",
"saturday": "Сб",
"sunday": "Нд",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Сонячно",
"partlyCloudy": "Мінлива хмарність",
@ -430,6 +903,8 @@ const Map<String, String> ukUA = {
'deleteAccount': 'Видалити обліковий запис',
'deleteAccountTips':
'Ви впевнені, що хочете назавжди видалити свій обліковий запис? Цю дію неможливо скасувати',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -451,6 +926,8 @@ const Map<String, String> ukUA = {
'Внутрішня помилка сервера, спробуйте ще раз пізніше',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Не вдалося стиснути зображення',
'avatarUpdateFailed': 'Не вдалося оновити аватар',
'usernameCannotBeEmpty': "Ім'я користувача не може бути порожнім",
@ -464,29 +941,44 @@ const Map<String, String> ukUA = {
'Не вдалося видалити обліковий запис, спробуйте ще раз',
// 账号服务相关
'clearUserDataFailed': 'Не вдалося очистити дані користувача',
'deleteUserDataFailed': 'Не вдалося видалити дані користувача',
'thirdPartyLogoutSuccess': 'Вихід зі стороннього сервісу успішний',
'thirdPartyLogoutFailed': 'Не вдалося вийти зі стороннього сервісу',
'signOutProcessError': 'Сталася помилка під час виходу з системи',
'clearUserDataFailed': 'Не вдалося очистити дані користувача', // 清理用户数据失败
'deleteUserDataFailed': 'Не вдалося видалити дані користувача', // 删除用户数据失败
'thirdPartyLogoutSuccess':
'Вихід зі стороннього сервісу успішний', // 第三方登录退出成功
'thirdPartyLogoutFailed':
'Не вдалося вийти зі стороннього сервісу', // 第三方登录退出失败
'signOutProcessError': 'Сталася помилка під час виходу з системи', // 登出过程发生错误
'deleteAccountProcessError':
'Сталася помилка під час видалення облікового запису',
'userDataClearSuccess': 'Дані користувача успішно очищено',
'allUserDataClearSuccess': 'Усі дані користувача успішно очищено',
'accountServiceInitialized': 'Службу облікових записів ініціалізовано',
'Сталася помилка під час видалення облікового запису', // 删除账号过程发生错误
'userDataClearSuccess': 'Дані користувача успішно очищено', // 用户数据清理成功
'allUserDataClearSuccess':
'Усі дані користувача успішно очищено', // 所有用户数据清理成功
'accountServiceInitialized':
'Службу облікових записів ініціалізовано', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Не вдалося отримати статус дозволів',
'communicationPermissions': 'Дозволи на зв\'язок',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Дозволи календаря',
'locationPermissions': 'Дозволи на місцезнаходження',
'phone': 'Телефон',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Запис до календаря',
'calendarFullAccess': 'Повний доступ до календаря',
'locationInfo': 'Інформація про місцезнаходження',
'phonePermissionDesc': 'Використовується для здійснення дзвінків',
'smsPermissionDesc': 'Використовується для надсилання SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc':
'Використовується для створення подій та нагадувань у календарі',
'calendarFullAccessPermissionDesc':
@ -505,28 +997,90 @@ const Map<String, String> ukUA = {
'Для функції дзвінків потрібен дозвіл на доступ до телефону',
'smsPermissionDetailDesc':
'Для функції надсилання SMS потрібен дозвіл на доступ до SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Для створення подій у календарі потрібен дозвіл на запис до календаря',
'calendarFullAccessPermissionDetailDesc':
'Для керування подіями у календарі потрібен повний доступ до календаря',
'locationPermissionDetailDesc':
'Для отримання інформації про місцезнаходження потрібен дозвіл на доступ до місцезнаходження',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Програмі потрібен цей дозвіл для надання повної функціональності',
'permanentDenialText':
'Ви назавжди відмовили в доступі до {permission}, будь ласка, перейдіть до налаштувань програми, щоб увімкнути його',
'goToSettings': 'Перейти до налаштувань',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Знайдено нову версію',
'remindLater': 'Нагадати пізніше',
'updateNow': 'Оновити зараз',
'checkUpdate': 'Перевірити оновлення',
'updateFailed': 'Не вдалося оновити',
'newVersionFound': 'Знайдено нову версію', // 版本更新对话框标题
'remindLater': 'Нагадати пізніше', // 稍后提醒按钮
'updateNow': 'Оновити зараз', // 立即更新按钮
'checkUpdate': 'Перевірити оновлення', // 检查更新按钮
'updateFailed': 'Не вдалося оновити', // 更新失败提示
'cannotOpenAppStore':
'Не вдається відкрити App Store, будь ласка, перейдіть до App Store вручну, щоб оновити',
'Не вдається відкрити App Store, будь ласка, перейдіть до App Store вручну, щоб оновити', // 无法打开应用商店提示
'updateErrorRetry':
'Сталася помилка під час оновлення, спробуйте ще раз пізніше',
'Сталася помилка під час оновлення, спробуйте ще раз пізніше', // 更新错误重试提示
//国家列表
"邮箱": "Email",
@ -635,8 +1189,23 @@ const Map<String, String> ukUA = {
"东帝汶": "Східний Тимор",
"斐济": "Фіджі",
"所罗门群岛": "Соломонові Острови",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Історія перекладів",
"enableRecording": "Увімкнути запис",
@ -645,9 +1214,24 @@ const Map<String, String> ukUA = {
"phoneUser": "Користувач телефону",
"selectSourceLanguage": "Вибрати вихідну мову",
"selectTargetLanguage": "Вибрати цільову мову",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Історія відсутня",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Очистити історію",
"clearHistoryConfirm":
"Ви впевнені, що хочете очистити всю історію перекладів? Цю дію неможливо скасувати.",
@ -656,7 +1240,58 @@ const Map<String, String> ukUA = {
"deleteSessionConfirm":
"Ви впевнені, що хочете видалити всі записи перекладів цієї сесії? Цю дію неможливо скасувати.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Перекласти аудіофайли",
"noAudioFiles": "Аудіофайли відсутні",
"calculating": "Обчислення...",
@ -702,7 +1337,7 @@ const Map<String, String> ukUA = {
"autoInputCode": "Автоматичне введення коду",
"skipBinding": "Пропустити прив'язку",
"rescan": "Повторне сканування",
"skip": "Пропустити",
"verifyingDevice": "Перевірка пристрою...",
"confirmBinding": "Підтвердити прив'язку",
"associatingDevice": "Асоціація пристрою...",
@ -734,12 +1369,17 @@ const Map<String, String> ukUA = {
"pairingFailedRetry": "Не вдалося спарити, спробуйте ще раз",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Будь ласка, увімкніть Bluetooth',
'deviceDisconnected': 'Пристрій відключено',
'readyToStartPairing': 'Готово до початку спарювання',
'checkingEnvironment': 'Перевірка середовища...',
'ensureHeadsetOnAndPairingMode':
'Переконайтеся, що навушники увімкнені та знаходяться в режимі спарювання',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Встановлення безпечного з\'єднання...',
'needManualBindingAuthCode':
'Потрібен код авторизації для ручної прив\'язки...',
@ -763,6 +1403,19 @@ const Map<String, String> ukUA = {
'deviceAuthorizationFailedCheckCode':
'Помилка авторизації пристрою, перевірте код авторизації',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Відгук користувача",
'feedbackInfo': 'Надати відгук або пропозицію',
@ -791,6 +1444,13 @@ const Map<String, String> ukUA = {
"connectionFailed": "Помилка підключення",
"retryConnection": "Повторити підключення",
"ota_updateNow": "Оновити зараз",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Будь ласка, тримайте пристрій підключеним, не закривайте програму",
"doNotDisconnect": "Будь ласка, не відключайте",
@ -800,11 +1460,11 @@ const Map<String, String> ukUA = {
"Вийміть обидва навушники та переконайтеся, що заряд батареї в обох перевищує 20%",
// 音乐列表页面
"noMusic": "Немає музики",
"noPlayingMusic": "Немає відтворюваної музики",
"unknownSong": "Невідома пісня",
"unknownArtist": "Невідомий виконавець",
"playAll": "Відтворити все",
"noMusic": "Немає музики", // 暂无音乐
"noPlayingMusic": "Немає відтворюваної музики", // 暂无播放音乐
"unknownSong": "Невідома пісня", // 未知歌曲
"unknownArtist": "Невідомий виконавець", // 未知歌手
"playAll": "Відтворити все", // 播放全部
// 语言名称
"中文(简体)": "Китайська (спрощена)",
@ -846,4 +1506,23 @@ const Map<String, String> ukUA = {
"乌尔都语": "Урду",
"波斯语": "Перська",
"斯瓦希里语": "Свахілі",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> viVN = {
"spanish": "Tiếng Tây Ban Nha",
"portuguese": "Tiếng Bồ Đào Nha",
"traditionalChinese": "Tiếng Trung (Phồn thể)",
"traditionalChineseHK": "Tiếng Trung phồn thể (Hồng Kông)",
"japanese": "Tiếng Nhật",
"korean": "Tiếng Hàn",
"french": "Tiếng Pháp",
@ -99,12 +100,15 @@ const Map<String, String> viVN = {
"usePasswordLogin": "Đăng nhập bằng mật khẩu",
// 隐私政策弹窗
"loginDeclaration": "Tuyên bố của Voitrans",
"welcomeToThisApp": "Chào mừng bạn đến với Voitrans, vui lòng đọc kỹ",
"loginDeclaration": "Tuyên bố của Voitrans", // Voitrans 声明
"welcomeToThisApp":
"Chào mừng bạn đến với Voitrans, vui lòng đọc kỹ", // 欢迎使用Voitrans,请充分阅读
// "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键
// "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键
"privacyPolicyText":
", nhấn 'Đồng ý và vào' có nghĩa là bạn đã đọc kỹ và đồng ý với các thỏa thuận trên. Nhấn 'Không đồng ý' sẽ thoát khỏi ứng dụng.",
"disagree": "Không đồng ý",
"agreeAndEnter": "Đồng ý và vào",
", nhấn 'Đồng ý và vào' có nghĩa là bạn đã đọc kỹ và đồng ý với các thỏa thuận trên. Nhấn 'Không đồng ý' sẽ thoát khỏi ứng dụng.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。
"disagree": "Không đồng ý", // 不同意
"agreeAndEnter": "Đồng ý và vào", // 同意并进入
// 首页
"deviceStatus": "Trạng thái thiết bị",
@ -182,6 +186,209 @@ const Map<String, String> viVN = {
"usageStats": "Thống kê sử dụng",
"usageStatsInfo": "Xem thống kê sử dụng của bạn",
"scene": "Tình huống",
// 用量统计模块
"aiChat": "AI Chat",
"translationStats": "Translation Statistics",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"translationCount": "Translation Count",
"sessionDuration": "Session Duration",
"characters": "Characters",
"recordingDuration": "Recording Duration",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"translationApi": "Translation API",
"asr": "ASR",
"tts": "TTS",
//"aiSummary": "AI摘要",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
// 通知文案
"loadFailed": "Load Failed",
"statsLoadFailedTryLater":
"Statistics failed to load. Please try again later.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
// 商品页面(AI/翻译/会议)
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
// AI 功能卡片
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
// 翻译功能卡片
'realtimeTranscription': 'Real-time Transcription',
// 'textTranslation' 已存在
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
// 会议功能卡片
'meetingRecording': 'Meeting Recording',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
// 商品名称(按ID)
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 会议商品页描述
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'meetingAutoRecording': 'Auto recording and segmentation',
'meetingSpeakerTagging': 'Speaker labeling',
'meetingLongAudioTranscription': 'Long audio transcription',
'meetingKeyPointSummary': 'Key point extraction',
'meetingTopicNameSearch': 'Search by topic/name',
'meetingTimelineJump': 'Timeline jump',
'meetingExportSummary': 'Export minutes',
'meetingMultiPlatformShare': 'Share across platforms',
'meetingDisclaimer':
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'routePlanningAndCongestionAvoidance':
'Route planning and congestion avoidance',
'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings',
'realTimeWeatherForecast': 'Real-time weather and forecast',
'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders',
'poiSearchFoodGasParking': 'POI search: dining / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing',
'hotNewsAndTopicOverview': 'Hot news and topic overview',
'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points',
'helpCallAndSMS': 'Help with calls and SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'aiDisclaimer':
'Features depend on device permissions, service availability, and network conditions.',
// 会员商品页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
// 新手引导 / Onboarding
'skip': "Bỏ qua",
'next': 'Next',
'sayLilyHint': 'Say "Lily Lily" to the mic',
'imHere': 'I’m here~',
'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.',
'aiReplyCompleted': 'Lily has finished the reply!',
'aiThinking': 'Lily is thinking…',
'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.',
'confirmInput': 'Confirm Input',
'guideClickSendPrefix': 'Tap send, ',
// AI 引导步骤
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
// 商务会议助手页
"startMeeting": "Bắt đầu cuộc họp",
@ -196,13 +403,244 @@ const Map<String, String> viVN = {
'aiSummary': 'Tóm tắt AI',
'meetingTranscript': 'Bản ghi cuộc họp',
// Meeting模块 - 导航和基础功能
'files': 'Files',
'mine': 'Mine',
'connect': 'Connect',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'bluetoothConnection': 'Bluetooth Connection',
'meetingReconnect': 'Reconnect',
'searching': 'Searching...',
'searchFailed': 'Search failed, please check if Bluetooth is enabled',
'aiPenNotFound': 'AI PEN device not found',
'connectedToAiPen': 'Connected to AI PEN device',
'checkingNewFiles': 'Checking for new files to import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'connectingWifi': 'Connecting to Wi-Fi...',
'wifiConnected': 'Wi-Fi connected successfully',
'downloadingFiles': 'Downloading files...',
'downloadingFileProgress': 'Total {total} files, downloading file {current}',
'downloadComplete': 'Download complete',
'downloadCompleteInfo':
'Download complete, {count} files in total, returning automatically in 2 seconds',
// Meeting模块 - 录音功能
'startRecording': 'Start Recording',
'liveRecording': 'Live Recording',
'audioVideoRecording': 'Audio/Video Recording',
'callRecording': 'Call Recording',
'importAudio': 'Import Audio',
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
//'generating': '正在生成...',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Transcription Records',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Enabled',
'disabled': 'Disabled',
'myVoitransDevice': 'My VOITRANS Device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership',
'unlockNow': 'Unlock Now',
// Meeting模块 - 会员功能
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'askAiDesc':
'Intelligently extract deeper information from recordings, generate data tables, key discussion conclusions, To-Do lists, report emails and other formatted content with one click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'speakerIdentificationDesc':
'Audio transcription will support speaker identification, more intuitively restore meeting or phone call content. At the same time, the summary will be more accurate.',
'privateCloudSyncDesc':
'Your recordings and transcriptions will be securely stored on dedicated cloud servers, with full encryption during upload and download to ensure privacy and security.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'multipleExportFormatsDesc':
'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.',
// Meeting模块 - 升级会员
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
// Meeting模块 - 模版和生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'viewAll': 'View All',
'recordingLanguage': 'Recording Language',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.',
// Meeting模块 - 文件操作和状态
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importingLocalRecordings': 'Importing local recordings...',
'importFailed': 'Import file failed: {filePath}, error: {error}',
'importSuccess': 'Successfully imported {count} local recordings',
'importError': 'Import failed: {error}',
'pleaseSelectAudioFile': 'Please select audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareFailed': 'Share failed: {error}',
'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}',
// 翻译模块 - Meeting相关
'meetingUnknownLanguage': 'Unknown Language',
// 权限相关 - Meeting相关
'meetingStoragePermission': 'Storage',
'meetingStoragePermissionExplanation':
'We need access to storage permissions so you can select and upload audio files.',
'meetingStoragePermissionPermanentDenial':
'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.',
// Meeting模块 - 思维导图相关
'shareMindMap': 'Share Mind Map',
'shareSuccess': 'Share Success',
// Meeting模块 - AI相关
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
// Meeting模块 - 更多操作相关
'reSummarize': 'Re-summarize',
// Meeting模块 - 录音语言相关
'recordLanguage': 'Recording Language',
// 'chinese': '中文普通话(简体)',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
// 'english': '英文',
// 'japanese': '日语',
// 'korean': '韩语',
// 'french': '法语',
// 'spanish': '西班牙语',
// 'portuguese': '葡萄牙语',
// 'indonesian': '印尼语',
// Meeting模块 - 分享相关
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
// Meeting模块 - 发言者相关
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步相关
'syncToCloud': 'Sync to Cloud',
'syncToCloudTip':
'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Transcription Record',
// Meeting模块 - 总结页面相关
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
// 设置页
"systemSettings": "Cài đặt hệ thống", //系统设置
"vipRecharge": "Nạp lại dịch vụ Premium", //会员充值
"aiRecharge": "Thành viên Premium", //AI充值
"translationRecharge": "Nạp lại dịch vụ dịch", //翻译充值
"meetingAssistantRecharge": "Nạp lại dịch vụ hỗ trợ họp", //会议助手充值
"cloudSync": "Chuyển đổi đồng bộ hóa đám mây", //云端同步
"systemSettings": "Cài đặt hệ thống",
"vipRecharge": "Nạp lại dịch vụ Premium",
"aiRecharge": "Thành viên Premium",
"translationRecharge": "Nạp lại dịch vụ dịch",
"meetingAssistantRecharge": "Nạp lại dịch vụ hỗ trợ họp",
"cloudSync": "Chuyển đổi đồng bộ hóa đám mây",
"memberService": "Member Service",
"bindRewardTitle": "Rewards",
"bindRewardSimpleDesc":
"First bind device reward has been issued. Tap OK to close.",
"joinDevice": "Thiết bị đã kết nối:",
"accountId": "ID tài khoản:",
"systemSetting": "Cài đặt hệ thống",
@ -214,8 +652,8 @@ const Map<String, String> viVN = {
"lastBackup": "Lần sao lưu cuối:",
"privacySettings": "Cài đặt bảo mật",
"privacySettingsInfo": "Quản lý thu thập dữ liệu và quyền",
"permissionManagement": "Quản lý quyền",
"permissionManagementInfo": "Quản lý cài đặt quyền của ứng dụng",
"permissionManagement": "Quản lý quyền", // 权限管理
"permissionManagementInfo": "Quản lý cài đặt quyền của ứng dụng", // 管理应用权限设置
"aboutApplication": "Về ứng dụng",
"versions": "Phiên bản",
"checkUpdates": "Kiểm tra cập nhật",
@ -250,11 +688,10 @@ const Map<String, String> viVN = {
'networkErrorRetry': 'Lỗi mạng, vui lòng thử lại sau',
// 设备管理相关
'clearPairedDevices': 'Xóa thiết bị đã ghép nối',
'clearPairedDevicesConfirm':
'Bạn có chắc chắn muốn xóa tất cả các thiết bị đã ghép nối không?',
'clearPairedDevicesSuccess': 'Xóa thiết bị đã ghép nối thành công',
'clearPairedDevicesFailed': 'Xóa thiết bị đã ghép nối thất bại',
// 'clearPairedDevices': '清除配对设备',
// 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?',
// 'clearPairedDevicesSuccess': '清除配对设备成功',
// 'clearPairedDevicesFailed': '清除配对设备失败',
// 设置页面 - 实时语音对话
"realtimeVoiceChat": "Trò chuyện giọng nói thời gian thực",
@ -263,11 +700,20 @@ const Map<String, String> viVN = {
"loading": "Đang tải...",
//设备管理页面
"earphone": "Tai nghe",
"voicerecorder": "Máy ghi âm",
"notBound": "Chưa liên kết",
"deviceNotBoundYet": "Chưa liên kết thiết bị",
"deviceTypeUnknown": "Unknown Device",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeSmartVoiceRecorder": "Smart Voice Recorder",
"deviceTypeSmartEye": "Smart Glasses",
"unbind": "Hủy liên kết",
"noDevicesBound": "No devices bound yet",
"pleaseBindDeviceFirst": "Please bind a device first to manage",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage":
"Are you sure you want to unbind device \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
//Agent 模块
// agent View
@ -296,6 +742,20 @@ const Map<String, String> viVN = {
"loadMoreMessages": "Tải thêm tin nhắn...",
"loadFailedClickRetry": "Tải thất bại, nhấn để thử lại",
"swipeUpForMore": "Vuốt lên để xem thêm",
"callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等!
"voice_interrupt": "Interrupt", // 语音打断
// 预设提示词
"presetMusic": "Play some music", // 来点音乐
"presetNavigation": "Navigation to", // 导航
"presetWeather": "Today's weather", // 今日天气
"presetNews": "Today's news", // 今日新闻
"presetFood": "Nearby food", // 美食
"playSomeMusic": "Play some popular music", // 播放一些流行音乐
"navigationTo": "Please help me navigate to", // 导航到
"todayWeather": "How's the weather today?", // 今日天气
"todayNews": "What's the news today?", // 今日新闻
"nearbyFood": "What delicious food is nearby?", // 美食
// Agent controller
'welcomeMessage': 'Chào bạn! Tôi là **Lily**, tôi có thể giúp bạn:\n\n'
@ -319,8 +779,8 @@ const Map<String, String> viVN = {
'Bắt đầu chế độ gọi điện, bắt đầu nhập liệu bằng giọng nói',
// Agent 全屏编辑器
'fullScreenEditorHint': 'Nhập tin nhắn của bạn ở đây...',
'characterCount': '{count} ký tự',
'fullScreenEditorHint': 'Nhập tin nhắn của bạn ở đây...', // 全屏编辑器输入提示
'characterCount': '{count} ký tự', // 字符计数显示
// 消息长按操作
'copy': 'Sao chép',
@ -329,6 +789,7 @@ const Map<String, String> viVN = {
'submitSuccess': 'Gửi thành công',
'submitFailed': 'Gửi thất bại',
'reportSubmitted': 'Báo cáo đã được gửi, chúng tôi sẽ xử lý sớm',
//'networkError': '网络错误,请稍后重试',
'harmfulUnsafe': 'Có hại/Không an toàn',
'pornographicVulgar': 'Khiêu dâm/Thô tục',
'misleadingAttack': 'Gây hiểu lầm/Tấn công',
@ -338,6 +799,7 @@ const Map<String, String> viVN = {
'other': 'Khác',
'reportDescriptionHint':
'Chúng tôi muốn biết lý do bạn báo cáo, bạn có thể mô tả vấn đề bạn gặp phải.',
//'submit': '提交',
//Message_bubble
'generatedByAi': 'Được tạo bởi AI',
@ -348,15 +810,15 @@ const Map<String, String> viVN = {
'moreMusic': 'Thêm nhạc',
//导航卡片 navigation_card
'kilometers': 'km',
'meters': 'm',
'hours': 'giờ',
'minutes': 'phút',
'seconds': 'giây',
'navigating': 'Đang điều hướng',
'currentLocation': 'Vị trí hiện tại',
'approximate': 'Khoảng',
'enterRoad': 'Vào đường',
'kilometers': 'km', // 公里单位
'meters': 'm', // 米单位
'hours': 'giờ', // 小时单位
'minutes': 'phút', // 分钟单位
'seconds': 'giây', // 秒单位
'navigating': 'Đang điều hướng', // 导航状态
'currentLocation': 'Vị trí hiện tại', // 当前位置
'approximate': 'Khoảng', // 大约
'enterRoad': 'Vào đường', // 进入道路
"driving": "Lái xe",
"walking": "Đi bộ",
"bicycling": "Đi xe đạp",
@ -391,6 +853,17 @@ const Map<String, String> viVN = {
"friday": "Thứ 6",
"saturday": "Thứ 7",
"sunday": "Chủ nhật",
// 首次绑定奖励弹窗(英文文案,保持一致性)
"firstBindRewardTitle": "Welcome Reward",
"firstBindRewardDesc": "You've received binding rewards.",
"vipLevelLabel": "VIP Level:",
"expiryLabel": "Expiration:",
"notActivated": "Not activated",
"aiChatCreditsLabel": "AI Chat Credits:",
"translationCreditsLabel": "Translation Credits:",
"meetingCreditsLabel": "Meeting Credits:",
"ok": "OK",
// 天气描述
"sunny": "Nắng",
"partlyCloudy": "Ít mây",
@ -427,6 +900,8 @@ const Map<String, String> viVN = {
'deleteAccount': 'Xóa tài khoản',
'deleteAccountTips':
'Bạn có chắc chắn muốn xóa vĩnh viễn tài khoản của mình không? Thao tác này không thể hoàn tác',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
// Profile 错误信息
'networkConnectionFailed':
@ -446,6 +921,8 @@ const Map<String, String> viVN = {
'serverInternalErrorRetryLater': 'Lỗi nội bộ máy chủ, vui lòng thử lại sau',
// Profile 用户交互
//'error': '错误',
//'success': '成功',
'imageCompressionFailed': 'Nén hình ảnh thất bại',
'avatarUpdateFailed': 'Cập nhật ảnh đại diện thất bại',
'usernameCannotBeEmpty': 'Tên người dùng không được để trống',
@ -458,28 +935,42 @@ const Map<String, String> viVN = {
'deleteAccountFailedRetry': 'Xóa tài khoản thất bại, vui lòng thử lại',
// 账号服务相关
'clearUserDataFailed': 'Xóa dữ liệu người dùng thất bại',
'deleteUserDataFailed': 'Xóa dữ liệu người dùng thất bại',
'thirdPartyLogoutSuccess': 'Đăng xuất bên thứ ba thành công',
'thirdPartyLogoutFailed': 'Đăng xuất bên thứ ba thất bại',
'signOutProcessError': 'Đã xảy ra lỗi trong quá trình đăng xuất',
'deleteAccountProcessError': 'Đã xảy ra lỗi trong quá trình xóa tài khoản',
'userDataClearSuccess': 'Xóa dữ liệu người dùng thành công',
'allUserDataClearSuccess': 'Tất cả dữ liệu người dùng đã được xóa thành công',
'accountServiceInitialized': 'AccountService đã được khởi tạo',
'clearUserDataFailed': 'Xóa dữ liệu người dùng thất bại', // 清理用户数据失败
'deleteUserDataFailed': 'Xóa dữ liệu người dùng thất bại', // 删除用户数据失败
'thirdPartyLogoutSuccess': 'Đăng xuất bên thứ ba thành công', // 第三方登录退出成功
'thirdPartyLogoutFailed': 'Đăng xuất bên thứ ba thất bại', // 第三方登录退出失败
'signOutProcessError': 'Đã xảy ra lỗi trong quá trình đăng xuất', // 登出过程发生错误
'deleteAccountProcessError':
'Đã xảy ra lỗi trong quá trình xóa tài khoản', // 删除账号过程发生错误
'userDataClearSuccess': 'Xóa dữ liệu người dùng thành công', // 用户数据清理成功
'allUserDataClearSuccess':
'Tất cả dữ liệu người dùng đã được xóa thành công', // 所有用户数据清理成功
'accountServiceInitialized':
'AccountService đã được khởi tạo', // AccountService 已初始化
// 权限管理页面
'getPermissionStatusFailed': 'Lấy trạng thái quyền thất bại',
'communicationPermissions': 'Quyền giao tiếp',
'bluetoothPermissions': 'Bluetooth Permissions',
'notificationPermissions': 'Notification Permissions',
'storagePermissions': 'Storage Permissions',
'microphonePermissions': 'Microphone Permissions',
'alarmPermissions': 'Alarm Permissions',
'calendarPermissions': 'Quyền lịch',
'locationPermissions': 'Quyền vị trí',
'phone': 'Điện thoại',
'sms': 'SMS',
'contacts': 'Contacts',
//'bluetooth': '蓝牙',
'notification': 'Notification',
'alarm': 'Alarm',
'calendarWrite': 'Ghi lịch',
'calendarFullAccess': 'Truy cập lịch đầy đủ',
'locationInfo': 'Thông tin vị trí',
'phonePermissionDesc': 'Dùng cho chức năng gọi điện thoại',
'smsPermissionDesc': 'Dùng cho chức năng gửi SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'calendarWritePermissionDesc': 'Dùng để tạo sự kiện và lời nhắc trên lịch',
'calendarFullAccessPermissionDesc':
'Dùng để đọc và quản lý các sự kiện và lời nhắc trên lịch',
@ -495,28 +986,90 @@ const Map<String, String> viVN = {
'phonePermissionDetailDesc':
'Chức năng gọi điện cần quyền truy cập điện thoại',
'smsPermissionDetailDesc': 'Chức năng gửi SMS cần quyền truy cập SMS',
'alarmPermissionDetailDesc':
'This permission is required to set exact alarms and ensure reminders trigger on time',
'calendarWritePermissionDetailDesc':
'Tạo sự kiện lịch cần quyền ghi vào lịch',
'calendarFullAccessPermissionDetailDesc':
'Quản lý sự kiện lịch cần quyền truy cập lịch đầy đủ',
'locationPermissionDetailDesc':
'Lấy thông tin vị trí cần quyền truy cập vị trí',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDetailDesc':
'Phone call and SMS functionality requires contacts permission to select contacts',
'bluetoothPermissionDesc':
'Used for connecting and managing Bluetooth devices',
'bluetoothPermissionDetailDesc':
'Connecting to Bluetooth headphones and other devices requires Bluetooth permission',
'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices',
'bluetoothScanPermissionDetailDesc':
'Scanning for nearby Bluetooth devices requires Bluetooth scan permission',
'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices',
'bluetoothConnectPermissionDetailDesc':
'Connecting to Bluetooth devices requires Bluetooth connect permission',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDetailDesc':
'App needs notification permission to send you important alerts and messages',
'appNeedsPermissionForFullFunction':
'Ứng dụng cần quyền này để cung cấp đầy đủ chức năng',
'permanentDenialText':
'Bạn đã từ chối vĩnh viễn quyền {permission}, vui lòng vào cài đặt ứng dụng để bật',
'goToSettings': 'Đi đến cài đặt',
// 权限申请
'bluetoothScan': 'Bluetooth Scan',
'bluetoothConnect': 'Bluetooth Connect',
'bluetoothScanExplanation':
'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.',
'bluetoothConnectExplanation':
'The app needs Bluetooth connect permission to connect to Bluetooth devices.',
'locationForBluetoothExplanation':
'The app needs location permission to scan Bluetooth devices.',
'bluetoothScanPermanentDenial':
'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.',
'bluetoothConnectPermanentDenial':
'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.',
'locationPermanentDenial':
'Location permission has been permanently denied, please go to settings to enable it manually.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermissionExplanation':
'Notification permission is required to display music playback status.',
'locationPermissionExplanation':
'Location permission is required to get current location.',
'notificationPermissionPermanentDenial':
'You have permanently denied notification permission, please go to settings to enable it.',
'locationPermissionPermanentDenial':
'You have permanently denied location permission, please go to settings to enable it.',
//'microphonePermission': '录音',
'storagePermission': 'Storage',
'microphonePermissionExplanation':
'We need microphone permission to record audio content.',
'storagePermissionExplanation':
'We need storage permission so you can select and upload audio files.',
'microphonePermissionPermanentDenial':
'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.',
'storagePermissionPermanentDenial':
'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.',
//permission_util.dart
'permissionUtilNeed': 'Need ',
'permissionUtilPermission': ' Permission',
'permissionUtilRestricted': ' Permission Restricted',
'permissionUtilRestrictedMessage':
'This feature is unavailable or restricted on the current device, please check device settings or system restrictions',
'permissionUtilConfirm': 'OK',
// 版本更新对话框
'newVersionFound': 'Đã tìm thấy phiên bản mới',
'remindLater': 'Nhắc lại sau',
'updateNow': 'Cập nhật ngay',
'checkUpdate': 'Kiểm tra cập nhật',
'updateFailed': 'Cập nhật thất bại',
'newVersionFound': 'Đã tìm thấy phiên bản mới', // 版本更新对话框标题
'remindLater': 'Nhắc lại sau', // 稍后提醒按钮
'updateNow': 'Cập nhật ngay', // 立即更新按钮
'checkUpdate': 'Kiểm tra cập nhật', // 检查更新按钮
'updateFailed': 'Cập nhật thất bại', // 更新失败提示
'cannotOpenAppStore':
'Không thể mở App Store, vui lòng vào App Store để cập nhật thủ công',
'Không thể mở App Store, vui lòng vào App Store để cập nhật thủ công', // 无法打开应用商店提示
'updateErrorRetry':
'Đã xảy ra lỗi trong quá trình cập nhật, vui lòng thử lại sau',
'Đã xảy ra lỗi trong quá trình cập nhật, vui lòng thử lại sau', // 更新错误重试提示
//国家列表
"邮箱": "Email",
@ -625,8 +1178,23 @@ const Map<String, String> viVN = {
"东帝汶": "Timor-Leste",
"斐济": "Fiji",
"所罗门群岛": "Quần đảo Solomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
// 翻译模块
// 翻译中间层 (translation_middleware_view.dart)
"pictureTranslation": "Picture Translation",
"textTranslation": "Text Translation",
// 翻译主页 (translation_view.dart)
"translationHistory": "Lịch sử dịch",
"enableRecording": "Bật ghi âm",
@ -635,9 +1203,24 @@ const Map<String, String> viVN = {
"phoneUser": "Người dùng điện thoại",
"selectSourceLanguage": "Chọn ngôn ngữ nguồn",
"selectTargetLanguage": "Chọn ngôn ngữ đích",
"me": "Me",
"counterPart": "Counterpart",
"bluetoothCallStateError":
"Please make sure the Bluetooth headset is connected to the phone and in a call state",
// 通用对话按钮与选项(用于统一语言选择弹窗等)
// 以下翻译键的中文文本内容如注释所示
"autoDetect": "Auto Detect", // 自动检测
// 文本翻译与语种检测
"languageDetectionFailed": "Language detection failed",
"translationFailed": "Translation failed",
"pleaseInputText": "Please input text",
"textTooLong": "Text too long, max 5000 characters",
// 翻译历史页 (translation_history_view.dart)
// 翻译历史页
"noTranslationHistory": "Chưa có lịch sử",
"historyRecords": "History Records",
"clearResults": "Clear Results",
"clearHistory": "Xóa lịch sử",
"clearHistoryConfirm":
"Bạn có chắc muốn xóa toàn bộ lịch sử dịch không? Thao tác này không thể hoàn tác.",
@ -646,7 +1229,58 @@ const Map<String, String> viVN = {
"deleteSessionConfirm":
"Bạn có chắc muốn xóa tất cả các bản ghi dịch của phiên này không? Thao tác này không thể hoàn tác.",
// 翻译录音文件列表页 (translation_list_view.dart)
// 图片翻译模块(Picture Translation)
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"translationResult": "Translation Result",
"recognitionResult": "Recognition Result",
"translatedImagePreview": "Translated Image Preview",
"translatedImageLoadFailed": "Failed to load translated image",
"pleaseSelectImage": "Please select an image",
"imageLoadFailed": "Image load failed",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"pleaseSelectImageToStart": "Please select an image to start",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"callingImageTranslateService": "Calling image translation service...",
"savingRecord": "Saving Record",
"savingTranslationResult": "Saving translation result...",
"translationCompleted": "Translation Completed",
"allStepsCompleted": "All steps completed",
"processingFailed": "Processing Failed",
"imageProcessingOrTranslationFailed":
"Image processing or translation failed. Please retry.\nError: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"emptyTranslationResult": "Image translation API returned empty result",
"imageTranslationFailedTryLater":
"Image translation failed. Network issue or rate limit. Please try later",
"imageTranslationApiException":
"Image translation API exception. Check network and retry",
"permissionRequired": "Permission Required",
"cameraPermissionRequired": "Camera permission required to take photos",
"photoAlbumPermissionRequired":
"Photo album permission required to pick images",
"translationDetails": "Translation Details",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"translationTime": "Translation Time",
"shareInDevelopment": "Sharing feature under development",
// 翻译录音文件列表页
"translateAudioFiles": "Dịch tệp âm thanh",
"noAudioFiles": "Chưa có tệp âm thanh",
"calculating": "Đang tính toán...",
@ -691,7 +1325,7 @@ const Map<String, String> viVN = {
"autoInputCode": "Tự động nhập mã",
"skipBinding": "Bỏ qua liên kết",
"rescan": "Quét lại",
"skip": "Bỏ qua",
"verifyingDevice": "Đang xác minh thiết bị...",
"confirmBinding": "Xác nhận liên kết",
"associatingDevice": "Đang liên kết thiết bị...",
@ -723,12 +1357,17 @@ const Map<String, String> viVN = {
"pairingFailedRetry": "Ghép nối thất bại, vui lòng thử lại",
// 配对控制器相关
//'connectDevice': '连接设备',
'pleaseEnableBluetooth': 'Vui lòng bật Bluetooth',
'deviceDisconnected': 'Thiết bị đã ngắt kết nối',
'readyToStartPairing': 'Sẵn sàng bắt đầu ghép nối',
'checkingEnvironment': 'Đang kiểm tra môi trường...',
'ensureHeadsetOnAndPairingMode':
'Vui lòng đảm bảo tai nghe đã bật và ở chế độ ghép nối',
//'goToBluetoothSettings': '前往蓝牙设置',
//'verifyingDevice': '正在验证设备...',
//'confirmBinding': '确认绑定',
//'associatingDevice': '正在关联设备...',
'establishingSecureConnection': 'Đang thiết lập kết nối an toàn...',
'needManualBindingAuthCode': 'Cần mã ủy quyền liên kết thủ công...',
'pairingSuccessful': 'Ghép nối thành công!',
@ -750,6 +1389,19 @@ const Map<String, String> viVN = {
'deviceAuthorizationFailedCheckCode':
'Ủy quyền thiết bị thất bại, vui lòng kiểm tra mã ủy quyền',
///iOS蓝牙引导窗
'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙
'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作:
'bluetoothGuideStep1':
'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启
'bluetoothGuideStep2':
'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接
'bluetoothGuideStep3':
'Return to app to continue pairing process', // 返回应用继续配对流程
'bluetoothGuideTip':
'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置
'iKnow': 'I Know', // 我知道了
//用户反馈页
"feedback": "Phản hồi người dùng",
'feedbackInfo': 'Cung cấp phản hồi hoặc đề xuất',
@ -776,6 +1428,13 @@ const Map<String, String> viVN = {
"connectionFailed": "Kết nối thất bại",
"retryConnection": "Thử kết nối lại",
"ota_updateNow": "Cập nhật ngay",
"otaVersionInfoFailed": "Failed to get version info. Please try again later.",
"otaDeviceInfoUnavailable":
"Unable to get device info. Please check the connection and retry.",
"otaProductInfoUnavailable":
"Unable to identify the device. Please reconnect and retry.",
"otaFirmwareVersionInvalid":
"Firmware version is abnormal. Please reconnect and retry.",
"keepConnectedDontClose":
"Vui lòng giữ thiết bị kết nối, không đóng ứng dụng",
"doNotDisconnect": "Vui lòng không ngắt kết nối",
@ -785,11 +1444,11 @@ const Map<String, String> viVN = {
"Lấy cả hai tai nghe ra và đảm bảo pin của cả hai đều trên 20%",
// 音乐列表页面
"noMusic": "Không có nhạc",
"noPlayingMusic": "Không có nhạc đang phát",
"unknownSong": "Bài hát không xác định",
"unknownArtist": "Nghệ sĩ không xác định",
"playAll": "Phát tất cả",
"noMusic": "Không có nhạc", // 暂无音乐
"noPlayingMusic": "Không có nhạc đang phát", // 暂无播放音乐
"unknownSong": "Bài hát không xác định", // 未知歌曲
"unknownArtist": "Nghệ sĩ không xác định", // 未知歌手
"playAll": "Phát tất cả", // 播放全部
// 语言名称
"中文(简体)": "Tiếng Trung (Giản thể)",
@ -831,4 +1490,23 @@ const Map<String, String> viVN = {
"乌尔都语": "Tiếng Urdu",
"波斯语": "Tiếng Ba Tư",
"斯瓦希里语": "Tiếng Swahili",
// 时间相关
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
// 时间扩展(图片翻译模块使用)
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
//补充
"insufficientIntegral": "Insufficient integral",
//余额不足弹窗
"insufficientBalanceDesc":
'Insufficient balance, please go to the corresponding recharge page to recharge.',
"recharge": 'Go to Recharge',
// 会员到期提示
"aiMemberExpiredDesc":
'AI membership expired, please go to the membership recharge page to renew.',
};

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

@ -33,6 +33,7 @@ const Map<String, String> zhCN = {
"spanish": "西班牙语",
"portuguese": "葡萄牙语",
"traditionalChinese": "繁体中文",
"traditionalChineseHK": "繁体中文(香港)",
"japanese": "日语",
"korean": "韩语",
"french": "法语",
@ -714,7 +715,7 @@ const Map<String, String> zhCN = {
// Agent controller
'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n'
'• 答问题和提供信息\n\n'
'• 回答问题和提供信息\n\n'
'• 实时语音翻译\n\n'
'• 推荐音乐和播客\n\n'
'• 语音备忘录和提醒\n\n'
@ -1306,6 +1307,10 @@ const Map<String, String> zhCN = {
"connectionFailed": "连接失败",
"retryConnection": "重试连接",
"ota_updateNow": "立即更新",
"otaVersionInfoFailed": "获取版本信息失败,请稍后重试",
"otaDeviceInfoUnavailable": "无法获取设备信息,请检查连接后重试",
"otaProductInfoUnavailable": "无法识别当前设备,请重新连接后重试",
"otaFirmwareVersionInvalid": "设备固件版本异常,请重新连接后重试",
"keepConnectedDontClose": "请保持设备连接,不要关闭应用",
"doNotDisconnect": "请勿断开连接",
"charging": "充电中",

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

File diff suppressed because it is too large

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

File diff suppressed because it is too large

7
lib/data/services/asr_service.dart

@ -112,6 +112,8 @@ class RecognitionEvent {
/// 检测到的语言
final String detectedLanguage;
final String provider;
/// 角色
final String role;
@ -125,6 +127,7 @@ class RecognitionEvent {
required this.type,
this.text = '',
this.detectedLanguage = '',
this.provider = '',
this.role = '',
this.audio,
this.error = '',
@ -134,11 +137,13 @@ class RecognitionEvent {
factory RecognitionEvent.finalResult({
required String text,
String detectedLanguage = '',
String provider = '',
}) {
return RecognitionEvent(
type: RecognitionEventType.finalResult,
text: text,
detectedLanguage: detectedLanguage,
provider: provider,
);
}
@ -160,6 +165,6 @@ class RecognitionEvent {
@override
String toString() {
return 'RecognitionEvent{type: $type, text: $text, detectedLanguage: $detectedLanguage, error: $error}';
return 'RecognitionEvent{type: $type, provider: $provider, text: $text, detectedLanguage: $detectedLanguage, error: $error}';
}
}

15
lib/data/services/ble_manager.dart

@ -875,6 +875,10 @@ class BleManager extends GetxService {
}
final navigationMode =
AppConfig.env('APP_NAVIGATION_MODE') ?? 'external_auto';
final xunfeiAppId = AppConfig.env('XUNFEI_ASR_APP_ID') ?? '';
final xunfeiAccessKeyId = AppConfig.env('XUNFEI_ASR_ACCESS_KEY_ID') ?? '';
final xunfeiAccessKeySecret =
AppConfig.env('XUNFEI_ASR_ACCESS_KEY_SECRET') ?? '';
// 从Flutter资源包中加载.mcp.json
final jsonData = AppConfig.mcpConfig();
Logger.info('启动BLE服务,musicServiceType: ${musicServiceType}');
@ -939,6 +943,9 @@ class BleManager extends GetxService {
// 语音代理配置参数
'azureSpeechKey': azureSpeechKey,
'azureSpeechRegion': azureSpeechRegion,
'xunfeiAppId': xunfeiAppId,
'xunfeiAccessKeyId': xunfeiAccessKeyId,
'xunfeiAccessKeySecret': xunfeiAccessKeySecret,
'openaiApiKey': openaiApiKey,
'openaiBaseUrl': openaiBaseUrl,
'openaiModel': openaiModel,
@ -958,8 +965,12 @@ class BleManager extends GetxService {
"insufficientIntegralText": "insufficientIntegral".tr,
};
// 记录日志(不记录敏感信息)
Logger.info('启动BLE服务,配置参数键名: ${config}');
Logger.info('启动BLE服务,配置参数键名: ${config.keys.toList()}');
if (xunfeiAppId.isEmpty ||
xunfeiAccessKeyId.isEmpty ||
xunfeiAccessKeySecret.isEmpty) {
Logger.warning('XUNFEI_ASR_* 未完整配置,ASR 将不会切到讯飞');
}
if (azureSpeechKey.isEmpty || openaiApiKey.isEmpty) {
Logger.warning('缺少必要的API密钥,请检查.env文件配置');

31
lib/data/services/speech_impl/azure_asr_service.dart

@ -29,6 +29,9 @@ class AzureAsrService extends GetxService implements AsrService {
bool _isInitialized = false;
late final String _subscriptionKey;
late final String _serviceRegion;
late final String _xunfeiAppId;
late final String _xunfeiAccessKeyId;
late final String _xunfeiAccessKeySecret;
final List<String> _defaultSupportedLanguages = ['zh-CN', 'en-US'];
@override
@ -47,6 +50,9 @@ class AzureAsrService extends GetxService implements AsrService {
String _latestDetectedLanguage = '';
String get latestDetectedLanguage => _latestDetectedLanguage;
String _latestAsrProvider = '';
String get latestAsrProvider => _latestAsrProvider;
// 音频数据事件订阅
StreamSubscription? _audioDataEventSubscription;
// 音频数据流控制器
@ -69,6 +75,10 @@ class AzureAsrService extends GetxService implements AsrService {
// final _env = _storage.read("ENV") as Map<String, String>;
_subscriptionKey = AppConfig.env('AZURE_SPEECH_KEY') ?? '';
_serviceRegion = AppConfig.env('AZURE_SPEECH_REGION') ?? '';
_xunfeiAppId = AppConfig.env('XUNFEI_ASR_APP_ID') ?? '';
_xunfeiAccessKeyId = AppConfig.env('XUNFEI_ASR_ACCESS_KEY_ID') ?? '';
_xunfeiAccessKeySecret =
AppConfig.env('XUNFEI_ASR_ACCESS_KEY_SECRET') ?? '';
if (_subscriptionKey.isEmpty || _serviceRegion.isEmpty) {
throw Exception(
@ -125,6 +135,9 @@ class AzureAsrService extends GetxService implements AsrService {
'supportedLanguages': languages,
'audioSourceType': _audioSourceType.toString().split('.').last,
'useEchoCancellation': useEchoCancellation,
'xunfeiAppId': _xunfeiAppId,
'xunfeiAccessKeyId': _xunfeiAccessKeyId,
'xunfeiAccessKeySecret': _xunfeiAccessKeySecret,
});
_setupEventChannel();
@ -325,6 +338,17 @@ class AzureAsrService extends GetxService implements AsrService {
final Map<dynamic, dynamic> eventMap = event;
final String eventType = eventMap['type'] as String? ?? '';
final String provider = eventMap['provider'] as String? ?? '';
if (provider.isNotEmpty) {
if (provider != _latestAsrProvider) {
_latestAsrProvider = provider;
Logger.info('ASR provider: $_latestAsrProvider');
}
} else {
if (eventType == 'sessionStarted') {
Logger.warning('ASR provider missing in event');
}
}
// 添加日志帮助调试
@ -339,6 +363,7 @@ class AzureAsrService extends GetxService implements AsrService {
type: RecognitionEventType.finalResult,
text: text,
detectedLanguage: detectedLanguage,
provider: _latestAsrProvider,
));
break;
case 'result1':
@ -351,6 +376,7 @@ class AzureAsrService extends GetxService implements AsrService {
type: RecognitionEventType.finalResult1,
text: text,
detectedLanguage: detectedLanguage,
provider: _latestAsrProvider,
));
break;
@ -362,11 +388,13 @@ class AzureAsrService extends GetxService implements AsrService {
type: RecognitionEventType.intermediateResult,
text: text,
detectedLanguage: detectedLanguage,
provider: _latestAsrProvider,
));
break;
case 'sessionStarted':
_eventStreamController?.add(RecognitionEvent(
type: RecognitionEventType.sessionStarted,
provider: _latestAsrProvider,
));
break;
@ -374,6 +402,7 @@ class AzureAsrService extends GetxService implements AsrService {
_isContinuousRecognitionActive = false;
_eventStreamController?.add(RecognitionEvent(
type: RecognitionEventType.sessionStopped,
provider: _latestAsrProvider,
));
break;
@ -389,6 +418,7 @@ class AzureAsrService extends GetxService implements AsrService {
_eventStreamController?.add(RecognitionEvent(
type: RecognitionEventType.canceled,
error: '$reason: $errorDetails',
provider: _latestAsrProvider,
));
break;
@ -398,6 +428,7 @@ class AzureAsrService extends GetxService implements AsrService {
_eventStreamController?.add(RecognitionEvent(
type: RecognitionEventType.error,
error: error,
provider: _latestAsrProvider,
));
break;
}

4
lib/data/services/speech_impl/azure_ast_service.dart

@ -78,8 +78,6 @@ class AzureAstService extends GetxService implements AstService {
final Map<dynamic, dynamic> eventMap = event;
final String eventType = eventMap['type'] as String? ?? '';
// 添加日志帮助调试
switch (eventType) {
case 'result':
final String text = eventMap['text'] as String? ?? '';
@ -105,6 +103,7 @@ class AzureAstService extends GetxService implements AstService {
));
break;
case 'sessionStarted':
Logger.info('AST provider: azure');
_eventStreamController?.add(RecognitionEvent1(
type: RecognitionEventType1.sessionStarted,
));
@ -309,6 +308,7 @@ class AzureAstService extends GetxService implements AstService {
_isInitialized = result;
_setupEventChannel();
Logger.info('Azure 语音识别服务初始化${result ? '成功' : '失败'}');
if (result) Logger.info('AST provider: azure');
return result;
} catch (e) {
Logger.error('Azure 语音识别服务初始化失败: ${e.toString()}');

349
lib/data/services/speech_impl/xunfei_asr_service.dart

@ -1,349 +0,0 @@
import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';
import 'package:crypto/crypto.dart';
import 'package:record/record.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
import '../../../core/utils/logger.dart';
import 'package:get/get.dart';
import '../asr_service.dart';
/// 讯飞 语音识别服务
///
class XunfeiAsrService extends GetxService implements AsrService {
final String baseUrl = 'wss://rtasr.xfyun.cn/v1/ws';
final int _chunkSize = 1280; // 每次发送的数据大小
final String appId = '43d87d22';
final String apiKey = '83f063755e8d342670002f50a4471d42';
AudioRecorder? recorder;
Timer? _timer;
WebSocketChannel? _channel;
bool isConnected = false; //是否链接
bool _isInitialized = false;
final List<String> _defaultSupportedLanguages = ['zh-CN'];
String _languageStr = 'cn';
// 连续识别相关
bool _isContinuousRecognitionActive = false;
StreamController<RecognitionEvent>? _eventStreamController;
@override
List<String> get supportedLanguages => _defaultSupportedLanguages;
Uint8List _buff = Uint8List(0); //音频缓存区
BytesBuilder _originaBytes = BytesBuilder(); //原始音频
bool isRecording = false;
@override
Future<bool> initialize({
List<String>? supportedLanguages,
}) async {
try {
final List<String> languages =
supportedLanguages ?? _defaultSupportedLanguages;
String languagetoStr = languages.first.split('-')[1].toLowerCase();
_languageStr = languagetoStr;
_isInitialized = true;
Logger.info('Azure 语音识别服务初始化成功');
return true;
} catch (e) {
Logger.error('Azure 语音识别服务初始化失败: ${e.toString()}');
_isInitialized = false;
rethrow;
}
}
@override
Future<RecognitionEvent> recognizeOnce() async {
if (!_isInitialized) {
await initialize();
}
try {
throw Exception('无效的识别结果格式');
} catch (e) {
Logger.error('语音识别失败: ${e.toString()}');
return RecognitionEvent.error(e.toString());
}
}
// @override
// Future<Stream<RecognitionEvent>> startContinuousRecognition(
// bool audioSourceType) async {
// if (!_isInitialized) {
// await initialize();
// }
// try {
// _eventStreamController = StreamController<RecognitionEvent>.broadcast();
// await recorder?.dispose();
// recorder = AudioRecorder();
// Stream<Uint8List>? stream = await recorder?.startStream(
// const RecordConfig(
// sampleRate: 16000,
// encoder: AudioEncoder.pcm16bits,
// numChannels: 1,
// ),
// );
// isRecording = true;
// stream?.listen((data) {
// if (isRecording) {
// _buff = _appendToBuffer(data);
// _originaBytes.add(data);
// }
// });
// await _tryConnecting();
// _timer = Timer.periodic(const Duration(milliseconds: 40), (timer) async {
// //每40毫秒读取一次数据
// var frame = _getAudioData();
// if (frame.isNotEmpty) {
// _channel?.sink.add(frame);
// }
// });
// _isContinuousRecognitionActive = true;
// return _eventStreamController!.stream;
// } catch (e) {
// Logger.error('开始连续语音识别失败: ${e.toString()}');
// rethrow;
// }
// }
//写入音频数据到缓存区中
Uint8List _appendToBuffer(Uint8List newData) {
var newBuffer = Uint8List(_buff.length + newData.length);
newBuffer.setAll(0, _buff);
newBuffer.setAll(_buff.length, newData);
return newBuffer;
}
//读取缓存区中一帧数据
Uint8List _getAudioData() {
if (_buff.length >= _chunkSize) {
// 从缓冲区中读取1280字节的数据
var data = _buff.sublist(0, _chunkSize);
// 移除已读取的数据
_buff = _buff.sublist(_chunkSize);
return data;
} else {
return _buff;
}
}
//尝试连接
Future<void> _tryConnecting() async {
try {
final url = _geturl();
_channel = WebSocketChannel.connect(Uri.parse(url));
_channel?.stream.timeout(const Duration(seconds: 10)); //设置超时时间
await _channel?.ready;
isConnected = true;
_channel?.stream.listen(
(message) {
_handle(message);
},
onError: (error) {
isConnected = false;
Logger.error('连接失败: ${error.toString()}');
},
onDone: () {
isConnected = false;
Logger.error('WebSocket 连接已关闭!');
},
cancelOnError: true,
);
} catch (e) {
Logger.error("初始化异常----------------${e.toString()}");
}
}
//处理数据
void _handle(data) {
try {
final result = jsonDecode(data);
if (result['code'] == "0" && result['data'] != "") {
final data = jsonDecode(result['data']);
String msg = "";
String role = '';
List rtList = data['cn']['st']['rt'];
for (var rt in rtList) {
for (var ws in rt['ws']) {
for (var ws in ws['cw']) {
msg += ws['w'];
if (ws['rl'] != "0") {
role = ws['rl'];
}
}
}
}
Logger.info(
"识别到的内容 type:${data['cn']['st']['type']} msg:$msg rl:$role");
if (msg.isNotEmpty) {
if (data['cn']['st']['type'] == "0") {
_eventStreamController?.add(RecognitionEvent(
type: RecognitionEventType.finalResult,
text: msg,
role: role,
audio: _originaBytes.toBytes(),
));
_originaBytes.clear();
} else {
_eventStreamController?.add(RecognitionEvent(
type: RecognitionEventType.intermediateResult,
text: msg,
role: role,
));
}
}
}
} catch (e) {
Logger.error("接受消息异常 ${e.toString()}");
}
}
///获取链接地址
String _geturl() {
// 生成时间戳
String ts = (DateTime.now().millisecondsSinceEpoch ~/ 1000).toString();
// 计算 baseString
String baseString = md5.convert(utf8.encode(appId + ts)).toString();
// 计算 signa
var hmacSha1 = Hmac(sha1, utf8.encode(apiKey));
var signa = hmacSha1.convert(utf8.encode(baseString));
String signaBase64 = base64Encode(signa.bytes);
String url = "";
// 构建 WebSocket URL
url =
'$baseUrl?appid=$appId&ts=$ts&lang=$_languageStr&roleType=2&signa=${Uri.encodeComponent(signaBase64)}';
return url;
}
@override
Future<bool> stopContinuousRecognition() async {
try {
await recorder?.stop();
isRecording = false;
_timer?.cancel();
_buff = Uint8List(0);
_originaBytes = BytesBuilder();
if (isConnected) {
_channel?.sink.add(utf8.encode('{"end": true}')); //结束
}
_isContinuousRecognitionActive = false;
return true;
} catch (e) {
Logger.error('停止连续语音识别失败: ${e.toString()}');
rethrow;
}
}
@override
bool isContinuousRecognitionActive() {
return _isContinuousRecognitionActive;
}
@override
Future<void> dispose() async {
try {
await stopContinuousRecognition();
recorder?.dispose();
_channel?.sink.close();
_eventStreamController?.close();
_eventStreamController = null;
_isInitialized = false;
Logger.info('Azure 语音识别资源已释放');
} catch (e) {
Logger.error('释放语音识别资源失败: ${e.toString()}');
_isInitialized = false;
}
}
@override
Future<bool> enableRecord(bool audioSourceType, String filePath,
{bool acceptAudioData = false}) {
// TODO: implement enableRecord
throw UnimplementedError();
}
@override
Future<bool> stopRecord(bool isSave) {
// TODO: implement stopRecord
throw UnimplementedError();
}
@override
Future<bool> pauseRecord() {
// TODO: implement pauseRecord
throw UnimplementedError();
}
@override
Future<bool> moveFile(String sourcePath, String destPath) {
// TODO: implement moveFile
throw UnimplementedError();
}
@override
Future<bool> renameFile(String filePath, String newName) {
// TODO: implement renameFile
throw UnimplementedError();
}
@override
Future<void> disableBluetoothAudio() {
// TODO: implement disableBluetoothAudio
throw UnimplementedError();
}
@override
Future<void> restoreOriginalAudioState() {
// TODO: implement restoreOriginalAudioState
throw UnimplementedError();
}
@override
Future<Stream<RecognitionEvent>> recognizeCallback() {
// TODO: implement recognizeCallback
throw UnimplementedError();
}
@override
Future<bool> startContinuousRecognition(
bool audioSourceType, {
bool isRemoveFirstPunctuation = true,
}) {
// TODO: implement startContinuousRecognition
throw UnimplementedError();
}
@override
Future<bool> setAudioConfig({int sampleRate = 16000, int channels = 1}) {
// TODO: implement setAudioConfig
throw UnimplementedError();
}
@override
Future<bool> resumeRecord() {
// TODO: implement resumeRecord
throw UnimplementedError();
}
@override
Stream<Uint8List>? getAudioDataStream() {
// TODO: implement getAudioDataStream
throw UnimplementedError();
}
}

160
lib/modules/FTFTranslation/README.md

@ -1,160 +0,0 @@
# Realtime 实时语音聊天模块
## ⚠️ 当前状态
**此模块为功能预览版本,提供完整的实时语音对话功能。**
通过原生插件实现语音识别、AI对话和语音合成的完整语音交互体验。
## 概述
Realtime模块实现了类似ChatGPT app的实时语音对话功能,当前版本提供:
- ✅ **完整语音交互** - 实时语音识别、AI对话和语音合成
- ✅ **状态管理** - 聆听、思考、回答状态的可视化
- ✅ **动画效果** - 基于Shader的流动云效果,支持音频振幅驱动
- ✅ **字幕显示** - 可选择开启/关闭的字幕模式
- ✅ **智能UI** - 根据连接状态自动调整按钮可用性
## 界面设计
### 布局结构
- **顶部状态区域** - 显示当前状态和字幕模式切换按钮
- **中间可视化区域** - 圆形Shader动画,根据音频振幅呈现呼吸效果
- **底部控制区域** - 主控制按钮和状态指示器
### 状态指示
- 🔵 **聆听状态** - 蓝色动画,接收用户语音输入
- 🟠 **思考状态** - 橙色动画,AI处理中
- 🟢 **回答状态** - 绿色动画,AI语音输出
- ⚪ **空闲状态** - 灰色静态,等待交互
### 字幕模式
- **默认关闭** - 初始状态下不显示任何字幕内容
- **手动切换** - 通过右上角按钮手动开启/关闭字幕
- **完整隐藏** - 关闭时字幕区域完全不显示,不占用界面空间
- **智能布局** - 开启时圆形动画自动上移,字幕区域占据下半屏
### 交互控制
- **录音按钮** - 仅在成功连接AI服务器且开始录音后可用
- **连接状态** - 未连接时录音按钮显示不可用状态
- **状态反馈** - 按钮颜色和可点击性根据连接状态动态调整
## 使用方法
### 路由导航
```dart
// 跳转到实时语音对话页面
Get.toNamed(Routes.realtime);
```
### 交互流程
1. **自动连接** - 页面加载后自动尝试连接AI服务器
2. **等待连接** - 录音按钮在连接成功前保持不可用状态
3. **开始录音** - 连接成功后自动开始录音,录音按钮变为可用
4. **语音对话** - 用户说话 → AI处理 → 语音回复
5. **字幕控制** - 可随时通过右上角按钮切换字幕显示
## 技术架构
### 控制器 (RealtimeController)
- **连接管理**: WebSocket连接到AI服务器
- **状态同步**: `isConnected`, `isListening`, `isSpeaking`
- **字幕控制**: `isSubtitleMode` 默认为false,用户手动控制
- **消息管理**: 智能去重,避免流式响应重复显示
- **音频处理**: 原生层计算RMS值,Flutter层接收并控制动画
### 视图组件
- **RealtimeView** - 主视图容器,响应式布局
- **ShaderMicFlow** - 基于GLSL Shader的流动云动画组件
- **AutoScrollList** - 自动滚动的字幕列表
### 原生集成
- **RealtimeService** - 原生音频处理和WebSocket通信
- **音频格式** - 16kHz, 1声道, 16位PCM
- **实时传输** - 低延迟音频流处理
- **RMS计算** - 原生层实时计算音频振幅
## 默认行为
### 字幕模式
- **初始状态**: 关闭 (`isSubtitleMode.value = false`)
- **显示逻辑**: 仅在用户手动开启时显示字幕内容
- **空间占用**: 关闭时字幕区域高度为0,不影响其他UI元素
- **切换效果**: 平滑动画过渡,圆形动画位置和大小同步调整
### 按钮状态
- **录音按钮**: 默认不可用,连接成功且开始录音后才可点击
- **状态指示**: 通过颜色和图标变化反映当前可用性
- **交互反馈**: 不可用时点击无效果,避免误操作
## 开发计划
### 已完成功能 ✅
- [x] 完整语音交互流程
- [x] 实时WebSocket通信
- [x] Shader流动云动画
- [x] RMS音频振幅计算
- [x] 智能UI状态管理
- [x] 字幕模式控制
- [x] 消息去重优化
### 计划增强 ⏳
- [ ] 多语言语音识别
- [ ] 语音中断检测
- [ ] 音频质量自适应
- [ ] 离线降级处理
- [ ] 语音情感识别
## 注意事项
1. **网络依赖** - 需要连接到AI服务器 (ws://192.168.1.11:8000/ws)
2. **麦克风权限** - 需要获取麦克风使用权限
3. **音频会话** - 自动管理音频会话,支持蓝牙设备
4. **资源管理** - 页面关闭时自动清理音频资源和网络连接
## 自定义配置
### 修改服务器地址
```dart
// 在RealtimeController中修改连接URL
await _realtimeService.initialize(
serverUrl: 'ws://your-server:port/ws',
// ... 其他参数
);
```
### 调整UI布局
```dart
// 修改字幕模式下圆形动画位置
alignment: controller.isSubtitleMode.value
? const Alignment(0, -0.9) // 调整Y轴位置
: const Alignment(0, -0.25),
```
### 音频参数调优
```dart
// 在初始化时调整音频参数
sampleRate: 16000, // 采样率
channels: 1, // 声道数
bitsPerSample: 16, // 位深度
```
## 技术栈
- **Flutter SDK**: >= 3.0.0
- **GetX**: >= 4.6.5 (状态管理)
- **Flutter Shaders**: >= 0.0.6 (Shader动画)
- **原生插件**: Realtime服务 (音频处理)
- **WebSocket**: 实时通信协议
## 版本信息
- **当前版本**: v1.0.0 (Production)
- **最后更新**: 2024年
- **状态**: 完整功能实现

10
lib/modules/FTFTranslation/bindings/FTFTranslation_binding.dart

@ -1,10 +0,0 @@
import 'package:get/get.dart';
import '../controllers/FTFTranslation_controller.dart';
class FTFTranslationBinding extends Bindings {
@override
void dependencies() {
// 注册实时语音聊天控制器
Get.lazyPut<FTFTranslationController>(() => FTFTranslationController());
}
}

246
lib/modules/FTFTranslation/controllers/FTFTranslation_controller.dart

@ -1,246 +0,0 @@
import 'dart:async';
import 'dart:typed_data';
import 'package:get/get.dart';
import '../../../core/utils/logger.dart';
import '../../../data/services/asr_service.dart';
import '../../../data/services/speech_impl/xunfei_asr_service.dart';
import '../../../data/services/tts_service.dart';
import '../../../data/services/language_manager.dart';
import '../../../data/services/volcano_translation_service.dart';
class FTFTranslationController extends GetxController
with GetSingleTickerProviderStateMixin {
final messages = <FTFTranslationMessage>[].obs;
final isChineseInput = true.obs;
final leftLanguage = '中文'.obs;
final rightLanguage = 'English'.obs;
final isLeftInput = true.obs;
final supportedLanguages = const [
'中文',
'English',
'日本語',
'한국어',
'Español',
];
late final AsrService _asrService;
StreamSubscription? _recognitionSubscription;
RxString intermediateContent = ''.obs;
RxString finalContent = ''.obs;
BytesBuilder _originaBytes = BytesBuilder(); //原始音频
final VolcanoTranslationService _translationService =
Get.find<VolcanoTranslationService>();
final LanguageManager _languageManager = Get.find<LanguageManager>();
// 当前使用的TTS服务
late TtsService _ttsService;
final isTranslating = false.obs;
final sourceLanguageCode = 'zh-CN'.obs;
final targetLanguageCode = 'en-US'.obs;
final isTtsEnabled = true.obs;
var _currsessionid = '';
@override
void onInit() {
super.onInit();
Get.put(XunfeiAsrService());
final TtsService _ttsService = Get.find<TtsService>();
_asrService = Get.find<XunfeiAsrService>();
_InfoRecorder();
}
@override
void onClose() {
_asrService.dispose();
_recognitionSubscription?.cancel();
super.onClose();
}
//开始录音
Future<void> _InfoRecorder() async {
final recognitionStream = await _asrService.recognizeCallback();
_recognitionSubscription = recognitionStream.listen(
_handleRecognitionEvent,
);
}
//开始录音
Future<void> _startRecorder() async {
await _asrService.startContinuousRecognition(false);
}
//结束录音
Future<void> _stopRecorder() async {
await _asrService.stopContinuousRecognition();
}
// 处理语音识别事件
void _handleRecognitionEvent(RecognitionEvent event) {
switch (event.type) {
case RecognitionEventType.intermediateResult:
intermediateContent.value = event.text;
handleFinalResult(event.text);
break;
case RecognitionEventType.finalResult:
finalContent.value += _spliceText(event);
intermediateContent.value = '';
_originaBytes.add(event.audio!);
handleIntermediateResult(event.text);
break;
default:
// 不做任何处理
break;
}
}
// 翻译文本
Future<String?> translateText(String sourceText,
{bool isFinal = false}) async {
if (sourceText.isEmpty) return null;
isTranslating.value = true;
String? translationResult;
try {
// 根据检测到的语言确定源语言和目标语言
final bool shouldSwap =
intermediateContent.value == sourceLanguageCode.value;
final detectedSourceLanguageCode =
shouldSwap ? sourceLanguageCode.value : targetLanguageCode.value;
final detectedTargetLanguageCode =
shouldSwap ? targetLanguageCode.value : sourceLanguageCode.value;
// 调用翻译服务
translationResult = await _translationService.translateText(
text: sourceText,
sourceLanguageCode: detectedSourceLanguageCode,
targetLanguageCode: detectedTargetLanguageCode,
);
if (translationResult != null) {
// 查找匹配的项目 - 优先使用timestamp查找
int index = -1;
// 播放TTS - 只在最终结果时播放
if (isTtsEnabled.value && isFinal) {
// Logger.info('播放翻译文本: ${translationResult}');
await playTranslatedText(translationResult);
}
}
} catch (e) {
Logger.error('翻译失败: ${e.toString()}');
} finally {
isTranslating.value = false;
}
return translationResult;
}
// 处理中间识别结果
void handleIntermediateResult(String text) {
if (text.isEmpty) return;
translateText(text, isFinal: false);
}
// 处理最终识别结果
Future<void> handleFinalResult(String text) async {
if (text.isEmpty) return;
// 使用项目的时间戳进行翻译
translateText(text, isFinal: true);
}
// 播放翻译文本
Future<void> playTranslatedText(String text) async {
if (text.isEmpty) return;
try {
final bool shouldSwap =
intermediateContent.value == targetLanguageCode.value;
final detectedTargetLanguageCode =
shouldSwap ? sourceLanguageCode.value : targetLanguageCode.value;
final voiceName = _languageManager
.getTtsVoiceNameByAsrCode(detectedTargetLanguageCode) ??
'en-US-AriaNeural';
await _ttsService.setVoice(voiceName);
await _ttsService.speakOnce(_currsessionid, text);
} catch (e) {
Logger.error('播放翻译失败: ${e.toString()}');
}
}
String _spliceText(RecognitionEvent event) {
String eventText = event.text;
String text = '';
if (finalContent.value.isNotEmpty) {
if (event.role != '') {
final punctuations = {
',',
'。',
'!',
'?',
';',
':',
',',
'.',
':',
';',
'!',
'?'
};
final firstChar = eventText[0];
if (punctuations.contains(firstChar)) {
text += '$firstChar\n';
eventText = eventText.substring(1);
} else {
text += '\n';
}
text += '说话人${event.role}:';
}
} else {
text += '说话人${event.role}:';
}
text += eventText;
return text;
}
void addMessage(String text) {
final fromLang =
isLeftInput.value ? leftLanguage.value : rightLanguage.value;
final toLang = isLeftInput.value ? rightLanguage.value : leftLanguage.value;
messages.add(
FTFTranslationMessage(
original: text,
translated: '[$fromLang → $toLang] $text (翻译模拟)',
isChineseSpeaker: isLeftInput.value,
),
);
}
void swapLanguages() {
final temp = leftLanguage.value;
leftLanguage.value = rightLanguage.value;
rightLanguage.value = temp;
isLeftInput.value = !isLeftInput.value;
}
void toggleInputSide(bool isLeft) => isLeftInput.value = isLeft;
}
class FTFTranslationMessage {
final String original;
final String translated;
final bool isChineseSpeaker;
FTFTranslationMessage({
required this.original,
required this.translated,
required this.isChineseSpeaker,
});
}

212
lib/modules/FTFTranslation/views/FTFTranslation_view.dart

@ -1,212 +0,0 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../controllers/FTFTranslation_controller.dart';
class FTFTranslationView extends GetView<FTFTranslationController> {
const FTFTranslationView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final TextEditingController inputController = TextEditingController();
return Scaffold(
backgroundColor: const Color(0xFF0E0F12),
appBar: AppBar(
backgroundColor: Colors.black,
title: const Text('面对面翻译'),
centerTitle: true,
),
body: Column(
children: [
Expanded(
child: Obx(() => ListView.builder(
padding: const EdgeInsets.all(16),
itemCount: controller.messages.length,
itemBuilder: (context, index) {
final msg = controller.messages[index];
final isChinese = msg.isChineseSpeaker;
return Align(
alignment: isChinese
? Alignment.centerLeft
: Alignment.centerRight,
child: Container(
margin: const EdgeInsets.symmetric(vertical: 6),
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: isChinese ? Colors.blue : Colors.grey[800],
borderRadius: BorderRadius.circular(12),
),
constraints: const BoxConstraints(maxWidth: 300),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
msg.original,
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 4),
Text(
msg.translated,
style: TextStyle(
color: Colors.white.withOpacity(0.9),
fontSize: 14,
),
),
],
),
),
);
},
)),
),
_buildBottomInput(inputController),
],
),
);
}
Widget _buildBottomInput(TextEditingController inputController) {
return Obx(() {
final isLeftInput = controller.isLeftInput.value;
final inputLang = isLeftInput
? controller.leftLanguage.value
: controller.rightLanguage.value;
return Container(
color: Colors.black,
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
child: Column(
children: [
Row(
children: [
Expanded(
child: TextField(
controller: inputController,
style: const TextStyle(color: Colors.white),
decoration: InputDecoration(
filled: true,
fillColor: Colors.grey[900],
hintText: '请输入 $inputLang 内容',
hintStyle: const TextStyle(color: Colors.grey),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
borderSide: BorderSide.none,
),
contentPadding:
const EdgeInsets.symmetric(horizontal: 12),
),
),
),
IconButton(
onPressed: () {
final text = inputController.text.trim();
if (text.isNotEmpty) {
controller.addMessage(text);
inputController.clear();
}
},
icon: const Icon(Icons.send, color: Colors.white),
),
],
),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: _buildLanguageDropdown(
selected: controller.leftLanguage.value,
items: controller.supportedLanguages,
onChanged: (value) {
if (value != null) controller.leftLanguage.value = value;
},
icon: Icons.headphones,
isSelected: isLeftInput,
label: '左方语言',
onTapInputSide: () => controller.toggleInputSide(true),
),
),
const SizedBox(width: 12),
GestureDetector(
onTap: controller.swapLanguages,
child: Container(
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
color: Colors.white10,
shape: BoxShape.circle,
),
child:
const Icon(Icons.compare_arrows, color: Colors.white),
),
),
const SizedBox(width: 12),
Expanded(
child: _buildLanguageDropdown(
selected: controller.rightLanguage.value,
items: controller.supportedLanguages,
onChanged: (value) {
if (value != null) controller.rightLanguage.value = value;
},
icon: Icons.smartphone,
isSelected: !isLeftInput,
label: '右方语言',
onTapInputSide: () => controller.toggleInputSide(false),
),
),
],
),
],
),
);
});
}
Widget _buildLanguageDropdown({
required String selected,
required List<String> items,
required void Function(String?) onChanged,
required IconData icon,
required bool isSelected,
required String label,
required VoidCallback onTapInputSide,
}) {
return GestureDetector(
onTap: onTapInputSide,
child: Container(
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12),
decoration: BoxDecoration(
border: Border.all(
color: isSelected ? Colors.white : Colors.grey,
),
borderRadius: BorderRadius.circular(24),
color: isSelected ? Colors.white10 : Colors.transparent,
),
child: Row(
children: [
Icon(icon, color: Colors.white),
const SizedBox(width: 8),
Expanded(
child: DropdownButton<String>(
dropdownColor: Colors.grey[900],
value: selected,
isExpanded: true,
underline: const SizedBox(),
iconEnabledColor: Colors.white,
style: const TextStyle(color: Colors.white),
items: items.map((lang) {
return DropdownMenuItem(
value: lang,
child: Text(lang),
);
}).toList(),
onChanged: onChanged,
),
),
],
),
),
);
}
}

2
lib/modules/agent/controllers/agent_controller.dart

@ -569,6 +569,8 @@ class AgentController extends GetxController with WidgetsBindingObserver {
// 订阅代理服务事件
void _subscribeToEvents() {
_eventSubscription = AgentService.events.listen((event) {
final String asrProvider = (event.data['provider'] ?? '').toString();
if (asrProvider.isNotEmpty) Logger.i(TAG, 'ASR provider: $asrProvider');
switch (event.type) {
case AgentServiceEventType.recognitionStarted:
isListening.value = true;

40
lib/modules/agent/views/agent_view.dart

@ -120,27 +120,35 @@ class _AgentViewState extends State<AgentView> with WidgetsBindingObserver {
),
),
SizedBox(width: 4.w),
Obx(() {
final vipexptime = controller.vipExpiryTime.value;
DateTime? expiry;
if (vipexptime > 0) {
expiry = vipexptime > 1000000000000
? DateTime.fromMillisecondsSinceEpoch(vipexptime)
: DateTime.fromMillisecondsSinceEpoch(
vipexptime * 1000);
}
final text = expiry != null
? '${'expiryLabel'.tr}${DateFormat('yyyy-MM-dd').format(expiry)}'
: 'notActivated'.tr;
return Text(
text,
Text(
'online'.tr,
style: TextStyle(
fontSize: 12.sp,
color: Colors.green,
fontWeight: FontWeight.w500,
),
);
}),
),
// Obx(() {
// final vipexptime = controller.vipExpiryTime.value;
// DateTime? expiry;
// if (vipexptime > 0) {
// expiry = vipexptime > 1000000000000
// ? DateTime.fromMillisecondsSinceEpoch(vipexptime)
// : DateTime.fromMillisecondsSinceEpoch(
// vipexptime * 1000);
// }
// final text = expiry != null
// ? '${'expiryLabel'.tr}${DateFormat('yyyy-MM-dd').format(expiry)}'
// : 'notActivated'.tr;
// return Text(
// text,
// style: TextStyle(
// fontSize: 12.sp,
// color: Colors.green,
// fontWeight: FontWeight.w500,
// ),
// );
// }),
],
),
],

53
lib/modules/ota_upgrade/controllers/ota_core_contropller.dart

@ -6,6 +6,27 @@ import '../../../data/services/bluetooth_manager.dart'; // 添加蓝牙管理器
import '../../../data/models/appconfig.dart';
import '../../../data/models/appconfig_model.dart';
enum OtaCoreErrorType {
deviceInfoUnavailable,
productInfoUnavailable,
firmwareVersionFormatInvalid,
}
class OtaCoreException implements Exception {
final OtaCoreErrorType type;
final Map<String, String> params;
final String debugMessage;
OtaCoreException({
required this.type,
this.params = const {},
this.debugMessage = '',
});
@override
String toString() => debugMessage;
}
/// OTA核心服务
/// 整合设备检查、版本管理和状态管理功能
class OtaCoreService {
@ -450,7 +471,10 @@ class OtaCoreService {
if (deviceInfo == null ||
deviceInfo.firmwareVersion.isEmpty ||
deviceInfo.firmwareProductId.isEmpty) {
throw "获取设备信息失败,请检查连接";
throw OtaCoreException(
type: OtaCoreErrorType.deviceInfoUnavailable,
debugMessage: 'deviceInfoUnavailable', //获取设备信息失败,请检查连接
);
}
String deviceName = getDeviceName();
@ -461,7 +485,11 @@ class OtaCoreService {
// 如果根据设备名称找不到产品,尝试使用默认产品名称
product = AppConfig.getproduct("DeapSound");
if (product == null) {
throw "无法获取产品信息,设备名称: $deviceName";
throw OtaCoreException(
type: OtaCoreErrorType.productInfoUnavailable,
params: {'deviceName': deviceName},
debugMessage: 'productInfoUnavailable: $deviceName', //根据设备名称未找到产品信息
);
}
}
@ -471,7 +499,12 @@ class OtaCoreService {
// 单端耳机:固件版本只有三位数(如:1.2.3)
final firmwareParts = deviceInfo.firmwareVersion.split('.');
if (firmwareParts.length < 3) {
throw "单端耳机固件版本格式错误:${deviceInfo.firmwareVersion},应为三位数格式(如:1.2.3)";
throw OtaCoreException(
type: OtaCoreErrorType.firmwareVersionFormatInvalid,
params: {'firmwareVersion': deviceInfo.firmwareVersion},
debugMessage:
'single firmwareVersion format invalid: ${deviceInfo.firmwareVersion}', //单端耳机固件版本格式无效
);
}
currentVersion = firmwareParts.sublist(0, 3).join('.');
Logger().d("单端耳机版本: $currentVersion");
@ -480,7 +513,12 @@ class OtaCoreService {
// 双端耳机:固件版本有六位数(如:1.2.3.1.2.3)
final firmwareParts = deviceInfo.firmwareVersion.split('.');
if (firmwareParts.length < 6) {
throw "双端耳机固件版本格式错误:${deviceInfo.firmwareVersion},应为六位数格式(如:1.2.3.1.2.3)";
throw OtaCoreException(
type: OtaCoreErrorType.firmwareVersionFormatInvalid,
params: {'firmwareVersion': deviceInfo.firmwareVersion},
debugMessage:
'double firmwareVersion length invalid: ${deviceInfo.firmwareVersion}', //双端耳机固件版本格式无效
);
}
final firstPart = firmwareParts.sublist(0, 3).join('.');
final secondPart = firmwareParts.sublist(3, 6).join('.');
@ -488,7 +526,12 @@ class OtaCoreService {
Logger().d("双端耳机版本 - firstPart: $firstPart, secondPart: $secondPart");
if (firstPart != secondPart) {
throw "双端耳机固件版本格式错误:${deviceInfo.firmwareVersion},前三位和后三位应该相同";
throw OtaCoreException(
type: OtaCoreErrorType.firmwareVersionFormatInvalid,
params: {'firmwareVersion': deviceInfo.firmwareVersion},
debugMessage:
'double firmwareVersion mismatch: ${deviceInfo.firmwareVersion}', //双端耳机固件版本不一致,前三位和后三位不一样
);
}
currentVersion = firstPart;
} else {

16
lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart

@ -112,7 +112,7 @@ class OtaUpgradeController extends GetxController {
latestVersion.value,
);
} catch (e) {
_handleError('获取版本信息失败', e.toString());
_handleError('error'.tr, _getUserFriendlyErrorMessage(e));
} finally {
isFetchingDeviceInfo.value = false;
}
@ -314,4 +314,18 @@ class OtaUpgradeController extends GetxController {
errorMessage.value = message;
_uiService.showErrorSnackbar(title, message);
}
String _getUserFriendlyErrorMessage(Object error) {
if (error is OtaCoreException) {
switch (error.type) {
case OtaCoreErrorType.deviceInfoUnavailable:
return 'otaDeviceInfoUnavailable'.tr;
case OtaCoreErrorType.productInfoUnavailable:
return 'otaProductInfoUnavailable'.tr;
case OtaCoreErrorType.firmwareVersionFormatInvalid:
return 'otaFirmwareVersionInvalid'.tr;
}
}
return 'otaVersionInfoFailed'.tr;
}
}

4
lib/modules/settings/controllers/settings_controller.dart

@ -27,7 +27,9 @@ class SettingsController extends GetxController {
LanguageModel(name: 'english', alias: 'English', value: 'en_US'), // 英语.tr
LanguageModel(name: 'chinese', alias: '中文', value: 'zh_CN'), // 中文.tr
LanguageModel(
name: 'traditionalChinese', alias: '繁體中文', value: 'zh_HK'), // 添加繁体中文
name: 'traditionalChinese', alias: '繁體中文', value: 'zh_TW'), // 添加繁体中文
LanguageModel(
name: 'traditionalChineseHK', alias: '繁體中文(HK)', value: 'zh_HK'), // 添加香港繁体中文
LanguageModel(
name: 'spanish', alias: 'Español', value: 'es_ES'), // 添加西班牙语选项
LanguageModel(

58
lib/modules/settings/views/settings_view.dart

@ -634,28 +634,6 @@ class SettingsView extends GetView<SettingsController> {
// color: isDarkMode
// ? Colors.white.withOpacity(0.1)
// : Colors.grey[200]),
// 面对面翻译测试
// _buildSimpleNavigationSetting(
// title: '面对面翻译测试',
// subtitle: '测试面对面翻译',
// icon: Icons.bluetooth_searching,
// iconBgColor: isDarkMode
// ? Colors.green[900]!.withOpacity(0.3)
// : Colors.green[100]!,
// iconColor:
// isDarkMode ? Colors.green[300]! : Colors.green[600]!,
// titleColor: isDarkMode ? Colors.white : null,
// subtitleColor: isDarkMode ? Colors.white70 : null,
// onTap: () {
// Get.toNamed(Routes.ftftranslation);
// },
// isDarkMode: isDarkMode,
// ),
// Divider(
// height: 1,
// color: isDarkMode
// ? Colors.white.withOpacity(0.1)
// : Colors.grey[200]),
// //BLE测试
// 支付测试
@ -748,24 +726,24 @@ class SettingsView extends GetView<SettingsController> {
// color: isDarkMode
// ? Colors.white.withOpacity(0.1)
// : Colors.grey[200]),
// 测试ble耳机固件版本升级
_buildSimpleNavigationSetting(
title: '唤醒词'.tr, // 固件升级
subtitle: '唤醒词管理'.tr, // BLE耳机固件版本升级
icon: Icons.voice_chat,
iconBgColor: isDarkMode
? Colors.orange[900]!.withOpacity(0.3)
: Colors.orange[100]!,
iconColor:
isDarkMode ? Colors.orange[300]! : Colors.orange[600]!,
onTap: () => Get.toNamed(Routes.wakeupvoice),
isDarkMode: isDarkMode,
),
Divider(
height: 1,
color: isDarkMode
? Colors.white.withOpacity(0.1)
: Colors.grey[200]),
// 耳机唤醒词设置
// _buildSimpleNavigationSetting(
// title: '唤醒词'.tr, // 唤醒词设置
// subtitle: '唤醒词管理'.tr, // 唤醒词管理
// icon: Icons.voice_chat,
// iconBgColor: isDarkMode
// ? Colors.orange[900]!.withOpacity(0.3)
// : Colors.orange[100]!,
// iconColor:
// isDarkMode ? Colors.orange[300]! : Colors.orange[600]!,
// onTap: () => Get.toNamed(Routes.wakeupvoice),
// isDarkMode: isDarkMode,
// ),
// Divider(
// height: 1,
// color: isDarkMode
// ? Colors.white.withOpacity(0.1)
// : Colors.grey[200]),
_buildSimpleNavigationSetting(
title: 'firmwareUpgrade'.tr, // 固件升级
subtitle: 'bleHeadsetFirmwareUpgrade'.tr, // BLE耳机固件版本升级

2
lib/modules/translation/controllers/translation_controller.dart

@ -1034,6 +1034,8 @@ class TranslationController extends GetxController with WidgetsBindingObserver {
/// [event] 识别事件
void _handleRecognitionEvent(RecognitionEvent event) {
// Logger.info("处理识别事件:${event}");
final String asrProvider = event.provider;
if (asrProvider.isNotEmpty) Logger.info('ASR provider: $asrProvider');
switch (event.type) {
case RecognitionEventType.finalResult:
if (event.text.isEmpty) break;

9
lib/routes/app_pages.dart

@ -64,8 +64,6 @@ import '../modules/realtime/bindings/realtime_binding.dart';
import '../modules/realtime/views/realtime_view.dart';
import '../modules/music/views/music_playlist_view.dart';
import '../modules/music/bindings/music_playlist_binding.dart';
import '../modules/FTFTranslation/bindings/FTFTranslation_binding.dart';
import '../modules/FTFTranslation/views/FTFTranslation_view.dart';
import '../modules/payment/bindings/payment_binding.dart';
import '../modules/payment/views/payment_view.dart';
import '../modules/translation/middleware/views/translation_middleware_view.dart';
@ -278,13 +276,6 @@ abstract class AppPages {
transition: Transition.rightToLeft,
transitionDuration: Duration(milliseconds: 250),
),
GetPage(
name: Routes.ftftranslation,
page: () => const FTFTranslationView(),
binding: FTFTranslationBinding(),
transition: Transition.noTransition,
transitionDuration: Duration(milliseconds: 250),
),
GetPage(
name: Routes.opusTest,
page: () => const OpusTestView(),

1
lib/routes/app_routes.dart

@ -36,7 +36,6 @@ abstract class Routes {
static const usageStats = '/usage/stats'; // 用量统计
static const speechDemo = '/speech_demo'; // 语音演示
static const translationList = '/translation/List'; // 翻译历史
static const ftftranslation = '/ftftranslation'; // 面对面翻译
// 测试路由(生产环境建议移除)
static const ttsTest = '/tts_test'; // 文字转语音测试
static const asrTest = '/asr_test'; // 语音识别测试

28
local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt

@ -73,6 +73,9 @@ object AgentService : CoroutineScope {
private var azureSpeechKey: String = ""
private var azureSpeechRegion: String = ""
private var xunfeiAppId: String = ""
private var xunfeiAccessKeyId: String = ""
private var xunfeiAccessKeySecret: String = ""
// 协程相关
private val job = SupervisorJob()
@ -238,6 +241,9 @@ object AgentService : CoroutineScope {
//保存配置
this.azureSpeechKey = config["azureSpeechKey"]?.toString() ?: ""
this.azureSpeechRegion = config["azureSpeechRegion"]?.toString() ?: ""
this.xunfeiAppId = config["xunfeiAppId"]?.toString() ?: ""
this.xunfeiAccessKeyId = config["xunfeiAccessKeyId"]?.toString() ?: ""
this.xunfeiAccessKeySecret = config["xunfeiAccessKeySecret"]?.toString() ?: ""
if (!customSystemPrompt.isNullOrBlank()) {
systemPrompt = customSystemPrompt
} else {
@ -257,7 +263,10 @@ object AgentService : CoroutineScope {
region = config["azureSpeechRegion"]?.toString() ?: "",
supportedLanguages = supportedLanguages,
audioSourceType = if (isExternalActive) AzureAsrHelper.AudioSourceType.EXTERNAL
else AzureAsrHelper.AudioSourceType.MICROPHONE
else AzureAsrHelper.AudioSourceType.MICROPHONE,
xunfeiAppId = config["xunfeiAppId"]?.toString() ?: "",
xunfeiAccessKeyId = config["xunfeiAccessKeyId"]?.toString() ?: "",
xunfeiAccessKeySecret = config["xunfeiAccessKeySecret"]?.toString() ?: ""
)
if (asrInitSuccess) {
@ -306,6 +315,9 @@ object AgentService : CoroutineScope {
vipExptime = config["vipexptime"]?.toString()?.toIntOrNull() ?: vipExptime;
navigationMode = config["navigationMode"]?.toString() ?: navigationMode
musicServiceType = config["musicServiceType"]?.toString() ?: ""
xunfeiAppId = config["xunfeiAppId"]?.toString() ?: xunfeiAppId
xunfeiAccessKeyId = config["xunfeiAccessKeyId"]?.toString() ?: xunfeiAccessKeyId
xunfeiAccessKeySecret = config["xunfeiAccessKeySecret"]?.toString() ?: xunfeiAccessKeySecret
chatApiService.initialize(
config["openaiApiKey"]?.toString() ?: "",
config["openaiBaseUrl"]?.toString() ?: "",
@ -1407,7 +1419,10 @@ object AgentService : CoroutineScope {
subscriptionKey = this.azureSpeechKey,
region = this.azureSpeechRegion,
supportedLanguages = languages.toTypedArray(),
audioSourceType = audioSourceType
audioSourceType = audioSourceType,
xunfeiAppId = this.xunfeiAppId,
xunfeiAccessKeyId = this.xunfeiAccessKeyId,
xunfeiAccessKeySecret = this.xunfeiAccessKeySecret
) ?: false
if (asrSuccess) {
recognizeCallback()
@ -1631,11 +1646,18 @@ object AgentService : CoroutineScope {
* 发送事件
*/
private fun sendEvent(eventName: String, data: Map<String, Any>) {
val shouldAttachAsrProvider = eventName == "recognizing" || eventName.startsWith("recognition_")
val finalData: Map<String, Any> = if (shouldAttachAsrProvider && !data.containsKey("provider")) {
val provider = azureAsrHelper?.getAsrProvider() ?: "unknown"
data.toMutableMap().apply { put("provider", provider) }
} else {
data
}
// 切换到主线程执行监听器回调,避免 UI 更新问题
launch(Dispatchers.Main) {
listeners.forEach { listener ->
try {
listener.onEvent(eventName, data)
listener.onEvent(eventName, finalData)
} catch (e: Exception) {
Log.e(TAG, "向监听器发送事件失败", e)
}

3
local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentServicePlugin.kt

@ -80,6 +80,9 @@ class AgentServicePlugin : FlutterPlugin, MethodCallHandler, EventChannel.Stream
config["isttsinterrupt"]?.toString()?.let { intent.putExtra("isttsinterrupt", it) }
config["callingToolText"]?.toString()?.let { intent.putExtra("callingToolText", it) }
config["insufficientIntegralText"]?.toString()?.let { intent.putExtra("insufficientIntegralText", it) }
config["xunfeiAppId"]?.toString()?.let { intent.putExtra("xunfeiAppId", it) }
config["xunfeiAccessKeyId"]?.toString()?.let { intent.putExtra("xunfeiAccessKeyId", it) }
config["xunfeiAccessKeySecret"]?.toString()?.let { intent.putExtra("xunfeiAccessKeySecret", it) }
config["vipexptime"]?.toString()?.let {
intent.putExtra("vipexptime", it)
//打印日志

9
local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/BleMediaService.kt

@ -71,6 +71,9 @@ class BleMediaService : Service(), CoroutineScope {
private const val APP_CALLING_TOOL_TEXT = "callingToolText" // 工具调用提示
private const val APP_INSUFFICIENT_INTEGRAL_TEXT = "insufficientIntegralText" // 积分不足提示
private const val KEY_VIP_EXPTIME = "vipexptime" // 会员到期时间
private const val KEY_XUNFEI_APP_ID = "xunfeiAppId" // 讯飞AppID
private const val KEY_XUNFEI_ACCESS_KEY_ID = "xunfeiAccessKeyId" // 讯飞AccessKeyID
private const val KEY_XUNFEI_ACCESS_KEY_SECRET = "xunfeiAccessKeySecret" // 讯飞AccessKeySecret
// 用于跟踪服务是否正在运行
private val isRunning = AtomicBoolean(false)
@ -591,6 +594,9 @@ private var companionManager: BleCompanionManager? = null
it.getStringExtra(APP_INSUFFICIENT_INTEGRAL_TEXT)?.let { value -> config[APP_INSUFFICIENT_INTEGRAL_TEXT] = value }
it.getStringExtra(KEY_VIP_EXPTIME)?.let { value -> config[KEY_VIP_EXPTIME] = value }
it.getStringExtra("isttsinterrupt")?.let { value -> config["isttsinterrupt"] = value }
it.getStringExtra(KEY_XUNFEI_APP_ID)?.let { value -> config[KEY_XUNFEI_APP_ID] = value }
it.getStringExtra(KEY_XUNFEI_ACCESS_KEY_ID)?.let { value -> config[KEY_XUNFEI_ACCESS_KEY_ID] = value }
it.getStringExtra(KEY_XUNFEI_ACCESS_KEY_SECRET)?.let { value -> config[KEY_XUNFEI_ACCESS_KEY_SECRET] = value }
Log.d(TAG, "liwei-------vipexptime 3-1 ${ config[KEY_VIP_EXPTIME]}")
// 提取 supportedLanguages 参数
it.getStringArrayListExtra(KEY_SUPPORTED_LANGUAGES)?.let { languages ->
@ -655,6 +661,9 @@ private var companionManager: BleCompanionManager? = null
config[APP_CALLING_TOOL_TEXT] = getConfigString(prefs, APP_CALLING_TOOL_TEXT, "")
config[APP_INSUFFICIENT_INTEGRAL_TEXT] = getConfigString(prefs, APP_INSUFFICIENT_INTEGRAL_TEXT, "")
config[KEY_VIP_EXPTIME] = getConfigString(prefs, KEY_VIP_EXPTIME, "")
config[KEY_XUNFEI_APP_ID] = getConfigString(prefs, KEY_XUNFEI_APP_ID, "")
config[KEY_XUNFEI_ACCESS_KEY_ID] = getConfigString(prefs, KEY_XUNFEI_ACCESS_KEY_ID, "")
config[KEY_XUNFEI_ACCESS_KEY_SECRET] = getConfigString(prefs, KEY_XUNFEI_ACCESS_KEY_SECRET, "")
Log.d(TAG, "liwei-------vipexptime 3-0 ${ config[KEY_VIP_EXPTIME]}")
// 添加 supportedLanguages 参数处理
val supportedLanguagesStr = getConfigString(prefs, KEY_SUPPORTED_LANGUAGES, "")

30
local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift

@ -36,6 +36,9 @@ class AgentServiceImpl: NSObject {
private var azureSpeechKey: String = ""
private var azureSpeechRegion: String = ""
private var xunfeiAppId: String = ""
private var xunfeiAccessKeyId: String = ""
private var xunfeiAccessKeySecret: String = ""
private var config: [String: Any] = [:]
// 添加音乐播放状态记录
@ -145,12 +148,17 @@ class AgentServiceImpl: NSObject {
}
internal func sendEvent(name eventName: String, data: [String: Any]) {
var eventData = data
let shouldAttachAsrProvider = eventName == "recognizing" || eventName.hasPrefix("recognition_")
if shouldAttachAsrProvider && eventData["provider"] == nil {
eventData["provider"] = azureAsrHelper?.asrProvider() ?? "unknown"
}
listenersLock.lock()
let currentListeners = self.listeners
listenersLock.unlock()
for listener in currentListeners {
listener.onEvent(eventName: eventName, data: data)
listener.onEvent(eventName: eventName, data: eventData)
}
}
@ -253,6 +261,16 @@ class AgentServiceImpl: NSObject {
return false
}
if let xunfeiAppId = config["xunfeiAppId"] as? String {
self.xunfeiAppId = xunfeiAppId
}
if let xunfeiAccessKeyId = config["xunfeiAccessKeyId"] as? String {
self.xunfeiAccessKeyId = xunfeiAccessKeyId
}
if let xunfeiAccessKeySecret = config["xunfeiAccessKeySecret"] as? String {
self.xunfeiAccessKeySecret = xunfeiAccessKeySecret
}
//启动定位服务
NotificationCenter.default.post(name: .locationstartEvent, object: nil)
// addlocationmonitor()
@ -298,7 +316,10 @@ class AgentServiceImpl: NSObject {
subscriptionKey: azureSpeechKey,
region: azureSpeechRegion,
supportedLanguages: supportedLanguages,
audioSourceType: .microphone
audioSourceType: .microphone,
xunfeiAppId: xunfeiAppId,
xunfeiAccessKeyId: xunfeiAccessKeyId,
xunfeiAccessKeySecret: xunfeiAccessKeySecret
), asrSuccess else {
sendError("初始化语音识别服务失败", code: "ASR_INIT_ERROR")
return false
@ -1459,7 +1480,10 @@ private func jsonToString(_ json: [String: Any]) -> String? {
subscriptionKey: azureSpeechKey,
region: azureSpeechRegion,
supportedLanguages: languages,
audioSourceType: .microphone
audioSourceType: .microphone,
xunfeiAppId: xunfeiAppId,
xunfeiAccessKeyId: xunfeiAccessKeyId,
xunfeiAccessKeySecret: xunfeiAccessKeySecret
), asrSuccess else {
sendError("初始化语音识别服务失败", code: "ASR_INIT_ERROR")
return false

33
local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt

@ -44,6 +44,13 @@ class AzureAsrHelper(private val context: Context) {
private var useXunfei = false
private var xunFeiAsrHelper: XunFeiAsrHelper? = null
private var xunfeiAppId: String = ""
private var xunfeiAccessKeyId: String = ""
private var xunfeiAccessKeySecret: String = ""
fun getAsrProvider(): String {
return if (useXunfei) "xunfei" else "azure"
}
// 音频源配置
var audioSourceType = AudioSourceType.MICROPHONE
@ -92,7 +99,10 @@ class AzureAsrHelper(private val context: Context) {
subscriptionKey: String,
region: String,
supportedLanguages: Array<String> = arrayOf("zh-CN", "en-US"),
audioSourceType: AudioSourceType = AudioSourceType.MICROPHONE
audioSourceType: AudioSourceType = AudioSourceType.MICROPHONE,
xunfeiAppId: String = "",
xunfeiAccessKeyId: String = "",
xunfeiAccessKeySecret: String = ""
): Boolean {
try {
// 检查配置是否为空
@ -108,13 +118,19 @@ class AzureAsrHelper(private val context: Context) {
this.subscriptionKey = subscriptionKey
this.region = region
this.audioSourceType = audioSourceType
this.xunfeiAppId = xunfeiAppId
this.xunfeiAccessKeyId = xunfeiAccessKeyId
this.xunfeiAccessKeySecret = xunfeiAccessKeySecret
// 设置语言
if (supportedLanguages.isNotEmpty()) {
this.supportedLanguages = supportedLanguages
}
this.useXunfei = supportedLanguages.all { it == "zh-CN" || it == "en-US" }
val xunfeiConfigReady = this.xunfeiAppId.isNotBlank() &&
this.xunfeiAccessKeyId.isNotBlank() &&
this.xunfeiAccessKeySecret.isNotBlank()
this.useXunfei = supportedLanguages.all { it == "zh-CN" || it == "en-US" } && xunfeiConfigReady
// 根据支持的语言数量决定是否启用自动语言检测
this.isAutoDetectLanguage = supportedLanguages.size >= 2
@ -283,7 +299,18 @@ class AzureAsrHelper(private val context: Context) {
}
if (xunFeiAsrHelper == null) {
xunFeiAsrHelper = XunFeiAsrHelper(context)
xunFeiAsrHelper = XunFeiAsrHelper(
context = context,
appId = xunfeiAppId,
accessKeyId = xunfeiAccessKeyId,
accessKeySecret = xunfeiAccessKeySecret
)
} else {
xunFeiAsrHelper?.updateConfig(
appId = xunfeiAppId,
accessKeyId = xunfeiAccessKeyId,
accessKeySecret = xunfeiAccessKeySecret
)
}
try {

14
local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureSpeechPlugin.kt

@ -280,6 +280,7 @@ class AzureSpeechPlugin : BleService.Callback, FlutterPlugin {
mapOf(
"type" to "result",
"sessionid" to sessionid,
"provider" to azureAsrHelper.getAsrProvider(),
"text" to text,
"detectedLanguage" to detectedLanguage
)
@ -297,6 +298,7 @@ class AzureSpeechPlugin : BleService.Callback, FlutterPlugin {
mapOf(
"type" to "recognizing",
"sessionid" to sessionid,
"provider" to azureAsrHelper.getAsrProvider(),
"text" to recognizing,
"detectedLanguage" to detectedLanguage
)
@ -304,11 +306,11 @@ class AzureSpeechPlugin : BleService.Callback, FlutterPlugin {
}
override fun onSessionStarted(sessionid:String) {
sendAsrEvent(mapOf("type" to "sessionStarted","sessionid" to sessionid,))
sendAsrEvent(mapOf("type" to "sessionStarted","sessionid" to sessionid, "provider" to azureAsrHelper.getAsrProvider()))
}
override fun onSessionStopped(sessionid:String) {
sendAsrEvent(mapOf("type" to "sessionStopped","sessionid" to sessionid,))
sendAsrEvent(mapOf("type" to "sessionStopped","sessionid" to sessionid, "provider" to azureAsrHelper.getAsrProvider()))
}
@ -318,6 +320,7 @@ class AzureSpeechPlugin : BleService.Callback, FlutterPlugin {
mapOf(
"type" to "canceled",
"sessionid" to sessionid,
"provider" to azureAsrHelper.getAsrProvider(),
"reason" to reason,
"errorDetails" to errorDetails
)
@ -331,6 +334,7 @@ class AzureSpeechPlugin : BleService.Callback, FlutterPlugin {
mapOf(
"type" to "error",
"sessionid" to sessionid,
"provider" to azureAsrHelper.getAsrProvider(),
"code" to code,
"message" to error
)
@ -413,6 +417,9 @@ class AzureSpeechPlugin : BleService.Callback, FlutterPlugin {
val supportedLanguages =
call.argument<List<String>>("supportedLanguages") ?: listOf("zh-CN")
val useExternalAudio = call.argument<Boolean>("useExternalAudio") ?: false
val xunfeiAppId = call.argument<String>("xunfeiAppId") ?: ""
val xunfeiAccessKeyId = call.argument<String>("xunfeiAccessKeyId") ?: ""
val xunfeiAccessKeySecret = call.argument<String>("xunfeiAccessKeySecret") ?: ""
try {
FileLogger.d(tag, "选择音频源类型: ${useExternalAudio}") //
@ -428,6 +435,9 @@ class AzureSpeechPlugin : BleService.Callback, FlutterPlugin {
region = region,
supportedLanguages = supportedLanguages.toTypedArray(),
audioSourceType = audioSourceType,
xunfeiAppId = xunfeiAppId,
xunfeiAccessKeyId = xunfeiAccessKeyId,
xunfeiAccessKeySecret = xunfeiAccessKeySecret,
)
result.success(success)

34
local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/XunFeiAsrHelper.kt

@ -15,12 +15,16 @@ import java.util.UUID
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
// 讯飞语音识别助手
//调用讯飞开放平台的实时语音转写大模型接口
// 参考文档:https://www.xfyun.cn/doc/spark/asr_llm/rtasr_llm.html
class XunFeiAsrHelper(private val context: Context) {
private val tag = "XunFeiAsrHelper"
private val appId = "43d87d22"
private val accessKeyId = "2bd01ce06ac35957fc0c082f9b6284ec"
private val accessKeySecret = "ODU3OTUyYjhjMjY5NDhkMmMxYWY2Zjlm"
private var appId: String = ""
private var accessKeyId: String = ""
private var accessKeySecret: String = ""
private var webSocket: WebSocket? = null
private val client = OkHttpClient()
@ -35,6 +39,25 @@ class XunFeiAsrHelper(private val context: Context) {
// 是否第去除一个文字的标点符号
private var removeFirstPunctuation = true
constructor(
context: Context,
appId: String,
accessKeyId: String,
accessKeySecret: String
) : this(context) {
updateConfig(appId = appId, accessKeyId = accessKeyId, accessKeySecret = accessKeySecret)
}
fun updateConfig(appId: String, accessKeyId: String, accessKeySecret: String) {
this.appId = appId
this.accessKeyId = accessKeyId
this.accessKeySecret = accessKeySecret
}
private fun isConfigValid(): Boolean {
return appId.isNotBlank() && accessKeyId.isNotBlank() && accessKeySecret.isNotBlank()
}
fun start(callback: AzureAsrHelper.ContinuousRecognizeCallback, language: String, isAutoDetect: Boolean, isRemoveFirstPunctuation: Boolean) {
try {
webSocket?.cancel()
@ -50,6 +73,11 @@ class XunFeiAsrHelper(private val context: Context) {
isAutoDetectLanguage = isAutoDetect
removeFirstPunctuation = isRemoveFirstPunctuation
if (!isConfigValid()) {
callback.onError(currentSessionId, 1007, "Xunfei config missing")
return
}
val url = getWebSocketUrl()
val request = Request.Builder().url(url).build()

32
local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureAsrHelper.swift

@ -59,6 +59,9 @@ public class AzureAsrHelper: NSObject {
private var useXunfei = false
private var xunFeiAsrHelper: XunFeiAsrHelper?
private var xunfeiAppId: String = ""
private var xunfeiAccessKeyId: String = ""
private var xunfeiAccessKeySecret: String = ""
// 音频源配置
public enum AudioSourceType {
@ -77,6 +80,10 @@ public class AzureAsrHelper: NSObject {
// 音频处理
public var audioStream: SimpleAudioReceiver?
public func asrProvider() -> String {
return useXunfei ? "xunfei" : "azure"
}
/**
* 初始化Azure语音服务
*
@ -94,7 +101,10 @@ public class AzureAsrHelper: NSObject {
subscriptionKey: String,
region: String,
supportedLanguages: [String] = ["zh-CN", "en-US"],
audioSourceType: AudioSourceType = .microphone
audioSourceType: AudioSourceType = .microphone,
xunfeiAppId: String = "",
xunfeiAccessKeyId: String = "",
xunfeiAccessKeySecret: String = ""
) -> Bool {
do {
// 检查配置是否为空
@ -109,6 +119,9 @@ public class AzureAsrHelper: NSObject {
self.subscriptionKey = subscriptionKey
self.region = region
self.audioSourceType = audioSourceType
self.xunfeiAppId = xunfeiAppId
self.xunfeiAccessKeyId = xunfeiAccessKeyId
self.xunfeiAccessKeySecret = xunfeiAccessKeySecret
// 设置语言
if !supportedLanguages.isEmpty {
@ -116,7 +129,10 @@ public class AzureAsrHelper: NSObject {
}
// 检查是否只包含中文或英文,如果是则使用讯飞
self.useXunfei = supportedLanguages.allSatisfy { $0 == "zh-CN" || $0 == "en-US" }
let xunfeiConfigReady = !self.xunfeiAppId.isEmpty &&
!self.xunfeiAccessKeyId.isEmpty &&
!self.xunfeiAccessKeySecret.isEmpty
self.useXunfei = supportedLanguages.allSatisfy { $0 == "zh-CN" || $0 == "en-US" } && xunfeiConfigReady
// 根据支持的语言数量决定是否启用自动语言检测
self.isAutoDetectLanguage = supportedLanguages.count >= 2
@ -430,7 +446,17 @@ public class AzureAsrHelper: NSObject {
}
if xunFeiAsrHelper == nil {
xunFeiAsrHelper = XunFeiAsrHelper()
xunFeiAsrHelper = XunFeiAsrHelper(
appId: xunfeiAppId,
accessKeyId: xunfeiAccessKeyId,
accessKeySecret: xunfeiAccessKeySecret
)
} else {
xunFeiAsrHelper?.updateConfig(
appId: xunfeiAppId,
accessKeyId: xunfeiAccessKeyId,
accessKeySecret: xunfeiAccessKeySecret
)
}
// 启动讯飞识别

22
local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/AzureSpeechPlugin.swift

@ -224,6 +224,10 @@ internal func sendAsrEvent(_ event: [String: Any]) {
sendEvent(event, type: .asr)
}
internal func currentAsrProvider() -> String {
return azureAsrHelper.asrProvider()
}
private func sendTtsEvent(_ event: [String: Any]) {
sendEvent(event, type: .tts)
}
@ -336,13 +340,19 @@ private func sendAstEvent(_ event: [String: Any]) {
}
let supportedLanguages = args["supportedLanguages"] as? [String] ?? ["zh-CN"]
let xunfeiAppId = args["xunfeiAppId"] as? String ?? ""
let xunfeiAccessKeyId = args["xunfeiAccessKeyId"] as? String ?? ""
let xunfeiAccessKeySecret = args["xunfeiAccessKeySecret"] as? String ?? ""
// 初始化ASR引擎
let success = azureAsrHelper.initialize(
subscriptionKey: subscriptionKey,
region: region,
supportedLanguages: supportedLanguages,
audioSourceType: .microphone
audioSourceType: .microphone,
xunfeiAppId: xunfeiAppId,
xunfeiAccessKeyId: xunfeiAccessKeyId,
xunfeiAccessKeySecret: xunfeiAccessKeySecret
)
result(success)
@ -1283,6 +1293,7 @@ private class AsrCallbackWrapper: AzureAsrHelper.ContinuousRecognizeCallback {
plugin?.sendAsrEvent([
"type": "result",
"sessionid": sessionid,
"provider": plugin?.currentAsrProvider() ?? "",
"text": text,
"detectedLanguage": detectedLanguage
])
@ -1297,6 +1308,7 @@ private class AsrCallbackWrapper: AzureAsrHelper.ContinuousRecognizeCallback {
plugin?.sendAsrEvent([
"type": "recognizing",
"sessionid": sessionid,
"provider": plugin?.currentAsrProvider() ?? "",
"text": text,
"detectedLanguage": detectedLanguage
])
@ -1308,7 +1320,8 @@ private class AsrCallbackWrapper: AzureAsrHelper.ContinuousRecognizeCallback {
func onSessionStarted(sessionid:String) {
plugin?.sendAsrEvent([
"type": "sessionStarted",
"sessionid": sessionid
"sessionid": sessionid,
"provider": plugin?.currentAsrProvider() ?? ""
])
}
@ -1318,7 +1331,8 @@ private class AsrCallbackWrapper: AzureAsrHelper.ContinuousRecognizeCallback {
func onSessionStopped(sessionid:String) {
plugin?.sendAsrEvent([
"type": "sessionStopped",
"sessionid": sessionid
"sessionid": sessionid,
"provider": plugin?.currentAsrProvider() ?? ""
])
}
@ -1331,6 +1345,7 @@ private class AsrCallbackWrapper: AzureAsrHelper.ContinuousRecognizeCallback {
plugin?.sendAsrEvent([
"type": "canceled",
"sessionid": sessionid,
"provider": plugin?.currentAsrProvider() ?? "",
"reason": reason,
"errorDetails": errorDetails
])
@ -1345,6 +1360,7 @@ private class AsrCallbackWrapper: AzureAsrHelper.ContinuousRecognizeCallback {
plugin?.sendAsrEvent([
"type": "error",
"sessionid": sessionid,
"provider": plugin?.currentAsrProvider() ?? "",
"code": errorCode,
"message": error
])

32
local_plugins/azure_speech/ios/azure_speech/Sources/azure_speech/XunFeiAsrHelper.swift

@ -1,12 +1,16 @@
import Foundation
import CryptoKit
// 讯飞语音识别助手
//调用讯飞开放平台的实时语音转写大模型接口
// 参考文档:https://www.xfyun.cn/doc/spark/asr_llm/rtasr_llm.html
class XunFeiAsrHelper: NSObject, URLSessionWebSocketDelegate {
private let tag = "XunFeiAsrHelper"
private let appId = "43d87d22"
private let accessKeyId = "2bd01ce06ac35957fc0c082f9b6284ec"
private let accessKeySecret = "ODU3OTUyYjhjMjY5NDhkMmMxYWY2Zjlm"
private var appId: String
private var accessKeyId: String
private var accessKeySecret: String
private var webSocketTask: URLSessionWebSocketTask?
private lazy var session: URLSession = {
@ -26,6 +30,23 @@ class XunFeiAsrHelper: NSObject, URLSessionWebSocketDelegate {
private var callback: AzureAsrHelper.ContinuousRecognizeCallback?
init(appId: String, accessKeyId: String, accessKeySecret: String) {
self.appId = appId
self.accessKeyId = accessKeyId
self.accessKeySecret = accessKeySecret
super.init()
}
func updateConfig(appId: String, accessKeyId: String, accessKeySecret: String) {
self.appId = appId
self.accessKeyId = accessKeyId
self.accessKeySecret = accessKeySecret
}
private func isConfigValid() -> Bool {
return !appId.isEmpty && !accessKeyId.isEmpty && !accessKeySecret.isEmpty
}
func start(callback: AzureAsrHelper.ContinuousRecognizeCallback, language: String, isAutoDetect: Bool, isRemoveFirstPunctuation: Bool) {
stop()
@ -37,6 +58,11 @@ class XunFeiAsrHelper: NSObject, URLSessionWebSocketDelegate {
self.lastIntermediateResult = ""
self.sessionId = ""
if !isConfigValid() {
callback.onError(sessionid: self.currentSessionId, 1007, "Xunfei config missing")
return
}
let urlString = getWebSocketUrl()
guard let url = URL(string: urlString) else {
print("\(tag): Invalid URL")

Loading…
Cancel
Save