From a70f5903d47cfa4dacc3d7bea7c07b7568300cc4 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Mon, 16 Mar 2026 12:00:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(i18n):=20=E5=AE=8C=E5=96=84=E5=A4=9A?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E7=BF=BB=E8=AF=91=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新中文(简体、繁体、香港)翻译,将英文占位符替换为本地化文本 - 改进阿拉伯语、希腊语、韩语、爱沙尼亚语、乌克兰语、波兰语、克罗地亚语、拉脱维亚语、越南语、德语、日语等语言的翻译准确性 - 为法语、日语、挪威语、冰岛语翻译添加单元测试,验证键完整性和占位符一致性 - 添加日语翻译修复脚本,自动替换英文占位符为日文 - 统一商品名称、权限描述、时间单位等术语的本地化表达 --- fix_ja_jp.py | 97 +++ lib/core/translations/language/ar_sa.dart | 10 +- lib/core/translations/language/bg_bg.dart | 110 +-- lib/core/translations/language/cs_cz.dart | 212 ++--- lib/core/translations/language/da_dk.dart | 240 +++--- lib/core/translations/language/de_de.dart | 130 +-- lib/core/translations/language/el_gr.dart | 12 +- lib/core/translations/language/et_ee.dart | 16 +- lib/core/translations/language/fi_fi.dart | 402 ++++----- lib/core/translations/language/fr_fr.dart | 355 ++++---- lib/core/translations/language/hi_in.dart | 50 +- lib/core/translations/language/hr_hr.dart | 46 +- lib/core/translations/language/hu_hu.dart | 67 +- lib/core/translations/language/id_id.dart | 550 ++++++------ lib/core/translations/language/is_is.dart | 465 +++++----- lib/core/translations/language/it_it.dart | 226 ++--- lib/core/translations/language/ja_jp.dart | 75 +- lib/core/translations/language/ko_kr.dart | 16 +- lib/core/translations/language/lt_lt.dart | 53 +- lib/core/translations/language/lv_lv.dart | 60 +- lib/core/translations/language/ms_my.dart | 694 +++++++-------- lib/core/translations/language/nb_no.dart | 606 +++++++------- lib/core/translations/language/nl_nl.dart | 978 ++++++++++------------ lib/core/translations/language/pl_pl.dart | 37 +- lib/core/translations/language/pt_pt.dart | 312 +++---- lib/core/translations/language/ro_ro.dart | 426 +++++----- lib/core/translations/language/ru_ru.dart | 255 +++--- lib/core/translations/language/sk_sk.dart | 642 +++++++------- lib/core/translations/language/sl_si.dart | 649 +++++++------- lib/core/translations/language/tl_ph.dart | 436 +++++----- lib/core/translations/language/tr_tr.dart | 244 +++--- lib/core/translations/language/uk_ua.dart | 22 +- lib/core/translations/language/vi_vn.dart | 166 ++-- lib/core/translations/language/zh_cn.dart | 2 +- lib/core/translations/language/zh_hk.dart | 69 +- lib/core/translations/language/zh_tw.dart | 73 +- test/fr_fr_translations_test.dart | 22 + test/is_is_translations_test.dart | 78 ++ test/ja_jp_translations_test.dart | 22 + test/nb_no_translations_test.dart | 22 + 40 files changed, 4556 insertions(+), 4391 deletions(-) create mode 100644 fix_ja_jp.py create mode 100644 test/fr_fr_translations_test.dart create mode 100644 test/is_is_translations_test.dart create mode 100644 test/ja_jp_translations_test.dart create mode 100644 test/nb_no_translations_test.dart diff --git a/fix_ja_jp.py b/fix_ja_jp.py new file mode 100644 index 000000000..c3fe5695e --- /dev/null +++ b/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.') diff --git a/lib/core/translations/language/ar_sa.dart b/lib/core/translations/language/ar_sa.dart index ea1cc52a2..7e7a5f964 100644 --- a/lib/core/translations/language/ar_sa.dart +++ b/lib/core/translations/language/ar_sa.dart @@ -902,11 +902,11 @@ const Map 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': 'إليك بعض الموسيقى الموصى بها:', diff --git a/lib/core/translations/language/bg_bg.dart b/lib/core/translations/language/bg_bg.dart index a5e8dd6db..c806cafa4 100644 --- a/lib/core/translations/language/bg_bg.dart +++ b/lib/core/translations/language/bg_bg.dart @@ -185,10 +185,10 @@ const Map 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 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 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 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 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 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 bgBG = { 'AccountService е инициализиран', // AccountService 已初始化 // 权限模块 - 'meetingStoragePermission': 'Storage', + 'meetingStoragePermission': 'Съхранение', 'meetingStoragePermissionExplanation': 'Нуждаем се от достъп до разрешения за съхранение, за да можете да избирате и качвате аудио файлове.', 'meetingStoragePermissionPermanentDenial': @@ -1501,7 +1501,7 @@ const Map bgBG = { "Извадете двете слушалки и се уверете, че батерията на двете е над 20%", // OTA升级模块 - 弹窗与对话框 - 'otaNewVersionFoundWithVersion': 'New version @version found', + 'otaNewVersionFoundWithVersion': 'Намерена е нова версия @version', 'otaConfirmUpdateNow': 'Да се актуализира ли сега?', 'otaUpdate': 'Актуализиране', 'otaUpgradeSuccess': 'Успешна актуализация', diff --git a/lib/core/translations/language/cs_cz.dart b/lib/core/translations/language/cs_cz.dart index 6e3095df7..bd7c5718b 100644 --- a/lib/core/translations/language/cs_cz.dart +++ b/lib/core/translations/language/cs_cz.dart @@ -184,10 +184,10 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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", }; diff --git a/lib/core/translations/language/da_dk.dart b/lib/core/translations/language/da_dk.dart index 4379d9836..fc19d6fcd 100644 --- a/lib/core/translations/language/da_dk.dart +++ b/lib/core/translations/language/da_dk.dart @@ -49,9 +49,9 @@ const Map 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 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 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 daDK = { "scene": "Scenarier", // 用量统计模块 - "aiChat": "AI Chat", + "aiChat": 'AI-chat', "translationStats": "Oversættelsesstatistik", "meetingStats": "Mødestatistik", "today": "I dag", @@ -414,9 +414,9 @@ const Map 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 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 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 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 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 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 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 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 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 daDK = { // 个人资料模块 "editProfile": "Rediger personlige oplysninger", - "avatar": "Avatar", + "avatar": "Profilbillede", "nickname": "Kaldenavn", "save": "Gem", "about": "Om", @@ -1166,8 +1166,8 @@ const Map 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 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 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 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 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 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', }; diff --git a/lib/core/translations/language/de_de.dart b/lib/core/translations/language/de_de.dart index 5863aa246..442f04e2c 100644 --- a/lib/core/translations/language/de_de.dart +++ b/lib/core/translations/language/de_de.dart @@ -49,13 +49,13 @@ const Map 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 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 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 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 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 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 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 deDE = { // 个人资料模块 "editProfile": "Profil bearbeiten", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Spitzname", "save": "Speichern", "about": "Über", @@ -1470,7 +1470,7 @@ const Map 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 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 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 deDE = { "澳大利亚": "Australien", "新西兰": "Neuseeland", "中国香港": "Hongkong, China", - "中国澳门": "Macau, China", - "中国台湾": "Taiwan, China", + "中国澳门": 'Macau, China', + "中国台湾": 'Taiwan, China', "埃及": "Ägypten", "希腊": "Griechenland", "荷兰": "Niederlande", @@ -1661,77 +1661,77 @@ const Map 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', }; diff --git a/lib/core/translations/language/el_gr.dart b/lib/core/translations/language/el_gr.dart index 094616c9c..1eb06f635 100644 --- a/lib/core/translations/language/el_gr.dart +++ b/lib/core/translations/language/el_gr.dart @@ -423,12 +423,12 @@ const Map 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', diff --git a/lib/core/translations/language/et_ee.dart b/lib/core/translations/language/et_ee.dart index d24efa4d7..b2694313d 100644 --- a/lib/core/translations/language/et_ee.dart +++ b/lib/core/translations/language/et_ee.dart @@ -209,7 +209,7 @@ const Map 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 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 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 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", }; diff --git a/lib/core/translations/language/fi_fi.dart b/lib/core/translations/language/fi_fi.dart index faa2e3d87..0f1ccdd55 100644 --- a/lib/core/translations/language/fi_fi.dart +++ b/lib/core/translations/language/fi_fi.dart @@ -19,11 +19,11 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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", }; diff --git a/lib/core/translations/language/fr_fr.dart b/lib/core/translations/language/fr_fr.dart index 764409ce8..97dc035ba 100644 --- a/lib/core/translations/language/fr_fr.dart +++ b/lib/core/translations/language/fr_fr.dart @@ -49,13 +49,13 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 frFR = { // 个人资料模块 "editProfile": "Modifier le profil", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Pseudo", "save": "Enregistrer", "about": "À propos", @@ -1252,7 +1261,7 @@ const Map 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 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 frFR = { "新加坡": "Singapour", "马来西亚": "Malaisie", "泰国": "Thaïlande", - "越南": "Vietnam", + "越南": 'Vietnam', "印度": "Inde", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippines", + "巴基斯坦": 'Pakistan', + "菲律宾": 'Philippines', "印度尼西亚": "Indonésie", "阿联酋": "Émirats Arabes Unis", "墨西哥": "Mexique", @@ -1663,9 +1672,9 @@ const Map frFR = { "秘鲁": "Pérou", "智利": "Chili", "哥伦比亚": "Colombie", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", + "委内瑞拉": 'Venezuela', + "葡萄牙": 'Portugal', + "卢森堡": 'Luxembourg', "爱尔兰": "Irlande", "冰岛": "Islande", "阿尔巴尼亚": "Albanie", @@ -1676,61 +1685,61 @@ const Map 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', }; diff --git a/lib/core/translations/language/hi_in.dart b/lib/core/translations/language/hi_in.dart index cb26c9225..c0e6bdea8 100644 --- a/lib/core/translations/language/hi_in.dart +++ b/lib/core/translations/language/hi_in.dart @@ -433,8 +433,8 @@ const Map 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 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': "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", diff --git a/lib/core/translations/language/hr_hr.dart b/lib/core/translations/language/hr_hr.dart index 840b64312..4036ec90c 100644 --- a/lib/core/translations/language/hr_hr.dart +++ b/lib/core/translations/language/hr_hr.dart @@ -385,21 +385,21 @@ const Map 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 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 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 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", }; diff --git a/lib/core/translations/language/hu_hu.dart b/lib/core/translations/language/hu_hu.dart index dd1555607..8793e4b99 100644 --- a/lib/core/translations/language/hu_hu.dart +++ b/lib/core/translations/language/hu_hu.dart @@ -385,21 +385,21 @@ const Map 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 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 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', diff --git a/lib/core/translations/language/id_id.dart b/lib/core/translations/language/id_id.dart index f49d29d2e..8ac9abee0 100644 --- a/lib/core/translations/language/id_id.dart +++ b/lib/core/translations/language/id_id.dart @@ -216,54 +216,54 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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", }; diff --git a/lib/core/translations/language/is_is.dart b/lib/core/translations/language/is_is.dart index 8ae57f8f6..fb58c8def 100644 --- a/lib/core/translations/language/is_is.dart +++ b/lib/core/translations/language/is_is.dart @@ -255,10 +255,10 @@ const Map 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 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 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 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 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 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 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 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 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 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 isIS = { "thursday": "Fim", "friday": "Fös", "saturday": "Lau", - "sunday": "Sun", + "sunday": 'Sun', // Agent模块 - 天气描述 "sunny": "Sólskin", @@ -1092,9 +1097,9 @@ const Map 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 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 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 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 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 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 isIS = { "挪威": "Noregur", "波兰": "Pólland", "秘鲁": "Perú", - "智利": "Chile", + "智利": 'Síle', "哥伦比亚": "Kólumbía", "委内瑞拉": "Venesúela", "葡萄牙": "Portúgal", @@ -1623,7 +1628,7 @@ const Map isIS = { "爱尔兰": "Írland", "冰岛": "Ísland", "阿尔巴尼亚": "Albanía", - "马耳他": "Malta", + "马耳他": 'Malta', "塞浦路斯": "Kýpur", "芬兰": "Finnland", "保加利亚": "Búlgaría", @@ -1637,11 +1642,11 @@ const Map 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 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', }; diff --git a/lib/core/translations/language/it_it.dart b/lib/core/translations/language/it_it.dart index 47ca2094d..80316f580 100644 --- a/lib/core/translations/language/it_it.dart +++ b/lib/core/translations/language/it_it.dart @@ -30,7 +30,7 @@ const Map itIT = { "sloganInfo": "Esperto vocale AI · Sempre e ovunque", // 底部导航 - "home": "Home", + "home": 'Home', "explore": "Esplora", "settings": "Impostazioni", @@ -49,7 +49,7 @@ const Map itIT = { "russian": "Russo", "vietnamese": "Vietnamita", "italian": "Italiano", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indonesiano", "thai": "Tailandese", "malay": "Malese", @@ -371,9 +371,9 @@ const Map 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 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 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 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 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 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 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 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 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 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 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', }; diff --git a/lib/core/translations/language/ja_jp.dart b/lib/core/translations/language/ja_jp.dart index 4ae48ee62..e37b8ddae 100644 --- a/lib/core/translations/language/ja_jp.dart +++ b/lib/core/translations/language/ja_jp.dart @@ -6,7 +6,7 @@ const Map jaJP = { 'cancel': 'キャンセル', 'retry': '再試行', 'error': 'エラー', - 'success': '成功', + 'success': '成功', // 成功 'connected': '接続済み', 'connecting': '接続中...', 'connectionFailure': '接続失敗', @@ -223,8 +223,8 @@ const Map jaJP = { "totalCharacters": "総文字数", "apiCallStats": "API呼び出し統計", "translationApi": "翻訳API", - "asr": "ASR", - "tts": "TTS", + "asr": "音声認識(ASR)", + "tts": "音声合成(TTS)", "dataVolumeStats": "データ量統計", "sourceTextCharacters": "原文文字数", "ttsTextCharacters": "TTS文字数", @@ -385,12 +385,12 @@ const Map 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 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 jaJP = { 'inputDescHint': '説明を入力してください', 'custom': 'カスタム', 'pleaseEnter': '入力してください', - 'viewAll': 'View All', + 'viewAll': 'すべて表示', 'recordingLanguage': '録音言語', 'chineseSimplified': '中国語(簡体字)', 'meetingGenerateNow': '今すぐ生成', @@ -575,7 +575,7 @@ const Map jaJP = { 'askAI': 'AIに質問 ...', 'askAIPrompt': '今日は何をお手伝いできますか?', 'continueAsk': '続けて質問', - 'todoList': 'To-Do List', + 'todoList': 'To-Doリスト', 'extractConclusion': '要約を抽出', 'generateKeyIndicators': '重要指標を生成', @@ -612,7 +612,7 @@ const Map jaJP = { 'templateCommunity': 'テンプレートコミュニティ', 'comingSoon': '近日公開', 'integration': '連携', - 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', + 'voitransPrivateCloud': 'VOITRANS プライベートクラウド', 'enabled': '有効', 'disabled': '無効', 'myVoitransDevice': '私のVOITRANSデバイス', @@ -620,8 +620,8 @@ const Map 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 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 jaJP = { "driving": "運転", "walking": "徒歩", "bicycling": "自転車", - "tsransit": "Transit", + "tsransit": "乗り換え", // Agent模块 - 导航选择 'selectNavigationApp': 'ナビアプリを選択', @@ -1003,9 +1002,9 @@ const Map 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 jaJP = { "savingRecord": "記録を保存中", "savingTranslationResult": "翻訳結果を保存中...", "translationCompleted": "翻訳完了", - "allStepsCompleted": "All steps completed", + "allStepsCompleted": "すべてのステップが完了しました", "processingFailed": "処理に失敗しました", "imageProcessingOrTranslationFailed": "画像処理または翻訳に失敗しました。再試行してください。\nエラー: {error}", @@ -1085,8 +1084,8 @@ const Map 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 jaJP = { 'マイク権限が永続的に拒否されています。この機能を継続して利用するには、アプリ設定でマイク権限を手動で有効にしてください。', 'storagePermissionPermanentDenial': 'ストレージ権限が永続的に拒否されています。この機能を継続して利用するには、アプリ設定でストレージ権限を手動で有効にしてください。', - 'permissionUtilNeed': 'Need ', + 'permissionUtilNeed': '必要:', 'permissionUtilPermission': ' 権限', 'permissionUtilRestricted': ' 権限が制限されています', 'permissionUtilRestrictedMessage': diff --git a/lib/core/translations/language/ko_kr.dart b/lib/core/translations/language/ko_kr.dart index 14ce02072..f865bdc11 100644 --- a/lib/core/translations/language/ko_kr.dart +++ b/lib/core/translations/language/ko_kr.dart @@ -384,12 +384,12 @@ const Map 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 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', // 新手引导 diff --git a/lib/core/translations/language/lt_lt.dart b/lib/core/translations/language/lt_lt.dart index e2bdf14d4..050951b74 100644 --- a/lib/core/translations/language/lt_lt.dart +++ b/lib/core/translations/language/lt_lt.dart @@ -386,21 +386,21 @@ const Map 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 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 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 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ą", diff --git a/lib/core/translations/language/lv_lv.dart b/lib/core/translations/language/lv_lv.dart index 955e1d695..6f90327ec 100644 --- a/lib/core/translations/language/lv_lv.dart +++ b/lib/core/translations/language/lv_lv.dart @@ -715,27 +715,27 @@ const Map 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 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 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 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 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 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 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", }; diff --git a/lib/core/translations/language/ms_my.dart b/lib/core/translations/language/ms_my.dart index 4abf1cd6f..a912c8d76 100644 --- a/lib/core/translations/language/ms_my.dart +++ b/lib/core/translations/language/ms_my.dart @@ -218,54 +218,54 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 msMY = { // 个人资料模块 "editProfile": "Sunting Maklumat Peribadi", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Nama Samaran", "save": "Simpan", "about": "Mengenai", @@ -1164,8 +1164,8 @@ const Map 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 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 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 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 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 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 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 msMY = { // 国家列表 "邮箱": "E-mel", - "中国": "China", + "中国": 'China', "美国": "Amerika Syarikat", "加拿大": "Kanada", "俄罗斯": "Rusia", - "英国": "United Kingdom", + "英国": 'United Kingdom', "德国": "Jerman", "意大利": "Itali", "法国": "Perancis", @@ -1591,105 +1591,105 @@ const Map 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', }; diff --git a/lib/core/translations/language/nb_no.dart b/lib/core/translations/language/nb_no.dart index 823b4981a..af103f38a 100644 --- a/lib/core/translations/language/nb_no.dart +++ b/lib/core/translations/language/nb_no.dart @@ -19,11 +19,11 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 nbNO = { // 个人资料模块 "editProfile": "Rediger personlig informasjon", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Kallenavn", "save": "Lagre", "about": "Om", @@ -1164,8 +1172,8 @@ const Map 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 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 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 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 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 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', }; diff --git a/lib/core/translations/language/nl_nl.dart b/lib/core/translations/language/nl_nl.dart index 93b3c619c..2aff56245 100644 --- a/lib/core/translations/language/nl_nl.dart +++ b/lib/core/translations/language/nl_nl.dart @@ -19,11 +19,11 @@ const Map nlNL = { "unknownError": "Onbekende fout", "asrConnectionFailed": "Verbinding met de spraakherkenningsservice is mislukt. Controleer de netwerkverbinding of probeer het later opnieuw.", - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", + "justNow": "Zojuist", + "minutesAgo": "@minutes minuten geleden", + "yesterday": "Gisteren", + "daysAgo": "@days dagen geleden", + "hoursAgo": "@hours uur geleden", // 启动页 "slogan": "De wereld verbinden, voorbij het geluid", @@ -76,7 +76,7 @@ const Map nlNL = { "serbian": "Servisch", "icelandic": "IJslands", "arabic": "Arabisch", - "persian": "Persisch", + "persian": "Perzisch", // 登录模块 "welcome": "Welkom", @@ -197,245 +197,127 @@ const Map nlNL = { "exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden", "exploreSlogan1": "Slimme metgezel, eindeloze mogelijkheden", "exploreSlogan2": "Slimme bril, eindeloze mogelijkheden", - "exploreAi": "Ontdek de AI-functies die door Voitrans worden aangeboden", - "aiFunction": "AI-functies", - "allRoundAssistant": "Alles-in-één assistent", - "allRoundAssistantInfo": - "Helpt u bij het oplossen van verschillende problemen", - "simultaneousTranslation": "Simultaanvertolking", - "faceToFaceTranslation": "Face-to-face vertaling", - 'audioVideoTranslation': 'Audio- en videovertaling', - 'callTranslation': 'Gespreksvertaling', - "simultaneousTranslationInfo": "Realtime vertaling in meer dan 80 talen", - "aiGirlfriend": "AI-vriendin", - "aiGirlfriendInfo": "Intelligente metgezel, chat op elk moment", - "healthConsultant": "Multifunctionele AI-chat", - "healthConsultantInfo": "Biedt meer AI-chatfuncties", - "conferenceAssistant": "Assistent voor zakelijke bijeenkomsten", - "conferenceAssistantInfo": - "Realtime notuleren van vergaderingen, meertalige vertaling", - "usageStats": "Gebruikstatistieken", - "usageStatsInfo": " Bekijk de gebruikstatistieken van uw applicatie", - "scene": "Scenario", - - // 用量统计模块 - "aiChat": "AI-chat", - "translationStats": "Vertaalstatistieken", - "meetingStats": "Vergaderstatistieken", - "today": "Vandaag", - "thisWeek": "Deze week", - "thisMonth": "Deze maand", - "history": "Geschiedenis", - "currentSessionStats": "Statistieken van huidige sessie", - "translationCount": "Aantal vertalingen", - "sessionDuration": "Sessieduur", - "characters": "Tekens", - "recordingDuration": "Opnameduur", - "totalApiCalls": "Totaal aantal API-aanroepen", - "sessionCount": "Aantal sessies", - "totalCharacters": "Totaal aantal tekens", - "apiCallStats": "Statistieken API-aanroepen", - "translationApi": "Vertaal-API", - "asr": "ASR", - "tts": "TTS", - "dataVolumeStats": "Statistieken datavolume", - "sourceTextCharacters": "Tekens in brontekst", - "ttsTextCharacters": "TTS-tekens", - "effectiveAudioDuration": "Effectieve audiolengte", - "totalSessionDuration": "Totale sessieduur", - "costStats": "Kostenstatistieken", - "estimatedCost": "Geschatte kosten", - "dailyCostThreshold": "Dagelijkse kostendrempel", - "monthlyCostThreshold": "Maandelijkse kostendrempel", - "usageBehaviorStats": "Statistieken gebruiksgedrag", - "mostUsedLanguagePair": "Meest gebruikte talenpaar", - "mostUsedMode": "Meest gebruikte modus", - "asrApiCalls": "ASR-aanroepen", - "totalAudioDuration": "Totale audiolengte", - "audioFileSize": "Grootte audiobestand", - "transcriptBytes": "Transcriptbytes", - "loadFailed": "Laden mislukt", - "statsLoadFailedTryLater": - "Statistieken konden niet worden geladen. Probeer het later opnieuw.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", + "exploreSlogan3": "Slimme pen, eindeloze mogelijkheden", // 商品模块 - 通用 - 'availablePackages': 'Beschikbare pakketten', - 'remainingQuota': 'Resterend tegoed', - 'totalQuota': 'Totaal tegoed', - 'remaining': 'Resterend', - 'featureDescription': 'Functiebeschrijving', - 'paymentSuccess': 'Betaling geslaagd', - 'paymentFailed': 'Betaling mislukt', - 'gotIt': 'Begrepen', - 'paymentFailedTryAgain': 'Betaling mislukt. Probeer het opnieuw.', - 'selectPaymentMethod': 'Selecteer betaalmethode', - 'wechatPay': 'WeChat Pay', - 'alipayPay': 'Alipay', - 'paypalPay': 'PayPal', - 'appleIap': 'Apple IAP', - 'googleIap': 'Google IAP', - 'wechatOrderCreateFailed': 'Kan WeChat-bestelling niet aanmaken', - 'alipayOrderCreateFailed': 'Kan Alipay-bestelling niet aanmaken', - 'appleOrderCreateFailed': 'Kan Apple-bestelling niet aanmaken', - 'googleOrderCreateFailed': 'Kan Google-bestelling niet aanmaken', - 'paypalOrderCreateFailed': 'Kan PayPal-bestelling niet aanmaken', - 'paymentException': 'Betalingsuitzondering', - 'paymentLaunchFailed': 'Kan betaling niet starten', - 'paymentExceptionWithError': 'Betalingsuitzondering: @error', - 'paymentProcessingCheckLater': - 'Uw bestelling wordt verwerkt. Controleer het later.', - 'paymentResultQueryException': 'Kan betalingsresultaat niet opvragen: @error', - 'orderConfirmedQuotaRefreshed': - 'Bestelling bevestigd. Uw tegoed is bijgewerkt.', - 'paymentCompletedConfirming': 'Betaling voltooid. Bevestigen…', - 'paymentCancelled': 'Betaling geannuleerd', - 'paypalOpenedCompleteInBrowser': - 'PayPal geopend. Voltooi de betaling in uw browser.', - 'paypalOpenFailed': 'Kan PayPal-betaalpagina niet openen', - 'paymentTestTitle': 'Betalingstest', - 'paymentTestOrderInfo': 'Testbestelgegevens', - 'paymentTestProductId': 'Product-ID', - 'paymentTestProductDescription': 'Productbeschrijving', - 'paymentTestWechatDescription': 'WeChat-betalingstest', - 'paymentTestAlipayDescription': 'Alipay-betalingstest', - 'paymentTestAmount': 'Bedrag', - 'paymentTestSelectAmount': 'Selecteer testbedrag', - 'paying': 'Betalen...', - 'wechatPayWithAmount': 'WeChat Pay ¥@amount', - 'alipayPayWithAmount': 'Alipay ¥@amount', - 'paymentStatusTitle': 'Betalingsstatus', - 'errorInfoWithMessage': 'Fout: @message', - 'retest': 'Opnieuw testen', - 'paymentTestInstructionsTitle': 'Instructies', - 'paymentTestInstructionsContent': - '1. Selecteer een testbedrag (aanbevolen: ¥0.01)\n2. Klik op de betaalknop om te starten\n3. Voltooi de betaling in de betaal-app\n4. Keer terug om het resultaat te controleren', - 'startingWechatPayment': 'WeChat Pay starten...', - 'startingAlipayPayment': 'Alipay starten...', - 'wechatPaymentSuccess': 'WeChat Pay-betaling geslaagd!', - 'wechatPaymentFailed': 'WeChat Pay mislukt', - 'wechatPaymentLaunchFailed': 'Kan WeChat Pay niet starten', - 'cannotLaunchWechatPayment': 'Kan WeChat Pay niet starten', - 'wechatPaymentException': 'WeChat Pay-uitzondering', - 'wechatPaymentTestCompleted': 'WeChat Pay-test voltooid', - 'alipayPaymentSuccess': 'Alipay-betaling geslaagd!', - 'alipayPaymentFailed': 'Alipay mislukt', - 'alipayPaymentLaunchFailed': 'Kan Alipay niet starten', - 'cannotLaunchAlipayPayment': 'Kan Alipay niet starten', - 'alipayPaymentException': 'Alipay-uitzondering', - "insufficientIntegral": "Onvoldoende punten", - "insufficientBalanceDesc": - 'Onvoldoende saldo. Ga naar de bijbehorende opwaardeerpagina om op te waarderen.', - "recharge": 'Naar opwaarderen', - "aiMemberExpiredDesc": - 'AI-lidmaatschap verlopen. Ga naar de opwaardeerpagina om te verlengen.', - - // 商品模块 - 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.', - 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': - 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', - 'aiDisclaimer': - 'Functies zijn afhankelijk van apparaatmachtigingen, beschikbaarheid van de service en netwerkomstandigheden.', - - // 商品模块 - 翻译商品页 - 'realtimeTranscription': 'Realtime transcriptie', - 'sceneLexicon': 'Scenario-woordenlijst', - 'subtitleDisplay': 'Ondertitels', - 'transHeaderDesc1': - 'Realtime simultaan tolken en tekstvertaling met spraak met lage latentie.', - 'transHeaderDesc2': 'Geschikt voor reizen, zaken, lezingen en onderwijs.', - 'translateZhEn': 'Chinees-Engelse vertaling', - 'lowLatencyVoiceBroadcast': 'Spraakweergave met lage latentie', - 'multiLangTextTranslation': 'Meertalige tekstvertaling', - 'termOptimizationContextPreserve': - 'Terminologie-optimalisatie en contextbehoud', - 'lexiconTourBusinessLife': - 'Woordenlijsten voor reizen/zakelijk/dagelijks leven', - 'personalVocabularyMemory': 'Persoonlijk woordenboekgeheugen', - 'conversationSubtitleLargeText': 'Gespreksondertitels / grote-tekstmodus', - 'colorHighContrast': 'Hoog kleurcontrast', - 'transDisclaimer': - 'Vertaalprestaties zijn afhankelijk van microfoon, netwerklatentie en omgevingsgeluid.', - - // 商品模块 - 会议商品页 - 'meetingRecording': 'Vergaderopname', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - 'meetingHeaderDesc1': - 'Audio opnemen, transcriberen, zoeken op trefwoord en automatische samenvatting om vergaderefficiëntie te verhogen.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Automatisch opnemen en segmenteren', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Gebruik in een rustige omgeving; prestaties zijn afhankelijk van microfoon en netwerk.', + "quota": "Quota", + "times": "Keer", + "minutes_unit": "Minuten", + "purchase": "Kopen", + "purchaseSuccess": "Aankoop geslaagd", + "purchaseFailed": "Aankoop mislukt", + "purchaseCancelled": "Aankoop geannuleerd", + "purchaseRestored": "Aankoop hersteld", + "restorePurchase": "Aankoop herstellen", + "productNotFound": "Product niet gevonden", + "alreadyPurchased": "Al aangeschaft", + "purchaseProcessing": "Aankoop verwerken", + "paymentFailed": "Betaling mislukt", + "verificationFailed": "Verificatie mislukt", + "purchaseNotAllowed": "Aankoop niet toegestaan op dit apparaat", + + // 商品模块 - 支付方式 + "selectPaymentMethod": "Selecteer betaalwijze", + "wechatPay": "WeChat Pay", + "alipay": "Alipay", + "paypal": "PayPal", + "appleIAP": "Apple IAP", + "googleIAP": "Google IAP", + + // 商品模块 - 使用统计 + "usageStatistics": "Gebruiksstatistieken", + "totalUsage": "Totaal gebruik", + "usageHistory": "Gebruiksgeschiedenis", + "exportData": "Gegevens exporteren", + "cleanupOldData": "Oude gegevens opschonen", + "cleanupComplete": "Opruimen voltooid", + "cleanedOldData": "Gegevens ouder dan 90 dagen gewist", + "exportFeature": "Exportfunctie", + "exportInDevelopment": "Gegevensexport is in ontwikkeling", + + // 商品模块 - AI产品页 + "aiProductTitle": "AI-assistent", + "aiProductSubtitle": "Slimme AI-assistent voor dagelijks gebruik", + "musicAndRecommendation": "Muziek & Aanbevelingen", + "navigationAndRoutes": "Navigatie & Routes", + "nearbySearch": "Zoeken in de buurt", + "newsInformation": "Nieuws & Informatie", + "communicationAssistant": "Communicatieassistent", + "aiHeaderDesc1": "Uw persoonlijke AI-assistent, altijd beschikbaar", + "aiHeaderDesc2": + "Ondersteunt spraakbediening, muziek, navigatie, nieuws en meer", + "aiFeatureTitle": "Functies", + "aiFeatureMusic": "Muziek afspelen op verzoek", + "aiFeatureMusicDesc": + "Vraag Lily om uw favoriete muziek te spelen, gebaseerd op genre, artiest of stemming", + "aiFeatureNavigation": "Intelligente navigatie", + "aiFeatureNavigationDesc": + "Lily helpt u de beste route te vinden en geeft realtime verkeersinformatie", + "aiFeatureNearby": "Zoeken in de buurt", + "aiFeatureNearbyDesc": + "Vind restaurants, winkels en diensten in uw directe omgeving", + "aiFeatureNews": "Nieuws & Informatie", + "aiFeatureNewsDesc": + "Blijf op de hoogte met het laatste nieuws en gepersonaliseerde informatie", + "aiFeatureCommunication": "Communicatieassistent", + "aiFeatureCommunicationDesc": + "Stuur berichten, maak afspraken en beheer uw contacten via spraak", + + // 商品模块 - 翻译产品页 + "translationProductTitle": "Vertaling", + "translationProductSubtitle": "Realtime meertalige vertaling", + "translationHeaderDesc1": "Realtime vertaling in meer dan 50 talen", + "translationHeaderDesc2": + "Ideaal voor reizen, zakelijke vergaderingen en internationale communicatie", + + // 商品模块 - Meeting产品页 + "meetingProductTitle": "Vergadering", + "meetingProductSubtitle": "Professionele vergaderoplossing", + "transcriptionAndSummary": "Transcriptie & Samenvatting", + "keywordSearch": "Trefwoordzoeken", + "collaborationSharing": "Samenwerking & Delen", + "meetingHeaderDesc2": + "AI-aangedreven transcriptie en samenvatting voor productieve vergaderingen", + "meetingSpeakerTagging": "Sprekeridentificatie", + "meetingLongAudioTranscription": "Lange audiotranscriptie", + "meetingKeyPointSummary": "Kernpuntensamenvatting", + "meetingTopicNameSearch": "Onderwerpzoeken op naam", + "meetingTimelineJump": "Tijdlijnsprong", + "meetingExportSummary": "Samenvatting exporteren", + "meetingMultiPlatformShare": "Delen op meerdere platforms", // 商品模块 - VIP会员页 - 'benefitsOverview': 'Benefits overview', - 'higherQuota': 'Higher usage quota', - 'lowerUnitPrice': 'Lower unit price', - 'priorityService': 'Priority service', - 'exclusiveSupportChannel': 'Dedicated support channel', - 'fastResponse': 'Fast issue response', - 'eventsAndDiscounts': 'Events and discounts', - 'memberExclusiveEvents': 'Member-exclusive events', - 'longTermDiscountPlan': 'Long-term discount plan', - 'generalPrivileges': 'General privileges', - 'earlyAccessNewFeatures': 'Early access to new features', - 'crossDeviceSync': 'Synchronisatie tussen apparaten', - 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', - - // 商品模块 - 商品名称与描述 - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Vertaling Basis 100', - 'trans_002_name': 'Vertaling Basis 500', - 'trans_003_name': 'Vertaling 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.', - 'meet_001_desc': 'Bevat 100 vergaderopnames/transcripties.', - 'meet_002_desc': 'Bevat 500 vergaderopnames/transcripties.', - 'meet_003_desc': 'Bevat 1000 vergaderopnames/transcripties.', - 'trans_001_desc': 'Bevat 100 vertalingen (spraak/tekst).', - 'trans_002_desc': 'Bevat 500 vertalingen (spraak/tekst).', - 'trans_003_desc': 'Bevat 1000 vertalingen (spraak/tekst).', + "vipTitle": "VIP-lidmaatschap", + "vipSubtitle": "Geniet van exclusieve voordelen", + "benefitsOverview": "Voordelenomzicht", + "higherQuota": "Hoger quota", + "lowerUnitPrice": "Lagere eenheidsprijs", + "priorityService": "Prioriteitsservice", + "exclusiveSupportChannel": "Exclusief supportkanaal", + "fastResponse": "Snelle reactie", + "eventsAndDiscounts": "Evenementen & Kortingen", + "memberExclusiveEvents": "Exclusieve ledevenementen", + "longTermDiscountPlan": "Langetermijnkortingsplan", + "generalPrivileges": "Algemene voordelen", + "earlyAccessNewFeatures": "Vroege toegang tot nieuwe functies", + "vipDisclaimer": + "VIP-voordelen zijn van toepassing op alle services binnen het platform", + + // 商品模块 - 商品名称 + 'meet_001_name': 'Vergadering Basis 100', + 'meet_002_name': 'Vergadering Basis 500', + 'meet_003_name': 'Vergadering Basis 1000', + 'ai_001_name': 'AI Basis 100', + 'ai_002_name': 'AI Basis 500', + 'ai_003_name': 'AI Basis 1000', + + // 商品模块 - 商品描述 + 'meet_001_desc': 'Bevat 100 minuten vergadertranscriptie.', + 'meet_002_desc': 'Bevat 500 minuten vergadertranscriptie.', + 'meet_003_desc': 'Bevat 1000 minuten vergadertranscriptie.', + 'ai_001_desc': 'Bevat 100 gebruiken. Toegang tot kern-AI-functies.', + 'ai_002_desc': 'Bevat 500 gebruiken. Toegang tot kern-AI-functies.', + 'ai_003_desc': 'Bevat 1000 gebruiken. Toegang tot kern-AI-functies.', // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', @@ -443,41 +325,41 @@ const Map nlNL = { 'copyrightVoitrans': '© 2025 Voitrans Technologies', // 新手引导 - 'skip': "Overslaan", - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - 'imHere': 'I’m here~', - 'guideWelcomeWakeAI': 'Welcome to Voitrans! First, wake your AI “Lily”.', - 'aiReplyCompleted': 'Lily has finished the reply!', - 'aiThinking': 'Lily is thinking…', - 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', - 'confirmInput': 'Confirm Input', - 'guideClickSendPrefix': 'Tap send, ', - '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": "Overslaan", + "next": "Volgende", + "sayLilyHint": "Zeg \u201cLily Lily\u201d tegen de microfoon", + "imHere": "Ik ben er~", + "guideWelcomeWakeAI": "Welkom bij Voitrans! Activeer eerst je AI \u201cLily\u201d.", + "aiReplyCompleted": "Lily heeft het antwoord afgerond!", + "aiThinking": "Lily denkt na\u2026", + "guideAwakenSuccess": "Geweldig! Lily is wakker\u2014vraag om hulp.", + "confirmInput": "Invoer bevestigen", + "guideClickSendPrefix": "Tik op verzenden, ", + "guideWeatherStart": "Zeg tegen Lily: \u201cWat is het weer vandaag?\u201d", + "guideWeatherInput": "Wat is het meer vandaag?", + "guideWeatherSend": "Lily meldt het meer in realtime", + "guideWeatherEnd": "Lily kan live weerberichten geven\u2014probeer andere opdrachten", + "guideMusicStart": "Zeg tegen Lily: \u201cSpeel rockmuziek\u201d", + "guideMusicInput": "Speel rockmuziek", + "guideMusicSend": "Lily zoekt muziek voor je", + "guideMusicEnd": "Lily heeft muziek gevonden\u2014probeer andere opdrachten", + "guideNavStart": "Zeg tegen Lily: \u201cNavigeer naar de luchthaven\u201d", + "guideNavInput": "Navigeer naar de luchthaven", + "guideNavSend": "Lily plant de route", + "guideNavEnd": "Navigatie ingesteld\u2014probeer andere opdrachten", + "guideMeetingStart": + "Zeg tegen Lily: \u201cMaak een vergaderherinnering voor morgen om 15:00\u201d", + "guideMeetingInput": "Maak een vergaderherinnering voor morgen om 15:00", + "guideMeetingSend": "Lily maakt een vergaderherinnering", + "guideMeetingEnd": "Herinnering aangemaakt\u2014probeer andere opdrachten", + "guidePhoneStart": "Zeg tegen Lily: \u201cBel mama\u201d", + "guidePhoneInput": "Bel mama", + "guidePhoneSend": "Lily belt voor je", + "guidePhoneEnd": "Oproep geplaatst\u2014probeer andere opdrachten", + "guideSmsStart": "Zeg tegen Lily: \u201cStuur papa een bericht: ik eet thuis\u201d", + "guideSmsInput": "Stuur papa een bericht: ik eet thuis", + "guideSmsSend": "Lily stuurt het bericht", + "guideSmsEnd": "Bericht verzonden\u2014spraakbediening is handig", // Meeting模块 - 首页与导航 "startMeeting": "Start vergadering", @@ -506,9 +388,9 @@ const Map nlNL = { 'aiPenNotFound': 'AI PEN-apparaat niet gevonden', 'connectedToAiPen': 'Verbonden met AI PEN-apparaat', 'checkingNewFiles': 'Nieuwe bestanden voor import controleren', - 'startingWifi': 'Starting Wi-Fi...', - 'newFilesDetected': 'New files detected, preparing to import', - 'noNewFiles': 'No new files to import', + 'startingWifi': 'Wi-Fi starten...', + 'newFilesDetected': 'Nieuwe bestanden gedetecteerd, importeren voorbereiden', + 'noNewFiles': 'Geen nieuwe bestanden om te importeren', 'connectingWifi': 'Verbinden met wifi...', 'wifiConnected': 'Wifi-verbinding geslaagd', 'downloadingFiles': 'Bestanden downloaden...', @@ -547,30 +429,30 @@ const Map nlNL = { 'Om tijdens het opnemen de zwevende opnamebalk (timer/pauze/hervatten) te tonen, hebben we overlay-machtiging nodig.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Kan de systeeminstellingen niet automatisch openen. Open Instellingen en schakel de overlay-machtiging handmatig in.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Transcriberen...', + 'summarizing': 'Samenvatten...', + 'analyzing': 'Analyseren...', + 'summaryComplete': 'Samenvatting voltooid', + 'generate': 'Genereren', + 'overview': 'Overzicht', + 'transcription': 'Transcriptie', + 'summary': 'Samenvatting', + 'mindMap': 'Mindmap', + 'editSpeaker': 'Bewerken', + 'nameSpeaker': 'Spreker benoemen', // Meeting模块 - 转写与总结 - 'reSummarize': 'Re-summarize', - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'reSummarize': 'Opnieuw samenvatten', + 'dateAndTime': 'Datum & Tijd', + 'location': 'Locatie', + 'attendees': 'Deelnemers', + 'inputLocation': 'Locatie invoeren', + 'inputAttendees': 'Deelnemers invoeren', // Meeting模块 - 模版与生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', + 'selectSummaryTemplate': 'Samenvattingssjabloon selecteren', + 'useThisTemplate': 'Dit sjabloon gebruiken', + 'lastUsed': 'Laatst gebruikt', 'create': 'Aanmaken', 'templateDetails': 'Sjabloondetails', 'tag': 'Label', @@ -596,54 +478,54 @@ const Map nlNL = { 'AI-analyse identificeert belangrijke gebeurtenissen in opnames, zodat u belangrijke gebeurtenissen kunt selecteren voor AI-generatie.', // Meeting模块 - 文件操作 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', + 'importing': 'Importeren...', + 'batchImporting': 'Bulkimport bezig...', 'importingLocalRecordings': 'Lokale opnames importeren...', 'importFailed': 'Importeren mislukt: {filePath}, fout: {error}', 'importSuccess': '{count} lokale opnames succesvol geïmporteerd', 'importError': 'Importeren mislukt: {error}', 'pleaseSelectAudioFile': 'Selecteer een audiobestand', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', + 'shareAudio': 'Vergaderaudio delen', + 'shareComplete': 'Delen voltooid!', 'shareFailed': 'Delen mislukt: {error}', 'fileProcessingFailed': 'Bestandsverwerking mislukt: {filePath}, fout: {error}', // Meeting模块 - 思维导图 'saveMindMap': 'Mindmap opslaan', - 'shareMindMap': 'Share Mind Map', + 'shareMindMap': 'Mindmap delen', 'shareSuccess': 'Delen geslaagd', // 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 vragen...', + 'askAIPrompt': 'Waarmee kan ik u vandaag helpen?', + 'continueAsk': 'Verder vragen', + 'todoList': 'Takenlijst', + 'extractConclusion': 'Conclusie extraheren', + 'generateKeyIndicators': 'Kernindicatoren genereren', // 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': 'Link delen', + 'copyTranscript': 'Transcriptie kopiëren', + 'copySummary': 'Samenvatting kopiëren', + 'exportAudio': 'Audio exporteren', + 'exportTranscript': 'Transcriptie exporteren', + 'shareMeetingAudio': 'Vergaderaudio delen', + 'exportSummary': 'Samenvatting exporteren', + 'exportAs': 'Exporteren als', + 'exportingPDF': 'PDF exporteren...', 'export': 'Exporteren', // Meeting模块 - 发言者 'applyToAllParagraphs': "Toepassen op alle alinea's van deze spreker", 'summaryWillBeUpdatedAutomatically': 'De samenvatting wordt automatisch bijgewerkt op basis van de sjabloon', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', + 'nameCurrentSpeaker': 'Huidige spreker benoemen', + 'recentlyUsedNames': 'Recent gebruikte namen', + 'applyToCurrentParagraph': 'Toepassen op huidige alinea', + 'totalTime': 'Totale tijd', 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + 'Samenvattingssprekers worden automatisch bijgewerkt', // Meeting模块 - 云端同步 'syncToCloud': 'Synchroniseren met cloud', @@ -662,87 +544,87 @@ const Map nlNL = { 'disabled': 'Uitgeschakeld', 'myVoitransDevice': 'Mijn VOITRANS-apparaat', 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', + 'aboutVoitrans': 'Over VOITRANS', + 'meetingDays': 'Dagen', + 'meetingHours': 'Uren', + 'voitransAiMember': 'Voitrans AI Lid', + 'unlockStarterMember': 'Startlidmaatschap ontgrendelen', 'bindDeviceToActivate': 'Koppel Voitrans-apparaat om Starter-lidmaatschap te activeren', 'unlockNow': 'Nu ontgrendelen', // 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': 'Vergelijking', + 'detailedInfo': 'Gedetailleerde informatie', + 'monthlyTranscriptionTime': 'Maandelijkse transcriptietijd', + 'unlimited': 'Onbeperkt', + 'professionalTemplates': 'Professionele sjablonen', + 'limited': 'Beperkt', + 'fullTemplates': 'Volledige sjablonen', + 'professionalTerms': 'Professionele terminologie', + 'customTemplates': 'Aangepaste sjablonen', + 'visualMindMap': 'Visuele mindmap', + 'speakerIdentification': 'Sprekeridentificatie', + 'aiVoiceEnhancement': 'AI-stemverbetering', + 'audioImport': 'Audio importeren', + 'multipleExportFormats': 'Meerdere exportindelingen', + 'professionalSummaryTemplates': 'Professionele samenvattingssjablonen', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Professioneel sjabloonontwerp om uw werkefficiëntie te verbeteren. Aangepast aan branchebehoeften.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'U kunt samenvattingsprompts aanpassen aan uw behoeften en ze gebruiken om de gewenste samenvattingen te genereren.', 'askAiDesc': 'Haal op intelligente wijze diepere informatie uit opnames en genereer met één tik datatabellen, belangrijke conclusies, takenlijsten, rapport-e-mails en andere opgemaakte inhoud.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Voorbij samenvattingen: organiseer en visualiseer kernpunten met mindmaps voor een effectiever begrip van de volledige tekst.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Ontdek, deel en haal inspiratie uit de sjabloonbibliotheek gemaakt door gebruikers.', '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.', + 'Audiotranscriptie ondersteunt sprekeridentificatie, herstelt vergadering- of telefoongespreksinhoud intuïtiever. Tegelijk wordt de samenvatting nauwkeuriger.', 'privateCloudSyncDesc': 'Uw opnames en transcripties worden veilig opgeslagen op speciale cloudservers, met volledige versleuteling tijdens upload en download om privacy en veiligheid te waarborgen.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'AI-stemverbetering ondersteunt meerdere ruisonderdrukkingsinstellingen, elimineert achtergrondgeluid intelligent, verbetert stemhelderheid en verbetert de afspeelkwaliteit van audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importeer eenvoudig audiobestanden van lokale of externe applicaties, zoals spraaknotities, Google Drive, enz.', 'multipleExportFormatsDesc': 'Exporteer uw audio-opnames, transcriptietekst en samenvattingen in verschillende indelingen (TXT, PDF, JPEG) naar wens.', - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'upgradeMembership': 'Lidmaatschap upgraden', + 'yearlySubscription': 'Jaarlijks abonnement', + 'monthlySubscription': 'Maandelijks abonnement', + 'proMonthly': 'Pro \u00a560/maand', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7 dagen gratis proefperiode, daarna \u00a5800/jaar. Annuleer op elk moment voor het einde van de proefperiode.', + 'sevenDayTrial': '7 dagen gratis proefperiode', + 'unlimitedMonthly': 'Onbeperkt \u00a5120/maand', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', - 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + '7 dagen gratis proefperiode, daarna \u00a51600/jaar. Annuleer op elk moment voor het einde van de proefperiode.', + 'trialNote': + '*Gratis proefperiode van 7 dagen, daarna jaarlijks gefactureerd, op elk moment annuleerbaar.', + 'proPrice': 'Pro \u00a5120', + 'proMonthlyPrice': '\u00a5120/maand', + 'subscribe': 'Abonneren', + 'unlimitedPrice': 'Onbeperkt \u00a5198', + 'unlimitedMonthlyPrice': '\u00a5198/maand', '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: ', + '*Na het upgraden van het abonnement worden de resterende dagen van het oorspronkelijke abonnement automatisch berekend en teruggestort op uw betaalrekening', + 'buyMoreTranscriptionTime': 'Meer transcriptietijd kopen', + 'sixThousandMinutes': '6.000 minuten', + 'threeThousandMinutes': '3.000 minuten', + 'sixHundredMinutes': '600 minuten', + 'oneHundredTwentyMinutes': '120 minuten', + 'validityPeriod': '*Geldigheidsperiode: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', + 'Direct geactiveerd na aankoop, geldig gedurende 2 jaar na activering.', // Meeting模块 - 录音语言 'recordLanguage': 'Opnametaal', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', + 'cantonese': 'Kantonees', + 'sichuan': 'Sichuan-dialect', + 'shanghai': 'Shanghais dialect', // Meeting模块 - 错误提示 - 'meetingUnknownLanguage': 'Unknown Language', + 'meetingUnknownLanguage': 'Onbekende taal', 'analysisFailed': 'Analyse mislukt, probeer het later opnieuw', 'transcriptionFailed': 'Transcriptie mislukt, probeer het later opnieuw', 'summaryFailed': 'Samenvatting mislukt, probeer het later opnieuw', @@ -1081,9 +963,9 @@ const Map nlNL = { "maxSize": "Maximale grootte", "close": "Sluiten", "setImageQuality": "Beeldkwaliteit instellen", - "currentQuality": "Current quality: @value%", + "currentQuality": "Huidige kwaliteit: @value%", "setMaxSize": "Maximale grootte instellen", - "currentMaxSize": "Current: @pxpx", + "currentMaxSize": "Huidig: @pxpx", "waitingForAction": "Wachten op actie", "pleaseSelectImageToStart": "Selecteer een afbeelding om te starten", "chooseImage": "Afbeelding kiezen", @@ -1100,9 +982,9 @@ const Map nlNL = { "processingFailed": "Verwerking mislukt", "imageProcessingOrTranslationFailed": "Afbeeldingsverwerking of vertaling mislukt. Probeer het opnieuw.\nFout: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLarge": "Afbeelding is groter dan de limiet van 4 MB", "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "Afbeelding is groter dan 4 MB. Verlaag de kwaliteit of afmetingen en probeer opnieuw", "emptyTranslationResult": "Afbeeldingsvertaal-API retourneerde een leeg resultaat", "imageTranslationFailedTryLater": @@ -1114,11 +996,11 @@ const Map nlNL = { "photoAlbumPermissionRequired": "Fotoalbumtoestemming vereist om afbeeldingen te kiezen", "translationDetails": "Vertaaldetails", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", + "originalImage": "Originele afbeelding", + "sourceLanguage": "Brontaal", + "targetLanguage": "Doeltaal", "translationTime": "Vertaaltijd", - "shareInDevelopment": "Sharing feature under development", + "shareInDevelopment": "Deelfunctie in ontwikkeling", // 翻译模块 - 录音文件 "translateAudioFiles": "Audiobestanden vertalen", @@ -1170,8 +1052,8 @@ const Map nlNL = { 'deleteAccount': 'Account verwijderen', 'deleteAccountTips': 'Weet u zeker dat u uw account permanent wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', + 'clean': 'Cache wissen', + 'cleanTips': 'Weet u zeker dat u de persoonlijke cache wilt wissen?', 'networkConnectionFailed': 'Netwerkverbinding mislukt, controleer uw netwerkinstellingen en probeer het opnieuw', 'serverTemporarilyUnavailable': @@ -1285,7 +1167,7 @@ const Map nlNL = { 'Gebruikt om verbinding te maken met Bluetooth-apparaten', 'bluetoothConnectPermissionDetailDesc': 'Voor het verbinden met Bluetooth-apparaten is Bluetooth-verbindingsmachtiging vereist', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'notificationPermissionDesc': 'Gebruikt voor het verzenden van meldingen', 'notificationPermissionDetailDesc': 'De app heeft meldingsmachtiging nodig om u belangrijke waarschuwingen en berichten te sturen', 'appNeedsPermissionForFullFunction': @@ -1326,7 +1208,7 @@ const Map nlNL = { 'Microfoonmachtiging is permanent geweigerd. Ga naar de app-instellingen om de microfoonmachtiging handmatig in te schakelen.', 'storagePermissionPermanentDenial': 'Opslagmachtiging is permanent geweigerd. Ga naar de app-instellingen om de opslagmachtiging handmatig in te schakelen.', - 'permissionUtilNeed': 'Need ', + 'permissionUtilNeed': 'Nodig ', 'permissionUtilPermission': ' Machtiging', 'permissionUtilRestricted': ' Machtiging beperkt', 'permissionUtilRestrictedMessage': @@ -1422,9 +1304,9 @@ const Map nlNL = { 'bluetoothGuideTitle': 'Handmatige Bluetooth-activering vereist', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Volg deze stappen:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Bluetooth inschakelen: Instellingen → Bluetooth → Aan', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Bluetooth inschakelen: Instellingen \u2192 Bluetooth \u2192 Aan', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Verbind apparaat: zoek je apparaat in “Mijn apparaten” en tik om te verbinden', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Verbind apparaat: zoek je apparaat in "Mijn apparaten" en tik om te verbinden', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': 'Ga terug naar de app om het koppelproces te vervolgen', // 返回应用继续配对流程 'bluetoothGuideTip': @@ -1547,162 +1429,162 @@ const Map nlNL = { "playAll": "Alles afspelen", // 播放全部 // 语言名称 - "中文(简体)": "Chinees (vereenvoudigd)", - "中文(繁体)": "Chinees (traditioneel)", - "中文(香港繁体)": "Chinees (Hongkong traditioneel)", - "英语": "Engels", - "日语": "Japans", - "韩语": "Koreaans", - "法语": "Frans", - "西班牙语": "Spaans", - "葡萄牙语": "Portugees", - "意大利语": "Italiaans", - "德语": "Duits", - "俄语": "Russisch", - "波兰语": "Pools", - "荷兰语": "Nederlands", - "瑞典语": "Zweeds", - "捷克语": "Tsjechisch", - "现代希腊语": "Modern Grieks", - "罗马尼亚语": "Roemeens", - "匈牙利语": "Hongaars", - "乌克兰语": "Oekraïens", - "丹麦语": "Deens", - "芬兰语": "Fins", - "挪威语": "Noors", - "克罗地亚语": "Kroatisch", - "加泰隆语": "Catalaans", - "阿拉伯语": "Arabisch", - "泰语": "Thais", - "越南语": "Vietnamees", - "印尼语": "Indonesisch", - "印地语": "Hindi", - "土耳其语": "Turks", - "马来语": "Maleis", - "孟加拉语": "Bengaals", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", - "波斯语": "Perzisch", - "斯瓦希里语": "Swahili", + "\u4e2d\u6587(\u7b80\u4f53)": "Chinees (vereenvoudigd)", + "\u4e2d\u6587(\u7e41\u4f53)": "Chinees (traditioneel)", + "\u4e2d\u6587(\u9999\u6e2f\u7e41\u4f53)": "Chinees (Hongkong traditioneel)", + "\u82f1\u8bed": "Engels", + "\u65e5\u8bed": "Japans", + "\u97e9\u8bed": "Koreaans", + "\u6cd5\u8bed": "Frans", + "\u897f\u73ed\u7259\u8bed": "Spaans", + "\u8461\u8404\u7259\u8bed": "Portugees", + "\u610f\u5927\u5229\u8bed": "Italiaans", + "\u5fb7\u8bed": "Duits", + "\u4fc4\u8bed": "Russisch", + "\u6ce2\u5170\u8bed": "Pools", + "\u8377\u5170\u8bed": "Nederlands", + "\u745e\u5178\u8bed": "Zweeds", + "\u6377\u514b\u8bed": "Tsjechisch", + "\u73b0\u4ee3\u5e0c\u814a\u8bed": "Modern Grieks", + "\u7f57\u9a6c\u5c3c\u4e9a\u8bed": "Roemeens", + "\u5308\u7259\u5229\u8bed": "Hongaars", + "\u4e4c\u514b\u5170\u8bed": "Oekraïens", + "\u4e39\u9ea6\u8bed": "Deens", + "\u82ac\u5170\u8bed": "Fins", + "\u632a\u5a01\u8bed": "Noors", + "\u514b\u7f57\u5730\u4e9a\u8bed": "Kroatisch", + "\u52a0\u6cf0\u9686\u8bed": "Catalaans", + "\u963f\u62c9\u4f2f\u8bed": "Arabisch", + "\u6cf0\u8bed": "Thais", + "\u8d8a\u5357\u8bed": "Vietnamees", + "\u5370\u5c3c\u8bed": "Indonesisch", + "\u5370\u5730\u8bed": "Hindi", + "\u571f\u8033\u5176\u8bed": "Turks", + "\u9a6c\u6765\u8bed": "Maleis", + "\u5b5f\u52a0\u62c9\u8bed": "Bengaals", + "\u6cf0\u7c73\u5c14\u8bed": "Tamil", + "\u6cf0\u5362\u56fa\u8bed": "Telugu", + "\u9a6c\u62c9\u63d0\u8bed": "Marathi", + "\u4e4c\u5c14\u90fd\u8bed": "Urdu", + "\u6ce2\u65af\u8bed": "Perzisch", + "\u65af\u74e6\u5e0c\u91cc\u8bed": "Swahili", // 国家列表 - "邮箱": "E-mail", - "中国": "China", - "美国": "Verenigde Staten", - "加拿大": "Canada", - "俄罗斯": "Rusland", - "英国": "Verenigd Koninkrijk", - "德国": "Duitsland", - "意大利": "Italië", - "法国": "Frankrijk", - "西班牙": "Spanje", - "南非": "Zuid-Afrika", - "沙特阿拉伯": "Saoedi-Arabië", - "土耳其": "Turkije", - "日本": "Japan", - "韩国": "Zuid-Korea", - "新加坡": "Singapore", - "马来西亚": "Maleisië", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipijnen", - "印度尼西亚": "Indonesië", - "阿联酋": "Verenigde Arabische Emiraten", - "墨西哥": "Mexico", - "巴西": "Brazilië", - "阿根廷": "Argentinië", - "澳大利亚": "Australië", - "新西兰": "Nieuw-Zeeland", - "中国香港": "Hongkong (China)", - "中国澳门": "Macau (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egypte", - "希腊": "Griekenland", - "荷兰": "Nederland", - "比利时": "België", - "匈牙利": "Hongarije", - "罗马尼亚": "Roemenië", - "瑞士": "Zwitserland", - "奥地利": "Oostenrijk", - "丹麦": "Denemarken", - "瑞典": "Zweden", - "挪威": "Noorwegen", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chili", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburg", - "爱尔兰": "Ierland", - "冰岛": "IJsland", - "阿尔巴尼亚": "Albanië", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgarije", - "立陶宛": "Litouwen", - "拉脱维亚": "Letland", - "爱沙尼亚": "Estland", - "乌克兰": "Oekraïne", - "塞尔维亚": "Servië", - "克罗地亚": "Kroatië", - "斯洛文尼亚": "Slovenië", - "捷克": "Tsjechië", - "斯洛伐克": "Slowakije", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haïti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algerije", - "突尼斯": "Tunesië", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopië", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tanzania", - "乌干达": "Oeganda", - "孟加拉国": "Bangladesh", - "以色列": "Israël", - "黎巴嫩": "Libanon", - "约旦": "Jordanië", - "伊拉克": "Irak", - "科威特": "Koeweit", - "巴林": "Bahrein", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolië", - "柬埔寨": "Cambodja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Oost-Timor", - "斐济": "Fiji", - "所罗门群岛": "Salomonseilanden", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", + "\u90ae\u7bb1": "E-mail", + "\u4e2d\u56fd": "China", + "\u7f8e\u56fd": "Verenigde Staten", + "\u52a0\u62ff\u5927": "Canada", + "\u4fc4\u7f57\u65af": "Rusland", + "\u82f1\u56fd": "Verenigd Koninkrijk", + "\u5fb7\u56fd": "Duitsland", + "\u610f\u5927\u5229": "Italië", + "\u6cd5\u56fd": "Frankrijk", + "\u897f\u73ed\u7259": "Spanje", + "\u5357\u975e": "Zuid-Afrika", + "\u6c99\u7279\u963f\u62c9\u4f2f": "Saoedi-Arabië", + "\u571f\u8033\u5176": "Turkije", + "\u65e5\u672c": "Japan", + "\u97e9\u56fd": "Zuid-Korea", + "\u65b0\u52a0\u5761": "Singapore", + "\u9a6c\u6765\u897f\u4e9a": "Maleisië", + "\u6cf0\u56fd": "Thailand", + "\u8d8a\u5357": "Vietnam", + "\u5370\u5ea6": "India", + "\u5df4\u57fa\u65af\u5766": "Pakistan", + "\u83f2\u5f8b\u5bbe": "Filipijnen", + "\u5370\u5ea6\u5c3c\u897f\u4e9a": "Indonesië", + "\u963f\u8054\u914b": "Verenigde Arabische Emiraten", + "\u58a8\u897f\u54e5": "Mexico", + "\u5df4\u897f": "Brazilië", + "\u963f\u6839\u5ef7": "Argentinië", + "\u6fb3\u5927\u5229\u4e9a": "Australië", + "\u65b0\u897f\u5170": "Nieuw-Zeeland", + "\u4e2d\u56fd\u9999\u6e2f": "Hongkong (China)", + "\u4e2d\u56fd\u6fb3\u95e8": "Macau (China)", + "\u4e2d\u56fd\u53f0\u6e7e": "Taiwan (China)", + "\u57c3\u53ca": "Egypte", + "\u5e0c\u814a": "Griekenland", + "\u8377\u5170": "Nederland", + "\u6bd4\u5229\u65f6": "België", + "\u5308\u7259\u5229": "Hongarije", + "\u7f57\u9a6c\u5c3c\u4e9a": "Roemenië", + "\u745e\u58eb": "Zwitserland", + "\u5965\u5730\u5229": "Oostenrijk", + "\u4e39\u9ea6": "Denemarken", + "\u745e\u5178": "Zweden", + "\u632a\u5a01": "Noorwegen", + "\u6ce2\u5170": "Polen", + "\u79d8\u9c81": "Peru", + "\u667a\u5229": "Chili", + "\u54e5\u4f26\u6bd4\u4e9a": "Colombia", + "\u59d4\u5185\u745e\u62c9": "Venezuela", + "\u8461\u8404\u7259": "Portugal", + "\u5362\u68ee\u5821": "Luxemburg", + "\u7231\u5c14\u5170": "Ierland", + "\u51b0\u5c9b": "IJsland", + "\u963f\u5c14\u5df4\u5c3c\u4e9a": "Albanië", + "\u9a6c\u8033\u4ed6": "Malta", + "\u585e\u6d66\u8def\u65af": "Cyprus", + "\u82ac\u5170": "Finland", + "\u4fdd\u52a0\u5229\u4e9a": "Bulgarije", + "\u7acb\u9676\u5b9b": "Litouwen", + "\u62c9\u8131\u7ef4\u4e9a": "Letland", + "\u7231\u6c99\u5c3c\u4e9a": "Estland", + "\u4e4c\u514b\u5170": "Oekraïne", + "\u585e\u5c14\u7ef4\u4e9a": "Servië", + "\u514b\u7f57\u5730\u4e9a": "Kroatië", + "\u65af\u6d1b\u6587\u5c3c\u4e9a": "Slovenië", + "\u6377\u514b": "Tsjechië", + "\u65af\u6d1b\u4f10\u514b": "Slowakije", + "\u5371\u5730\u9a6c\u62c9": "Guatemala", + "\u8428\u5c14\u74e6\u591a": "El Salvador", + "\u6d2a\u90fd\u62c9\u65af": "Honduras", + "\u5c3c\u52a0\u62c9\u74dc": "Nicaragua", + "\u54e5\u65af\u8fbe\u9ece\u52a0": "Costa Rica", + "\u5df4\u62ff\u9a6c": "Panama", + "\u6d77\u5730": "Haïti", + "\u73bb\u5229\u7ef4\u4e9a": "Bolivia", + "\u5384\u74dc\u591a\u5c14": "Ecuador", + "\u5df4\u62c9\u572d": "Paraguay", + "\u4e70\u683c\u74dc\u4f9d": "Uruguay", + "\u6469\u6d1b\u54e5": "Marokko", + "\u963f\u5c14\u53ca\u5229\u4e9a": "Algerije", + "\u7a81\u5c3c\u65af": "Tunesië", + "\u5c3c\u65e5\u5229\u4e9a": "Nigeria", + "\u52a0\u7eb3": "Ghana", + "\u57c3\u585e\u4fc4\u6bd4\u4e9a": "Ethiopië", + "\u80af\u5c3c\u4e9a": "Kenia", + "\u5766\u6851\u5c3c\u4e9a": "Tanzania", + "\u4e4c\u5e72\u8fbe": "Oeganda", + "\u5b5f\u52a0\u62c9\u56fd": "Bangladesh", + "\u4ee5\u8272\u5217": "Israël", + "\u9ecb\u5df4\u5ae9": "Libanon", + "\u7ea6\u65e6": "Jordanië", + "\u4f0a\u62c9\u514b": "Irak", + "\u79d1\u5a01\u7279": "Koeweit", + "\u5df4\u6797": "Bahrein", + "\u5361\u5854\u5c14": "Qatar", + "\u963f\u66fc": "Oman", + "\u963f\u5bcc\u6c57": "Afghanistan", + "\u65af\u91cc\u5170\u5361": "Sri Lanka", + "\u7f05\u7538": "Myanmar", + "\u5c3c\u6cca\u5c14": "Nepal", + "\u8499\u53e4": "Mongolië", + "\u67ec\u57d4\u5be8": "Cambodja", + "\u8001\u631d": "Laos", + "\u6587\u83b1": "Brunei", + "\u4e1c\u5e1d\u6c76": "Oost-Timor", + "\u6590\u6d4e": "Fiji", + "\u6240\u7f57\u95e8\u7fa4\u5c9b": "Salomonseilanden", + "\u521a\u679c\u6c11\u4e3b\u5171\u548c\u56fd": "Democratische Republiek Congo", + "\u5b89\u54e5\u62c9": "Angola", + "\u82cf\u4e39": "Sudan", + "\u9a6c\u5c14\u4ee3\u592b": "Malediven", + "\u4e0d\u4e39": "Bhutan", + "\u6469\u7eb3\u54e5": "Monaco", + "\u5723\u9a6c\u529b\u8bfa": "San Marino", + "\u7259\u4e70\u52a0": "Jamaica", + "\u5df4\u54c8\u9a6c": "Bahama's", + "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a": "Papoea-Nieuw-Guinea", + "\u8428\u6469\u4e9a": "Samoa", }; diff --git a/lib/core/translations/language/pl_pl.dart b/lib/core/translations/language/pl_pl.dart index 8b6fe6ebe..861f05e30 100644 --- a/lib/core/translations/language/pl_pl.dart +++ b/lib/core/translations/language/pl_pl.dart @@ -372,7 +372,8 @@ const Map 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 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 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 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", }; diff --git a/lib/core/translations/language/pt_pt.dart b/lib/core/translations/language/pt_pt.dart index f1e2e9bfd..f83cf83d1 100644 --- a/lib/core/translations/language/pt_pt.dart +++ b/lib/core/translations/language/pt_pt.dart @@ -55,7 +55,7 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 ptPT = { // 个人资料模块 "editProfile": "Editar Informações Pessoais", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Alcunha", "save": "Guardar", "about": "Sobre", @@ -1184,8 +1192,8 @@ const Map 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 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 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 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 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 ptPT = { "阿联酋": "Emirados Árabes Unidos", "墨西哥": "México", "巴西": "Brasil", - "阿根廷": "Argentina", + "阿根廷": 'Argentina', "澳大利亚": "Austrália", "新西兰": "Nova Zelândia", "中国香港": "Hong Kong (China)", @@ -1649,16 +1657,16 @@ const Map 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 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 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', }; diff --git a/lib/core/translations/language/ro_ro.dart b/lib/core/translations/language/ro_ro.dart index 31a2c733a..31df65088 100644 --- a/lib/core/translations/language/ro_ro.dart +++ b/lib/core/translations/language/ro_ro.dart @@ -49,7 +49,7 @@ const Map roRO = { "russian": "Rusă", "vietnamese": "Vietnameză", "italian": "Italiană", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indoneziană", "thai": "Thailandeză", "malay": "Malaeză", @@ -259,10 +259,10 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 roRO = { // 个人资料模块 "editProfile": "Editează informațiile personale", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Pseudonim", "save": "Salvează", "about": "Despre", @@ -1180,8 +1180,8 @@ const Map 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 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 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 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', }; diff --git a/lib/core/translations/language/ru_ru.dart b/lib/core/translations/language/ru_ru.dart index 94ee219dc..43ad496c5 100644 --- a/lib/core/translations/language/ru_ru.dart +++ b/lib/core/translations/language/ru_ru.dart @@ -386,21 +386,21 @@ const Map 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 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 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 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': 'Язык записи', diff --git a/lib/core/translations/language/sk_sk.dart b/lib/core/translations/language/sk_sk.dart index 6395db155..d6fba1138 100644 --- a/lib/core/translations/language/sk_sk.dart +++ b/lib/core/translations/language/sk_sk.dart @@ -219,7 +219,7 @@ const Map skSK = { "scene": "Scenár", // 用量统计模块 - "aiChat": "AI Chat", + "aiChat": "AI chat", "translationStats": "Štatistika prekladu", "meetingStats": "Štatistika stretnutí", "today": "Dnes", @@ -238,36 +238,36 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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", }; diff --git a/lib/core/translations/language/sl_si.dart b/lib/core/translations/language/sl_si.dart index edd729c3d..e9a35cde3 100644 --- a/lib/core/translations/language/sl_si.dart +++ b/lib/core/translations/language/sl_si.dart @@ -219,7 +219,7 @@ const Map slSI = { "scene": "Scenarij", // 用量统计模块 - "aiChat": "AI Chat", + "aiChat": "AI klepet", "translationStats": "Statistika prevodov", "meetingStats": "Statistika sestankov", "today": "Danes", @@ -238,36 +238,36 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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", }; diff --git a/lib/core/translations/language/tl_ph.dart b/lib/core/translations/language/tl_ph.dart index 7724334da..6633f685a 100644 --- a/lib/core/translations/language/tl_ph.dart +++ b/lib/core/translations/language/tl_ph.dart @@ -265,11 +265,11 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 tlPH = { "萨尔瓦多": "El Salvador", "洪都拉斯": "Honduras", "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", + "哥斯达黎加": "Kosta Rika", "巴拿马": "Panama", "海地": "Haiti", "玻利维亚": "Bolivia", diff --git a/lib/core/translations/language/tr_tr.dart b/lib/core/translations/language/tr_tr.dart index 8adccf00f..571b132fe 100644 --- a/lib/core/translations/language/tr_tr.dart +++ b/lib/core/translations/language/tr_tr.dart @@ -369,31 +369,31 @@ const Map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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", }; diff --git a/lib/core/translations/language/uk_ua.dart b/lib/core/translations/language/uk_ua.dart index 3821969ea..3c0a19e01 100644 --- a/lib/core/translations/language/uk_ua.dart +++ b/lib/core/translations/language/uk_ua.dart @@ -418,7 +418,7 @@ const Map 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 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 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 роки після активації.', diff --git a/lib/core/translations/language/vi_vn.dart b/lib/core/translations/language/vi_vn.dart index 705a98412..6c59d5bfe 100644 --- a/lib/core/translations/language/vi_vn.dart +++ b/lib/core/translations/language/vi_vn.dart @@ -718,10 +718,10 @@ const Map 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 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 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 viVN = { "邮箱": "Email", "中国": "Trung Quốc", "美国": "Hoa Kỳ", - "加拿大": "Canada", + "加拿大": "Ca-na-đa", "俄罗斯": "Nga", "英国": "Vương quốc Anh", "德国": "Đức", @@ -1571,20 +1571,20 @@ const Map 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 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", }; diff --git a/lib/core/translations/language/zh_cn.dart b/lib/core/translations/language/zh_cn.dart index f0edbb095..4008d3244 100644 --- a/lib/core/translations/language/zh_cn.dart +++ b/lib/core/translations/language/zh_cn.dart @@ -1104,7 +1104,7 @@ const Map zhCN = { 'deleteAccountProcessError': '删除账号过程发生错误', 'userDataClearSuccess': '用户数据清理成功', 'allUserDataClearSuccess': '所有用户数据清理成功', - 'accountServiceInitialized': 'AccountService 已初始化', + 'accountServiceInitialized': '账号服务已初始化', // 权限模块 'meetingStoragePermission': '存储', diff --git a/lib/core/translations/language/zh_hk.dart b/lib/core/translations/language/zh_hk.dart index bdbf0b9e1..22ac4a07f 100644 --- a/lib/core/translations/language/zh_hk.dart +++ b/lib/core/translations/language/zh_hk.dart @@ -415,39 +415,38 @@ const Map 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 zhHK = { 'transcriptionRecords': '轉寫記錄', 'templateCommunity': '模板社區', 'comingSoon': '敬請期待', - 'integration': '集成', + 'integration': '整合', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', 'enabled': '開啟', 'disabled': '關閉', @@ -1416,7 +1415,7 @@ const Map zhHK = { "俄罗斯": "俄羅斯", "英国": "英國", "德国": "德國", - "意大利": "意大利", + "意大利": '意大利', "法国": "法國", "西班牙": "西班牙", "南非": "南非", diff --git a/lib/core/translations/language/zh_tw.dart b/lib/core/translations/language/zh_tw.dart index c0fb0271f..454dd4a27 100644 --- a/lib/core/translations/language/zh_tw.dart +++ b/lib/core/translations/language/zh_tw.dart @@ -415,39 +415,38 @@ const Map 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 zhTW = { 'transcriptionRecords': '轉寫記錄', 'templateCommunity': '模板社區', 'comingSoon': '敬請期待', - 'integration': '集成', + 'integration': '整合', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', 'enabled': '開啟', 'disabled': '關閉', @@ -1420,7 +1419,7 @@ const Map zhTW = { "法国": "法國", "西班牙": "西班牙", "南非": "南非", - "沙特阿拉伯": "沙特阿拉伯", + "沙特阿拉伯": '沙烏地阿拉伯', "土耳其": "土耳其", "日本": "日本", "韩国": "韓國", @@ -1463,7 +1462,7 @@ const Map zhTW = { "冰岛": "冰島", "阿尔巴尼亚": "阿爾巴尼亞", "马耳他": "馬耳他", - "塞浦路斯": "塞浦路斯", + "塞浦路斯": '賽普勒斯', "芬兰": "芬蘭", "保加利亚": "保加利亞", "立陶宛": "立陶宛", @@ -1477,7 +1476,7 @@ const Map zhTW = { "斯洛伐克": "斯洛伐克", "危地马拉": "危地馬拉", "萨尔瓦多": "薩爾瓦多", - "洪都拉斯": "洪都拉斯", + "洪都拉斯": '宏都拉斯', "尼加拉瓜": "尼加拉瓜", "哥斯达黎加": "哥斯達黎加", "巴拿马": "巴拿馬", diff --git a/test/fr_fr_translations_test.dart b/test/fr_fr_translations_test.dart new file mode 100644 index 000000000..245ef6478 --- /dev/null +++ b/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); + }); +} diff --git a/test/is_is_translations_test.dart b/test/is_is_translations_test.dart new file mode 100644 index 000000000..7360b0a5a --- /dev/null +++ b/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 _extractPlaceholders(String value) { + final placeholders = {}; + + 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 = []; + + 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); + }); +} diff --git a/test/ja_jp_translations_test.dart b/test/ja_jp_translations_test.dart new file mode 100644 index 000000000..dac3f2a30 --- /dev/null +++ b/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); + }); +} diff --git a/test/nb_no_translations_test.dart b/test/nb_no_translations_test.dart new file mode 100644 index 000000000..faeb170b6 --- /dev/null +++ b/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); + }); +}