Browse Source

feat(i18n): 完善多语言翻译并添加翻译测试

- 更新中文(简体、繁体、香港)翻译,将英文占位符替换为本地化文本
- 改进阿拉伯语、希腊语、韩语、爱沙尼亚语、乌克兰语、波兰语、克罗地亚语、拉脱维亚语、越南语、德语、日语等语言的翻译准确性
- 为法语、日语、挪威语、冰岛语翻译添加单元测试,验证键完整性和占位符一致性
- 添加日语翻译修复脚本,自动替换英文占位符为日文
- 统一商品名称、权限描述、时间单位等术语的本地化表达
newdev_shunjiawei
lxm 7 months ago
parent
commit
a70f5903d4
  1. 97
      fix_ja_jp.py
  2. 10
      lib/core/translations/language/ar_sa.dart
  3. 110
      lib/core/translations/language/bg_bg.dart
  4. 212
      lib/core/translations/language/cs_cz.dart
  5. 240
      lib/core/translations/language/da_dk.dart
  6. 130
      lib/core/translations/language/de_de.dart
  7. 12
      lib/core/translations/language/el_gr.dart
  8. 16
      lib/core/translations/language/et_ee.dart
  9. 402
      lib/core/translations/language/fi_fi.dart
  10. 355
      lib/core/translations/language/fr_fr.dart
  11. 50
      lib/core/translations/language/hi_in.dart
  12. 46
      lib/core/translations/language/hr_hr.dart
  13. 67
      lib/core/translations/language/hu_hu.dart
  14. 550
      lib/core/translations/language/id_id.dart
  15. 465
      lib/core/translations/language/is_is.dart
  16. 226
      lib/core/translations/language/it_it.dart
  17. 75
      lib/core/translations/language/ja_jp.dart
  18. 16
      lib/core/translations/language/ko_kr.dart
  19. 53
      lib/core/translations/language/lt_lt.dart
  20. 60
      lib/core/translations/language/lv_lv.dart
  21. 694
      lib/core/translations/language/ms_my.dart
  22. 606
      lib/core/translations/language/nb_no.dart
  23. 978
      lib/core/translations/language/nl_nl.dart
  24. 37
      lib/core/translations/language/pl_pl.dart
  25. 312
      lib/core/translations/language/pt_pt.dart
  26. 426
      lib/core/translations/language/ro_ro.dart
  27. 255
      lib/core/translations/language/ru_ru.dart
  28. 642
      lib/core/translations/language/sk_sk.dart
  29. 649
      lib/core/translations/language/sl_si.dart
  30. 436
      lib/core/translations/language/tl_ph.dart
  31. 244
      lib/core/translations/language/tr_tr.dart
  32. 22
      lib/core/translations/language/uk_ua.dart
  33. 166
      lib/core/translations/language/vi_vn.dart
  34. 2
      lib/core/translations/language/zh_cn.dart
  35. 69
      lib/core/translations/language/zh_hk.dart
  36. 73
      lib/core/translations/language/zh_tw.dart
  37. 22
      test/fr_fr_translations_test.dart
  38. 78
      test/is_is_translations_test.dart
  39. 22
      test/ja_jp_translations_test.dart
  40. 22
      test/nb_no_translations_test.dart

97
fix_ja_jp.py

@ -0,0 +1,97 @@
#!/usr/bin/env python3
"""
Fix Japanese translation file: replace English/Chinese placeholders with proper Japanese.
Brand names (Voitrans, Lily, WeChat, Alipay, PayPal, Apple, Google, Bluetooth, BLE, OTA,
AI, ASR, TTS, VOITRANS, AIPEN, VoiTrans, DeepSound) are kept as-is.
"""
import re
filepath = 'lib/core/translations/language/ja_jp.dart'
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
# Each tuple: (old_string, new_string)
# We use exact string replacement to be safe.
replacements = [
# ---- English-only entries that need translation ----
# viewAll
(" 'viewAll': 'View All',",
" 'viewAll': 'すべて表示',"),
# proMonthly – price tag, keep currency but translate label
(" 'proMonthly': 'Pro ¥60/month',",
" 'proMonthly': 'Pro ¥60/月',"),
# proMonthlyDesc – multiline
(" 'proMonthlyDesc':\n '7-day free trial, then ¥800/year. Cancel anytime before trial ends.',",
" 'proMonthlyDesc':\n '7日間無料トライアル、その後¥800/年。トライアル終了前にいつでもキャンセル可能。',"),
# proMonthlyPrice
(" 'proMonthlyPrice': '¥120/month',",
" 'proMonthlyPrice': '¥120/月',"),
# unlimitedMonthlyPrice
(" 'unlimitedMonthlyPrice': '¥198/month',",
" 'unlimitedMonthlyPrice': '¥198/月',"),
# currentQuality
(' "currentQuality": "Current quality: @value%",',
' "currentQuality": "現在の品質: @value%",'),
# currentMaxSize
(' "currentMaxSize": "Current: @pxpx",',
' "currentMaxSize": "現在: @pxpx",'),
# allStepsCompleted
(' "allStepsCompleted": "All steps completed",',
' "allStepsCompleted": "すべてのステップが完了しました",'),
# clean / Clear Cache
(" 'clean': 'Clear Cache',",
" 'clean': 'キャッシュをクリア',"),
# cleanTips
(" 'cleanTips': 'Are you sure you want to clear personal cache?',",
" 'cleanTips': '個人キャッシュをクリアしてもよろしいですか?',"),
# permissionUtilNeed
(" 'permissionUtilNeed': 'Need ',",
" 'permissionUtilNeed': '必要:',"),
# iapCustomerServiceQQLabel
(" 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',",
" 'iapCustomerServiceQQLabel': 'IAP カスタマーサービス QQ: @qq',"),
# tsransit (transit / 公交)
(' "tsransit": "Transit",',
' "tsransit": "乗り換え",'),
# sixThousandMinutes / threeThousandMinutes / sixHundredMinutes / oneHundredTwentyMinutes
(" 'sixThousandMinutes': '6,000 minutes',",
" 'sixThousandMinutes': '6,000分',"),
(" 'threeThousandMinutes': '3,000 minutes',",
" 'threeThousandMinutes': '3,000分',"),
(" 'sixHundredMinutes': '600 minutes',",
" 'sixHundredMinutes': '600分',"),
(" 'oneHundredTwentyMinutes': '120 minutes',",
" 'oneHundredTwentyMinutes': '120分',"),
]
original = content
for old, new in replacements:
if old in content:
content = content.replace(old, new)
print(f'REPLACED: {repr(old[:60])}')
else:
print(f'NOT FOUND: {repr(old[:60])}')
if content != original:
with open(filepath, 'w', encoding='utf-8') as f:
f.write(content)
print('\nFile updated successfully.')
else:
print('\nNo changes made.')

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

@ -902,11 +902,11 @@ const Map<String, String> arSA = {
'generatedByAi': 'تم إنشاؤه بواسطة AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'استدعاء الأداة',
'noResult': 'لا توجد نتيجة',
'noToolCallContentToCopy': 'لا يوجد محتوى لاستدعاء الأداة للنسخ',
'toolCallDetails': 'تفاصيل استدعاء الأداة:',
'toolCallContentCopied': 'تم نسخ محتوى استدعاء الأداة إلى الحافظة',
// Agent模块 - 音乐卡片
'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:',

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

@ -185,10 +185,10 @@ const Map<String, String> bgBG = {
'bleDisconnected': 'Прекъсната връзка',
'bleDeviceDisconnected': 'Устройството е прекъснато',
'bleDisconnectFailedWithError': 'Неуспешно прекъсване на връзката: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
'signalStrong': 'Силен',
'signalMedium': 'Среден',
'signalWeak': 'Слаб',
'signalVeryWeak': 'Много слаб',
// 发现页
"searchAi": "Търсене на AI функции...",
@ -563,12 +563,12 @@ const Map<String, String> bgBG = {
'nameSpeaker': 'Име на говорител',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Обобщи отново',
'dateAndTime': 'Дата и час',
'location': 'Местоположение',
'attendees': 'Участници',
'inputLocation': 'Въведете местоположение',
'inputAttendees': 'Въведете участници',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Избери шаблон за резюме',
@ -599,57 +599,57 @@ const Map<String, String> bgBG = {
'AI анализът идентифицира ключови събития в записите, позволявайки ви да изберете важни събития за AI генериране.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Импортиране...',
'batchImporting': 'Пакетно импортиране...',
'importingLocalRecordings': 'Импортиране на локални записи...',
'importFailed': 'Неуспешен импорт на файл: {filePath}, грешка: {error}',
'importSuccess': 'Успешно импортирани {count} локални записа',
'importError': 'Неуспешен импорт: {error}',
'pleaseSelectAudioFile': 'Моля, изберете аудио файл',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Споделяне на аудио от срещата',
'shareComplete': 'Споделянето завърши!',
'shareFailed': 'Неуспешно споделяне: {error}',
'fileProcessingFailed':
'Неуспешна обработка на файл: {filePath}, грешка: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Запази интелектуална карта',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'Споделяне на мисловна карта',
'shareSuccess': 'Успешно споделяне',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Попитай AI...',
'askAIPrompt': 'С какво мога да ви помогна днес?',
'continueAsk': 'Продължи с въпроси',
'todoList': 'Списък със задачи',
'extractConclusion': 'Извлечи заключение',
'generateKeyIndicators': 'Генерирай ключови показатели',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Споделяне на връзка',
'copyTranscript': 'Копиране на протокола',
'copySummary': 'Копиране на резюмето',
'exportAudio': 'Експортиране на аудио',
'exportTranscript': 'Експортиране на протокола',
'shareMeetingAudio': 'Споделяне на аудио от срещата',
'exportSummary': 'Експортиране на резюмето',
'exportAs': 'Експортирай като',
'exportingPDF': 'Експортиране на PDF...',
'export': 'Експортиране',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Приложи към всички абзаци на този говорител',
'summaryWillBeUpdatedAutomatically':
'Резюмето ще се обновява автоматично според шаблона',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Именувай текущия говорител',
'recentlyUsedNames': 'Скоро използвани имена',
'applyToCurrentParagraph': 'Приложи към текущия абзац',
'totalTime': 'Общо време',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'Синхронизирай в облака',
'syncToCloudTip':
'Автоматично синхронизирайте записите си в облака. Можете да възпроизвеждате, управлявате и споделяте записи чрез всяко приложение VOITRANS или VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Синхронизирай с VOITRANS APP',
@ -741,12 +741,12 @@ const Map<String, String> bgBG = {
// Meeting模块 - 录音语言
'recordLanguage': 'Език на записа',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Кантонски',
'sichuan': 'Съчуански диалект',
'shanghai': 'Шанхайски диалект',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Неизвестен език',
'analysisFailed': 'Анализът не успя, моля опитайте отново по-късно',
'transcriptionFailed':
'Транскрипцията не успя, моля опитайте отново по-късно',
@ -925,11 +925,11 @@ const Map<String, String> bgBG = {
'generatedByAi': 'Генерирано от AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'Извикване на инструмент',
'noResult': 'Няма резултат',
'noToolCallContentToCopy': 'Няма съдържание за копиране',
'toolCallDetails': 'Детайли на извикването:',
'toolCallContentCopied': 'Съдържанието е копирано в клипборда',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Ето някои препоръчани музики:',
@ -952,27 +952,27 @@ const Map<String, String> bgBG = {
"tsransit": "Обществен транспорт",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'selectNavigationApp': 'Избери навигационно приложение',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'useAmapNavigation': 'Навигирай с Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'useBaiduNavigation': 'Навигирай с Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'useGoogleNavigation': 'Навигирай с Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'useAppleNavigation': 'Навигирай с Apple Maps',
'builtInNavigation': 'Вградена навигация',
'useBuiltInNavigation': 'Навигирай с вградена карта',
'navigationStartFailed': 'Неуспешно стартиране на навигацията',
'cannotPlayMusicListRetryLater':
'Не може да се възпроизведе музикалният списък, моля опитайте отново по-късно',
'cannotPlaySong': 'Cannot play song',
'cannotPlaySong': 'Не може да се възпроизведе песен',
'openMapError': 'Грешка при отваряне на картата',
'pleaseInstallAmapApp': 'Моля, първо инсталирайте приложението Amap',
'pleaseInstallBaiduMapApp':
'Моля, първо инсталирайте приложението Baidu Maps',
'appleMapStartFailed': 'Неуспешно стартиране на Apple Maps',
'appleMapUnavailable': 'Apple Maps unavailable',
'appleMapUnavailable': 'Apple Maps не е налично',
'openAppleMapError': 'Грешка при отваряне на Apple Maps',
// Agent模块 - 天气卡片
@ -1225,7 +1225,7 @@ const Map<String, String> bgBG = {
'AccountService е инициализиран', // AccountService 已初始化
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermission': 'Съхранение',
'meetingStoragePermissionExplanation':
'Нуждаем се от достъп до разрешения за съхранение, за да можете да избирате и качвате аудио файлове.',
'meetingStoragePermissionPermanentDenial':
@ -1501,7 +1501,7 @@ const Map<String, String> bgBG = {
"Извадете двете слушалки и се уверете, че батерията на двете е над 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaNewVersionFoundWithVersion': 'Намерена е нова версия @version',
'otaConfirmUpdateNow': 'Да се актуализира ли сега?',
'otaUpdate': 'Актуализиране',
'otaUpgradeSuccess': 'Успешна актуализация',

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

@ -184,10 +184,10 @@ const Map<String, String> csCZ = {
'bleDisconnected': 'Odpojeno',
'bleDeviceDisconnected': 'Zařízení odpojeno',
'bleDisconnectFailedWithError': 'Odpojení selhalo: @error',
'signalStrong': 'Strong',
'signalMedium': 'Medium',
'signalWeak': 'Weak',
'signalVeryWeak': 'Very Weak',
'signalStrong': 'Silný',
'signalMedium': 'Střední',
'signalWeak': 'Slabý',
'signalVeryWeak': 'Velmi slabý',
// 发现页
"searchAi": "Hledat AI funkce...",
@ -555,17 +555,17 @@ const Map<String, String> csCZ = {
'nameSpeaker': 'Pojmenovat mluvčího',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Znovu shrnout',
'dateAndTime': 'Datum a čas',
'location': 'Místo',
'attendees': 'Účastníci',
'inputLocation': 'Zadejte místo',
'inputAttendees': 'Zadejte účastníky',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Vyberte šablonu shrnutí',
'useThisTemplate': 'Použít tuto šablonu',
'lastUsed': 'Naposledy použito',
'create': 'Vytvořit',
'templateDetails': 'Podrobnosti šablony',
'tag': 'Štítek',
@ -582,69 +582,69 @@ const Map<String, String> csCZ = {
'inputDescHint': 'Zadejte prosím popis',
'custom': 'Vlastní',
'pleaseEnter': 'Prosím zadejte',
'viewAll': 'View All',
'viewAll': 'Zobrazit vše',
'recordingLanguage': 'Jazyk nahrávání',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Čínština – mandarínština (zjednodušená)',
'meetingGenerateNow': 'Generovat nyní',
'keyEventsAnalyzed': 'Analyzováno {count} klíčových událostí.',
'aiAnalysisDesc':
'AI analýza identifikuje klíčové události v nahrávkách a umožňuje vám vybrat důležité události pro generování pomocí AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Importování...',
'batchImporting': 'Hromadné importování...',
'importingLocalRecordings': 'Importování místních nahrávek...',
'importFailed': 'Import souboru selhal: {filePath}, chyba: {error}',
'importSuccess': 'Úspěšně importováno {count} místních nahrávek',
'importError': 'Import selhal: {error}',
'pleaseSelectAudioFile': 'Vyberte prosím zvukový soubor',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Sdílet zvuk schůzky',
'shareComplete': 'Sdílení dokončeno!',
'shareFailed': 'Sdílení selhalo: {error}',
'fileProcessingFailed':
'Zpracování souboru selhalo: {filePath}, chyba: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Uložit myšlenkovou mapu',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'Sdílet myšlenkovou mapu',
'shareSuccess': 'Sdílení úspěšné',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Zeptat se AI ...',
'askAIPrompt': 'S čím vám dnes mohu pomoci?',
'continueAsk': 'Pokračovat v dotazování',
'todoList': 'Seznam úkolů',
'extractConclusion': 'Extrahovat závěr',
'generateKeyIndicators': 'Generovat klíčové ukazatele',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Sdílet odkaz',
'copyTranscript': 'Kopírovat přepis',
'copySummary': 'Kopírovat shrnutí',
'exportAudio': 'Exportovat zvuk',
'exportTranscript': 'Exportovat přepis',
'shareMeetingAudio': 'Sdílet zvuk schůzky',
'exportSummary': 'Exportovat shrnutí',
'exportAs': 'Exportovat jako',
'exportingPDF': 'Exportování PDF...',
'export': 'Exportovat',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Použít na všechny odstavce tohoto mluvčího',
'summaryWillBeUpdatedAutomatically':
'Souhrn se bude automaticky aktualizovat podle šablony',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Pojmenovat aktuálního mluvčího',
'recentlyUsedNames': 'Nedávno použitá jména',
'applyToCurrentParagraph': 'Použít na aktuální odstavec',
'totalTime': 'Celkový čas',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Mluvčí v shrnutí budou automaticky aktualizováni',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'Synchronizovat do cloudu',
'syncToCloudTip':
'Automaticky synchronizujte nahrávky do cloudu. Nahrávky můžete přehrávat, spravovat a sdílet prostřednictvím libovolné aplikace VOITRANS nebo VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'syncToVoitransApp': 'Synchronizovat VOITRANS APP',
'transcriptionRecord': 'Záznam přepisu',
// Meeting模块 - 我的页面
@ -702,42 +702,42 @@ const Map<String, String> csCZ = {
'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.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Upgradovat členství',
'yearlySubscription': 'Roční předplatné',
'monthlySubscription': 'Měsíční předplatné',
'proMonthly': 'Pro ¥60/měsíc',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'7denní zkušební verze zdarma, poté ¥800/rok. Zrušte kdykoli před koncem zkušební doby.',
'sevenDayTrial': '7denní zkušební verze zdarma',
'unlimitedMonthly': 'Neomezené ¥120/měsíc',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'7denní zkušební verze zdarma, poté ¥1600/rok. Zrušte kdykoli před koncem zkušební doby.',
'trialNote': '*7 dní zdarma, poté roční poplatek, zrušte kdykoli.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'proMonthlyPrice': '¥120/měsíc',
'subscribe': 'Přihlásit k odběru',
'unlimitedPrice': 'Neomezené ¥198',
'unlimitedMonthlyPrice': '¥198/měsíc',
'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: ',
'*Po upgradu předplatného budou zbývající dny původního předplatného automaticky vypočítány a vráceny na váš platební účet',
'buyMoreTranscriptionTime': 'Koupit více času přepisu',
'sixThousandMinutes': '6 000 minut',
'threeThousandMinutes': '3 000 minut',
'sixHundredMinutes': '600 minut',
'oneHundredTwentyMinutes': '120 minut',
'validityPeriod': '*Doba platnosti: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Aktivováno ihned po zakoupení, platné 2 roky po aktivaci.',
'purchase': 'Zakoupit',
// Meeting模块 - 录音语言
'recordLanguage': 'Jazyk nahrávání',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantonština',
'sichuan': 'Sečuánské nářečí',
'shanghai': 'Šanghajské nářečí',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Neznámý jazyk',
'analysisFailed': 'Analýza se nezdařila, zkuste to prosím později',
'transcriptionFailed': 'Přepis se nezdařil, zkuste to prosím později',
'summaryFailed': 'Nepodařilo se vytvořit shrnutí, zkuste to prosím později',
@ -912,11 +912,11 @@ const Map<String, String> csCZ = {
'generatedByAi': 'Generováno AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'Volání nástroje',
'noResult': 'Žádný výsledek',
'noToolCallContentToCopy': 'Žádný obsah volání nástroje ke kopírování',
'toolCallDetails': 'Podrobnosti volání nástroje:',
'toolCallContentCopied': 'Obsah volání nástroje zkopírován do schránky',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Zde jsou některé doporučené hudby:',
@ -939,26 +939,26 @@ const Map<String, String> csCZ = {
"tsransit": "Veřejná doprava",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'selectNavigationApp': 'Vybrat navigační aplikaci',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'useAmapNavigation': 'Navigovat pomocí Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'useBaiduNavigation': 'Navigovat pomocí Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'useGoogleNavigation': 'Navigovat pomocí Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'useAppleNavigation': 'Navigovat pomocí Apple Maps',
'builtInNavigation': 'Vestavěná navigace',
'useBuiltInNavigation': 'Navigovat pomocí vestavěné mapy',
'navigationStartFailed': 'Spuštění navigace selhalo',
'cannotPlayMusicListRetryLater':
'Nelze přehrát seznam hudby, zkuste to prosím později',
'cannotPlaySong': 'Cannot play song',
'cannotPlaySong': 'Nelze přehrát píseň',
'openMapError': 'Chyba při otevírání mapy',
'pleaseInstallAmapApp': 'Nejprve prosím nainstalujte aplikaci Amap',
'pleaseInstallBaiduMapApp': 'Nejprve prosím nainstalujte aplikaci Baidu Maps',
'appleMapStartFailed': 'Spuštění Apple Maps selhalo',
'appleMapUnavailable': 'Apple Maps unavailable',
'appleMapUnavailable': 'Apple Maps není k dispozici',
'openAppleMapError': 'Chyba při otevírání Apple Maps',
// Agent模块 - 天气卡片
@ -1042,7 +1042,7 @@ const Map<String, String> csCZ = {
'Pro nahrávání je vyžadováno oprávnění k mikrofonu',
'deleteTranslationRecordError': 'Chyba při mazání záznamu překladu: @error',
"translationFailed": "Překlad selhal",
"translating": "Translating",
"translating": "Překládání",
"translate": "Přeložit",
"pleaseInputText": "Zadejte prosím text",
"inputTextToTranslate": "Zadejte text k překladu",
@ -1162,8 +1162,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?',
'clean': 'Vymazat mezipaměť',
'cleanTips': 'Opravdu chcete vymazat osobní mezipaměť?',
'networkConnectionFailed':
'Připojení k síti selhalo, zkontrolujte prosím nastavení sítě a zkuste to znovu',
'serverTemporarilyUnavailable':
@ -1203,7 +1203,7 @@ const Map<String, String> csCZ = {
'AccountService byl inicializován', // AccountService 已初始化
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermission': 'Úložiště',
'meetingStoragePermissionExplanation':
'Potřebujeme přístup k oprávnění úložiště, abyste mohli vybírat a nahrávat zvukové soubory.',
'meetingStoragePermissionPermanentDenial':
@ -1473,14 +1473,14 @@ const Map<String, String> csCZ = {
"Vyjměte obě sluchátka a ujistěte se, že baterie obou je nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaNewVersionFoundWithVersion': 'Nalezena nová verze @version',
'otaConfirmUpdateNow': 'Aktualizovat nyní?',
'otaUpdate': 'Aktualizovat',
'otaUpgradeSuccess': 'Aktualizace úspěšná',
'otaUpgradeCompleteRepair':
'Aktualizace firmwaru dokončena!\n\nPro správné fungování je třeba zařízení znovu spárovat. Přejít na stránku párování?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'otaPairLater': 'Spárovat později',
'otaPairNow': 'Spárovat nyní',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
@ -1496,8 +1496,8 @@ const Map<String, String> csCZ = {
'Nelze získat informace o zařízení, zkontrolujte prosím připojení zařízení',
'otaCannotGetProductInfoWithName':
'Nelze získat informace o produktu, název zařízení: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaCannotGetBatteryInfo': 'Nelze získat platné informace o baterii',
'otaLowBattery': 'Nízká baterie',
'otaSingleBatteryLow':
'Baterie zařízení je příliš slabá pro aktualizaci firmwaru\nPožadavek: baterie musí být nad 20 %\nAktuálně: @ear @battery %\nNabijte prosím zařízení a zkuste to znovu',
'otaDoubleBatteryLow':
@ -1506,7 +1506,7 @@ const Map<String, String> csCZ = {
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'Tato aktualizace zahrnuje optimalizace výkonu a opravy chyb.',
'otaGetLatestVersionFailed':
'Nepodařilo se získat informace o nejnovější verzi',
'otaGetVersionInfoFailed': 'Nepodařilo se získat informace o verzi',
@ -1516,8 +1516,8 @@ const Map<String, String> csCZ = {
'otaDownloadFailed': 'Stahování selhalo',
'otaPreparingConnection': 'Příprava připojení zařízení...',
'otaConnectingDevice': 'Připojování k zařízení...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeStarted': 'OTA aktualizace zahájena...',
'otaUpgradeProgressWithPercent': 'Průběh aktualizace: @percent %',
'otaUpgradeSuccessComplete': 'Aktualizace byla úspěšně dokončena',
'otaUpgradeFailedWithCode': 'Aktualizace selhala, kód chyby: @code',
'otaUpgradeFailedTitle': 'Aktualizace selhala',
@ -1681,15 +1681,15 @@ const Map<String, String> csCZ = {
"东帝汶": "Východní Timor",
"斐济": "Fidži",
"所罗门群岛": "Šalamounovy ostrovy",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Demokratická republika Kongo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"苏丹": "Súdán",
"马尔代夫": "Maledivy",
"不丹": "Bhútán",
"摩纳哥": "Monako",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"牙买加": "Jamajka",
"巴哈马": "Bahamy",
"巴布亚新几内亚": "Papua Nová Guinea",
"萨摩亚": "Samoa",
};

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

@ -49,9 +49,9 @@ const Map<String, String> daDK = {
"russian": "Russisk",
"vietnamese": "Vietnamesisk",
"italian": "Italiensk",
"hindi": "Hindi",
"hindi": 'Hindi',
"indonesian": "Indonesisk",
"thai": "Thai",
"thai": 'Thai',
"malay": "Malaysisk",
"turkish": "Tyrkisk",
"polish": "Polsk",
@ -96,7 +96,7 @@ const Map<String, String> daDK = {
"pleaseEnterContactInfo": "Indtast venligst telefonnummer eller e-mail",
"invalidEmailFormat": "Ugyldigt e-mail format",
"invalidPhoneFormat": "Ugyldigt telefonnummer format",
"tip": "Tip",
"tip": 'Tip',
"pleaseEnterCompleteCode": "Indtast venligst den komplette verifikationskode",
"loginFailed": "Login mislykkedes, prøv venligst igen",
'pleaseAcceptPrivacyPolicy':
@ -119,7 +119,7 @@ const Map<String, String> daDK = {
"reconnect": "Tilslut igen",
"connectingDevice": "Tilslutter enhed...",
"connectedTo": "Tilsluttet til",
"signal": "Signal",
"signal": 'Signal',
"deviceId": "Enheds-ID",
"firmwareVersion": "Firmware version",
"disconnectedDevice": "Ingen tilsluttet enhed, klik på knappen nedenfor",
@ -216,7 +216,7 @@ const Map<String, String> daDK = {
"scene": "Scenarier",
// 用量统计模块
"aiChat": "AI Chat",
"aiChat": 'AI-chat',
"translationStats": "Oversættelsesstatistik",
"meetingStats": "Mødestatistik",
"today": "I dag",
@ -414,9 +414,9 @@ const Map<String, String> daDK = {
'Faktiske fordele afhænger af pakkedetaljerne og kan ændre sig med versioner.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100',
'ai_002_name': 'AI Basic 500',
'ai_003_name': 'AI Basic 1000',
'ai_001_name': 'AI Basis 100',
'ai_002_name': 'AI Basis 500',
'ai_003_name': 'AI Basis 1000',
'meet_001_name': 'Møde Basic 100',
'meet_002_name': 'Møde Basic 500',
'meet_003_name': 'Møde Basic 1000',
@ -489,7 +489,7 @@ const Map<String, String> daDK = {
'aiSummary': 'AI sammendrag',
'meetingTranscript': 'Mødeudskrift',
'files': 'Filer',
'mine': 'Mine',
'mine': 'Min',
'connect': 'Tilslut',
'allFiles': 'Alle filer',
'searchInAllFiles': 'Søg i alle filer',
@ -570,7 +570,7 @@ const Map<String, String> daDK = {
'lastUsed': 'Sidst brugt',
'create': 'Opret',
'templateDetails': 'Skabelondetaljer',
'tag': 'Tag',
'tag': 'Mærke',
'description': 'Beskrivelse',
'template': 'Skabelon',
'deleteTemplate': 'Slet skabelon',
@ -779,7 +779,7 @@ const Map<String, String> daDK = {
"permissionManagementInfo":
"Administrer app tilladelsesindstillinger", // 管理应用权限设置
"aboutApplication": "Om app",
"versions": "Version",
"versions": 'Version',
"checkUpdates": "Tjek for opdateringer",
"selectLanguage": "Vælg sprog",
"voiceService": "Stemmetjeneste",
@ -814,24 +814,24 @@ const Map<String, String> daDK = {
// 设备管理模块
"deviceTypeUnknown": "Ukendt enhed",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeClassicBluetoothHeadset": "Klassisk Bluetooth-headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth-headset",
"deviceTypeSmartVoiceRecorder": "Smart stemmeoptager",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeSmartEye": "Smarte briller",
"unbind": "Afbind",
"noDevicesBound": "Ingen enheder bundet endnu",
"pleaseBindDeviceFirst": "Bind venligst en enhed først for at administrere",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"noMacAddress": "Ingen MAC-adresse",
"licenseCode": "Licensnøgle",
"confirmUnbind": "Bekræft afbinding",
"confirmUnbindMessage":
"Er du sikker på, at du vil afbinde enheden \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
"confirmUnbindAction": "Bekræft afbinding",
// Agent模块 - 主界面
"Lily": "Lily",
"clearChatHistory": "Ryd chathistorik",
"online": "Online",
"online": 'Online',
"ttsSpeed": "Talefart",
"ttsSpeedDefaultHint": "Standard +25%",
"inputMessage": "Indtast besked...",
@ -1029,11 +1029,11 @@ const Map<String, String> daDK = {
"phoneUser": "Telefon bruger",
"selectSourceLanguage": "Vælg kildesprog",
"selectTargetLanguage": "Vælg målsprog",
"me": "Me",
"counterPart": "Counterpart",
"me": "Mig",
"counterPart": "Modpart",
"bluetoothCallStateError":
"Sørg venligst for, at Bluetooth-headsettet er forbundet til telefonen og i opkaldstilstand",
"autoDetect": "Auto Detect", // 自动检测
"autoDetect": "Automatisk registrering", // 自动检测
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Sprogregistrering mislykkedes",
@ -1051,12 +1051,12 @@ const Map<String, String> daDK = {
"translate": "Oversæt",
"pleaseInputText": "Indtast venligst tekst",
"inputTextToTranslate": "Indtast venligst teksten, der skal oversættes",
"textTooLong": "Text too long, max 5000 characters",
"textTooLong": "Teksten er for lang, maks. 5000 tegn",
// 翻译模块 - 历史记录
"noTranslationHistory": "Ingen oversættelseshistorik",
"historyRecords": "Historik",
"clearResults": "Clear Results",
"clearResults": "Ryd resultater",
"clearHistory": "Ryd historik",
"clearHistoryConfirm":
"Er du sikker på, at du vil rydde hele oversættelseshistorikken? Denne handling kan ikke fortrydes.",
@ -1066,40 +1066,40 @@ const Map<String, String> daDK = {
"Er du sikker på, at du vil slette alle oversættelsesoptegnelser for denne session? Denne handling kan ikke fortrydes.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"selectImageSource": "Vælg billedkilde",
"imagePreview": "Billedforhåndsvisning",
"translationResult": "Oversættelsesresultat",
"recognitionResult": "Recognition Result",
"recognitionResult": "Genkendelseresultat",
"translatedImagePreview": "Forhåndsvisning af oversat billede",
"translatedImageLoadFailed": "Kunne ikke indlæse oversat billede",
"pleaseSelectImage": "Vælg venligst et billede",
"imageLoadFailed": "Billedindlæsning mislykkedes",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"waitingForAction": "Waiting for action",
"imageQuality": "Billedkvalitet",
"maxSize": "Maks. størrelse",
"close": "Luk",
"setImageQuality": "Indstil billedkvalitet",
"currentQuality": "Nuværende kvalitet: @value%",
"setMaxSize": "Indstil maks. størrelse",
"currentMaxSize": "Nuværende: @pxpx",
"waitingForAction": "Venter på handling",
"pleaseSelectImageToStart": "Vælg venligst et billede for at starte",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"chooseImage": "Vælg billede",
"openingCamera": "Åbner kamera...",
"openingPhotoAlbum": "Åbner fotoalbum...",
"cancelled": "Annulleret",
"userCancelledSelection": "Bruger annullerede valget",
"translatingImage": "Oversætter billede",
"callingImageTranslateService": "Kalder billedoversættelsestjeneste...",
"savingRecord": "Gemmer optegnelse",
"savingTranslationResult": "Gemmer oversættelsesresultat...",
"translationCompleted": "Oversættelse fuldført",
"allStepsCompleted": "All steps completed",
"allStepsCompleted": "Alle trin fuldført",
"processingFailed": "Behandling mislykkedes",
"imageProcessingOrTranslationFailed":
"Billedbehandling eller oversættelse mislykkedes. Prøv venligst igen.\nFejl: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Billedstørrelse overstiger 4 MB-grænsen",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Billedstørrelse overstiger 4 MB. Reducer kvalitet eller dimensioner og prøv igen",
"emptyTranslationResult": "Billedoversættelses-API returnerede tomt resultat",
"imageTranslationFailedTryLater":
"Billedoversættelse mislykkedes. Netværksproblem eller hastighedsbegrænsning. Prøv venligst igen senere",
@ -1110,11 +1110,11 @@ const Map<String, String> daDK = {
"photoAlbumPermissionRequired":
"Fotoalbumtilladelse kræves for at vælge billeder",
"translationDetails": "Oversættelsesdetaljer",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": "Originalt billede",
"sourceLanguage": "Kildesprog",
"targetLanguage": "Målsprog",
"translationTime": "Oversættelsestid",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": "Delingsfunktion er under udvikling",
// 翻译模块 - 录音文件
"translateAudioFiles": "Oversæt lydfiler",
@ -1154,7 +1154,7 @@ const Map<String, String> daDK = {
// 个人资料模块
"editProfile": "Rediger personlige oplysninger",
"avatar": "Avatar",
"avatar": "Profilbillede",
"nickname": "Kaldenavn",
"save": "Gem",
"about": "Om",
@ -1166,8 +1166,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?',
'clean': 'Ryd cache',
'cleanTips': 'Er du sikker på, at du vil rydde din personlige cache?',
'networkConnectionFailed':
'Netværksforbindelse mislykkedes, tjek venligst netværksindstillinger og prøv igen',
'serverTemporarilyUnavailable':
@ -1280,7 +1280,7 @@ const Map<String, String> daDK = {
'permanentDenialText':
'Du har permanent nægtet {permission} tilladelse, gå venligst til app-indstillinger for at aktivere det',
'goToSettings': 'Gå til indstillinger',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothScan': 'Bluetooth-scanning',
'bluetoothConnect': 'Bluetooth Forbindelse',
'bluetoothScanExplanation':
'Appen har brug for Bluetooth-scanningstilladelse til at scanne efter Bluetooth-enheder i nærheden.',
@ -1348,7 +1348,7 @@ const Map<String, String> daDK = {
// 配对模块
"devicePairing": "Enhedsparring",
"connectYourDeepSoundHeadset": "Tilslut dine Voitrans øretelefoner",
"bind": "Bind",
"bind": 'Tilknyt',
"authorizeBind": "Autoriser binding",
"enterCode": "Indtast venligst kode",
"autoInputCode": "Automatisk kodeinput",
@ -1559,25 +1559,25 @@ const Map<String, String> daDK = {
"克罗地亚语": "Kroatisk",
"加泰隆语": "Catalansk",
"阿拉伯语": "Arabisk",
"泰语": "Thai",
"泰语": 'Thai',
"越南语": "Vietnamesisk",
"印尼语": "Indonesisk",
"印地语": "Hindi",
"印地语": 'Hindi',
"土耳其语": "Tyrkisk",
"马来语": "Malaysisk",
"孟加拉语": "Bengali",
"泰米尔语": "Tamil",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"乌尔都语": "Urdu",
"孟加拉语": 'Bengali',
"泰米尔语": 'Tamil',
"泰卢固语": 'Telugu',
"马拉提语": 'Marathi',
"乌尔都语": 'Urdu',
"波斯语": "Persisk",
"斯瓦希里语": "Swahili",
"斯瓦希里语": 'Swahili',
// 国家列表
"邮箱": "E-mail",
"中国": "Kina",
"美国": "USA",
"加拿大": "Canada",
"加拿大": 'Canada',
"俄罗斯": "Rusland",
"英国": "Storbritannien",
"德国": "Tyskland",
@ -1587,22 +1587,22 @@ const Map<String, String> daDK = {
"南非": "Sydafrika",
"沙特阿拉伯": "Saudi-Arabien",
"土耳其": "Tyrkiet",
"日本": "Japan",
"日本": 'Japan',
"韩国": "Sydkorea",
"新加坡": "Singapore",
"马来西亚": "Malaysia",
"泰国": "Thailand",
"越南": "Vietnam",
"新加坡": 'Singapore',
"马来西亚": 'Malaysia',
"泰国": 'Thailand',
"越南": 'Vietnam',
"印度": "Indien",
"巴基斯坦": "Pakistan",
"巴基斯坦": 'Pakistan',
"菲律宾": "Filippinerne",
"印度尼西亚": "Indonesien",
"阿联酋": "UAE",
"墨西哥": "Mexico",
"巴西": "Brasilien",
"阿根廷": "Argentina",
"阿根廷": 'Argentina',
"澳大利亚": "Australien",
"新西兰": "New Zealand",
"新西兰": 'New Zealand',
"中国香港": "Hong Kong",
"中国澳门": "Macao",
"中国台湾": "Taiwan",
@ -1618,77 +1618,77 @@ const Map<String, String> daDK = {
"瑞典": "Sverige",
"挪威": "Norge",
"波兰": "Polen",
"秘鲁": "Peru",
"智利": "Chile",
"哥伦比亚": "Colombia",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portugal",
"卢森堡": "Luxembourg",
"秘鲁": 'Peru',
"智利": 'Chile',
"哥伦比亚": 'Colombia',
"委内瑞拉": 'Venezuela',
"葡萄牙": 'Portugal',
"卢森堡": 'Luxembourg',
"爱尔兰": "Irland",
"冰岛": "Island",
"阿尔巴尼亚": "Albanien",
"马耳他": "Malta",
"马耳他": 'Malta',
"塞浦路斯": "Cypern",
"芬兰": "Finland",
"芬兰": 'Finland',
"保加利亚": "Bulgarien",
"立陶宛": "Litauen",
"拉脱维亚": "Letland",
"爱沙尼亚": "Estland",
"乌克兰": "Ukraine",
"乌克兰": 'Ukraine',
"塞尔维亚": "Serbien",
"克罗地亚": "Kroatien",
"斯洛文尼亚": "Slovenien",
"捷克": "Tjekkiet",
"斯洛伐克": "Slovakiet",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": 'Nicaragua',
"哥斯达黎加": 'Costa Rica',
"巴拿马": 'Panama',
"海地": 'Haiti',
"玻利维亚": 'Bolivia',
"厄瓜多尔": 'Ecuador',
"巴拉圭": 'Paraguay',
"乌拉圭": 'Uruguay',
"摩洛哥": "Marokko",
"阿尔及利亚": "Algeriet",
"突尼斯": "Tunesien",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"尼日利亚": 'Nigeria',
"加纳": 'Ghana',
"埃塞俄比亚": "Etiopien",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israel",
"肯尼亚": 'Kenya',
"坦桑尼亚": 'Tanzania',
"乌干达": 'Uganda',
"孟加拉国": 'Bangladesh',
"以色列": 'Israel',
"黎巴嫩": "Libanon",
"约旦": "Jordan",
"约旦": 'Jordan',
"伊拉克": "Irak",
"科威特": "Kuwait",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"科威特": 'Kuwait',
"巴林": 'Bahrain',
"卡塔尔": 'Qatar',
"阿曼": 'Oman',
"阿富汗": 'Afghanistan',
"斯里兰卡": 'Sri Lanka',
"缅甸": 'Myanmar',
"尼泊尔": 'Nepal',
"蒙古": "Mongoliet",
"柬埔寨": "Cambodja",
"老挝": "Laos",
"文莱": "Brunei",
"老挝": 'Laos',
"文莱": 'Brunei',
"东帝汶": "Østtimor",
"斐济": "Fiji",
"斐济": 'Fiji',
"所罗门群岛": "Salomonøerne",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"刚果民主共和国": "Den Demokratiske Republik Congo",
"安哥拉": 'Angola',
"苏丹": 'Sudan',
"马尔代夫": "Maldiverne",
"不丹": 'Bhutan',
"摩纳哥": 'Monaco',
"圣马力诺": 'San Marino',
"牙买加": 'Jamaica',
"巴哈马": 'Bahamas',
"巴布亚新几内亚": "Papua Ny Guinea",
"萨摩亚": 'Samoa',
};

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

@ -49,13 +49,13 @@ const Map<String, String> deDE = {
"russian": "Russisch",
"vietnamese": "Vietnamesisch",
"italian": "Italienisch",
"hindi": "Hindi",
"hindi": 'Hindi',
"indonesian": "Indonesisch",
"thai": "Thailändisch",
"malay": "Malaiisch",
"turkish": "Türkisch",
"polish": "Polnisch",
"filipino": "Filipino",
"filipino": 'Filipino',
"dutch": "Niederländisch",
"swedish": "Schwedisch",
"danish": "Dänisch",
@ -121,7 +121,7 @@ const Map<String, String> deDE = {
"reconnect": "Erneut verbinden",
"connectingDevice": "Gerät wird verbunden...",
"connectedTo": "Verbunden mit",
"signal": "Signal",
"signal": 'Signal',
"deviceId": "Geräte-ID",
"firmwareVersion": "Firmware-Version",
"disconnectedDevice":
@ -392,9 +392,9 @@ const Map<String, String> deDE = {
'keywordSearch': 'Stichwortsuche',
'collaborationSharing': 'Zusammenarbeit & Teilen',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary.',
'Audioaufzeichnung, Transkription, Stichwortsuche und automatische Zusammenfassung zur Steigerung der Meeting-Effizienz.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Geeignet für Geschäftsmeetings, Unterrichtsnotizen und Interviewprotokolle.',
'meetingAutoRecording': 'Automatische Aufnahme und Segmentierung',
'meetingSpeakerTagging': 'Sprecherkennzeichnung',
'meetingLongAudioTranscription': 'Transkription langer Audios',
@ -426,9 +426,9 @@ const Map<String, String> deDE = {
'ai_001_name': 'KI Basic 100',
'ai_002_name': 'KI Basic 500',
'ai_003_name': 'KI Basic 1000',
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'meet_001_name': 'Meeting Basis 100',
'meet_002_name': 'Meeting Basis 500',
'meet_003_name': 'Meeting Basis 1000',
'trans_001_name': 'Übersetzung Basis 100',
'trans_002_name': 'Übersetzung Basis 500',
'trans_003_name': 'Übersetzung Basis 1000',
@ -443,8 +443,8 @@ const Map<String, String> deDE = {
'trans_003_desc': 'Enthält 1000 Übersetzungen (Stimme/Text).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'App: VoiTrans · Bereitgestellt von: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP-Kundendienst QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -795,7 +795,7 @@ const Map<String, String> deDE = {
"permissionManagementInfo":
"App-Berechtigungseinstellungen verwalten", // 管理应用权限设置
"aboutApplication": "Über",
"versions": "Version",
"versions": 'Version',
"checkUpdates": "Updates prüfen",
"selectLanguage": "Sprache auswählen",
"voiceService": "Sprachdienst",
@ -848,7 +848,7 @@ const Map<String, String> deDE = {
// Agent模块 - 主界面
"Lily": "Lily",
"clearChatHistory": "Chat-Verlauf löschen",
"online": "Online",
"online": 'Online',
"ttsSpeed": "Sprachgeschwindigkeit",
"ttsSpeedDefaultHint": "Standard +25 %",
"inputMessage": "Nachricht eingeben...",
@ -1175,7 +1175,7 @@ const Map<String, String> deDE = {
// 个人资料模块
"editProfile": "Profil bearbeiten",
"avatar": "Avatar",
"avatar": 'Avatar',
"nickname": "Spitzname",
"save": "Speichern",
"about": "Über",
@ -1470,7 +1470,7 @@ const Map<String, String> deDE = {
"ok": "OK",
// 用户反馈模块
"feedback": "Feedback",
"feedback": 'Feedback',
'feedbackInfo': 'Feedback oder Vorschläge geben',
'feedbackDescription':
'Bitte beschreiben Sie Ihr Problem oder Ihren Vorschlag',
@ -1602,23 +1602,23 @@ const Map<String, String> deDE = {
"克罗地亚语": "Kroatisch",
"加泰隆语": "Katalanisch",
"阿拉伯语": "Arabisch",
"泰语": "Thai",
"泰语": 'Thailändisch',
"越南语": "Vietnamesisch",
"印尼语": "Indonesisch",
"印地语": "Hindi",
"印地语": 'Hindi',
"土耳其语": "Türkisch",
"马来语": "Malaiisch",
"孟加拉语": "Bengalisch",
"泰米尔语": "Tamil",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"乌尔都语": "Urdu",
"泰米尔语": 'Tamil',
"泰卢固语": 'Telugu',
"马拉提语": 'Marathi',
"乌尔都语": 'Urdu',
"波斯语": "Persisch",
"斯瓦希里语": "Swahili",
"斯瓦希里语": 'Suaheli',
// 国家列表
"邮箱": "E-Mail",
"中国": "China",
"中国": 'China',
"美国": "Vereinigte Staaten",
"加拿大": "Kanada",
"俄罗斯": "Russland",
@ -1630,14 +1630,14 @@ const Map<String, String> deDE = {
"南非": "Südafrika",
"沙特阿拉伯": "Saudi-Arabien",
"土耳其": "Türkei",
"日本": "Japan",
"日本": 'Japan',
"韩国": "Südkorea",
"新加坡": "Singapur",
"马来西亚": "Malaysia",
"泰国": "Thailand",
"越南": "Vietnam",
"马来西亚": 'Malaysia',
"泰国": 'Thailand',
"越南": 'Vietnam',
"印度": "Indien",
"巴基斯坦": "Pakistan",
"巴基斯坦": 'Pakistan',
"菲律宾": "Philippinen",
"印度尼西亚": "Indonesien",
"阿联酋": "Vereinigte Arabische Emirate",
@ -1647,8 +1647,8 @@ const Map<String, String> deDE = {
"澳大利亚": "Australien",
"新西兰": "Neuseeland",
"中国香港": "Hongkong, China",
"中国澳门": "Macau, China",
"中国台湾": "Taiwan, China",
"中国澳门": 'Macau, China',
"中国台湾": 'Taiwan, China',
"埃及": "Ägypten",
"希腊": "Griechenland",
"荷兰": "Niederlande",
@ -1661,77 +1661,77 @@ const Map<String, String> deDE = {
"瑞典": "Schweden",
"挪威": "Norwegen",
"波兰": "Polen",
"秘鲁": "Peru",
"智利": "Chile",
"秘鲁": 'Peru',
"智利": 'Chile',
"哥伦比亚": "Kolumbien",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portugal",
"委内瑞拉": 'Venezuela',
"葡萄牙": 'Portugal',
"卢森堡": "Luxemburg",
"爱尔兰": "Irland",
"冰岛": "Island",
"阿尔巴尼亚": "Albanien",
"马耳他": "Malta",
"马耳他": 'Malta',
"塞浦路斯": "Zypern",
"芬兰": "Finnland",
"保加利亚": "Bulgarien",
"立陶宛": "Litauen",
"拉脱维亚": "Lettland",
"爱沙尼亚": "Estland",
"乌克兰": "Ukraine",
"乌克兰": 'Ukraine',
"塞尔维亚": "Serbien",
"克罗地亚": "Kroatien",
"斯洛文尼亚": "Slowenien",
"捷克": "Tschechische Republik",
"斯洛伐克": "Slowakei",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": 'Nicaragua',
"哥斯达黎加": 'Costa Rica',
"巴拿马": 'Panama',
"海地": 'Haiti',
"玻利维亚": "Bolivien",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"厄瓜多尔": 'Ecuador',
"巴拉圭": 'Paraguay',
"乌拉圭": 'Uruguay',
"摩洛哥": "Marokko",
"阿尔及利亚": "Algerien",
"突尼斯": "Tunesien",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"尼日利亚": 'Nigeria',
"加纳": 'Ghana',
"埃塞俄比亚": "Äthiopien",
"肯尼亚": "Kenia",
"坦桑尼亚": "Tansania",
"乌干达": "Uganda",
"乌干达": 'Uganda',
"孟加拉国": "Bangladesch",
"以色列": "Israel",
"以色列": 'Israel',
"黎巴嫩": "Libanon",
"约旦": "Jordanien",
"伊拉克": "Irak",
"科威特": "Kuwait",
"巴林": "Bahrain",
"科威特": 'Kuwait',
"巴林": 'Bahrain',
"卡塔尔": "Katar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"阿曼": 'Oman',
"阿富汗": 'Afghanistan',
"斯里兰卡": 'Sri Lanka',
"缅甸": 'Myanmar',
"尼泊尔": 'Nepal',
"蒙古": "Mongolei",
"柬埔寨": "Kambodscha",
"老挝": "Laos",
"文莱": "Brunei",
"老挝": 'Laos',
"文莱": 'Brunei',
"东帝汶": "Osttimor",
"斐济": "Fidschi",
"所罗门群岛": "Salomonen",
"刚果民主共和国": "Demokratische Republik Kongo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"安哥拉": 'Angola',
"苏丹": 'Sudan',
"马尔代夫": "Malediven",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"不丹": 'Bhutan',
"摩纳哥": 'Monaco',
"圣马力诺": 'San Marino',
"牙买加": "Jamaika",
"巴哈马": "Bahamas",
"巴哈马": 'Bahamas',
"巴布亚新几内亚": "Papua-Neuguinea",
"萨摩亚": "Samoa",
"萨摩亚": 'Samoa',
};

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

@ -423,12 +423,12 @@ const Map<String, String> elGR = {
'Τα πραγματικά προνόμια εξαρτώνται από τις λεπτομέρειες του πακέτου και μπορεί να αλλάξουν με τις εκδόσεις.',
// 商品模块 - 商品名称与描述
'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',
'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': 'Μετάφραση Basic 100',
'trans_002_name': 'Μετάφραση Basic 500',
'trans_003_name': 'Μετάφραση Basic 1000',

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

@ -209,7 +209,7 @@ const Map<String, String> etEE = {
"conferenceAssistantInfo":
"Reaalajas protokolli salvestamine ja mitmekeelne tõlge",
"usageStats": "Kasutamise statistika",
"usageStatsInfo": "Näita sovelluksen kasutamise statistikat",
"usageStatsInfo": "Kuva rakenduse kasutamise statistikat",
"scene": "Stsenaariumid",
// 用量统计模块
@ -437,8 +437,8 @@ const Map<String, String> etEE = {
'trans_003_desc': 'Sisaldab 1000 tõlget (hääl/tekst).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Rakendus: VoiTrans · Esitab: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP klienditeenindus QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -763,7 +763,7 @@ const Map<String, String> etEE = {
"aiRecharge": "Premium liige",
"translationRecharge": "Tõlke varundus",
"meetingAssistantRecharge": "Koosoleku assistendi varundus",
"cloudSync": "Pääsyvaraus cloud-synkronointiin",
"cloudSync": "Pilvsünkroonimise varundus",
"memberService": "Liikmeteenus",
"bindRewardTitle": "Preemiad",
"bindRewardSimpleDesc":
@ -1676,15 +1676,15 @@ const Map<String, String> etEE = {
"东帝汶": "Ida-Timor",
"斐济": "Fidži",
"所罗门群岛": "Saalomoni Saared",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Kongo Demokraatlik Vabariik",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"马尔代夫": "Maldiivid",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"巴哈马": "Bahama",
"巴布亚新几内亚": "Paapua Uus-Guinea",
"萨摩亚": "Samoa",
};

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

@ -19,11 +19,11 @@ const Map<String, String> fiFI = {
"unknownError": "Tuntematon virhe",
"asrConnectionFailed":
"Yhteys puheentunnistuspalveluun epäonnistui. Tarkista verkkoyhteys tai yritä myöhemmin uudelleen.",
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
"justNow": "Juuri nyt",
"minutesAgo": "@minutes minuuttia sitten",
"yesterday": "Eilen",
"daysAgo": "@days päivää sitten",
"hoursAgo": "@hours tuntia sitten",
// 启动页
"slogan": "Maailman yhdistäminen, äänen tuolla puolen",
@ -256,10 +256,10 @@ const Map<String, String> fiFI = {
"loadFailed": "Lataus epäonnistui",
"statsLoadFailedTryLater":
"Tilastojen lataus epäonnistui. Yritä myöhemmin uudelleen.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Siivous valmis",
"cleanedOldData": "Poistettu yli 90 päivää vanha data",
"exportFeature": "Vientitoiminto",
"exportInDevelopment": "Datavieniti on kehitteillä",
// 商品模块 - 通用
'availablePackages': 'Saatavilla olevat paketit',
@ -332,101 +332,101 @@ const Map<String, String> fiFI = {
'AI-jäsenyys on vanhentunut. Siirry jäsenyyden lataussivulle ja uusi.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Musiikki ja suositukset',
'navigationAndRoutes': 'Navigointi ja reitit',
'nearbySearch': 'Lähistön haku',
'newsInformation': 'Uutiset',
'communicationAssistant': 'Viestintäassistentti',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Suurempi keskusttelukiintiö, enemmän työkalukutsuja, pidempi konteksti.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Sopii agentin kysymyksiin, tiivistämiseen, analyysiin ja tehtävien suorittamiseen.',
'musicSearchPlaybackControl': 'Musiikkikirjaston haku ja toiston ohjaus',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Älykäs soittolista ja samankaltaisten kappaleiden suositukset',
'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',
'Reittien suunnittelu ja ruuhkien välttäminen',
'voiceBroadcastAndWaypoints': 'Äänikuulutus ja välipisteasetukset',
'realTimeWeatherForecast': 'Reaaliaikainen sää ja ennuste',
'clothingAdviceAndTravelReminders': 'Pukeutumisneuvoja ja matkamuistutuksia',
'poiSearchFoodGasParking': 'POI-haku: ruokailu / huoltoasema / pysäköinti',
'ratingsHoursAndDirectRoutes': 'Arviot, aukioloajat ja suorat reitit',
'hotNewsAndTopicOverview': 'Kuumat uutiset ja aiheyhteenveto',
'longArticleSummariesAndKeyPoints': 'Pitkien artikkelien tiivistelmät ja avainpisteet',
'helpCallAndSMS': 'Apua puheluihin ja tekstiviesteihin',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Malliviestit ja aikataulumuistutukset',
'aiDisclaimer':
'Toiminnot riippuvat laitteen käyttöoikeuksista, palvelun saatavuudesta ja verkkoyhteydestä.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Reaaliaikainen litterointi',
'sceneLexicon': 'Tilannesanasto',
'subtitleDisplay': 'Tekstitykset',
'transHeaderDesc1':
'Reaaliaikainen simultaanitulkkaus ja tekstikäännös matalaviiveisellä äänellä.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Sopii matkustamiseen, liike-elämään, puheisiin ja opetukseen.',
'translateZhEn': 'Kiinan–englannin käännös',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'lowLatencyVoiceBroadcast': 'Matalaviiveinen äänisaatto',
'multiLangTextTranslation': 'Monikielinen tekstikäännös',
'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',
'Terminologian optimointi ja kontekstin säilyttäminen',
'lexiconTourBusinessLife': 'Matkailu-/liike-/elämäsanastot',
'personalVocabularyMemory': 'Henkilökohtaisen sanaston muisti',
'conversationSubtitleLargeText': 'Keskustelun tekstitykset / Suuritekstinen tila',
'colorHighContrast': 'Korkea värikontrasti',
'transDisclaimer':
'Käännöksen suorituskyky riippuu mikrofonista, verkkoviiveestä ja taustamelusta.',
// 商品模块 - 会议商品页
'meetingRecording': 'Kokoustallennus',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Litterointi ja yhteenveto',
'keywordSearch': 'Avainsanahaku',
'collaborationSharing': 'Yhteistyö ja jakaminen',
'meetingHeaderDesc1':
'Äänitallennus, transkriptio, avainsanahaku ja automaattinen yhteenveto tehostavat kokouksia.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Sopii yrityskokouksiin, luentomuistiinpanoihin ja haastattelupöytäkirjoihin.',
'meetingAutoRecording': 'Automaattinen tallennus ja segmentointi',
'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',
'meetingSpeakerTagging': 'Puhujan merkintä',
'meetingLongAudioTranscription': 'Pitkän äänen litterointi',
'meetingKeyPointSummary': 'Avainpisteiden poiminta',
'meetingTopicNameSearch': 'Haku aiheen/nimen mukaan',
'meetingTimelineJump': 'Aikajanan hyppy',
'meetingExportSummary': 'Vie pöytäkirja',
'meetingMultiPlatformShare': 'Jaa eri alustoilla',
'meetingDisclaimer':
'Käytä hiljaisessa ympäristössä; suorituskyky riippuu mikrofonista ja verkosta.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Etujen yhteenveto',
'higherQuota': 'Suurempi käyttökiintiö',
'lowerUnitPrice': 'Alempi yksikköhinta',
'priorityService': 'Prioriteettipalvelu',
'exclusiveSupportChannel': 'Oma tukikanava',
'fastResponse': 'Nopea ongelmavastaus',
'eventsAndDiscounts': 'Tapahtumat ja alennukset',
'memberExclusiveEvents': 'Jäsenille yksinomaiset tapahtumat',
'longTermDiscountPlan': 'Pitkäaikainen alennussuunnitelma',
'generalPrivileges': 'Yleiset etuoikeudet',
'earlyAccessNewFeatures': 'Varhainen pääsy uusiin ominaisuuksiin',
'crossDeviceSync': 'Laitteiden välinen synkronointi',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Todelliset edut riippuvat pakettitiedoista ja voivat muuttua versioiden myötä.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Perus 100',
'ai_002_name': 'AI Perus 500',
'ai_003_name': 'AI Perus 1000',
'meet_001_name': 'Kokous Perus 100',
'meet_002_name': 'Kokous Perus 500',
'meet_003_name': 'Kokous Perus 1000',
'trans_001_name': 'Käännös Perus 100',
'trans_002_name': 'Käännös Perus 500',
'trans_003_name': 'Käännös Perus 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Sisältää 100 käyttöä. Pääsy AI:n ydintoimintoihin.',
'ai_002_desc': 'Sisältää 500 käyttöä. Pääsy AI:n ydintoimintoihin.',
'ai_003_desc': 'Sisältää 1000 käyttöä. Pääsy AI:n ydintoimintoihin.',
'meet_001_desc': 'Sisältää 100 kokoustallennusta/transkriptiota.',
'meet_002_desc': 'Sisältää 500 kokoustallennusta/transkriptiota.',
'meet_003_desc': 'Sisältää 1000 kokoustallennusta/transkriptiota.',
@ -441,40 +441,40 @@ const Map<String, String> fiFI = {
// 新手引导
'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, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Seuraava',
'sayLilyHint': 'Sano "Lily Lily" mikrofoniin',
'imHere': 'Olen täällä~',
'guideWelcomeWakeAI': 'Tervetuloa Voitransiin! Ensin herätä AI “Lily”.',
'aiReplyCompleted': 'Lily on vastannut!',
'aiThinking': 'Lily miettii…',
'guideAwakenSuccess': 'Hienoa! Lily on hereillä—pyydä apua.',
'confirmInput': 'Vahvista syöte',
'guideClickSendPrefix': 'Napauta lähetä, ',
'guideWeatherStart': 'Kysy Lilyltä: “Mikä on tämän päivän sää?”',
'guideWeatherInput': 'Mikä on tämän päivän sää?',
'guideWeatherSend': 'Lily kertoo sään reaaliajassa',
'guideWeatherEnd': 'Lily voi kertoa sään—kokeile muita komentoja',
'guideMusicStart': 'Kysy Lilyltä: “Soita rock-musiikkia”',
'guideMusicInput': 'Soita rock-musiikkia',
'guideMusicSend': 'Lily etsii musiikkia sinulle',
'guideMusicEnd': 'Lily löysi musiikkia—kokeile muita komentoja',
'guideNavStart': 'Kysy Lilyltä: “Navigoi Shenzenin lentokentälle”',
'guideNavInput': 'Navigoi Shenzenin lentokentälle',
'guideNavSend': 'Lily suunnittelee reitin',
'guideNavEnd': 'Navigointi asetettu—kokeile muita komentoja',
'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',
'Kysy Lilyltä: “Luo kokousmuistutus huomenna klo 15”',
'guideMeetingInput': 'Luo kokousmuistutus huomenna klo 15',
'guideMeetingSend': 'Lily luo kokousmuistutuksen',
'guideMeetingEnd': 'Muistutus luotu—kokeile muita komentoja',
'guidePhoneStart': 'Kysy Lilyltä: “Soita äidille”',
'guidePhoneInput': 'Soita äidille',
'guidePhoneSend': 'Lily soittaa puhelun',
'guidePhoneEnd': 'Puhelu soitettu—kokeile muita komentoja',
'guideSmsStart': 'Kysy Lilyltä: “Lähetä isälle viesti: Tulen kotiin illalliselle”',
'guideSmsInput': 'Lähetä isälle viesti: Tulen kotiin illalliselle',
'guideSmsSend': 'Lily lähettää viestin',
'guideSmsEnd': 'Viesti lähetetty—ääniohjaus on kätevää',
// Meeting模块 - 首页与导航
"startMeeting": "Aloita kokous",
@ -503,9 +503,9 @@ const Map<String, String> fiFI = {
'aiPenNotFound': 'AI PEN -laitetta ei löytynyt',
'connectedToAiPen': 'Yhdistetty AI PEN -laitteeseen',
'checkingNewFiles': 'Tarkistetaan uusia tuotavia tiedostoja',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Käynnistetään Wi-Fiä...',
'newFilesDetected': 'Uusia tiedostoja havaittu, valmistellaan tuontia',
'noNewFiles': 'Ei uusia tuotavia tiedostoja',
'connectingWifi': 'Yhdistetään Wi‑Fiin...',
'wifiConnected': 'Wi‑Fi-yhteys muodostettu',
'downloadingFiles': 'Ladataan tiedostoja...',
@ -520,7 +520,7 @@ const Map<String, String> fiFI = {
'liveRecording': 'Live-tallennus',
'audioVideoRecording': 'Ääni-/videotallennus',
'callRecording': 'Puhelutallennus',
'importAudio': 'Import Audio',
'importAudio': 'Tuo ääni',
'meetingRecordExitTitle': 'Poistu tallennuksesta', // 退出录音
'meetingRecordExitMessage':
'Valitse, mitä tehdä ennen poistumista', // 请选择离开后的操作
@ -543,30 +543,30 @@ const Map<String, String> fiFI = {
'Jotta voimme näyttää tallennuksen kelluvan palkin (ajastin/tauko/jatka) tallennuksen aikana, tarvitsemme päällekkäisyysoikeuden.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Järjestelmäasetuksia ei voi avata automaattisesti. Avaa Asetukset ja ota päällekkäisyysoikeus käyttöön manuaalisesti.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Litteroidaan...',
'summarizing': 'Tiivistetään...',
'analyzing': 'Analysoidaan...',
'summaryComplete': 'Yhteenveto valmis',
'generate': 'Luo',
'overview': 'Yleiskatsaus',
'transcription': 'Litterointi',
'summary': 'Yhteenveto',
'mindMap': 'Miellekartta',
'editSpeaker': 'Muokkaa',
'nameSpeaker': 'Nimeä puhuja',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Tiivistä uudelleen',
'dateAndTime': 'Päivämäärä ja aika',
'location': 'Sijainti',
'attendees': 'Osallistujat',
'inputLocation': 'Syötä sijainti',
'inputAttendees': 'Syötä osallistujat',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Valitse yhteenveto-malli',
'useThisTemplate': 'Käytä tätä mallia',
'lastUsed': 'Viimeksi käytetty',
'create': 'Luo',
'templateDetails': 'Mallin tiedot',
'tag': 'Tunniste',
@ -583,24 +583,24 @@ const Map<String, String> fiFI = {
'inputDescHint': 'Syötä kuvaus',
'custom': 'Mukautettu',
'pleaseEnter': 'Ole hyvä ja syötä',
'viewAll': 'View All',
'viewAll': 'Näytä kaikki',
'recordingLanguage': 'Tallennuskieli',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Kiinan mandariini (yksinkertaistettu)',
'meetingGenerateNow': 'Luo nyt',
'keyEventsAnalyzed': 'Analysoitu {count} avaintapahtumaa.',
'aiAnalysisDesc':
'AI-analyysi tunnistaa tallenteista avaintapahtumat, jotta voit valita tärkeät tapahtumat AI-luontia varten.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Tuodaan...',
'batchImporting': 'Tuodaan erissä...',
'importingLocalRecordings': 'Tuodaan paikallisia tallenteita...',
'importFailed': 'Tiedoston tuonti epäonnistui: {filePath}, virhe: {error}',
'importSuccess': '{count} paikallista tallennetta tuotu onnistuneesti',
'importError': 'Tuonti epäonnistui: {error}',
'pleaseSelectAudioFile': 'Valitse äänitiedosto',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Jaa kokouksen ääni',
'shareComplete': 'Jakaminen valmis!',
'shareFailed': 'Jakaminen epäonnistui: {error}',
'fileProcessingFailed':
'Tiedoston käsittely epäonnistui: {filePath}, virhe: {error}',
@ -657,88 +657,88 @@ const Map<String, String> fiFI = {
'enabled': 'Käytössä',
'disabled': 'Ei käytössä',
'myVoitransDevice': 'Oma VOITRANS-laite',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Ohje ja palaute',
'aboutVoitrans': 'Tietoja VOITRANS:ista',
'meetingDays': 'Päivää',
'meetingHours': 'Tuntia',
'voitransAiMember': 'Voitrans AI -jäsen',
'unlockStarterMember': 'Avaa Starter-jäsenyys',
'bindDeviceToActivate':
'Sido Voitrans-laite aktivoidaksesi Starter-jäsenyyden',
'unlockNow': 'Unlock Now',
'unlockNow': 'Avaa nyt',
// 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',
'comparison': 'Vertailu',
'detailedInfo': 'Yksityiskohtaiset tiedot',
'monthlyTranscriptionTime': 'Kuukausittainen litterointiaika',
'unlimited': 'Rajoittamaton',
'professionalTemplates': 'Ammattilaismallit',
'limited': 'Rajoitettu',
'fullTemplates': 'Täydet mallit',
'professionalTerms': 'Ammattisanasto',
'customTemplates': 'Mukautetut mallit',
'visualMindMap': 'Visuaalinen miellekartta',
'speakerIdentification': 'Puhujan tunnistus',
'aiVoiceEnhancement': 'AI-äänenparannus',
'audioImport': 'Äänen tuonti',
'multipleExportFormats': 'Useita vientimuotoja',
'professionalSummaryTemplates': 'Ammattilaiset yhteenvetomallit',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Ammattilaismallin muotoilu työtehosi parantamiseksi. Mukautettu toimialan tarpeiden mukaan.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Voit mukauttaa yhteenvetokehotteet tarpeidesi mukaan ja käyttää niitä tarvittavien yhteenvetojen luomiseen.',
'askAiDesc':
'Poimi tallenteista älykkäästi syvempää tietoa ja luo yhdellä napsautuksella datataulukoita, keskustelujen keskeisiä johtopäätöksiä, tehtävälistoja, raporttisähköposteja ja muuta muotoiltua sisältöä.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Yhteenvetojen lisäksi – järjestä ja visualisoi avainpisteet miellekartoilla tekstin ymmärtämiseksi.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Löydä, jaa ja saa inspiraatiota käyttäjien luomasta mallikirjastosta.',
'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.',
'Äänen litterointi tukee puhujan tunnistusta, palauttaa kokouksen tai puhelun sisällön intuitiivisemmin. Samalla yhteenveto on tarkempi.',
'privateCloudSyncDesc':
'Tallenteet ja transkriptiot tallennetaan turvallisesti erillisille pilvipalvelimille. Lähetys ja lataus on täysin salattu yksityisyyden ja turvallisuuden varmistamiseksi.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'AI-äänenparannus tukee useita melunvaimennus-asetuksia, poistaa älykkäästi taustamelun, parantaa äänen selkeyttä ja toistokvaliteettia.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Tuo helposti äänitiedostoja paikallisesta tai kolmannen osapuolen sovelluksista, kuten äänimuistiot, Google Drive jne.',
'multipleExportFormatsDesc':
'Vie äänitallenteet, transkriptiotekstit ja yhteenvedot eri muodoissa (TXT, PDF, JPEG) tarpeesi mukaan.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Päivitä jäsenyytesi',
'yearlySubscription': 'Vuositilaus',
'monthlySubscription': 'Kuukausitilaus',
'proMonthly': 'Pro ¥60/kuukausi',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'7 päivän ilmainen kokeilu, sitten ¥800/vuosi. Peruuta milloin tahansa ennen kokeilun päättymistä.',
'sevenDayTrial': '7 päivän ilmainen kokeilu',
'unlimitedMonthly': 'Rajoittamaton ¥120/kuukausi',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'7 päivän ilmainen kokeilu, sitten ¥1600/vuosi. Peruuta milloin tahansa ennen kokeilun päättymistä.',
'trialNote': '*Ilmainen kokeilu 7 päivää, sitten veloitetaan vuosittain, peruuta milloin tahansa.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'proMonthlyPrice': '¥120/kuukausi',
'subscribe': 'Tilaa',
'unlimitedPrice': 'Rajoittamaton ¥198',
'unlimitedMonthlyPrice': '¥198/kuukausi',
'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: ',
'*Tilauksen päivityksen jälkeen alkuperäisen tilauksen jäljellä olevat päivät lasketaan automaattisesti ja hyvitetään maksutilillesi.',
'buyMoreTranscriptionTime': 'Osta lisää litterointiaikaa',
'sixThousandMinutes': '6 000 minuuttia',
'threeThousandMinutes': '3 000 minuuttia',
'sixHundredMinutes': '600 minuuttia',
'oneHundredTwentyMinutes': '120 minuuttia',
'validityPeriod': '*Voimassaoloaika: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Aktivoituu heti oston jälkeen, voimassa 2 vuotta aktivoinnista.',
'purchase': 'Osta',
// Meeting模块 - 录音语言
'recordLanguage': 'Tallennuskieli',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantoninkiina',
'sichuan': 'Sichuanin murre',
'shanghai': 'Shanghain murre',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Tuntematon kieli',
'analysisFailed': 'Analyysi epäonnistui, yritä myöhemmin uudelleen',
'transcriptionFailed': 'Litterointi epäonnistui, yritä myöhemmin uudelleen',
'summaryFailed': 'Yhteenveto epäonnistui, yritä myöhemmin uudelleen',
@ -817,13 +817,13 @@ const Map<String, String> fiFI = {
"deviceTypeClassicBluetoothHeadset": "Perinteinen Bluetooth-kuuloke",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth-kuuloke",
"deviceTypeSmartVoiceRecorder": "Älykäs äänitallennin",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeSmartEye": "Älylasit",
"unbind": "Poista sidonta",
"noDevicesBound": "Ei sidottuja laitteita vielä",
"pleaseBindDeviceFirst": "Sido ensin laite hallintaa varten",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"noMacAddress": "Ei MAC-osoitetta",
"licenseCode": "Lisenssikoodi",
"confirmUnbind": "Vahvista sidonnan poisto",
"confirmUnbindMessage":
"Haluatko varmasti poistaa laitteen \"{deviceName}\" sidonnan?",
"confirmUnbindAction": "Poista sidonta",
@ -1164,8 +1164,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?',
'clean': 'Tyhjennä välimuisti',
'cleanTips': 'Haluatko varmasti tyhjentää henkilökohtaisen välimuistin?',
'networkConnectionFailed':
'Verkkoyhteys epäonnistui, tarkista verkkoyhteyden asetukset ja yritä uudelleen',
'serverTemporarilyUnavailable':
@ -1683,15 +1683,15 @@ const Map<String, String> fiFI = {
"东帝汶": "Itä-Timor",
"斐济": "Fidži",
"所罗门群岛": "Salomonsaaret",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Kongon demokraattinen tasavalta",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"马尔代夫": "Malediivit",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"牙买加": "Jamaika",
"巴哈马": "Bahama",
"巴布亚新几内亚": "Papua-Uusi-Guinea",
"萨摩亚": "Samoa",
};

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

@ -49,13 +49,13 @@ const Map<String, String> frFR = {
"russian": "Russe",
"vietnamese": "Vietnamien",
"italian": "Italien",
"hindi": "Hindi",
"hindi": 'Hindi',
"indonesian": "Indonésien",
"thai": "Thaï",
"malay": "Malais",
"turkish": "Turc",
"polish": "Polonais",
"filipino": "Filipino",
"filipino": 'Filipino',
"dutch": "Néerlandais",
"swedish": "Suédois",
"danish": "Danois",
@ -121,7 +121,7 @@ const Map<String, String> frFR = {
"reconnect": "Reconnecter",
"connectingDevice": "Connexion à l'appareil...",
"connectedTo": "Connecté à",
"signal": "Signal",
"signal": 'Signal',
"deviceId": "ID de l'appareil",
"firmwareVersion": "Version du firmware",
"disconnectedDevice":
@ -160,7 +160,7 @@ const Map<String, String> frFR = {
"zeroSignal": "Aucun signal",
"good": "Bon",
"fine": "Excellent",
"excellent": "Excellent",
"excellent": 'Excellent',
"unknown": "Inconnu",
'bluetoothTurnedOff': 'Bluetooth est désactivé, veuillez l\'activer',
'bluetoothOff': 'Bluetooth désactivé',
@ -260,17 +260,18 @@ const Map<String, String> frFR = {
"loadFailed": "Échec du chargement",
"statsLoadFailedTryLater":
"Échec du chargement des statistiques. Veuillez réessayer plus tard.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Nettoyage terminé",
"cleanedOldData": "Données de plus de 90 jours supprimées",
"exportFeature": "Fonction d'exportation",
"exportInDevelopment":
"L'exportation de données est en cours de développement",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'Forfaits disponibles',
'remainingQuota': 'Quota restant',
'totalQuota': 'Quota total',
'remaining': 'Restant',
'featureDescription': 'Description de la fonctionnalité',
'paymentSuccess': 'Paiement réussi',
'paymentFailed': 'Échec du paiement',
'gotIt': 'Compris',
@ -338,88 +339,95 @@ const Map<String, String> frFR = {
'Votre abonnement IA a expiré, veuillez aller à la page de recharge pour le renouveler.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Musique & Recommandations',
'navigationAndRoutes': 'Navigation & Itinéraires',
'nearbySearch': 'Recherche à proximité',
'newsInformation': 'Actualités',
'communicationAssistant': 'Assistant de communication',
'aiHeaderDesc1':
'Quota de conversation plus élevé, plus d’appels d’outils, contexte étendu.',
"Quota de conversation plus élevé, plus d\u2019appels d\u2019outils, contexte étendu.",
'aiHeaderDesc2':
'Adapté aux questions-réponses avec l’agent, aux résumés, aux analyses et à l’exécution de tâches.',
'musicSearchPlaybackControl': 'Music library search and playback control',
"Adapté aux questions-réponses avec l\u2019agent, aux résumés, aux analyses et à l\u2019exécution de tâches.",
'musicSearchPlaybackControl':
'Recherche dans la bibliothèque musicale et contrôle de lecture',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Listes de lecture intelligentes et recommandations de chansons similaires',
'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',
'Planification d\'itinéraire et évitement des embouteillages',
'voiceBroadcastAndWaypoints':
'Diffusion vocale et paramètres de points de passage',
'realTimeWeatherForecast': 'Météo en temps réel et prévisions',
'clothingAdviceAndTravelReminders':
'Conseils vestimentaires et rappels de voyage',
'poiSearchFoodGasParking':
'Recherche de POI : restauration / carburant / stationnement',
'ratingsHoursAndDirectRoutes':
'Avis, horaires d\'ouverture et itinéraires directs',
'hotNewsAndTopicOverview': 'Actualités populaires et aperçu des sujets',
'longArticleSummariesAndKeyPoints':
'Résumés d\'articles longs et points clés',
'helpCallAndSMS': 'Aide pour les appels et les SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Messages prédéfinis et rappels de planning',
'aiDisclaimer':
'Les fonctionnalités dépendent des autorisations de l’appareil, de la disponibilité du service et des conditions réseau.',
"Les fonctionnalités dépendent des autorisations de l’appareil, de la disponibilité du service et des conditions réseau.",
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Transcription en temps réel',
'sceneLexicon': 'Glossaire de scénarios',
'subtitleDisplay': 'Sous-titres',
'transHeaderDesc1':
'Interprétation simultanée en temps réel et traduction de texte avec voix à faible latence.',
'transHeaderDesc2':
'Adapté aux voyages, aux affaires, aux discours et à l’enseignement.',
"Adapté aux voyages, aux affaires, aux discours et à l\u2019enseignement.",
'translateZhEn': 'Traduction chinois–anglais',
'lowLatencyVoiceBroadcast': 'Diffusion vocale à faible latence',
'multiLangTextTranslation': 'Traduction de texte multilingue',
'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',
'Optimisation terminologique et préservation du contexte',
'lexiconTourBusinessLife': 'Lexiques Voyage/Affaires/Vie quotidienne',
'personalVocabularyMemory': 'Mémorisation du vocabulaire personnel',
'conversationSubtitleLargeText':
'Sous-titres de conversation / Mode grand texte',
'colorHighContrast': 'Contraste de couleurs élevé',
'transDisclaimer':
'Les performances de traduction dépendent du microphone, de la latence réseau et du bruit ambiant.',
// 商品模块 - 会议商品页
'meetingRecording': 'Enregistrement de réunion',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transcription et résumé',
'keywordSearch': 'Recherche par mots-clés',
'collaborationSharing': 'Collaboration et partage',
'meetingHeaderDesc1':
'Enregistrement audio, transcription, recherche par mots-clés et résumé automatique pour améliorer l’efficacité des réunions.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Convient aux réunions professionnelles, aux notes de cours et aux comptes rendus d’entretien.',
'meetingAutoRecording': 'Enregistrement automatique et 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',
'meetingSpeakerTagging': 'Identification des intervenants',
'meetingLongAudioTranscription': 'Transcription d’audio long',
'meetingKeyPointSummary': 'Extraction des points clés',
'meetingTopicNameSearch': 'Recherche par sujet/nom',
'meetingTimelineJump': 'Saut dans la chronologie',
'meetingExportSummary': 'Exporter le compte rendu',
'meetingMultiPlatformShare': 'Partager sur plusieurs plateformes',
'meetingDisclaimer':
'À utiliser dans des environnements calmes ; les performances dépendent du microphone et du réseau.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Aperçu des avantages',
'higherQuota': 'Quota d’utilisation plus élevé',
'lowerUnitPrice': 'Prix unitaire plus bas',
'priorityService': 'Service prioritaire',
'exclusiveSupportChannel': 'Canal d’assistance dédié',
'fastResponse': 'Réponse rapide aux problèmes',
'eventsAndDiscounts': 'Événements et réductions',
'memberExclusiveEvents': 'Événements réservés aux membres',
'longTermDiscountPlan': 'Plan de réduction long terme',
'generalPrivileges': 'Avantages généraux',
'earlyAccessNewFeatures': 'Accès anticipé aux nouvelles fonctionnalités',
'crossDeviceSync': 'Synchronisation multi‑appareils',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Les avantages réels dépendent des détails du forfait et peuvent évoluer selon les versions.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'IA Basique 100',
@ -443,46 +451,46 @@ const Map<String, String> frFR = {
'trans_003_desc': 'Inclut 1000 traductions (voix/texte).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Application : VoiTrans · Fourni par : VoiTrans',
'iapCustomerServiceQQLabel': 'Service client IAP QQ : @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'skip': "Ignorer",
'next': 'Next',
'next': 'Suivant',
'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",
'imHere': 'Je suis là~',
'guideWelcomeWakeAI': 'Bienvenue sur Voitrans ! Réveillez d’abord votre IA “Lily”.',
'aiReplyCompleted': 'Lily a terminé la réponse !',
'aiThinking': 'Lily réfléchit…',
'guideAwakenSuccess': 'Super ! Lily est réveillée—demandez-lui de l’aide.',
'confirmInput': 'Confirmer la saisie',
'guideClickSendPrefix': 'Appuyez sur envoyer, ',
'guideWeatherStart': 'Dites à Lily : “Quel temps fait-il aujourd’hui ?”',
'guideWeatherInput': 'Quel temps fait-il aujourd’hui ?',
'guideWeatherSend': 'Lily annoncera la météo en temps réel',
'guideWeatherEnd': 'Lily peut donner la météo en direct—essayez d’autres commandes',
'guideMusicStart': 'Dites à Lily : “Joue de la musique rock”',
'guideMusicInput': 'Joue de la musique rock',
'guideMusicSend': 'Lily trouvera de la musique pour vous',
'guideMusicEnd': 'Lily a trouvé de la musique—essayez d’autres commandes',
'guideNavStart': 'Dites à Lily : “Navigue vers l’aéroport de Shenzhen”',
'guideNavInput': 'Navigue vers l’aéroport de Shenzhen',
'guideNavSend': 'Lily planifiera l’itinéraire',
'guideNavEnd': 'Navigation définie—essayez d’autres commandes',
'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",
'Dites à Lily : “Crée un rappel de réunion pour demain à 15h”',
'guideMeetingInput': 'Crée un rappel de réunion pour demain à 15h',
'guideMeetingSend': 'Lily créera un rappel de réunion',
'guideMeetingEnd': 'Rappel créé—essayez d’autres commandes',
'guidePhoneStart': 'Dites à Lily : “Appelle Maman”',
'guidePhoneInput': 'Appelle Maman',
'guidePhoneSend': 'Lily passera l’appel',
'guidePhoneEnd': 'Appel passé—essayez d’autres commandes',
'guideSmsStart': 'Dites à Lily : “Envoie un SMS à Papa : je rentrerai pour le dîner”',
'guideSmsInput': 'SMS à Papa : je rentrerai pour le dîner',
'guideSmsSend': 'Lily enverra le message',
'guideSmsEnd': 'Message envoyé—la commande vocale est pratique',
// Meeting模块 - 首页与导航
"startMeeting": "Démarrer la réunion",
@ -715,42 +723,43 @@ const Map<String, String> frFR = {
'Importez facilement des fichiers audio depuis le stockage local ou des applications tierces, comme les mémos vocaux, Google Drive, etc.',
'multipleExportFormatsDesc':
'Exportez vos enregistrements audio, textes de transcription et résumés dans différents formats (TXT, PDF, JPEG) selon vos besoins.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Mettre à niveau votre abonnement',
'yearlySubscription': 'Abonnement annuel',
'monthlySubscription': 'Abonnement mensuel',
'proMonthly': 'Pro ¥60/mois',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'Essai gratuit de 7 jours, puis ¥800/an. Annulez à tout moment avant la fin de l’essai.',
'sevenDayTrial': 'Essai gratuit de 7 jours',
'unlimitedMonthly': 'Illimité ¥120/mois',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'Essai gratuit de 7 jours, puis ¥1600/an. Annulez à tout moment avant la fin de l’essai.',
'trialNote':
'*Essai gratuit pendant 7 jours, puis facturation annuelle ; annulez à tout moment.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'proMonthlyPrice': '¥120/mois',
'subscribe': 'S’abonner',
'unlimitedPrice': 'Illimité ¥198',
'unlimitedMonthlyPrice': '¥198/mois',
'upgradeNote':
'*After upgrading subscription, the remaining days of the original subscription will be automatically calculated and refunded to your payment account',
'*Après la mise à niveau de l’abonnement, les jours restants de l’abonnement initial seront automatiquement calculés et remboursés sur votre compte de paiement.',
'buyMoreTranscriptionTime': 'Acheter plus de temps de transcription',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixThousandMinutes': '6 000 minutes',
'threeThousandMinutes': '3 000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'validityPeriod': '*Période de validité : ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Activé immédiatement après l’achat, valable pendant 2 ans après activation.',
'purchase': 'Acheter',
// Meeting模块 - 录音语言
'recordLanguage': 'Langue d’enregistrement',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Cantonais',
'sichuan': 'Dialecte du Sichuan',
'shanghai': 'Dialecte de Shanghai',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Langue inconnue',
'analysisFailed': "Échec de l'analyse, veuillez réessayer plus tard",
'transcriptionFailed':
'Échec de la transcription, veuillez réessayer plus tard',
@ -791,7 +800,7 @@ const Map<String, String> frFR = {
"permissionManagementInfo":
"Gérer les paramètres d'autorisation de l'application", // 管理应用权限设置
"aboutApplication": "À propos",
"versions": "Version",
"versions": 'Version',
"checkUpdates": "Vérifier les mises à jour",
"selectLanguage": "Sélectionner la langue",
"voiceService": "Service vocal",
@ -957,7 +966,7 @@ const Map<String, String> frFR = {
"driving": "Conduite",
"walking": "Marche",
"bicycling": "Vélo",
"tsransit": "Transit",
"tsransit": 'Transit',
// Agent模块 - 导航选择
'selectNavigationApp': 'Choisir une application de navigation',
@ -1030,7 +1039,7 @@ const Map<String, String> frFR = {
"lightSnow": "Neige légère",
"moderateSnow": "Neige modérée",
"heavySnow": "Neige forte",
"blizzard": "Blizzard",
"blizzard": 'Blizzard',
"fog": "Brouillard",
"haze": "Brume",
"strongWind": "Vent fort",
@ -1115,9 +1124,9 @@ const Map<String, String> frFR = {
"processingFailed": "Échec du traitement",
"imageProcessingOrTranslationFailed":
"Le traitement de l’image ou la traduction a échoué. Veuillez réessayer.\nErreur : {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": 'La taille de l’image dépasse la limite de 4 Mo',
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
'La taille de l’image dépasse 4 Mo. Réduisez la qualité ou les dimensions et réessayez',
"emptyTranslationResult":
"L’API de traduction d’images a renvoyé un résultat vide",
"imageTranslationFailedTryLater":
@ -1174,7 +1183,7 @@ const Map<String, String> frFR = {
// 个人资料模块
"editProfile": "Modifier le profil",
"avatar": "Avatar",
"avatar": 'Avatar',
"nickname": "Pseudo",
"save": "Enregistrer",
"about": "À propos",
@ -1252,7 +1261,7 @@ const Map<String, String> frFR = {
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'alarm': 'Alarm',
'alarm': 'Alarme',
'calendarWrite': 'Écriture calendrier',
'calendarFullAccess': 'Accès complet au calendrier',
'locationInfo': 'Informations de localisation',
@ -1599,32 +1608,32 @@ const Map<String, String> frFR = {
"芬兰语": "Finnois",
"挪威语": "Norvégien",
"克罗地亚语": "Croate",
"加泰隆语": "Catalan",
"加泰隆语": 'Catalan',
"阿拉伯语": "Arabe",
"泰语": "Thaï",
"越南语": "Vietnamien",
"印尼语": "Indonésien",
"印地语": "Hindi",
"印地语": 'Hindi',
"土耳其语": "Turc",
"马来语": "Malais",
"孟加拉语": "Bengali",
"泰米尔语": "Tamil",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"孟加拉语": 'Bengali',
"泰米尔语": 'Tamoul',
"泰卢固语": 'Télougou',
"马拉提语": 'Marathi',
"乌尔都语": "Ourdou",
"波斯语": "Persan",
"斯瓦希里语": "Swahili",
"斯瓦希里语": 'Swahili',
// 国家列表
"邮箱": "E-mail",
"中国": "Chine",
"美国": "États-Unis",
"加拿大": "Canada",
"加拿大": 'Canada',
"俄罗斯": "Russie",
"英国": "Royaume-Uni",
"德国": "Allemagne",
"意大利": "Italie",
"法国": "France",
"法国": 'France',
"西班牙": "Espagne",
"南非": "Afrique du Sud",
"沙特阿拉伯": "Arabie Saoudite",
@ -1634,10 +1643,10 @@ const Map<String, String> frFR = {
"新加坡": "Singapour",
"马来西亚": "Malaisie",
"泰国": "Thaïlande",
"越南": "Vietnam",
"越南": 'Vietnam',
"印度": "Inde",
"巴基斯坦": "Pakistan",
"菲律宾": "Philippines",
"巴基斯坦": 'Pakistan',
"菲律宾": 'Philippines',
"印度尼西亚": "Indonésie",
"阿联酋": "Émirats Arabes Unis",
"墨西哥": "Mexique",
@ -1663,9 +1672,9 @@ const Map<String, String> frFR = {
"秘鲁": "Pérou",
"智利": "Chili",
"哥伦比亚": "Colombie",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portugal",
"卢森堡": "Luxembourg",
"委内瑞拉": 'Venezuela',
"葡萄牙": 'Portugal',
"卢森堡": 'Luxembourg',
"爱尔兰": "Irlande",
"冰岛": "Islande",
"阿尔巴尼亚": "Albanie",
@ -1676,61 +1685,61 @@ const Map<String, String> frFR = {
"立陶宛": "Lituanie",
"拉脱维亚": "Lettonie",
"爱沙尼亚": "Estonie",
"乌克兰": "Ukraine",
"乌克兰": 'Ukraine',
"塞尔维亚": "Serbie",
"克罗地亚": "Croatie",
"斯洛文尼亚": "Slovénie",
"捷克": "République Tchèque",
"斯洛伐克": "Slovaquie",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": 'Nicaragua',
"哥斯达黎加": 'Costa Rica',
"巴拿马": 'Panama',
"海地": "Haïti",
"玻利维亚": "Bolivie",
"厄瓜多尔": "Équateur",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"巴拉圭": 'Paraguay',
"乌拉圭": 'Uruguay',
"摩洛哥": "Maroc",
"阿尔及利亚": "Algérie",
"突尼斯": "Tunisie",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"尼日利亚": 'Nigéria',
"加纳": 'Ghana',
"埃塞俄比亚": "Éthiopie",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzanie",
"乌干达": "Ouganda",
"孟加拉国": "Bangladesh",
"孟加拉国": 'Bangladesh',
"以色列": "Israël",
"黎巴嫩": "Liban",
"约旦": "Jordanie",
"伊拉克": "Irak",
"科威特": "Koweït",
"巴林": "Bahreïn",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"卡塔尔": 'Qatar',
"阿曼": 'Oman',
"阿富汗": 'Afghanistan',
"斯里兰卡": 'Sri Lanka',
"缅甸": "Myanmar",
"尼泊尔": "Népal",
"蒙古": "Mongolie",
"柬埔寨": "Cambodge",
"老挝": "Laos",
"文莱": "Brunei",
"老挝": 'Laos',
"文莱": 'Brunéi',
"东帝汶": "Timor Oriental",
"斐济": "Fidji",
"所罗门群岛": "Îles Salomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"刚果民主共和国": 'République démocratique du Congo',
"安哥拉": 'Angola',
"苏丹": 'Soudan',
"马尔代夫": 'Maldives',
"不丹": 'Bhoutan',
"摩纳哥": 'Monaco',
"圣马力诺": 'Saint-Marin',
"牙买加": 'Jamaïque',
"巴哈马": 'Bahamas',
"巴布亚新几内亚": 'Papouasie-Nouvelle-Guinée',
"萨摩亚": 'Samoa',
};

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

@ -433,8 +433,8 @@ const Map<String, String> hiIN = {
'trans_003_desc': '1000 अनुवाद (वॉयस/टेक्स्ट) शामिल।',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'ऐप: VoiTrans · प्रदाता: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP ग्राहक सेवा QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -449,34 +449,28 @@ const Map<String, String> hiIN = {
'guideAwakenSuccess': "बिलकुल! लिली उठ गई—अपने प्रश्नों को पूछें।",
'confirmInput': "पुष्टि करें",
'guideClickSendPrefix': "पाठ सेंड करने के लिए टैप करें, ",
'guideWeatherStart': "Tell Lily: “What’s the weather today?”",
'guideWeatherStart': "Lily से कहें: „आज मौसम कैसा है?”",
'guideWeatherInput': "आज का मौसम क्या है?",
'guideWeatherSend': "लिली ने आपके प्रश्न का प्रतिक्रिया दिया",
'guideWeatherEnd':
"लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें",
'guideMusicStart': "Tell Lily: “Play some rock music”",
'guideMusicInput': "प्ले सॉक्कर म्यूजिक",
'guideMusicSend':
"लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें",
'guideMusicEnd':
"लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें",
'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”",
'guideWeatherSend': "Lily रियल-टाइम मौसम की जानकारी देगी",
'guideWeatherEnd': "Lily रियल-टाइम मौसम बता सकती है — अन्य कमांड आज़माएं",
'guideMusicStart': "Lily से कहें: „कुछ रॉक म्यूजिक चलाओ”",
'guideMusicInput': "कुछ रॉक म्यूजिक चलाओ",
'guideMusicSend': "Lily आपके लिए म्यूजिक खोजेगी",
'guideMusicEnd': "Lily ने म्यूजिक खोज लिया — अन्य कमांड आज़माएं",
'guideNavStart': "Lily से कहें: „Shenzhen Airport नेविगेट करो”",
'guideNavInput': "Shenzhen Airport तक नेविगेट करें",
'guideNavSend':
"लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें",
'guideNavEnd': "नेविगेशन सेट—अन्य कमांड्स का प्रयास करें",
'guideMeetingStart':
"Tell Lily: “Create a meeting reminder for 3pm tomorrow”",
'guideMeetingInput': "3 बजे शामिल बैठक रिकॉर्डिंग बनाएं",
'guideMeetingSend':
"लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें",
'guideMeetingEnd': "पengingat bali created—try other commands",
'guidePhoneStart': "Tell Lily: “Call Mom”",
'guidePhoneInput': "Mom को कॉल करें",
'guidePhoneSend':
"लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें",
'guidePhoneEnd': "पhoe call placed—try other commands",
'guideSmsStart': "Tell Lily: “Send Dad a text: I’ll be home for dinner”",
'guideNavSend': "Lily रूट प्लान करेगी",
'guideNavEnd': "नेविगेशन सेट हो गया — अन्य कमांड आज़माएं",
'guideMeetingStart': "Lily से कहें: „कल दोपहर 3 बजे मीटिंग रिमाइंडर बनाओ”",
'guideMeetingInput': "कल दोपहर 3 बजे मीटिंग रिमाइंडर बनाएं",
'guideMeetingSend': "Lily मीटिंग रिमाइंडर बनाएगी",
'guideMeetingEnd': "रिमाइंडर बन गया — अन्य कमांड आज़माएं",
'guidePhoneStart': "Lily से कहें: „माँ को कॉल करो”",
'guidePhoneInput': "माँ को कॉल करें",
'guidePhoneSend': "Lily कॉल करेगी",
'guidePhoneEnd': "कॉल हो गया — अन्य कमांड आज़माएं",
'guideSmsStart':
"Lily से कहें: „पापा को मैसेज करो: मैं रात के खाने पर घर आऊंगा”",
'guideSmsInput': "Dad को टेक्स्ट भेजें: मैं आज घर आऊंगा",
'guideSmsSend':
"लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें",

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

@ -385,21 +385,21 @@ const Map<String, String> hrHR = {
// 商品模块 - 会议商品页
'meetingRecording': 'Snimanje sastanka',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transkripcija i sažetak',
'keywordSearch': 'Pretraživanje ključnih riječi',
'collaborationSharing': 'Suradnja i dijeljenje',
'meetingHeaderDesc1':
'Snimanje zvuka, transkripcija, pretraživanje po ključnim riječima i automatski sažetak za veću učinkovitost sastanaka.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Pogodno za poslovne sastanke, bilješke s predavanja i zapisnike intervjua.',
'meetingAutoRecording': 'Automatsko snimanje i segmentacija',
'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',
'meetingSpeakerTagging': 'Označavanje govornika',
'meetingLongAudioTranscription': 'Transkripcija dugih audiozapisa',
'meetingKeyPointSummary': 'Izvlačenje ključnih točaka',
'meetingTopicNameSearch': 'Pretraživanje po temi/imenu',
'meetingTimelineJump': 'Skok na vremensku traku',
'meetingExportSummary': 'Izvoz zapisnika',
'meetingMultiPlatformShare': 'Dijeljenje na više platformi',
'meetingDisclaimer':
'Koristite u tihoj okolini; performanse ovise o mikrofonu i mreži.',
@ -505,7 +505,7 @@ const Map<String, String> hrHR = {
'creationTime': 'Vrijeme izrade',
'bluetoothConnection': 'Bluetooth veza',
'meetingReconnect': 'Ponovno poveži',
'searching': 'Searching...',
'searching': 'Pretraživanje...',
'searchFailed':
'Pretraživanje nije uspjelo, provjerite je li Bluetooth uključen',
'aiPenNotFound': 'AI PEN uređaj nije pronađen',
@ -732,10 +732,10 @@ const Map<String, String> hrHR = {
'upgradeNote':
'*Nakon nadogradnje pretplate, preostali dani izvorne pretplate bit će automatski izračunati i vraćeni na vaš račun za plaćanje',
'buyMoreTranscriptionTime': 'Kupi više vremena za transkripciju',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'sixThousandMinutes': '6.000 minuta',
'threeThousandMinutes': '3.000 minuta',
'sixHundredMinutes': '600 minuta',
'oneHundredTwentyMinutes': '120 minuta',
'validityPeriod': '*Razdoblje valjanosti: ',
'validityNote':
'Aktivira se odmah nakon kupnje, vrijedi 2 godine nakon aktivacije.',
@ -1701,15 +1701,15 @@ const Map<String, String> hrHR = {
"东帝汶": "Istočni Timor",
"斐济": "Fidži",
"所罗门群岛": "Salomonski Otoci",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Demokratska Republika Kongo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"马尔代夫": "Maldivi",
"不丹": "Butan",
"摩纳哥": "Monako",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"牙买加": "Jamajka",
"巴哈马": "Bahami",
"巴布亚新几内亚": "Papua Nova Gvineja",
"萨摩亚": "Samoa",
};

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

@ -385,21 +385,21 @@ const Map<String, String> huHU = {
// 商品模块 - 会议商品页
'meetingRecording': 'Megbeszélés rögzítése',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Átirat és összefoglaló',
'keywordSearch': 'Kulcsszavas keresés',
'collaborationSharing': 'Együttműködés és megosztás',
'meetingHeaderDesc1':
'Hangrögzítés, átírás, kulcsszavas keresés és automatikus összefoglaló a hatékonyabb megbeszélésekért.',
'meetingHeaderDesc2':
'Üzleti megbeszélésekhez, órai jegyzetekhez és interjújegyzőkönyvekhez.',
'meetingAutoRecording': 'Automatikus rögzítés és szegmentálás',
'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',
'meetingSpeakerTagging': 'Beszélőcímkézés',
'meetingLongAudioTranscription': 'Hosszú hangfelvétel átírása',
'meetingKeyPointSummary': 'Kulcspontok kinyerése',
'meetingTopicNameSearch': 'Keresés téma/név alapján',
'meetingTimelineJump': 'Idővonalon ugrás',
'meetingExportSummary': 'Jegyzőkönyv exportálása',
'meetingMultiPlatformShare': 'Megosztás platformok között',
'meetingDisclaimer':
'Használja csendes környezetben; a teljesítmény a mikrofontól és a hálózattól függ.',
@ -417,7 +417,7 @@ const Map<String, String> huHU = {
'earlyAccessNewFeatures': 'Korai hozzáférés az új funkciókhoz',
'crossDeviceSync': 'Szinkronizálás eszközök között',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'A tényleges előnyök a csomag részleteitől függnek, és verziónként változhatnak.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Alap 100',
@ -447,27 +447,30 @@ const Map<String, String> huHU = {
// 新手引导
'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, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Következő',
'sayLilyHint': 'Mondja a mikrofonba: \u201eLily Lily\u201d',
'imHere': 'Tessék, itt vagyok~',
'guideWelcomeWakeAI':
'Üdvözöljük a Voitransban! Először élessze fel AI-ját, \u201eLilyt\u201d.',
'aiReplyCompleted': 'Lily befejezte a választ!',
'aiThinking': 'Lily gondolkodik\u2026',
'guideAwakenSuccess': 'Remek! Lily ébren van \u2014 kérjen tőle segítséget.',
'confirmInput': 'Bevitel megerősítése',
'guideClickSendPrefix': 'Koppintson a küldés gombra, ',
'guideWeatherStart': 'Mondja Lilynek: \u201eMilyen idő van ma?\u201d',
'guideWeatherInput': 'Milyen idő van ma?',
'guideWeatherSend': 'Lily valós időben jelenti az időjárást',
'guideWeatherEnd':
'Lily élőben jelenti az időt \u2014 próbáljon más parancsokat',
'guideMusicStart': 'Mondja Lilynek: \u201eJátssz rock zenét\u201d',
'guideMusicInput': 'Játssz rock zenét',
'guideMusicSend': 'Lily zenét keres Önnek',
'guideMusicEnd': 'Lily zenét talált \u2014 próbáljon más parancsokat',
'guideNavStart':
'Mondja Lilynek: \u201eNavigálj a shenzeni repülőtérre\u201d',
'guideNavInput': 'Navigálj a shenzeni repülőtérre',
'guideNavSend': 'Lily megtervezi az útvonalat',
'guideNavEnd': 'Navigáció beállítva \u2014 próbáljon más parancsokat',
'guideMeetingStart':
'Mondja Lilynek: „Készíts egy megbeszélés-emlékeztetőt holnap 15:00-ra”',
'guideMeetingInput': 'Készíts egy megbeszélés-emlékeztetőt holnap 15:00-ra',

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

@ -216,54 +216,54 @@ const Map<String, String> idID = {
"scene": "Skenario",
// 用量统计模块
"aiChat": "AI Chat",
"aiChat": "Obrolan AI",
"translationStats": "Statistik Terjemahan",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"meetingStats": "Statistik Rapat",
"today": "Hari Ini",
"thisWeek": "Minggu Ini",
"thisMonth": "Bulan Ini",
"history": "Riwayat",
"currentSessionStats": "Statistik Sesi Saat Ini",
"translationCount": "Jumlah Terjemahan",
"sessionDuration": "Session Duration",
"characters": "Characters",
"sessionDuration": "Durasi Sesi",
"characters": "Karakter",
"recordingDuration": "Durasi Rekaman",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"totalApiCalls": "Total Panggilan API",
"sessionCount": "Jumlah Sesi",
"totalCharacters": "Total Karakter",
"apiCallStats": "Statistik Panggilan API",
"translationApi": "API Terjemahan",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"dataVolumeStats": "Statistik Volume Data",
"sourceTextCharacters": "Karakter Teks Sumber",
"ttsTextCharacters": "Karakter Teks TTS",
"effectiveAudioDuration": "Durasi Audio Efektif",
"totalSessionDuration": "Total Durasi Sesi",
"costStats": "Statistik Biaya",
"estimatedCost": "Estimasi Biaya",
"dailyCostThreshold": "Batas Biaya Harian",
"monthlyCostThreshold": "Batas Biaya Bulanan",
"usageBehaviorStats": "Statistik Perilaku Penggunaan",
"mostUsedLanguagePair": "Pasangan bahasa paling sering digunakan",
"mostUsedMode": "Mode paling sering digunakan",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"totalAudioDuration": "Total Durasi Audio",
"audioFileSize": "Ukuran File Audio",
"transcriptBytes": "Byte Transkrip",
"loadFailed": "Gagal Memuat",
"statsLoadFailedTryLater": "Statistik gagal dimuat. Silakan coba lagi nanti.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Pembersihan Selesai",
"cleanedOldData": "Data lebih dari 90 hari telah dibersihkan",
"exportFeature": "Fitur Ekspor",
"exportInDevelopment": "Fitur ekspor data sedang dalam pengembangan",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'Paket Tersedia',
'remainingQuota': 'Kuota Tersisa',
'totalQuota': 'Total Kuota',
'remaining': 'Tersisa',
'featureDescription': 'Deskripsi Fitur',
'paymentSuccess': 'Pembayaran berhasil',
'paymentFailed': 'Pembayaran gagal',
'gotIt': 'Mengerti',
@ -330,101 +330,101 @@ const Map<String, String> idID = {
'Keanggotaan AI telah kedaluwarsa, silakan buka halaman perpanjangan keanggotaan untuk memperbarui.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Musik & Rekomendasi',
'navigationAndRoutes': 'Navigasi & Rute',
'nearbySearch': 'Pencarian Sekitar',
'newsInformation': 'Berita',
'communicationAssistant': 'Asisten Komunikasi',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Kuota percakapan lebih panjang, lebih banyak panggilan alat, panjang konteks lebih besar.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Cocok untuk tanya jawab agen, ringkasan, analisis, dan eksekusi tugas.',
'musicSearchPlaybackControl': 'Pencarian perpustakaan musik dan kontrol pemutaran',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Daftar putar pintar dan rekomendasi lagu serupa',
'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',
'Perencanaan rute dan penghindaran kemacetan',
'voiceBroadcastAndWaypoints': 'Siaran suara dan pengaturan titik jalan',
'realTimeWeatherForecast': 'Cuaca dan prakiraan waktu nyata',
'clothingAdviceAndTravelReminders': 'Saran pakaian dan pengingat perjalanan',
'poiSearchFoodGasParking': 'Pencarian POI: makanan / bensin / parkir',
'ratingsHoursAndDirectRoutes': 'Rating, jam operasional, dan rute langsung',
'hotNewsAndTopicOverview': 'Berita populer dan ringkasan topik',
'longArticleSummariesAndKeyPoints': 'Ringkasan artikel panjang dan poin-poin utama',
'helpCallAndSMS': 'Bantuan panggilan dan SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Templat pesan dan pengingat jadwal',
'aiDisclaimer':
'Fitur bergantung pada izin perangkat, ketersediaan layanan, dan kondisi jaringan.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Transkripsi Waktu Nyata',
'sceneLexicon': 'Glosarium Skenario',
'subtitleDisplay': 'Subtitle',
'transHeaderDesc1':
'Interpretasi simultan waktu nyata dan terjemahan teks dengan suara latensi rendah.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Cocok untuk perjalanan, bisnis, pidato, dan pengajaran.',
'translateZhEn': 'Terjemahan Mandarin-Inggris',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'lowLatencyVoiceBroadcast': 'Siaran suara latensi rendah',
'multiLangTextTranslation': 'Terjemahan teks multibahasa',
'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',
'Optimasi terminologi dan pelestarian konteks',
'lexiconTourBusinessLife': 'Leksikon Perjalanan/Bisnis/Kehidupan',
'personalVocabularyMemory': 'Memori kosakata pribadi',
'conversationSubtitleLargeText': 'Subtitle percakapan / Mode teks besar',
'colorHighContrast': 'Kontras warna tinggi',
'transDisclaimer':
'Kinerja terjemahan bergantung pada mikrofon, latensi jaringan, dan kebisingan sekitar.',
// 商品模块 - 会议商品页
'meetingRecording': 'Rekaman Rapat',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transkripsi & Ringkasan',
'keywordSearch': 'Pencarian Kata Kunci',
'collaborationSharing': 'Kolaborasi & Berbagi',
'meetingHeaderDesc1':
'Perekaman audio, transkripsi, pencarian kata kunci, dan ringkasan otomatis untuk meningkatkan efisiensi rapat.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Cocok untuk rapat bisnis, catatan kelas, dan notulen wawancara.',
'meetingAutoRecording': 'Perekaman otomatis dan segmentasi',
'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',
'meetingSpeakerTagging': 'Pelabelan pembicara',
'meetingLongAudioTranscription': 'Transkripsi audio panjang',
'meetingKeyPointSummary': 'Ekstraksi poin utama',
'meetingTopicNameSearch': 'Cari berdasarkan topik/nama',
'meetingTimelineJump': 'Lompatan timeline',
'meetingExportSummary': 'Ekspor notulen',
'meetingMultiPlatformShare': 'Berbagi lintas platform',
'meetingDisclaimer':
'Gunakan di lingkungan yang tenang; kinerja bergantung pada mikrofon dan jaringan.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Ringkasan manfaat',
'higherQuota': 'Kuota penggunaan lebih tinggi',
'lowerUnitPrice': 'Harga per unit lebih rendah',
'priorityService': 'Layanan prioritas',
'exclusiveSupportChannel': 'Saluran dukungan khusus',
'fastResponse': 'Respons masalah cepat',
'eventsAndDiscounts': 'Acara dan diskon',
'memberExclusiveEvents': 'Acara eksklusif anggota',
'longTermDiscountPlan': 'Paket diskon jangka panjang',
'generalPrivileges': 'Hak istimewa umum',
'earlyAccessNewFeatures': 'Akses awal ke fitur baru',
'crossDeviceSync': 'Sinkronisasi lintas perangkat',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Manfaat aktual bergantung pada detail paket dan dapat berubah seiring pembaruan versi.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Dasar 100',
'ai_002_name': 'AI Dasar 500',
'ai_003_name': 'AI Dasar 1000',
'meet_001_name': 'Rapat Dasar 100',
'meet_002_name': 'Rapat Dasar 500',
'meet_003_name': 'Rapat Dasar 1000',
'trans_001_name': 'Terjemahan Dasar 100',
'trans_002_name': 'Terjemahan Dasar 500',
'trans_003_name': 'Terjemahan Dasar 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Termasuk 100 penggunaan. Akses fitur AI inti.',
'ai_002_desc': 'Termasuk 500 penggunaan. Akses fitur AI inti.',
'ai_003_desc': 'Termasuk 1000 penggunaan. Akses fitur AI inti.',
'meet_001_desc': 'Termasuk 100 rekaman/transkripsi rapat.',
'meet_002_desc': 'Termasuk 500 rekaman/transkripsi rapat.',
'meet_003_desc': 'Termasuk 1000 rekaman/transkripsi rapat.',
@ -433,46 +433,46 @@ const Map<String, String> idID = {
'trans_003_desc': 'Termasuk 1000 terjemahan (suara/teks).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Aplikasi: VoiTrans · Disediakan oleh: VoiTrans',
'iapCustomerServiceQQLabel': 'Layanan pelanggan IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'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, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Selanjutnya',
'sayLilyHint': 'Ucapkan "Lily Lily" ke mikrofon',
'imHere': 'Saya di sini~',
'guideWelcomeWakeAI': 'Selamat datang di Voitrans! Pertama, bangunkan AI Anda “Lily”.',
'aiReplyCompleted': 'Lily telah menyelesaikan balasan!',
'aiThinking': 'Lily sedang berpikir…',
'guideAwakenSuccess': 'Bagus! Lily sudah bangun—minta Lily membantu.',
'confirmInput': 'Konfirmasi Input',
'guideClickSendPrefix': 'Ketuk kirim, ',
'guideWeatherStart': 'Katakan pada Lily: “Bagaimana cuaca hari ini?”',
'guideWeatherInput': 'Bagaimana cuaca hari ini?',
'guideWeatherSend': 'Lily akan melaporkan cuaca secara real-time',
'guideWeatherEnd': 'Lily dapat melaporkan cuaca langsung—coba perintah lain',
'guideMusicStart': 'Katakan pada Lily: “Putar musik rock”',
'guideMusicInput': 'Putar musik rock',
'guideMusicSend': 'Lily akan mencarikan musik untuk Anda',
'guideMusicEnd': 'Lily menemukan musik—coba perintah lain',
'guideNavStart': 'Katakan pada Lily: “Navigasi ke bandara”',
'guideNavInput': 'Navigasi ke bandara',
'guideNavSend': 'Lily akan merencanakan rute',
'guideNavEnd': 'Navigasi ditetapkan—coba perintah lain',
'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',
'Katakan pada Lily: “Buat pengingat rapat untuk besok jam 15:00”',
'guideMeetingInput': 'Buat pengingat rapat untuk besok jam 15:00',
'guideMeetingSend': 'Lily akan membuat pengingat rapat',
'guideMeetingEnd': 'Pengingat dibuat—coba perintah lain',
'guidePhoneStart': 'Katakan pada Lily: “Telepon Ibu”',
'guidePhoneInput': 'Telepon Ibu',
'guidePhoneSend': 'Lily akan melakukan panggilan',
'guidePhoneEnd': 'Panggilan dilakukan—coba perintah lain',
'guideSmsStart': 'Katakan pada Lily: “Kirim pesan ke Ayah: Saya pulang untuk makan malam”',
'guideSmsInput': 'Kirim ke Ayah: Saya pulang untuk makan malam',
'guideSmsSend': 'Lily akan mengirim pesan',
'guideSmsEnd': 'Pesan terkirim—kontrol suara sangat praktis',
// Meeting模块 - 首页与导航
"startMeeting": "Mulai Rapat",
@ -501,9 +501,9 @@ const Map<String, String> idID = {
'aiPenNotFound': 'Perangkat AI PEN tidak ditemukan',
'connectedToAiPen': 'Terhubung ke perangkat AI PEN',
'checkingNewFiles': 'Memeriksa file baru untuk diimpor',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Memulai Wi-Fi...',
'newFilesDetected': 'File baru terdeteksi, mempersiapkan impor',
'noNewFiles': 'Tidak ada file baru untuk diimpor',
'connectingWifi': 'Menyambungkan ke Wi‑Fi...',
'wifiConnected': 'Wi‑Fi berhasil terhubung',
'downloadingFiles': 'Mengunduh file...',
@ -517,7 +517,7 @@ const Map<String, String> idID = {
'liveRecording': 'Rekaman Langsung',
'audioVideoRecording': 'Rekaman Audio/Video',
'callRecording': 'Rekaman Panggilan',
'importAudio': 'Import Audio',
'importAudio': 'Impor Audio',
'meetingRecordExitTitle': 'Keluar dari perekaman', // 退出录音
'meetingRecordExitMessage':
'Pilih apa yang akan dilakukan sebelum keluar', // 请选择离开后的操作
@ -542,30 +542,30 @@ const Map<String, String> idID = {
'Untuk menampilkan bilah mengambang perekaman (timer/jeda/lanjut) saat merekam, kami memerlukan izin overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Tidak dapat membuka pengaturan sistem secara otomatis. Silakan buka Pengaturan dan aktifkan izin overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Sedang mentranskrip...',
'summarizing': 'Sedang meringkas...',
'analyzing': 'Sedang menganalisis...',
'summaryComplete': 'Ringkasan Selesai',
'generate': 'Buat',
'overview': 'Ringkasan',
'transcription': 'Transkripsi',
'summary': 'Ringkasan',
'mindMap': 'Peta Pikiran',
'editSpeaker': 'Sunting',
'nameSpeaker': 'Beri Nama Pembicara',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Ringkas Ulang',
'dateAndTime': 'Tanggal & Waktu',
'location': 'Lokasi',
'attendees': 'Peserta',
'inputLocation': 'Masukkan Lokasi',
'inputAttendees': 'Masukkan Peserta',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Pilih Templat Ringkasan',
'useThisTemplate': 'Gunakan Templat Ini',
'lastUsed': 'Terakhir Digunakan',
'create': 'Buat',
'templateDetails': 'Detail Template',
'tag': 'Tag',
@ -584,160 +584,160 @@ const Map<String, String> idID = {
'pleaseEnter': 'Silakan masukkan',
'viewAll': 'Lihat semua',
'recordingLanguage': 'Bahasa Rekaman',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'chineseSimplified': 'Bahasa Mandarin (Sederhana)',
'meetingGenerateNow': 'Buat sekarang',
'keyEventsAnalyzed': 'Menganalisis {count} peristiwa penting.',
'aiAnalysisDesc':
'Analisis AI mengidentifikasi peristiwa penting dalam rekaman, sehingga Anda dapat memilih peristiwa penting untuk pembuatan AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Mengimpor...',
'batchImporting': 'Mengimpor secara massal...',
'importingLocalRecordings': 'Mengimpor rekaman lokal...',
'importFailed': 'Gagal mengimpor file: {filePath}, kesalahan: {error}',
'importSuccess': 'Berhasil mengimpor {count} rekaman lokal',
'importError': 'Impor gagal: {error}',
'pleaseSelectAudioFile': 'Silakan pilih file audio',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Bagikan Audio Rapat',
'shareComplete': 'Berbagi selesai!',
'shareFailed': 'Berbagi gagal: {error}',
'fileProcessingFailed':
'Pemrosesan file gagal: {filePath}, kesalahan: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Simpan Peta Pikiran',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'Bagikan Peta Pikiran',
'shareSuccess': 'Berbagi Berhasil',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Tanya AI ...',
'askAIPrompt': 'Ada yang bisa saya bantu hari ini?',
'continueAsk': 'Lanjutkan Bertanya',
'todoList': 'Daftar Tugas',
'extractConclusion': 'Ekstrak Kesimpulan',
'generateKeyIndicators': 'Buat Indikator Utama',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Bagikan Tautan',
'copyTranscript': 'Salin Transkrip',
'copySummary': 'Salin Ringkasan',
'exportAudio': 'Ekspor Audio',
'exportTranscript': 'Ekspor Transkrip',
'shareMeetingAudio': 'Bagikan Audio Rapat',
'exportSummary': 'Ekspor Ringkasan',
'exportAs': 'Ekspor Sebagai',
'exportingPDF': 'Mengekspor PDF...',
'export': 'Ekspor',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Terapkan ke semua paragraf pembicara ini',
'summaryWillBeUpdatedAutomatically':
'Ringkasan akan diperbarui otomatis berdasarkan template',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Beri Nama Pembicara Saat Ini',
'recentlyUsedNames': 'Nama yang Baru Digunakan',
'applyToCurrentParagraph': 'Terapkan ke Paragraf Saat Ini',
'totalTime': 'Total Waktu',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Pembicara dalam ringkasan akan diperbarui secara otomatis',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'Sinkronkan ke Cloud',
'syncToCloudTip':
'Sinkronkan rekaman Anda ke cloud secara otomatis; Anda dapat memutar, mengelola, dan membagikan rekaman melalui VOITRANS APP atau VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'syncToVoitransApp': 'Sinkronkan ke Aplikasi VOITRANS',
'transcriptionRecord': 'Catatan Transkripsi',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Catatan Transkripsi',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'templateCommunity': 'Komunitas Templat',
'comingSoon': 'Segera Hadir',
'integration': 'Integrasi',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Diaktifkan',
'disabled': 'Dinonaktifkan',
'myVoitransDevice': 'Perangkat VOITRANS Saya',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Bantuan & Umpan Balik',
'aboutVoitrans': 'Tentang VOITRANS',
'meetingDays': 'Hari',
'meetingHours': 'Jam',
'voitransAiMember': 'Anggota Voitrans AI',
'unlockStarterMember': 'Buka Keanggotaan Starter',
'bindDeviceToActivate':
'Ikat perangkat Voitrans untuk mengaktifkan keanggotaan Starter',
'unlockNow': 'Unlock Now',
'unlockNow': 'Buka Sekarang',
// 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',
'comparison': 'Perbandingan',
'detailedInfo': 'Informasi Detail',
'monthlyTranscriptionTime': 'Waktu Transkripsi Bulanan',
'unlimited': 'Tak Terbatas',
'professionalTemplates': 'Templat Profesional',
'limited': 'Terbatas',
'fullTemplates': 'Templat Lengkap',
'professionalTerms': 'Istilah Profesional',
'customTemplates': 'Templat Kustom',
'visualMindMap': 'Peta Pikiran Visual',
'speakerIdentification': 'Identifikasi Pembicara',
'aiVoiceEnhancement': 'Peningkatan Suara AI',
'audioImport': 'Impor Audio',
'multipleExportFormats': 'Berbagai Format Ekspor',
'professionalSummaryTemplates': 'Templat Ringkasan Profesional',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Desain templat profesional untuk meningkatkan efisiensi kerja Anda. Disesuaikan dengan kebutuhan industri.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Anda dapat menyesuaikan prompt ringkasan sesuai kebutuhan dan menggunakannya untuk membuat ringkasan yang diinginkan.',
'askAiDesc':
'Ekstrak informasi lebih dalam dari rekaman secara cerdas; buat tabel data, kesimpulan diskusi utama, daftar tugas, email laporan, dan konten berformat lainnya dengan sekali klik.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Lebih dari ringkasan - atur dan visualisasikan poin-poin utama dengan peta pikiran untuk pemahaman teks yang lebih efektif.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Temukan, bagikan, dan dapatkan inspirasi dari perpustakaan templat yang dibuat oleh pengguna.',
'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.',
'Transkripsi audio akan mendukung identifikasi pembicara, merekonstruksi konten rapat atau panggilan telepon secara lebih intuitif. Ringkasan juga akan lebih akurat.',
'privateCloudSyncDesc':
'Rekaman dan transkripsi Anda akan disimpan dengan aman di server cloud khusus, dengan enkripsi penuh saat unggah dan unduh untuk memastikan privasi dan keamanan.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'Peningkatan suara AI mendukung berbagai pengaturan pengurangan kebisingan, menghilangkan kebisingan latar secara cerdas, meningkatkan kejernihan suara, dan meningkatkan kualitas pemutaran audio.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Impor file audio dengan mudah dari aplikasi lokal atau pihak ketiga, seperti memo suara, Google Drive, dll.',
'multipleExportFormatsDesc':
'Ekspor rekaman audio, teks transkripsi, dan ringkasan Anda dalam berbagai format (TXT, PDF, JPEG) sesuai kebutuhan.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Tingkatkan Keanggotaan Anda',
'yearlySubscription': 'Langganan Tahunan',
'monthlySubscription': 'Langganan Bulanan',
'proMonthly': 'Pro ¥60/bulan',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'Uji coba gratis 7 hari, lalu ¥800/tahun. Batalkan kapan saja sebelum uji coba berakhir.',
'sevenDayTrial': 'Uji Coba Gratis 7 Hari',
'unlimitedMonthly': 'Unlimited ¥120/bulan',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'Uji coba gratis 7 hari, lalu ¥1600/tahun. Batalkan kapan saja sebelum uji coba berakhir.',
'trialNote': '*Uji coba gratis 7 hari, lalu ditagih tahunan, batalkan kapan saja.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/bulan',
'subscribe': 'Berlangganan',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/bulan',
'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: ',
'*Setelah meningkatkan langganan, sisa hari langganan asli akan dihitung secara otomatis dan dikembalikan ke akun pembayaran Anda',
'buyMoreTranscriptionTime': 'Beli Waktu Transkripsi Tambahan',
'sixThousandMinutes': '6.000 menit',
'threeThousandMinutes': '3.000 menit',
'sixHundredMinutes': '600 menit',
'oneHundredTwentyMinutes': '120 menit',
'validityPeriod': '*Masa Berlaku: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Aktif segera setelah pembelian, berlaku 2 tahun setelah aktivasi.',
'purchase': 'Beli',
// Meeting模块 - 录音语言
'recordLanguage': 'Bahasa Rekaman',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Bahasa Kanton',
'sichuan': 'Dialek Sichuan',
'shanghai': 'Dialek Shanghai',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Bahasa Tidak Dikenal',
'analysisFailed': 'Analisis gagal, silakan coba lagi nanti',
'transcriptionFailed': 'Transkripsi gagal, silakan coba lagi nanti',
'summaryFailed': 'Ringkasan gagal, silakan coba lagi nanti',
@ -819,12 +819,12 @@ const Map<String, String> idID = {
"noDevicesBound": "Belum ada perangkat yang terikat",
"pleaseBindDeviceFirst":
"Silakan ikat perangkat terlebih dahulu untuk dikelola",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"noMacAddress": "Tidak Ada Alamat MAC",
"licenseCode": "Kode Lisensi",
"confirmUnbind": "Konfirmasi Pelepasan",
"confirmUnbindMessage":
"Apakah Anda yakin ingin melepas ikatan perangkat \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
"confirmUnbindAction": "Konfirmasi Pelepasan",
// Agent模块 - 主界面
"Lily": "Lily",
@ -916,11 +916,11 @@ const Map<String, String> idID = {
'generatedByAi': 'Dihasilkan oleh AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'Panggilan Alat',
'noResult': 'Tidak Ada Hasil',
'noToolCallContentToCopy': 'Tidak ada konten panggilan alat untuk disalin',
'toolCallDetails': 'Detail Panggilan Alat:',
'toolCallContentCopied': 'Konten panggilan alat disalin ke papan klip',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Berikut adalah beberapa musik yang direkomendasikan:',
@ -963,7 +963,7 @@ const Map<String, String> idID = {
'pleaseInstallBaiduMapApp':
'Silakan instal aplikasi Baidu Maps terlebih dahulu',
'appleMapStartFailed': 'Apple Maps gagal dimulai',
'appleMapUnavailable': 'Apple Maps unavailable',
'appleMapUnavailable': 'Apple Maps tidak tersedia',
'openAppleMapError': 'Kesalahan saat membuka Apple Maps',
// Agent模块 - 天气卡片
@ -1097,9 +1097,9 @@ const Map<String, String> idID = {
"processingFailed": "Pemrosesan Gagal",
"imageProcessingOrTranslationFailed":
"Pemrosesan gambar atau terjemahan gagal. Silakan coba lagi.\nKesalahan: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Ukuran gambar melebihi batas 4MB",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Ukuran gambar melebihi 4MB. Kurangi kualitas atau dimensi lalu coba lagi",
"emptyTranslationResult": "API terjemahan gambar mengembalikan hasil kosong",
"imageTranslationFailedTryLater":
"Terjemahan gambar gagal. Masalah jaringan atau batas laju. Silakan coba lagi nanti",
@ -1110,11 +1110,11 @@ const Map<String, String> idID = {
"photoAlbumPermissionRequired":
"Izin album foto diperlukan untuk memilih gambar",
"translationDetails": "Detail Terjemahan",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": "Gambar Asli",
"sourceLanguage": "Bahasa Sumber",
"targetLanguage": "Bahasa Target",
"translationTime": "Waktu Terjemahan",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": "Fitur berbagi sedang dalam pengembangan",
// 翻译模块 - 录音文件
"translateAudioFiles": "Terjemahkan File Audio",
@ -1165,8 +1165,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?',
'clean': 'Hapus Cache',
'cleanTips': 'Apakah Anda yakin ingin menghapus cache pribadi?',
'networkConnectionFailed':
'Koneksi jaringan gagal, silakan periksa pengaturan jaringan Anda dan coba lagi',
'serverTemporarilyUnavailable':
@ -1208,7 +1208,7 @@ const Map<String, String> idID = {
'Layanan Akun telah diinisialisasi', // AccountService 已初始化
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermission': 'Penyimpanan',
'meetingStoragePermissionExplanation':
'Kami memerlukan izin penyimpanan agar Anda dapat memilih dan mengunggah file audio.',
'meetingStoragePermissionPermanentDenial':
@ -1224,8 +1224,8 @@ const Map<String, String> idID = {
'locationPermissions': 'Izin Lokasi',
'phone': 'Telepon',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'contacts': 'Kontak',
'notification': 'Notifikasi',
'alarm': 'Alarm',
'calendarWrite': 'Tulis Kalender',
'calendarFullAccess': 'Akses Penuh Kalender',
@ -1233,7 +1233,7 @@ const Map<String, String> idID = {
'phonePermissionDesc': 'Digunakan untuk fungsi melakukan panggilan',
'smsPermissionDesc': 'Digunakan untuk fungsi mengirim SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'Digunakan untuk mengatur alarm tepat agar pengingat berbunyi tepat waktu',
'calendarWritePermissionDesc':
'Digunakan untuk membuat acara kalender dan pengingat',
'calendarFullAccessPermissionDesc':
@ -1273,7 +1273,7 @@ const Map<String, String> idID = {
'Digunakan untuk menyambungkan ke perangkat Bluetooth',
'bluetoothConnectPermissionDetailDesc':
'Menyambungkan ke perangkat Bluetooth memerlukan izin koneksi Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Digunakan untuk mengirim pesan notifikasi',
'notificationPermissionDetailDesc':
'Aplikasi memerlukan izin notifikasi untuk mengirim peringatan dan pesan penting kepada Anda',
'appNeedsPermissionForFullFunction':
@ -1281,7 +1281,7 @@ const Map<String, String> idID = {
'permanentDenialText':
'Anda telah menolak izin {permission} secara permanen, silakan buka pengaturan aplikasi untuk mengaktifkannya',
'goToSettings': 'Buka Pengaturan',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothScan': 'Pemindaian Bluetooth',
'bluetoothConnect': 'Koneksi Bluetooth',
'bluetoothScanExplanation':
'Aplikasi memerlukan izin pemindaian Bluetooth untuk memindai perangkat Bluetooth di sekitar.',
@ -1295,8 +1295,8 @@ const Map<String, String> idID = {
'Izin koneksi Bluetooth telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.',
'locationPermanentDenial':
'Izin lokasi telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermission': 'Notifikasi',
'locationPermission': 'Lokasi',
'notificationPermissionExplanation':
'Izin notifikasi diperlukan untuk menampilkan status pemutaran musik.',
'locationPermissionExplanation':
@ -1305,7 +1305,7 @@ const Map<String, String> idID = {
'Anda telah menolak izin notifikasi secara permanen, silakan buka pengaturan untuk mengaktifkannya.',
'locationPermissionPermanentDenial':
'Anda telah menolak izin lokasi secara permanen, silakan buka pengaturan untuk mengaktifkannya.',
'storagePermission': 'Storage',
'storagePermission': 'Penyimpanan',
'microphonePermissionExplanation':
'Kami memerlukan izin mikrofon untuk merekam konten audio.',
'storagePermissionExplanation':
@ -1681,15 +1681,15 @@ const Map<String, String> idID = {
"东帝汶": "Timor Leste",
"斐济": "Fiji",
"所罗门群岛": "Kepulauan Solomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Republik Demokratik Kongo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"马尔代夫": "Maladewa",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"摩纳哥": "Monako",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"牙买加": "Jamaika",
"巴哈马": "Bahama",
"巴布亚新几内亚": "Papua Nugini",
"萨摩亚": "Samoa",
};

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

@ -255,10 +255,10 @@ const Map<String, String> isIS = {
"loadFailed": "Hleðsla mistókst",
"statsLoadFailedTryLater":
"Tókst ekki að hlaða tölfræði. Reyndu aftur síðar.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Hreinsun lokið",
"cleanedOldData": "Gögn eldri en 90 dagar hreinsað",
"exportFeature": "Útflutningseiginleiki",
"exportInDevelopment": "Gagnaútflutningur er í þróun",
// 商品模块 - 通用
'availablePackages': 'Tiltækir pakkar',
@ -333,100 +333,102 @@ const Map<String, String> isIS = {
'AI-aðild er útrunnin, farðu á áfyllingarsíðu aðildar til að endurnýja.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Tónlist og tillögur',
'navigationAndRoutes': 'Leiðsögn og leiðir',
'nearbySearch': 'Leit í nágrenninu',
'newsInformation': 'Fréttir',
'communicationAssistant': 'Samskiptaaðstoðarmaður',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Lengri samtalskivóti, fleiri verkfæraköll, lengra samhengi.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Hentar fyrir spjallþjónn-spurningar, samantektir, greiningar og verkframkvæmd.',
'musicSearchPlaybackControl': 'Leit í tónlistarsafni og spilunastjórnun',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Snjall spilunarlisti og tillögur um svipuð lög',
'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',
'Leiðarskipulag og umferðarstaðsetningu forðast',
'voiceBroadcastAndWaypoints': 'Raddkynning og millistaðarstillingar',
'realTimeWeatherForecast': 'Rauntímaveður og spá',
'clothingAdviceAndTravelReminders':
'Klæðnaðarráðleggingar og ferðaáminningar',
'poiSearchFoodGasParking': 'POI-leit: veitingastaðir / bensín / bílastæði',
'ratingsHoursAndDirectRoutes':
'Einkunnir, opnunartímar og bein leiðarvalgsleið',
'hotNewsAndTopicOverview': 'Heitar fréttir og efnisyfirlit',
'longArticleSummariesAndKeyPoints':
'Samantektir á löngum greinum og lykilatriðum',
'helpCallAndSMS': 'Aðstoð við símtöl og SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Sniðmátsskilaboð og dagskráráminningar',
'aiDisclaimer':
'Eiginleikar fara eftir heimildum tækis, framboði þjónustu og nettengingu.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Rauntíma uppskrift',
'sceneLexicon': 'Atburðarásorðabók',
'subtitleDisplay': 'Skjátextar',
'transHeaderDesc1':
'Rauntíma samtímtúlkun og textaþýðing með lágri töf í rödd.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Hentar fyrir ferðalög, viðskipti, ræður og kennslu.',
'translateZhEn': 'Kínversku-ensku þýðing',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'lowLatencyVoiceBroadcast': 'Raddkynning með lágri töf',
'multiLangTextTranslation': 'Fjöltyng textaþýðing',
'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',
'termOptimizationContextPreserve': 'Hugtakabestun og samhengisgeymsla',
'lexiconTourBusinessLife': 'Ferðalags-/viðskipta-/lífsordabækur',
'personalVocabularyMemory': 'Persónuleg orðaforðaminnir',
'conversationSubtitleLargeText': 'Samtalsskjátextar / Stórtextahamur',
'colorHighContrast': 'Mikið litasamræmi',
'transDisclaimer': 'Þýðing fer eftir hljóðnema, nettöf og umhverfishávaða.',
// 商品模块 - 会议商品页
'meetingRecording': 'Fundarupptaka',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Uppskrift og samantekt',
'keywordSearch': 'Leitarorðaleit',
'collaborationSharing': 'Samvinna og deling',
'meetingHeaderDesc1':
'Hljóðupptaka, uppskrift, leitarorðaleit og sjálfvirkt yfirlit til að auka skilvirkni funda.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Hentar fyrir viðskiptafundi, bekkarglósur og viðtalsfundargerðir.',
'meetingAutoRecording': 'Sjálfvirk upptaka og skipting',
'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',
'meetingSpeakerTagging': 'Merking ræðumanns',
'meetingLongAudioTranscription': 'Uppskrift langs hljóðs',
'meetingKeyPointSummary': 'Útdráttur lykilatriða',
'meetingTopicNameSearch': 'Leita eftir efni/nafni',
'meetingTimelineJump': 'Tímalínuhopp',
'meetingExportSummary': 'Flytja út fundargerð',
'meetingMultiPlatformShare': 'Deila yfir vettvanga',
'meetingDisclaimer':
'Notaðu í hljóðlátu umhverfi; afköst fara eftir hljóðnema og neti.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Yfirlit yfir hlunnindi',
'higherQuota': 'Hærri notkunarkvóti',
'lowerUnitPrice': 'Lægra einingaverð',
'priorityService': 'Forgangsþjónusta',
'exclusiveSupportChannel': 'Sérstakur stuðningsrás',
'fastResponse': 'Hröð viðbrögð við vandamálum',
'eventsAndDiscounts': 'Viðburðir og afsláttur',
'memberExclusiveEvents': 'Viðburðir eingöngu fyrir meðlimi',
'longTermDiscountPlan': 'Langtímaafslátttaráætlun',
'generalPrivileges': 'Almenn forréttindi',
'earlyAccessNewFeatures': 'Snemma aðgangur að nýjum eiginleikum',
'crossDeviceSync': 'Samstilling milli tækja',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Raunveruleg hlunnindi fara eftir pakkaskilmálum og geta breyst með útgáfum.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Grunn 100',
'ai_002_name': 'AI Grunn 500',
'ai_003_name': 'AI Grunn 1000',
'meet_001_name': 'Fundur Grunn 100',
'meet_002_name': 'Fundur Grunn 500',
'meet_003_name': 'Fundur Grunn 1000',
'trans_001_name': 'Þýðing Grunn 100',
'trans_002_name': 'Þýðing Grunn 500',
'trans_003_name': 'Þýðing Grunn 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Inniheldur 100 notkun. Aðgangur að kjarna AI-eiginleikum.',
'ai_002_desc': 'Inniheldur 500 notkun. Aðgangur að kjarna AI-eiginleikum.',
'ai_003_desc': 'Inniheldur 1000 notkun. Aðgangur að kjarna AI-eiginleikum.',
'meet_001_desc': 'Inniheldur 100 fundarupptökur/uppskriftir.',
'meet_002_desc': 'Inniheldur 500 fundarupptökur/uppskriftir.',
'meet_003_desc': 'Inniheldur 1000 fundarupptökur/uppskriftir.',
@ -435,46 +437,49 @@ const Map<String, String> isIS = {
'trans_003_desc': 'Inniheldur 1000 þýðingar (rödd/texti).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Forrit: VoiTrans · Veitt af: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP þ jónustuver QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'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, ',
'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',
"skip": "Sleppa",
"next": "Næsta",
"sayLilyHint": "Segðu \"Lily Lily\" í hljóðnemana",
"imHere": "Ég er hér~",
"guideWelcomeWakeAI":
"Velkomin(n) í Voitrans! Fyrst skaltu vekja AI þitt \u201cLily\u201d.",
"aiReplyCompleted": "Lily hefur lokið svari!",
"aiThinking": "Lily er að hugsa\u2026",
"guideAwakenSuccess": "Frábært! Lily er vakið — biddu það um hjálp.",
"confirmInput": "Staðfesta innslátt",
"guideClickSendPrefix": "Pikkaðu á senda, ",
"guideWeatherStart": "Segjðu Lily: \u201cHvernig er veðrið í dag?\u201d",
"guideWeatherInput": "Hvernig er veðrið í dag?",
"guideWeatherSend": "Lily mun tilkynna veðrið í rauntíma",
"guideWeatherEnd":
"Lily getur tilkynnt veðrið í rauntíma — prófaðu önnur skipun",
"guideMusicStart": "Segjðu Lily: \u201cSpilaðu rokktónlist\u201d",
"guideMusicInput": "Spilaðu rokktónlist",
"guideMusicSend": "Lily mun finna tónlist fyrir þig",
"guideMusicEnd": "Lily fann tónlist — prófaðu önnur skipun",
"guideNavStart": "Segjðu Lily: \u201cLeiðsögn að Shenzhen flugvelli\u201d",
"guideNavInput": "Leiðsögn að Shenzhen flugvelli",
"guideNavSend": "Lily mun skipuleggja leiðina",
"guideNavEnd": "Leiðsögn stillt — prófaðu önnur skipun",
"guideMeetingStart":
"Segjðu Lily: \u201cBúðu til fundarminningu fyrir kl. 15 á morgun\u201d",
"guideMeetingInput": "Búðu til fundarminningu fyrir kl. 15 á morgun",
"guideMeetingSend": "Lily mun búa til fundarminningu",
"guideMeetingEnd": "Minning búin til — prófaðu önnur skipun",
"guidePhoneStart": "Segjðu Lily: \u201cHringdu í mömmu\u201d",
"guidePhoneInput": "Hringdu í mömmu",
"guidePhoneSend": "Lily mun hringja",
"guidePhoneEnd": "Símtal átti sér stað — prófaðu önnur skipun",
"guideSmsStart":
"Segjðu Lily: \u201cSendðu pabba SMS: Ég kem heim í kvöldmat\u201d",
"guideSmsInput": "SMS til pabba: Ég kem heim í kvöldmat",
"guideSmsSend": "Lily mun senda skilaboðin",
"guideSmsEnd": "Skilaboð send — raddstýring er þægileg",
// Meeting模块 - 首页与导航
"startMeeting": "Hefja fund",
@ -503,9 +508,9 @@ const Map<String, String> isIS = {
'aiPenNotFound': 'AI PEN tæki fannst ekki',
'connectedToAiPen': 'Tengt við AI PEN tæki',
'checkingNewFiles': 'Athuga nýjar skrár til að flytja inn',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Ræsi Wi-Fi...',
'newFilesDetected': 'Nýjar skrár fundust, undirbý innflutning',
'noNewFiles': 'Engar nýjar skrár til að flytja inn',
'connectingWifi': 'Tengist Wi‑Fi...',
'wifiConnected': 'Wi‑Fi tenging tókst',
'downloadingFiles': 'Sæki skrár...',
@ -519,7 +524,7 @@ const Map<String, String> isIS = {
'liveRecording': 'Bein upptaka',
'audioVideoRecording': 'Hljóð-/myndupptaka',
'callRecording': 'Símtalaupptaka',
'importAudio': 'Import Audio',
'importAudio': 'Flytja inn hljóð',
'meetingRecordExitTitle': 'Hætta í upptöku', // 退出录音
'meetingRecordExitMessage':
'Veldu hvað á að gera áður en þú ferð', // 请选择离开后的操作
@ -543,30 +548,30 @@ const Map<String, String> isIS = {
'Til að sýna fljótandi upptökustiku (tími/pása/halda áfram) meðan á upptöku stendur þurfum við yfirlagaleyfi.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Ekki tókst að opna kerfisstillingar sjálfkrafa. Opnaðu Stillingar og virkjaðu yfirlagaleyfi handvirkt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Umritar...',
'summarizing': 'Tekur saman...',
'analyzing': 'Greinir...',
'summaryComplete': 'Samantekt lokið',
'generate': 'Búa til',
'overview': 'Yfirlit',
'transcription': 'Uppskrift',
'summary': 'Samantekt',
'mindMap': 'Hugarkort',
'editSpeaker': 'Breyta',
'nameSpeaker': 'Nefna ræðumann',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Taka saman aftur',
'dateAndTime': 'Dagsetning og tími',
'location': 'Staðsetning',
'attendees': 'Þátttakendur',
'inputLocation': 'Sláðu inn staðsetningu',
'inputAttendees': 'Sláðu inn þátttakendur',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Veldu samantektarsniðmát',
'useThisTemplate': 'Nota þetta sniðmát',
'lastUsed': 'Síðast notað',
'create': 'Búa til',
'templateDetails': 'Sniðmátsupplýsingar',
'tag': 'Merki',
@ -583,24 +588,24 @@ const Map<String, String> isIS = {
'inputDescHint': 'Vinsamlegast sláðu inn lýsingu',
'custom': 'Sérsniðið',
'pleaseEnter': 'Vinsamlegast sláðu inn',
'viewAll': 'View All',
'viewAll': 'Skoða allt',
'recordingLanguage': 'Upptökutungumál',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Kínverska (einfölduð mandórín)',
'meetingGenerateNow': 'Búa til núna',
'keyEventsAnalyzed': 'Greinð {count} lykilatvik.',
'aiAnalysisDesc':
'AI-greining finnur lykilatburði í upptökum, svo þú getir valið mikilvæga atburði fyrir AI-úrvinnslu.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Flytur inn...',
'batchImporting': 'Fjöldainnflutningur...',
'importingLocalRecordings': 'Flyt inn staðbundnar upptökur...',
'importFailed': 'Innflutningur skráar mistókst: {filePath}, villa: {error}',
'importSuccess': 'Tókst að flytja inn {count} staðbundnar upptökur',
'importError': 'Innflutningur mistókst: {error}',
'pleaseSelectAudioFile': 'Veldu hljóðskrá',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Deila fundarhátóni',
'shareComplete': 'Deilingu lokið!',
'shareFailed': 'Deiling mistókst: {error}',
'fileProcessingFailed': 'Skráarvinnsla mistókst: {filePath}, villa: {error}',
@ -618,15 +623,15 @@ const Map<String, String> isIS = {
'generateKeyIndicators': 'Búa til lykilmælikvarða',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Deila hlekk',
'copyTranscript': 'Afrita umritun',
'copySummary': 'Afrita samantekt',
'exportAudio': 'Flytja út hjóð',
'exportTranscript': 'Flytja út umritun',
'shareMeetingAudio': 'Deila fundarhátóni',
'exportSummary': 'Flytja út samantekt',
'exportAs': 'Flytja út sem',
'exportingPDF': 'Flytur út PDF...',
'export': 'Flytja út',
// Meeting模块 - 发言者
@ -656,87 +661,87 @@ const Map<String, String> isIS = {
'enabled': 'Virkt',
'disabled': 'Óvirkt',
'myVoitransDevice': 'Mitt VOITRANS tæki',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Hjálp og endurgjöf',
'aboutVoitrans': 'Um VOITRANS',
'meetingDays': 'Dagar',
'meetingHours': 'Klukkustundir',
'voitransAiMember': 'Voitrans AI meðlimur',
'unlockStarterMember': 'Opna byrjendaáskrift',
'bindDeviceToActivate': 'Tengdu Voitrans tæki til að virkja Starter-aðild',
'unlockNow': 'Unlock Now',
'unlockNow': 'Opna núna',
// 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',
'comparison': 'Samanburður',
'detailedInfo': 'Nákvæmar upplýsingar',
'monthlyTranscriptionTime': 'Mánaðarlegur umritunartími',
'unlimited': 'Ótakmarkaður',
'professionalTemplates': 'Fagleg sniðmát',
'limited': 'Takmarkaður',
'fullTemplates': 'Öll sniðmát',
'professionalTerms': 'Fagleg hugtök',
'customTemplates': 'Sérsniðin sniðmát',
'visualMindMap': 'Sjónrænt hugakort',
'speakerIdentification': 'Auðkenning ræðumanns',
'aiVoiceEnhancement': 'AI hjóðbæting',
'audioImport': 'Hjóðinnflutningur',
'multipleExportFormats': 'Margir útflutningssnið',
'professionalSummaryTemplates': 'Fagleg samantektarsniðmát',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Fagleg sniðmátshönnun til að bæta vinnusemi þina. Sérsniðin að îförfum iðnaðarins.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Þú getur sérsniðið samantektarfyrirspurnir að þinum îförfum og notað þær til að búa til nauðsynlegar samantektir.',
'askAiDesc':
'Dregur á skynsamlegan hátt dýpri upplýsingar úr upptökum og býr til gagnatöflur, lykilniðurstöður umræðu, verkefnalista, skýrslupósta og annað sniðað efni með einum smelli.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Umfram samantektir – skipulagaðu og sýnigerðu lykilatriði með hugakortum til að skilja heildartæki betur.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Uppgötvaðu, deildu og fáðu innblástur frá sniðmátasafni sem notendur búa til.',
'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.',
'Hjóðumritun mun styðja auðkenningu ræðumanna, endurskapa fundarefni eða símasamtalsefni á náttúrulegan hátt. Samantektin verður nákvæmri.',
'privateCloudSyncDesc':
'Upptökur og uppskriftir verða geymdar örugglega á sértækum skýjaþjónum, með fullri dulkóðun við upp- og niðurhal til að tryggja persónuvernd og öryggi.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'AI hjóðbæting styður margar stillingar fyrir hjóðminnkun, eyðir bakgrunnsáreiti á snjöllum hátt, eykur skirlægi röddanna og bætir gæði hjóðspilunar.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Flytja auðveldlega inn hjóðskrár frá staðbundnæm eða þrirðja aðila forritum, sæ sem raðdmænnisatriðum, Google Drive o.fl.',
'multipleExportFormatsDesc':
'Flyttu út hljóðupptökur, uppskriftartexta og samantektir í ýmsum sniðum (TXT, PDF, JPEG) eftir þörfum.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Uppfæra áskrift þina',
'yearlySubscription': 'Árleg áskrift',
'monthlySubscription': 'Mánaðarleg áskrift',
'proMonthly': 'Pro ¥60/mánuð',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'7 daga ókeypis prufutímabil, síðan ¥800/ár. Hætta má hvenær sem er áður en prufutímabilinu lýkur.',
'sevenDayTrial': '7 daga ókeypis prufutímabil',
'unlimitedMonthly': 'Unlimited ¥120/mánuð',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'7 daga ókeypis prufutímabil, síðan ¥1600/ár. Hætta má hvenær sem er áður en prufutímabilinu lýkur.',
'trialNote':
'*Ókeypis prufutímabil í 7 daga, síðan gjaldgengur árlega, hætta má hvenær sem er.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/mánuð',
'subscribe': 'Gerast áskrifandi',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/mánuð',
'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',
'*Eftir uppfærslu áskriftar verða þeim dögum sem eftir eru af upprunalegri áskrift sjálf kræft reiknuð og endurgreidd á greiðslureikning þinn',
'buyMoreTranscriptionTime': 'Kaupa meira umritunartíma',
'sixThousandMinutes': '6.000 mínúur',
'threeThousandMinutes': '3.000 mínúur',
'sixHundredMinutes': '600 mínúur',
'oneHundredTwentyMinutes': '120 mínúur',
'validityPeriod': '*Gildistímabil: ',
'validityNote': 'Virkúst strax eftir kaup, gilt í 2 ár eftir virkjun.',
'purchase': 'Kaupa',
// Meeting模块 - 录音语言
'recordLanguage': 'Upptökutungumál',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantóníska',
'sichuan': 'Sichuan-mál',
'shanghai': 'Sjangháí-mál',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Óîkkt tungumál',
'analysisFailed': 'Greining mistókst, reyndu aftur síðar',
'transcriptionFailed': 'Umritun mistókst, reyndu aftur síðar',
'summaryFailed': 'Samantekt mistókst, reyndu aftur síðar',
@ -814,7 +819,7 @@ const Map<String, String> isIS = {
"deviceTypeClassicBluetoothHeadset": "Klassísk Bluetooth heyrnartól",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth heyrnartól",
"deviceTypeSmartVoiceRecorder": "Snjall raddupptökutæki",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeSmartEye": 'Snjallgleraugun',
"unbind": "Losa bindingu",
"noDevicesBound": "Engin tæki hafa verið tengd enn",
"pleaseBindDeviceFirst": "Tengdu fyrst tæki til að stjórna",
@ -991,7 +996,7 @@ const Map<String, String> isIS = {
"thursday": "Fim",
"friday": "Fös",
"saturday": "Lau",
"sunday": "Sun",
"sunday": 'Sun',
// Agent模块 - 天气描述
"sunny": "Sólskin",
@ -1092,9 +1097,9 @@ const Map<String, String> isIS = {
"processingFailed": "Vinnsla mistókst",
"imageProcessingOrTranslationFailed":
"Myndvinnsla eða þýðing mistókst. Reyndu aftur.\nVilla: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": 'Myndstærð fer yfir 4 MB takmörkun',
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
'Myndstærð fer yfir 4 MB. Minnkaðu gæði eða stærð og reyndu aftur',
"emptyTranslationResult": "Myndþýðingar-API skilaði tómri niðurstöðu",
"imageTranslationFailedTryLater":
"Myndþýðing mistókst. Netvandamál eða takmörk á beiðnum. Reyndu síðar",
@ -1104,11 +1109,11 @@ const Map<String, String> isIS = {
"cameraPermissionRequired": "Myndaheimild þarf til að taka myndir",
"photoAlbumPermissionRequired": "Myndaalbúmsheimild þarf til að velja myndir",
"translationDetails": "Þýðingarupplýsingar",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": 'Upprunaleg mynd',
"sourceLanguage": 'Upprunatungumál',
"targetLanguage": 'Marktungumál',
"translationTime": "Þýðingartími",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": 'Deilieiginleiki í þróun',
// 翻译模块 - 录音文件
"translateAudioFiles": "Þýða hljóðskrár",
@ -1160,8 +1165,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?',
'clean': 'Hreinsa skyndiminni',
'cleanTips': 'Ertu viss um að þú viljir hreinsa persónulegt skyndiminni?',
'networkConnectionFailed':
'Netkerfistenging mistókst, vinsamlegast athugaðu netkerfisstillingar og reyndu aftur',
'serverTemporarilyUnavailable':
@ -1229,7 +1234,7 @@ const Map<String, String> isIS = {
'phonePermissionDesc': 'Notað fyrir símtalsaðgerð',
'smsPermissionDesc': 'Notað fyrir SMS sendingaraðgerð',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'Notað til að setja nákvæmar viðvaranir til að tryggja að áminningar birtist á réttum tíma',
'calendarWritePermissionDesc':
'Notað til að búa til dagbókarviðburði og áminningar',
'calendarFullAccessPermissionDesc':
@ -1268,7 +1273,7 @@ const Map<String, String> isIS = {
'bluetoothConnectPermissionDesc': 'Notað til að tengjast Bluetooth-tækjum',
'bluetoothConnectPermissionDetailDesc':
'Tenging við Bluetooth-tæki krefst Bluetooth-tengingarheimildar',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Notað til að senda tilkynningarskilaboð',
'notificationPermissionDetailDesc':
'Forritið þarf tilkynningaheimild til að senda þér mikilvægar viðvaranir og skilaboð',
'appNeedsPermissionForFullFunction':
@ -1583,14 +1588,14 @@ const Map<String, String> isIS = {
"南非": "Suður-Afríka",
"沙特阿拉伯": "Sádi-Arabía",
"土耳其": "Tyrkland",
"日本": "Japan",
"日本": 'Japan',
"韩国": "Suður-Kórea",
"新加坡": "Singapúr",
"马来西亚": "Malasía",
"泰国": "Taíland",
"越南": "Víetnam",
"印度": "Indland",
"巴基斯坦": "Pakistan",
"巴基斯坦": 'Pakistan',
"菲律宾": "Filippseyjar",
"印度尼西亚": "Indónesía",
"阿联酋": "Sameinuðu arabísku furstadæmin",
@ -1615,7 +1620,7 @@ const Map<String, String> isIS = {
"挪威": "Noregur",
"波兰": "Pólland",
"秘鲁": "Perú",
"智利": "Chile",
"智利": 'Síle',
"哥伦比亚": "Kólumbía",
"委内瑞拉": "Venesúela",
"葡萄牙": "Portúgal",
@ -1623,7 +1628,7 @@ const Map<String, String> isIS = {
"爱尔兰": "Írland",
"冰岛": "Ísland",
"阿尔巴尼亚": "Albanía",
"马耳他": "Malta",
"马耳他": 'Malta',
"塞浦路斯": "Kýpur",
"芬兰": "Finnland",
"保加利亚": "Búlgaría",
@ -1637,11 +1642,11 @@ const Map<String, String> isIS = {
"捷克": "Tékkland",
"斯洛伐克": "Slóvakía",
"危地马拉": "Gvatemala",
"萨尔瓦多": "El Salvador",
"萨尔瓦多": 'El Salvador',
"洪都拉斯": "Hondúras",
"尼加拉瓜": "Níkaragva",
"哥斯达黎加": "Kosta Ríka",
"巴拿马": "Panama",
"巴拿马": 'Panama',
"海地": "Haítí",
"玻利维亚": "Bólivía",
"厄瓜多尔": "Ekvador",
@ -1668,23 +1673,23 @@ const Map<String, String> isIS = {
"阿富汗": "Afganistan",
"斯里兰卡": "Srí Lanka",
"缅甸": "Mjanmar",
"尼泊尔": "Nepal",
"尼泊尔": 'Nepal',
"蒙古": "Mongólía",
"柬埔寨": "Kambódía",
"老挝": "Laos",
"老挝": 'Laos',
"文莱": "Brúnei",
"东帝汶": "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",
"刚果民主共和国": 'Lýðveldlýðrið Kongó',
"安哥拉": 'Angóla',
"苏丹": 'Súdam',
"马尔代夫": 'Maldíveyjur',
"不丹": 'Bútan',
"摩纳哥": 'Mónakó',
"圣马力诺": 'San Marínó',
"牙买加": 'Jamaíka',
"巴哈马": 'Bahamaeyjar',
"巴布亚新几内亚": 'Papúa Njá Gínea',
"萨摩亚": 'Samóa',
};

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

@ -30,7 +30,7 @@ const Map<String, String> itIT = {
"sloganInfo": "Esperto vocale AI · Sempre e ovunque",
// 底部导航
"home": "Home",
"home": 'Home',
"explore": "Esplora",
"settings": "Impostazioni",
@ -49,7 +49,7 @@ const Map<String, String> itIT = {
"russian": "Russo",
"vietnamese": "Vietnamita",
"italian": "Italiano",
"hindi": "Hindi",
"hindi": 'Hindi',
"indonesian": "Indonesiano",
"thai": "Tailandese",
"malay": "Malese",
@ -371,9 +371,9 @@ const Map<String, String> itIT = {
'Le funzionalità dipendono dalle autorizzazioni del dispositivo, dalla disponibilità del servizio e dalle condizioni di rete.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Trascrizione in tempo reale',
'sceneLexicon': 'Glossario per scenario',
'subtitleDisplay': 'Sottotitoli',
'transHeaderDesc1':
'Interpretazione simultanea e traduzione di testo in tempo reale, con voce a bassa latenza.',
'transHeaderDesc2': 'Adatto a viaggi, affari, discorsi e insegnamento.',
@ -392,7 +392,7 @@ const Map<String, String> itIT = {
// 商品模块 - 会议商品页
'meetingRecording': 'Registrazione riunione',
'transcriptionAndSummary': 'Transcription & Summary',
'transcriptionAndSummary': 'Trascrizione e riepilogo',
'keywordSearch': 'Ricerca per parole chiave',
'collaborationSharing': 'Collaborazione e condivisione',
'meetingHeaderDesc1':
@ -427,18 +427,18 @@ const Map<String, String> itIT = {
'I benefici effettivi dipendono dai dettagli del pacchetto e possono cambiare con le versioni.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Base 100',
'ai_002_name': 'AI Base 500',
'ai_003_name': 'AI Base 1000',
'meet_001_name': 'Riunione Base 100',
'meet_002_name': 'Riunione Base 500',
'meet_003_name': 'Riunione Base 1000',
'trans_001_name': 'Traduzione Base 100',
'trans_002_name': 'Traduzione Base 500',
'trans_003_name': 'Traduzione Base 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Include 100 utilizzi. Accesso alle funzionalità AI principali.',
'ai_002_desc': 'Include 500 utilizzi. Accesso alle funzionalità AI principali.',
'ai_003_desc': 'Include 1000 utilizzi. Accesso alle funzionalità AI principali.',
'meet_001_desc': 'Include 100 registrazioni/trascrizioni di riunioni.',
'meet_002_desc': 'Include 500 registrazioni/trascrizioni di riunioni.',
'meet_003_desc': 'Include 1000 registrazioni/trascrizioni di riunioni.',
@ -447,32 +447,32 @@ const Map<String, String> itIT = {
'trans_003_desc': 'Include 1000 traduzioni (voce/testo).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'App: VoiTrans · Fornita da: VoiTrans',
'iapCustomerServiceQQLabel': 'Servizio clienti IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'skip': "Salta",
'next': 'Next',
'sayLilyHint': "Say \"Lily Lily\" to the mic",
'imHere': "I’m here~",
'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.",
'aiReplyCompleted': "Lily has finished the reply!",
'aiThinking': "Lily is thinking…",
'guideAwakenSuccess': "Great! Lily is awake—ask it to help.",
'confirmInput': "Confirm Input",
'guideClickSendPrefix': "Tap send, ",
'guideWeatherStart': "Tell Lily: “What’s the weather today?”",
'guideWeatherInput': "What’s the weather today?",
'guideWeatherSend': "Lily will report the weather in real time",
'guideWeatherEnd': "Lily can report weather live—try other commands",
'guideMusicStart': "Tell Lily: “Play some rock music”",
'guideMusicInput': "Play some rock music",
'guideMusicSend': "Lily will find music for you",
'guideMusicEnd': "Lily found music—try other commands",
'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”",
'guideNavInput': "Navigate to Shenzhen Airport",
'guideNavSend': "Lily will plan the route",
"next": "Avanti",
"sayLilyHint": "Di’ alla mic: Lily Lily",
"imHere": "Eccomi~",
"guideWelcomeWakeAI": "Benvenuto in Voitrans! Prima, sveglia la tua AI Lily.",
"aiReplyCompleted": "Lily ha finito di rispondere!",
"aiThinking": "Lily sta pensando...",
"guideAwakenSuccess": "Ottimo! Lily e’ sveglia, chiedi il suo aiuto.",
"confirmInput": "Conferma inserimento",
"guideClickSendPrefix": "Tocca invia, ",
"guideWeatherStart": "Di’ a Lily: Che tempo fa oggi?",
"guideWeatherInput": "Che tempo fa oggi?",
"guideWeatherSend": "Lily riportera’ il meteo in tempo reale",
"guideWeatherEnd": "Lily puo’ riportare il meteo in diretta, prova altri comandi",
"guideMusicStart": "Di’ a Lily: Metti della musica rock",
"guideMusicInput": "Metti della musica rock",
"guideMusicSend": "Lily trovera’ della musica per te",
"guideMusicEnd": "Lily ha trovato la musica, prova altri comandi",
"guideNavStart": "Di’ a Lily: Naviga verso l’aeroporto di Shenzhen",
"guideNavInput": "Naviga verso l’aeroporto di Shenzhen",
"guideNavSend": "Lily pianifichera’ il percorso",
'guideNavEnd': "Navigazione impostata: prova altri comandi",
'guideMeetingStart':
"Di' a Lily: “Crea un promemoria riunione per domani alle 15”",
@ -735,10 +735,10 @@ const Map<String, String> itIT = {
'upgradeNote':
"Dopo l'upgrade dell'abbonamento, i giorni rimanenti dell'abbonamento originale verranno calcolati automaticamente e rimborsati sul tuo conto di pagamento",
'buyMoreTranscriptionTime': 'Acquista altro tempo di trascrizione',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'sixThousandMinutes': '6.000 minuti',
'threeThousandMinutes': '3.000 minuti',
'sixHundredMinutes': '600 minuti',
'oneHundredTwentyMinutes': '120 minuti',
'validityPeriod': '*Periodo di validità: ',
'validityNote':
"Attivato immediatamente dopo l'acquisto, valido per 2 anni dopo l'attivazione.",
@ -846,7 +846,7 @@ const Map<String, String> itIT = {
// Agent模块 - 主界面
"Lily": "Lily",
"clearChatHistory": "Cancella cronologia chat",
"online": "Online",
"online": 'Online',
"ttsSpeed": "Velocità della voce",
"ttsSpeedDefaultHint": "Predefinito +25%",
"inputMessage": "Inserisci messaggio...",
@ -1175,8 +1175,8 @@ const Map<String, String> itIT = {
// 个人资料模块
"editProfile": "Modifica informazioni personali",
"avatar": "Avatar",
"nickname": "Nickname",
"avatar": 'Avatar',
"nickname": 'Soprannome',
"save": "Salva",
"about": "Informazioni",
"enterNickname": "Inserisci un nickname",
@ -1187,8 +1187,8 @@ const Map<String, String> itIT = {
'deleteAccount': 'Elimina account',
'deleteAccountTips':
'Sei sicuro di voler eliminare permanentemente il tuo account? Questa azione non può essere annullata.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
'clean': 'Svuota cache',
'cleanTips': 'Sei sicuro di voler cancellare la cache personale?',
'networkConnectionFailed':
'Connessione di rete fallita, controlla le impostazioni di rete e riprova',
'serverTemporarilyUnavailable':
@ -1599,23 +1599,23 @@ const Map<String, String> itIT = {
"泰语": "Tailandese",
"越南语": "Vietnamita",
"印尼语": "Indonesiano",
"印地语": "Hindi",
"印地语": 'Hindi',
"土耳其语": "Turco",
"马来语": "Malese",
"孟加拉语": "Bengalese",
"泰米尔语": "Tamil",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"乌尔都语": "Urdu",
"泰米尔语": 'Tamil',
"泰卢固语": 'Telugu',
"马拉提语": 'Marathi',
"乌尔都语": 'Urdu',
"波斯语": "Persiano",
"斯瓦希里语": "Swahili",
"斯瓦希里语": 'Swahili',
// 国家列表
"邮箱": "E-mail",
"中国": "Cina",
"美国": "Stati Uniti",
"加拿大": "Canada",
"俄罗斯": "Russia",
"加拿大": 'Canada',
"俄罗斯": 'Russia',
"英国": "Regno Unito",
"德国": "Germania",
"意大利": "Italia",
@ -1626,19 +1626,19 @@ const Map<String, String> itIT = {
"土耳其": "Turchia",
"日本": "Giappone",
"韩国": "Corea del Sud",
"新加坡": "Singapore",
"新加坡": 'Singapore',
"马来西亚": "Malesia",
"泰国": "Tailandia",
"越南": "Vietnam",
"印度": "India",
"巴基斯坦": "Pakistan",
"越南": 'Vietnam',
"印度": 'India',
"巴基斯坦": 'Pakistan',
"菲律宾": "Filippine",
"印度尼西亚": "Indonesia",
"印度尼西亚": 'Indonesia',
"阿联酋": "Emirati Arabi Uniti",
"墨西哥": "Messico",
"巴西": "Brasile",
"阿根廷": "Argentina",
"澳大利亚": "Australia",
"阿根廷": 'Argentina',
"澳大利亚": 'Australia',
"新西兰": "Nuova Zelanda",
"中国香港": "Hong Kong (Cina)",
"中国澳门": "Macao (Cina)",
@ -1648,84 +1648,84 @@ const Map<String, String> itIT = {
"荷兰": "Paesi Bassi",
"比利时": "Belgio",
"匈牙利": "Ungheria",
"罗马尼亚": "Romania",
"罗马尼亚": 'Romania',
"瑞士": "Svizzera",
"奥地利": "Austria",
"奥地利": 'Austria',
"丹麦": "Danimarca",
"瑞典": "Svezia",
"挪威": "Norvegia",
"波兰": "Polonia",
"秘鲁": "Perù",
"智利": "Cile",
"哥伦比亚": "Colombia",
"委内瑞拉": "Venezuela",
"哥伦比亚": 'Colombia',
"委内瑞拉": 'Venezuela',
"葡萄牙": "Portogallo",
"卢森堡": "Lussemburgo",
"爱尔兰": "Irlanda",
"冰岛": "Islanda",
"阿尔巴尼亚": "Albania",
"马耳他": "Malta",
"阿尔巴尼亚": 'Albania',
"马耳他": 'Malta',
"塞浦路斯": "Cipro",
"芬兰": "Finlandia",
"保加利亚": "Bulgaria",
"保加利亚": 'Bulgaria',
"立陶宛": "Lituania",
"拉脱维亚": "Lettonia",
"爱沙尼亚": "Estonia",
"爱沙尼亚": 'Estonia',
"乌克兰": "Ucraina",
"塞尔维亚": "Serbia",
"塞尔维亚": 'Serbia',
"克罗地亚": "Croazia",
"斯洛文尼亚": "Slovenia",
"斯洛文尼亚": 'Slovenia',
"捷克": "Repubblica Ceca",
"斯洛伐克": "Slovacchia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": 'Nicaragua',
"哥斯达黎加": 'Costa Rica',
"巴拿马": 'Panama',
"海地": 'Haiti',
"玻利维亚": 'Bolivia',
"厄瓜多尔": 'Ecuador',
"巴拉圭": 'Paraguay',
"乌拉圭": 'Uruguay',
"摩洛哥": "Marocco",
"阿尔及利亚": "Algeria",
"突尼斯": "Tunisia",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"阿尔及利亚": 'Algeria',
"突尼斯": 'Tunisia',
"尼日利亚": 'Nigeria',
"加纳": 'Ghana',
"埃塞俄比亚": "Etiopia",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"肯尼亚": 'Kenya',
"坦桑尼亚": 'Tanzania',
"乌干达": 'Uganda',
"孟加拉国": 'Bangladesh',
"以色列": "Israele",
"黎巴嫩": "Libano",
"约旦": "Giordania",
"伊拉克": "Iraq",
"科威特": "Kuwait",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"蒙古": "Mongolia",
"伊拉克": 'Iraq',
"科威特": 'Kuwait',
"巴林": 'Bahrain',
"卡塔尔": 'Qatar',
"阿曼": 'Oman',
"阿富汗": 'Afghanistan',
"斯里兰卡": 'Sri Lanka',
"缅甸": 'Myanmar',
"尼泊尔": 'Nepal',
"蒙古": 'Mongolia',
"柬埔寨": "Cambogia",
"老挝": "Laos",
"文莱": "Brunei",
"老挝": 'Laos',
"文莱": 'Brunei',
"东帝汶": "Timor Est",
"斐济": "Figi",
"所罗门群岛": "Isole Salomone",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"刚果民主共和国": 'Repubblica Democratica del Congo',
"安哥拉": 'Angola',
"苏丹": 'Sudan',
"马尔代夫": 'Maldive',
"不丹": 'Bhutan',
"摩纳哥": 'Monaco',
"圣马力诺": 'San Marino',
"牙买加": 'Giamaica',
"巴哈马": 'Bahamas',
"巴布亚新几内亚": 'Papua Nuova Guinea',
"萨摩亚": 'Samoa',
};

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

@ -6,7 +6,7 @@ const Map<String, String> jaJP = {
'cancel': 'キャンセル',
'retry': '再試行',
'error': 'エラー',
'success': '成功',
'success': '成功', // 成功
'connected': '接続済み',
'connecting': '接続中...',
'connectionFailure': '接続失敗',
@ -223,8 +223,8 @@ const Map<String, String> jaJP = {
"totalCharacters": "総文字数",
"apiCallStats": "API呼び出し統計",
"translationApi": "翻訳API",
"asr": "ASR",
"tts": "TTS",
"asr": "音声認識(ASR)",
"tts": "音声合成(TTS)",
"dataVolumeStats": "データ量統計",
"sourceTextCharacters": "原文文字数",
"ttsTextCharacters": "TTS文字数",
@ -385,12 +385,12 @@ const Map<String, String> jaJP = {
'vipDisclaimer': '実際の特典はパッケージの詳細により異なり、バージョンアップにより変更される場合があります。',
// 商品模块 - 商品名称与描述
'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',
'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',
@ -405,8 +405,8 @@ const Map<String, String> jaJP = {
'trans_003_desc': '翻訳(音声/テキスト)を1000回分含みます。',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'アプリ名:VoiTrans · 提供元:VoiTrans',
'iapCustomerServiceQQLabel': 'IAPカスタマーサービス QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -546,7 +546,7 @@ const Map<String, String> jaJP = {
'inputDescHint': '説明を入力してください',
'custom': 'カスタム',
'pleaseEnter': '入力してください',
'viewAll': 'View All',
'viewAll': 'すべて表示',
'recordingLanguage': '録音言語',
'chineseSimplified': '中国語(簡体字)',
'meetingGenerateNow': '今すぐ生成',
@ -575,7 +575,7 @@ const Map<String, String> jaJP = {
'askAI': 'AIに質問 ...',
'askAIPrompt': '今日は何をお手伝いできますか?',
'continueAsk': '続けて質問',
'todoList': 'To-Do List',
'todoList': 'To-Doリスト',
'extractConclusion': '要約を抽出',
'generateKeyIndicators': '重要指標を生成',
@ -612,7 +612,7 @@ const Map<String, String> jaJP = {
'templateCommunity': 'テンプレートコミュニティ',
'comingSoon': '近日公開',
'integration': '連携',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'voitransPrivateCloud': 'VOITRANS プライベートクラウド',
'enabled': '有効',
'disabled': '無効',
'myVoitransDevice': '私のVOITRANSデバイス',
@ -620,8 +620,8 @@ const Map<String, String> jaJP = {
'aboutVoitrans': 'VOITRANSについて',
'meetingDays': '日',
'meetingHours': '時間',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'voitransAiMember': 'Voitrans AI会員',
'unlockStarterMember': 'スターター会員を解除',
'bindDeviceToActivate': 'Voitransデバイスを紐付けてStarter会員を有効化',
'unlockNow': '今すぐ解除',
@ -661,24 +661,23 @@ const Map<String, String> jaJP = {
'upgradeMembership': '会員をアップグレード',
'yearlySubscription': '年次サブスクリプション',
'monthlySubscription': '月次サブスクリプション',
'proMonthly': 'Pro ¥60/month',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7日無料試用版',
'unlimitedMonthly': '無制限 ¥120/month',
'unlimitedMonthlyDesc': '7日無料試用版、続き ¥1600/year. 試用版終了前にいつでもキャンセルできます。',
'trialNote': '*7日無料試用版、続き ¥1600/year. 試用版終了前にいつでもキャンセルできます。',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'proMonthly': 'Pro ¥60/月',
'proMonthlyDesc': '7日間無料トライアル、その後¥800/年。トライアル終了前にいつでもキャンセル可能。',
'sevenDayTrial': '7日間無料トライアル',
'unlimitedMonthly': '無制限 ¥120/月',
'unlimitedMonthlyDesc': '7日間無料トライアル、その後¥1600/年。トライアル終了前にいつでもキャンセル可能。',
'trialNote': '*7日間無料トライアル、その後¥1600/年。トライアル終了前にいつでもキャンセル可能。',
'proPrice': 'プロ ¥120',
'proMonthlyPrice': '¥120/月',
'subscribe': 'サブスクリプションを購入',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedPrice': '無制限 ¥198',
'unlimitedMonthlyPrice': '¥198/月',
'upgradeNote': '*会員をアップグレードすると、元のサブスクリプションの残り日数が自動的に計算され、支払いアカウントに返金されます。',
'buyMoreTranscriptionTime': '文字起こし時間を追加購入',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'sixThousandMinutes': '6,000分',
'threeThousandMinutes': '3,000分',
'sixHundredMinutes': '600分',
'oneHundredTwentyMinutes': '120分',
'validityPeriod': '*有効期間: ',
'validityNote': '購入後すぐに有効になり、アクティベーション後2年間有効です。',
'purchase': '購入',
@ -880,7 +879,7 @@ const Map<String, String> jaJP = {
"driving": "運転",
"walking": "徒歩",
"bicycling": "自転車",
"tsransit": "Transit",
"tsransit": "乗り換え",
// Agent模块 - 导航选择
'selectNavigationApp': 'ナビアプリを選択',
@ -1003,9 +1002,9 @@ const Map<String, String> jaJP = {
"maxSize": "最大サイズ",
"close": "閉じる",
"setImageQuality": "画像品質を設定",
"currentQuality": "Current quality: @value%",
"currentQuality": "現在の品質: @value%",
"setMaxSize": "最大サイズを設定",
"currentMaxSize": "Current: @pxpx",
"currentMaxSize": "現在: @pxpx",
"waitingForAction": "操作待ち",
"pleaseSelectImageToStart": "開始する画像を選択してください",
"chooseImage": "画像を選択",
@ -1018,7 +1017,7 @@ const Map<String, String> jaJP = {
"savingRecord": "記録を保存中",
"savingTranslationResult": "翻訳結果を保存中...",
"translationCompleted": "翻訳完了",
"allStepsCompleted": "All steps completed",
"allStepsCompleted": "すべてのステップが完了しました",
"processingFailed": "処理に失敗しました",
"imageProcessingOrTranslationFailed":
"画像処理または翻訳に失敗しました。再試行してください。\nエラー: {error}",
@ -1085,8 +1084,8 @@ const Map<String, String> jaJP = {
"logoutTips": "現在のアカウントからログアウトしてもよろしいですか?",
'deleteAccount': 'アカウント削除',
'deleteAccountTips': 'アカウントを永続的に削除してもよろしいですか?この操作は元に戻せません。',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
'clean': 'キャッシュをクリア',
'cleanTips': '個人キャッシュをクリアしてもよろしいですか?',
'networkConnectionFailed': 'ネットワーク接続に失敗しました。ネットワーク設定を確認して再試行してください',
'serverTemporarilyUnavailable': 'サーバーが一時的に利用できません。後でもう一度お試しください',
'loginExpiredPleaseRelogin': 'ログインが期限切れです。再度ログインしてください',
@ -1202,7 +1201,7 @@ const Map<String, String> jaJP = {
'マイク権限が永続的に拒否されています。この機能を継続して利用するには、アプリ設定でマイク権限を手動で有効にしてください。',
'storagePermissionPermanentDenial':
'ストレージ権限が永続的に拒否されています。この機能を継続して利用するには、アプリ設定でストレージ権限を手動で有効にしてください。',
'permissionUtilNeed': 'Need ',
'permissionUtilNeed': '必要:',
'permissionUtilPermission': ' 権限',
'permissionUtilRestricted': ' 権限が制限されています',
'permissionUtilRestrictedMessage':

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

@ -384,12 +384,12 @@ const Map<String, String> koKR = {
'vipDisclaimer': '실제 혜택은 패키지 세부사항에 따라 달라지며 버전에 따라 변경될 수 있습니다.',
// 商品模块 - 商品名称与描述
'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',
'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',
@ -404,8 +404,8 @@ const Map<String, String> koKR = {
'trans_003_desc': '번역 1000회 포함(음성/텍스트).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': '앱: VoiTrans · 제공: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP 고객 서비스 QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导

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

@ -386,21 +386,21 @@ const Map<String, String> ltLT = {
// 商品模块 - 会议商品页
'meetingRecording': 'Susitikimų įrašymas',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transkripcija ir santrauka',
'keywordSearch': 'Raktažodžių paieška',
'collaborationSharing': 'Bendradarbiavimas ir dalijimasis',
'meetingHeaderDesc1':
'Garso įrašymas, transkripcija, paieška pagal raktinius žodžius ir automatinė santrauka didesniam susitikimų efektyvumui.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Tinka verslo susitikimams, pamokų užrašams ir pokalbių protokolams.',
'meetingAutoRecording': 'Automatinis įrašymas ir segmentavimas',
'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',
'meetingSpeakerTagging': 'Kalbėtojų žymėjimas',
'meetingLongAudioTranscription': 'Ilgo garso transkripcija',
'meetingKeyPointSummary': 'Pagrindinių taškų ištraukimas',
'meetingTopicNameSearch': 'Paieška pagal temą / vardą',
'meetingTimelineJump': 'Šuolis laiko juostoje',
'meetingExportSummary': 'Eksportuoti protokolą',
'meetingMultiPlatformShare': 'Dalintis keliose platformose',
'meetingDisclaimer':
'Naudokite tyloje; kokybė priklauso nuo mikrofono ir tinklo.',
@ -418,7 +418,7 @@ const Map<String, String> ltLT = {
'earlyAccessNewFeatures': 'Ankstyva prieiga prie naujų funkcijų',
'crossDeviceSync': 'Sinchronizacija tarp įrenginių',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Tikrosios naudos priklauso nuo paketo detalių ir gali keistis su versijomis.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI bazinis 100',
@ -441,8 +441,8 @@ const Map<String, String> ltLT = {
'trans_003_desc': 'Apima 1000 vertimų (balsas/tekstas).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Programa: VoiTrans · Teikia: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP klientų aptarnavimo QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -470,19 +470,18 @@ const Map<String, String> ltLT = {
'guideNavInput': 'Nukreipk į Šendženo oro uostą',
'guideNavSend': 'Lily suplanuos maršrutą',
'guideNavEnd': 'Navigacija nustatyta — išbandykite kitas komandas',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
"guideMeetingStart": "Pasakykite Lily: Sukurk susitikimo priminima rytoj 15:00",
"guideMeetingInput": "Sukurk susitikimo priminima rytoj 15:00",
"guideMeetingSend": "Lily sukurs susitikimo priminima",
"guideMeetingEnd": "Priminimas sukurtas - išbandykite kitas komandas",
"guidePhoneStart": "Pasakykite Lily: Paskambink mamai",
"guidePhoneInput": "Paskambink mamai",
"guidePhoneSend": "Lily paskambins",
"guidePhoneEnd": "Skambutis atliktas - išbandykite kitas komandas",
"guideSmsStart": "Pasakykite Lily: Parašyk tėčiui žinutę: Grįšiu pietauti",
"guideSmsInput": "Parašyk tėčiui: Grįšiu pietauti",
"guideSmsSend": "Lily išsiųs žinutę",
"guideSmsEnd": "Žinutė išsiųsta - balso valdymas patogus",
// Meeting模块 - 首页与导航
"startMeeting": "Pradėti susitikimą",

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

@ -715,27 +715,27 @@ const Map<String, String> lvLV = {
'upgradeMembership': 'Jaunināt dalību',
'yearlySubscription': 'Gada abonements',
'monthlySubscription': 'Mēneša abonements',
'proMonthly': 'Pro ¥60/month',
'proMonthly': 'Pro ¥60/mēnesī',
'proMonthlyDesc':
'7 dienu bezmaksas izmēģinājums, pēc tam ¥800/gadā. Atceliet jebkurā laikā pirms izmēģinājuma beigām.',
'sevenDayTrial': '7 dienu bezmaksas izmēģinājums',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthly': 'Unlimited ¥120/mēnesī',
'unlimitedMonthlyDesc':
'7 dienu bezmaksas izmēģinājums, pēc tam ¥1600/gadā. Atceliet jebkurā laikā pirms izmēģinājuma beigām.',
'trialNote':
'*Bezmaksas izmēģinājums 7 dienas, pēc tam rēķins reizi gadā; var atcelt jebkurā laikā.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'proMonthlyPrice': '¥120/mēnesī',
'subscribe': 'Abonēt',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/mēnesī',
'upgradeNote':
'*Pēc abonementa jaunināšanas atlikušās dienas no iepriekšējā abonementa tiks automātiski aprēķinātas un atmaksātas jūsu maksājumu kontā',
'buyMoreTranscriptionTime': 'Pirkt vairāk transkripcijas laika',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'sixThousandMinutes': '6 000 minūtes',
'threeThousandMinutes': '3 000 minūtes',
'sixHundredMinutes': '600 minūtes',
'oneHundredTwentyMinutes': '120 minūtes',
'validityPeriod': '*Derīguma termiņš: ',
'validityNote':
'Aktivizējas uzreiz pēc iegādes, derīgs 2 gadus pēc aktivizēšanas.',
@ -930,11 +930,11 @@ const Map<String, String> lvLV = {
'generatedByAi': 'Ģenerējis AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'Rīka izsaukums',
'noResult': 'Nav rezultātu',
'noToolCallContentToCopy': 'Nav rīka izsaukuma satura, ko kopēt',
'toolCallDetails': 'Rīka izsaukuma detaļas:',
'toolCallContentCopied': 'Rīka izsaukuma saturs nokopēts starpliktuvē',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Šeit ir dažas ieteicamās dziesmas:',
@ -1110,9 +1110,9 @@ const Map<String, String> lvLV = {
"processingFailed": "Apstrāde neizdevās",
"imageProcessingOrTranslationFailed":
"Attēla apstrāde vai tulkošana neizdevās. Lūdzu, mēģiniet vēlreiz.\nKļūda: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Attēla izmērs pārsniedz 4 MB ierobežojumu",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Attēla izmērs pārsniedz 4 MB. Samaziniet kvalitāti vai izmērus un mēģiniet vēlreiz",
"emptyTranslationResult": "Attēlu tulkošanas API atgrieza tukšu rezultātu",
"imageTranslationFailedTryLater":
"Attēla tulkošana neizdevās. Tīkla problēma vai ātruma ierobežojums. Lūdzu, mēģiniet vēlāk",
@ -1181,8 +1181,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?',
'clean': 'Notīrīt kešatmiņu',
'cleanTips': 'Vai esat pārliecināts, ka vēlaties notīrīt personīgo kešatmiņu?',
'networkConnectionFailed':
'Tīkla savienojuma kļūda, lūdzu, pārbaudiet tīkla iestatījumus un mēģiniet vēlreiz',
'serverTemporarilyUnavailable':
@ -1519,8 +1519,8 @@ const Map<String, String> lvLV = {
'Nevar iegūt ierīces informāciju, lūdzu, pārbaudiet ierīces savienojumu',
'otaCannotGetProductInfoWithName':
'Nevar iegūt produkta informāciju, ierīces nosaukums: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaCannotGetBatteryInfo': 'Nevar iegūt derīgu baterijas informāciju',
'otaLowBattery': 'Zems baterijas līmenis',
'otaSingleBatteryLow':
'Ierīces baterija ir pārāk zema programmaparatūras jaunināšanai\nPrasība: baterijai jābūt virs 20%\nPašlaik: @ear @battery%\nLūdzu, uzlādējiet un mēģiniet vēlreiz',
'otaDoubleBatteryLow':
@ -1538,8 +1538,8 @@ const Map<String, String> lvLV = {
'otaDownloadFailed': 'Lejupielāde neizdevās',
'otaPreparingConnection': 'Sagatavo ierīces savienojumu...',
'otaConnectingDevice': 'Savienojas ar ierīci...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeStarted': 'OTA jaunināšana sākta...',
'otaUpgradeProgressWithPercent': 'Jaunināšanas gaita: @percent%',
'otaUpgradeSuccessComplete': 'Jaunināšana pabeigta veiksmīgi',
'otaUpgradeFailedWithCode': 'Jaunināšana neizdevās, kļūdas kods: @code',
'otaUpgradeFailedTitle': 'Jaunināšana neizdevās',
@ -1703,15 +1703,15 @@ const Map<String, String> lvLV = {
"东帝汶": "Austrumtimora",
"斐济": "Fidži",
"所罗门群岛": "Zālamana Salas",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Kongo Demokrātiskā Republika",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"苏丹": "Sudāna",
"马尔代夫": "Maldīvija",
"不丹": "Butāna",
"摩纳哥": "Monako",
"圣马力诺": "Sanmarīno",
"牙买加": "Jamaika",
"巴哈马": "Bahamu salas",
"巴布亚新几内亚": "Papua Jaungvineja",
"萨摩亚": "Samoa",
};

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

@ -218,54 +218,54 @@ const Map<String, String> msMY = {
"scene": "Senario",
// 用量统计模块
"aiChat": "AI Chat",
"aiChat": "Sembang AI",
"translationStats": "Statistik Terjemahan",
"meetingStats": "Meeting Statistics",
"today": "Today",
"thisWeek": "This Week",
"thisMonth": "This Month",
"history": "History",
"currentSessionStats": "Current Session Stats",
"meetingStats": "Statistik Mesyuarat",
"today": "Hari Ini",
"thisWeek": "Minggu Ini",
"thisMonth": "Bulan Ini",
"history": "Sejarah",
"currentSessionStats": "Statistik Sesi Semasa",
"translationCount": "Bilangan Terjemahan",
"sessionDuration": "Session Duration",
"characters": "Characters",
"sessionDuration": "Tempoh Sesi",
"characters": "Aksara",
"recordingDuration": "Tempoh Rakaman",
"totalApiCalls": "Total API Calls",
"sessionCount": "Session Count",
"totalCharacters": "Total Characters",
"apiCallStats": "API Call Stats",
"totalApiCalls": "Jumlah Panggilan API",
"sessionCount": "Bilangan Sesi",
"totalCharacters": "Jumlah Aksara",
"apiCallStats": "Statistik Panggilan API",
"translationApi": "API Terjemahan",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"dataVolumeStats": "Statistik Jumlah Data",
"sourceTextCharacters": "Aksara Teks Sumber",
"ttsTextCharacters": "Aksara Teks TTS",
"effectiveAudioDuration": "Tempoh Audio Berkesan",
"totalSessionDuration": "Jumlah Tempoh Sesi",
"costStats": "Statistik Kos",
"estimatedCost": "Anggaran Kos",
"dailyCostThreshold": "Had Kos Harian",
"monthlyCostThreshold": "Had Kos Bulanan",
"usageBehaviorStats": "Statistik Tingkah Laku Penggunaan",
"mostUsedLanguagePair": "Pasangan bahasa paling kerap digunakan",
"mostUsedMode": "Mod paling kerap digunakan",
"asrApiCalls": "Panggilan ASR",
"totalAudioDuration": "Jumlah Tempoh Audio",
"audioFileSize": "Saiz Fail Audio",
"transcriptBytes": "Bait Transkrip",
"loadFailed": "Gagal Memuat",
"statsLoadFailedTryLater": "Statistik gagal dimuat. Sila cuba lagi kemudian.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Pembersihan Selesai",
"cleanedOldData": "Data lebih 90 hari telah dibersihkan",
"exportFeature": "Ciri Eksport",
"exportInDevelopment": "Eksport data sedang dalam pembangunan",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'Pakej Tersedia',
'remainingQuota': 'Kuota Baki',
'totalQuota': 'Jumlah Kuota',
'remaining': 'Baki',
'featureDescription': 'Penerangan Ciri',
'paymentSuccess': 'Pembayaran berjaya',
'paymentFailed': 'Pembayaran gagal',
'gotIt': 'Faham',
@ -332,101 +332,101 @@ const Map<String, String> msMY = {
'Keahlian AI telah tamat tempoh, sila pergi ke halaman pembaharuan keahlian untuk memperbaharui.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Muzik & Cadangan',
'navigationAndRoutes': 'Navigasi & Laluan',
'nearbySearch': 'Carian Berdekatan',
'newsInformation': 'Berita',
'communicationAssistant': 'Pembantu Komunikasi',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Kuota perbualan lebih panjang, lebih banyak panggilan alat, panjang konteks diperluas.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Sesuai untuk soal jawab ejen, ringkasan, analisis, dan pelaksanaan tugas.',
'musicSearchPlaybackControl': 'Carian pustaka muzik dan kawalan main balik',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Senarai main pintar dan cadangan lagu serupa',
'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',
'Perancangan laluan dan pengelakan kesesakan',
'voiceBroadcastAndWaypoints': 'Siaran suara dan tetapan titik laluan',
'realTimeWeatherForecast': 'Cuaca masa nyata dan ramalan',
'clothingAdviceAndTravelReminders': 'Nasihat pakaian dan peringatan perjalanan',
'poiSearchFoodGasParking': 'Carian POI: restoran / stesen minyak / tempat letak kereta',
'ratingsHoursAndDirectRoutes': 'Penilaian, waktu perniagaan, dan penghalaan terus',
'hotNewsAndTopicOverview': 'Berita hangat dan gambaran topik',
'longArticleSummariesAndKeyPoints': 'Ringkasan artikel panjang dan perkara utama',
'helpCallAndSMS': 'Bantuan panggilan dan SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Mesej templat dan peringatan jadual',
'aiDisclaimer':
'Ciri bergantung pada kebenaran peranti, ketersediaan perkhidmatan, dan keadaan rangkaian.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Transkripsi Masa Nyata',
'sceneLexicon': 'Glosari Senario',
'subtitleDisplay': 'Sari Kata',
'transHeaderDesc1':
'Pentafsiran serentak masa nyata dan terjemahan teks dengan suara kependaman rendah.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Sesuai untuk perjalanan, perniagaan, ucapan, dan pengajaran.',
'translateZhEn': 'Terjemahan Cina-Inggeris',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'lowLatencyVoiceBroadcast': 'Siaran suara kependaman rendah',
'multiLangTextTranslation': 'Terjemahan teks berbilang bahasa',
'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',
'Pengoptimuman istilah dan pemeliharaan konteks',
'lexiconTourBusinessLife': 'Leksikon pelancongan/perniagaan/kehidupan',
'personalVocabularyMemory': 'Memori perbendaharaan kata peribadi',
'conversationSubtitleLargeText': 'Sari kata perbualan / Mod teks besar',
'colorHighContrast': 'Kontras warna tinggi',
'transDisclaimer':
'Prestasi terjemahan bergantung pada mikrofon, kependaman rangkaian, dan bunyi persekitaran.',
// 商品模块 - 会议商品页
'meetingRecording': 'Rakaman Mesyuarat',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transkripsi & Ringkasan',
'keywordSearch': 'Carian Kata Kunci',
'collaborationSharing': 'Kerjasama & Perkongsian',
'meetingHeaderDesc1':
'Rakaman audio, transkripsi, carian kata kunci, dan ringkasan automatik untuk meningkatkan kecekapan mesyuarat.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Sesuai untuk mesyuarat perniagaan, nota kelas, dan minit temu duga.',
'meetingAutoRecording': 'Rakaman automatik dan segmentasi',
'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',
'meetingSpeakerTagging': 'Pelabelan penutur',
'meetingLongAudioTranscription': 'Transkripsi audio panjang',
'meetingKeyPointSummary': 'Pengekstrakan perkara utama',
'meetingTopicNameSearch': 'Carian mengikut topik/nama',
'meetingTimelineJump': 'Lompat garis masa',
'meetingExportSummary': 'Eksport minit',
'meetingMultiPlatformShare': 'Kongsi merentas platform',
'meetingDisclaimer':
'Gunakan di persekitaran yang senyap; prestasi bergantung pada mikrofon dan rangkaian.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Gambaran keseluruhan manfaat',
'higherQuota': 'Kuota penggunaan lebih tinggi',
'lowerUnitPrice': 'Harga unit lebih rendah',
'priorityService': 'Perkhidmatan keutamaan',
'exclusiveSupportChannel': 'Saluran sokongan khusus',
'fastResponse': 'Respons isu pantas',
'eventsAndDiscounts': 'Acara dan diskaun',
'memberExclusiveEvents': 'Acara eksklusif ahli',
'longTermDiscountPlan': 'Pelan diskaun jangka panjang',
'generalPrivileges': 'Keistimewaan am',
'earlyAccessNewFeatures': 'Akses awal ciri baharu',
'crossDeviceSync': 'Penyegerakan merentas peranti',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Manfaat sebenar bergantung pada butiran pakej dan mungkin berubah mengikut versi.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Asas 100',
'ai_002_name': 'AI Asas 500',
'ai_003_name': 'AI Asas 1000',
'meet_001_name': 'Mesyuarat Asas 100',
'meet_002_name': 'Mesyuarat Asas 500',
'meet_003_name': 'Mesyuarat Asas 1000',
'trans_001_name': 'Terjemahan Asas 100',
'trans_002_name': 'Terjemahan Asas 500',
'trans_003_name': 'Terjemahan Asas 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Termasuk 100 penggunaan. Akses ciri AI teras.',
'ai_002_desc': 'Termasuk 500 penggunaan. Akses ciri AI teras.',
'ai_003_desc': 'Termasuk 1000 penggunaan. Akses ciri AI teras.',
'meet_001_desc': 'Termasuk 100 rakaman/transkripsi mesyuarat.',
'meet_002_desc': 'Termasuk 500 rakaman/transkripsi mesyuarat.',
'meet_003_desc': 'Termasuk 1000 rakaman/transkripsi mesyuarat.',
@ -435,46 +435,46 @@ const Map<String, String> msMY = {
'trans_003_desc': 'Termasuk 1000 terjemahan (suara/teks).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Aplikasi: VoiTrans · Disediakan oleh: VoiTrans',
'iapCustomerServiceQQLabel': 'Perkhidmatan pelanggan IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'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, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Seterusnya',
'sayLilyHint': 'Sebut "Lily Lily" ke mikrofon',
'imHere': 'Saya di sini~',
'guideWelcomeWakeAI': 'Selamat datang ke Voitrans! Pertama, bangunkan AI anda “Lily”.',
'aiReplyCompleted': 'Lily telah selesai membalas!',
'aiThinking': 'Lily sedang berfikir…',
'guideAwakenSuccess': 'Bagus! Lily sudah bangun—minta ia membantu.',
'confirmInput': 'Sahkan Input',
'guideClickSendPrefix': 'Ketik hantar, ',
'guideWeatherStart': 'Beritahu Lily: “Bagaimana cuaca hari ini?”',
'guideWeatherInput': 'Bagaimana cuaca hari ini?',
'guideWeatherSend': 'Lily akan melaporkan cuaca secara masa nyata',
'guideWeatherEnd': 'Lily boleh melaporkan cuaca langsung—cuba arahan lain',
'guideMusicStart': 'Beritahu Lily: “Mainkan muzik rock”',
'guideMusicInput': 'Mainkan muzik rock',
'guideMusicSend': 'Lily akan mencari muzik untuk anda',
'guideMusicEnd': 'Lily telah menemui muzik—cuba arahan lain',
'guideNavStart': 'Beritahu Lily: “Navigasi ke Lapangan Terbang Shenzhen”',
'guideNavInput': 'Navigasi ke Lapangan Terbang Shenzhen',
'guideNavSend': 'Lily akan merancang laluan',
'guideNavEnd': 'Navigasi ditetapkan—cuba arahan lain',
'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',
'Beritahu Lily: “Buat peringatan mesyuarat untuk pukul 3 petang esok”',
'guideMeetingInput': 'Buat peringatan mesyuarat untuk pukul 3 petang esok',
'guideMeetingSend': 'Lily akan membuat peringatan mesyuarat',
'guideMeetingEnd': 'Peringatan dicipta—cuba arahan lain',
'guidePhoneStart': 'Beritahu Lily: “Hubungi Ibu”',
'guidePhoneInput': 'Hubungi Ibu',
'guidePhoneSend': 'Lily akan membuat panggilan',
'guidePhoneEnd': 'Panggilan dibuat—cuba arahan lain',
'guideSmsStart': 'Beritahu Lily: “Hantar mesej kepada Ayah: Saya akan pulang untuk makan malam”',
'guideSmsInput': 'Mesej Ayah: Saya akan pulang untuk makan malam',
'guideSmsSend': 'Lily akan menghantar mesej',
'guideSmsEnd': 'Mesej dihantar—kawalan suara sangat mudah',
// Meeting模块 - 首页与导航
"startMeeting": "Mula Mesyuarat",
@ -503,9 +503,9 @@ const Map<String, String> msMY = {
'aiPenNotFound': 'Peranti AI PEN tidak ditemui',
'connectedToAiPen': 'Disambungkan ke peranti AI PEN',
'checkingNewFiles': 'Menyemak fail baharu untuk diimport',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Memulakan Wi-Fi...',
'newFilesDetected': 'Fail baharu dikesan, bersedia untuk import',
'noNewFiles': 'Tiada fail baharu untuk diimport',
'connectingWifi': 'Menyambung ke Wi‑Fi...',
'wifiConnected': 'Wi‑Fi berjaya disambungkan',
'downloadingFiles': 'Memuat turun fail...',
@ -543,33 +543,33 @@ const Map<String, String> msMY = {
'Untuk memaparkan bar rakaman terapung (pemasa/jeda/sambung) semasa merakam, kami memerlukan kebenaran overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Tidak dapat membuka tetapan sistem secara automatik. Sila buka Tetapan dan dayakan kebenaran overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Sedang mentranskripsi...',
'summarizing': 'Sedang meringkaskan...',
'analyzing': 'Sedang menganalisis...',
'summaryComplete': 'Ringkasan Selesai',
'generate': 'Jana',
'overview': 'Gambaran Keseluruhan',
'transcription': 'Transkripsi',
'summary': 'Ringkasan',
'mindMap': 'Peta Minda',
'editSpeaker': 'Sunting',
'nameSpeaker': 'Namakan Penutur',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Ringkaskan Semula',
'dateAndTime': 'Tarikh & Masa',
'location': 'Lokasi',
'attendees': 'Peserta',
'inputLocation': 'Masukkan Lokasi',
'inputAttendees': 'Masukkan Peserta',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Pilih Templat Ringkasan',
'useThisTemplate': 'Gunakan Templat Ini',
'lastUsed': 'Terakhir Digunakan',
'create': 'Cipta',
'templateDetails': 'Butiran Templat',
'tag': 'Tag',
'tag': 'Teg',
'description': 'Penerangan',
'template': 'Templat',
'deleteTemplate': 'Padam Templat',
@ -585,121 +585,121 @@ const Map<String, String> msMY = {
'pleaseEnter': 'Sila masukkan',
'viewAll': 'Lihat semua',
'recordingLanguage': 'Bahasa Rakaman',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'chineseSimplified': 'Mandarin Cina (Ringkas)',
'meetingGenerateNow': 'Jana Sekarang',
'keyEventsAnalyzed': 'Menganalisis {count} peristiwa utama.',
'aiAnalysisDesc':
'Analisis AI mengenal pasti peristiwa utama dalam rakaman, membolehkan anda memilih peristiwa penting untuk penjanaan AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Mengimport...',
'batchImporting': 'Import kelompok...',
'importingLocalRecordings': 'Mengimport rakaman tempatan...',
'importFailed': 'Import fail gagal: {filePath}, ralat: {error}',
'importSuccess': 'Berjaya mengimport {count} rakaman tempatan',
'importError': 'Import gagal: {error}',
'pleaseSelectAudioFile': 'Sila pilih fail audio',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Kongsi Audio Mesyuarat',
'shareComplete': 'Perkongsian selesai!',
'shareFailed': 'Perkongsian gagal: {error}',
'fileProcessingFailed': 'Pemprosesan fail gagal: {filePath}, ralat: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Simpan Peta Minda',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'Kongsi Peta Minda',
'shareSuccess': 'Perkongsian Berjaya',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Tanya AI ...',
'askAIPrompt': 'Apa yang boleh saya bantu anda hari ini?',
'continueAsk': 'Teruskan Bertanya',
'todoList': 'Senarai Tugasan',
'extractConclusion': 'Ekstrak Kesimpulan',
'generateKeyIndicators': 'Jana Penunjuk Utama',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Kongsi Pautan',
'copyTranscript': 'Salin Transkrip',
'copySummary': 'Salin Ringkasan',
'exportAudio': 'Eksport Audio',
'exportTranscript': 'Eksport Transkrip',
'shareMeetingAudio': 'Kongsi Audio Mesyuarat',
'exportSummary': 'Eksport Ringkasan',
'exportAs': 'Eksport Sebagai',
'exportingPDF': 'Mengeksport PDF...',
'export': 'Eksport',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Guna pada semua perenggan penutur ini',
'summaryWillBeUpdatedAutomatically':
'Ringkasan akan dikemas kini secara automatik berdasarkan templat',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Namakan Penutur Semasa',
'recentlyUsedNames': 'Nama Terkini Digunakan',
'applyToCurrentParagraph': 'Guna pada Perenggan Semasa',
'totalTime': 'Jumlah Masa',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Penutur ringkasan akan dikemas kini secara automatik',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'Segerak ke Awan',
'syncToCloudTip':
'Segerakkan rakaman anda ke awan secara automatik; anda boleh memainkan, mengurus dan berkongsi rakaman melalui VOITRANS APP atau VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'syncToVoitransApp': 'Segerak VOITRANS APP',
'transcriptionRecord': 'Rekod Transkripsi',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Rekod Transkripsi',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'templateCommunity': 'Komuniti Templat',
'comingSoon': 'Akan Datang',
'integration': 'Integrasi',
'voitransPrivateCloud': 'VOITRANS AWAN PERIBADI',
'enabled': 'Diaktifkan',
'disabled': 'Dilumpuhkan',
'myVoitransDevice': 'Peranti VOITRANS Saya',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Bantuan & Maklum Balas',
'aboutVoitrans': 'Mengenai VOITRANS',
'meetingDays': 'Hari',
'meetingHours': 'Jam',
'voitransAiMember': 'Ahli AI Voitrans',
'unlockStarterMember': 'Buka Kunci Ahli Permulaan',
'bindDeviceToActivate':
'Ikat peranti Voitrans untuk mengaktifkan keahlian Starter',
'unlockNow': 'Unlock Now',
'unlockNow': 'Buka Kunci Sekarang',
// 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',
'comparison': 'Perbandingan',
'detailedInfo': 'Maklumat Terperinci',
'monthlyTranscriptionTime': 'Masa Transkripsi Bulanan',
'unlimited': 'Tanpa Had',
'professionalTemplates': 'Templat Profesional',
'limited': 'Terhad',
'fullTemplates': 'Templat Penuh',
'professionalTerms': 'Istilah Profesional',
'customTemplates': 'Templat Tersuai',
'visualMindMap': 'Peta Minda Visual',
'speakerIdentification': 'Pengenalan Penutur',
'aiVoiceEnhancement': 'Peningkatan Suara AI',
'audioImport': 'Import Audio',
'multipleExportFormats': 'Pelbagai Format Eksport',
'professionalSummaryTemplates': 'Templat Ringkasan Profesional',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Reka bentuk templat profesional untuk meningkatkan kecekapan kerja anda. Disesuaikan mengikut keperluan industri.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Anda boleh menyesuaikan gesaan ringkasan mengikut keperluan anda dan menggunakannya untuk menjana ringkasan yang diperlukan.',
'askAiDesc':
'Ekstrak maklumat lebih mendalam daripada rakaman secara pintar; jana jadual data, kesimpulan perbincangan utama, senarai tugasan, e-mel laporan dan kandungan berformat lain dengan satu klik.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Melebihi ringkasan - susun dan visualisasikan perkara utama dengan peta minda untuk pemahaman teks penuh yang lebih berkesan.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Temui, kongsi, dan dapatkan inspirasi daripada pustaka templat yang dicipta oleh pengguna.',
'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.',
'Transkripsi audio akan menyokong pengenalan penutur, memulihkan kandungan mesyuarat atau panggilan telefon dengan lebih intuitif. Pada masa yang sama, ringkasan akan lebih tepat.',
'privateCloudSyncDesc':
'Rakaman dan transkripsi anda akan disimpan dengan selamat pada pelayan awan khusus, dengan penyulitan penuh semasa muat naik dan muat turun untuk memastikan privasi dan keselamatan.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'Peningkatan suara AI menyokong pelbagai tetapan pengurangan bunyi bising, menghapuskan bunyi latar secara pintar, meningkatkan kejelasan suara, dan meningkatkan kualiti main balik audio.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Import fail audio dengan mudah dari aplikasi tempatan atau pihak ketiga, seperti memo suara, Google Drive, dll.',
'multipleExportFormatsDesc':
'Eksport rakaman audio, teks transkripsi dan ringkasan anda dalam pelbagai format (TXT, PDF, JPEG) mengikut keperluan.',
'upgradeMembership': 'Naik taraf keahlian',
@ -819,12 +819,12 @@ const Map<String, String> msMY = {
"unbind": "Nyahikat",
"noDevicesBound": "Belum ada peranti diikat",
"pleaseBindDeviceFirst": "Sila ikat peranti dahulu untuk diurus",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"noMacAddress": "Tiada Alamat MAC",
"licenseCode": "Kod Lesen",
"confirmUnbind": "Sahkan Nyahikat",
"confirmUnbindMessage":
"Adakah anda pasti mahu nyahikat peranti \"{deviceName}\"?",
"confirmUnbindAction": "Confirm Unbind",
"confirmUnbindAction": "Sahkan Nyahikat",
// Agent模块 - 主界面
"Lily": "Lily",
@ -915,11 +915,11 @@ const Map<String, String> msMY = {
'generatedByAi': 'Dihasilkan oleh AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'Panggilan Alat',
'noResult': 'Tiada Keputusan',
'noToolCallContentToCopy': 'Tiada kandungan panggilan alat untuk disalin',
'toolCallDetails': 'Butiran Panggilan Alat:',
'toolCallContentCopied': 'Kandungan panggilan alat telah disalin ke papan keratan',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Berikut adalah beberapa muzik yang disyorkan:',
@ -961,7 +961,7 @@ const Map<String, String> msMY = {
'pleaseInstallAmapApp': 'Sila pasang aplikasi Amap dahulu',
'pleaseInstallBaiduMapApp': 'Sila pasang aplikasi Baidu Maps dahulu',
'appleMapStartFailed': 'Apple Maps gagal dimulakan',
'appleMapUnavailable': 'Apple Maps unavailable',
'appleMapUnavailable': 'Apple Maps tidak tersedia',
'openAppleMapError': 'Ralat membuka Apple Maps',
// Agent模块 - 天气卡片
@ -1072,13 +1072,13 @@ const Map<String, String> msMY = {
"translatedImageLoadFailed": "Gagal memuatkan imej terjemahan",
"pleaseSelectImage": "Sila pilih imej",
"imageLoadFailed": "Imej gagal dimuatkan",
"imageQuality": "Image Quality",
"maxSize": "Max Size",
"close": "Close",
"setImageQuality": "Set Image Quality",
"currentQuality": "Current quality: @value%",
"setMaxSize": "Set Max Size",
"currentMaxSize": "Current: @pxpx",
"imageQuality": "Kualiti Imej",
"maxSize": "Saiz Maksimum",
"close": "Tutup",
"setImageQuality": "Tetapkan Kualiti Imej",
"currentQuality": "Kualiti semasa: @value%",
"setMaxSize": "Tetapkan Saiz Maksimum",
"currentMaxSize": "Semasa: @pxpx",
"waitingForAction": "Menunggu tindakan",
"pleaseSelectImageToStart": "Sila pilih imej untuk mula",
"chooseImage": "Pilih Imej",
@ -1095,9 +1095,9 @@ const Map<String, String> msMY = {
"processingFailed": "Pemprosesan Gagal",
"imageProcessingOrTranslationFailed":
"Pemprosesan imej atau terjemahan gagal. Sila cuba lagi.\nRalat: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Saiz imej melebihi had 4MB",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Saiz imej melebihi 4MB. Kurangkan kualiti atau dimensi dan cuba lagi",
"emptyTranslationResult": "API terjemahan imej mengembalikan hasil kosong",
"imageTranslationFailedTryLater":
"Terjemahan imej gagal. Masalah rangkaian atau had kadar. Sila cuba kemudian",
@ -1109,11 +1109,11 @@ const Map<String, String> msMY = {
"photoAlbumPermissionRequired":
"Kebenaran album foto diperlukan untuk memilih imej",
"translationDetails": "Butiran Terjemahan",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": "Imej Asal",
"sourceLanguage": "Bahasa Sumber",
"targetLanguage": "Bahasa Sasaran",
"translationTime": "Masa Terjemahan",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": "Ciri perkongsian sedang dalam pembangunan",
// 翻译模块 - 录音文件
"translateAudioFiles": "Terjemah Fail Audio",
@ -1152,7 +1152,7 @@ const Map<String, String> msMY = {
// 个人资料模块
"editProfile": "Sunting Maklumat Peribadi",
"avatar": "Avatar",
"avatar": 'Avatar',
"nickname": "Nama Samaran",
"save": "Simpan",
"about": "Mengenai",
@ -1164,8 +1164,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?',
'clean': 'Kosongkan Cache',
'cleanTips': 'Adakah anda pasti mahu mengosongkan cache peribadi?',
'networkConnectionFailed':
'Sambungan rangkaian gagal, sila semak tetapan rangkaian anda dan cuba lagi',
'serverTemporarilyUnavailable':
@ -1208,7 +1208,7 @@ const Map<String, String> msMY = {
'Perkhidmatan Akaun telah dimulakan', // AccountService 已初始化
// 权限模块
'meetingStoragePermission': 'Storage',
'meetingStoragePermission': 'Storan',
'meetingStoragePermissionExplanation':
'Kami memerlukan kebenaran storan supaya anda boleh memilih dan memuat naik fail audio.',
'meetingStoragePermissionPermanentDenial':
@ -1224,9 +1224,9 @@ const Map<String, String> msMY = {
'locationPermissions': 'Kebenaran Lokasi',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'alarm': 'Alarm',
'contacts': 'Kenalan',
'notification': 'Pemberitahuan',
'alarm': 'Penggera',
'calendarWrite': 'Tulis Kalendar',
'calendarFullAccess': 'Akses Penuh Kalendar',
'locationInfo': 'Maklumat Lokasi',
@ -1273,7 +1273,7 @@ const Map<String, String> msMY = {
'Digunakan untuk menyambung ke peranti Bluetooth',
'bluetoothConnectPermissionDetailDesc':
'Menyambung ke peranti Bluetooth memerlukan kebenaran sambung Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Digunakan untuk menghantar mesej pemberitahuan',
'notificationPermissionDetailDesc':
'Aplikasi memerlukan kebenaran notifikasi untuk menghantar amaran dan mesej penting kepada anda',
'appNeedsPermissionForFullFunction':
@ -1281,7 +1281,7 @@ const Map<String, String> msMY = {
'permanentDenialText':
'Anda telah menafikan kebenaran {permission} secara kekal, sila pergi ke tetapan aplikasi untuk mendayakannya',
'goToSettings': 'Pergi ke Tetapan',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothScan': 'Imbasan Bluetooth',
'bluetoothConnect': 'Sambung Bluetooth',
'bluetoothScanExplanation':
'Aplikasi memerlukan kebenaran imbas Bluetooth untuk mengimbas peranti Bluetooth berdekatan.',
@ -1295,8 +1295,8 @@ const Map<String, String> msMY = {
'Kebenaran sambung Bluetooth telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.',
'locationPermanentDenial':
'Kebenaran lokasi telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermission': 'Pemberitahuan',
'locationPermission': 'Lokasi',
'notificationPermissionExplanation':
'Kebenaran notifikasi diperlukan untuk memaparkan status main balik muzik.',
'locationPermissionExplanation':
@ -1305,7 +1305,7 @@ const Map<String, String> msMY = {
'Anda telah menafikan kebenaran notifikasi secara kekal, sila pergi ke tetapan untuk mendayakannya.',
'locationPermissionPermanentDenial':
'Anda telah menafikan kebenaran lokasi secara kekal, sila pergi ke tetapan untuk mendayakannya.',
'storagePermission': 'Storage',
'storagePermission': 'Storan',
'microphonePermissionExplanation':
'Kami memerlukan kebenaran mikrofon untuk merakam kandungan audio.',
'storagePermissionExplanation':
@ -1576,11 +1576,11 @@ const Map<String, String> msMY = {
// 国家列表
"邮箱": "E-mel",
"中国": "China",
"中国": 'China',
"美国": "Amerika Syarikat",
"加拿大": "Kanada",
"俄罗斯": "Rusia",
"英国": "United Kingdom",
"英国": 'United Kingdom',
"德国": "Jerman",
"意大利": "Itali",
"法国": "Perancis",
@ -1591,105 +1591,105 @@ const Map<String, String> msMY = {
"日本": "Jepun",
"韩国": "Korea Selatan",
"新加坡": "Singapura",
"马来西亚": "Malaysia",
"泰国": "Thailand",
"越南": "Vietnam",
"印度": "India",
"巴基斯坦": "Pakistan",
"马来西亚": 'Malaysia',
"泰国": 'Thailand',
"越南": 'Vietnam',
"印度": 'India',
"巴基斯坦": 'Pakistan',
"菲律宾": "Filipina",
"印度尼西亚": "Indonesia",
"印度尼西亚": 'Indonesia',
"阿联酋": "Emiriah Arab Bersatu",
"墨西哥": "Mexico",
"巴西": "Brazil",
"阿根廷": "Argentina",
"澳大利亚": "Australia",
"新西兰": "New Zealand",
"墨西哥": "Meksiko",
"巴西": 'Brazil',
"阿根廷": 'Argentina',
"澳大利亚": 'Australia',
"新西兰": 'New Zealand',
"中国香港": "Hong Kong (China)",
"中国澳门": "Macau (China)",
"中国台湾": "Taiwan (China)",
"埃及": "Mesir",
"希腊": "Greece",
"希腊": "Yunani",
"荷兰": "Belanda",
"比利时": "Belgium",
"匈牙利": "Hungary",
"罗马尼亚": "Romania",
"瑞士": "Switzerland",
"奥地利": "Austria",
"丹麦": "Denmark",
"瑞典": "Sweden",
"比利时": 'Belgium',
"匈牙利": 'Hungary',
"罗马尼亚": 'Romania',
"瑞士": 'Switzerland',
"奥地利": 'Austria',
"丹麦": 'Denmark',
"瑞典": 'Sweden',
"挪威": "Norway",
"波兰": "Poland",
"秘鲁": "Peru",
"智利": "Chile",
"哥伦比亚": "Colombia",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portugal",
"卢森堡": "Luxembourg",
"爱尔兰": "Ireland",
"冰岛": "Iceland",
"阿尔巴尼亚": "Albania",
"马耳他": "Malta",
"塞浦路斯": "Cyprus",
"芬兰": "Finland",
"保加利亚": "Bulgaria",
"立陶宛": "Lithuania",
"拉脱维亚": "Latvia",
"爱沙尼亚": "Estonia",
"乌克兰": "Ukraine",
"塞尔维亚": "Serbia",
"克罗地亚": "Croatia",
"斯洛文尼亚": "Slovenia",
"波兰": 'Poland',
"秘鲁": 'Peru',
"智利": 'Chile',
"哥伦比亚": "Kolombia",
"委内瑞拉": 'Venezuela',
"葡萄牙": 'Portugal',
"卢森堡": 'Luxembourg',
"爱尔兰": 'Ireland',
"冰岛": 'Iceland',
"阿尔巴尼亚": 'Albania',
"马耳他": 'Malta',
"塞浦路斯": 'Cyprus',
"芬兰": 'Finland',
"保加利亚": 'Bulgaria',
"立陶宛": 'Lithuania',
"拉脱维亚": 'Latvia',
"爱沙尼亚": 'Estonia',
"乌克兰": 'Ukraine',
"塞尔维亚": 'Serbia',
"克罗地亚": 'Croatia',
"斯洛文尼亚": 'Slovenia',
"捷克": "Republik Czech",
"斯洛伐克": "Slovakia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"摩洛哥": "Morocco",
"阿尔及利亚": "Algeria",
"突尼斯": "Tunisia",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"埃塞俄比亚": "Ethiopia",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israel",
"黎巴嫩": "Lebanon",
"约旦": "Jordan",
"伊拉克": "Iraq",
"科威特": "Kuwait",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"蒙古": "Mongolia",
"柬埔寨": "Cambodia",
"老挝": "Laos",
"文莱": "Brunei",
"斯洛伐克": 'Slovakia',
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": 'Nicaragua',
"哥斯达黎加": 'Costa Rica',
"巴拿马": 'Panama',
"海地": 'Haiti',
"玻利维亚": 'Bolivia',
"厄瓜多尔": 'Ecuador',
"巴拉圭": 'Paraguay',
"乌拉圭": 'Uruguay',
"摩洛哥": "Maghribi",
"阿尔及利亚": 'Algeria',
"突尼斯": 'Tunisia',
"尼日利亚": 'Nigeria',
"加纳": 'Ghana',
"埃塞俄比亚": "Habsyah",
"肯尼亚": 'Kenya',
"坦桑尼亚": 'Tanzania',
"乌干达": 'Uganda',
"孟加拉国": 'Bangladesh',
"以色列": 'Israel',
"黎巴嫩": "Lubnan",
"约旦": 'Jordan',
"伊拉克": 'Iraq',
"科威特": 'Kuwait',
"巴林": 'Bahrain',
"卡塔尔": 'Qatar',
"阿曼": 'Oman',
"阿富汗": 'Afghanistan',
"斯里兰卡": 'Sri Lanka',
"缅甸": 'Myanmar',
"尼泊尔": 'Nepal',
"蒙古": 'Mongolia',
"柬埔寨": "Kemboja",
"老挝": 'Laos',
"文莱": 'Brunei',
"东帝汶": "Timor-Leste",
"斐济": "Fiji",
"所罗门群岛": "Solomon Islands",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"斐济": 'Fiji',
"所罗门群岛": "Kepulauan Solomon",
"刚果民主共和国": "Republik Demokratik Congo",
"安哥拉": 'Angola',
"苏丹": 'Sudan',
"马尔代夫": 'Maldives',
"不丹": 'Bhutan',
"摩纳哥": 'Monaco',
"圣马力诺": 'San Marino',
"牙买加": 'Jamaica',
"巴哈马": 'Bahamas',
"巴布亚新几内亚": 'Papua New Guinea',
"萨摩亚": 'Samoa',
};

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

@ -19,11 +19,11 @@ const Map<String, String> nbNO = {
"unknownError": "Ukjent feil",
"asrConnectionFailed":
"Tilkobling til talegjenkjenningstjenesten mislyktes. Kontroller nettverket eller prøv igjen senere.",
"justNow": "Just now",
"minutesAgo": "@minutes minutes ago",
"yesterday": "Yesterday",
"daysAgo": "@days days ago",
"hoursAgo": "@hours hours ago",
"justNow": "Nettopp nå",
"minutesAgo": "@minutes minutter siden",
"yesterday": "I går",
"daysAgo": "@days dager siden",
"hoursAgo": "@hours timer siden",
// 启动页
"slogan": "Kobler sammen verden, hinsides lyd",
@ -49,9 +49,9 @@ const Map<String, String> nbNO = {
"russian": "Russisk",
"vietnamese": "Vietnamesisk",
"italian": "Italiensk",
"hindi": "Hindi",
"hindi": 'Hindi',
"indonesian": "Indonesisk",
"thai": "Thai",
"thai": 'Thai',
"malay": "Malayisk",
"turkish": "Tyrkisk",
"polish": "Polsk",
@ -119,7 +119,7 @@ const Map<String, String> nbNO = {
"reconnect": "Koble til på nytt",
"connectingDevice": "Kobler til enhet...",
"connectedTo": "Tilkoblet",
"signal": "Signal",
"signal": 'Signal',
"deviceId": "Enhets-ID",
"firmwareVersion": "Firmware-versjon",
"disconnectedDevice":
@ -256,10 +256,10 @@ const Map<String, String> nbNO = {
"transcriptBytes": "Transkripsjonsbyte",
"loadFailed": "Kunne ikke laste",
"statsLoadFailedTryLater": "Kunne ikke laste statistikk. Prøv igjen senere.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Opprydding fullført",
"cleanedOldData": "Slettet data eldre enn 90 dager",
"exportFeature": "Eksportfunksjon",
"exportInDevelopment": "Dataeksport er under utvikling",
// 商品模块 - 通用
'availablePackages': 'Tilgjengelige pakker',
@ -331,101 +331,106 @@ const Map<String, String> nbNO = {
'AI-medlemskapet er utløpt. Gå til medlemskapets påfyllingsside for å fornye.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Musikk og anbefalinger',
'navigationAndRoutes': 'Navigasjon og ruter',
'nearbySearch': 'Søk i nærheten',
'newsInformation': 'Nyheter',
'communicationAssistant': 'Kommunikasjonsassistent',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Lengre samtalekvoter, flere verktøykall og utvidet kontekstlengde.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Passer for agent-spørsmål, oppsummering, analyse og oppgaveutførelse.',
'musicSearchPlaybackControl': 'Søk i musikkbibliotek og avspillingskontroll',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Smart spilleliste og lignende låtanbefalinger',
'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',
'Ruteplanlegging og unngåelse av trafikk',
'voiceBroadcastAndWaypoints': 'Talesending og veipunktsinnstillinger',
'realTimeWeatherForecast': 'Sanntidsvær og værmelding',
'clothingAdviceAndTravelReminders': 'Klesråd og reisepåminnelser',
'poiSearchFoodGasParking': 'POI-søk: restaurant / bensin / parkering',
'ratingsHoursAndDirectRoutes': 'Vurderinger, åpningstider og direkteruter',
'hotNewsAndTopicOverview': 'Populære nyheter og temaoversikt',
'longArticleSummariesAndKeyPoints':
'Sammendrag av lange artikler og nøkkelpunkter',
'helpCallAndSMS': 'Hjelp med samtaler og SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Meldingsmaler og planlagte påminnelser',
'aiDisclaimer':
'Funksjoner avhenger av enhetstillatelser, tjenestetilgjengelighet og nettverksforhold.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Sanntidstranskripsjon',
'sceneLexicon': 'Scenarieordliste',
'subtitleDisplay': 'Undertekster',
'transHeaderDesc1':
'Sanntid simultantolking og tekstoversettelse med lav forsinkelse.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2':
'Passer for reise, forretninger, foredrag og undervisning.',
'translateZhEn': 'Kinesisk–engelsk oversettelse',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'lowLatencyVoiceBroadcast': 'Talesending med lav forsinkelse',
'multiLangTextTranslation': 'Flerspråklig tekstoversettelse',
'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',
'Terminologioptimalisering og bevaring av kontekst',
'lexiconTourBusinessLife': 'Reise-/Forretnings-/Livsstilsordlister',
'personalVocabularyMemory': 'Personlig ordforrådshukommelse',
'conversationSubtitleLargeText': 'Samtaleteksting / Stor-tekst-modus',
'colorHighContrast': 'Høy fargekontrast',
'transDisclaimer':
'Oversettelsesytelsen avhenger av mikrofon, nettverksforsinkelse og bakgrunnsstøy.',
// 商品模块 - 会议商品页
'meetingRecording': 'Møteopptak',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transkripsjon og sammendrag',
'keywordSearch': 'Nøkkelordsøk',
'collaborationSharing': 'Samarbeid og deling',
'meetingHeaderDesc1':
'Lydopptak, transkripsjon, nøkkelordsøk og automatisk oppsummering for å øke møteffektiviteten.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Passer for forretningsmøter, klassenotater og intervjureferater.',
'meetingAutoRecording': 'Automatisk opptak og segmentering',
'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',
'meetingSpeakerTagging': 'Talermerkering',
'meetingLongAudioTranscription': 'Lang lydtranskripsjon',
'meetingKeyPointSummary': 'Uttrekking av nøkkelpunkter',
'meetingTopicNameSearch': 'Søk etter emne/navn',
'meetingTimelineJump': 'Tidslinjesprang',
'meetingExportSummary': 'Eksporter referat',
'meetingMultiPlatformShare': 'Del på tvers av plattformer',
'meetingDisclaimer':
'Bruk i rolige omgivelser; ytelsen avhenger av mikrofon og nettverk.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Fordeler oversikt',
'higherQuota': 'Høyere brukskvote',
'lowerUnitPrice': 'Lavere enhetspris',
'priorityService': 'Prioritert service',
'exclusiveSupportChannel': 'Dedikert støttekanal',
'fastResponse': 'Rask problemrespons',
'eventsAndDiscounts': 'Arrangementer og rabatter',
'memberExclusiveEvents': 'Eksklusive medlemsarrangementer',
'longTermDiscountPlan': 'Langsiktig rabattplan',
'generalPrivileges': 'Generelle privilegier',
'earlyAccessNewFeatures': 'Tidlig tilgang til nye funksjoner',
'crossDeviceSync': 'Synkronisering på tvers av enheter',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Faktiske fordeler avhenger av pakkedetaljene og kan endres med versjoner.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Basis 100',
'ai_002_name': 'AI Basis 500',
'ai_003_name': 'AI Basis 1000',
'meet_001_name': 'Møte Basis 100',
'meet_002_name': 'Møte Basis 500',
'meet_003_name': 'Møte Basis 1000',
'trans_001_name': 'Oversettelse Basis 100',
'trans_002_name': 'Oversettelse Basis 500',
'trans_003_name': 'Oversettelse Basis 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc':
'Inkluderer 100 brukstilfeller. Tilgang til kjerne-AI-funksjoner.',
'ai_002_desc':
'Inkluderer 500 brukstilfeller. Tilgang til kjerne-AI-funksjoner.',
'ai_003_desc':
'Inkluderer 1000 brukstilfeller. Tilgang til kjerne-AI-funksjoner.',
'meet_001_desc': 'Inkluderer 100 møteopptak/transkripsjoner.',
'meet_002_desc': 'Inkluderer 500 møteopptak/transkripsjoner.',
'meet_003_desc': 'Inkluderer 1000 møteopptak/transkripsjoner.',
@ -434,46 +439,48 @@ const Map<String, String> nbNO = {
'trans_003_desc': 'Inkluderer 1000 oversettelser (tale/tekst).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'App: VoiTrans · Levert av: VoiTrans',
'iapCustomerServiceQQLabel': 'QQ for IAP-kundeservice: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'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, ',
'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',
'skip': 'Hopp over',
'next': 'Neste',
'sayLilyHint': 'Si "Lily Lily" til mikrofonen',
'imHere': 'Jeg er her~',
'guideWelcomeWakeAI':
'Velkommen til Voitrans! Vekk AI-en din \u201cLily\u201d først.',
'aiReplyCompleted': 'Lily har fullført svaret!',
'aiThinking': 'Lily tenker\u2026',
'guideAwakenSuccess': 'Flott! Lily er v\u00e5ken\u2014be om hjelp.',
'confirmInput': 'Bekreft inndata',
'guideClickSendPrefix': 'Trykk send, ',
'guideWeatherStart': 'Si til Lily: «Hvordan er været i dag?»',
'guideWeatherInput': 'Hvordan er været i dag?',
'guideWeatherSend': 'Lily vil rapportere været i sanntid',
'guideWeatherEnd': 'Lily kan rapportere været live—prøv andre kommandoer',
'guideMusicStart': 'Si til Lily: «Spill litt rockemusikk»',
'guideMusicInput': 'Spill litt rockemusikk',
'guideMusicSend': 'Lily vil finne musikk for deg',
'guideMusicEnd': 'Lily fant musikk—prøv andre kommandoer',
'guideNavStart': 'Si til Lily: «Naviger til Shenzhen Airport»',
'guideNavInput': 'Naviger til Shenzhen Airport',
'guideNavSend': 'Lily vil planlegge ruten',
'guideNavEnd': 'Navigasjon satt—prøv andre kommandoer',
'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',
'Si til Lily: «Lag en møte-påminnelse for kl. 15 i morgen»',
'guideMeetingInput': 'Lag en møte-påminnelse for kl. 15 i morgen',
'guideMeetingSend': 'Lily vil lage en møte-påminnelse',
'guideMeetingEnd': 'Påminnelse opprettet—prøv andre kommandoer',
'guidePhoneStart': 'Si til Lily: «Ring mamma»',
'guidePhoneInput': 'Ring mamma',
'guidePhoneSend': 'Lily vil ringe',
'guidePhoneEnd': 'Samtale startet—prøv andre kommandoer',
'guideSmsStart':
'Si til Lily: «Send pappa en melding: Jeg kommer hjem til middag»',
'guideSmsInput': 'Melding til pappa: Jeg kommer hjem til middag',
'guideSmsSend': 'Lily vil sende meldingen',
'guideSmsEnd': 'Melding sendt—talestyring er praktisk',
// Meeting模块 - 首页与导航
"startMeeting": "Start møte",
@ -488,7 +495,7 @@ const Map<String, String> nbNO = {
'aiSummary': 'AI-sammendrag',
'meetingTranscript': 'Møtetranskripsjon',
'files': 'Filer',
'mine': 'Mine',
'mine': 'Min',
'connect': 'Koble til',
'allFiles': 'Alle filer',
'searchInAllFiles': 'Søk i alle filer',
@ -502,9 +509,9 @@ const Map<String, String> nbNO = {
'aiPenNotFound': 'AI PEN-enhet ble ikke funnet',
'connectedToAiPen': 'Tilkoblet AI PEN-enhet',
'checkingNewFiles': 'Ser etter nye filer for import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Starter Wi‑Fi...',
'newFilesDetected': 'Nye filer funnet, forbereder import',
'noNewFiles': 'Ingen nye filer å importere',
'connectingWifi': 'Kobler til Wi‑Fi...',
'wifiConnected': 'Wi‑Fi tilkoblet',
'downloadingFiles': 'Laster ned filer...',
@ -518,7 +525,7 @@ const Map<String, String> nbNO = {
'liveRecording': 'Direkteopptak',
'audioVideoRecording': 'Lyd-/videoopptak',
'callRecording': 'Samtaleopptak',
'importAudio': 'Import Audio',
'importAudio': 'Importer lyd',
'meetingRecordExitTitle': 'Avslutt opptak', // 退出录音
'meetingRecordExitMessage':
'Velg hva du vil gjøre før du avslutter', // 请选择离开后的操作
@ -541,30 +548,30 @@ const Map<String, String> nbNO = {
'For å vise den flytende opptakslinjen (timer/pause/fortsett) under opptak, trenger vi tillatelse til å vises over andre apper.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Kan ikke åpne systeminnstillinger automatisk. Åpne Innstillinger og aktiver tillatelsen for å vises over andre apper manuelt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Transkriberer...',
'summarizing': 'Oppsummerer...',
'analyzing': 'Analyserer...',
'summaryComplete': 'Sammendrag fullført',
'generate': 'Generer',
'overview': 'Oversikt',
'transcription': 'Transkripsjon',
'summary': 'Sammendrag',
'mindMap': 'Tankekart',
'editSpeaker': 'Rediger',
'nameSpeaker': 'Gi navn til taler',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Oppsummer på nytt',
'dateAndTime': 'Dato og tid',
'location': 'Sted',
'attendees': 'Deltakere',
'inputLocation': 'Skriv inn sted',
'inputAttendees': 'Skriv inn deltakere',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Velg sammendragsmal',
'useThisTemplate': 'Bruk denne malen',
'lastUsed': 'Sist brukt',
'create': 'Opprett',
'templateDetails': 'Maldetaljer',
'tag': 'Merkelapp',
@ -581,24 +588,24 @@ const Map<String, String> nbNO = {
'inputDescHint': 'Vennligst skriv inn beskrivelse',
'custom': 'Tilpasset',
'pleaseEnter': 'Vennligst skriv inn',
'viewAll': 'View All',
'viewAll': 'Vis alle',
'recordingLanguage': 'Opptaksspråk',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Kinesisk mandarin (forenklet)',
'meetingGenerateNow': 'Generer nå',
'keyEventsAnalyzed': 'Analyserte {count} nøkkelhendelser.',
'aiAnalysisDesc':
'AI-analysen identifiserer nøkkelhendelser i opptak, slik at du kan velge viktige hendelser for AI-generering.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Importerer...',
'batchImporting': 'Batch-importerer...',
'importingLocalRecordings': 'Importerer lokale opptak...',
'importFailed': 'Import av fil mislyktes: {filePath}, feil: {error}',
'importSuccess': 'Importerte {count} lokale opptak',
'importError': 'Import mislyktes: {error}',
'pleaseSelectAudioFile': 'Velg en lydfil',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Del møte-lyd',
'shareComplete': 'Deling fullført!',
'shareFailed': 'Deling mislyktes: {error}',
'fileProcessingFailed': 'Filbehandling mislyktes: {filePath}, feil: {error}',
@ -616,15 +623,15 @@ const Map<String, String> nbNO = {
'generateKeyIndicators': 'Generer nøkkelindikatorer',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Del lenke',
'copyTranscript': 'Kopier transkripsjon',
'copySummary': 'Kopier sammendrag',
'exportAudio': 'Eksporter lyd',
'exportTranscript': 'Eksporter transkripsjon',
'shareMeetingAudio': 'Del møte-lyd',
'exportSummary': 'Eksporter sammendrag',
'exportAs': 'Eksporter som',
'exportingPDF': 'Eksporterer PDF...',
'export': 'Eksporter',
// Meeting模块 - 发言者
@ -654,88 +661,89 @@ const Map<String, String> nbNO = {
'enabled': 'Aktivert',
'disabled': 'Deaktivert',
'myVoitransDevice': 'Min VOITRANS-enhet',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Hjelp og tilbakemelding',
'aboutVoitrans': 'Om VOITRANS',
'meetingDays': 'Dager',
'meetingHours': 'Timer',
'voitransAiMember': 'Voitrans AI-medlem',
'unlockStarterMember': 'Lås opp Starter-medlemskap',
'bindDeviceToActivate':
'Koble til Voitrans-enheten for å aktivere Starter-medlemskap',
'unlockNow': 'Unlock Now',
'unlockNow': 'Lås opp nå',
// 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',
'comparison': 'Sammenligning',
'detailedInfo': 'Detaljert informasjon',
'monthlyTranscriptionTime': 'Månedlig transkripsjonstid',
'unlimited': 'Ubegrenset',
'professionalTemplates': 'Profesjonelle maler',
'limited': 'Begrenset',
'fullTemplates': 'Alle maler',
'professionalTerms': 'Fagterminologi',
'customTemplates': 'Egendefinerte maler',
'visualMindMap': 'Visuelt tankekart',
'speakerIdentification': 'Taleridentifikasjon',
'aiVoiceEnhancement': 'AI-stemmeforbedring',
'audioImport': 'Lydimport',
'multipleExportFormats': 'Flere eksportformater',
'professionalSummaryTemplates': 'Profesjonelle sammendragsmaler',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Profesjonelle maler som forbedrer arbeidseffektiviteten. Tilpasset bransjens behov.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Du kan tilpasse sammendrags‑promptene etter behov og bruke dem til å generere ønskede sammendrag.',
'askAiDesc':
'Trekk intelligent ut dypere informasjon fra opptak, og generer datatabeller, nøkkelkonklusjoner, oppgavelister, rapport-e-poster og annet formatert innhold med ett klikk.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Mer enn sammendrag: organiser og visualiser nøkkelpunkter med tankekart for bedre forståelse av hele teksten.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Oppdag, del og finn inspirasjon i malbiblioteket laget av brukere.',
'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.',
'Transkripsjon av lyd støtter taleridentifikasjon for å gjenskape innhold fra møter og telefonsamtaler mer intuitivt. Sammendraget blir samtidig mer presist.',
'privateCloudSyncDesc':
'Opptakene og transkripsjonene dine lagres sikkert på dedikerte skyservere, med full kryptering under opplasting og nedlasting for å sikre personvern og sikkerhet.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'AI-stemmeforbedring støtter flere innstillinger for støyreduksjon, fjerner bakgrunnsstøy intelligent, forbedrer stemmeklarhet og gir bedre lydkvalitet.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Importer enkelt lydfiler fra lokale eller tredjepartsapper, som taleopptak, Google Drive osv.',
'multipleExportFormatsDesc':
'Eksporter lydopptak, transkripsjonstekst og sammendrag i ulike formater (TXT, PDF, JPEG) etter behov.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Oppgrader medlemskapet',
'yearlySubscription': 'Årlig abonnement',
'monthlySubscription': 'Månedlig abonnement',
'proMonthly': 'Pro ¥60/mnd',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'7 dagers gratis prøveperiode, deretter ¥800/år. Avbryt når som helst før prøveperioden slutter.',
'sevenDayTrial': '7 dagers gratis prøveperiode',
'unlimitedMonthly': 'Ubegrenset ¥120/mnd',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'7 dagers gratis prøveperiode, deretter ¥1600/år. Avbryt når som helst før prøveperioden slutter.',
'trialNote':
'*7 dagers gratis prøveperiode, deretter årlig betaling. Kan avbrytes når som helst.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/mnd',
'subscribe': 'Abonner',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/mnd',
'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: ',
'*Etter oppgradering av abonnementet blir gjenværende dager i det opprinnelige abonnementet automatisk beregnet og refundert til betalingskontoen din',
'buyMoreTranscriptionTime': 'Kjøp mer transkripsjonstid',
'sixThousandMinutes': '6 000 minutter',
'threeThousandMinutes': '3 000 minutter',
'sixHundredMinutes': '600 minutter',
'oneHundredTwentyMinutes': '120 minutter',
'validityPeriod': '*Gyldighetsperiode: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Aktiveres umiddelbart etter kjøp og er gyldig i 2 år etter aktivering.',
'purchase': 'Kjøp',
// Meeting模块 - 录音语言
'recordLanguage': 'Opptaksspråk',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantonesisk',
'sichuan': 'Sichuan-dialekt',
'shanghai': 'Shanghai-dialekt',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Ukjent språk',
'analysisFailed': 'Analyse mislyktes, prøv igjen senere',
'transcriptionFailed': 'Transkribering mislyktes, prøv igjen senere',
'summaryFailed': 'Sammendrag mislyktes, prøv igjen senere',
@ -814,7 +822,7 @@ const Map<String, String> nbNO = {
"deviceTypeClassicBluetoothHeadset": "Klassisk Bluetooth-headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth-headset",
"deviceTypeSmartVoiceRecorder": "Smart stemmeopptaker",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeSmartEye": 'Smarte briller',
"unbind": "Fjern binding",
"noDevicesBound": "Ingen enheter er koblet til ennå",
"pleaseBindDeviceFirst": "Koble til en enhet først for å administrere",
@ -828,7 +836,7 @@ const Map<String, String> nbNO = {
// Agent模块 - 主界面
"Lily": "Lily",
"clearChatHistory": "Tøm chat-historikk",
"online": "Online",
"online": 'Online',
"ttsSpeed": "Talefart",
"ttsSpeedDefaultHint": "Standard +25 %",
"inputMessage": "Skriv melding...",
@ -1094,9 +1102,9 @@ const Map<String, String> nbNO = {
"processingFailed": "Behandling mislyktes",
"imageProcessingOrTranslationFailed":
"Bildebehandling eller oversettelse mislyktes. Prøv igjen.\nFeil: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": 'Bildestørrelsen overskrider 4 MB-grensen',
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
'Bildestørrelsen overskrider 4 MB. Reduser kvalitet eller dimensjoner og prøv på nytt',
"emptyTranslationResult":
"Bildeoversettelses-API returnerte et tomt resultat",
"imageTranslationFailedTryLater":
@ -1108,11 +1116,11 @@ const Map<String, String> nbNO = {
"photoAlbumPermissionRequired":
"Fotoalbumtillatelse kreves for å velge bilder",
"translationDetails": "Oversettelsesdetaljer",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": 'Originalbilde',
"sourceLanguage": 'Kildespråk',
"targetLanguage": 'Målspråk',
"translationTime": "Oversettelsestid",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": 'Delingsfunksjonen er under utvikling',
// 翻译模块 - 录音文件
"translateAudioFiles": "Oversett lydfiler",
@ -1152,7 +1160,7 @@ const Map<String, String> nbNO = {
// 个人资料模块
"editProfile": "Rediger personlig informasjon",
"avatar": "Avatar",
"avatar": 'Avatar',
"nickname": "Kallenavn",
"save": "Lagre",
"about": "Om",
@ -1164,8 +1172,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?',
'clean': 'Tøm buffer',
'cleanTips': 'Er du sikker på at du vil slette personlig hurtigbuffer?',
'networkConnectionFailed':
'Nettverkstilkobling mislyktes, sjekk nettverksinnstillingene og prøv igjen',
'serverTemporarilyUnavailable':
@ -1231,7 +1239,7 @@ const Map<String, String> nbNO = {
'phonePermissionDesc': 'Brukes for å ringe',
'smsPermissionDesc': 'Brukes for å sende SMS',
'alarmPermissionDesc':
'Used to set exact alarms to ensure reminders trigger on time',
'Brukes til å sette nøyaktige alarmer for å sikre at påminnelser utløses i tide',
'calendarWritePermissionDesc':
'Brukes for å opprette kalenderhendelser og påminnelser',
'calendarFullAccessPermissionDesc':
@ -1269,7 +1277,7 @@ const Map<String, String> nbNO = {
'bluetoothConnectPermissionDesc': 'Brukes for å koble til Bluetooth-enheter',
'bluetoothConnectPermissionDetailDesc':
'Tilkobling til Bluetooth-enheter krever Bluetooth-tilkoblingstillatelse',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Brukes til å sende varslingsmeldinger',
'notificationPermissionDetailDesc':
'Appen trenger varslingstillatelse for å sende deg viktige varsler og meldinger',
'appNeedsPermissionForFullFunction':
@ -1346,7 +1354,7 @@ const Map<String, String> nbNO = {
// 配对模块
"devicePairing": "Enhetsparing",
"connectYourDeepSoundHeadset": "Koble til ditt Voitrans-hodesett",
"bind": "Bind",
"bind": 'Koble til',
"authorizeBind": "Autoriser binding",
"enterCode": "Vennligst skriv inn koden",
"autoInputCode": "Automatisk innsetting av kode",
@ -1554,25 +1562,25 @@ const Map<String, String> nbNO = {
"克罗地亚语": "Kroatisk",
"加泰隆语": "Katalansk",
"阿拉伯语": "Arabisk",
"泰语": "Thai",
"泰语": 'Thai',
"越南语": "Vietnamesisk",
"印尼语": "Indonesisk",
"印地语": "Hindi",
"印地语": 'Hindi',
"土耳其语": "Tyrkisk",
"马来语": "Malayisk",
"孟加拉语": "Bengali",
"泰米尔语": "Tamil",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"乌尔都语": "Urdu",
"孟加拉语": 'Bengali',
"泰米尔语": 'Tamil',
"泰卢固语": 'Telugu',
"马拉提语": 'Marathi',
"乌尔都语": 'Urdu',
"波斯语": "Persisk",
"斯瓦希里语": "Swahili",
"斯瓦希里语": 'Swahili',
// 国家列表
"邮箱": "E-post",
"中国": "Kina",
"美国": "USA",
"加拿大": "Canada",
"加拿大": 'Canada',
"俄罗斯": "Russland",
"英国": "Storbritannia",
"德国": "Tyskland",
@ -1582,108 +1590,108 @@ const Map<String, String> nbNO = {
"南非": "Sør-Afrika",
"沙特阿拉伯": "Saudi-Arabia",
"土耳其": "Tyrkia",
"日本": "Japan",
"日本": 'Japan',
"韩国": "Sør-Korea",
"新加坡": "Singapore",
"马来西亚": "Malaysia",
"泰国": "Thailand",
"越南": "Vietnam",
"印度": "India",
"巴基斯坦": "Pakistan",
"新加坡": 'Singapore',
"马来西亚": 'Malaysia',
"泰国": 'Thailand',
"越南": 'Vietnam',
"印度": 'India',
"巴基斯坦": 'Pakistan',
"菲律宾": "Filippinene",
"印度尼西亚": "Indonesia",
"印度尼西亚": 'Indonesia',
"阿联酋": "De forente arabiske emirater",
"墨西哥": "Mexico",
"墨西哥": 'Mexico',
"巴西": "Brasil",
"阿根廷": "Argentina",
"澳大利亚": "Australia",
"新西兰": "New Zealand",
"阿根廷": 'Argentina',
"澳大利亚": 'Australia',
"新西兰": 'New Zealand',
"中国香港": "Hongkong (Kina)",
"中国澳门": "Macao (Kina)",
"中国台湾": "Taiwan (Kina)",
"埃及": "Egypt",
"埃及": 'Egypt',
"希腊": "Hellas",
"荷兰": "Nederland",
"比利时": "Belgia",
"匈牙利": "Ungarn",
"罗马尼亚": "Romania",
"罗马尼亚": 'Romania',
"瑞士": "Sveits",
"奥地利": "Østerrike",
"丹麦": "Danmark",
"瑞典": "Sverige",
"挪威": "Norge",
"波兰": "Polen",
"秘鲁": "Peru",
"智利": "Chile",
"哥伦比亚": "Colombia",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portugal",
"卢森堡": "Luxembourg",
"秘鲁": 'Peru',
"智利": 'Chile',
"哥伦比亚": 'Colombia',
"委内瑞拉": 'Venezuela',
"葡萄牙": 'Portugal',
"卢森堡": 'Luxembourg',
"爱尔兰": "Irland",
"冰岛": "Island",
"阿尔巴尼亚": "Albania",
"马耳他": "Malta",
"阿尔巴尼亚": 'Albania',
"马耳他": 'Malta',
"塞浦路斯": "Kypros",
"芬兰": "Finland",
"保加利亚": "Bulgaria",
"芬兰": 'Finland',
"保加利亚": 'Bulgaria',
"立陶宛": "Litauen",
"拉脱维亚": "Latvia",
"拉脱维亚": 'Latvia',
"爱沙尼亚": "Estland",
"乌克兰": "Ukraina",
"塞尔维亚": "Serbia",
"塞尔维亚": 'Serbia',
"克罗地亚": "Kroatia",
"斯洛文尼亚": "Slovenia",
"斯洛文尼亚": 'Slovenia',
"捷克": "Tsjekkia",
"斯洛伐克": "Slovakia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"斯洛伐克": 'Slovakia',
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": 'Nicaragua',
"哥斯达黎加": 'Costa Rica',
"巴拿马": 'Panama',
"海地": 'Haiti',
"玻利维亚": 'Bolivia',
"厄瓜多尔": 'Ecuador',
"巴拉圭": 'Paraguay',
"乌拉圭": 'Uruguay',
"摩洛哥": "Marokko",
"阿尔及利亚": "Algerie",
"突尼斯": "Tunisia",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"突尼斯": 'Tunisia',
"尼日利亚": 'Nigeria',
"加纳": 'Ghana',
"埃塞俄比亚": "Etiopia",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israel",
"肯尼亚": 'Kenya',
"坦桑尼亚": 'Tanzania',
"乌干达": 'Uganda',
"孟加拉国": 'Bangladesh',
"以色列": 'Israel',
"黎巴嫩": "Libanon",
"约旦": "Jordan",
"约旦": 'Jordan',
"伊拉克": "Irak",
"科威特": "Kuwait",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"蒙古": "Mongolia",
"科威特": 'Kuwait',
"巴林": 'Bahrain',
"卡塔尔": 'Qatar',
"阿曼": 'Oman',
"阿富汗": 'Afghanistan',
"斯里兰卡": 'Sri Lanka',
"缅甸": 'Myanmar',
"尼泊尔": 'Nepal',
"蒙古": 'Mongolia',
"柬埔寨": "Kambodsja",
"老挝": "Laos",
"文莱": "Brunei",
"老挝": 'Laos',
"文莱": 'Brunei',
"东帝汶": "Øst-Timor",
"斐济": "Fiji",
"斐济": 'Fiji',
"所罗门群岛": "Salomonøyene",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"刚果民主共和国": 'Den demokratiske republikken Kongo',
"安哥拉": 'Angola',
"苏丹": 'Sudan',
"马尔代夫": 'Maldivene',
"不丹": 'Bhutan',
"摩纳哥": 'Monaco',
"圣马力诺": 'San Marino',
"牙买加": 'Jamaica',
"巴哈马": 'Bahamas',
"巴布亚新几内亚": 'Papua Ny-Guinea',
"萨摩亚": 'Samoa',
};

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

File diff suppressed because it is too large

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

@ -372,7 +372,8 @@ const Map<String, String> plPL = {
'subtitleDisplay': 'Napisy',
'transHeaderDesc1':
'Tłumaczenie symultaniczne i tłumaczenie tekstu w czasie rzeczywistym z niskim opóźnieniem.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2':
'Odpowiednie do podróży, spotkań biznesowych, przemówień i nauki.',
'translateZhEn': 'Tłumaczenie chińsko-angielskie',
'lowLatencyVoiceBroadcast': 'Transmisja głosowa z niskim opóźnieniem',
'multiLangTextTranslation': 'Wielojęzyczne tłumaczenie tekstu',
@ -474,15 +475,15 @@ const Map<String, String> plPL = {
'Powiedz Lily: „Utwórz przypomnienie o spotkaniu na jutro 15:00”',
'guideMeetingInput': 'Utwórz przypomnienie o spotkaniu na jutro 15:00',
'guideMeetingSend': 'Lily utworzy przypomnienie o spotkaniu',
'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',
'guideMeetingEnd': 'Przypomnienie utworzone — wypróbuj inne polecenia',
'guidePhoneStart': 'Powiedz Lily: "Zadzwoń do mamy"',
'guidePhoneInput': 'Zadzwoń do mamy',
'guidePhoneSend': 'Lily wykona połączenie',
'guidePhoneEnd': 'Połączenie wykonane — wypróbuj inne polecenia',
'guideSmsStart': 'Powiedz Lily: "Wyślij SMS do taty: Wrócę na obiad"',
'guideSmsInput': 'SMS do taty: Wrócę na obiad',
'guideSmsSend': 'Lily wyśle wiadomość',
'guideSmsEnd': 'Wiadomość wysłana — sterowanie głosem jest wygodne',
// Meeting模块 - 首页与导航
"startMeeting": "Rozpocznij spotkanie",
@ -1180,8 +1181,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?',
'clean': 'Wyczyść pamięć podręczną',
'cleanTips': 'Czy na pewno chcesz wyczyścić osobistą pamięć podręczną?',
'networkConnectionFailed':
'Błąd połączenia sieciowego, sprawdź ustawienia sieci i spróbuj ponownie',
'serverTemporarilyUnavailable':
@ -1709,15 +1710,15 @@ const Map<String, String> plPL = {
"东帝汶": "Timor Wschodni",
"斐济": "Fidżi",
"所罗门群岛": "Wyspy Salomona",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Demokratyczna Republika Konga",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"马尔代夫": "Malediwy",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"摩纳哥": "Monako",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"牙买加": "Jamajka",
"巴哈马": "Bahamy",
"巴布亚新几内亚": "Papua Nowa Gwinea",
"萨摩亚": "Samoa",
};

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

@ -55,7 +55,7 @@ const Map<String, String> ptPT = {
"malay": "Malaio",
"turkish": "Turco",
"polish": "Polaco",
"filipino": "Filipino",
"filipino": 'Filipino',
"dutch": "Holandês",
"swedish": "Sueco",
"danish": "Dinamarquês",
@ -261,10 +261,10 @@ const Map<String, String> ptPT = {
"loadFailed": "Falha ao carregar",
"statsLoadFailedTryLater":
"Falha ao carregar estatísticas. Tente novamente mais tarde.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Limpeza Concluída",
"cleanedOldData": "Dados com mais de 90 dias foram eliminados",
"exportFeature": "Função de Exportação",
"exportInDevelopment": "A exportação de dados está em desenvolvimento",
// 商品模块 - 通用
'availablePackages': 'Pacotes disponíveis',
@ -339,37 +339,43 @@ const Map<String, String> ptPT = {
'A subscrição de IA expirou. Vá à página de recarga da subscrição para renovar.',
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Música e Recomendações',
'navigationAndRoutes': 'Navegação e Rotas',
'nearbySearch': 'Pesquisa Nas Proximidades',
'newsInformation': 'Notícias',
'communicationAssistant': 'Assistente de Comunicação',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Maior quota de conversação, mais chamadas de ferramentas, comprimento de contexto alargado.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Adequado para Q&A de agente, resumo, análise e execução de tarefas.',
'musicSearchPlaybackControl':
'Pesquisa de biblioteca musical e controlo de reprodução',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Lista de reprodução inteligente e recomendações de músicas semelhantes',
'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',
'Planeamento de rotas e evitamento de congestionamento',
'voiceBroadcastAndWaypoints':
'Transmissão de voz e configuração de pontos de passagem',
'realTimeWeatherForecast': 'Meteorologia em tempo real e previsão',
'clothingAdviceAndTravelReminders':
'Conselhos de vestuário e lembretes de viagem',
'poiSearchFoodGasParking':
'Pesquisa POI: restauração / combustível / estacionamento',
'ratingsHoursAndDirectRoutes':
'Avaliações, horário de funcionamento e rota direta',
'hotNewsAndTopicOverview': 'Notícias em destaque e visão geral de tópicos',
'longArticleSummariesAndKeyPoints':
'Resumos de artigos longos e pontos-chave',
'helpCallAndSMS': 'Auxílio em chamadas e SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Mensagens de modelo e lembretes de agenda',
'aiDisclaimer':
'As funcionalidades dependem das permissões do dispositivo, da disponibilidade do serviço e das condições de rede.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Transcrição em Tempo Real',
'sceneLexicon': 'Glossário de Cenário',
'subtitleDisplay': 'Legendas',
'transHeaderDesc1':
'Interpretação simultânea e tradução de texto em tempo real, com voz de baixa latência.',
'transHeaderDesc2': 'Adequado para viagens, negócios, palestras e ensino.',
@ -388,21 +394,21 @@ const Map<String, String> ptPT = {
// 商品模块 - 会议商品页
'meetingRecording': 'Gravação de reuniões',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transcrição e Resumo',
'keywordSearch': 'Pesquisa por Palavras-chave',
'collaborationSharing': 'Colaboração e Partilha',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, and auto summary.',
'Gravação de áudio, transcrição, pesquisa por palavras-chave e resumo automático para aumentar a eficiência das reuniões.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Adequado para reuniões de negócios, apontamentos de aulas e atas de entrevistas.',
'meetingAutoRecording': 'Gravação automática e segmentação',
'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',
'meetingSpeakerTagging': 'Identificação de oradores',
'meetingLongAudioTranscription': 'Transcrição de áudio longo',
'meetingKeyPointSummary': 'Extração de pontos-chave',
'meetingTopicNameSearch': 'Pesquisa por tópico/nome',
'meetingTimelineJump': 'Salto na linha do tempo',
'meetingExportSummary': 'Exportar atas',
'meetingMultiPlatformShare': 'Partilhar entre plataformas',
'meetingDisclaimer':
'Use em ambientes silenciosos; o desempenho depende do microfone e da rede.',
@ -423,12 +429,12 @@ const Map<String, String> ptPT = {
'Os benefícios reais dependem dos detalhes do pacote e podem mudar entre versões.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Básico 100',
'ai_002_name': 'AI Básico 500',
'ai_003_name': 'AI Básico 1000',
'meet_001_name': 'Reunião Básica 100',
'meet_002_name': 'Reunião Básica 500',
'meet_003_name': 'Reunião Básica 1000',
'trans_001_name': 'Tradução Básica 100',
'trans_002_name': 'Tradução Básica 500',
'trans_003_name': 'Tradução Básica 1000',
@ -446,8 +452,8 @@ const Map<String, String> ptPT = {
'trans_003_desc': 'Inclui 1000 traduções (voz/texto).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'App: VoiTrans · Fornecido por: VoiTrans',
'iapCustomerServiceQQLabel': 'Serviço de apoio IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -461,32 +467,34 @@ const Map<String, String> ptPT = {
'aiThinking': "A Lily está a pensar…",
'guideAwakenSuccess': "Ótimo! A Lily está acordada — peça ajuda.",
'confirmInput': "Confirmar entrada",
'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",
'guideClickSendPrefix': "Toque em enviar, ",
'guideWeatherStart': "Diga à Lily: “Como está o tempo hoje?”",
'guideWeatherInput': "Como está o tempo hoje?",
'guideWeatherSend': "A Lily irá informar o tempo em tempo real",
'guideWeatherEnd':
"A Lily pode relatar o tempo ao vivo—experimente outros comandos",
'guideMusicStart': 'Diga à Lily: “Toque um pouco de música rock”',
'guideMusicInput': 'Toque um pouco de música rock',
'guideMusicSend': 'A Lily irá encontrar música para si',
'guideMusicEnd': 'A Lily encontrou música—experimente outros comandos',
'guideNavStart': 'Diga à Lily: “Navegar para o Aeroporto de Shenzhen”',
'guideNavInput': 'Navegar para o Aeroporto de Shenzhen',
'guideNavSend': 'A Lily irá planear a rota',
'guideNavEnd': 'Navegação definida—experimente outros comandos',
'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",
'Diga à Lily: “Crie um lembrete de reunião para amanhã às 15h”',
'guideMeetingInput': 'Criar um lembrete de reunião para amanhã às 15h',
'guideMeetingSend': 'A Lily irá criar um lembrete de reunião',
'guideMeetingEnd': 'Lembrete criado—experimente outros comandos',
'guidePhoneStart': 'Diga à Lily: “Ligar para a Mãe”',
'guidePhoneInput': 'Ligar para a Mãe',
'guidePhoneSend': 'A Lily irá fazer a chamada',
'guidePhoneEnd': 'Chamada efetuada—experimente outros comandos',
'guideSmsStart':
'Diga à Lily: “Envie uma mensagem ao Pai: Estou a chegar para o jantar”',
'guideSmsInput': 'Mensagem ao Pai: Estou a chegar para o jantar',
'guideSmsSend': 'A Lily irá enviar a mensagem',
'guideSmsEnd': 'Mensagem enviada—o controlo por voz é prático',
// Meeting模块 - 首页与导航
"startMeeting": "Iniciar Reunião",
@ -515,9 +523,9 @@ const Map<String, String> ptPT = {
'aiPenNotFound': 'Dispositivo AI PEN não encontrado',
'connectedToAiPen': 'Ligado ao dispositivo AI PEN',
'checkingNewFiles': 'A verificar novos ficheiros para importar',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'A iniciar Wi-Fi...',
'newFilesDetected': 'Novos ficheiros detetados, a preparar importação',
'noNewFiles': 'Sem novos ficheiros para importar',
'connectingWifi': 'A ligar ao Wi‑Fi...',
'wifiConnected': 'Wi‑Fi ligado com sucesso',
'downloadingFiles': 'A transferir ficheiros...',
@ -532,7 +540,7 @@ const Map<String, String> ptPT = {
'liveRecording': 'Gravação ao vivo',
'audioVideoRecording': 'Gravação de áudio/vídeo',
'callRecording': 'Gravação de chamadas',
'importAudio': 'Import Audio',
'importAudio': 'Importar Áudio',
'meetingRecordExitTitle': 'Sair da gravação', // 退出录音
'meetingRecordExitMessage': 'Escolha o que fazer antes de sair', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Terminar e guardar', // 结束录音并保存
@ -673,8 +681,8 @@ const Map<String, String> ptPT = {
'aboutVoitrans': 'Sobre o VOITRANS',
'meetingDays': 'Dias',
'meetingHours': 'Horas',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'voitransAiMember': 'Membro Voitrans AI',
'unlockStarterMember': 'Desbloquear Membro Inicial',
'bindDeviceToActivate':
'Vincular dispositivo Voitrans para ativar a subscrição Starter',
'unlockNow': 'Desbloquear agora',
@ -683,9 +691,9 @@ const Map<String, String> ptPT = {
'comparison': 'Comparação',
'detailedInfo': 'Informações detalhadas',
'monthlyTranscriptionTime': 'Tempo mensal de transcrição',
'unlimited': 'Unlimited',
'unlimited': 'Ilimitado',
'professionalTemplates': 'Modelos profissionais',
'limited': 'Limited',
'limited': 'Limitado',
'fullTemplates': 'Modelos completos',
'professionalTerms': 'Termos profissionais',
'customTemplates': 'Modelos personalizados',
@ -702,50 +710,50 @@ const Map<String, String> ptPT = {
'askAiDesc':
'Extraia informações mais profundas das gravações de forma inteligente e gere tabelas de dados, conclusões-chave, listas de tarefas, e-mails de relatório e outros conteúdos formatados com um clique.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Além dos resumos – organize e visualize os pontos-chave com mapas mentais para uma compreensão mais eficaz do texto completo.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Descubra, partilhe e inspire-se na biblioteca de modelos criados pelos utilizadores.',
'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.',
'A transcrição de áudio suportará a identificação de oradores, restaurando de forma mais intuitiva o conteúdo de reuniões ou chamadas telefónicas. Ao mesmo tempo, o resumo será mais preciso.',
'privateCloudSyncDesc':
'As suas gravações e transcrições serão armazenadas com segurança em servidores dedicados na nuvem, com encriptação total durante o upload e o download para garantir privacidade e segurança.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'O melhoramento de voz por IA suporta várias configurações de redução de ruído, elimina inteligentemente o ruído de fundo, melhora a clareza da voz e melhora a qualidade de reprodução de áudio.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Importe facilmente ficheiros de áudio de aplicações locais ou de terceiros, como notas de voz, Google Drive, etc.',
'multipleExportFormatsDesc':
'Exporte as suas gravações de áudio, texto de transcrição e resumos em vários formatos (TXT, PDF, JPEG) conforme necessário.',
'upgradeMembership': 'Atualize a sua subscrição',
'yearlySubscription': 'Subscrição anual',
'monthlySubscription': 'Subscrição mensal',
'proMonthly': 'Pro ¥60/month',
'proMonthly': 'Pro ¥60/mês',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'Período de experimentação gratuito de 7 dias, depois ¥800/ano. Cancele a qualquer momento antes de o período terminar.',
'sevenDayTrial': 'Período de experimentação gratuito de 7 dias',
'unlimitedMonthly': 'Unlimited ¥120/mês',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'Período de experimentação gratuito de 7 dias, depois ¥1600/ano. Cancele a qualquer momento antes de o período terminar.',
'trialNote': '*Período de experimentação gratuito durante 7 dias, depois cobrado anualmente, cancele a qualquer momento.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/mês',
'subscribe': 'Subscrever',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/mês',
'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: ',
'*Após atualizar a subscrição, os dias restantes da subscrição original serão automaticamente calculados e reembolsados na sua conta de pagamento',
'buyMoreTranscriptionTime': 'Comprar mais tempo de transcrição',
'sixThousandMinutes': '6.000 minutos',
'threeThousandMinutes': '3.000 minutos',
'sixHundredMinutes': '600 minutos',
'oneHundredTwentyMinutes': '120 minutos',
'validityPeriod': '*Período de validade: ',
'validityNote':
'Ativado imediatamente após a compra, válido por 2 anos após a ativação.',
'purchase': 'Comprar',
// Meeting模块 - 录音语言
'recordLanguage': 'Idioma de gravação',
'cantonese': 'Cantonese',
'cantonese': 'Cantonês',
'sichuan': 'Dialeto de Sichuan',
'shanghai': 'Dialeto de Xangai',
@ -844,7 +852,7 @@ const Map<String, String> ptPT = {
// Agent模块 - 主界面
"Lily": "Lily",
"clearChatHistory": "Limpar Histórico de Chat",
"online": "Online",
"online": 'Online',
"ttsSpeed": "Velocidade da voz",
"ttsSpeedDefaultHint": "Padrão +25%",
"inputMessage": "Introduzir mensagem...",
@ -1095,7 +1103,7 @@ const Map<String, String> ptPT = {
"setImageQuality": "Definir qualidade da imagem",
"currentQuality": "Qualidade atual: @value%",
"setMaxSize": "Definir tamanho máximo",
"currentMaxSize": "Current: @pxpx",
"currentMaxSize": 'Atual: @pxpx',
"waitingForAction": "A aguardar ação",
"pleaseSelectImageToStart": "Selecione uma imagem para começar",
"chooseImage": "Escolher imagem",
@ -1113,9 +1121,9 @@ const Map<String, String> ptPT = {
"processingFailed": "Falha no processamento",
"imageProcessingOrTranslationFailed":
"Falha no processamento ou na tradução da imagem. Tente novamente.\nErro: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": 'O tamanho da imagem excede o limite de 4 MB',
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
'O tamanho da imagem excede 4 MB. Reduza a qualidade ou as dimensões e tente novamente',
"emptyTranslationResult":
"A API de tradução de imagens devolveu um resultado vazio",
"imageTranslationFailedTryLater":
@ -1128,11 +1136,11 @@ const Map<String, String> ptPT = {
"photoAlbumPermissionRequired":
"É necessária permissão de álbum de fotos para selecionar imagens",
"translationDetails": "Detalhes da tradução",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": 'Imagem original',
"sourceLanguage": 'Idioma de origem',
"targetLanguage": 'Idioma de destino',
"translationTime": "Tempo de tradução",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": 'Funcionalidade de partilha em desenvolvimento',
// 翻译模块 - 录音文件
"translateAudioFiles": "Traduzir Ficheiros de Áudio",
@ -1172,7 +1180,7 @@ const Map<String, String> ptPT = {
// 个人资料模块
"editProfile": "Editar Informações Pessoais",
"avatar": "Avatar",
"avatar": 'Avatar',
"nickname": "Alcunha",
"save": "Guardar",
"about": "Sobre",
@ -1184,8 +1192,8 @@ const Map<String, String> ptPT = {
'deleteAccount': 'Eliminar Conta',
'deleteAccountTips':
'Tem a certeza que quer eliminar permanentemente a sua conta? Esta ação não pode ser revertida.',
'clean': 'Clear Cache',
'cleanTips': 'Are you sure you want to clear personal cache?',
'clean': 'Limpar cache',
'cleanTips': 'Tem a certeza que quer limpar a cache pessoal?',
'networkConnectionFailed':
'Falha na ligação à rede, verifique as definições de rede e tente novamente',
'serverTemporarilyUnavailable':
@ -1248,9 +1256,9 @@ const Map<String, String> ptPT = {
'locationPermissions': 'Permissões de Localização',
'phone': 'Telefone',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'alarm': 'Alarm',
'contacts': 'Contactos',
'notification': 'Notificação',
'alarm': 'Alarme',
'calendarWrite': 'Escrever no Calendário',
'calendarFullAccess': 'Acesso Total ao Calendário',
'locationInfo': 'Informações de Localização',
@ -1296,7 +1304,7 @@ const Map<String, String> ptPT = {
'bluetoothConnectPermissionDesc': 'Usado para ligar a dispositivos Bluetooth',
'bluetoothConnectPermissionDetailDesc':
'Para ligar a dispositivos Bluetooth, é necessária permissão de ligação Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Utilizado para enviar mensagens de notificação',
'notificationPermissionDetailDesc':
'A aplicação precisa de permissão de notificações para lhe enviar alertas e mensagens importantes',
'appNeedsPermissionForFullFunction':
@ -1337,7 +1345,7 @@ const Map<String, String> ptPT = {
'A permissão de microfone foi recusada permanentemente. Para continuar a usar esta funcionalidade, vá às definições da aplicação e ative manualmente a permissão de microfone.',
'storagePermissionPermanentDenial':
'A permissão de armazenamento foi recusada permanentemente. Para continuar a usar esta funcionalidade, vá às definições da aplicação e ative manualmente a permissão de armazenamento.',
'permissionUtilNeed': 'Need ',
'permissionUtilNeed': 'Necessário ',
'permissionUtilPermission': ' Permissão',
'permissionUtilRestricted': ' Permissão restrita',
'permissionUtilRestrictedMessage':
@ -1596,17 +1604,17 @@ const Map<String, String> ptPT = {
"印地语": "Híndi",
"土耳其语": "Turco",
"马来语": "Malaio",
"孟加拉语": "Bengali",
"孟加拉语": 'Bengali',
"泰米尔语": "Tâmil",
"泰卢固语": "Telugo",
"马拉提语": "Marata",
"乌尔都语": "Urdu",
"乌尔都语": 'Urdu',
"波斯语": "Persa",
"斯瓦希里语": "Suaíli",
// 国家列表
"邮箱": "E-mail",
"中国": "China",
"中国": 'China',
"美国": "Estados Unidos",
"加拿大": "Canadá",
"俄罗斯": "Rússia",
@ -1631,7 +1639,7 @@ const Map<String, String> ptPT = {
"阿联酋": "Emirados Árabes Unidos",
"墨西哥": "México",
"巴西": "Brasil",
"阿根廷": "Argentina",
"阿根廷": 'Argentina',
"澳大利亚": "Austrália",
"新西兰": "Nova Zelândia",
"中国香港": "Hong Kong (China)",
@ -1649,16 +1657,16 @@ const Map<String, String> ptPT = {
"瑞典": "Suécia",
"挪威": "Noruega",
"波兰": "Polónia",
"秘鲁": "Peru",
"智利": "Chile",
"秘鲁": 'Peru',
"智利": 'Chile',
"哥伦比亚": "Colômbia",
"委内瑞拉": "Venezuela",
"葡萄牙": "Portugal",
"委内瑞拉": 'Venezuela',
"葡萄牙": 'Portugal',
"卢森堡": "Luxemburgo",
"爱尔兰": "Irlanda",
"冰岛": "Islândia",
"阿尔巴尼亚": "Albânia",
"马耳他": "Malta",
"马耳他": 'Malta',
"塞浦路斯": "Chipre",
"芬兰": "Finlândia",
"保加利亚": "Bulgária",
@ -1671,13 +1679,13 @@ const Map<String, String> ptPT = {
"斯洛文尼亚": "Eslovénia",
"捷克": "República Checa",
"斯洛伐克": "Eslováquia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": "Nicarágua",
"哥斯达黎加": "Costa Rica",
"哥斯达黎加": 'Costa Rica',
"巴拿马": "Panamá",
"海地": "Haiti",
"海地": 'Haiti',
"玻利维亚": "Bolívia",
"厄瓜多尔": "Equador",
"巴拉圭": "Paraguai",
@ -1690,36 +1698,36 @@ const Map<String, String> ptPT = {
"埃塞俄比亚": "Etiópia",
"肯尼亚": "Quénia",
"坦桑尼亚": "Tanzânia",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israel",
"乌干达": 'Uganda',
"孟加拉国": 'Bangladesh',
"以色列": 'Israel',
"黎巴嫩": "Líbano",
"约旦": "Jordânia",
"伊拉克": "Iraque",
"科威特": "Kuwait",
"科威特": 'Kuwait',
"巴林": "Bahrein",
"卡塔尔": "Catar",
"阿曼": "Omã",
"阿富汗": "Afeganistão",
"斯里兰卡": "Sri Lanka",
"斯里兰卡": 'Sri Lanka',
"缅甸": "Mianmar",
"尼泊尔": "Nepal",
"尼泊尔": 'Nepal',
"蒙古": "Mongólia",
"柬埔寨": "Camboja",
"老挝": "Laos",
"文莱": "Brunei",
"老挝": 'Laos',
"文莱": 'Brunei',
"东帝汶": "Timor-Leste",
"斐济": "Fiji",
"斐济": 'Fiji',
"所罗门群岛": "Ilhas Salomão",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"刚果民主共和国": 'República Democrática do Congo',
"安哥拉": 'Angola',
"苏丹": 'Sudão',
"马尔代夫": 'Maldivas',
"不丹": 'Butão',
"摩纳哥": 'Mónaco',
"圣马力诺": 'San Marino',
"牙买加": 'Jamaica',
"巴哈马": 'Bahamas',
"巴布亚新几内亚": 'Papua Nova Guiné',
"萨摩亚": 'Samoa',
};

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

@ -49,7 +49,7 @@ const Map<String, String> roRO = {
"russian": "Rusă",
"vietnamese": "Vietnameză",
"italian": "Italiană",
"hindi": "Hindi",
"hindi": 'Hindi',
"indonesian": "Indoneziană",
"thai": "Thailandeză",
"malay": "Malaeză",
@ -259,10 +259,10 @@ const Map<String, String> roRO = {
"loadFailed": "Încărcare eșuată",
"statsLoadFailedTryLater":
"Nu s-au putut încărca statisticile. Încercați din nou mai târziu.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Curățenie finalizată",
"cleanedOldData": "Date mai vechi de 90 de zile au fost șterse",
"exportFeature": "Funcție export",
"exportInDevelopment": "Exportul datelor este în curs de dezvoltare",
// 商品模块 - 通用
'availablePackages': 'Pachete disponibile',
@ -372,7 +372,7 @@ const Map<String, String> roRO = {
'subtitleDisplay': 'Subtitrări',
'transHeaderDesc1':
'Interpretare simultană în timp real și traducere de text cu voce cu latență redusă.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Potrivit pentru călătorii, afaceri, discursuri și predare.',
'translateZhEn': 'Traducere chineză–engleză',
'lowLatencyVoiceBroadcast': 'Difuzare vocală cu latență redusă',
'multiLangTextTranslation': 'Traducere text multilingvă',
@ -393,7 +393,7 @@ const Map<String, String> roRO = {
'meetingHeaderDesc1':
'Înregistrare audio, transcriere, căutare cuvinte cheie și rezumat automat pentru a crește eficiența ședințelor.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Potrivit pentru ședințe de afaceri, notițe de clasă și minute de interviu.',
'meetingAutoRecording': 'Înregistrare automată și segmentare',
'meetingSpeakerTagging': 'Etichetare vorbitori',
'meetingLongAudioTranscription': 'Transcriere audio lung',
@ -422,18 +422,18 @@ const Map<String, String> roRO = {
'Beneficiile reale depind de detaliile pachetului și se pot schimba odată cu versiunile.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI De bază 100',
'ai_002_name': 'AI De bază 500',
'ai_003_name': 'AI De bază 1000',
'meet_001_name': 'Şedință De bază 100',
'meet_002_name': 'Şedință De bază 500',
'meet_003_name': 'Şedință De bază 1000',
'trans_001_name': 'Traducere Basic 100',
'trans_002_name': 'Traducere Basic 500',
'trans_003_name': 'Traducere Basic 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Include 100 utilizări. Acces la funcțiile de bază AI.',
'ai_002_desc': 'Include 500 utilizări. Acces la funcțiile de bază AI.',
'ai_003_desc': 'Include 1000 utilizări. Acces la funcțiile de bază AI.',
'meet_001_desc': 'Include 100 înregistrări/transcrieri de ședințe.',
'meet_002_desc': 'Include 500 înregistrări/transcrieri de ședințe.',
'meet_003_desc': 'Include 1000 înregistrări/transcrieri de ședințe.',
@ -442,46 +442,46 @@ const Map<String, String> roRO = {
'trans_003_desc': 'Include 1000 traduceri (voce/text).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Aplicație: VoiTrans · Furnizat de: VoiTrans',
'iapCustomerServiceQQLabel': 'Serviciu clienți IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'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, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Următor',
'sayLilyHint': 'Spune “Lily Lily” la microfon',
'imHere': 'Sunt aici~',
'guideWelcomeWakeAI': 'Bun venit la Voitrans! Mai întâi, trezește-ți AI-ul “Lily”.',
'aiReplyCompleted': 'Lily a terminat răspunsul!',
'aiThinking': 'Lily se gândește…',
'guideAwakenSuccess': 'Minunat! Lily s-a trezit—cere-i ajutorul.',
'confirmInput': 'Confirmă introducerea',
'guideClickSendPrefix': 'Apasă trimitere, ',
'guideWeatherStart': 'Spune-i lui Lily: “Cum este vremea astăzi?”',
'guideWeatherInput': 'Cum este vremea astăzi?',
'guideWeatherSend': 'Lily va raporta vremea în timp real',
'guideWeatherEnd': 'Lily poate raporta vremea live—încearcă alte comenzi',
'guideMusicStart': 'Spune-i lui Lily: “Pune ceva muzică rock”',
'guideMusicInput': 'Pune ceva muzică rock',
'guideMusicSend': 'Lily va găsi muzică pentru tine',
'guideMusicEnd': 'Lily a găsit muzică—încearcă alte comenzi',
'guideNavStart': 'Spune-i lui Lily: “Navighează la Aeroportul Shenzhen”',
'guideNavInput': 'Navighează la Aeroportul Shenzhen',
'guideNavSend': 'Lily va planifica ruta',
'guideNavEnd': 'Navigare setată—încearcă alte comenzi',
'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',
'Spune-i lui Lily: “Creează un memento de ședință pentru mâine la ora 15:00”',
'guideMeetingInput': 'Creează un memento de ședință pentru mâine la ora 15:00',
'guideMeetingSend': 'Lily va crea un memento de ședință',
'guideMeetingEnd': 'Memento creat—încearcă alte comenzi',
'guidePhoneStart': 'Spune-i lui Lily: “Sună mama”',
'guidePhoneInput': 'Sună mama',
'guidePhoneSend': 'Lily va efectua apelul',
'guidePhoneEnd': 'Apel efectuat—încearcă alte comenzi',
'guideSmsStart': 'Spune-i lui Lily: “Trimite-i un mesaj tatei: Vin acasă la cină”',
'guideSmsInput': 'Trimite-i un mesaj tatei: Vin acasă la cină',
'guideSmsSend': 'Lily va trimite mesajul',
'guideSmsEnd': 'Mesaj trimis—controlul vocal este convenabil',
// Meeting模块 - 首页与导航
"startMeeting": "Începe ședința",
@ -510,9 +510,9 @@ const Map<String, String> roRO = {
'aiPenNotFound': 'Dispozitivul AI PEN nu a fost găsit',
'connectedToAiPen': 'Conectat la dispozitivul AI PEN',
'checkingNewFiles': 'Se verifică fișiere noi pentru import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Se pornește Wi-Fi...',
'newFilesDetected': 'Fișiere noi detectate, se pregătește importul',
'noNewFiles': 'Nu există fișiere noi de importat',
'connectingWifi': 'Se conectează la Wi‑Fi...',
'wifiConnected': 'Wi‑Fi conectat cu succes',
'downloadingFiles': 'Se descarcă fișiere...',
@ -527,7 +527,7 @@ const Map<String, String> roRO = {
'liveRecording': 'Înregistrare live',
'audioVideoRecording': 'Înregistrare audio/video',
'callRecording': 'Înregistrare apel',
'importAudio': 'Import Audio',
'importAudio': 'Importare audio',
'meetingRecordExitTitle': 'Ieși din înregistrare', // 退出录音
'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Încheie și salvează', // 结束录音并保存
@ -550,30 +550,30 @@ const Map<String, String> roRO = {
'Pentru a afișa bara flotantă de înregistrare (cronometru/pauză/continuă) în timpul înregistrării, avem nevoie de permisiunea de suprapunere.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nu se pot deschide automat setările de sistem. Deschide Setări și activează manual permisiunea de suprapunere.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Se transcrie...',
'summarizing': 'Se rezumă...',
'analyzing': 'Se analizează...',
'summaryComplete': 'Rezumat finalizat',
'generate': 'Generează',
'overview': 'Prezentare generală',
'transcription': 'Transcriere',
'summary': 'Rezumat',
'mindMap': 'Hartă mentală',
'editSpeaker': 'Editează',
'nameSpeaker': 'Denumiți vorbitorul',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Regenerează rezumatul',
'dateAndTime': 'Dată și oră',
'location': 'Locație',
'attendees': 'Participanți',
'inputLocation': 'Introduceți locația',
'inputAttendees': 'Introduceți participanții',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Selectați șablonul de rezumat',
'useThisTemplate': 'Folosiți acest șablon',
'lastUsed': 'Ultima utilizare',
'create': 'Creează',
'templateDetails': 'Detalii șablon',
'tag': 'Etichetă',
@ -590,24 +590,24 @@ const Map<String, String> roRO = {
'inputDescHint': 'Vă rugăm să introduceți descrierea',
'custom': 'Personalizat',
'pleaseEnter': 'Vă rugăm introduceți',
'viewAll': 'View All',
'viewAll': 'Vedeți toate',
'recordingLanguage': 'Limba înregistrării',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Chineză mandarină (simplificată)',
'meetingGenerateNow': 'Generează acum',
'keyEventsAnalyzed': 'Au fost analizate {count} evenimente cheie.',
'aiAnalysisDesc':
'Analiza AI identifică evenimente-cheie în înregistrări, permițându-vă să selectați evenimente importante pentru generarea AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Se importă...',
'batchImporting': 'Import în masă...',
'importingLocalRecordings': 'Se importă înregistrări locale...',
'importFailed': 'Importul fișierului a eșuat: {filePath}, eroare: {error}',
'importSuccess': 'Au fost importate cu succes {count} înregistrări locale',
'importError': 'Import eșuat: {error}',
'pleaseSelectAudioFile': 'Vă rugăm să selectați un fișier audio',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Partajează audio ședință',
'shareComplete': 'Partajare finalizată!',
'shareFailed': 'Partajarea a eșuat: {error}',
'fileProcessingFailed':
'Procesarea fișierului a eșuat: {filePath}, eroare: {error}',
@ -664,88 +664,88 @@ const Map<String, String> roRO = {
'enabled': 'Activat',
'disabled': 'Dezactivat',
'myVoitransDevice': 'Dispozitivul meu VOITRANS',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Ajutor și feedback',
'aboutVoitrans': 'Despre VOITRANS',
'meetingDays': 'Zile',
'meetingHours': 'Ore',
'voitransAiMember': 'Membru AI Voitrans',
'unlockStarterMember': 'Deblochează abonamentul Starter',
'bindDeviceToActivate':
'Asociați dispozitivul Voitrans pentru a activa abonamentul Starter',
'unlockNow': 'Unlock Now',
'unlockNow': 'Deblochează acum',
// 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',
'comparison': 'Comparație',
'detailedInfo': 'Informații detaliate',
'monthlyTranscriptionTime': 'Timp lunar de transcriere',
'unlimited': 'Nelimitat',
'professionalTemplates': 'Șabloane profesionale',
'limited': 'Limitat',
'fullTemplates': 'Șabloane complete',
'professionalTerms': 'Termeni profesioniști',
'customTemplates': 'Șabloane personalizate',
'visualMindMap': 'Hartă mentală vizuală',
'speakerIdentification': 'Identificarea vorbitorului',
'aiVoiceEnhancement': 'Îmbunătățire vocală AI',
'audioImport': 'Import audio',
'multipleExportFormats': 'Formate multiple de export',
'professionalSummaryTemplates': 'Șabloane profesionale de rezumat',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Design de șabloane profesionale pentru a îmbunătăți eficiența muncii tale. Personalizat în funcție de nevoile industriei.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Poți personaliza prompturile de rezumat în funcție de nevoile tale și să le folosești pentru a genera rezumatele necesare.',
'askAiDesc':
'Extrage inteligent informații mai profunde din înregistrări și generează cu un singur clic tabele de date, concluzii-cheie, liste de sarcini, e-mailuri de raport și alt conținut formatat.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Dincolo de rezumate - organizează și vizualizează punctele cheie cu hărți mentale pentru o înțelegere mai eficientă a întregului text.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Descoperă, partajează și inspiră-te din biblioteca de șabloane creată de utilizatori.',
'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.',
'Transcrierea audio va suporta identificarea vorbitorului, restabilind mai intuitiv conținutul ședințelor sau apelurilor. Totodată, rezumatul va fi mai precis.',
'privateCloudSyncDesc':
'Înregistrările și transcrierile sunt stocate în siguranță pe servere cloud dedicate, cu criptare completă la încărcare și descărcare pentru a asigura confidențialitatea și securitatea.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'Îmbunătățirea vocală AI suportă multiple setări de reducere a zgomotului, elimină inteligent zgomotul de fundal, îmbunătățește claritatea vocii și calitatea redării audio.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Importați cu ușurință fișiere audio din aplicații locale sau terțe, cum ar fi notițele vocale, Google Drive etc.',
'multipleExportFormatsDesc':
'Exportați înregistrările audio, textul transcris și rezumatele în diverse formate (TXT, PDF, JPEG) după nevoie.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Actualizați-vă abonamentul',
'yearlySubscription': 'Abonament anual',
'monthlySubscription': 'Abonament lunar',
'proMonthly': 'Pro ¥60/lună',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'Perioadă de probă gratuită de 7 zile, apoi ¥800/an. Anulați oricând înainte de sfârșitul perioadei de probă.',
'sevenDayTrial': 'Perioadă de probă gratuită de 7 zile',
'unlimitedMonthly': 'Nelimitat ¥120/lună',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'Perioadă de probă gratuită de 7 zile, apoi ¥1600/an. Anulați oricând înainte de sfârșitul perioadei de probă.',
'trialNote': '*Probă gratuită 7 zile, apoi facturat anual, anulați oricând.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'proMonthlyPrice': '¥120/lună',
'subscribe': 'Abonați-vă',
'unlimitedPrice': 'Nelimitat ¥198',
'unlimitedMonthlyPrice': '¥198/lună',
'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: ',
'*După actualizarea abonamentului, zilele rămase din abonamentul inițial vor fi calculate automat și rambursate în contul de plată',
'buyMoreTranscriptionTime': 'Cumpărați mai mult timp de transcriere',
'sixThousandMinutes': '6.000 de minute',
'threeThousandMinutes': '3.000 de minute',
'sixHundredMinutes': '600 de minute',
'oneHundredTwentyMinutes': '120 de minute',
'validityPeriod': '*Perioadă de valabilitate: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Activat imediat după achiziție, valabil 2 ani de la activare.',
'purchase': 'Achiziționați',
// Meeting模块 - 录音语言
'recordLanguage': 'Limba înregistrării',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Cantoneză',
'sichuan': 'Dialect Sichuan',
'shanghai': 'Dialect Shanghai',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Limbă necunoscută',
'analysisFailed': 'Analiza a eșuat, vă rugăm să reîncercați mai târziu',
'transcriptionFailed':
'Transcrierea a eșuat, vă rugăm să reîncercați mai târziu',
@ -824,7 +824,7 @@ const Map<String, String> roRO = {
"deviceTypeClassicBluetoothHeadset": "Căști Bluetooth clasice",
"deviceTypeBleBluetoothHeadset": "Căști Bluetooth BLE",
"deviceTypeSmartVoiceRecorder": "Reportofon inteligent",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeSmartEye": 'Ochelari inteligenți',
"unbind": "Deleagă",
"noDevicesBound": "Nu există dispozitive asociate încă",
"pleaseBindDeviceFirst":
@ -839,7 +839,7 @@ const Map<String, String> roRO = {
// Agent模块 - 主界面
"Lily": "Lily",
"clearChatHistory": "Șterge istoricul chatului",
"online": "Online",
"online": 'Online',
"ttsSpeed": "Viteza vocii",
"ttsSpeedDefaultHint": "Implicit +25%",
"inputMessage": "Introduceți mesaj...",
@ -928,9 +928,9 @@ const Map<String, String> roRO = {
// Agent模块 - 工具调用
'toolCall': 'Apel instrument',
'noResult': 'Niciun rezultat',
'noToolCallContentToCopy': 'Nu exista continut de apel instrument de copiat',
'noToolCallContentToCopy': 'Nu există conținut de apel instrument de copiat',
'toolCallDetails': 'Detalii apel instrument:',
'toolCallContentCopied': 'Continut copiat in clipboard',
'toolCallContentCopied': 'Conținut copiat în clipboard',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Iată câteva melodii recomandate:',
@ -1108,9 +1108,9 @@ const Map<String, String> roRO = {
"processingFailed": "Procesare eșuată",
"imageProcessingOrTranslationFailed":
"Procesarea imaginii sau traducerea a eșuat. Încercați din nou.\nEroare: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Dimensiunea imaginii depășește limita de 4MB",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Dimensiunea imaginii depășește 4MB. Reduceți calitatea sau dimensiunile și reîncercați",
"emptyTranslationResult":
"API-ul de traducere a imaginii a returnat un rezultat gol",
"imageTranslationFailedTryLater":
@ -1127,7 +1127,7 @@ const Map<String, String> roRO = {
"sourceLanguage": "Limba sursă",
"targetLanguage": "Limba țintă",
"translationTime": "Timp de traducere",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": "Funcția de partajare este în curs de dezvoltare",
// 翻译模块 - 录音文件
"translateAudioFiles": "Tradu fișierele audio",
@ -1167,7 +1167,7 @@ const Map<String, String> roRO = {
// 个人资料模块
"editProfile": "Editează informațiile personale",
"avatar": "Avatar",
"avatar": 'Avatar',
"nickname": "Pseudonim",
"save": "Salvează",
"about": "Despre",
@ -1180,8 +1180,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?',
'clean': 'Șterge memoria cache',
'cleanTips': 'Sigur doriți să ștergeți memoria cache personală?',
'networkConnectionFailed':
'Conexiunea la rețea a eșuat, verificați setările de rețea și reîncercați',
'serverTemporarilyUnavailable':
@ -1589,22 +1589,22 @@ const Map<String, String> roRO = {
"泰语": "Thailandeză",
"越南语": "Vietnameză",
"印尼语": "Indoneziană",
"印地语": "Hindi",
"印地语": 'Hindi',
"土耳其语": "Turcă",
"马来语": "Malaeză",
"孟加拉语": "Bengali",
"孟加拉语": 'Bengali',
"泰米尔语": "Tamilă",
"泰卢固语": "Telugu",
"马拉提语": "Marathi",
"乌尔都语": "Urdu",
"泰卢固语": 'Telugu',
"马拉提语": 'Marathi',
"乌尔都语": 'Urdu',
"波斯语": "Persană",
"斯瓦希里语": "Swahili",
"斯瓦希里语": 'Swahili',
// 国家列表
"邮箱": "E-mail",
"中国": "China",
"中国": 'China',
"美国": "SUA",
"加拿大": "Canada",
"加拿大": 'Canada',
"俄罗斯": "Rusia",
"英国": "Regatul Unit",
"德国": "Germania",
@ -1616,19 +1616,19 @@ const Map<String, String> roRO = {
"土耳其": "Turcia",
"日本": "Japonia",
"韩国": "Coreea de Sud",
"新加坡": "Singapore",
"新加坡": 'Singapore',
"马来西亚": "Malaezia",
"泰国": "Thailanda",
"越南": "Vietnam",
"印度": "India",
"巴基斯坦": "Pakistan",
"越南": 'Vietnam',
"印度": 'India',
"巴基斯坦": 'Pakistan',
"菲律宾": "Filipine",
"印度尼西亚": "Indonezia",
"阿联酋": "EAU",
"墨西哥": "Mexic",
"巴西": "Brazilia",
"阿根廷": "Argentina",
"澳大利亚": "Australia",
"阿根廷": 'Argentina',
"澳大利亚": 'Australia',
"新西兰": "Noua Zeelandă",
"中国香港": "Hong Kong (China)",
"中国澳门": "Macao (China)",
@ -1640,82 +1640,82 @@ const Map<String, String> roRO = {
"匈牙利": "Ungaria",
"罗马尼亚": "România",
"瑞士": "Elveția",
"奥地利": "Austria",
"奥地利": 'Austria',
"丹麦": "Danemarca",
"瑞典": "Suedia",
"挪威": "Norvegia",
"波兰": "Polonia",
"秘鲁": "Peru",
"智利": "Chile",
"秘鲁": 'Peru',
"智利": 'Chile',
"哥伦比亚": "Columbia",
"委内瑞拉": "Venezuela",
"委内瑞拉": 'Venezuela',
"葡萄牙": "Portugalia",
"卢森堡": "Luxemburg",
"爱尔兰": "Irlanda",
"冰岛": "Islanda",
"阿尔巴尼亚": "Albania",
"马耳他": "Malta",
"阿尔巴尼亚": 'Albania',
"马耳他": 'Malta',
"塞浦路斯": "Cipru",
"芬兰": "Finlanda",
"保加利亚": "Bulgaria",
"保加利亚": 'Bulgaria',
"立陶宛": "Lituania",
"拉脱维亚": "Letonia",
"爱沙尼亚": "Estonia",
"爱沙尼亚": 'Estonia',
"乌克兰": "Ucraina",
"塞尔维亚": "Serbia",
"塞尔维亚": 'Serbia',
"克罗地亚": "Croația",
"斯洛文尼亚": "Slovenia",
"斯洛文尼亚": 'Slovenia',
"捷克": "Cehia",
"斯洛伐克": "Slovacia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"危地马拉": 'Guatemala',
"萨尔瓦多": 'El Salvador',
"洪都拉斯": 'Honduras',
"尼加拉瓜": 'Nicaragua',
"哥斯达黎加": 'Costa Rica',
"巴拿马": 'Panama',
"海地": 'Haiti',
"玻利维亚": 'Bolivia',
"厄瓜多尔": 'Ecuador',
"巴拉圭": 'Paraguay',
"乌拉圭": 'Uruguay',
"摩洛哥": "Maroc",
"阿尔及利亚": "Algeria",
"突尼斯": "Tunisia",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"阿尔及利亚": 'Algeria',
"突尼斯": 'Tunisia',
"尼日利亚": 'Nigeria',
"加纳": 'Ghana',
"埃塞俄比亚": "Etiopia",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israel",
"肯尼亚": 'Kenya',
"坦桑尼亚": 'Tanzania',
"乌干达": 'Uganda',
"孟加拉国": 'Bangladesh',
"以色列": 'Israel',
"黎巴嫩": "Liban",
"约旦": "Iordania",
"伊拉克": "Irak",
"科威特": "Kuweit",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"巴林": 'Bahrain',
"卡塔尔": 'Qatar',
"阿曼": 'Oman',
"阿富汗": "Afganistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"蒙古": "Mongolia",
"斯里兰卡": 'Sri Lanka',
"缅甸": 'Myanmar',
"尼泊尔": 'Nepal',
"蒙古": 'Mongolia',
"柬埔寨": "Cambodgia",
"老挝": "Laos",
"文莱": "Brunei",
"老挝": 'Laos',
"文莱": 'Brunei',
"东帝汶": "Timorul de Est",
"斐济": "Fiji",
"斐济": 'Fiji',
"所罗门群岛": "Insulele Solomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"刚果民主共和国": "Republica Democratică Congo",
"安哥拉": 'Angola',
"苏丹": 'Sudan',
"马尔代夫": "Maldive",
"不丹": 'Bhutan',
"摩纳哥": 'Monaco',
"圣马力诺": 'San Marino',
"牙买加": 'Jamaica',
"巴哈马": 'Bahamas',
"巴布亚新几内亚": "Papua Noua Guinee",
"萨摩亚": 'Samoa',
};

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

@ -386,21 +386,21 @@ const Map<String, String> ruRU = {
// 商品模块 - 会议商品页
'meetingRecording': 'Запись встреч',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Транскрипция и резюме',
'keywordSearch': 'Поиск по ключевым словам',
'collaborationSharing': 'Совместная работа и обмен',
'meetingHeaderDesc1':
'Запись аудио, транскрипция, поиск по ключевым словам и автосводка.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Подходит для деловых встреч, конспектов занятий и протоколов интервью.',
'meetingAutoRecording': 'Автозапись и сегментация',
'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',
'meetingSpeakerTagging': 'Маркировка говорящих',
'meetingLongAudioTranscription': 'Транскрипция длинного аудио',
'meetingKeyPointSummary': 'Извлечение ключевых моментов',
'meetingTopicNameSearch': 'Поиск по теме/имени',
'meetingTimelineJump': 'Переход по временной шкале',
'meetingExportSummary': 'Экспорт протокола',
'meetingMultiPlatformShare': 'Обмен на разных платформах',
'meetingDisclaimer':
'Используйте в тихой обстановке; качество зависит от микрофона и сети.',
@ -471,18 +471,19 @@ const Map<String, String> ruRU = {
'guideNavSend': 'Lily спланирует маршрут',
'guideNavEnd': 'Навигация настроена — попробуйте другие команды',
'guideMeetingStart':
'Tell Lily: “Create a meeting reminder for 3pm tomorrow”',
'guideMeetingInput': 'Create a meeting reminder for 3pm tomorrow',
'guideMeetingSend': 'Lily will create a meeting reminder',
'guideMeetingEnd': 'Reminder created—try other commands',
'guidePhoneStart': 'Tell Lily: “Call Mom”',
'guidePhoneInput': 'Call Mom',
'guidePhoneSend': 'Lily will make the call',
'guidePhoneEnd': 'Call placed—try other commands',
'guideSmsStart': 'Tell Lily: “Send Dad a text: I’ll be home for dinner”',
'guideSmsInput': 'Text Dad: I’ll be home for dinner',
'guideSmsSend': 'Lily will send the message',
'guideSmsEnd': 'Message sent—voice control is convenient',
'Скажите Lily: «Создай напоминание о встрече на завтра в 15:00»',
'guideMeetingInput': 'Создай напоминание о встрече на завтра в 15:00',
'guideMeetingSend': 'Lily создаст напоминание о встрече',
'guideMeetingEnd': 'Напоминание создано — попробуйте другие команды',
'guidePhoneStart': 'Скажите Lily: «Позвони маме»',
'guidePhoneInput': 'Позвони маме',
'guidePhoneSend': 'Lily совершит звонок',
'guidePhoneEnd': 'Звонок сделан — попробуйте другие команды',
'guideSmsStart':
'Скажите Lily: «Отправь папе сообщение: Я буду дома к ужину»',
'guideSmsInput': 'Напиши папе: Я буду дома к ужину',
'guideSmsSend': 'Lily отправит сообщение',
'guideSmsEnd': 'Сообщение отправлено — голосовое управление удобно',
// Meeting模块 - 首页与导航
"startMeeting": "Начать встречу",
@ -551,30 +552,30 @@ const Map<String, String> ruRU = {
'Чтобы показывать плавающую панель записи (таймер/пауза/продолжить) во время записи, нам нужно разрешение на наложение.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Не удалось автоматически открыть системные настройки. Пожалуйста, откройте Настройки и вручную включите разрешение на наложение.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Транскрипция...',
'summarizing': 'Создание резюме...',
'analyzing': 'Анализ...',
'summaryComplete': 'Резюме готово',
'generate': 'Создать',
'overview': 'Обзор',
'transcription': 'Транскрипция',
'summary': 'Резюме',
'mindMap': 'Интеллект-карта',
'editSpeaker': 'Редактировать',
'nameSpeaker': 'Назвать говорящего',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Пересоздать резюме',
'dateAndTime': 'Дата и время',
'location': 'Место',
'attendees': 'Участники',
'inputLocation': 'Введите место',
'inputAttendees': 'Введите участников',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Выбрать шаблон резюме',
'useThisTemplate': 'Использовать этот шаблон',
'lastUsed': 'Последнее использование',
'create': 'Создать',
'templateDetails': 'Детали шаблона',
'tag': 'Тег',
@ -591,153 +592,153 @@ const Map<String, String> ruRU = {
'inputDescHint': 'Пожалуйста, введите описание',
'custom': 'Пользовательский',
'pleaseEnter': 'Пожалуйста, введите',
'viewAll': 'View All',
'viewAll': 'Показать все',
'recordingLanguage': 'Язык записи',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Китайский мандарин (упрощённый)',
'meetingGenerateNow': 'Создать сейчас',
'keyEventsAnalyzed': 'Проанализировано {count} ключевых событий.',
'aiAnalysisDesc':
'AI‑анализ определяет ключевые события в записи, позволяя выбрать важные события для генерации.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Импорт...',
'batchImporting': 'Пакетный импорт...',
'importingLocalRecordings': 'Импорт локальных записей...',
'importFailed': 'Не удалось импортировать файл: {filePath}, ошибка: {error}',
'importSuccess': 'Успешно импортировано локальных записей: {count}',
'importError': 'Импорт не удался: {error}',
'pleaseSelectAudioFile': 'Пожалуйста, выберите аудиофайл',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Поделиться аудио встречи',
'shareComplete': 'Общий доступ открыт!',
'shareFailed': 'Не удалось поделиться: {error}',
'fileProcessingFailed':
'Не удалось обработать файл: {filePath}, ошибка: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Сохранить интеллект-карту',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'Поделиться интеллект-картой',
'shareSuccess': 'Успешно поделились',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Спросить AI...',
'askAIPrompt': 'Чем я могу помочь вам сегодня?',
'continueAsk': 'Продолжить вопрос',
'todoList': 'Список задач',
'extractConclusion': 'Извлечь вывод',
'generateKeyIndicators': 'Создать ключевые показатели',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Поделиться ссылкой',
'copyTranscript': 'Скопировать транскрипт',
'copySummary': 'Скопировать резюме',
'exportAudio': 'Экспорт аудио',
'exportTranscript': 'Экспорт транскрипта',
'shareMeetingAudio': 'Поделиться аудио встречи',
'exportSummary': 'Экспорт резюме',
'exportAs': 'Экспортировать как',
'exportingPDF': 'Экспорт PDF...',
'export': 'Экспорт',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Применить ко всем абзацам этого говорящего',
'summaryWillBeUpdatedAutomatically':
'Сводка будет автоматически обновляться на основе шаблона',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Назвать текущего говорящего',
'recentlyUsedNames': 'Недавно использованные имена',
'applyToCurrentParagraph': 'Применить к текущему абзацу',
'totalTime': 'Общее время',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Говорящие в резюме будут обновлены автоматически',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'Синхронизировать с облаком',
'syncToCloudTip':
'Автоматически синхронизируйте записи с облаком — вы сможете воспроизводить, управлять и делиться ими через любое приложение VOITRANS или VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'syncToVoitransApp': 'Синхронизировать приложение VOITRANS',
'transcriptionRecord': 'Запись транскрипции',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Записи транскрипции',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'templateCommunity': 'Сообщество шаблонов',
'comingSoon': 'Скоро',
'integration': 'Интеграция',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Включено',
'disabled': 'Выключено',
'myVoitransDevice': 'Моё устройство VOITRANS',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Помощь и отзывы',
'aboutVoitrans': 'О VOITRANS',
'meetingDays': 'Дней',
'meetingHours': 'Часов',
'voitransAiMember': 'Подписчик Voitrans AI',
'unlockStarterMember': 'Разблокировать стартовую подписку',
'bindDeviceToActivate':
'Привяжите устройство Voitrans, чтобы активировать подписку Starter',
'unlockNow': 'Unlock Now',
'unlockNow': 'Разблокировать сейчас',
// 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',
'comparison': 'Сравнение',
'detailedInfo': 'Подробная информация',
'monthlyTranscriptionTime': 'Ежемесячное время транскрипции',
'unlimited': 'Неограниченно',
'professionalTemplates': 'Профессиональные шаблоны',
'limited': 'Ограниченно',
'fullTemplates': 'Полные шаблоны',
'professionalTerms': 'Профессиональные термины',
'customTemplates': 'Пользовательские шаблоны',
'visualMindMap': 'Визуальная интеллект-карта',
'speakerIdentification': 'Идентификация говорящих',
'aiVoiceEnhancement': 'Улучшение голоса с AI',
'audioImport': 'Импорт аудио',
'multipleExportFormats': 'Несколько форматов экспорта',
'professionalSummaryTemplates': 'Профессиональные шаблоны резюме',
'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':
'Умно извлекайте более глубокую информацию из записей, одним нажатием создавайте таблицы данных, ключевые выводы обсуждения, списки дел, письма‑отчеты и другой форматированный контент.',
'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':
'Ваши записи и транскрипции будут надежно храниться на выделенных облачных серверах с полным шифрованием при загрузке и скачивании для обеспечения конфиденциальности и безопасности.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'Улучшение голоса с AI поддерживает несколько настроек шумоподавления, интеллектуально устраняет фоновый шум, улучшает чёткость голоса и качество воспроизведения аудио.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Легко импортируйте аудиофайлы из локальных или сторонних приложений, таких как голосовые заметки, Google Drive и т.д.',
'multipleExportFormatsDesc':
'Экспортируйте аудиозаписи, текст транскрипции и сводки в разных форматах (TXT, PDF, JPEG) под ваши задачи.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Обновить подписку',
'yearlySubscription': 'Годовая подписка',
'monthlySubscription': 'Ежемесячная подписка',
'proMonthly': 'Pro ¥60/мес.',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'7-дневная бесплатная пробная версия, затем ¥800/год. Отмените до окончания пробного периода.',
'sevenDayTrial': '7-дневная бесплатная пробная версия',
'unlimitedMonthly': 'Unlimited ¥120/мес.',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'7-дневная бесплатная пробная версия, затем ¥1600/год. Отмените до окончания пробного периода.',
'trialNote': '*Бесплатная пробная версия на 7 дней, затем ежегодная оплата, отмените в любое время.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/мес.',
'subscribe': 'Подписаться',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/мес.',
'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: ',
'*После обновления подписки оставшиеся дни исходной подписки будут автоматически пересчитаны и возвращены на ваш платёжный счёт',
'buyMoreTranscriptionTime': 'Купить больше времени транскрипции',
'sixThousandMinutes': '6 000 минут',
'threeThousandMinutes': '3 000 минут',
'sixHundredMinutes': '600 минут',
'oneHundredTwentyMinutes': '120 минут',
'validityPeriod': '*Срок действия: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Активируется сразу после покупки, действует 2 года с момента активации.',
'purchase': 'Купить',
// Meeting模块 - 录音语言
'recordLanguage': 'Язык записи',

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

@ -219,7 +219,7 @@ const Map<String, String> skSK = {
"scene": "Scenár",
// 用量统计模块
"aiChat": "AI Chat",
"aiChat": "AI chat",
"translationStats": "Štatistika prekladu",
"meetingStats": "Štatistika stretnutí",
"today": "Dnes",
@ -238,36 +238,36 @@ const Map<String, String> skSK = {
"translationApi": "API prekladu",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"dataVolumeStats": "Štatistika objemu dát",
"sourceTextCharacters": "Znaky zdrojového textu",
"ttsTextCharacters": "Znaky TTS textu",
"effectiveAudioDuration": "Efektívna dĺžka zvuku",
"totalSessionDuration": "Celková dĺžka relácie",
"costStats": "Štatistika nákladov",
"estimatedCost": "Odhadované náklady",
"dailyCostThreshold": "Denný limit nákladov",
"monthlyCostThreshold": "Mesačný limit nákladov",
"usageBehaviorStats": "Štatistika správania pri používaní",
"mostUsedLanguagePair": "Najpoužívanejší jazykový pár",
"mostUsedMode": "Najpoužívanejší režim",
"asrApiCalls": "Volania ASR",
"totalAudioDuration": "Celková dĺžka zvuku",
"audioFileSize": "Veľkosť zvukového súboru",
"transcriptBytes": "Bajty prepisu",
"loadFailed": "Načítanie zlyhalo",
"statsLoadFailedTryLater":
"Štatistiky sa nepodarilo načítať. Skúste to znova neskôr.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Čistenie dokončené",
"cleanedOldData": "Vyčistené dáta staršie ako 90 dní",
"exportFeature": "Funkcia exportu",
"exportInDevelopment": "Export dát je vo vývoji",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'Dostupné balíky',
'remainingQuota': 'Zostávajúci limit',
'totalQuota': 'Celkový limit',
'remaining': 'Zostáva',
'featureDescription': 'Popis funkcie',
'paymentSuccess': 'Platba úspešná',
'paymentFailed': 'Platba zlyhala',
'gotIt': 'Rozumiem',
@ -326,109 +326,109 @@ const Map<String, String> skSK = {
'alipayPaymentLaunchFailed': 'Spustenie Alipay zlyhalo',
'cannotLaunchAlipayPayment': 'Nie je možné spustiť Alipay',
'alipayPaymentException': 'Výnimka Alipay',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "Nedostatok bodov",
"insufficientBalanceDesc":
"Nedostatočný zostatok, prejdite na príslušnú stránku dobitia a dobite si.",
"recharge": "Go to Recharge",
"recharge": "Prejsť na dobitie",
"aiMemberExpiredDesc":
"Členstvo AI vypršalo, prejdite na stránku dobitia členstva a obnovte ho.",
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Hudba a odporúčania',
'navigationAndRoutes': 'Navigácia a trasy',
'nearbySearch': 'Vyhľadávanie v okolí',
'newsInformation': 'Správy',
'communicationAssistant': 'Komunikačný asistent',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Dlhší limit konverzácie, viac volaní nástrojov, rozšírená dĺžka kontextu.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Vhodné pre Q&A agenta, sumarizáciu, analýzu a vykonávanie úloh.',
'musicSearchPlaybackControl': 'Vyhľadávanie v knižnici hudby a ovládanie prehrávania',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Inteligentný playlist a odporúčania podobných skladieb',
'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',
'Plánovanie trasy a vyhýbanie sa zápcham',
'voiceBroadcastAndWaypoints': 'Hlasové vysielanie a nastavenie bodov trasy',
'realTimeWeatherForecast': 'Počasie v reálnom čase a predpoveď',
'clothingAdviceAndTravelReminders': 'Odporúčania na oblečenie a cestovné upozornenia',
'poiSearchFoodGasParking': 'Vyhľadávanie POI: reštaurácie / čerpacie stanice / parkovanie',
'ratingsHoursAndDirectRoutes': 'Hodnotenia, otváracie hodiny a priama navigácia',
'hotNewsAndTopicOverview': 'Najnovšie správy a prehľad tém',
'longArticleSummariesAndKeyPoints': 'Zhrnutia dlhých článkov a kľúčové body',
'helpCallAndSMS': 'Pomoc s hovormi a SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Šablónové správy a pripomienky v pláne',
'aiDisclaimer':
'Funkcie závisia od povolení zariadenia, dostupnosti služby a sieťových podmienok.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Prepis v reálnom čase',
'sceneLexicon': 'Scenárový slovník',
'subtitleDisplay': 'Titulky',
'transHeaderDesc1':
'Simultánne tlmočenie a textový preklad v reálnom čase s nízkou latenciou hlasu.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Vhodné pre cestovanie, obchod, prejavy a výučbu.',
'translateZhEn': 'Preklad čínština–angličtina',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'lowLatencyVoiceBroadcast': 'Hlasové vysielanie s nízkou latenciou',
'multiLangTextTranslation': 'Viacjazyčný textový preklad',
'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',
'Optimalizácia terminológie a zachovanie kontextu',
'lexiconTourBusinessLife': 'Slovníky cestovanie/obchod/život',
'personalVocabularyMemory': 'Osobná pamäť slovnej zásoby',
'conversationSubtitleLargeText': 'Titulky konverzácie / Režim veľkého textu',
'colorHighContrast': 'Vysoký farebný kontrast',
'transDisclaimer':
'Výkon prekladu závisí od mikrofónu, latencie siete a okolitého hluku.',
// 商品模块 - 会议商品页
'meetingRecording': 'Záznam stretnutia',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Prepis a zhrnutie',
'keywordSearch': 'Vyhľadávanie kľúčových slov',
'collaborationSharing': 'Spolupráca a zdieľanie',
'meetingHeaderDesc1':
'Nahrávanie zvuku, prepis, vyhľadávanie kľúčových slov a automatické zhrnutie na zvýšenie efektivity stretnutí.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Vhodné pre obchodné stretnutia, poznámky z prednášok a zápisnice z rozhovorov.',
'meetingAutoRecording': 'Automatické nahrávanie a segmentácia',
'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',
'meetingSpeakerTagging': 'Označovanie rečníkov',
'meetingLongAudioTranscription': 'Prepis dlhého zvuku',
'meetingKeyPointSummary': 'Extrakcia kľúčových bodov',
'meetingTopicNameSearch': 'Vyhľadávanie podľa témy/mena',
'meetingTimelineJump': 'Skok na časovej osi',
'meetingExportSummary': 'Export zápisnice',
'meetingMultiPlatformShare': 'Zdieľanie naprieč platformami',
'meetingDisclaimer':
'Používajte v tichom prostredí; výkon závisí od mikrofónu a siete.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Prehľad výhod',
'higherQuota': 'Vyšší limit používania',
'lowerUnitPrice': 'Nižšia jednotková cena',
'priorityService': 'Prioritná služba',
'exclusiveSupportChannel': 'Vyhradený kanál podpory',
'fastResponse': 'Rýchla reakcia na problémy',
'eventsAndDiscounts': 'Akcie a zľavy',
'memberExclusiveEvents': 'Exkluzívne akcie pre členov',
'longTermDiscountPlan': 'Dlhodobý zľavový plán',
'generalPrivileges': 'Všeobecné výhody',
'earlyAccessNewFeatures': 'Skorý prístup k novým funkciám',
'crossDeviceSync': 'Synchronizácia medzi zariadeniami',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Skutočné výhody závisia od detailov balíka a môžu sa meniť s verziami.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Základ 100',
'ai_002_name': 'AI Základ 500',
'ai_003_name': 'AI Základ 1000',
'meet_001_name': 'Stretnutie Základ 100',
'meet_002_name': 'Stretnutie Základ 500',
'meet_003_name': 'Stretnutie Základ 1000',
'trans_001_name': 'Preklad Základ 100',
'trans_002_name': 'Preklad Základ 500',
'trans_003_name': 'Preklad Základ 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Obsahuje 100 použití. Prístup k hlavným AI funkciám.',
'ai_002_desc': 'Obsahuje 500 použití. Prístup k hlavným AI funkciám.',
'ai_003_desc': 'Obsahuje 1000 použití. Prístup k hlavným AI funkciám.',
'meet_001_desc': 'Obsahuje 100 nahrávok/prepisov stretnutí.',
'meet_002_desc': 'Obsahuje 500 nahrávok/prepisov stretnutí.',
'meet_003_desc': 'Obsahuje 1000 nahrávok/prepisov stretnutí.',
@ -437,46 +437,46 @@ const Map<String, String> skSK = {
'trans_003_desc': 'Obsahuje 1000 prekladov (hlas/text).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Aplikácia: VoiTrans · Poskytovateľ: VoiTrans',
'iapCustomerServiceQQLabel': 'Zákaznícky servis IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'skip': 'Preskočiť',
'next': 'Next',
'next': 'Ďalej',
'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',
'imHere': 'Som tu~',
'guideWelcomeWakeAI': 'Vitajte vo Voitrans! Najprv zobuďte svoju AI “Lily”.',
'aiReplyCompleted': 'Lily dokončila odpoveď!',
'aiThinking': 'Lily premýšľa…',
'guideAwakenSuccess': 'Výborne! Lily je hore—požiadajte ju o pomoc.',
'confirmInput': 'Potvrdiť vstup',
'guideClickSendPrefix': 'Ťuknite na odoslať, ',
'guideWeatherStart': 'Povedzte Lily: “Aké je dnes počasie?”',
'guideWeatherInput': 'Aké je dnes počasie?',
'guideWeatherSend': 'Lily ohlási počasie v reálnom čase',
'guideWeatherEnd': 'Lily vie hlásiť počasie naživo—vyskúšajte ďalšie príkazy',
'guideMusicStart': 'Povedzte Lily: “Pusti rockovú hudbu”',
'guideMusicInput': 'Pusti rockovú hudbu',
'guideMusicSend': 'Lily nájde hudbu pre vás',
'guideMusicEnd': 'Lily našla hudbu—vyskúšajte ďalšie príkazy',
'guideNavStart': 'Povedzte Lily: “Naviguj na letisko Shenzhen”',
'guideNavInput': 'Naviguj na letisko Shenzhen',
'guideNavSend': 'Lily naplánuje trasu',
'guideNavEnd': 'Navigácia nastavená—vyskúšajte ďalšie príkazy',
'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',
'Povedzte Lily: “Vytvor pripomienku stretnutia na zajtra o 15:00”',
'guideMeetingInput': 'Vytvor pripomienku stretnutia na zajtra o 15:00',
'guideMeetingSend': 'Lily vytvorí pripomienku stretnutia',
'guideMeetingEnd': 'Pripomienka vytvorená—vyskúšajte ďalšie príkazy',
'guidePhoneStart': 'Povedzte Lily: “Zavolaj mame”',
'guidePhoneInput': 'Zavolaj mame',
'guidePhoneSend': 'Lily uskutoční hovor',
'guidePhoneEnd': 'Hovor uskutočnený—vyskúšajte ďalšie príkazy',
'guideSmsStart': 'Povedzte Lily: “Pošli otcovi správu: Budem doma na večeru”',
'guideSmsInput': 'Správa otcovi: Budem doma na večeru',
'guideSmsSend': 'Lily pošle správu',
'guideSmsEnd': 'Správa odoslaná—hlasové ovládanie je praktické',
// Meeting模块 - 首页与导航
"startMeeting": "Začať stretnutie",
@ -490,24 +490,24 @@ const Map<String, String> skSK = {
'recordingDetails': 'Podrobnosti záznamu',
'aiSummary': 'AI zhrnutie',
'meetingTranscript': 'Prepis stretnutia',
'files': 'Files',
'mine': 'Mine',
'files': 'Súbory',
'mine': 'Moje',
'connect': 'Pripojiť',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'allFiles': 'Všetky súbory',
'searchInAllFiles': 'Hľadať vo všetkých súboroch',
'from': 'Od',
'sortBy': 'Zoradiť podľa',
'creationTime': 'Čas vytvorenia',
'bluetoothConnection': 'Bluetooth pripojenie',
'meetingReconnect': 'Znova pripojiť',
'searching': 'Searching...',
'searching': 'Vyhľadáva sa...',
'searchFailed': 'Vyhľadávanie zlyhalo, skontrolujte, či je Bluetooth zapnutý',
'aiPenNotFound': 'Zariadenie AI PEN sa nenašlo',
'connectedToAiPen': 'Pripojené k zariadeniu AI PEN',
'checkingNewFiles': 'Kontrola nových súborov na import',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Spúšťa sa Wi-Fi...',
'newFilesDetected': 'Zistené nové súbory, pripravuje sa import',
'noNewFiles': 'Žiadne nové súbory na import',
'connectingWifi': 'Pripája sa k Wi‑Fi...',
'wifiConnected': 'Wi‑Fi úspešne pripojené',
'downloadingFiles': 'Sťahovanie súborov...',
@ -522,7 +522,7 @@ const Map<String, String> skSK = {
'liveRecording': 'Nahrávanie naživo',
'audioVideoRecording': 'Nahrávanie zvuku/videa',
'callRecording': 'Nahrávanie hovoru',
'importAudio': 'Import Audio',
'importAudio': 'Importovať zvuk',
'meetingRecordExitTitle': 'Ukončiť nahrávanie', // 退出录音
'meetingRecordExitMessage': 'Vyberte akciu po odchode', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Ukončiť a uložiť', // 结束录音并保存
@ -545,30 +545,30 @@ const Map<String, String> skSK = {
'Aby sme počas nahrávania zobrazili plávajúcu lištu nahrávania (časovač/pauza/pokračovať), potrebujeme povolenie prekrytia.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Nepodarilo sa automaticky otvoriť systémové nastavenia. Otvorte Nastavenia a povoľte prekrytie manuálne.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Prepisuje sa...',
'summarizing': 'Sumarizuje sa...',
'analyzing': 'Analyzuje sa...',
'summaryComplete': 'Zhrnutie dokončené',
'generate': 'Generovať',
'overview': 'Prehľad',
'transcription': 'Prepis',
'summary': 'Zhrnutie',
'mindMap': 'Myšlienková mapa',
'editSpeaker': 'Upraviť',
'nameSpeaker': 'Pomenovať rečníka',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Znova zhrnúť',
'dateAndTime': 'Dátum a čas',
'location': 'Miesto',
'attendees': 'Účastníci',
'inputLocation': 'Zadajte miesto',
'inputAttendees': 'Zadajte účastníkov',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Vybrať šablónu zhrnutia',
'useThisTemplate': 'Použiť túto šablónu',
'lastUsed': 'Naposledy použité',
'create': 'Vytvoriť',
'templateDetails': 'Podrobnosti šablóny',
'tag': 'Štítok',
@ -585,66 +585,66 @@ const Map<String, String> skSK = {
'inputDescHint': 'Prosím zadajte popis',
'custom': 'Vlastné',
'pleaseEnter': 'Prosím zadajte',
'viewAll': 'View All',
'viewAll': 'Zobraziť všetko',
'recordingLanguage': 'Jazyk nahrávky',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Čínska mandarínčina (zjednodušená)',
'meetingGenerateNow': 'Generovať teraz',
'keyEventsAnalyzed': 'Analyzovaných {count} kľúčových udalostí.',
'aiAnalysisDesc':
'AI analýza identifikuje kľúčové udalosti v nahrávkach, aby ste mohli vybrať dôležité udalosti na generovanie AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Importuje sa...',
'batchImporting': 'Hromadný import...',
'importingLocalRecordings': 'Import miestnych nahrávok...',
'importFailed': 'Import súboru zlyhal: {filePath}, chyba: {error}',
'importSuccess': 'Úspešne importovaných {count} miestnych nahrávok',
'importError': 'Import zlyhal: {error}',
'pleaseSelectAudioFile': 'Vyberte zvukový súbor',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Zdieľať zvuk stretnutia',
'shareComplete': 'Zdieľanie dokončené!',
'shareFailed': 'Zdieľanie zlyhalo: {error}',
'fileProcessingFailed':
'Spracovanie súboru zlyhalo: {filePath}, chyba: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Uložiť myšlienkovú mapu',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'Zdieľať myšlienkovú mapu',
'shareSuccess': 'Zdieľanie úspešné',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Opýtať sa AI ...',
'askAIPrompt': 'S čím vám môžem dnes pomôcť?',
'continueAsk': 'Pokračovať v otázkach',
'todoList': 'Zoznam úloh',
'extractConclusion': 'Extrahovať záver',
'generateKeyIndicators': 'Generovať kľúčové ukazovatele',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Zdieľať odkaz',
'copyTranscript': 'Kopírovať prepis',
'copySummary': 'Kopírovať zhrnutie',
'exportAudio': 'Exportovať zvuk',
'exportTranscript': 'Exportovať prepis',
'shareMeetingAudio': 'Zdieľať zvuk stretnutia',
'exportSummary': 'Exportovať zhrnutie',
'exportAs': 'Exportovať ako',
'exportingPDF': 'Exportuje sa PDF...',
'export': 'Exportovať',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Použiť na všetky odseky tohto rečníka',
'summaryWillBeUpdatedAutomatically':
'Zhrnutie sa bude automaticky aktualizovať podľa šablóny',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Pomenovať aktuálneho rečníka',
'recentlyUsedNames': 'Naposledy použité mená',
'applyToCurrentParagraph': 'Použiť na aktuálny odsek',
'totalTime': 'Celkový čas',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Rečníci v zhrnutí sa automaticky aktualizujú',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'Synchronizovať do cloudu',
'syncToCloudTip':
'Nahrávky sa automaticky synchronizujú do cloudu; nahrávky môžete prehrávať, spravovať a zdieľať cez ľubovoľnú aplikáciu VOITRANS alebo VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Synchronizovať do aplikácie VOITRANS',
@ -652,95 +652,95 @@ const Map<String, String> skSK = {
// Meeting模块 - 我的页面
'transcriptionRecords': 'Záznamy prepisu',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'templateCommunity': 'Komunita šablón',
'comingSoon': 'Pripravujeme',
'integration': 'Integrácia',
'voitransPrivateCloud': 'VOITRANS PRIVÁTNY CLOUD',
'enabled': 'Povolené',
'disabled': 'Zakázané',
'myVoitransDevice': 'Moje zariadenie VOITRANS',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Pomoc a spätná väzba',
'aboutVoitrans': 'O VOITRANS',
'meetingDays': 'Dní',
'meetingHours': 'Hodín',
'voitransAiMember': 'Voitrans AI člen',
'unlockStarterMember': 'Odomknúť Starter členstvo',
'bindDeviceToActivate':
'Ak chcete aktivovať Starter členstvo, pripojte zariadenie Voitrans',
'unlockNow': 'Unlock Now',
'unlockNow': 'Odomknúť teraz',
// 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',
'comparison': 'Porovnanie',
'detailedInfo': 'Podrobné informácie',
'monthlyTranscriptionTime': 'Mesačný čas prepisu',
'unlimited': 'Neobmedzený',
'professionalTemplates': 'Profesionálne šablóny',
'limited': 'Obmedzený',
'fullTemplates': 'Úplné šablóny',
'professionalTerms': 'Odborné výrazy',
'customTemplates': 'Vlastné šablóny',
'visualMindMap': 'Vizuálna myšlienková mapa',
'speakerIdentification': 'Identifikácia rečníka',
'aiVoiceEnhancement': 'AI vylepšenie hlasu',
'audioImport': 'Import zvuku',
'multipleExportFormats': 'Viacero formátov exportu',
'professionalSummaryTemplates': 'Profesionálne šablóny zhrnutí',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Profesionálny dizajn šablón na zvýšenie vašej pracovnej efektivity. Prispôsobené podľa potrieb odvetvia.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Môžete si prispôsobiť výzvy na zhrnutie podľa svojich potrieb a použiť ich na generovanie požadovaných zhrnutí.',
'askAiDesc':
'Inteligentne získajte hlbšie informácie z nahrávok; jedným kliknutím vygenerujte tabuľky, kľúčové závery diskusie, zoznam úloh, e-maily so správami a ďalší formátovaný obsah.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Viac než zhrnutia - organizujte a vizualizujte kľúčové body pomocou myšlienkových máp pre efektívnejšie pochopenie celého textu.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Objavujte, zdieľajte a čerpajte inšpiráciu z knižnice šablón vytvorených používateľmi.',
'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.',
'Prepis zvuku bude podporovať identifikáciu rečníkov, intuitívnejšie obnoví obsah stretnutia alebo telefonátu. Zároveň bude zhrnutie presnejšie.',
'privateCloudSyncDesc':
'Vaše nahrávky a prepisy budú bezpečne uložené na vyhradených cloudových serveroch s úplným šifrovaním počas nahrávania aj sťahovania, aby sa zabezpečilo súkromie a bezpečnosť.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'AI vylepšenie hlasu podporuje viacero nastavení redukcie šumu, inteligentne eliminuje hluk na pozadí, zvyšuje čistotu hlasu a zlepšuje kvalitu prehrávania zvuku.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Jednoducho importujte zvukové súbory z lokálnych alebo aplikácií tretích strán, ako sú hlasové poznámky, Google Drive atď.',
'multipleExportFormatsDesc':
'Exportujte zvukové nahrávky, text prepisu a zhrnutia v rôznych formátoch (TXT, PDF, JPEG) podľa potreby.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Vylepšiť členstvo',
'yearlySubscription': 'Ročné predplatné',
'monthlySubscription': 'Mesačné predplatné',
'proMonthly': 'Pro ¥60/mesiac',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'7-dňová bezplatná skúšobná verzia, potom ¥800/rok. Zrušte kedykoľvek pred koncom skúšobnej doby.',
'sevenDayTrial': '7-dňová bezplatná skúšobná verzia',
'unlimitedMonthly': 'Neobmedzený ¥120/mesiac',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'7-dňová bezplatná skúšobná verzia, potom ¥1600/rok. Zrušte kedykoľvek pred koncom skúšobnej doby.',
'trialNote': '*Bezplatná skúšobná verzia na 7 dní, potom ročné spoplatnenie, zrušenie kedykoľvek.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/mesiac',
'subscribe': 'Predplatiť',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/mesiac',
'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: ',
'*Po vylepšení predplatného sa zostávajúce dni pôvodného predplatného automaticky vypočítajú a vrátia na váš platobný účet',
'buyMoreTranscriptionTime': 'Kúpiť viac času na prepis',
'sixThousandMinutes': '6 000 minút',
'threeThousandMinutes': '3 000 minút',
'sixHundredMinutes': '600 minút',
'oneHundredTwentyMinutes': '120 minút',
'validityPeriod': '*Doba platnosti: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Aktivované ihneď po nákupe, platné 2 roky od aktivácie.',
'purchase': 'Kúpiť',
// Meeting模块 - 录音语言
'recordLanguage': 'Jazyk nahrávania',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantončina',
'sichuan': 'Sečuánsky dialekt',
'shanghai': 'Šanghajský dialekt',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Neznámy jazyk',
'analysisFailed': 'Analýza zlyhala, skúste to znova neskôr',
'transcriptionFailed': 'Prepis zlyhal, skúste to znova neskôr',
'summaryFailed': 'Zhrnutie zlyhalo, skúste to znova neskôr',
@ -814,16 +814,16 @@ const Map<String, String> skSK = {
// 设备管理模块
"deviceTypeUnknown": "Neznáme zariadenie",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeClassicBluetoothHeadset": "Klasické Bluetooth slúchadlá",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth slúchadlá",
"deviceTypeSmartVoiceRecorder": "Inteligentný hlasový záznamník",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeSmartEye": "Inteligentné okuliare",
"unbind": "Zrušiť prepojenie",
"noDevicesBound": "Zatiaľ nie sú pripojené žiadne zariadenia",
"pleaseBindDeviceFirst":
"Najprv pripojte zariadenie, aby ste ho mohli spravovať",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"noMacAddress": "Žiadna MAC adresa",
"licenseCode": "Licenčný kód",
"confirmUnbind": "Potvrdiť odpojenie",
"confirmUnbindMessage":
"Ste si istí, že chcete odpojiť zariadenie \"{deviceName}\"?",
@ -917,11 +917,11 @@ const Map<String, String> skSK = {
'generatedByAi': 'Vygenerované AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'Volanie nástroja',
'noResult': 'Žiadny výsledok',
'noToolCallContentToCopy': 'Žiadny obsah volania nástroja na kopírovanie',
'toolCallDetails': 'Podrobnosti volania nástroja:',
'toolCallContentCopied': 'Obsah volania nástroja skopírovaný do schránky',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Tu sú niektoré odporúčané skladby:',
@ -944,26 +944,26 @@ const Map<String, String> skSK = {
"tsransit": "Verejná doprava",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'selectNavigationApp': 'Vybrať navigačnú aplikáciu',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'useAmapNavigation': 'Navigovať s Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'useBaiduNavigation': 'Navigovať s Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'useGoogleNavigation': 'Navigovať s Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'useAppleNavigation': 'Navigovať s Apple Maps',
'builtInNavigation': 'Vstavaná navigácia',
'useBuiltInNavigation': 'Navigovať so vstavanou mapou',
'navigationStartFailed': 'Spustenie navigácie zlyhalo',
'cannotPlayMusicListRetryLater':
'Zoznam hudby sa nepodarilo prehrať, skúste to neskôr',
'cannotPlaySong': 'Cannot play song',
'cannotPlaySong': 'Skladbu nie je možné prehrať',
'openMapError': 'Chyba pri otváraní mapy',
'pleaseInstallAmapApp': 'Najprv si nainštalujte aplikáciu Amap',
'pleaseInstallBaiduMapApp': 'Najprv si nainštalujte aplikáciu Baidu Maps',
'appleMapStartFailed': 'Apple Maps sa nepodarilo spustiť',
'appleMapUnavailable': 'Apple Maps unavailable',
'appleMapUnavailable': 'Apple Maps nie je dostupné',
'openAppleMapError': 'Chyba pri otváraní Apple Maps',
// Agent模块 - 天气卡片
@ -1029,11 +1029,11 @@ const Map<String, String> skSK = {
"phoneUser": "Používateľ telefónu",
"selectSourceLanguage": "Vyberte zdrojový jazyk",
"selectTargetLanguage": "Vyberte cieľový jazyk",
"me": "Me",
"counterPart": "Counterpart",
"me": "Ja",
"counterPart": "Protistrana",
"bluetoothCallStateError":
"Uistite sa, že Bluetooth slúchadlá sú pripojené k telefónu a že prebieha hovor",
"autoDetect": "Auto Detect", // 自动检测
"autoDetect": "Automatická detekcia", // 自动检测
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Rozpoznanie jazyka zlyhalo",
@ -1047,16 +1047,16 @@ const Map<String, String> skSK = {
'deleteTranslationRecordError':
'Chyba pri odstraňovaní záznamu prekladu: @error',
"translationFailed": "Preklad zlyhal",
"translating": "Translating",
"translating": "Prekladá sa",
"translate": "Preložiť",
"pleaseInputText": "Zadajte text",
"inputTextToTranslate": "Zadajte text na preklad",
"textTooLong": "Text too long, max 5000 characters",
"textTooLong": "Text je príliš dlhý, maximálne 5000 znakov",
// 翻译模块 - 历史记录
"noTranslationHistory": "Žiadna história",
"historyRecords": "Záznamy histórie",
"clearResults": "Clear Results",
"clearResults": "Vymazať výsledky",
"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äť.",
@ -1066,40 +1066,40 @@ const Map<String, String> skSK = {
"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äť.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"selectImageSource": "Vybrať zdroj obrázka",
"imagePreview": "Náhľad obrázka",
"translationResult": "Výsledok prekladu",
"recognitionResult": "Recognition Result",
"recognitionResult": "Výsledok rozpoznania",
"translatedImagePreview": "Náhľad preloženého obrázka",
"translatedImageLoadFailed": "Nepodarilo sa načítať preložený obrázok",
"pleaseSelectImage": "Vyberte obrázok",
"imageLoadFailed": "Načítanie obrázka zlyhalo",
"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",
"imageQuality": "Kvalita obrázka",
"maxSize": "Maximálna veľkosť",
"close": "Zavrieť",
"setImageQuality": "Nastaviť kvalitu obrázka",
"currentQuality": "Aktuálna kvalita: @value%",
"setMaxSize": "Nastaviť maximálnu veľkosť",
"currentMaxSize": "Aktuálne: @pxpx",
"waitingForAction": "Čaká sa na akciu",
"pleaseSelectImageToStart": "Vyberte obrázok na začatie",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"chooseImage": "Vybrať obrázok",
"openingCamera": "Otvára sa kamera...",
"openingPhotoAlbum": "Otvára sa fotogaléria...",
"cancelled": "Zrušené",
"userCancelledSelection": "Používateľ zrušil výber",
"translatingImage": "Prekladá sa obrázok",
"callingImageTranslateService": "Volá sa služba prekladu obrázkov...",
"savingRecord": "Ukladanie záznamu",
"savingTranslationResult": "Ukladanie výsledku prekladu...",
"translationCompleted": "Preklad dokončený",
"allStepsCompleted": "All steps completed",
"allStepsCompleted": "Všetky kroky dokončené",
"processingFailed": "Spracovanie zlyhalo",
"imageProcessingOrTranslationFailed":
"Spracovanie obrázka alebo preklad zlyhal. Skúste to znova.\nChyba: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Veľkosť obrázka presahuje limit 4MB",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Veľkosť obrázka presahuje 4MB. Znížte kvalitu alebo rozmery a skúste znova",
"emptyTranslationResult": "API prekladu obrázkov vrátilo prázdny výsledok",
"imageTranslationFailedTryLater":
"Preklad obrázka zlyhal. Problém so sieťou alebo limitom. Skúste to neskôr",
@ -1110,11 +1110,11 @@ const Map<String, String> skSK = {
"photoAlbumPermissionRequired":
"Na výber obrázkov je potrebné povolenie fotogalérie",
"translationDetails": "Podrobnosti prekladu",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": "Pôvodný obrázok",
"sourceLanguage": "Zdrojový jazyk",
"targetLanguage": "Cieľový jazyk",
"translationTime": "Čas prekladu",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": "Funkcia zdieľania je vo vývoji",
// 翻译模块 - 录音文件
"translateAudioFiles": "Preložiť zvukové súbory",
@ -1166,8 +1166,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?',
'clean': 'Vymazať vyrovnávaciu pamäť',
'cleanTips': 'Ste si istí, že chcete vymazať osobnú vyrovnávaciu pamäť?',
'networkConnectionFailed':
'Sieťové pripojenie zlyhalo, skontrolujte nastavenia siete a skúste to znova',
'serverTemporarilyUnavailable':
@ -1226,9 +1226,9 @@ const Map<String, String> skSK = {
'locationPermissions': 'Povolenia polohy',
'phone': 'Telefón',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'alarm': 'Alarm',
'contacts': 'Kontakty',
'notification': 'Oznámenie',
'alarm': 'Budík',
'calendarWrite': 'Zápis do kalendára',
'calendarFullAccess': 'Plný prístup ku kalendáru',
'locationInfo': 'Informácie o polohe',
@ -1276,7 +1276,7 @@ const Map<String, String> skSK = {
'Používa sa na pripájanie k Bluetooth zariadeniam',
'bluetoothConnectPermissionDetailDesc':
'Pripájanie k Bluetooth zariadeniam vyžaduje povolenie na pripojenie Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Používa sa na odosielanie oznámení',
'notificationPermissionDetailDesc':
'Aplikácia potrebuje povolenie oznámení na odosielanie dôležitých upozornení a správ',
'appNeedsPermissionForFullFunction':
@ -1284,7 +1284,7 @@ const Map<String, String> skSK = {
'permanentDenialText':
'Trvalo ste odmietli povolenie {permission}, prejdite do nastavení aplikácie, aby ste ho povolili',
'goToSettings': 'Prejsť do nastavení',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothScan': 'Skenovanie Bluetooth',
'bluetoothConnect': 'Pripojenie Bluetooth',
'bluetoothScanExplanation':
'Aplikácia potrebuje povolenie skenovania Bluetooth na vyhľadávanie Bluetooth zariadení v okolí.',
@ -1298,8 +1298,8 @@ const Map<String, String> skSK = {
'Povolenie pripojenia Bluetooth bolo trvalo odmietnuté, prejdite do nastavení a povoľte ho manuálne.',
'locationPermanentDenial':
'Povolenie polohy bolo trvalo odmietnuté, prejdite do nastavení a povoľte ho manuálne.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermission': 'Oznámenie',
'locationPermission': 'Poloha',
'notificationPermissionExplanation':
'Povolenie oznámení je potrebné na zobrazenie stavu prehrávania hudby.',
'locationPermissionExplanation':
@ -1308,7 +1308,7 @@ const Map<String, String> skSK = {
'Trvalo ste odmietli povolenie oznámení, prejdite do nastavení a povoľte ho.',
'locationPermissionPermanentDenial':
'Trvalo ste odmietli povolenie polohy, prejdite do nastavení a povoľte ho.',
'storagePermission': 'Storage',
'storagePermission': 'Úložisko',
'microphonePermissionExplanation':
'Potrebujeme povolenie mikrofónu na nahrávanie zvukového obsahu.',
'storagePermissionExplanation':
@ -1317,7 +1317,7 @@ const Map<String, String> skSK = {
'Zistili sme, že ste trvalo zamietli povolenie mikrofónu. Ak chcete pokračovať v používaní tejto funkcie, prejdite do nastavení aplikácie a manuálne povoľte prístup k mikrofónu.',
'storagePermissionPermanentDenial':
'Zistili sme, že ste trvalo zamietli povolenie úložiska. Ak chcete pokračovať v používaní tejto funkcie, prejdite do nastavení aplikácie a manuálne povoľte prístup k úložisku.',
'permissionUtilNeed': 'Need ',
'permissionUtilNeed': 'Vyžaduje sa ',
'permissionUtilPermission': ' Povolenie',
'permissionUtilRestricted': ' Povolenie obmedzené',
'permissionUtilRestrictedMessage':
@ -1480,14 +1480,14 @@ const Map<String, String> skSK = {
"Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaNewVersionFoundWithVersion': 'Nájdená nová verzia @version',
'otaConfirmUpdateNow': 'Aktualizovať teraz?',
'otaUpdate': 'Aktualizovať',
'otaUpgradeSuccess': 'Aktualizácia úspešná',
'otaUpgradeCompleteRepair':
'Aktualizácia firmvéru dokončená!\n\nAby zariadenie fungovalo správne, je potrebné ho znovu spárovať. Prejsť teraz na stránku párovania?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'otaPairLater': 'Spárovať neskôr',
'otaPairNow': 'Spárovať teraz',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
@ -1503,8 +1503,8 @@ const Map<String, String> skSK = {
'Nie je možné získať informácie o zariadení, skontrolujte pripojenie',
'otaCannotGetProductInfoWithName':
'Nie je možné získať informácie o produkte, názov zariadenia: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaCannotGetBatteryInfo': 'Nie je možné získať platné informácie o batérii',
'otaLowBattery': 'Nízka batéria',
'otaSingleBatteryLow':
'Batéria zariadenia je príliš nízka na aktualizáciu firmvéru\nPožiadavka: batéria musí byť nad 20%\nAktuálne: @ear @battery%\nNabite a skúste to znova',
'otaDoubleBatteryLow':
@ -1513,7 +1513,7 @@ const Map<String, String> skSK = {
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'Táto aktualizácia obsahuje optimalizácie výkonu a opravy chýb.',
'otaGetLatestVersionFailed':
'Nepodarilo sa získať informácie o najnovšej verzii',
'otaGetVersionInfoFailed': 'Nepodarilo sa získať informácie o verzii',
@ -1523,8 +1523,8 @@ const Map<String, String> skSK = {
'otaDownloadFailed': 'Sťahovanie zlyhalo',
'otaPreparingConnection': 'Pripravuje sa pripojenie zariadenia...',
'otaConnectingDevice': 'Pripája sa k zariadeniu...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeStarted': 'OTA aktualizácia sa začala...',
'otaUpgradeProgressWithPercent': 'Priebeh aktualizácie: @percent%',
'otaUpgradeSuccessComplete': 'Aktualizácia bola úspešne dokončená',
'otaUpgradeFailedWithCode': 'Aktualizácia zlyhala, kód chyby: @code',
'otaUpgradeFailedTitle': 'Aktualizácia zlyhala',
@ -1688,15 +1688,15 @@ const Map<String, String> skSK = {
"东帝汶": "Východný Timor",
"斐济": "Fidži",
"所罗门群岛": "Šalamúnove ostrovy",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Konžská demokratická republika",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"马尔代夫": "Maldivy",
"不丹": "Bhután",
"摩纳哥": "Monako",
"圣马力诺": "San Maríno",
"牙买加": "Jamajka",
"巴哈马": "Bahamy",
"巴布亚新几内亚": "Papua-Nová Guinea",
"萨摩亚": "Samoa",
};

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

@ -219,7 +219,7 @@ const Map<String, String> slSI = {
"scene": "Scenarij",
// 用量统计模块
"aiChat": "AI Chat",
"aiChat": "AI klepet",
"translationStats": "Statistika prevodov",
"meetingStats": "Statistika sestankov",
"today": "Danes",
@ -238,36 +238,36 @@ const Map<String, String> slSI = {
"translationApi": "API prevajanja",
"asr": "ASR",
"tts": "TTS",
"dataVolumeStats": "Data Volume Stats",
"sourceTextCharacters": "Source Text Characters",
"ttsTextCharacters": "TTS Text Characters",
"effectiveAudioDuration": "Effective Audio Duration",
"totalSessionDuration": "Total Session Duration",
"costStats": "Cost Stats",
"estimatedCost": "Estimated Cost",
"dailyCostThreshold": "Daily Cost Threshold",
"monthlyCostThreshold": "Monthly Cost Threshold",
"usageBehaviorStats": "Usage Behavior Stats",
"mostUsedLanguagePair": "Most-used language pair",
"mostUsedMode": "Most-used mode",
"asrApiCalls": "ASR Calls",
"totalAudioDuration": "Total Audio Duration",
"audioFileSize": "Audio File Size",
"transcriptBytes": "Transcript Bytes",
"dataVolumeStats": "Statistika količine podatkov",
"sourceTextCharacters": "Znaki izvornega besedila",
"ttsTextCharacters": "Znaki besedila TTS",
"effectiveAudioDuration": "Učinkovito trajanje zvoka",
"totalSessionDuration": "Skupno trajanje seje",
"costStats": "Statistika stroškov",
"estimatedCost": "Ocenjeni strošek",
"dailyCostThreshold": "Dnevna meja stroškov",
"monthlyCostThreshold": "Mesečna meja stroškov",
"usageBehaviorStats": "Statistika uporabe",
"mostUsedLanguagePair": "Najpogosteje uporabljeni jezikovni par",
"mostUsedMode": "Najpogosteje uporabljen način",
"asrApiCalls": "Klici ASR",
"totalAudioDuration": "Skupno trajanje zvoka",
"audioFileSize": "Velikost zvočne datoteke",
"transcriptBytes": "Bajti prepisa",
"loadFailed": "Nalaganje ni uspelo",
"statsLoadFailedTryLater":
"Statistike ni bilo mogoče naložiti. Poskusite znova pozneje.",
"cleanupComplete": "Cleanup Complete",
"cleanedOldData": "Cleaned data older than 90 days",
"exportFeature": "Export Feature",
"exportInDevelopment": "Data export is under development",
"cleanupComplete": "Čiščenje dokončano",
"cleanedOldData": "Očiščeni podatki starejši od 90 dni",
"exportFeature": "Funkcija izvoza",
"exportInDevelopment": "Izvoz podatkov je v razvoju",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'Razpoložljivi paketi',
'remainingQuota': 'Preostala kvota',
'totalQuota': 'Skupna kvota',
'remaining': 'Preostanek',
'featureDescription': 'Opis funkcije',
'paymentSuccess': 'Plačilo uspešno',
'paymentFailed': 'Plačilo ni uspelo',
'gotIt': 'Razumem',
@ -327,109 +327,112 @@ const Map<String, String> slSI = {
'alipayPaymentLaunchFailed': 'Zagon Alipay ni uspel',
'cannotLaunchAlipayPayment': 'Ni mogoče zagnati Alipay',
'alipayPaymentException': 'Izjema Alipay',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "Premalo točk",
"insufficientBalanceDesc":
"Ni dovolj dobroimetja, pojdite na ustrezno stran za polnjenje in dopolnite.",
"recharge": "Go to Recharge",
"recharge": "Pojdi na polnjenje",
"aiMemberExpiredDesc":
"Članstvo AI je poteklo, pojdite na stran za polnjenje članstva in ga obnovite.",
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'musicAndRecommendation': 'Glasba in priporočila',
'navigationAndRoutes': 'Navigacija in poti',
'nearbySearch': 'Iskanje v bližini',
'newsInformation': 'Novice',
'communicationAssistant': 'Pomočnik za komunikacijo',
'aiHeaderDesc1': 'Daljša kvota pogovora, več klicev orodij, daljši kontekst.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Primerno za vprašanja in odgovore agenta, povzemanje, analizo in izvajanje nalog.',
'musicSearchPlaybackControl':
'Iskanje v glasbeni knjižnici in nadzor predvajanja',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Pametni seznami predvajanja in priporočila podobnih pesmi',
'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',
'Načrtovanje poti in izogibanje zastojem',
'voiceBroadcastAndWaypoints': 'Glasovno vodenje in nastavitve vmesnih točk',
'realTimeWeatherForecast': 'Vreme in napoved v realnem času',
'clothingAdviceAndTravelReminders':
'Nasveti za oblačila in potovalni opomniki',
'poiSearchFoodGasParking': 'Iskanje POI: hrana / gorivo / parkirišče',
'ratingsHoursAndDirectRoutes': 'Ocene, delovni čas in neposredna navigacija',
'hotNewsAndTopicOverview': 'Pregled vročih novic in tem',
'longArticleSummariesAndKeyPoints':
'Povzetki dolgih člankov in ključne točke',
'helpCallAndSMS': 'Pomoč pri klicih in SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Predloge sporočil in časovno načrtovani opomniki',
'aiDisclaimer':
'Funkcije so odvisne od dovoljenj naprave, razpoložljivosti storitev in omrežnih razmer.',
// 商品模块 - 翻译商品页
'realtimeTranscription': 'Real-time Transcription',
'sceneLexicon': 'Scenario Glossary',
'subtitleDisplay': 'Subtitles',
'realtimeTranscription': 'Prepis v realnem času',
'sceneLexicon': 'Slovar konteksta',
'subtitleDisplay': 'Podnapisi',
'transHeaderDesc1':
'Sočasno tolmačenje in prevajanje besedila v realnem času z nizko zakasnitvijo zvoka.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Primerno za potovanja, posel, govore in poučevanje.',
'translateZhEn': 'Prevajanje kitajščina–angleščina',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'lowLatencyVoiceBroadcast': 'Glasovno predvajanje z nizko zakasnitvijo',
'multiLangTextTranslation': 'Večjezično prevajanje besedila',
'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',
'Optimizacija terminologije in ohranjanje konteksta',
'lexiconTourBusinessLife': 'Slovarji za potovanja/posel/življenje',
'personalVocabularyMemory': 'Osebni slovar',
'conversationSubtitleLargeText':
'Podnapisi pogovora / način velikega besedila',
'colorHighContrast': 'Visok barvni kontrast',
'transDisclaimer':
'Učinkovitost prevajanja je odvisna od mikrofona, zakasnitve omrežja in hrupa okolice.',
// 商品模块 - 会议商品页
'meetingRecording': 'Snemanje sestankov',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Prepis in povzetek',
'keywordSearch': 'Iskanje ključnih besed',
'collaborationSharing': 'Sodelovanje in deljenje',
'meetingHeaderDesc1':
'Snemanje zvoka, prepis, iskanje ključnih besed in samodejni povzetek za večjo učinkovitost sestankov.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Primerno za poslovne sestanke, zapiske pri pouku in zapisnike intervjujev.',
'meetingAutoRecording': 'Samodejno snemanje in segmentacija',
'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',
'meetingSpeakerTagging': 'Označevanje govorcev',
'meetingLongAudioTranscription': 'Prepis dolgega zvoka',
'meetingKeyPointSummary': 'Izluščanje ključnih točk',
'meetingTopicNameSearch': 'Iskanje po temi/imenu',
'meetingTimelineJump': 'Skok po časovnici',
'meetingExportSummary': 'Izvoz zapisnika',
'meetingMultiPlatformShare': 'Deljenje med platformami',
'meetingDisclaimer':
'Uporabljajte v tihem okolju; delovanje je odvisno od mikrofona in omrežja.',
// 商品模块 - VIP会员页
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'benefitsOverview': 'Pregled ugodnosti',
'higherQuota': 'Višja kvota uporabe',
'lowerUnitPrice': 'Nižja cena na enoto',
'priorityService': 'Prednostna podpora',
'exclusiveSupportChannel': 'Namenski kanal podpore',
'fastResponse': 'Hiter odziv na težave',
'eventsAndDiscounts': 'Dogodki in popusti',
'memberExclusiveEvents': 'Ekskluzivni dogodki za člane',
'longTermDiscountPlan': 'Dolgoročni popustni načrt',
'generalPrivileges': 'Splošne ugodnosti',
'earlyAccessNewFeatures': 'Zgodnji dostop do novih funkcij',
'crossDeviceSync': 'Sinhronizacija med napravami',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Dejanske ugodnosti so odvisne od podrobnosti paketa in se lahko spreminjajo z različicami.',
// 商品模块 - 商品名称与描述
'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',
'ai_001_name': 'AI Osnovni 100',
'ai_002_name': 'AI Osnovni 500',
'ai_003_name': 'AI Osnovni 1000',
'meet_001_name': 'Sestanek Osnovni 100',
'meet_002_name': 'Sestanek Osnovni 500',
'meet_003_name': 'Sestanek Osnovni 1000',
'trans_001_name': 'Prevod Osnovni 100',
'trans_002_name': 'Prevod Osnovni 500',
'trans_003_name': 'Prevod Osnovni 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc': 'Vključuje 100 uporab. Dostop do osnovnih funkcij AI.',
'ai_002_desc': 'Vključuje 500 uporab. Dostop do osnovnih funkcij AI.',
'ai_003_desc': 'Vključuje 1000 uporab. Dostop do osnovnih funkcij AI.',
'meet_001_desc': 'Vključuje 100 snemanj/prepisov sestankov.',
'meet_002_desc': 'Vključuje 500 snemanj/prepisov sestankov.',
'meet_003_desc': 'Vključuje 1000 snemanj/prepisov sestankov.',
@ -438,46 +441,48 @@ const Map<String, String> slSI = {
'trans_003_desc': 'Vključuje 1000 prevodov (glas/besedilo).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Aplikacija: VoiTrans · Ponudnik: VoiTrans',
'iapCustomerServiceQQLabel': 'QQ za podporo IAP: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'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, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Naprej',
'sayLilyHint': 'Recite "Lily Lily" v mikrofon',
'imHere': 'Tukaj sem~',
'guideWelcomeWakeAI':
'Dobrodošli v Voitrans! Najprej zbudite svojo AI “Lily”.',
'aiReplyCompleted': 'Lily je zaključila odgovor!',
'aiThinking': 'Lily razmišlja…',
'guideAwakenSuccess': 'Odlično! Lily je budna — vprašajte jo za pomoč.',
'confirmInput': 'Potrdi vnos',
'guideClickSendPrefix': 'Tapnite pošlji, ',
'guideWeatherStart': 'Recite Lily: “Kakšno bo danes vreme?”',
'guideWeatherInput': 'Kakšno bo danes vreme?',
'guideWeatherSend': 'Lily bo v realnem času poročala o vremenu',
'guideWeatherEnd':
'Lily lahko poroča o vremenu v živo — poskusite druge ukaze',
'guideMusicStart': 'Recite Lily: “Predvajaj rock glasbo”',
'guideMusicInput': 'Predvajaj rock glasbo',
'guideMusicSend': 'Lily bo poiskala glasbo za vas',
'guideMusicEnd': 'Lily je našla glasbo — poskusite druge ukaze',
'guideNavStart': 'Recite Lily: “Navigiraj do letališča”',
'guideNavInput': 'Navigiraj do letališča',
'guideNavSend': 'Lily bo načrtovala pot',
'guideNavEnd': 'Navigacija je nastavljena — poskusite druge ukaze',
'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',
'Recite Lily: “Ustvari opomnik za sestanek za jutri ob 15:00”',
'guideMeetingInput': 'Ustvari opomnik za sestanek za jutri ob 15:00',
'guideMeetingSend': 'Lily bo ustvarila opomnik za sestanek',
'guideMeetingEnd': 'Opomnik ustvarjen — poskusite druge ukaze',
'guidePhoneStart': 'Recite Lily: “Pokliči mamo”',
'guidePhoneInput': 'Pokliči mamo',
'guidePhoneSend': 'Lily bo opravila klic',
'guidePhoneEnd': 'Klic opravljen — poskusite druge ukaze',
'guideSmsStart': 'Recite Lily: “Pošlji očetu sporočilo: Pridem na večerjo”',
'guideSmsInput': 'Pošlji očetu: Pridem na večerjo',
'guideSmsSend': 'Lily bo poslala sporočilo',
'guideSmsEnd': 'Sporočilo poslano — glasovno upravljanje je priročno',
// Meeting模块 - 首页与导航
"startMeeting": "Začni sestanek",
@ -491,24 +496,24 @@ const Map<String, String> slSI = {
'recordingDetails': 'Podrobnosti posnetka',
'aiSummary': 'Povzetek AI',
'meetingTranscript': 'Prepis sestanka',
'files': 'Files',
'mine': 'Mine',
'files': 'Datoteke',
'mine': 'Moje',
'connect': 'Poveži',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'from': 'From',
'sortBy': 'Sort by',
'creationTime': 'Creation Time',
'allFiles': 'Vse datoteke',
'searchInAllFiles': 'Išči v vseh datotekah',
'from': 'Od',
'sortBy': 'Razvrsti po',
'creationTime': 'Čas ustvarjanja',
'bluetoothConnection': 'Povezava Bluetooth',
'meetingReconnect': 'Ponovno poveži',
'searching': 'Searching...',
'searching': 'Iskanje...',
'searchFailed': 'Iskanje ni uspelo, preverite, ali je Bluetooth vklopljen',
'aiPenNotFound': 'Naprave AI PEN ni mogoče najti',
'connectedToAiPen': 'Povezano z napravo AI PEN',
'checkingNewFiles': 'Preverjanje novih datotek za uvoz',
'startingWifi': 'Starting Wi-Fi...',
'newFilesDetected': 'New files detected, preparing to import',
'noNewFiles': 'No new files to import',
'startingWifi': 'Zaganjanje Wi-Fi...',
'newFilesDetected': 'Zaznane nove datoteke, priprava na uvoz',
'noNewFiles': 'Ni novih datotek za uvoz',
'connectingWifi': 'Povezovanje z Wi‑Fi...',
'wifiConnected': 'Wi‑Fi je uspešno povezan',
'downloadingFiles': 'Prenašanje datotek...',
@ -523,7 +528,7 @@ const Map<String, String> slSI = {
'liveRecording': 'Snemanje v živo',
'audioVideoRecording': 'Snemanje avdia/videa',
'callRecording': 'Snemanje klica',
'importAudio': 'Import Audio',
'importAudio': 'Uvozi zvok',
'meetingRecordExitTitle': 'Izhod iz snemanja', // 退出录音
'meetingRecordExitMessage': 'Izberite dejanje po izhodu', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Končaj in shrani', // 结束录音并保存
@ -545,30 +550,30 @@ const Map<String, String> slSI = {
'Za prikaz plavajoče vrstice snemanja (časovnik/premor/nadaljuj) med snemanjem potrebujemo dovoljenje za prekrivanje.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Sistemskih nastavitev ni bilo mogoče samodejno odpreti. Odprite Nastavitve in ročno omogočite dovoljenje za prekrivanje.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'transcribing': 'Prepisovanje...',
'summarizing': 'Povzemanje...',
'analyzing': 'Analiziranje...',
'summaryComplete': 'Povzetek dokončan',
'generate': 'Ustvari',
'overview': 'Pregled',
'transcription': 'Prepis',
'summary': 'Povzetek',
'mindMap': 'Miselni zemljevid',
'editSpeaker': 'Uredi',
'nameSpeaker': 'Poimenuj govorca',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Ponovno povzemanje',
'dateAndTime': 'Datum in čas',
'location': 'Lokacija',
'attendees': 'Udeleženci',
'inputLocation': 'Vnesite lokacijo',
'inputAttendees': 'Vnesite udeležence',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Izberite predlogo povzetka',
'useThisTemplate': 'Uporabi to predlogo',
'lastUsed': 'Nazadnje uporabljeno',
'create': 'Ustvari',
'templateDetails': 'Podrobnosti predloge',
'tag': 'Oznaka',
@ -586,63 +591,63 @@ const Map<String, String> slSI = {
'inputDescHint': 'Prosimo vnesite opis',
'custom': 'Po meri',
'pleaseEnter': 'Prosimo vnesite',
'viewAll': 'View All',
'viewAll': 'Prikaži vse',
'recordingLanguage': 'Jezik snemanja',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'chineseSimplified': 'Kitajščina mandarinščina (poenostavljena)',
'meetingGenerateNow': 'Ustvari zdaj',
'keyEventsAnalyzed': 'Analiziranih {count} ključnih dogodkov.',
'aiAnalysisDesc':
'AI analiza prepozna ključne dogodke v posnetkih, kar vam omogoča izbiro pomembnih dogodkov za generiranje z AI.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Uvažanje...',
'batchImporting': 'Paketno uvažanje...',
'importingLocalRecordings': 'Uvažanje lokalnih posnetkov...',
'importFailed': 'Uvoz datoteke ni uspel: {filePath}, napaka: {error}',
'importSuccess': 'Uspešno uvoženih {count} lokalnih posnetkov',
'importError': 'Uvoz ni uspel: {error}',
'pleaseSelectAudioFile': 'Izberite zvočno datoteko',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Deli zvok sestanka',
'shareComplete': 'Deljenje dokončano!',
'shareFailed': 'Deljenje ni uspelo: {error}',
'fileProcessingFailed':
'Obdelava datoteke ni uspela: {filePath}, napaka: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'Shrani miselni zemljevid',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'Deli miselni zemljevid',
'shareSuccess': 'Deljenje uspešno',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Vprašaj AI ...',
'askAIPrompt': 'Kako vam lahko danes pomagam?',
'continueAsk': 'Nadaljuj z vprašanji',
'todoList': 'Seznam opravil',
'extractConclusion': 'Izlušči zaključek',
'generateKeyIndicators': 'Ustvari ključne kazalnike',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'Deli povezavo',
'copyTranscript': 'Kopiraj prepis',
'copySummary': 'Kopiraj povzetek',
'exportAudio': 'Izvozi zvok',
'exportTranscript': 'Izvozi prepis',
'shareMeetingAudio': 'Deli zvok sestanka',
'exportSummary': 'Izvozi povzetek',
'exportAs': 'Izvozi kot',
'exportingPDF': 'Izvoz PDF...',
'export': 'Izvozi',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Uporabi za vse odstavke tega govorca',
'summaryWillBeUpdatedAutomatically':
'Povzetek se bo samodejno posodabljal glede na predlogo',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Poimenuj trenutnega govorca',
'recentlyUsedNames': 'Nedavno uporabljena imena',
'applyToCurrentParagraph': 'Uporabi za trenutni odstavek',
'totalTime': 'Skupni čas',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Govorci v povzetku se bodo samodejno posodobili',
// Meeting模块 - 云端同步
'syncToCloud': 'Sinhroniziraj v oblak',
@ -653,95 +658,95 @@ const Map<String, String> slSI = {
// Meeting模块 - 我的页面
'transcriptionRecords': 'Zapisi prepisov',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'templateCommunity': 'Skupnost predlog',
'comingSoon': 'Kmalu na voljo',
'integration': 'Integracija',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Omogočeno',
'disabled': 'Onemogočeno',
'myVoitransDevice': 'Moja naprava VOITRANS',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Pomoč in povratne informacije',
'aboutVoitrans': 'O VOITRANS',
'meetingDays': 'Dnevi',
'meetingHours': 'Ure',
'voitransAiMember': 'Član Voitrans AI',
'unlockStarterMember': 'Odkleni Starter članstvo',
'bindDeviceToActivate':
'Povežite napravo Voitrans za aktivacijo Starter članstva',
'unlockNow': 'Unlock Now',
'unlockNow': 'Odkleni zdaj',
// 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',
'comparison': 'Primerjava',
'detailedInfo': 'Podrobne informacije',
'monthlyTranscriptionTime': 'Mesečni čas prepisa',
'unlimited': 'Neomejeno',
'professionalTemplates': 'Profesionalne predloge',
'limited': 'Omejeno',
'fullTemplates': 'Polne predloge',
'professionalTerms': 'Profesionalni izrazi',
'customTemplates': 'Predloge po meri',
'visualMindMap': 'Vizualni miselni zemljevid',
'speakerIdentification': 'Prepoznavanje govorcev',
'aiVoiceEnhancement': 'Izboljšava glasu z AI',
'audioImport': 'Uvoz zvoka',
'multipleExportFormats': 'Več formatov izvoza',
'professionalSummaryTemplates': 'Profesionalne predloge povzetkov',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Profesionalna zasnova predlog za večjo učinkovitost pri delu. Prilagojeno potrebam panoge.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Pozive za povzetek lahko prilagodite svojim potrebam in jih uporabite za ustvarjanje želenih povzetkov.',
'askAiDesc':
'Pametno izluščite globlje informacije iz posnetkov; z enim klikom ustvarite podatkovne tabele, ključne zaključke razprave, sezname opravil, poročilna e‑sporočila in drugo formatirano vsebino.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Več kot povzetki: s miselnimi zemljevidi uredite in vizualizirajte ključne točke za boljše razumevanje celotnega besedila.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Odkrijte, delite in se navdihnite v knjižnici predlog, ki so jih ustvarili uporabniki.',
'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.',
'Prepis zvoka bo podpiral prepoznavanje govorcev, da bo vsebina sestanka ali klica bolj jasno obnovljena. Hkrati bo povzetek natančnejši.',
'privateCloudSyncDesc':
'Vaši posnetki in prepisi bodo varno shranjeni na namenskih strežnikih v oblaku, z popolnim šifriranjem med nalaganjem in prenašanjem, za zagotavljanje zasebnosti in varnosti.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'Izboljšava glasu z AI podpira več nastavitev zmanjševanja šuma, pametno odstranjuje hrup v ozadju, izboljša jasnost glasu in kakovost predvajanja.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Zvočne datoteke preprosto uvozite iz lokalnih ali drugih aplikacij, kot so glasovni zapiski, Google Drive itd.',
'multipleExportFormatsDesc':
'Izvozite zvočne posnetke, besedilo prepisa in povzetke v različnih formatih (TXT, PDF, JPEG) po svojih potrebah.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'Nadgradi članstvo',
'yearlySubscription': 'Letna naročnina',
'monthlySubscription': 'Mesečna naročnina',
'proMonthly': 'Pro ¥60/mesec',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'7-dnevni brezplačni preizkus, nato ¥800/leto. Prekličete lahko pred koncem preizkusa.',
'sevenDayTrial': '7-dnevni brezplačni preizkus',
'unlimitedMonthly': 'Neomejeno ¥120/mesec',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'7-dnevni brezplačni preizkus, nato ¥1600/leto. Prekličete lahko pred koncem preizkusa.',
'trialNote':
'*7-dnevni brezplačni preizkus, nato letno zaračunavanje; prekličete lahko kadarkoli.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/mesec',
'subscribe': 'Naroči se',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/mesec',
'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',
'*Po nadgradnji naročnine se bodo preostali dnevi prvotne naročnine samodejno izračunali in povrnili na vaš plačilni račun',
'buyMoreTranscriptionTime': 'Kupi dodatni čas prepisa',
'sixThousandMinutes': '6.000 minut',
'threeThousandMinutes': '3.000 minut',
'sixHundredMinutes': '600 minut',
'oneHundredTwentyMinutes': '120 minut',
'validityPeriod': '*Obdobje veljavnosti: ',
'validityNote': 'Aktivira se takoj po nakupu in velja 2 leti po aktivaciji.',
'purchase': 'Kupi',
// Meeting模块 - 录音语言
'recordLanguage': 'Jezik snemanja',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantonščina',
'sichuan': 'Sečuanski dialekt',
'shanghai': 'Šanghajski dialekt',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Neznan jezik',
'analysisFailed': 'Analiza ni uspela, poskusite znova pozneje',
'transcriptionFailed': 'Prepis ni uspel, poskusite znova pozneje',
'summaryFailed': 'Povzetek ni uspel, poskusite znova pozneje',
@ -817,15 +822,15 @@ const Map<String, String> slSI = {
// 设备管理模块
"deviceTypeUnknown": "Neznana naprava",
"deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset",
"deviceTypeClassicBluetoothHeadset": "Klasične Bluetooth slušalke",
"deviceTypeBleBluetoothHeadset": "BLE Bluetooth slušalke",
"deviceTypeSmartVoiceRecorder": "Pametni glasovni snemalnik",
"deviceTypeSmartEye": "Smart Glasses",
"deviceTypeSmartEye": "Pametna očala",
"unbind": "Prekini povezavo",
"noDevicesBound": "Še ni povezanih naprav",
"pleaseBindDeviceFirst": "Najprej povežite napravo za upravljanje",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"noMacAddress": "Ni MAC naslova",
"licenseCode": "Licenčna koda",
"confirmUnbind": "Potrdi prekinitev povezave",
"confirmUnbindMessage":
"Ali ste prepričani, da želite prekiniti povezavo z napravo \"{deviceName}\"?",
@ -920,11 +925,11 @@ const Map<String, String> slSI = {
'generatedByAi': 'Generirano s strani AI',
// Agent模块 - 工具调用
'toolCall': 'Tool Call',
'noResult': 'No Result',
'noToolCallContentToCopy': 'No tool call content to copy',
'toolCallDetails': 'Tool Call Details:',
'toolCallContentCopied': 'Tool call content copied to clipboard',
'toolCall': 'Klic orodja',
'noResult': 'Ni rezultata',
'noToolCallContentToCopy': 'Ni vsebine klica orodja za kopiranje',
'toolCallDetails': 'Podrobnosti klica orodja:',
'toolCallContentCopied': 'Vsebina klica orodja kopirana v odložišče',
// Agent模块 - 音乐卡片
'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:',
@ -947,26 +952,26 @@ const Map<String, String> slSI = {
"tsransit": "Javni prevoz",
// Agent模块 - 导航选择
'selectNavigationApp': 'Select Navigation App',
'selectNavigationApp': 'Izberite navigacijsko aplikacijo',
'amapMap': 'Amap',
'useAmapNavigation': 'Navigate with Amap',
'useAmapNavigation': 'Navigiraj z Amap',
'baiduMap': 'Baidu Maps',
'useBaiduNavigation': 'Navigate with Baidu Maps',
'useBaiduNavigation': 'Navigiraj z Baidu Maps',
'googleMap': 'Google Maps',
'useGoogleNavigation': 'Navigate with Google Maps',
'useGoogleNavigation': 'Navigiraj z Google Maps',
'appleMap': 'Apple Maps',
'useAppleNavigation': 'Navigate with Apple Maps',
'builtInNavigation': 'Built-in Navigation',
'useBuiltInNavigation': 'Navigate with built-in map',
'useAppleNavigation': 'Navigiraj z Apple Maps',
'builtInNavigation': 'Vgrajena navigacija',
'useBuiltInNavigation': 'Navigiraj z vgrajenim zemljevidom',
'navigationStartFailed': 'Zagon navigacije ni uspel',
'cannotPlayMusicListRetryLater':
'Seznama glasbe ni mogoče predvajati, poskusite znova pozneje',
'cannotPlaySong': 'Cannot play song',
'cannotPlaySong': 'Ni mogoče predvajati pesmi',
'openMapError': 'Napaka pri odpiranju zemljevida',
'pleaseInstallAmapApp': 'Najprej namestite aplikacijo Amap',
'pleaseInstallBaiduMapApp': 'Najprej namestite aplikacijo Baidu Maps',
'appleMapStartFailed': 'Apple Maps se ni uspel zagnati',
'appleMapUnavailable': 'Apple Maps unavailable',
'appleMapUnavailable': 'Apple Maps ni na voljo',
'openAppleMapError': 'Napaka pri odpiranju Apple Maps',
// Agent模块 - 天气卡片
@ -1033,11 +1038,11 @@ const Map<String, String> slSI = {
"phoneUser": "Uporabnik telefona",
"selectSourceLanguage": "Izberi izvorni jezik",
"selectTargetLanguage": "Izberi ciljni jezik",
"me": "Me",
"counterPart": "Counterpart",
"me": "Jaz",
"counterPart": "Sogovornik",
"bluetoothCallStateError":
"Preverite, ali so Bluetooth slušalke povezane s telefonom in v stanju klica",
"autoDetect": "Auto Detect", // 自动检测
"autoDetect": "Samodejno zaznaj", // 自动检测
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Prepoznavanje jezika ni uspelo",
@ -1050,16 +1055,16 @@ const Map<String, String> slSI = {
'Za snemanje je potrebno dovoljenje mikrofona',
'deleteTranslationRecordError': 'Napaka pri brisanju zapisa prevoda: @error',
"translationFailed": "Prevajanje ni uspelo",
"translating": "Translating",
"translating": "Prevajanje",
"translate": "Prevedi",
"pleaseInputText": "Vnesite besedilo",
"inputTextToTranslate": "Vnesite besedilo za prevod",
"textTooLong": "Text too long, max 5000 characters",
"textTooLong": "Besedilo je predolgo, največ 5000 znakov",
// 翻译模块 - 历史记录
"noTranslationHistory": "Ni zgodovine",
"historyRecords": "Zgodovina",
"clearResults": "Clear Results",
"clearResults": "Počisti rezultate",
"clearHistory": "Počisti zgodovino",
"clearHistoryConfirm":
"Ali ste prepričani, da želite počistiti vso zgodovino prevodov? Tega dejanja ni mogoče razveljaviti.",
@ -1069,40 +1074,40 @@ const Map<String, String> slSI = {
"Ali ste prepričani, da želite izbrisati vse zapise prevodov za to sejo? Tega dejanja ni mogoče razveljaviti.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"selectImageSource": "Izberi vir slike",
"imagePreview": "Predogled slike",
"translationResult": "Rezultat prevoda",
"recognitionResult": "Recognition Result",
"recognitionResult": "Rezultat prepoznave",
"translatedImagePreview": "Predogled prevedene slike",
"translatedImageLoadFailed": "Prevedene slike ni bilo mogoče naložiti",
"pleaseSelectImage": "Izberite sliko",
"imageLoadFailed": "Nalaganje slike ni uspelo",
"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",
"imageQuality": "Kakovost slike",
"maxSize": "Največja velikost",
"close": "Zapri",
"setImageQuality": "Nastavi kakovost slike",
"currentQuality": "Trenutna kakovost: @value%",
"setMaxSize": "Nastavi največjo velikost",
"currentMaxSize": "Trenutno: @pxpx",
"waitingForAction": "Čakanje na dejanje",
"pleaseSelectImageToStart": "Za začetek izberite sliko",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"chooseImage": "Izberi sliko",
"openingCamera": "Odpiranje kamere...",
"openingPhotoAlbum": "Odpiranje fotoalbuma...",
"cancelled": "Preklicano",
"userCancelledSelection": "Uporabnik je preklical izbiro",
"translatingImage": "Prevajanje slike",
"callingImageTranslateService": "Klicanje storitve za prevajanje slik...",
"savingRecord": "Shranjevanje zapisa",
"savingTranslationResult": "Shranjevanje rezultata prevoda...",
"translationCompleted": "Prevajanje dokončano",
"allStepsCompleted": "All steps completed",
"allStepsCompleted": "Vsi koraki so dokončani",
"processingFailed": "Obdelava ni uspela",
"imageProcessingOrTranslationFailed":
"Obdelava slike ali prevajanje ni uspelo. Poskusite znova.\nNapaka: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Velikost slike presega omejitev 4 MB",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Velikost slike presega 4 MB. Znižajte kakovost ali dimenzije in poskusite znova",
"emptyTranslationResult": "API za prevajanje slik je vrnil prazen rezultat",
"imageTranslationFailedTryLater":
"Prevajanje slike ni uspelo. Težava z omrežjem ali omejitev hitrosti. Poskusite pozneje",
@ -1113,11 +1118,11 @@ const Map<String, String> slSI = {
"photoAlbumPermissionRequired":
"Za izbiro slik je potrebno dovoljenje za fotografije",
"translationDetails": "Podrobnosti prevoda",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": "Originalna slika",
"sourceLanguage": "Izvorni jezik",
"targetLanguage": "Ciljni jezik",
"translationTime": "Čas prevajanja",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": "Funkcija deljenja je v razvoju",
// 翻译模块 - 录音文件
"translateAudioFiles": "Prevedi zvočne datoteke",
@ -1170,8 +1175,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?',
'clean': 'Počisti predpomnilnik',
'cleanTips': 'Ali ste prepričani, da želite počistiti osebni predpomnilnik?',
'networkConnectionFailed':
'Napaka v omrežni povezavi, preverite nastavitve omrežja in poskusite znova',
'serverTemporarilyUnavailable':
@ -1229,8 +1234,8 @@ const Map<String, String> slSI = {
'locationPermissions': 'Dovoljenja za lokacijo',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'contacts': 'Stiki',
'notification': 'Obvestilo',
'alarm': 'Alarm',
'calendarWrite': 'Pisanje v koledar',
'calendarFullAccess': 'Poln dostop do koledarja',
@ -1238,7 +1243,7 @@ const Map<String, String> slSI = {
'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',
'Uporablja se za nastavitev natančnih alarmov, da se opomniki sprožijo pravočasno',
'calendarWritePermissionDesc':
'Uporablja se za ustvarjanje dogodkov in opomnikov v koledarju',
'calendarFullAccessPermissionDesc':
@ -1265,7 +1270,7 @@ const Map<String, String> slSI = {
'Upravljanje dogodkov v koledarju zahteva polno dovoljenje za koledar',
'locationPermissionDetailDesc':
'Pridobivanje informacij o lokaciji zahteva dovoljenje za lokacijo',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDesc': 'Uporablja se za dostop do informacij o stikih',
'contactsPermissionDetailDesc':
'Funkciji klicanja in SMS zahtevata dovoljenje za stike, da lahko izberete stike',
'bluetoothPermissionDesc':
@ -1280,7 +1285,7 @@ const Map<String, String> slSI = {
'Uporablja se za povezovanje z Bluetooth napravami',
'bluetoothConnectPermissionDetailDesc':
'Za povezovanje z Bluetooth napravami je potrebno dovoljenje za povezavo Bluetooth',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Uporablja se za pošiljanje obvestil',
'notificationPermissionDetailDesc':
'Aplikacija potrebuje dovoljenje za obvestila, da vam lahko pošilja pomembna opozorila in sporočila',
'appNeedsPermissionForFullFunction':
@ -1288,7 +1293,7 @@ const Map<String, String> slSI = {
'permanentDenialText':
'Trajno ste zavrnili dovoljenje za {permission}, pojdite v nastavitve aplikacije, da ga omogočite',
'goToSettings': 'Pojdi na nastavitve',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothScan': 'Skeniranje Bluetooth',
'bluetoothConnect': 'Povezava Bluetooth',
'bluetoothScanExplanation':
'Aplikacija potrebuje dovoljenje za skeniranje Bluetooth za iskanje bližnjih Bluetooth naprav.',
@ -1302,8 +1307,8 @@ const Map<String, String> slSI = {
'Dovoljenje za povezavo Bluetooth je bilo trajno zavrnjeno, pojdite v nastavitve in ga ročno omogočite.',
'locationPermanentDenial':
'Dovoljenje za lokacijo je bilo trajno zavrnjeno, pojdite v nastavitve in ga ročno omogočite.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermission': 'Obvestila',
'locationPermission': 'Lokacija',
'notificationPermissionExplanation':
'Dovoljenje za obvestila je potrebno za prikaz stanja predvajanja glasbe.',
'locationPermissionExplanation':
@ -1312,7 +1317,7 @@ const Map<String, String> slSI = {
'Trajno ste zavrnili dovoljenje za obvestila, pojdite v nastavitve in ga omogočite.',
'locationPermissionPermanentDenial':
'Trajno ste zavrnili dovoljenje za lokacijo, pojdite v nastavitve in ga omogočite.',
'storagePermission': 'Storage',
'storagePermission': 'Shramba',
'microphonePermissionExplanation':
'Potrebujemo dovoljenje mikrofona za snemanje zvočne vsebine.',
'storagePermissionExplanation':
@ -1321,7 +1326,7 @@ const Map<String, String> slSI = {
'Zaznali smo, da ste trajno zavrnili dovoljenje za mikrofon. Za nadaljnjo uporabo te funkcije pojdite v nastavitve aplikacije in ročno omogočite dovoljenje za mikrofon.',
'storagePermissionPermanentDenial':
'Zaznali smo, da ste trajno zavrnili dovoljenje za shrambo. Za nadaljnjo uporabo te funkcije pojdite v nastavitve aplikacije in ročno omogočite dovoljenje za shrambo.',
'permissionUtilNeed': 'Need ',
'permissionUtilNeed': 'Potrebno ',
'permissionUtilPermission': ' Dovoljenje',
'permissionUtilRestricted': ' Dovoljenje omejeno',
'permissionUtilRestrictedMessage':
@ -1484,14 +1489,14 @@ const Map<String, String> slSI = {
"Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaNewVersionFoundWithVersion': 'Najdena nova različica @version',
'otaConfirmUpdateNow': 'Posodobi zdaj?',
'otaUpdate': 'Posodobi',
'otaUpgradeSuccess': 'Nadgradnja uspešna',
'otaUpgradeCompleteRepair':
'Nadgradnja vdelane programske opreme dokončana!\n\nZa pravilno delovanje je treba napravo znova seznaniti. Želite zdaj na stran za seznanjanje?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'otaPairLater': 'Seznani pozneje',
'otaPairNow': 'Seznani zdaj',
'okConfirm': 'OK',
// OTA升级模块 - 设备检查
@ -1507,8 +1512,8 @@ const Map<String, String> slSI = {
'Ni mogoče pridobiti informacij o napravi, preverite povezavo naprave',
'otaCannotGetProductInfoWithName':
'Ni mogoče pridobiti informacij o izdelku, ime naprave: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaCannotGetBatteryInfo': 'Ni mogoče pridobiti podatkov o bateriji',
'otaLowBattery': 'Nizka baterija',
'otaSingleBatteryLow':
'Baterija naprave je prenizka za nadgradnjo vdelane programske opreme\nZahteva: baterija mora biti nad 20%\nTrenutno: @ear @battery%\nNapolnite in poskusite znova',
'otaDoubleBatteryLow':
@ -1517,7 +1522,7 @@ const Map<String, String> slSI = {
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'Ta posodobitev vključuje optimizacije zmogljivosti in popravke napak.',
'otaGetLatestVersionFailed':
'Pridobivanje informacij o najnovejši različici ni uspelo',
'otaGetVersionInfoFailed': 'Pridobivanje informacij o različici ni uspelo',
@ -1527,8 +1532,8 @@ const Map<String, String> slSI = {
'otaDownloadFailed': 'Prenos ni uspel',
'otaPreparingConnection': 'Priprava povezave naprave...',
'otaConnectingDevice': 'Povezovanje z napravo...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeStarted': 'Nadgradnja OTA se je začela...',
'otaUpgradeProgressWithPercent': 'Napredek nadgradnje: @percent%',
'otaUpgradeSuccessComplete': 'Nadgradnja je bila uspešno dokončana',
'otaUpgradeFailedWithCode': 'Nadgradnja ni uspela, koda napake: @code',
'otaUpgradeFailedTitle': 'Nadgradnja ni uspela',
@ -1692,15 +1697,15 @@ const Map<String, String> slSI = {
"东帝汶": "Vzhodni Timor",
"斐济": "Fidži",
"所罗门群岛": "Salomonovi otoki",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Demokratična republika Kongo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"马尔代夫": "Maldivi",
"不丹": "Butan",
"摩纳哥": "Monako",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"牙买加": "Jamajka",
"巴哈马": "Bahami",
"巴布亚新几内亚": "Papua Nova Gvineja",
"萨摩亚": "Samoa",
};

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

@ -265,11 +265,11 @@ const Map<String, String> tlPH = {
"exportInDevelopment": "Ginagawa pa ang pag-export ng data",
// 商品模块 - 通用
'availablePackages': 'Available Packages',
'remainingQuota': 'Remaining Quota',
'totalQuota': 'Total Quota',
'remaining': 'Remaining',
'featureDescription': 'Feature Description',
'availablePackages': 'Mga available na package',
'remainingQuota': 'Natitirang quota',
'totalQuota': 'Kabuuang quota',
'remaining': 'Natitira',
'featureDescription': 'Paglalarawan ng feature',
'paymentSuccess': 'Matagumpay ang pagbabayad',
'paymentFailed': 'Nabigo ang pagbabayad',
'gotIt': 'Naintindihan',
@ -330,7 +330,7 @@ const Map<String, String> tlPH = {
'alipayPaymentLaunchFailed': 'Hindi mabukas ang Alipay',
'cannotLaunchAlipayPayment': 'Hindi mabukas ang Alipay',
'alipayPaymentException': 'May problema sa Alipay',
"insufficientIntegral": "Insufficient integral",
"insufficientIntegral": "Kulang ang puntos",
"insufficientBalanceDesc":
"Kulang ang balanse, mangyaring pumunta sa kaukulang pahina ng pag-recharge upang mag-recharge.",
"recharge": "Pumunta sa Pag-recharge",
@ -338,30 +338,33 @@ const Map<String, String> tlPH = {
"Nag-expire na ang AI membership, mangyaring pumunta sa pahina ng membership recharge upang mag-renew.",
// 商品模块 - AI商品页
'musicAndRecommendation': 'Music & Recommendation',
'navigationAndRoutes': 'Navigation & Routes',
'nearbySearch': 'Nearby Search',
'newsInformation': 'News',
'communicationAssistant': 'Communication Assistant',
'musicAndRecommendation': 'Musika at rekomendasyon',
'navigationAndRoutes': 'Nabigasyon at mga ruta',
'nearbySearch': 'Paghahanap sa malapit',
'newsInformation': 'Balita',
'communicationAssistant': 'Katulong sa komunikasyon',
'aiHeaderDesc1':
'Longer conversation quota, more tool calls, extended context length.',
'Mas mahabang quota sa pag-uusap, mas maraming tool call, mas mahabang context.',
'aiHeaderDesc2':
'Suitable for agent Q&A, summarization, analysis, and task execution.',
'musicSearchPlaybackControl': 'Music library search and playback control',
'Angkop para sa Q&A ng agent, pagbubuod, pagsusuri, at pagsasagawa ng mga gawain.',
'musicSearchPlaybackControl':
'Paghahanap sa music library at kontrol sa playback',
'smartPlaylistAndSimilarRecommendations':
'Smart playlist and similar song recommendations',
'Matalinong playlist at rekomendasyon ng kahalintulad na kanta',
'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',
'Pagplano ng ruta at pag-iwas sa trapiko',
'voiceBroadcastAndWaypoints': 'Voice broadcast at mga setting ng waypoint',
'realTimeWeatherForecast': 'Real-time na panahon at forecast',
'clothingAdviceAndTravelReminders':
'Payo sa kasuotan at mga paalala sa biyahe',
'poiSearchFoodGasParking': 'Paghahanap ng POI: kainan / gas / parking',
'ratingsHoursAndDirectRoutes': 'Ratings, oras ng negosyo, at direktang ruta',
'hotNewsAndTopicOverview': 'Mainit na balita at buod ng paksa',
'longArticleSummariesAndKeyPoints':
'Buod ng mahahabang artikulo at mahahalagang punto',
'helpCallAndSMS': 'Tulong sa tawag at SMS',
'templatedMessagesAndScheduleReminders':
'Template messages and schedule reminders',
'Mga mensaheng template at naka-iskedyul na paalala',
'aiDisclaimer':
'Nakadepende ang mga feature sa mga pahintulot ng device, availability ng serbisyo, at kondisyon ng network.',
@ -388,21 +391,21 @@ const Map<String, String> tlPH = {
// 商品模块 - 会议商品页
'meetingRecording': 'Pagre-record ng pulong',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transkripsyon at buod',
'keywordSearch': 'Paghahanap ng keyword',
'collaborationSharing': 'Pakikipagtulungan at pag-share',
'meetingHeaderDesc1':
'Audio recording, transcription, keyword search, at auto summary para mapabilis ang kahusayan ng pulong.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'Angkop para sa mga business meeting, class notes, at minutes ng interview.',
'meetingAutoRecording': 'Awtomatikong pagre-record at pagse-segment',
'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',
'meetingSpeakerTagging': 'Pag-label ng tagapagsalita',
'meetingLongAudioTranscription': 'Transkripsyon ng mahabang audio',
'meetingKeyPointSummary': 'Pagkuha ng mahahalagang punto',
'meetingTopicNameSearch': 'Maghanap ayon sa paksa/pangalan',
'meetingTimelineJump': 'Tumalon sa timeline',
'meetingExportSummary': 'I-export ang minutes ng pulong',
'meetingMultiPlatformShare': 'I-share sa iba\'t ibang platform',
'meetingDisclaimer':
'Gamitin sa tahimik na lugar; nakadepende ang performance sa mikropono at network.',
@ -420,7 +423,7 @@ const Map<String, String> tlPH = {
'earlyAccessNewFeatures': 'Maagang access sa mga bagong feature',
'crossDeviceSync': 'Pag-sync sa iba’t ibang device',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Ang aktwal na benepisyo ay nakadepende sa detalye ng package at maaaring magbago ayon sa bersyon.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Basic 100',
@ -432,9 +435,12 @@ const Map<String, String> tlPH = {
'trans_001_name': 'Pangunahing Pagsasalin 100',
'trans_002_name': 'Pangunahing Pagsasalin 500',
'trans_003_name': 'Pangunahing Pagsasalin 1000',
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
'ai_002_desc': 'Includes 500 uses. Access core AI features.',
'ai_003_desc': 'Includes 1000 uses. Access core AI features.',
'ai_001_desc':
'Kasama ang 100 paggamit. I-access ang pangunahing AI feature.',
'ai_002_desc':
'Kasama ang 500 paggamit. I-access ang pangunahing AI feature.',
'ai_003_desc':
'Kasama ang 1000 paggamit. I-access ang pangunahing AI feature.',
'meet_001_desc': 'Kasama ang 100 pagre-record/pag-transcribe ng meeting.',
'meet_002_desc': 'Kasama ang 500 pagre-record/pag-transcribe ng meeting.',
'meet_003_desc': 'Kasama ang 1000 pagre-record/pag-transcribe ng meeting.',
@ -443,46 +449,50 @@ const Map<String, String> tlPH = {
'trans_003_desc': 'Kasama ang 1000 pagsasalin (boses/teksto).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'App: VoiTrans · Ibinigay ng: VoiTrans',
'iapCustomerServiceQQLabel': 'QQ ng customer service ng IAP: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
'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, ',
'guideWeatherStart': 'Tell Lily: “What’s the weather today?”',
'guideWeatherInput': 'What’s the weather today?',
'guideWeatherSend': 'Lily will report the weather in real time',
'guideWeatherEnd': 'Lily can report weather live—try other commands',
'guideMusicStart': 'Tell Lily: “Play some rock music”',
'guideMusicInput': 'Play some rock music',
'guideMusicSend': 'Lily will find music for you',
'guideMusicEnd': 'Lily found music—try other commands',
'guideNavStart': 'Tell Lily: “Navigate to Shenzhen Airport”',
'guideNavInput': 'Navigate to Shenzhen Airport',
'guideNavSend': 'Lily will plan the route',
'guideNavEnd': 'Navigation set—try other commands',
'next': 'Susunod',
'sayLilyHint': 'Sabihin ang "Lily Lily" sa mikropono',
'imHere': 'Nandito ako~',
'guideWelcomeWakeAI':
'Maligayang pagdating sa Voitrans! Una, gisingin ang AI mong “Lily”.',
'aiReplyCompleted': 'Tapos na ang sagot ni Lily!',
'aiThinking': 'Nag-iisip si Lily…',
'guideAwakenSuccess': 'Ayos! Gising na si Lily—magpatulong na.',
'confirmInput': 'Kumpirmahin ang input',
'guideClickSendPrefix': 'I-tap ang ipadala, ',
'guideWeatherStart': 'Sabihin kay Lily: “Ano ang panahon ngayon?”',
'guideWeatherInput': 'Ano ang panahon ngayon?',
'guideWeatherSend': 'Iuulat ni Lily ang panahon sa real time',
'guideWeatherEnd':
'Kaya ni Lily mag-ulat ng live na panahon—subukan ang iba pang utos',
'guideMusicStart': 'Sabihin kay Lily: “Magpatugtog ng rock na musika”',
'guideMusicInput': 'Magpatugtog ng rock na musika',
'guideMusicSend': 'Maghahanap si Lily ng musika para sa iyo',
'guideMusicEnd': 'Nakahanap na si Lily ng musika—subukan ang iba pang utos',
'guideNavStart':
'Sabihin kay Lily: “Mag-navigate papuntang Shenzhen Airport”',
'guideNavInput': 'Mag-navigate papuntang Shenzhen Airport',
'guideNavSend': 'Magpaplano si Lily ng ruta',
'guideNavEnd': 'Naitakda na ang nabigasyon—subukan ang iba pang utos',
'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',
'Sabihin kay Lily: “Gumawa ng meeting reminder para 3pm bukas”',
'guideMeetingInput': 'Gumawa ng meeting reminder para 3pm bukas',
'guideMeetingSend': 'Gagawa si Lily ng meeting reminder',
'guideMeetingEnd': 'Nagawa na ang reminder—subukan ang iba pang utos',
'guidePhoneStart': 'Sabihin kay Lily: “Tawagan si Nanay”',
'guidePhoneInput': 'Tawagan si Nanay',
'guidePhoneSend': 'Tatawagan ni Lily',
'guidePhoneEnd': 'Naitawag na—subukan ang iba pang utos',
'guideSmsStart':
'Sabihin kay Lily: “Mag-text kay Tatay: Uuwi ako para sa hapunan”',
'guideSmsInput': 'I-text si Tatay: Uuwi ako para sa hapunan',
'guideSmsSend': 'Ipapadala ni Lily ang mensahe',
'guideSmsEnd': 'Naipadala na ang mensahe—maginhawa ang voice control',
// Meeting模块 - 首页与导航
"startMeeting": "Simulan ang Pulong",
@ -496,17 +506,17 @@ const Map<String, String> tlPH = {
'recordingDetails': 'Mga Detalye ng Pag-record',
'aiSummary': 'Buod ng AI',
'meetingTranscript': 'Transkripsyon ng Pulong',
'files': 'Files',
'mine': 'Mine',
'files': 'Mga file',
'mine': 'Akin',
'connect': 'Kumonekta',
'allFiles': 'All Files',
'searchInAllFiles': 'Search in all files',
'allFiles': 'Lahat ng file',
'searchInAllFiles': 'Maghanap sa lahat ng file',
'from': 'Mula',
'sortBy': 'Iayos ayon sa',
'creationTime': 'Oras ng paggawa',
'bluetoothConnection': 'Koneksyon sa Bluetooth',
'meetingReconnect': 'Kumonekta muli',
'searching': 'Searching...',
'searching': 'Naghahanap...',
'searchFailed':
'Nabigo ang paghahanap, pakisuri kung naka-enable ang Bluetooth',
'aiPenNotFound': 'Hindi nakita ang AI PEN device',
@ -529,7 +539,7 @@ const Map<String, String> tlPH = {
'liveRecording': 'Live na pagre-record',
'audioVideoRecording': 'Pagre-record ng audio/video',
'callRecording': 'Pagre-record ng tawag',
'importAudio': 'Import Audio',
'importAudio': 'Mag-import ng audio',
'meetingRecordExitTitle': 'Lumabas sa Pag-record', // 退出录音
'meetingRecordExitMessage': 'Pumili ng aksyon pagkatapos umalis', // 请选择离开后的操作
'meetingRecordEndAndSave': 'Tapusin at I-save', // 结束录音并保存
@ -552,204 +562,205 @@ const Map<String, String> tlPH = {
'Para maipakita ang lumulutang na bar ng pagre-record (timer/pause/ituloy) habang nagre-record, kailangan namin ang overlay permission.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。
'overlayPermissionOpenSettingsFailed':
'Hindi awtomatikong mabuksan ang system settings. Pakibuksan ang Settings at i-enable nang manu-mano ang overlay permission.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。
'transcribing': 'Transcribing...',
'summarizing': 'Summarizing...',
'analyzing': 'Analyzing...',
'summaryComplete': 'Summary Complete',
'generate': 'Generate',
'overview': 'Overview',
'transcription': 'Transcription',
'summary': 'Summary',
'transcribing': 'Nagtatranscribe...',
'summarizing': 'Binubuod...',
'analyzing': 'Sinusuri...',
'summaryComplete': 'Tapos na ang buod',
'generate': 'Bumuo',
'overview': 'Pangkalahatang-ideya',
'transcription': 'Transkripsyon',
'summary': 'Buod',
'mindMap': 'Mind Map',
'editSpeaker': 'Edit',
'nameSpeaker': 'Name Speaker',
'editSpeaker': 'I-edit',
'nameSpeaker': 'Pangalanan ang tagapagsalita',
// Meeting模块 - 转写与总结
'reSummarize': 'Re-summarize',
'dateAndTime': 'Date & Time',
'location': 'Location',
'attendees': 'Attendees',
'inputLocation': 'Enter Location',
'inputAttendees': 'Enter Attendees',
'reSummarize': 'Muling ibuod',
'dateAndTime': 'Petsa at oras',
'location': 'Lokasyon',
'attendees': 'Mga dadalo',
'inputLocation': 'Ilagay ang lokasyon',
'inputAttendees': 'Ilagay ang mga dadalo',
// Meeting模块 - 模版与生成
'selectSummaryTemplate': 'Select Summary Template',
'useThisTemplate': 'Use This Template',
'lastUsed': 'Last Used',
'selectSummaryTemplate': 'Pumili ng template ng buod',
'useThisTemplate': 'Gamitin ang template na ito',
'lastUsed': 'Huling ginamit',
'create': 'Gumawa',
'templateDetails': 'Mga Detalye ng Template',
'templateDetails': 'Mga detalye ng plantilla',
'tag': 'Tag',
'description': 'Paglalarawan',
'template': 'Template',
'deleteTemplate': 'Tanggalin ang Template',
'template': 'Plantilla',
'deleteTemplate': 'Tanggalin ang plantilla',
'deleteTemplateConfirm':
'Sigurado ka bang gusto mong tanggalin ang template na ito?',
'editTemplate': 'I-edit ang Template',
'createTemplate': 'Gumawa ng Template',
'Sigurado ka bang gusto mong tanggalin ang plantilla na ito?',
'editTemplate': 'I-edit ang plantilla',
'createTemplate': 'Gumawa ng plantilla',
'name': 'Pangalan',
'templateContentHint':
'Pakiusap maglagay ng nilalaman ng template! Tip: Pindutin ang AI button sa itaas para mabilis na bumuo ng nilalaman ng template batay sa pangalan at paglalarawan na inilagay mo',
'Pakiusap maglagay ng nilalaman ng plantilla! Tip: Pindutin ang AI button sa itaas para mabilis na bumuo ng nilalaman ng plantilla batay sa pangalan at paglalarawan na inilagay mo',
'inputNameHint': 'Pakiusap maglagay ng pangalan',
'inputDescHint': 'Pakiusap maglagay ng paglalarawan',
'custom': 'Pasadya',
'pleaseEnter': 'Mangyaring ilagay',
'viewAll': 'Tingnan lahat',
'recordingLanguage': 'Wika ng pagre-record',
'chineseSimplified': 'Chinese Mandarin (Simplified)',
'meetingGenerateNow': 'Generate Now',
'chineseSimplified': 'Chinese Mandarin (Pinasimple)',
'meetingGenerateNow': 'Bumuo ngayon',
'keyEventsAnalyzed': 'Analyzed {count} key events.',
'aiAnalysisDesc':
'Tinutukoy ng AI analysis ang mga pangunahing pangyayari sa mga recording, na nagbibigay-daan sa iyo na pumili ng mahahalagang pangyayari para sa AI generation.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'Ini-import...',
'batchImporting': 'Ini-import nang maramihan...',
'importingLocalRecordings': 'Ini-import ang mga lokal na recording...',
'importFailed':
'Nabigo ang pag-import ng file: {filePath}, kamalian: {error}',
'importSuccess': 'Matagumpay na na-import ang {count} lokal na recording',
'importError': 'Nabigo ang pag-import: {error}',
'pleaseSelectAudioFile': 'Mangyaring pumili ng audio file',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'I-share ang audio ng pulong',
'shareComplete': 'Tapos na ang pag-share!',
'shareFailed': 'Nabigo ang pag-share: {error}',
'fileProcessingFailed':
'Nabigo ang pagproseso ng file: {filePath}, kamalian: {error}',
// Meeting模块 - 思维导图
'saveMindMap': 'I-save ang Mind Map',
'shareMindMap': 'Share Mind Map',
'shareMindMap': 'I-share ang Mind Map',
'shareSuccess': 'Matagumpay ang pag-share',
// Meeting模块 - AI问答
'askAI': 'Ask AI ...',
'askAIPrompt': 'What can I help you with today?',
'continueAsk': 'Continue Asking',
'todoList': 'To-Do List',
'extractConclusion': 'Extract Conclusion',
'generateKeyIndicators': 'Generate Key Indicators',
'askAI': 'Magtanong sa AI ...',
'askAIPrompt': 'Ano ang maitutulong ko sa iyo ngayon?',
'continueAsk': 'Magpatuloy sa pagtatanong',
'todoList': 'Listahan ng gagawin',
'extractConclusion': 'Kunin ang konklusyon',
'generateKeyIndicators': 'Bumuo ng mga pangunahing sukatan',
// Meeting模块 - 分享与导出
'shareLink': 'Share Link',
'copyTranscript': 'Copy Transcript',
'copySummary': 'Copy Summary',
'exportAudio': 'Export Audio',
'exportTranscript': 'Export Transcript',
'shareMeetingAudio': 'Share Meeting Audio',
'exportSummary': 'Export Summary',
'exportAs': 'Export As',
'exportingPDF': 'Exporting PDF...',
'shareLink': 'I-share ang link',
'copyTranscript': 'Kopyahin ang transcript',
'copySummary': 'Kopyahin ang buod',
'exportAudio': 'I-export ang audio',
'exportTranscript': 'I-export ang transcript',
'shareMeetingAudio': 'I-share ang audio ng pulong',
'exportSummary': 'I-export ang buod',
'exportAs': 'I-export bilang',
'exportingPDF': 'Ini-export ang PDF...',
'export': 'I-export',
// Meeting模块 - 发言者
'applyToAllParagraphs': 'Ilapat sa lahat ng talata ng tagapagsalitang ito',
'summaryWillBeUpdatedAutomatically':
'Awtomatikong maa-update ang buod batay sa template',
'nameCurrentSpeaker': 'Name Current Speaker',
'recentlyUsedNames': 'Recently Used Names',
'applyToCurrentParagraph': 'Apply to Current Paragraph',
'totalTime': 'Total Time',
'nameCurrentSpeaker': 'Pangalanan ang kasalukuyang tagapagsalita',
'recentlyUsedNames': 'Mga kamakailang ginamit na pangalan',
'applyToCurrentParagraph': 'Ilapat sa kasalukuyang talata',
'totalTime': 'Kabuuang oras',
'summarySpeakerWillBeUpdatedAutomatically':
'Summary speakers will be updated automatically',
'Awtomatikong maa-update ang mga tagapagsalita sa buod',
// Meeting模块 - 云端同步
'syncToCloud': 'Sync to Cloud',
'syncToCloud': 'I-sync sa cloud',
'syncToCloudTip':
'Awtomatikong i-sync ang iyong mga recording sa cloud; maaari mong i-play, i-manage, at i-share ang mga ito sa anumang VOITRANS app o VOITRANS Web (web.voitrans.com).',
'syncToVoitransApp': 'Sync VOITRANS APP',
'transcriptionRecord': 'Record ng transkripsyon',
'syncToVoitransApp': 'I-sync ang VOITRANS app',
'transcriptionRecord': 'Talaan ng transkripsyon',
// Meeting模块 - 我的页面
'transcriptionRecords': 'Mga record ng transkripsyon',
'templateCommunity': 'Template Community',
'comingSoon': 'Coming Soon',
'integration': 'Integration',
'templateCommunity': 'Komunidad ng plantilla',
'comingSoon': 'Darating na',
'integration': 'Integrasyon',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': 'Naka-enable',
'disabled': 'Naka-disable',
'myVoitransDevice': 'Aking VOITRANS device',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'helpAndFeedback': 'Tulong at feedback',
'aboutVoitrans': 'Tungkol sa VOITRANS',
'meetingDays': 'Mga araw',
'meetingHours': 'Mga oras',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'bindDeviceToActivate':
'I-bind ang Voitrans device para i-activate ang Starter membership',
'unlockNow': 'Unlock Now',
'unlockNow': 'I-unlock ngayon',
// Meeting模块 - 会员与升级
'comparison': 'Comparison',
'detailedInfo': 'Detailed Information',
'monthlyTranscriptionTime': 'Monthly Transcription Time',
'unlimited': 'Unlimited',
'professionalTemplates': 'Professional Templates',
'limited': 'Limited',
'fullTemplates': 'Full Templates',
'comparison': 'Paghahambing',
'detailedInfo': 'Detalyadong impormasyon',
'monthlyTranscriptionTime': 'Buwanang oras ng transkripsyon',
'unlimited': 'Walang limit',
'professionalTemplates': 'Mga propesyonal na template',
'limited': 'May limit',
'fullTemplates': 'Kumpletong template',
'professionalTerms': 'Professional Terms',
'customTemplates': 'Custom Templates',
'customTemplates': 'Pasadyang template',
'visualMindMap': 'Visual Mind Map',
'speakerIdentification': 'Speaker Identification',
'aiVoiceEnhancement': 'AI Voice Enhancement',
'audioImport': 'Audio Import',
'multipleExportFormats': 'Multiple Export Formats',
'professionalSummaryTemplates': 'Professional Summary Templates',
'audioImport': 'Pag-import ng audio',
'multipleExportFormats': 'Maramihang format ng export',
'professionalSummaryTemplates': 'Mga propesyonal na template ng buod',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'Propesyonal na disenyo ng template para mapataas ang iyong kahusayan sa trabaho. Nakaayon sa pangangailangan ng industriya.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Maaari mong i-customize ang mga prompt ng buod ayon sa iyong pangangailangan at gamitin ito para bumuo ng kinakailangang mga buod.',
'askAiDesc':
'Matalinong kumuha ng mas malalim na impormasyon mula sa mga recording, gumawa ng mga data table, pangunahing konklusyon ng diskusyon, To-Do list, report email at iba pang naka-format na nilalaman sa isang click.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Higit pa sa mga buod: ayusin at i-visualize ang mahahalagang punto gamit ang mind map para mas madaling maunawaan ang buong teksto.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Tuklasin, ibahagi, at kumuha ng inspirasyon mula sa library ng template na ginawa ng mga user.',
'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.',
'Susuportahan ng transkripsyon ng audio ang pagkilala sa tagapagsalita para mas malinaw na maibalik ang nilalaman ng meeting o tawag. Mas magiging tumpak din ang buod.',
'privateCloudSyncDesc':
'Ang iyong mga recording at transcription ay ligtas na iiimbak sa mga dedikadong cloud server, na may ganap na encryption sa pag-upload at pag-download upang matiyak ang privacy at seguridad.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'Sinusuportahan ng AI voice enhancement ang iba\'t ibang setting ng noise reduction, matalinong inaalis ang ingay sa background, pinapalinaw ang boses, at pinapaganda ang kalidad ng playback.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Madaling mag-import ng mga audio file mula sa lokal o third-party app, gaya ng voice memos, Google Drive, atbp.',
'multipleExportFormatsDesc':
'I-export ang iyong mga audio recording, transcription text at summary sa iba\'t ibang format (TXT, PDF, JPEG) upang matugunan ang iyong mga pangangailangan.',
'upgradeMembership': 'Upgrade Your Membership',
'yearlySubscription': 'Yearly Subscription',
'monthlySubscription': 'Monthly Subscription',
'proMonthly': 'Pro ¥60/month',
'upgradeMembership': 'I-upgrade ang membership',
'yearlySubscription': 'Taunang subscription',
'monthlySubscription': 'Buwanang subscription',
'proMonthly': 'Pro ¥60/buwan',
'proMonthlyDesc':
'7-day free trial, then ¥800/year. Cancel anytime before trial ends.',
'sevenDayTrial': '7-day Free Trial',
'unlimitedMonthly': 'Unlimited ¥120/month',
'Libreng trial sa loob ng 7 araw, pagkatapos ay ¥800/taon. Maaaring kanselahin bago matapos ang trial.',
'sevenDayTrial': '7-araw na libreng trial',
'unlimitedMonthly': 'Walang limit ¥120/buwan',
'unlimitedMonthlyDesc':
'7-day free trial, then ¥1600/year. Cancel anytime before trial ends.',
'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.',
'Libreng trial sa loob ng 7 araw, pagkatapos ay ¥1600/taon. Maaaring kanselahin bago matapos ang trial.',
'trialNote':
'*7-araw na libreng trial, pagkatapos ay taunang singil; maaaring kanselahin anumang oras.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'subscribe': 'Subscribe',
'proMonthlyPrice': '¥120/buwan',
'subscribe': 'Mag-subscribe',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/buwan',
'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: ',
'*Pagkatapos i-upgrade ang subscription, awtomatikong kakalkulahin ang natitirang araw ng dating subscription at ire-refund sa iyong payment account',
'buyMoreTranscriptionTime': 'Bumili ng dagdag na oras ng transkripsyon',
'sixThousandMinutes': '6,000 minuto',
'threeThousandMinutes': '3,000 minuto',
'sixHundredMinutes': '600 minuto',
'oneHundredTwentyMinutes': '120 minuto',
'validityPeriod': '*Panahon ng bisa: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Awtomatikong maa-activate pagkatapos bumili, at valid sa loob ng 2 taon pagkatapos ma-activate.',
'purchase': 'Bumili',
// Meeting模块 - 录音语言
'recordLanguage': 'Wika ng pagre-record',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantones',
'sichuan': 'Dayalekto ng Sichuan',
'shanghai': 'Dayalekto ng Shanghai',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Hindi kilalang wika',
'analysisFailed': 'Nabigo ang pagsusuri, pakisubukang muli mamaya',
'transcriptionFailed': 'Nabigo ang transcription, pakisubukang muli mamaya',
'summaryFailed': 'Nabigo ang buod, pakisubukang muli mamaya',
@ -833,11 +844,11 @@ const Map<String, String> tlPH = {
"unbind": "Alisin sa pagkaka-bind",
"noDevicesBound": "Wala pang naka-bind na device",
"pleaseBindDeviceFirst": "Mangyaring mag-bind muna ng device para pamahalaan",
"noMacAddress": "No MAC Address",
"licenseCode": "License Code",
"confirmUnbind": "Confirm Unbind",
"confirmUnbindMessage": "Are you sure you want to unbind device \\",
"confirmUnbindAction": "Confirm Unbind",
"noMacAddress": "Walang MAC Address",
"licenseCode": "Code ng lisensya",
"confirmUnbind": "Kumpirmahin ang pag-unbind",
"confirmUnbindMessage": "Sigurado ka bang gusto mong i-unbind ang device \\",
"confirmUnbindAction": "Kumpirmahin ang pag-unbind",
// Agent模块 - 主界面
"Lily": "Lily",
@ -1074,7 +1085,7 @@ const Map<String, String> tlPH = {
"clearHistoryConfirm":
"Sigurado ka bang gusto mong burahin ang lahat ng kasaysayan ng pagsasalin? Hindi na ito maibabalik.",
"unknownLanguage": "Hindi Kilalang Wika",
"deleteSessionRecord": "Burahin ang Record ng Session",
"deleteSessionRecord": "Burahin ang talaan ng session",
"deleteSessionConfirm":
"Sigurado ka bang gusto mong burahin ang lahat ng record ng pagsasalin para sa session na ito? Hindi na ito maibabalik.",
@ -1158,7 +1169,7 @@ const Map<String, String> tlPH = {
"regenerate": "Muling buuin",
"summaryTimeoutMessage":
"Nag-time out ang kahilingan sa pagbuo ng buod, maaaring dahil sa problema sa network o abala ang server.",
"deleteTranslationRecord": "Burahin ang Record ng Pagsasalin",
"deleteTranslationRecord": "Burahin ang talaan ng pagsasalin",
"deleteTranslationConfirm":
"Sigurado ka bang gusto mong burahin ang record ng pagsasalin na ito? Hindi na ito maibabalik.",
"originalText": "Orihinal na Teksto",
@ -1166,7 +1177,7 @@ const Map<String, String> tlPH = {
"sessionSummary": "Buod ng Session",
"cannotShare": "Hindi maibahagi",
"generateSummaryFirst": "Mangyaring bumuo muna ng buod",
"translationSessionRecord": "Record ng Session ng Pagsasalin",
"translationSessionRecord": "Talaan ng session ng pagsasalin",
// 个人资料模块
"editProfile": "I-edit ang Personal na Impormasyon",
@ -1245,16 +1256,16 @@ const Map<String, String> tlPH = {
'locationPermissions': 'Mga Pahintulot sa Lokasyon',
'phone': 'Telepono',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'contacts': 'Mga contact',
'notification': 'Abiso',
'alarm': 'Alarm',
'calendarWrite': 'Pagsulat sa Kalendaryo',
'calendarFullAccess': 'Buong Access sa Kalendaryo',
'calendarFullAccess': 'Buong pahintulot 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',
'Ginagamit para mag-set ng eksaktong alarm upang masigurong tumunog ang mga paalala sa oras',
'calendarWritePermissionDesc':
'Ginagamit para sa paglikha ng mga kaganapan at paalala sa kalendaryo',
'calendarFullAccessPermissionDesc':
@ -1319,8 +1330,8 @@ const Map<String, String> tlPH = {
'Permanenteng tinanggihan ang pahintulot sa Bluetooth connect, mangyaring pumunta sa mga setting para paganahin ito nang manu-mano.',
'locationPermanentDenial':
'Permanenteng tinanggihan ang pahintulot sa lokasyon, mangyaring pumunta sa mga setting para paganahin ito nang manu-mano.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermission': 'Abiso',
'locationPermission': 'Lokasyon',
'notificationPermissionExplanation':
'Kailangan ang pahintulot sa notification para ipakita ang status ng pagpe-play ng musika.',
'locationPermissionExplanation':
@ -1329,7 +1340,7 @@ const Map<String, String> tlPH = {
'Permanenteng tinanggihan mo ang pahintulot sa notification, mangyaring pumunta sa mga setting para paganahin ito.',
'locationPermissionPermanentDenial':
'Permanenteng tinanggihan mo ang pahintulot sa lokasyon, mangyaring pumunta sa mga setting para paganahin ito.',
'storagePermission': 'Storage',
'storagePermission': 'Imbakan',
'microphonePermissionExplanation':
'Kailangan namin ang pahintulot sa mikropono para mag-record ng audio content.',
'storagePermissionExplanation':
@ -1450,14 +1461,15 @@ const Map<String, String> tlPH = {
'iKnow': 'Naiintindihan ko', // 我知道了
// 配对模块 - 绑定奖励
"firstBindRewardTitle": "Pembelian Terlebih Dahulu",
"firstBindRewardDesc": "Anda telah menerima premi binding.",
"vipLevelLabel": "Level VIP:",
"firstBindRewardTitle": "Gantimpala sa pag-bind",
"firstBindRewardDesc":
"Naibigay na ang gantimpala para sa unang pag-bind ng device.",
"vipLevelLabel": "Antas ng VIP:",
"expiryLabel": "Petsa ng pag-expire:",
"notActivated": "Belum diaktifkan",
"aiChatCreditsLabel": "Kredit Chat AI:",
"notActivated": "Hindi pa na-activate",
"aiChatCreditsLabel": "Mga Kredito sa AI Chat:",
"translationCreditsLabel": "Mga Kredito sa Pagsasalin:",
"meetingCreditsLabel": "Kredity meeting:",
"meetingCreditsLabel": "Mga Kredito sa Meeting:",
"ok": "OK",
// 用户反馈模块
@ -1548,8 +1560,8 @@ const Map<String, String> tlPH = {
'otaDownloadFailed': 'Nabigo ang pag-download',
'otaPreparingConnection': 'Inihahanda ang koneksyon ng device...',
'otaConnectingDevice': 'Kumokonekta sa device...',
'otaUpgradeStarted': 'OTA upgrade started...',
'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%',
'otaUpgradeStarted': 'Nagsimula na ang OTA upgrade...',
'otaUpgradeProgressWithPercent': 'Progress ng upgrade: @percent%',
'otaUpgradeSuccessComplete': 'Matagumpay na natapos ang pag-upgrade',
'otaUpgradeFailedWithCode': 'Nabigo ang pag-upgrade, code ng error: @code',
'otaUpgradeFailedTitle': 'Nabigo ang pag-upgrade',
@ -1677,7 +1689,7 @@ const Map<String, String> tlPH = {
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"哥斯达黎加": "Kosta Rika",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",

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

@ -369,31 +369,31 @@ const Map<String, String> trTR = {
'lowLatencyVoiceBroadcast': 'Düşük gecikmeli sesli yayın',
'multiLangTextTranslation': 'Çok dilli metin çevirisi',
'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',
'Terminoloji optimizasyonu ve bağlam koruma',
'lexiconTourBusinessLife': 'Seyahat/İş/Yaşam sözlükleri',
'personalVocabularyMemory': 'Kişisel kelime hafızası',
'conversationSubtitleLargeText': 'Konuşma altyazıları / Büyük metin modu',
'colorHighContrast': 'Yüksek renk kontrastı',
'transDisclaimer':
'Çeviri performansı mikrofona, ağ gecikmesine ve ortam gürültüsüne bağlıdır.',
// 商品模块 - 会议商品页
'meetingRecording': 'Toplantı Kaydı',
'transcriptionAndSummary': 'Transcription & Summary',
'keywordSearch': 'Keyword Search',
'collaborationSharing': 'Collaboration & Sharing',
'transcriptionAndSummary': 'Transkripsiyon ve Özet',
'keywordSearch': 'Anahtar Kelime Araması',
'collaborationSharing': 'İşbirliği ve Paylaşım',
'meetingHeaderDesc1':
'Toplantı verimliliğini artırmak için ses kaydı, transkripsiyon, anahtar kelime araması ve otomatik özet.',
'meetingHeaderDesc2':
'Suitable for business meetings, class notes, and interview minutes.',
'İş toplantıları, ders notları ve mülakat tutanakları için uygundur.',
'meetingAutoRecording': 'Otomatik kayıt ve bölümleme',
'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',
'meetingSpeakerTagging': 'Konuşmacı etiketleme',
'meetingLongAudioTranscription': 'Uzun ses transkripsiyonu',
'meetingKeyPointSummary': 'Anahtar nokta çıkarımı',
'meetingTopicNameSearch': 'Konu/isme göre arama',
'meetingTimelineJump': 'Zaman çizelgesine atlama',
'meetingExportSummary': 'Tutanakları dışa aktar',
'meetingMultiPlatformShare': 'Platformlar arası paylaşım',
'meetingDisclaimer':
'Sessiz ortamlarda kullanın; performans mikrofona ve ağa bağlıdır.',
@ -435,7 +435,7 @@ const Map<String, String> trTR = {
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'iapCustomerServiceQQLabel': 'IAP müşteri hizmetleri QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -455,10 +455,10 @@ const Map<String, String> trTR = {
'guideWeatherSend': 'Lily hava durumunu gerçek zamanlı bildirir',
'guideWeatherEnd':
'Lily canlı hava durumu bildirir — diğer komutları deneyin',
'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',
'guideMusicStart': 'Lily\'e söyleyin: \u201cBiraz rock müziği çal\u201d',
'guideMusicInput': 'Biraz rock müziği çal',
'guideMusicSend': 'Lily sizin için müzik bulacak',
'guideMusicEnd': 'Lily müzik buldu \u2014 diğer komutları deneyin',
'guideNavStart': 'Lily\'e söyleyin: “Shenzhen Havalimanı\'na navigasyon”',
'guideNavInput': 'Shenzhen Havalimanı\'na navigasyon',
'guideNavSend': 'Lily rotayı planlayacak',
@ -522,7 +522,7 @@ const Map<String, String> trTR = {
'liveRecording': 'Canlı Kayıt',
'audioVideoRecording': 'Ses/Video Kaydı',
'callRecording': 'Arama Kaydı',
'importAudio': 'Import Audio',
'importAudio': 'Ses İçe Aktar',
'meetingRecordExitTitle': 'Kayıttan Çık', // 退出录音
'meetingRecordExitMessage':
'Lütfen ayrıldıktan sonra bir işlem seçin', // 请选择离开后的操作
@ -594,15 +594,15 @@ const Map<String, String> trTR = {
'AI analizi kayıtlardaki önemli olayları belirler ve AI oluşturma için önemli olayları seçmenizi sağlar.',
// Meeting模块 - 文件操作
'importing': 'Importing...',
'batchImporting': 'Batch importing...',
'importing': 'İçe aktarılıyor...',
'batchImporting': 'Toplu içe aktarılıyor...',
'importingLocalRecordings': 'Yerel kayıtlar içe aktarılıyor...',
'importFailed': 'Dosya içe aktarılamadı: {filePath}, hata: {error}',
'importSuccess': '{count} yerel kayıt başarıyla içe aktarıldı',
'importError': 'İçe aktarma başarısız: {error}',
'pleaseSelectAudioFile': 'Lütfen bir ses dosyası seçin',
'shareAudio': 'Share Meeting Audio',
'shareComplete': 'Share complete!',
'shareAudio': 'Toplantı Sesini Paylaş',
'shareComplete': 'Paylaşım tamamlandı!',
'shareFailed': 'Paylaşım başarısız: {error}',
'fileProcessingFailed': 'Dosya işleme başarısız: {filePath}, hata: {error}',
@ -658,15 +658,15 @@ const Map<String, String> trTR = {
'enabled': 'Etkin',
'disabled': 'Devre Dışı',
'myVoitransDevice': 'VOITRANS Cihazım',
'helpAndFeedback': 'Help & Feedback',
'aboutVoitrans': 'About VOITRANS',
'meetingDays': 'Days',
'meetingHours': 'Hours',
'voitransAiMember': 'Voitrans AI Member',
'unlockStarterMember': 'Unlock Starter Member',
'helpAndFeedback': 'Yardım ve Geri Bildirim',
'aboutVoitrans': 'VOITRANS Hakkında',
'meetingDays': 'Gün',
'meetingHours': 'Saat',
'voitransAiMember': 'Voitrans AI Üyesi',
'unlockStarterMember': 'Başlangıç Üyeliğini Aç',
'bindDeviceToActivate':
'Starter üyeliğini etkinleştirmek için Voitrans cihazını bağlayın',
'unlockNow': 'Unlock Now',
'unlockNow': 'Şimdi Aç',
// Meeting模块 - 会员与升级
'comparison': 'Karşılaştırma',
@ -685,23 +685,23 @@ const Map<String, String> trTR = {
'multipleExportFormats': 'Birden Çok Dışa Aktarma Formatı',
'professionalSummaryTemplates': 'Profesyonel Özet Şablonları',
'professionalTemplateDesc':
'Professional template design to improve your work efficiency. Customized according to industry needs.',
'İş verimliliğinizi artırmak için profesyonel şablon tasarımı. Sektör ihtiyaçlarına göre özelleştirilmiş.',
'customTemplateDesc':
'You can customize summary prompts according to your needs and use them to generate the required summaries.',
'Özet istemlerini ihtiyaçlarınıza göre özelleştirebilir ve gerekli özetleri oluşturmak için kullanabilirsiniz.',
'askAiDesc':
'Kayıtlardan daha derin bilgileri akıllıca çıkarın; veri tabloları, temel tartışma sonuçları, yapılacaklar listeleri, rapor e-postaları ve diğer biçimlendirilmiş içerikleri tek tıkla oluşturun.',
'visualMindMapDesc':
'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.',
'Özetlerin ötesine geçin - zihin haritalarıyla temel noktaları düzenleyin ve görselleştirerek tam metni daha etkin anlayın.',
'templateCommunityDesc':
'Discover, share, and get inspiration from the template library created by users.',
'Kullanıcılar tarafından oluşturulan şablon kitaplığından ilham alın, keşfedin ve paylaşın.',
'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.',
'Ses transkripsiyonu konuşmacı tanımlama özelliğini destekleyecek, toplantı veya telefon görüşmesi içeriğini daha sezgisel biçimde geri yükleyecek. Aynı zamanda özet daha doğru olacaktır.',
'privateCloudSyncDesc':
'Kayıtlarınız ve transkripsiyonlarınız, gizlilik ve güvenliği sağlamak için yükleme ve indirme sırasında tam şifreleme ile özel bulut sunucularında güvenli şekilde saklanır.',
'aiVoiceEnhancementDesc':
'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.',
'AI ses iyileştirme, birden fazla gürültü azaltma ayarını destekler, arka plan gürültüsünü akıllıca ortadan kaldırır, ses netliğini artırır ve ses oynatma kalitesini iyileştirir.',
'audioImportDesc':
'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.',
'Sesli notlar, Google Drive gibi yerel veya üçüncü taraf uygulamalardan ses dosyalarını kolayca içe aktarın.',
'multipleExportFormatsDesc':
'Ses kayıtlarınızı, transkripsiyon metinlerinizi ve özetlerinizi ihtiyaçlarınıza uygun çeşitli formatlarda (TXT, PDF, JPEG) dışa aktarın.',
'upgradeMembership': 'Üyeliğinizi Yükseltin',
@ -723,24 +723,24 @@ const Map<String, String> trTR = {
'unlimitedMonthlyPrice': '¥198/ay',
'upgradeNote':
'*Aboneliği yükselttikten sonra, mevcut aboneliğin kalan günleri otomatik olarak hesaplanır ve ödeme hesabınıza iade edilir',
'buyMoreTranscriptionTime': 'Buy More Transcription Time',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'validityPeriod': '*Validity Period: ',
'buyMoreTranscriptionTime': 'Daha Fazla Transkripsiyon Süresi Satın Al',
'sixThousandMinutes': '6.000 dakika',
'threeThousandMinutes': '3.000 dakika',
'sixHundredMinutes': '600 dakika',
'oneHundredTwentyMinutes': '120 dakika',
'validityPeriod': '*Geçerlilik Süresi: ',
'validityNote':
'Activated immediately after purchase, valid for 2 years after activation.',
'purchase': 'Purchase',
'Satın alma işleminin hemen ardından etkinleştirilir, etkinleştirmeden itibaren 2 yıl geçerlidir.',
'purchase': 'Satın Al',
// Meeting模块 - 录音语言
'recordLanguage': 'Kayıt Dili',
'cantonese': 'Cantonese',
'sichuan': 'Sichuan Dialect',
'shanghai': 'Shanghai Dialect',
'cantonese': 'Kantonca',
'sichuan': 'Sichuan Lehçesi',
'shanghai': 'Şangay Lehçesi',
// Meeting模块 - 错误提示
'meetingUnknownLanguage': 'Unknown Language',
'meetingUnknownLanguage': 'Bilinmeyen Dil',
'analysisFailed': 'Analiz başarısız oldu, lütfen daha sonra tekrar deneyin',
'transcriptionFailed':
'Transkripsiyon başarısız oldu, lütfen daha sonra tekrar deneyin',
@ -757,11 +757,11 @@ const Map<String, String> trTR = {
// 设置页
"systemSettings": "Sistem Ayarları",
"vipRecharge": "Premium Üye Recharge",
"aiRecharge": "Premium Üye",
"translationRecharge": "Çeviri Toplantı Recharge",
"meetingAssistantRecharge": "Toplantı Asistanı Recharge",
"cloudSync": "Bulut Sincronizasyonu",
"vipRecharge": "VIP Üyelik Yükleme",
"aiRecharge": "AI Yükleme",
"translationRecharge": "Çeviri Yükleme",
"meetingAssistantRecharge": "Toplantı Yükleme",
"cloudSync": "Bulut Senkronizasyonu",
"memberService": "Üye Hizmeti",
"bindRewardTitle": "Ödüller",
"bindRewardSimpleDesc":
@ -1032,11 +1032,11 @@ const Map<String, String> trTR = {
"phoneUser": "Telefon Kullanıcısı",
"selectSourceLanguage": "Kaynak Dil Seç",
"selectTargetLanguage": "Hedef Dil Seç",
"me": "Me",
"counterPart": "Counterpart",
"me": "Ben",
"counterPart": "Karşı Taraf",
"bluetoothCallStateError":
"Lütfen Bluetooth kulaklığın telefona bağlı olduğundan ve arama durumunda olduğundan emin olun",
"autoDetect": "Auto Detect", // 自动检测
"autoDetect": "Otomatik Algıla", // 自动检测
// 翻译模块 - 悬浮窗与权限
'disableFloatingWindow': 'Yüzen Pencereyi Devre Dışı Bırak',
@ -1048,16 +1048,16 @@ const Map<String, String> trTR = {
// 翻译模块 - 文本翻译
"languageDetectionFailed": "Dil algılama başarısız",
"translationFailed": "Çeviri başarısız",
"translating": "Translating",
"translating": "Çevriliyor",
"translate": "Çevir",
"pleaseInputText": "Lütfen metin girin",
"inputTextToTranslate": "Lütfen çevrilecek metni girin",
"textTooLong": "Text too long, max 5000 characters",
"textTooLong": "Metin çok uzun, maksimum 5000 karakter",
// 翻译模块 - 历史记录
"noTranslationHistory": "Henüz geçmiş yok",
"historyRecords": "Geçmiş Kayıtlar",
"clearResults": "Clear Results",
"clearResults": "Sonuçları Temizle",
"clearHistory": "Geçmişi Temizle",
"clearHistoryConfirm":
"Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
@ -1067,40 +1067,40 @@ const Map<String, String> trTR = {
"Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
// 翻译模块 - 图片翻译
"selectImageSource": "Select Image Source",
"imagePreview": "Image Preview",
"selectImageSource": "Resim Kaynağı Seçin",
"imagePreview": "Resim Önizlemesi",
"translationResult": "Çeviri Sonucu",
"recognitionResult": "Recognition Result",
"recognitionResult": "Tanıma Sonucu",
"translatedImagePreview": "Çevrilmiş Resim Önizlemesi",
"translatedImageLoadFailed": "Çevrilmiş resim yüklenemedi",
"pleaseSelectImage": "Lütfen bir resim seçin",
"imageLoadFailed": "Resim yükleme başarısız",
"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",
"imageQuality": "Resim Kalitesi",
"maxSize": "Maksimum Boyut",
"close": "Kapat",
"setImageQuality": "Resim Kalitesini Ayarla",
"currentQuality": "Mevcut kalite: @value%",
"setMaxSize": "Maksimum Boyutu Ayarla",
"currentMaxSize": "Mevcut: @pxpx",
"waitingForAction": "İşlem bekleniyor",
"pleaseSelectImageToStart": "Başlamak için lütfen bir resim seçin",
"chooseImage": "Choose Image",
"openingCamera": "Opening camera...",
"openingPhotoAlbum": "Opening photo album...",
"cancelled": "Cancelled",
"userCancelledSelection": "User cancelled selection",
"translatingImage": "Translating Image",
"chooseImage": "Resim Seçin",
"openingCamera": "Kamera açılıyor...",
"openingPhotoAlbum": "Fotoğraf albümü açılıyor...",
"cancelled": "İptal edildi",
"userCancelledSelection": "Kullanıcı seçimi iptal etti",
"translatingImage": "Resim Çevriliyor",
"callingImageTranslateService": "Resim çeviri hizmeti çağrılıyor...",
"savingRecord": "Kayıt kaydediliyor",
"savingTranslationResult": "Çeviri sonucu kaydediliyor...",
"translationCompleted": "Çeviri Tamamlandı",
"allStepsCompleted": "All steps completed",
"allStepsCompleted": "Tüm adımlar tamamlandı",
"processingFailed": "İşleme Başarısız",
"imageProcessingOrTranslationFailed":
"Resim işleme veya çeviri başarısız oldu. Lütfen tekrar deneyin.\nHata: {error}",
"imageTooLarge": "Image size exceeds 4MB limit",
"imageTooLarge": "Resim boyutu 4MB sınırını aşıyor",
"imageTooLargeHint":
"Image size exceeds 4MB. Reduce quality or dimensions and retry",
"Resim boyutu 4MB'ı aşıyor. Kaliteyi veya boyutları azaltıp tekrar deneyin",
"emptyTranslationResult": "Resim çeviri API'si boş sonuç döndürdü",
"imageTranslationFailedTryLater":
"Resim çevirisi başarısız oldu. Ağ sorunu veya hız sınırı olabilir. Lütfen daha sonra tekrar deneyin",
@ -1111,11 +1111,11 @@ const Map<String, String> trTR = {
"photoAlbumPermissionRequired":
"Resim seçmek için fotoğraf albümü izni gereklidir",
"translationDetails": "Çeviri Detayları",
"originalImage": "Original Image",
"sourceLanguage": "Source Language",
"targetLanguage": "Target Language",
"originalImage": "Orijinal Resim",
"sourceLanguage": "Kaynak Dil",
"targetLanguage": "Hedef Dil",
"translationTime": "Çeviri Süresi",
"shareInDevelopment": "Sharing feature under development",
"shareInDevelopment": "Paylaşım özelliği geliştirme aşamasında",
// 翻译模块 - 录音文件
"translateAudioFiles": "Ses Dosyalarını Çevir",
@ -1167,8 +1167,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?',
'clean': 'Önbelleği Temizle',
'cleanTips': 'Kişisel önbelleği temizlemek istediğinizden emin misiniz?',
'networkConnectionFailed':
'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edip tekrar deneyin',
'serverTemporarilyUnavailable':
@ -1227,8 +1227,8 @@ const Map<String, String> trTR = {
'locationPermissions': 'Konum İzinleri',
'phone': 'Telefon',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'contacts': 'Kişiler',
'notification': 'Bildirim',
'alarm': 'Alarm',
'calendarWrite': 'Takvime Yaz',
'calendarFullAccess': 'Tam Takvim Erişimi',
@ -1236,7 +1236,7 @@ const Map<String, String> trTR = {
'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',
'Hatırlatıcıların zamanında tetiklenmesini sağlamak için kesin alarm ayarlamak amacıyla kullanılır',
'calendarWritePermissionDesc':
'Takvim etkinlikleri ve hatırlatıcılar oluşturmak için kullanılır',
'calendarFullAccessPermissionDesc':
@ -1259,7 +1259,7 @@ const Map<String, String> trTR = {
'calendarFullAccessPermissionDetailDesc':
'Takvim etkinliklerini yönetme tam takvim erişimi gerektirir',
'locationPermissionDetailDesc': 'Konum bilgisi alma konum izni gerektirir',
'contactsPermissionDesc': 'Used for accessing contact information',
'contactsPermissionDesc': 'Kişi bilgilerine erişmek için kullanılır',
'contactsPermissionDetailDesc':
'Arama ve SMS işlevleri, kişileri seçebilmek için kişiler izni gerektirir',
'bluetoothPermissionDesc':
@ -1274,7 +1274,7 @@ const Map<String, String> trTR = {
'Bluetooth cihazlarına bağlanmak için kullanılır',
'bluetoothConnectPermissionDetailDesc':
'Bluetooth cihazlarına bağlanmak için Bluetooth bağlantı izni gerekir',
'notificationPermissionDesc': 'Used for sending notification messages',
'notificationPermissionDesc': 'Bildirim mesajları göndermek için kullanılır',
'notificationPermissionDetailDesc':
'Uygulamanın önemli uyarılar ve mesajlar gönderebilmesi için bildirim iznine ihtiyacı var',
'appNeedsPermissionForFullFunction':
@ -1282,7 +1282,7 @@ const Map<String, String> trTR = {
'permanentDenialText':
'{permission} iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için uygulama ayarlarına gidin',
'goToSettings': 'Ayarlara Git',
'bluetoothScan': 'Bluetooth Scan',
'bluetoothScan': 'Bluetooth Tarama',
'bluetoothConnect': 'Bluetooth Bağlantısı',
'bluetoothScanExplanation':
'Uygulamanın yakındaki Bluetooth cihazlarını taramak için Bluetooth tarama iznine ihtiyacı var.',
@ -1296,8 +1296,8 @@ const Map<String, String> trTR = {
'Bluetooth bağlantı izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.',
'locationPermanentDenial':
'Konum izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.',
'notificationPermission': 'Notification',
'locationPermission': 'Location',
'notificationPermission': 'Bildirim',
'locationPermission': 'Konum',
'notificationPermissionExplanation':
'Müzik çalma durumunu göstermek için bildirim izni gereklidir.',
'locationPermissionExplanation':
@ -1306,7 +1306,7 @@ const Map<String, String> trTR = {
'Bildirim iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için ayarlara gidin.',
'locationPermissionPermanentDenial':
'Konum iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için ayarlara gidin.',
'storagePermission': 'Storage',
'storagePermission': 'Depolama',
'microphonePermissionExplanation':
'Ses içeriğini kaydetmek için mikrofon iznine ihtiyacımız var.',
'storagePermissionExplanation':
@ -1422,15 +1422,15 @@ const Map<String, String> trTR = {
'iKnow': 'Anladım', // 我知道了
// 配对模块 - 绑定奖励
"firstBindRewardTitle": "Pembelian Terlebih Dahulu",
"firstBindRewardDesc": "Anda telah menerima premi binding.",
"vipLevelLabel": "Level VIP:",
"expiryLabel": "Son kullanma:",
"notActivated": "Belum diaktifkan",
"aiChatCreditsLabel": "Kredit Chat AI:",
"translationCreditsLabel": "Kredity prevajanja:",
"meetingCreditsLabel": "Toplantı kredileri:",
"ok": "OK",
"firstBindRewardTitle": "Hoş Geldiniz Ödülü",
"firstBindRewardDesc": "Bağlama ödüllerinizi aldınız.",
"vipLevelLabel": "VIP Seviyesi:",
"expiryLabel": "Son Kullanma:",
"notActivated": "Etkinleştirilmedi",
"aiChatCreditsLabel": "AI Sohbet Kredisi:",
"translationCreditsLabel": "Çeviri Kredisi:",
"meetingCreditsLabel": "Toplantı Kredisi:",
"ok": "Tamam",
// 用户反馈模块
"feedback": "Kullanıcı Geri Bildirimi",
@ -1478,15 +1478,15 @@ const Map<String, String> trTR = {
"Her iki kulaklığı da çıkarın ve pil seviyelerinin %20'un üzerinde olduğundan emin olun",
// OTA升级模块 - 弹窗与对话框
'otaNewVersionFoundWithVersion': 'New version @version found',
'otaConfirmUpdateNow': 'Update now?',
'otaUpdate': 'Update',
'otaNewVersionFoundWithVersion': 'Yeni sürüm @version bulundu',
'otaConfirmUpdateNow': 'Şimdi güncelle?',
'otaUpdate': 'Güncelle',
'otaUpgradeSuccess': 'Yükseltme Başarılı',
'otaUpgradeCompleteRepair':
'Donanım yazılımı yükseltmesi tamamlandı!\n\nCihazın düzgün çalışması için yeniden eşleştirilmesi gerekir. Şimdi eşleştirme sayfasına gidilsin mi?',
'otaPairLater': 'Pair Later',
'otaPairNow': 'Pair Now',
'okConfirm': 'OK',
'otaPairLater': 'Daha Sonra Eşleştir',
'otaPairNow': 'Şimdi Eşleştir',
'okConfirm': 'Tamam',
// OTA升级模块 - 设备检查
'otaBleCheckErrorWithError': 'BLE bağlantısı kontrol edilirken hata: @error',
'otaBleNotConnected': 'BLE Cihazı Bağlı Değil',
@ -1500,8 +1500,8 @@ const Map<String, String> trTR = {
'Cihaz bilgisi alınamıyor, lütfen cihaz bağlantısını kontrol edin',
'otaCannotGetProductInfoWithName':
'Ürün bilgisi alınamıyor, cihaz adı: @deviceName',
'otaCannotGetBatteryInfo': 'Cannot get valid battery info',
'otaLowBattery': 'Low Battery',
'otaCannotGetBatteryInfo': 'Geçerli pil bilgisi alınamıyor',
'otaLowBattery': 'Düşük Pil',
'otaSingleBatteryLow':
'Cihaz pili donanım yazılımı yükseltmesi için çok düşük\nGereksinim: pil %20 üzerinde olmalı\nMevcut: @ear @battery%\nLütfen şarj edin ve tekrar deneyin',
'otaDoubleBatteryLow':
@ -1509,7 +1509,7 @@ const Map<String, String> trTR = {
'otaBatteryCheckFailed': 'Pil Kontrolü Başarısız',
// OTA升级模块 - 升级状态
'otaDefaultUpdateDesc':
'This update includes performance optimizations and bug fixes.',
'Bu güncelleme performans optimizasyonları ve hata düzeltmeleri içermektedir.',
'otaGetLatestVersionFailed': 'En son sürüm bilgisi alınamadı',
'otaGetVersionInfoFailed': 'Sürüm bilgisi alınamadı',
'otaCheckingDeviceStatus': 'Cihaz durumu kontrol ediliyor...',
@ -1681,15 +1681,15 @@ const Map<String, String> trTR = {
"东帝汶": "Doğu Timor",
"斐济": "Fiji",
"所罗门群岛": "Solomon Adaları",
"刚果民主共和国": "Democratic Republic of the Congo",
"刚果民主共和国": "Kongo Demokratik Cumhuriyeti",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"马尔代夫": "Maldivler",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"摩纳哥": "Monako",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"牙买加": "Jamaika",
"巴哈马": "Bahamalar",
"巴布亚新几内亚": "Papua Yeni Gine",
"萨摩亚": "Samoa",
};

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

@ -418,7 +418,7 @@ const Map<String, String> ukUA = {
'earlyAccessNewFeatures': 'Ранній доступ до нових функцій',
'crossDeviceSync': 'Синхронізація між пристроями',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Фактичні переваги залежать від деталей пакету та можуть змінюватися залежно від версії.',
// 商品模块 - 商品名称与描述
'ai_001_name': 'AI Базовий 100',
@ -441,8 +441,8 @@ const Map<String, String> ukUA = {
'trans_003_desc': 'Містить 1000 перекладів (голос/текст).',
// 商品模块 - 页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',
'appNameProvider': 'Додаток: VoiTrans · Надається: VoiTrans',
'iapCustomerServiceQQLabel': 'Служба підтримки IAP QQ: @qq',
'copyrightVoitrans': '© 2025 Voitrans Technologies',
// 新手引导
@ -715,27 +715,27 @@ const Map<String, String> ukUA = {
'upgradeMembership': 'Оновити підписку',
'yearlySubscription': 'Річна підписка',
'monthlySubscription': 'Місячна підписка',
'proMonthly': 'Pro ¥60/month',
'proMonthly': 'Pro ¥60/міс.',
'proMonthlyDesc':
'Безкоштовна пробна 7 днів, далі ¥800/рік. Можна скасувати до завершення пробного періоду.',
'sevenDayTrial': 'Безкоштовна пробна 7 днів',
'unlimitedMonthly': 'Unlimited ¥120/month',
'unlimitedMonthly': 'Unlimited ¥120/міс.',
'unlimitedMonthlyDesc':
'Безкоштовна пробна 7 днів, далі ¥1600/рік. Можна скасувати до завершення пробного періоду.',
'trialNote':
'*Безкоштовно 7 днів, далі оплата щорічно; можна скасувати будь‑коли.',
'proPrice': 'Pro ¥120',
'proMonthlyPrice': '¥120/month',
'proMonthlyPrice': '¥120/міс.',
'subscribe': 'Підписатися',
'unlimitedPrice': 'Unlimited ¥198',
'unlimitedMonthlyPrice': '¥198/month',
'unlimitedMonthlyPrice': '¥198/міс.',
'upgradeNote':
'*Після оновлення підписки залишок днів попередньої підписки буде автоматично перераховано та повернено на ваш платіжний рахунок',
'buyMoreTranscriptionTime': 'Купити більше часу транскрипції',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'sixThousandMinutes': '6 000 хвилин',
'threeThousandMinutes': '3 000 хвилин',
'sixHundredMinutes': '600 хвилин',
'oneHundredTwentyMinutes': '120 хвилин',
'validityPeriod': '*Термін дії: ',
'validityNote':
'Активується одразу після покупки, діє 2 роки після активації.',

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

@ -718,10 +718,10 @@ const Map<String, String> viVN = {
'upgradeNote':
'*Sau khi nâng cấp đăng ký, số ngày còn lại của gói hiện tại sẽ được tính tự động và hoàn tiền vào tài khoản thanh toán của bạn',
'buyMoreTranscriptionTime': 'Mua thêm thời lượng chuyển biên',
'sixThousandMinutes': '6,000 minutes',
'threeThousandMinutes': '3,000 minutes',
'sixHundredMinutes': '600 minutes',
'oneHundredTwentyMinutes': '120 minutes',
'sixThousandMinutes': '6.000 phút',
'threeThousandMinutes': '3.000 phút',
'sixHundredMinutes': '600 phút',
'oneHundredTwentyMinutes': '120 phút',
'validityPeriod': '*Thời hạn: ',
'validityNote':
'Kích hoạt ngay sau khi mua, có hiệu lực 2 năm kể từ khi kích hoạt.',
@ -1156,8 +1156,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?',
'clean': 'Xóa bộ nhớ cache',
'cleanTips': 'Bạn có chắc chắn muốn xóa bộ nhớ cache cá nhân không?',
'networkConnectionFailed':
'Kết nối mạng thất bại, vui lòng kiểm tra cài đặt mạng và thử lại',
'serverTemporarilyUnavailable':
@ -1213,9 +1213,9 @@ const Map<String, String> viVN = {
'locationPermissions': 'Quyền vị trí',
'phone': 'Điện thoại',
'sms': 'SMS',
'contacts': 'Contacts',
'notification': 'Notification',
'alarm': 'Alarm',
'contacts': 'Danh bạ',
'notification': 'Thông báo',
'alarm': 'Báo thức',
'calendarWrite': 'Ghi lịch',
'calendarFullAccess': 'Truy cập lịch đầy đủ',
'locationInfo': 'Thông tin vị trí',
@ -1559,7 +1559,7 @@ const Map<String, String> viVN = {
"邮箱": "Email",
"中国": "Trung Quốc",
"美国": "Hoa Kỳ",
"加拿大": "Canada",
"加拿大": "Ca-na-đa",
"俄罗斯": "Nga",
"英国": "Vương quốc Anh",
"德国": "Đức",
@ -1571,20 +1571,20 @@ const Map<String, String> viVN = {
"土耳其": "Thổ Nhĩ Kỳ",
"日本": "Nhật Bản",
"韩国": "Hàn Quốc",
"新加坡": "Singapore",
"马来西亚": "Malaysia",
"新加坡": "Xinh-ga-po",
"马来西亚": "Ma-lai-xi-a",
"泰国": "Thái Lan",
"越南": "Việt Nam",
"印度": "Ấn Độ",
"巴基斯坦": "Pakistan",
"菲律宾": "Philippines",
"印度尼西亚": "Indonesia",
"巴基斯坦": "Pa-ki-xtan",
"菲律宾": "Phi-líp-pin",
"印度尼西亚": "In-đô-nê-xi-a",
"阿联酋": "Các Tiểu vương quốc Ả Rập Thống nhất",
"墨西哥": "Mexico",
"巴西": "Brazil",
"阿根廷": "Argentina",
"墨西哥": "Mê-hi-cô",
"巴西": "Bra-xin",
"阿根廷": "Ác-hen-ti-na",
"澳大利亚": "Úc",
"新西兰": "New Zealand",
"新西兰": "Niu Di-lân",
"中国香港": "Hồng Kông (Trung Quốc)",
"中国澳门": "Macao (Trung Quốc)",
"中国台湾": "Đài Loan (Trung Quốc)",
@ -1592,85 +1592,85 @@ const Map<String, String> viVN = {
"希腊": "Hy Lạp",
"荷兰": "Hà Lan",
"比利时": "Bỉ",
"匈牙利": "Hungary",
"罗马尼亚": "Romania",
"匈牙利": "Hung-ga-ri",
"罗马尼亚": "Ru-ma-ni",
"瑞士": "Thụy Sĩ",
"奥地利": "Áo",
"丹麦": "Đan Mạch",
"瑞典": "Thụy Điển",
"挪威": "Na Uy",
"波兰": "Ba Lan",
"秘鲁": "Peru",
"智利": "Chile",
"哥伦比亚": "Colombia",
"委内瑞拉": "Venezuela",
"秘鲁": "Pê-ru",
"智利": "Chi-lê",
"哥伦比亚": "Cô-lôm-bi-a",
"委内瑞拉": "Vê-nê-zu-ê-la",
"葡萄牙": "Bồ Đào Nha",
"卢森堡": "Luxembourg",
"爱尔兰": "Ireland",
"冰岛": "Iceland",
"阿尔巴尼亚": "Albania",
"马耳他": "Malta",
"卢森堡": "Lúc-xăm-bua",
"爱尔兰": "Ai-len",
"冰岛": "Ai-xlen",
"阿尔巴尼亚": "An-ba-ni",
"马耳他": "Man-ta",
"塞浦路斯": "Síp",
"芬兰": "Phần Lan",
"保加利亚": "Bulgaria",
"保加利亚": "Bun-ga-ri",
"立陶宛": "Litva",
"拉脱维亚": "Latvia",
"爱沙尼亚": "Estonia",
"拉脱维亚": "Lát-vi-a",
"爱沙尼亚": "Ê-xtô-ni-a",
"乌克兰": "Ukraina",
"塞尔维亚": "Serbia",
"克罗地亚": "Croatia",
"斯洛文尼亚": "Slovenia",
"塞尔维亚": "Séc-bi-a",
"克罗地亚": "Crô-a-ti-a",
"斯洛文尼亚": "Xlô-ven-ni-a",
"捷克": "Cộng hòa Séc",
"斯洛伐克": "Slovakia",
"危地马拉": "Guatemala",
"萨尔瓦多": "El Salvador",
"洪都拉斯": "Honduras",
"尼加拉瓜": "Nicaragua",
"哥斯达黎加": "Costa Rica",
"巴拿马": "Panama",
"海地": "Haiti",
"玻利维亚": "Bolivia",
"厄瓜多尔": "Ecuador",
"巴拉圭": "Paraguay",
"乌拉圭": "Uruguay",
"斯洛伐克": "Xlô-va-ki-a",
"危地马拉": "Goa-tê-ma-la",
"萨尔瓦多": "En Xan-va-đo",
"洪都拉斯": "Hôn-đu-rát",
"尼加拉瓜": "Ni-ca-ra-goa",
"哥斯达黎加": "Cô-xta Ri-ca",
"巴拿马": "Pa-na-ma",
"海地": "Ha-i-ti",
"玻利维亚": "Bô-li-vi-a",
"厄瓜多尔": "Ê-cua-đo",
"巴拉圭": "Pa-ra-goay",
"乌拉圭": "U-ru-goay",
"摩洛哥": "Ma Rốc",
"阿尔及利亚": "Algeria",
"突尼斯": "Tunisia",
"尼日利亚": "Nigeria",
"加纳": "Ghana",
"埃塞俄比亚": "Ethiopia",
"肯尼亚": "Kenya",
"坦桑尼亚": "Tanzania",
"乌干达": "Uganda",
"孟加拉国": "Bangladesh",
"以色列": "Israel",
"黎巴嫩": "Lebanon",
"约旦": "Jordan",
"伊拉克": "Iraq",
"科威特": "Kuwait",
"巴林": "Bahrain",
"卡塔尔": "Qatar",
"阿曼": "Oman",
"阿富汗": "Afghanistan",
"斯里兰卡": "Sri Lanka",
"缅甸": "Myanmar",
"尼泊尔": "Nepal",
"阿尔及利亚": "An-giê-ri",
"突尼斯": "Tuy-ni-di",
"尼日利亚": "Ni-giê-ri-a",
"加纳": "Gha-na",
"埃塞俄比亚": "Ê-ti-ô-pi-a",
"肯尼亚": "Kê-ni-a",
"坦桑尼亚": "Tan-da-ni-a",
"乌干达": "U-gan-đa",
"孟加拉国": "Băng-la-đét",
"以色列": "I-xra-en",
"黎巴嫩": "Li-băng",
"约旦": "Gioóc-đa-ni",
"伊拉克": "I-rắc",
"科威特": "Cô-oét",
"巴林": "Ba-ren",
"卡塔尔": "Ca-ta",
"阿曼": "Ô-man",
"阿富汗": "Áp-ga-ni-xtan",
"斯里兰卡": "Sri Lan-ca",
"缅甸": "Mi-an-ma",
"尼泊尔": "Nê-pan",
"蒙古": "Mông Cổ",
"柬埔寨": "Campuchia",
"老挝": "Lào",
"文莱": "Brunei",
"东帝汶": "Timor-Leste",
"斐济": "Fiji",
"文莱": "Bru-nây",
"东帝汶": "Đông Ti-mo",
"斐济": "Phi-ji",
"所罗门群岛": "Quần đảo Solomon",
"刚果民主共和国": "Democratic Republic of the Congo",
"安哥拉": "Angola",
"苏丹": "Sudan",
"马尔代夫": "Maldives",
"不丹": "Bhutan",
"摩纳哥": "Monaco",
"圣马力诺": "San Marino",
"牙买加": "Jamaica",
"巴哈马": "Bahamas",
"巴布亚新几内亚": "Papua New Guinea",
"萨摩亚": "Samoa",
"刚果民主共和国": "Cộng hòa Dân chủ Congo",
"安哥拉": "Ăng-gô-la",
"苏丹": "Xu-đăng",
"马尔代夫": "Mal-đi-vơ",
"不丹": "Bu-tan",
"摩纳哥": "Mô-na-cô",
"圣马力诺": "Xan Ma-ri-nô",
"牙买加": "Gia-mai-ca",
"巴哈马": "Ba-ha-ma",
"巴布亚新几内亚": "Pa-pua Niu Ghi-nê",
"萨摩亚": "Sa-moa",
};

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

@ -1104,7 +1104,7 @@ const Map<String, String> zhCN = {
'deleteAccountProcessError': '删除账号过程发生错误',
'userDataClearSuccess': '用户数据清理成功',
'allUserDataClearSuccess': '所有用户数据清理成功',
'accountServiceInitialized': 'AccountService 已初始化',
'accountServiceInitialized': '账号服务已初始化',
// 权限模块
'meetingStoragePermission': '存储',

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

@ -415,39 +415,38 @@ const Map<String, String> zhHK = {
// 新手引导
'skip': "跳過",
'next': '下一步',
'sayLilyHint': "Say \"Lily Lily\" to the mic",
'imHere': "I’m here~",
'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.",
'aiReplyCompleted': "Lily has finished the reply!",
'aiThinking': "Lily is thinking…",
'guideAwakenSuccess': "Great! Lily is awake—ask it to help.",
'confirmInput': "Confirm Input",
'guideClickSendPrefix': "Tap send, ",
'guideWeatherStart': "Tell Lily: “What’s the weather today?”",
'guideWeatherInput': "What’s the weather today?",
'guideWeatherSend': "Lily will report the weather in real time",
'guideWeatherEnd': "Lily can report weather live—try other commands",
'guideMusicStart': "Tell Lily: “Play some rock music”",
'guideMusicInput': "Play some rock music",
'guideMusicSend': "Lily will find music for you",
'guideMusicEnd': "Lily found music—try other commands",
'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”",
'guideNavInput': "Navigate to Shenzhen Airport",
'guideNavSend': "Lily will plan the route",
'guideNavEnd': "Navigation set—try other commands",
'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",
'sayLilyHint': '對着麥克風說「Lily Lily」',
'imHere': "我在這呢~",
'guideWelcomeWakeAI': "歡迎使用Voitrans!首先,喚醒您的AI「Lily」。",
'aiReplyCompleted': "Lily已完成回覆!",
'aiThinking': "Lily正在思考…",
'guideAwakenSuccess': "太好了!Lily已喚醒—向它提問吧。",
'confirmInput': "確認輸入",
'guideClickSendPrefix': "點擊發送,",
'guideWeatherStart': "告訴Lily:「今天天氣如何?」",
'guideWeatherInput': "今天天氣如何?",
'guideWeatherSend': "Lily會即時報告天氣",
'guideWeatherEnd': "Lily可以即時報告天氣—試試其他指令",
'guideMusicStart': "告訴Lily:「播放一些搖滾樂」",
'guideMusicInput': "播放一些搖滾樂",
'guideMusicSend': "Lily會為您尋找音樂",
'guideMusicEnd': "Lily已找到音樂—試試其他指令",
'guideNavStart': "告訴Lily:「導航到深圳機場」",
'guideNavInput': "導航到深圳機場",
'guideNavSend': "Lily會規劃路線",
'guideNavEnd': "導航已設定—試試其他指令",
'guideMeetingStart': "告訴Lily:「為明天下午3點建立會議提醒」",
'guideMeetingInput': "為明天下午3點建立會議提醒",
'guideMeetingSend': "Lily會建立會議提醒",
'guideMeetingEnd': "提醒已建立—試試其他指令",
'guidePhoneStart': "告訴Lily:「致電媽媽」",
'guidePhoneInput': "致電媽媽",
'guidePhoneSend': "Lily會幫您撥打電話",
'guidePhoneEnd': "電話已撥出—試試其他指令",
'guideSmsStart': "告訴Lily:「發短訊給爸爸:我回家吃晚飯」",
'guideSmsInput': "發短訊給爸爸:我回家吃晚飯",
'guideSmsSend': "Lily會幫您發送短訊",
'guideSmsEnd': "短訊已發送—語音控制真方便",
// Meeting模块 - 首页与导航
"startMeeting": "開始會議",
@ -613,7 +612,7 @@ const Map<String, String> zhHK = {
'transcriptionRecords': '轉寫記錄',
'templateCommunity': '模板社區',
'comingSoon': '敬請期待',
'integration': '集成',
'integration': '整合',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': '開啟',
'disabled': '關閉',
@ -1416,7 +1415,7 @@ const Map<String, String> zhHK = {
"俄罗斯": "俄羅斯",
"英国": "英國",
"德国": "德國",
"意大利": "意大利",
"意大利": '意大利',
"法国": "法國",
"西班牙": "西班牙",
"南非": "南非",

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

@ -415,39 +415,38 @@ const Map<String, String> zhTW = {
// 新手引导
'skip': "跳過",
'next': '下一步',
'sayLilyHint': "Say \"Lily Lily\" to the mic",
'imHere': "I’m here~",
'guideWelcomeWakeAI': "Welcome to Voitrans! First, wake your AI “Lily”.",
'aiReplyCompleted': "Lily has finished the reply!",
'aiThinking': "Lily is thinking…",
'guideAwakenSuccess': "Great! Lily is awake—ask it to help.",
'confirmInput': "Confirm Input",
'guideClickSendPrefix': "Tap send, ",
'guideWeatherStart': "Tell Lily: “What’s the weather today?”",
'guideWeatherInput': "What’s the weather today?",
'guideWeatherSend': "Lily will report the weather in real time",
'guideWeatherEnd': "Lily can report weather live—try other commands",
'guideMusicStart': "Tell Lily: “Play some rock music”",
'guideMusicInput': "Play some rock music",
'guideMusicSend': "Lily will find music for you",
'guideMusicEnd': "Lily found music—try other commands",
'guideNavStart': "Tell Lily: “Navigate to Shenzhen Airport”",
'guideNavInput': "Navigate to Shenzhen Airport",
'guideNavSend': "Lily will plan the route",
'guideNavEnd': "Navigation set—try other commands",
'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",
'sayLilyHint': "對著麥克風說「Lily Lily」",
'imHere': "我在這呢~",
'guideWelcomeWakeAI': "歡迎使用Voitrans!首先,喚醒您的AI「Lily」。",
'aiReplyCompleted': "Lily已完成回覆!",
'aiThinking': "Lily正在思考…",
'guideAwakenSuccess': "太好了!Lily已喚醒—請向它提問。",
'confirmInput': "確認輸入",
'guideClickSendPrefix': "點擊傳送,",
'guideWeatherStart': "告訴Lily:「今天天氣如何?」",
'guideWeatherInput': "今天天氣如何?",
'guideWeatherSend': "Lily會即時回報天氣",
'guideWeatherEnd': "Lily可以即時回報天氣—試試其他指令",
'guideMusicStart': "告訴Lily:「播放一些搖滾樂」",
'guideMusicInput': "播放一些搖滾樂",
'guideMusicSend': "Lily會為您尋找音樂",
'guideMusicEnd': "Lily已找到音樂—試試其他指令",
'guideNavStart': "告訴Lily:「導航到深圳機場」",
'guideNavInput': "導航到深圳機場",
'guideNavSend': "Lily會規劃路線",
'guideNavEnd': "導航已設定—試試其他指令",
'guideMeetingStart': "告訴Lily:「為明天下午3點建立會議提醒」",
'guideMeetingInput': "為明天下午3點建立會議提醒",
'guideMeetingSend': "Lily會建立會議提醒",
'guideMeetingEnd': "提醒已建立—試試其他指令",
'guidePhoneStart': "告訴Lily:「打電話給媽媽」",
'guidePhoneInput': "打電話給媽媽",
'guidePhoneSend': "Lily會幫您撥打電話",
'guidePhoneEnd': "電話已撥出—試試其他指令",
'guideSmsStart': "告訴Lily:「傳簡訊給爸爸:我回家吃晚飯」",
'guideSmsInput': "傳簡訊給爸爸:我回家吃晚飯",
'guideSmsSend': "Lily會幫您傳送簡訊",
'guideSmsEnd': "簡訊已傳送—語音控制真方便",
// Meeting模块 - 首页与导航
"startMeeting": "開始會議",
@ -613,7 +612,7 @@ const Map<String, String> zhTW = {
'transcriptionRecords': '轉寫記錄',
'templateCommunity': '模板社區',
'comingSoon': '敬請期待',
'integration': '集成',
'integration': '整合',
'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD',
'enabled': '開啟',
'disabled': '關閉',
@ -1420,7 +1419,7 @@ const Map<String, String> zhTW = {
"法国": "法國",
"西班牙": "西班牙",
"南非": "南非",
"沙特阿拉伯": "沙特阿拉伯",
"沙特阿拉伯": '沙烏地阿拉伯',
"土耳其": "土耳其",
"日本": "日本",
"韩国": "韓國",
@ -1463,7 +1462,7 @@ const Map<String, String> zhTW = {
"冰岛": "冰島",
"阿尔巴尼亚": "阿爾巴尼亞",
"马耳他": "馬耳他",
"塞浦路斯": "塞浦路斯",
"塞浦路斯": '賽普勒斯',
"芬兰": "芬蘭",
"保加利亚": "保加利亞",
"立陶宛": "立陶宛",
@ -1477,7 +1476,7 @@ const Map<String, String> zhTW = {
"斯洛伐克": "斯洛伐克",
"危地马拉": "危地馬拉",
"萨尔瓦多": "薩爾瓦多",
"洪都拉斯": "洪都拉斯",
"洪都拉斯": '宏都拉斯',
"尼加拉瓜": "尼加拉瓜",
"哥斯达黎加": "哥斯達黎加",
"巴拿马": "巴拿馬",

22
test/fr_fr_translations_test.dart

@ -0,0 +1,22 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:voitrans/core/translations/language/en_us.dart';
import 'package:voitrans/core/translations/language/fr_fr.dart';
void main() {
test('frFR can be imported and accessed', () {
expect(frFR, isNotEmpty);
expect(frFR['continue'], isNotNull);
});
test('frFR has the same translation keys as enUS', () {
expect(frFR.keys.toSet(), equals(enUS.keys.toSet()));
});
test('frFR has no empty values', () {
final emptyKeys = frFR.entries
.where((entry) => entry.value.trim().isEmpty)
.map((entry) => entry.key)
.toList(growable: false);
expect(emptyKeys, isEmpty);
});
}

78
test/is_is_translations_test.dart

@ -0,0 +1,78 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:voitrans/core/translations/language/en_us.dart';
import 'package:voitrans/core/translations/language/is_is.dart';
Set<String> _extractPlaceholders(String value) {
final placeholders = <String>{};
placeholders.addAll(
RegExp(r'\{[a-zA-Z_][a-zA-Z0-9_]*\}')
.allMatches(value)
.map((m) => m.group(0)!)
.toSet(),
);
placeholders.addAll(
RegExp(r'@[a-zA-Z_][a-zA-Z0-9_]*')
.allMatches(value)
.map((m) => m.group(0)!)
.toSet(),
);
placeholders.addAll(
RegExp(r'\$\{[a-zA-Z_][a-zA-Z0-9_]*\}')
.allMatches(value)
.map((m) => m.group(0)!)
.toSet(),
);
placeholders.addAll(
RegExp(r'%(?:\d+\$)?[sdif]')
.allMatches(value)
.map((m) => m.group(0)!)
.toSet(),
);
return placeholders;
}
void main() {
test('isIS can be imported and accessed', () {
expect(isIS, isNotEmpty);
expect(isIS['continue'], isNotNull);
});
test('isIS has the same translation keys as enUS', () {
expect(isIS.keys.toSet(), equals(enUS.keys.toSet()));
});
test('isIS has no empty values', () {
final emptyKeys = isIS.entries
.where((entry) => entry.value.trim().isEmpty)
.map((entry) => entry.key)
.toList(growable: false);
expect(emptyKeys, isEmpty);
});
test('isIS placeholders match enUS placeholders', () {
final mismatches = <String>[];
for (final key in enUS.keys) {
final enValue = enUS[key] ?? '';
final isValue = isIS[key] ?? '';
final enPlaceholders = _extractPlaceholders(enValue);
final isPlaceholders = _extractPlaceholders(isValue);
if (enPlaceholders.length != isPlaceholders.length ||
!enPlaceholders.containsAll(isPlaceholders) ||
!isPlaceholders.containsAll(enPlaceholders)) {
mismatches.add(
'$key | en=$enPlaceholders | is=$isPlaceholders | enValue=$enValue | isValue=$isValue',
);
}
}
expect(mismatches, isEmpty);
});
}

22
test/ja_jp_translations_test.dart

@ -0,0 +1,22 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:voitrans/core/translations/language/en_us.dart';
import 'package:voitrans/core/translations/language/ja_jp.dart';
void main() {
test('jaJP can be imported and accessed', () {
expect(jaJP, isNotEmpty);
expect(jaJP['continue'], isNotNull);
});
test('jaJP has the same translation keys as enUS', () {
expect(jaJP.keys.toSet(), equals(enUS.keys.toSet()));
});
test('jaJP has no empty values', () {
final emptyKeys = jaJP.entries
.where((entry) => entry.value.trim().isEmpty)
.map((entry) => entry.key)
.toList(growable: false);
expect(emptyKeys, isEmpty);
});
}

22
test/nb_no_translations_test.dart

@ -0,0 +1,22 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:voitrans/core/translations/language/en_us.dart';
import 'package:voitrans/core/translations/language/nb_no.dart';
void main() {
test('nbNO can be imported and accessed', () {
expect(nbNO, isNotEmpty);
expect(nbNO['continue'], isNotNull);
});
test('nbNO has the same translation keys as enUS', () {
expect(nbNO.keys.toSet(), equals(enUS.keys.toSet()));
});
test('nbNO has no empty values', () {
final emptyKeys = nbNO.entries
.where((entry) => entry.value.trim().isEmpty)
.map((entry) => entry.key)
.toList(growable: false);
expect(emptyKeys, isEmpty);
});
}
Loading…
Cancel
Save