Browse Source

refactor(商品模块): 将goodstrade重命名为goodstrans以统一翻译商品命名

重构商品模块中的翻译商品相关代码,将goodstrade统一更名为goodstrans
更新路由、绑定、控制器、视图及多语言文件
修改相关页面中的引用和翻译键名
newdev_shunjiawei
lxm 10 months ago
parent
commit
7436784366
  1. 65
      lib/core/translations/language/ar_sa.dart
  2. 60
      lib/core/translations/language/de_de.dart
  3. 18
      lib/core/translations/language/en_us.dart
  4. 64
      lib/core/translations/language/hi_in.dart
  5. 61
      lib/core/translations/language/it_it.dart
  6. 60
      lib/core/translations/language/ko_kr.dart
  7. 61
      lib/core/translations/language/pt_pt.dart
  8. 62
      lib/core/translations/language/ru_ru.dart
  9. 18
      lib/core/translations/language/zh_cn.dart
  10. 18
      lib/core/translations/language/zh_hk.dart
  11. 2
      lib/modules/common/widgets/recharge_dialog.dart
  12. 9
      lib/modules/goods/bindings/goodstrade_binding.dart
  13. 9
      lib/modules/goods/bindings/goodstrans_binding.dart
  14. 4
      lib/modules/goods/controllers/goodstrans_controller.dart
  15. 12
      lib/modules/goods/utils/goods_i18n.dart
  16. 13
      lib/modules/goods/views/goodstrans_view.dart
  17. 2
      lib/modules/goods/views/goodsvip_view.dart
  18. 2
      lib/modules/settings/views/settings_view.dart
  19. 10
      lib/routes/app_pages.dart
  20. 2
      lib/routes/app_routes.dart

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

@ -1208,36 +1208,35 @@ const Map<String, String> arSA = {
'Use in quiet environments; performance depends on microphone and network.',
// Translation goods page (placeholders)
'tradeHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'tradeDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'transHeaderDesc1':
'ترجمة متزامنة فورية وترجمة نصية مع بث صوتي منخفض التأخير.',
'transHeaderDesc2': 'مناسب للسفر والأعمال والخطب والتدريس.',
'translateZhEn': 'ترجمة صينية-إنجليزية',
'lowLatencyVoiceBroadcast': 'بث صوتي منخفض التأخير',
'multiLangTextTranslation': 'ترجمة نصية متعددة اللغات',
'termOptimizationContextPreserve': 'تحسين المصطلحات والحفاظ على السياق',
'lexiconTourBusinessLife': 'قواميس السفر/الأعمال/الحياة',
'personalVocabularyMemory': 'ذاكرة المفردات الشخصية',
'conversationSubtitleLargeText': 'عناوين المحادثة / وضع النص الكبير',
'colorHighContrast': 'تباين ألوان عالٍ',
'transDisclaimer':
'تعتمد جودة الترجمة على الميكروفون وزمن الشبكة والضوضاء المحيطة.',
// VIP goods page (placeholders)
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'نظرة عامة على المزايا',
'higherQuota': 'حصة استخدام أعلى',
'lowerUnitPrice': 'سعر أقل لكل وحدة',
'priorityService': 'خدمة ذات أولوية',
'exclusiveSupportChannel': 'قناة دعم مخصصة',
'fastResponse': 'استجابة سريعة للمشكلات',
'eventsAndDiscounts': 'فعاليات وخصومات',
'memberExclusiveEvents': 'فعاليات حصرية للأعضاء',
'longTermDiscountPlan': 'خطة خصم طويلة الأجل',
'generalPrivileges': 'امتيازات عامة',
'earlyAccessNewFeatures': 'وصول مبكر إلى الميزات الجديدة',
'crossDeviceSync': 'مزامنة عبر الأجهزة',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'تعتمد الفوائد الفعلية على تفاصيل الباقة وقد تتغير مع الإصدارات.',
// Goods names by id
'ai_001_name': 'الذكاء الاصطناعي الأساسي 100',
'ai_002_name': 'الذكاء الاصطناعي الأساسي 500',
@ -1245,9 +1244,9 @@ const Map<String, String> arSA = {
'meet_001_name': 'اجتماع أساسي 100',
'meet_002_name': 'اجتماع أساسي 500',
'meet_003_name': 'اجتماع أساسي 1000',
'trade_001_name': 'ترجمة أساسية 100',
'trade_002_name': 'ترجمة أساسية 500',
'trade_003_name': 'ترجمة أساسية 1000',
'trans_001_name': 'ترجمة أساسية 100',
'trans_002_name': 'ترجمة أساسية 500',
'trans_003_name': 'ترجمة أساسية 1000',
// Goods descriptions by id
'ai_001_desc':
'يشمل 100 استخدام. الوصول إلى ميزات الذكاء الاصطناعي الأساسية.',
@ -1258,7 +1257,7 @@ const Map<String, String> arSA = {
'meet_001_desc': 'يشمل 100 تسجيل/نسخ لاجتماعات.',
'meet_002_desc': 'يشمل 500 تسجيل/نسخ لاجتماعات.',
'meet_003_desc': 'يشمل 1000 تسجيل/نسخ لاجتماعات.',
'trade_001_desc': 'يشمل 100 ترجمة (صوت/نص).',
'trade_002_desc': 'يشمل 500 ترجمة (صوت/نص).',
'trade_003_desc': 'يشمل 1000 ترجمة (صوت/نص).',
'trans_001_desc': 'يشمل 100 ترجمة (صوت/نص).',
'trans_002_desc': 'يشمل 500 ترجمة (صوت/نص).',
'trans_003_desc': 'يشمل 1000 ترجمة (صوت/نص).',
};

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

@ -929,34 +929,42 @@ const Map<String, String> deDE = {
'Use in quiet environments; performance depends on microphone and network.',
// Translation goods page (placeholders)
'tradeHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'transHeaderDesc1':
'Echtzeit-Simultandolmetschen und Textübersetzung mit Sprachwiedergabe bei niedriger Latenz.',
'transHeaderDesc2': 'Geeignet für Reisen, Geschäft, Reden und Lehre.',
'translateZhEn': 'Chinesisch-Englisch-Übersetzung',
'lowLatencyVoiceBroadcast': 'Sprachübertragung mit niedriger Latenz',
'multiLangTextTranslation': 'Mehrsprachige Textübersetzung',
'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',
'tradeDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'Terminologieoptimierung und Kontextwahrung',
'lexiconTourBusinessLife': 'Lexika für Reise/Geschäft/Alltag',
'personalVocabularyMemory': 'Persönlicher Wortschatzspeicher',
'conversationSubtitleLargeText': 'Konversationsuntertitel / Großtext-Modus',
'colorHighContrast': 'Hoher Farbkontrast',
'transDisclaimer':
'Die Übersetzungsleistung hängt von Mikrofon, Netzwerklatenz und Umgebungsgeräuschen ab.',
'trans_001_name': 'Übersetzung Basis 100',
'trans_002_name': 'Übersetzung Basis 500',
'trans_003_name': 'Übersetzung Basis 1000',
'trans_001_desc': 'Enthält 100 Übersetzungen (Stimme/Text).',
'trans_002_desc': 'Enthält 500 Übersetzungen (Stimme/Text).',
'trans_003_desc': 'Enthält 1000 Übersetzungen (Stimme/Text).',
// VIP goods page (placeholders)
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'Übersicht der Vorteile',
'higherQuota': 'Höheres Nutzungskontingent',
'lowerUnitPrice': 'Niedrigerer Stückpreis',
'priorityService': 'Priorisierter Service',
'exclusiveSupportChannel': 'Dedizierter Supportkanal',
'fastResponse': 'Schnelle Problemreaktion',
'eventsAndDiscounts': 'Veranstaltungen und Rabatte',
'memberExclusiveEvents': 'Exklusive Events für Mitglieder',
'longTermDiscountPlan': 'Langfristiger Rabattplan',
'generalPrivileges': 'Allgemeine Privilegien',
'earlyAccessNewFeatures': 'Frühzeitiger Zugriff auf neue Funktionen',
'crossDeviceSync': 'Geräteübergreifende Synchronisierung',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Die tatsächlichen Vorteile hängen von den Paketdetails ab und können sich mit Versionen ändern.',
};

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

@ -215,9 +215,9 @@ const Map<String, String> enUS = {
'meet_001_name': 'Meeting Basic 100',
'meet_002_name': 'Meeting Basic 500',
'meet_003_name': 'Meeting Basic 1000',
'trade_001_name': 'Translation Basic 100',
'trade_002_name': 'Translation Basic 500',
'trade_003_name': 'Translation Basic 1000',
'trans_001_name': 'Translation Basic 100',
'trans_002_name': 'Translation Basic 500',
'trans_003_name': 'Translation Basic 1000',
// 商品描述(按ID)
'ai_001_desc': 'Includes 100 uses. Access core AI features.',
@ -226,9 +226,9 @@ const Map<String, String> enUS = {
'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.',
'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.',
'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.',
'trade_001_desc': 'Includes 100 translations (voice/text).',
'trade_002_desc': 'Includes 500 translations (voice/text).',
'trade_003_desc': 'Includes 1000 translations (voice/text).',
'trans_001_desc': 'Includes 100 translations (voice/text).',
'trans_002_desc': 'Includes 500 translations (voice/text).',
'trans_003_desc': 'Includes 1000 translations (voice/text).',
// 商品页通用页脚
'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans',
@ -252,9 +252,9 @@ const Map<String, String> enUS = {
'Use in quiet environments; performance depends on microphone and network.',
// 同传/翻译商品页描述
'tradeHeaderDesc1':
'transHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
@ -264,7 +264,7 @@ const Map<String, String> enUS = {
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'tradeDisclaimer':
'transDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
// AI 商品页描述

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

@ -897,36 +897,36 @@ const Map<String, String> hiIN = {
'Use in quiet environments; performance depends on microphone and network.',
// Translation goods page (placeholders)
'tradeHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'transHeaderDesc1':
'रीयल-टाइम समकालीन व्याख्या और पाठ अनुवाद, कम विलंबता वॉइस प्रसारण के साथ।',
'transHeaderDesc2': 'यात्रा, व्यवसाय, भाषण और शिक्षण के लिए उपयुक्त।',
'translateZhEn': 'चीनी-अंग्रेज़ी अनुवाद',
'lowLatencyVoiceBroadcast': 'कम विलंबता वॉइस प्रसारण',
'multiLangTextTranslation': 'बहुभाषी पाठ अनुवाद',
'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',
'tradeDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'पारिभाषिक शब्दों का अनुकूलन और संदर्भ बनाए रखना',
'lexiconTourBusinessLife': 'यात्रा/व्यवसाय/जीवन शब्दकोश',
'personalVocabularyMemory': 'व्यक्तिगत शब्दावली स्मृति',
'conversationSubtitleLargeText': 'वार्तालाप उपशीर्षक / बड़े-टेक्स्ट मोड',
'colorHighContrast': 'उच्च रंग-विपरीत',
'transDisclaimer':
'अनुवाद की गुणवत्ता माइक्रोफोन, नेटवर्क विलंबता और परिवेशी शोर पर निर्भर करती है।',
// VIP goods page (placeholders)
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'लाभों का अवलोकन',
'higherQuota': 'उच्च उपयोग कोटा',
'lowerUnitPrice': 'कम इकाई मूल्य',
'priorityService': 'प्राथमिकता सेवा',
'exclusiveSupportChannel': 'समर्पित सहायता चैनल',
'fastResponse': 'समस्याओं पर तेज़ प्रतिक्रिया',
'eventsAndDiscounts': 'इवेंट और छूट',
'memberExclusiveEvents': 'सदस्य-विशेष इवेंट',
'longTermDiscountPlan': 'दीर्घकालीन छूट योजना',
'generalPrivileges': 'सामान्य विशेषाधिकार',
'earlyAccessNewFeatures': 'नई सुविधाओं का प्रारंभिक उपयोग',
'crossDeviceSync': 'क्रॉस-डिवाइस सिंक',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'वास्तविक लाभ पैकेज विवरण पर निर्भर करते हैं और संस्करणों के साथ बदल सकते हैं।',
// Goods names by id
'ai_001_name': 'एआई बेसिक 100',
'ai_002_name': 'एआई बेसिक 500',
@ -934,9 +934,9 @@ const Map<String, String> hiIN = {
'meet_001_name': 'मीटिंग बेसिक 100',
'meet_002_name': 'मीटिंग बेसिक 500',
'meet_003_name': 'मीटिंग बेसिक 1000',
'trade_001_name': 'अनुवाद बेसिक 100',
'trade_002_name': 'अनुवाद बेसिक 500',
'trade_003_name': 'अनुवाद बेसिक 1000',
'trans_001_name': 'अनुवाद बेसिक 100',
'trans_002_name': 'अनुवाद बेसिक 500',
'trans_003_name': 'अनुवाद बेसिक 1000',
// Goods descriptions by id
'ai_001_desc': '100 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।',
'ai_002_desc': '500 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।',
@ -944,7 +944,7 @@ const Map<String, String> hiIN = {
'meet_001_desc': '100 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।',
'meet_002_desc': '500 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।',
'meet_003_desc': '1000 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।',
'trade_001_desc': '100 अनुवाद (वॉयस/टेक्स्ट) शामिल।',
'trade_002_desc': '500 अनुवाद (वॉयस/टेक्स्ट) शामिल।',
'trade_003_desc': '1000 अनुवाद (वॉयस/टेक्स्ट) शामिल।',
'trans_001_desc': '100 अनुवाद (वॉयस/टेक्स्ट) शामिल।',
'trans_002_desc': '500 अनुवाद (वॉयस/टेक्स्ट) शामिल।',
'trans_003_desc': '1000 अनुवाद (वॉयस/टेक्स्ट) शामिल।',
};

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

@ -916,34 +916,43 @@ const Map<String, String> itIT = {
'Use in quiet environments; performance depends on microphone and network.',
// Translation goods page (placeholders)
'tradeHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'transHeaderDesc1':
'Interpretazione simultanea e traduzione di testo in tempo reale, con voce a bassa latenza.',
'transHeaderDesc2': 'Adatto a viaggi, affari, discorsi e insegnamento.',
'translateZhEn': 'Traduzione Cinese-Inglese',
'lowLatencyVoiceBroadcast': 'Trasmissione vocale a bassa latenza',
'multiLangTextTranslation': 'Traduzione di testo 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',
'tradeDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'Ottimizzazione della terminologia e mantenimento del contesto',
'lexiconTourBusinessLife': 'Lessici per viaggio/affari/vita quotidiana',
'personalVocabularyMemory': 'Memoria del vocabolario personale',
'conversationSubtitleLargeText':
'Sottotitoli conversazione / modalità testo grande',
'colorHighContrast': 'Elevato contrasto dei colori',
'transDisclaimer':
'Le prestazioni della traduzione dipendono dal microfono, dalla latenza di rete e dal rumore ambientale.',
'trans_001_name': 'Traduzione Base 100',
'trans_002_name': 'Traduzione Base 500',
'trans_003_name': 'Traduzione Base 1000',
'trans_001_desc': 'Include 100 traduzioni (voce/testo).',
'trans_002_desc': 'Include 500 traduzioni (voce/testo).',
'trans_003_desc': 'Include 1000 traduzioni (voce/testo).',
// VIP goods page (placeholders)
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'Panoramica dei vantaggi',
'higherQuota': 'Quota di utilizzo più alta',
'lowerUnitPrice': 'Prezzo unitario più basso',
'priorityService': 'Servizio prioritario',
'exclusiveSupportChannel': 'Canale di supporto dedicato',
'fastResponse': 'Risposta rapida ai problemi',
'eventsAndDiscounts': 'Eventi e sconti',
'memberExclusiveEvents': 'Eventi esclusivi per i membri',
'longTermDiscountPlan': 'Piano di sconti a lungo termine',
'generalPrivileges': 'Privilegi generali',
'earlyAccessNewFeatures': 'Accesso anticipato alle nuove funzionalità',
'crossDeviceSync': 'Sincronizzazione tra dispositivi',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'I benefici effettivi dipendono dai dettagli del pacchetto e possono cambiare con le versioni.',
};

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

@ -833,34 +833,38 @@ const Map<String, String> koKR = {
'Use in quiet environments; performance depends on microphone and network.',
// Translation goods page (placeholders)
'tradeHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'termOptimizationContextPreserve':
'Terminology optimization and context preservation',
'lexiconTourBusinessLife': 'Travel/Business/Life lexicons',
'personalVocabularyMemory': 'Personal vocabulary memory',
'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode',
'colorHighContrast': 'High color contrast',
'tradeDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'transHeaderDesc1': '실시간 동시통역과 텍스트 번역, 저지연 음성 방송.',
'transHeaderDesc2': '여행, 비즈니스, 연설, 교육에 적합합니다.',
'translateZhEn': '중-영 번역',
'lowLatencyVoiceBroadcast': '저지연 음성 방송',
'multiLangTextTranslation': '다국어 텍스트 번역',
'termOptimizationContextPreserve': '용어 최적화 및 문맥 유지',
'lexiconTourBusinessLife': '여행/비즈니스/일상 용어집',
'personalVocabularyMemory': '개인 어휘 메모리',
'conversationSubtitleLargeText': '대화 자막 / 큰 글자 모드',
'colorHighContrast': '높은 색 대비',
'transDisclaimer': '번역 품질은 마이크, 네트워크 지연 및 주변 소음에 따라 달라집니다.',
'trans_001_name': '번역 기본 100',
'trans_002_name': '번역 기본 500',
'trans_003_name': '번역 기본 1000',
'trans_001_desc': '번역 100회 포함(음성/텍스트).',
'trans_002_desc': '번역 500회 포함(음성/텍스트).',
'trans_003_desc': '번역 1000회 포함(음성/텍스트).',
// VIP goods page (placeholders)
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'benefitsOverview': '혜택 개요',
'higherQuota': '더 높은 사용 한도',
'lowerUnitPrice': '더 낮은 단가',
'priorityService': '우선 서비스',
'exclusiveSupportChannel': '전용 지원 채널',
'fastResponse': '문제 신속 대응',
'eventsAndDiscounts': '이벤트 및 할인',
'memberExclusiveEvents': '회원 전용 이벤트',
'longTermDiscountPlan': '장기 할인 계획',
'generalPrivileges': '일반 특권',
'earlyAccessNewFeatures': '신기능 사전 이용',
'crossDeviceSync': '디바이스 간 동기화',
'vipDisclaimer': '실제 혜택은 패키지 세부사항에 따라 달라지며 버전에 따라 변경될 수 있습니다.',
};

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

@ -190,6 +190,14 @@ const Map<String, String> ptPT = {
"usageStatsInfo": "Visualize as estatísticas de uso da sua aplicação",
"scene": "Cenário",
'trans_001_name': 'Tradução Básica 100',
'trans_002_name': 'Tradução Básica 500',
'trans_003_name': 'Tradução Básica 1000',
'trans_001_desc': 'Inclui 100 traduções (voz/texto).',
'trans_002_desc': 'Inclui 500 traduções (voz/texto).',
'trans_003_desc': 'Inclui 1000 traduções (voz/texto).',
// 商务会议助手页
"startMeeting": "Iniciar Reunião",
'edit': 'Editar',
@ -910,34 +918,35 @@ const Map<String, String> ptPT = {
'Use in quiet environments; performance depends on microphone and network.',
// Translation goods page (placeholders)
'tradeHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'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.',
'translateZhEn': 'Tradução Chinês-Inglês',
'lowLatencyVoiceBroadcast': 'Transmissão de voz de baixa latência',
'multiLangTextTranslation': 'Tradução de texto 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',
'tradeDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'Otimização de terminologia e preservação de contexto',
'lexiconTourBusinessLife': 'Léxicos de viagem/negócios/vida',
'personalVocabularyMemory': 'Memória de vocabulário pessoal',
'conversationSubtitleLargeText':
'Legendagem de conversas / modo de texto grande',
'colorHighContrast': 'Alto contraste de cor',
'transDisclaimer':
'O desempenho da tradução depende do microfone, da latência da rede e do ruído ambiente.',
// VIP goods page (placeholders)
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'Visão geral de benefícios',
'higherQuota': 'Maior quota de utilização',
'lowerUnitPrice': 'Preço unitário inferior',
'priorityService': 'Serviço prioritário',
'exclusiveSupportChannel': 'Canal de suporte dedicado',
'fastResponse': 'Resposta rápida a problemas',
'eventsAndDiscounts': 'Eventos e descontos',
'memberExclusiveEvents': 'Eventos exclusivos para membros',
'longTermDiscountPlan': 'Plano de desconto a longo prazo',
'generalPrivileges': 'Privilégios gerais',
'earlyAccessNewFeatures': 'Acesso antecipado a novas funcionalidades',
'crossDeviceSync': 'Sincronização entre dispositivos',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Os benefícios reais dependem dos detalhes do pacote e podem mudar entre versões.',
};

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

@ -188,6 +188,14 @@ const Map<String, String> ruRU = {
"usageStatsInfo": "Просмотрите статистику использования вашего приложения",
"scene": "Сценарий",
'trans_001_name': 'Перевод Базовый 100',
'trans_002_name': 'Перевод Базовый 500',
'trans_003_name': 'Перевод Базовый 1000',
'trans_001_desc': 'Включает 100 переводов (голос/текст).',
'trans_002_desc': 'Включает 500 переводов (голос/текст).',
'trans_003_desc': 'Включает 1000 переводов (голос/текст).',
// 商务会议助手页
"startMeeting": "Начать встречу",
'edit': 'Редактировать',
@ -903,34 +911,36 @@ const Map<String, String> ruRU = {
'Use in quiet environments; performance depends on microphone and network.',
// Translation goods page (placeholders)
'tradeHeaderDesc1':
'Real-time simultaneous interpretation and text translation with low-latency voice.',
'tradeHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.',
'translateZhEn': 'Chinese-English translation',
'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast',
'multiLangTextTranslation': 'Multilingual text translation',
'transHeaderDesc1':
'Синхронный перевод и перевод текста в реальном времени с низкой задержкой голосового озвучивания.',
'transHeaderDesc2':
'Подходит для путешествий, бизнеса, выступлений и обучения.',
'translateZhEn': 'Китайско-английский перевод',
'lowLatencyVoiceBroadcast': 'Голосовое вещание с низкой задержкой',
'multiLangTextTranslation': 'Многоязычный перевод текста',
'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',
'tradeDisclaimer':
'Translation performance depends on microphone, network latency, and ambient noise.',
'Оптимизация терминологии и сохранение контекста',
'lexiconTourBusinessLife':
'Лексика для путешествий/бизнеса/повседневной жизни',
'personalVocabularyMemory': 'Память персонального словаря',
'conversationSubtitleLargeText': 'Субтитры беседы / режим крупных шрифтов',
'colorHighContrast': 'Высокая контрастность цветов',
'transDisclaimer':
'Качество перевода зависит от микрофона, сетевой задержки и фонового шума.',
// VIP goods page (placeholders)
'benefitsOverview': 'Benefits overview',
'higherQuota': 'Higher usage quota',
'lowerUnitPrice': 'Lower unit price',
'priorityService': 'Priority service',
'exclusiveSupportChannel': 'Dedicated support channel',
'fastResponse': 'Fast issue response',
'eventsAndDiscounts': 'Events and discounts',
'memberExclusiveEvents': 'Member-exclusive events',
'longTermDiscountPlan': 'Long-term discount plan',
'generalPrivileges': 'General privileges',
'earlyAccessNewFeatures': 'Early access to new features',
'crossDeviceSync': 'Cross-device sync',
'benefitsOverview': 'Обзор преимуществ',
'higherQuota': 'Более высокая квота использования',
'lowerUnitPrice': 'Низкая цена за единицу',
'priorityService': 'Приоритетное обслуживание',
'exclusiveSupportChannel': 'Выделенный канал поддержки',
'fastResponse': 'Быстрый отклик на проблемы',
'eventsAndDiscounts': 'События и скидки',
'memberExclusiveEvents': 'Эксклюзивные мероприятия для участников',
'longTermDiscountPlan': 'Долгосрочный план скидок',
'generalPrivileges': 'Общие привилегии',
'earlyAccessNewFeatures': 'Ранний доступ к новым функциям',
'crossDeviceSync': 'Синхронизация между устройствами',
'vipDisclaimer':
'Actual benefits depend on the package details and may change with versions.',
'Фактические преимущества зависят от деталей пакета и могут меняться с версиями.',
};

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

@ -209,9 +209,9 @@ const Map<String, String> zhCN = {
'meet_001_name': '会议基础 100 次',
'meet_002_name': '会议基础 500 次',
'meet_003_name': '会议基础 1000 次',
'trade_001_name': '翻译基础 100 次',
'trade_002_name': '翻译基础 500 次',
'trade_003_name': '翻译基础 1000 次',
'trans_001_name': '翻译基础 100 次',
'trans_002_name': '翻译基础 500 次',
'trans_003_name': '翻译基础 1000 次',
// 商品描述(按ID)
'ai_001_desc': '含 100 次使用,覆盖核心 AI 功能',
@ -220,9 +220,9 @@ const Map<String, String> zhCN = {
'meet_001_desc': '含 100 次会议录音/转写',
'meet_002_desc': '含 500 次会议录音/转写',
'meet_003_desc': '含 1000 次会议录音/转写',
'trade_001_desc': '含 100 次翻译(语音/文本)',
'trade_002_desc': '含 500 次翻译(语音/文本)',
'trade_003_desc': '含 1000 次翻译(语音/文本)',
'trans_001_desc': '含 100 次翻译(语音/文本)',
'trans_002_desc': '含 500 次翻译(语音/文本)',
'trans_003_desc': '含 1000 次翻译(语音/文本)',
// 商品页通用页脚
'appNameProvider': '应用名称:VoiTrans · 服务提供:VoiTrans',
@ -243,8 +243,8 @@ const Map<String, String> zhCN = {
'meetingDisclaimer': '建议在安静环境使用,效果受麦克风与网络影响,具体以实际表现为准。',
// 同传/翻译商品页描述
'tradeHeaderDesc1': '多语种实时同传与文本翻译,低延时语音播报。',
'tradeHeaderDesc2': '适用于出行、商务、演讲与教学等场景。',
'transHeaderDesc1': '多语种实时同传与文本翻译,低延时语音播报。',
'transHeaderDesc2': '适用于出行、商务、演讲与教学等场景。',
'translateZhEn': '中英互译',
'lowLatencyVoiceBroadcast': '低延时语音播报',
'multiLangTextTranslation': '多语种文本翻译',
@ -253,7 +253,7 @@ const Map<String, String> zhCN = {
'personalVocabularyMemory': '专属词汇记忆',
'conversationSubtitleLargeText': '对话字幕/大字模式',
'colorHighContrast': '颜色高对比度',
'tradeDisclaimer': '翻译效果受麦克风、网络时延与环境噪声影响,具体以实际表现为准。',
'transDisclaimer': '翻译效果受麦克风、网络时延与环境噪声影响,具体以实际表现为准。',
// AI 商品页描述
'aiHeaderDesc1': '更长对话额度、更多工具调用、更强上下文长度支持。',

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

@ -185,9 +185,9 @@ const Map<String, String> zhHK = {
'meet_001_name': '會議基礎 100 次',
'meet_002_name': '會議基礎 500 次',
'meet_003_name': '會議基礎 1000 次',
'trade_001_name': '翻譯基礎 100 次',
'trade_002_name': '翻譯基礎 500 次',
'trade_003_name': '翻譯基礎 1000 次',
'trans_001_name': '翻譯基礎 100 次',
'trans_002_name': '翻譯基礎 500 次',
'trans_003_name': '翻譯基礎 1000 次',
// 商品描述(按ID)
'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能',
@ -196,9 +196,9 @@ const Map<String, String> zhHK = {
'meet_001_desc': '含 100 次會議錄音/轉寫',
'meet_002_desc': '含 500 次會議錄音/轉寫',
'meet_003_desc': '含 1000 次會議錄音/轉寫',
'trade_001_desc': '含 100 次翻譯(語音/文本)',
'trade_002_desc': '含 500 次翻譯(語音/文本)',
'trade_003_desc': '含 1000 次翻譯(語音/文本)',
'trans_001_desc': '含 100 次翻譯(語音/文本)',
'trans_002_desc': '含 500 次翻譯(語音/文本)',
'trans_003_desc': '含 1000 次翻譯(語音/文本)',
// 商務會議助手頁
"startMeeting": "開始會議",
@ -854,8 +854,8 @@ const Map<String, String> zhHK = {
'meetingDisclaimer': '建議在安靜環境使用,效果受麥克風與網絡影響,具體以實際表現為準。',
// Translation goods page (placeholders)
'tradeHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。',
'tradeHeaderDesc2': '適用於出行、商務、演講與教學等場景。',
'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。',
'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。',
'translateZhEn': '中英互譯',
'lowLatencyVoiceBroadcast': '低延時語音播報',
'multiLangTextTranslation': '多語種文本翻譯',
@ -864,7 +864,7 @@ const Map<String, String> zhHK = {
'personalVocabularyMemory': '專屬詞彙記憶',
'conversationSubtitleLargeText': '對話字幕/大字模式',
'colorHighContrast': '顏色高對比度',
'tradeDisclaimer': '翻譯效果受麥克風、網絡時延與環境噪聲影響,具體以實際表現為準。',
'transDisclaimer': '翻譯效果受麥克風、網絡時延與環境噪聲影響,具體以實際表現為準。',
// AI 商品頁描述(佔位)
'aiHeaderDesc1': '更長對話額度、更多工具調用、更強上下文長度支持。',

2
lib/modules/common/widgets/recharge_dialog.dart

@ -40,7 +40,7 @@ void showRechargeDialog(String type) {
if (type == 'agent') {
Get.toNamed(Routes.goodsvip);
} else if (type == 'translation') {
Get.toNamed(Routes.goodstrade);
Get.toNamed(Routes.goodstrans);
} else if (type == 'meeting') {
Get.toNamed(Routes.goodsmeet);
}

9
lib/modules/goods/bindings/goodstrade_binding.dart

@ -1,9 +0,0 @@
import 'package:get/get.dart';
import '../controllers/goodstrade_controller.dart';
class GoodstradeBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut<GoodstradeController>(() => GoodstradeController());
}
}

9
lib/modules/goods/bindings/goodstrans_binding.dart

@ -0,0 +1,9 @@
import 'package:get/get.dart';
import '../controllers/goodstrans_controller.dart';
class GoodstransBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut<GoodstransController>(() => GoodstransController());
}
}

4
lib/modules/goods/controllers/goodstrade_controller.dart → lib/modules/goods/controllers/goodstrans_controller.dart

@ -4,7 +4,7 @@ import '../../../data/models/goods.dart';
import '../../../data/services/network/api.dart';
import 'goods_base_controller.dart';
class GoodstradeController extends GoodsBaseController {
class GoodstransController extends GoodsBaseController {
@override
Future<List<DBGoods>> fetchProducts() async {
final resp = await Api.getGoods({'usagetype': UsageType.Translation.toInt});
@ -25,6 +25,4 @@ class GoodstradeController extends GoodsBaseController {
}
return [];
}
// Future<void> purchase(DBGoods item) async => super.purchase(item);
}

12
lib/modules/goods/utils/goods_i18n.dart

@ -29,11 +29,11 @@ String localizedGoodsName(DBGoods item) {
case 'meet_003':
return 'meet_003_name'.tr;
case 'trade_001':
return 'trade_001_name'.tr;
return 'trans_001_name'.tr;
case 'trade_002':
return 'trade_002_name'.tr;
return 'trans_002_name'.tr;
case 'trade_003':
return 'trade_003_name'.tr;
return 'trans_003_name'.tr;
default:
final name = item.name.trim();
return name.isNotEmpty ? name : 'unknown'.tr;
@ -57,11 +57,11 @@ String localizedGoodsDesc(DBGoods item) {
case 'meet_003':
return 'meet_003_desc'.tr;
case 'trade_001':
return 'trade_001_desc'.tr;
return 'trans_001_desc'.tr;
case 'trade_002':
return 'trade_002_desc'.tr;
return 'trans_002_desc'.tr;
case 'trade_003':
return 'trade_003_desc'.tr;
return 'trans_003_desc'.tr;
default:
return '';
}

13
lib/modules/goods/views/goodstrade_view.dart → lib/modules/goods/views/goodstrans_view.dart

@ -3,11 +3,11 @@ import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../../data/models/goods.dart';
import '../../../data/models/user_Info.dart';
import '../controllers/goodstrade_controller.dart';
import '../controllers/goodstrans_controller.dart';
import '../utils/goods_i18n.dart';
class GoodstradeView extends GetView<GoodstradeController> {
const GoodstradeView({super.key});
class GoodstransView extends GetView<GoodstransController> {
const GoodstransView({super.key});
@override
Widget build(BuildContext context) {
@ -29,7 +29,6 @@ class GoodstradeView extends GetView<GoodstradeController> {
centerTitle: true,
),
body: Obx(() {
// 访问刷新信号以建立依赖关系:用户信息变化时触发重建
final _ = User.refreshTick.value;
if (controller.loading.value) {
return const Center(child: CircularProgressIndicator());
@ -109,7 +108,7 @@ class GoodstradeView extends GetView<GoodstradeController> {
),
SizedBox(height: 6.h),
Text(
'tradeHeaderDesc1'.tr,
'transHeaderDesc1'.tr,
style: TextStyle(
fontSize: 12.sp,
color: isDarkMode ? Colors.white70 : Colors.grey[700],
@ -117,7 +116,7 @@ class GoodstradeView extends GetView<GoodstradeController> {
),
SizedBox(height: 4.h),
Text(
'tradeHeaderDesc2'.tr,
'transHeaderDesc2'.tr,
style: TextStyle(
fontSize: 12.sp,
color: isDarkMode ? Colors.white70 : Colors.grey[700],
@ -351,7 +350,7 @@ class GoodstradeView extends GetView<GoodstradeController> {
),
SizedBox(height: 12.h),
Text(
'tradeDisclaimer'.tr,
'transDisclaimer'.tr,
style: TextStyle(fontSize: 12.sp, color: subColor),
),
],

2
lib/modules/goods/views/goodsvip_view.dart

@ -892,7 +892,7 @@ class GoodsvipView extends GetView<GoodsvipController> {
isDarkMode,
icon: Icons.translate,
title: 'simultaneousTranslation'.tr,
lines: ['tradeHeaderDesc1'.tr, 'tradeHeaderDesc2'.tr],
lines: ['transHeaderDesc1'.tr, 'transHeaderDesc2'.tr],
colorSeed: Colors.indigo,
),
],

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

@ -277,7 +277,7 @@ class SettingsView extends GetView<SettingsController> {
iconColor:
isDarkMode ? Colors.indigo[300]! : Colors.indigo[600]!,
textColor: isDarkMode ? Colors.white : Colors.black87,
onTap: () => Get.toNamed(Routes.goodstrade),
onTap: () => Get.toNamed(Routes.goodstrans),
),
_buildCategoryItem(
icon: Icons.people,

10
lib/routes/app_pages.dart

@ -74,8 +74,8 @@ import '../modules/picture_translation/views/picture_translation_view.dart';
import '../modules/picture_translation/bindings/picture_translation_binding.dart';
import '../modules/goods/bindings/goodsvip_binding.dart';
import '../modules/goods/views/goodsvip_view.dart';
import '../modules/goods/bindings/goodstrade_binding.dart';
import '../modules/goods/views/goodstrade_view.dart';
import '../modules/goods/bindings/goodstrans_binding.dart';
import '../modules/goods/views/goodstrans_view.dart';
import '../modules/goods/bindings/goodsmeet_binding.dart';
import '../modules/goods/views/goodsmeet_view.dart';
import '../modules/goods/bindings/goodsai_binding.dart';
@ -348,9 +348,9 @@ abstract class AppPages {
transitionDuration: Duration(milliseconds: 250),
),
GetPage(
name: Routes.goodstrade,
page: () => const GoodstradeView(),
binding: GoodstradeBinding(),
name: Routes.goodstrans,
page: () => const GoodstransView(),
binding: GoodstransBinding(),
transition: Transition.rightToLeft,
transitionDuration: Duration(milliseconds: 250),
),

2
lib/routes/app_routes.dart

@ -74,7 +74,7 @@ abstract class Routes {
//商品购买页面
static const goodsvip = '/goodsvip'; //vip商品页面
static const goodstrade = '/goodstrade'; //翻译商品页面
static const goodstrans = '/goodstrans'; //翻译商品页面
static const goodsmeet = '/goodsmeet'; //会议商品页面
static const goodsai = '/goodsai'; //ai商品页面
}

Loading…
Cancel
Save