From c0e24ce8693fc1ab7739cab5cdef72989ed3ee2f Mon Sep 17 00:00:00 2001 From: Neginegi Date: Sun, 19 Feb 2023 21:22:20 +0800 Subject: [PATCH] fix locale in get-cli standard (#81) * refactor project in get-cli standard * use local trackers when github is not connectable upgrade stylish_bottom_bar to 1.0.0 responsive view for home_view treeview for file_list_vie fluent ui integrating * improve responsive view. treeView add light theme.fix overflow bugs * responsive view,treeView,file select downloaded and downloading pages file extension icons fix some minor bugs * use local trackers when github is not connectable upgrade stylish_bottom_bar to 1.0.0 responsive view for home_view treeview for file_list_vie fluent ui integrating * improve responsive view. treeView add light theme.fix overflow bugs * bottom bar index fix * refactor project in get-cli standard --------- Co-authored-by: wuke2022 --- CONTRIBUTING.md | 4 +- CONTRIBUTING_zh-CN.md | 8 ++- ui/flutter/.gitignore | 3 +- ui/flutter/assets/locales/fa_IR.json | 2 +- ui/flutter/assets/locales/ru_RU.json | 2 +- ui/flutter/assets/locales/zh_CN.json | 2 +- .../app/controllers/app_controller.dart | 3 +- .../lib/app/modules/app/views/app_view.dart | 3 +- .../app/modules/create/views/create_view.dart | 14 ++--- .../lib/app/modules/home/views/home_view.dart | 2 +- .../modules/setting/views/setting_view.dart | 8 ++- .../app/views/views/buid_task_list_view.dart | 6 +- .../lib/app/views/views/file_list_view.dart | 2 +- ui/flutter/lib/i18n/langs/en_us.dart | 58 ------------------- ui/flutter/lib/i18n/langs/fa_ir.dart | 58 ------------------- ui/flutter/lib/i18n/langs/ru_RU.dart | 58 ------------------- ui/flutter/lib/i18n/langs/zh_cn.dart | 55 ------------------ ui/flutter/lib/i18n/messages.dart | 14 ----- ui/flutter/lib/main.dart | 9 ++- 19 files changed, 41 insertions(+), 270 deletions(-) delete mode 100644 ui/flutter/lib/i18n/langs/en_us.dart delete mode 100644 ui/flutter/lib/i18n/langs/fa_ir.dart delete mode 100644 ui/flutter/lib/i18n/langs/ru_RU.dart delete mode 100644 ui/flutter/lib/i18n/langs/zh_cn.dart diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 80e9f93b..60360d85 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,7 +20,9 @@ start the front-end flutter project in `debug` mode to run. The internationalization files of Gopeed are located in the `ui/flutter/assets/locales` directory. You only need to add the corresponding language file in this directory. -Generate locales after you edit locales/internationalization: + +Generate locales after you edit locales: + ``` get generate locales diff --git a/CONTRIBUTING_zh-CN.md b/CONTRIBUTING_zh-CN.md index 8e03ef83..79b2cea2 100644 --- a/CONTRIBUTING_zh-CN.md +++ b/CONTRIBUTING_zh-CN.md @@ -16,7 +16,9 @@ flutter 项目即可运行。 Gopeed 的国际化文件位于 `ui/flutter/assets/locales` 目录下,只需要在该目录下添加对应的语言文件即可。 -编辑locales/internationalization后请运行以下命令: + +编辑locales后请运行以下命令: + ``` get generate locales @@ -24,7 +26,9 @@ get generate locales 请注意以 `en_US.json` 为参照进行翻译。 -## flutter development + +## flutter开发 + 每次提交前请务必运行`dart format .` diff --git a/ui/flutter/.gitignore b/ui/flutter/.gitignore index 69ae1933..74fa3cc9 100644 --- a/ui/flutter/.gitignore +++ b/ui/flutter/.gitignore @@ -29,7 +29,8 @@ .packages .pub-cache/ .pub/ -/build/ +build/ +.fvm/ # Web related diff --git a/ui/flutter/assets/locales/fa_IR.json b/ui/flutter/assets/locales/fa_IR.json index 5b43958e..0de0a9ba 100644 --- a/ui/flutter/assets/locales/fa_IR.json +++ b/ui/flutter/assets/locales/fa_IR.json @@ -9,7 +9,7 @@ "downloading": "downloading", "downloaded": "downloaded", "setting": "تنظیمات", - "title": "ایجاد کار", + "create": "ایجاد کار", "downloadLink": "لینک دانلود", "downloadLinkValid": "لطفا لینک دانلود را وارد کنید", "downloadLinkHit": "Please enter the download link, HTTP/HTTPS/MAGNET supported@append", diff --git a/ui/flutter/assets/locales/ru_RU.json b/ui/flutter/assets/locales/ru_RU.json index 99cfd7f5..edca0f5f 100644 --- a/ui/flutter/assets/locales/ru_RU.json +++ b/ui/flutter/assets/locales/ru_RU.json @@ -9,7 +9,7 @@ "downloading": "downloading", "downloaded": "downloaded", "setting": "Настройки", - "title": "Создать задачу", + "create": "Создать задачу", "downloadLink": "Ссылка для скачивание", "downloadLinkValid": "Пожалуйста, введите ссылку для скачивания", "downloadLinkHit": "Пожалуйста, введите ссылку для скачивания, HTTP/HTTPS/MAGNET supported@append", diff --git a/ui/flutter/assets/locales/zh_CN.json b/ui/flutter/assets/locales/zh_CN.json index 70043ca5..5369535f 100644 --- a/ui/flutter/assets/locales/zh_CN.json +++ b/ui/flutter/assets/locales/zh_CN.json @@ -9,7 +9,7 @@ "downloading": "下载中", "downloaded": "已完成", "setting": "设置", - "title": "创建任务", + "create": "创建任务", "downloadLink": "下载链接", "downloadLinkValid": "请输入下载链接", "downloadLinkHit": "请输入下载链接,支持 HTTP/HTTPS/MAGNET@append", diff --git a/ui/flutter/lib/app/modules/app/controllers/app_controller.dart b/ui/flutter/lib/app/modules/app/controllers/app_controller.dart index 68d4191f..ca813ead 100644 --- a/ui/flutter/lib/app/modules/app/controllers/app_controller.dart +++ b/ui/flutter/lib/app/modules/app/controllers/app_controller.dart @@ -9,6 +9,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import '../../../../api/api.dart'; import '../../../../api/model/downloader_config.dart'; import '../../../../core/common/start_config.dart'; +import '../../../../generated/locales.g.dart'; import '../../../../i18n/messages.dart'; import '../../../../util/log_util.dart'; import '../../../../util/util.dart'; @@ -184,7 +185,7 @@ class AppController extends GetxController { } if (extra.locale.isEmpty) { final systemLocale = getLocaleKey(ui.window.locale); - extra.locale = messages.keys.containsKey(systemLocale) + extra.locale = AppTranslation.translations.containsKey(systemLocale) ? systemLocale : getLocaleKey(fallbackLocale); } diff --git a/ui/flutter/lib/app/modules/app/views/app_view.dart b/ui/flutter/lib/app/modules/app/views/app_view.dart index fbaa5861..ff445213 100644 --- a/ui/flutter/lib/app/modules/app/views/app_view.dart +++ b/ui/flutter/lib/app/modules/app/views/app_view.dart @@ -29,7 +29,8 @@ class AppView extends GetView { GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], - supportedLocales: messages.keys.keys.map((e) => toLocale(e)).toList(), + supportedLocales: + AppTranslation.translations.keys.map((e) => toLocale(e)).toList(), getPages: AppPages.routes, ); } diff --git a/ui/flutter/lib/app/modules/create/views/create_view.dart b/ui/flutter/lib/app/modules/create/views/create_view.dart index 9403cfd6..0917da24 100644 --- a/ui/flutter/lib/app/modules/create/views/create_view.dart +++ b/ui/flutter/lib/app/modules/create/views/create_view.dart @@ -31,7 +31,7 @@ class CreateView extends GetView { icon: const Icon(Icons.arrow_back), onPressed: () => Get.rootDelegate.offNamed(Routes.DOWNLOADING)), // actions: [], - title: Text('create.title'.tr), + title: Text('create'.tr), ), body: DropTarget( onDragDone: (details) { @@ -52,12 +52,12 @@ class CreateView extends GetView { decoration: InputDecoration( hintText: _hitText(), hintStyle: const TextStyle(fontSize: 12), - labelText: 'create.downloadLink'.tr, + labelText: 'downloadLink'.tr, icon: const Icon(Icons.link)), validator: (v) { return v!.trim().isNotEmpty ? null - : 'create.downloadLinkValid'.tr; + : 'downloadLinkValid'.tr; }), Center( child: Padding( @@ -98,8 +98,8 @@ class CreateView extends GetView { } String _hitText() { - return 'create.downloadLinkHit'.trParams({ - 'append': Util.isDesktop() ? 'create.downloadLinkHitDesktop'.tr : '', + return 'downloadLinkHit'.trParams({ + 'append': Util.isDesktop() ? 'downloadLinkHitDesktop'.tr : '', }); } @@ -172,7 +172,7 @@ class CreateView extends GetView { // if (Util.isAndroid()) { // if (!await Permission.storage.request().isGranted) { // Get.snackbar('error'.tr, - // 'create.error.noStoragePermission'.tr); + // 'noStoragePermission'.tr); // return; // } // } @@ -195,7 +195,7 @@ class CreateView extends GetView { } }, controller: downloadController, - child: Text('create.download'.tr), + child: Text('download'.tr), ), ), ], diff --git a/ui/flutter/lib/app/modules/home/views/home_view.dart b/ui/flutter/lib/app/modules/home/views/home_view.dart index db3fc038..79965edb 100644 --- a/ui/flutter/lib/app/modules/home/views/home_view.dart +++ b/ui/flutter/lib/app/modules/home/views/home_view.dart @@ -22,7 +22,7 @@ class HomeView extends GetView { ? NavigationRail( extended: true, labelType: NavigationRailLabelType.none, - minExtendedWidth: 140, + minExtendedWidth: 170, groupAlignment: 0, // useIndicator: false, onDestinationSelected: (int index) { diff --git a/ui/flutter/lib/app/modules/setting/views/setting_view.dart b/ui/flutter/lib/app/modules/setting/views/setting_view.dart index c02ec9f2..2a8c3564 100644 --- a/ui/flutter/lib/app/modules/setting/views/setting_view.dart +++ b/ui/flutter/lib/app/modules/setting/views/setting_view.dart @@ -7,6 +7,7 @@ import 'package:get/get.dart'; import 'package:intl/intl.dart'; import 'package:url_launcher/url_launcher.dart'; +import '../../../../generated/locales.g.dart'; import '../../../../i18n/messages.dart'; import '../../../../util/package_info.dart'; import '../../../../util/util.dart'; @@ -202,7 +203,8 @@ class SettingView extends GetView { )); final buildLocale = _buildConfigItem( 'locale', - () => messages.keys[downloaderCfg.value.extra.locale]!['label']!, + () => AppTranslation + .translations[downloaderCfg.value.extra.locale]!['label']!, (Key key) => DropdownButton( key: key, value: downloaderCfg.value.extra.locale, @@ -216,10 +218,10 @@ class SettingView extends GetView { await debounceSave(); }, - items: messages.keys.keys + items: AppTranslation.translations.keys .map((e) => DropdownMenuItem( value: e, - child: Text(messages.keys[e]!['label']!), + child: Text(AppTranslation.translations[e]!['label']!), )) .toList(), )); diff --git a/ui/flutter/lib/app/views/views/buid_task_list_view.dart b/ui/flutter/lib/app/views/views/buid_task_list_view.dart index 3c4c81c9..920662fd 100644 --- a/ui/flutter/lib/app/views/views/buid_task_list_view.dart +++ b/ui/flutter/lib/app/views/views/buid_task_list_view.dart @@ -24,7 +24,7 @@ class BuildTaskListView extends GetView { actions: [ IconButton( icon: const Icon(Icons.add), - tooltip: 'create.title'.tr, + tooltip: 'create'.tr, onPressed: () { Get.rootDelegate.toNamed(Routes.CREATE); }, @@ -32,14 +32,14 @@ class BuildTaskListView extends GetView { //TODO appBar toggleALl/start selected/delete selected/ // IconButton( // icon: const Icon(Icons.pause), - // tooltip: 'create.title'.tr, + // tooltip: 'title'.tr, // onPressed: () { // // pause all // }, // ), // IconButton( // icon: const Icon(Icons.delete), - // tooltip: 'create.title'.tr, + // tooltip: 'title'.tr, // onPressed: () { // // delete all // }, diff --git a/ui/flutter/lib/app/views/views/file_list_view.dart b/ui/flutter/lib/app/views/views/file_list_view.dart index 46c82f1c..fd54f8a8 100644 --- a/ui/flutter/lib/app/views/views/file_list_view.dart +++ b/ui/flutter/lib/app/views/views/file_list_view.dart @@ -141,7 +141,7 @@ class FileListView extends GetView { children: [ const Padding(padding: EdgeInsets.only(top: 10)), Text( - 'create.selectFile'.tr, + 'selectFile'.tr, // style: TextStyle(color: themeData.hintColor), ), Expanded( diff --git a/ui/flutter/lib/i18n/langs/en_us.dart b/ui/flutter/lib/i18n/langs/en_us.dart deleted file mode 100644 index cd101fd0..00000000 --- a/ui/flutter/lib/i18n/langs/en_us.dart +++ /dev/null @@ -1,58 +0,0 @@ -const enUS = { - 'en_US': { - 'label': 'English', - 'error': 'Error', - 'tip': 'Tip', - 'confirm': 'Confirm', - 'cancel': 'Cancel', - 'selectAll': 'Select All', - 'home.task': 'Task', - 'home.downloading': 'downloading', - 'home.downloaded': 'downloaded', - 'home.setting': 'Setting', - 'create.title': 'Create Task', - 'create.downloadLink': 'Download Link', - 'create.downloadLinkValid': 'Please enter the download link', - 'create.downloadLinkHit': - 'Please enter the download link, HTTP/HTTPS/MAGNET supported@append', - 'create.downloadLinkHitDesktop': ', or drag the torrent file here directly', - 'create.download': 'Download', - 'create.error.noStoragePermission': 'Storage permission required', - 'create.selectFile': 'Select File', - 'setting.title': 'Setting', - 'setting.basic': 'Basic', - 'setting.advanced': 'Advanced', - 'setting.general': 'General', - 'setting.downloadDir': 'Download Directory', - 'setting.downloadDirValid': 'Please select the download directory', - 'setting.connections': 'Connections', - 'setting.items': '@count items', - 'setting.subscribeTracker': 'Subscribe Tracker', - 'setting.subscribeFail': - 'Subscribe failed, please check network or try again later', - 'setting.update': 'Update', - 'setting.updateDaily': 'Update daily', - 'setting.lastUpdate': 'Last update: @time', - 'setting.addTracker': 'Add Tracker', - 'setting.addTrackerHit': - 'Please enter the tracker server url, one per line', - 'setting.ui': 'UI', - 'setting.theme': 'Theme', - 'setting.themeSystem': 'System', - 'setting.themeLight': 'Light', - 'setting.themeDark': 'Dark', - 'setting.locale': 'Language', - 'setting.about': 'About', - 'setting.homepage': 'Homepage', - 'setting.version': 'Version', - 'setting.protocol': 'Protocol', - 'setting.port': 'Port', - 'setting.apiToken': 'API Token', - 'setting.notSet': 'NS', - 'setting.set': 'SET', - 'setting.effectAfterRestart': 'Effect after restart', - 'task.deleteTask': 'Delete Task', - 'task.deleteTaskTip': 'Keep downloaded files', - 'task.delete': 'Delete', - }, -}; diff --git a/ui/flutter/lib/i18n/langs/fa_ir.dart b/ui/flutter/lib/i18n/langs/fa_ir.dart deleted file mode 100644 index 1eb8a3aa..00000000 --- a/ui/flutter/lib/i18n/langs/fa_ir.dart +++ /dev/null @@ -1,58 +0,0 @@ -const faIR = { - 'fa_ir': { - 'label': 'فارسی', - 'error': 'اررور', - 'tip': 'Tip', - 'confirm': 'تایید', - 'cancel': 'انصراف', - 'selectAll': 'انتخاب همه', - 'home.task': 'کار', - 'home.downloading': 'downloading', - 'home.downloaded': 'downloaded', - 'home.setting': 'تنظیمات', - 'create.title': 'ایجاد کار', - 'create.downloadLink': 'لینک دانلود', - 'create.downloadLinkValid': 'لطفا لینک دانلود را وارد کنید', - 'create.downloadLinkHit': - 'Please enter the download link, HTTP/HTTPS/MAGNET supported@append', - 'create.downloadLinkHitDesktop': ', or drag the torrent file here directly', - 'create.download': 'دانلود', - 'create.error.noStoragePermission': 'مجوز ذخیره سازی مورد نیاز است', - 'create.selectFile': 'انتخاب فایل', - 'setting.title': 'تنظیمات', - 'setting.basic': 'پایه', - 'setting.advanced': 'پیشرفته', - 'setting.general': 'عمومی', - 'setting.downloadDir': 'دایرکتوری دانلود', - 'setting.downloadDirValid': 'لطفا دایرکتوری دانلود را انتخاب کنید', - 'setting.connections': 'اتصالات', - 'setting.items': '@count آیتم ها', - 'setting.subscribeTracker': 'Subscribe Tracker', - 'setting.subscribeFail': - 'Subscribe failed, please check network or try again later', - 'setting.update': 'بروزرسانی', - 'setting.updateDaily': 'بروزرسانی روزانه', - 'setting.lastUpdate': 'Last update: @time', - 'setting.addTracker': 'Add Tracker', - 'setting.addTrackerHit': - 'Please enter the tracker server url, one per line', - 'setting.ui': 'رابط کاربری', - 'setting.theme': 'پوسته', - 'setting.themeSystem': 'سیستم', - 'setting.themeLight': 'روشن', - 'setting.themeDark': 'تاریک', - 'setting.locale': 'Language', - 'setting.about': 'درباره ی', - 'setting.homepage': 'صفحه اصلی', - 'setting.version': 'نسخه', - 'setting.protocol': 'پروتکل', - 'setting.port': 'پورت', - 'setting.apiToken': 'API توکن', - 'setting.notSet': 'NS', - 'setting.set': 'SET', - 'setting.effectAfterRestart': 'Effect after restart', - 'task.deleteTask': 'پاک کردن کار', - 'task.deleteTaskTip': 'فایل های دانلود شده را نگه دارد', - 'task.delete': 'پاک کردن', - }, -}; diff --git a/ui/flutter/lib/i18n/langs/ru_RU.dart b/ui/flutter/lib/i18n/langs/ru_RU.dart deleted file mode 100644 index 1f8d51dc..00000000 --- a/ui/flutter/lib/i18n/langs/ru_RU.dart +++ /dev/null @@ -1,58 +0,0 @@ -const ruRU = { - 'ru_RU': { - 'label': 'Русский(Россия)', - 'error': 'Ошибка', - 'tip': 'Подсказка', - 'confirm': 'Подтвердить', - 'cancel': 'Отмена', - 'selectAll': 'Выбрать все', - 'home.task': 'Задачи', - 'home.downloading': 'downloading', - 'home.downloaded': 'downloaded', - 'home.setting': 'Настройки', - 'create.title': 'Создать задачу', - 'create.downloadLink': 'Ссылка для скачивание', - 'create.downloadLinkValid': 'Пожалуйста, введите ссылку для скачивания', - 'create.downloadLinkHit': - 'Пожалуйста, введите ссылку для скачивания, HTTP/HTTPS/MAGNET supported@append', - 'create.downloadLinkHitDesktop': ', или перетащите сюда торрент-файл', - 'create.download': 'Скачать', - 'create.error.noStoragePermission': 'Требуется доступ к хранилищу', - 'create.selectFile': 'Выберать файл', - 'setting.title': 'Настройки', - 'setting.basic': 'Основные параметры', - 'setting.advanced': 'Расширенные', - 'setting.general': 'Общие', - 'setting.downloadDir': 'Папка загрузки', - 'setting.downloadDirValid': 'Пожалуйста, выберите папку для загрузки', - 'setting.connections': 'Соединений', - 'setting.items': '@подсчет элементов', - 'setting.subscribeTracker': 'Подпись трекера', - 'setting.subscribeFail': - 'Подписка не удалась, пожалуйста, проверьте сеть или повторите попытку позже', - 'setting.update': 'Обновить', - 'setting.updateDaily': 'Обновлять ежедневно', - 'setting.lastUpdate': 'Последнее обновление: @время', - 'setting.addTracker': 'Добавить трекер', - 'setting.addTrackerHit': - 'Пожалуйста, введите url трекера, по одному в строке', - 'setting.ui': 'UI', - 'setting.theme': 'Тема', - 'setting.themeSystem': 'Системная', - 'setting.themeLight': 'Светлая', - 'setting.themeDark': 'Темная', - 'setting.locale': 'Язык', - 'setting.about': 'О приложении', - 'setting.homepage': 'Домашняя страница', - 'setting.version': 'Версия', - 'setting.protocol': 'Протокол', - 'setting.port': 'Порт', - 'setting.apiToken': 'API Токен', - 'setting.notSet': 'Не установлено', - 'setting.set': 'Установлено', - 'setting.effectAfterRestart': 'Эффект после перезагрузки', - 'task.deleteTask': 'Удалить задачу', - 'task.deleteTaskTip': 'Сохранить загруженные файлы', - 'task.delete': 'Удалить', - }, -}; diff --git a/ui/flutter/lib/i18n/langs/zh_cn.dart b/ui/flutter/lib/i18n/langs/zh_cn.dart deleted file mode 100644 index d7eebbb0..00000000 --- a/ui/flutter/lib/i18n/langs/zh_cn.dart +++ /dev/null @@ -1,55 +0,0 @@ -const zhCN = { - 'zh_CN': { - 'label': '中文(简体)', - 'error': '错误', - 'tip': '提示', - 'confirm': '确认', - 'cancel': '取消', - 'selectAll': '全选', - 'home.task': '任务', - 'home.downloading': '下载中', - 'home.downloaded': '已完成', - 'home.setting': '设置', - 'create.title': '创建任务', - 'create.downloadLink': '下载链接', - 'create.downloadLinkValid': '请输入下载链接', - 'create.downloadLinkHit': '请输入下载链接,支持 HTTP/HTTPS/MAGNET@append', - 'create.downloadLinkHitDesktop': ',也可以直接拖拽种子文件到此处', - 'create.download': '下载', - 'create.error.noStoragePermission': '需要开启存储权限', - 'create.selectFile': '选择文件', - 'setting.title': '设置', - 'setting.basic': '基础', - 'setting.advanced': '高级', - 'setting.general': '通用', - 'setting.downloadDir': '下载目录', - 'setting.downloadDirValid': '请选择下载目录', - 'setting.connections': '连接数', - 'setting.items': '@count 条', - 'setting.subscribeTracker': '订阅 Tracker', - 'setting.subscribeFail': '订阅失败,请检查网络或稍后重试', - 'setting.update': '更新', - 'setting.updateDaily': '每天自动更新', - 'setting.lastUpdate': '上次更新:@time', - 'setting.addTracker': '添加 Tracker', - 'setting.addTrackerHit': '请输入 tracker 服务器地址,每行一条', - 'setting.ui': '界面', - 'setting.theme': '主题', - 'setting.themeSystem': '跟随系统', - 'setting.themeLight': '明亮主题', - 'setting.themeDark': '暗黑主题', - 'setting.locale': '语言', - 'setting.about': '关于', - 'setting.homepage': '主页', - 'setting.version': '版本', - 'setting.protocol': '通讯协议', - 'setting.port': '端口', - 'setting.apiToken': '接口令牌', - 'setting.notSet': '未设置', - 'setting.set': '已设置', - 'setting.effectAfterRestart': '此配置项将在重启应用后生效', - 'task.deleteTask': '删除任务', - 'task.deleteTaskTip': '保留已下载的文件', - 'task.delete': '删除', - } -}; diff --git a/ui/flutter/lib/i18n/messages.dart b/ui/flutter/lib/i18n/messages.dart index 7756dde3..6f755f95 100644 --- a/ui/flutter/lib/i18n/messages.dart +++ b/ui/flutter/lib/i18n/messages.dart @@ -1,10 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:gopeed/i18n/langs/ru_RU.dart'; -import 'package:gopeed/i18n/langs/fa_ir.dart'; - -import 'langs/en_us.dart'; -import 'langs/zh_cn.dart'; Locale toLocale(String key) { final arr = key.split('_'); @@ -15,13 +9,5 @@ String getLocaleKey(Locale locale) { return '${locale.languageCode}_${locale.countryCode}'; } -final messages = _Messages(); const mainLocale = Locale('zh', 'CN'); const fallbackLocale = Locale('en', 'US'); - -class _Messages extends Translations { - // just include available locales here - @override - Map> get keys => - {...zhCN, ...enUS, ...ruRU, ...faIR}; -} diff --git a/ui/flutter/lib/main.dart b/ui/flutter/lib/main.dart index 97abae13..4c198331 100644 --- a/ui/flutter/lib/main.dart +++ b/ui/flutter/lib/main.dart @@ -7,6 +7,7 @@ import 'package:gopeed/i18n/messages.dart'; import 'app/modules/app/controllers/app_controller.dart'; import 'app/modules/app/views/app_view.dart'; import 'core/libgopeed_boot.dart'; +import 'generated/locales.g.dart'; import 'util/log_util.dart'; import 'util/mac_secure_util.dart'; import 'util/package_info.dart'; @@ -52,9 +53,11 @@ Future onStart() async { // if is debug mode, check language message is complete if (kDebugMode) { final mainLang = getLocaleKey(mainLocale); - final fullMessages = messages.keys[mainLang]; - messages.keys.keys.where((e) => e != mainLang).forEach((lang) { - final langMessages = messages.keys[lang]; + final fullMessages = AppTranslation.translations[mainLang]; + AppTranslation.translations.keys + .where((e) => e != mainLang) + .forEach((lang) { + final langMessages = AppTranslation.translations[lang]; if (langMessages == null) { logger.w("missing language: $lang"); return;