mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-06 08:30:29 +00:00
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 <[email protected]>
This commit is contained in:
1 parent
74c24ad860
commit
c0e24ce869
19 files changed
+41
-270
No files matched your search
+3
-1
@@ -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
|
||||
|
||||
@@ -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 .`
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
.packages
|
||||
.pub-cache/
|
||||
.pub/
|
||||
/build/
|
||||
build/
|
||||
.fvm/
|
||||
|
||||
# Web related
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"downloading": "downloading",
|
||||
"downloaded": "downloaded",
|
||||
"setting": "تنظیمات",
|
||||
"title": "ایجاد کار",
|
||||
"create": "ایجاد کار",
|
||||
"downloadLink": "لینک دانلود",
|
||||
"downloadLinkValid": "لطفا لینک دانلود را وارد کنید",
|
||||
"downloadLinkHit": "Please enter the download link, HTTP/HTTPS/MAGNET supported@append",
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"downloading": "downloading",
|
||||
"downloaded": "downloaded",
|
||||
"setting": "Настройки",
|
||||
"title": "Создать задачу",
|
||||
"create": "Создать задачу",
|
||||
"downloadLink": "Ссылка для скачивание",
|
||||
"downloadLinkValid": "Пожалуйста, введите ссылку для скачивания",
|
||||
"downloadLinkHit": "Пожалуйста, введите ссылку для скачивания, HTTP/HTTPS/MAGNET supported@append",
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"downloading": "下载中",
|
||||
"downloaded": "已完成",
|
||||
"setting": "设置",
|
||||
"title": "创建任务",
|
||||
"create": "创建任务",
|
||||
"downloadLink": "下载链接",
|
||||
"downloadLinkValid": "请输入下载链接",
|
||||
"downloadLinkHit": "请输入下载链接,支持 HTTP/HTTPS/MAGNET@append",
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ class AppView extends GetView<AppController> {
|
||||
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,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class CreateView extends GetView<CreateController> {
|
||||
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<CreateController> {
|
||||
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<CreateController> {
|
||||
}
|
||||
|
||||
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<CreateController> {
|
||||
// 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<CreateController> {
|
||||
}
|
||||
},
|
||||
controller: downloadController,
|
||||
child: Text('create.download'.tr),
|
||||
child: Text('download'.tr),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -22,7 +22,7 @@ class HomeView extends GetView<HomeController> {
|
||||
? NavigationRail(
|
||||
extended: true,
|
||||
labelType: NavigationRailLabelType.none,
|
||||
minExtendedWidth: 140,
|
||||
minExtendedWidth: 170,
|
||||
groupAlignment: 0,
|
||||
// useIndicator: false,
|
||||
onDestinationSelected: (int index) {
|
||||
|
||||
@@ -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<SettingController> {
|
||||
));
|
||||
final buildLocale = _buildConfigItem(
|
||||
'locale',
|
||||
() => messages.keys[downloaderCfg.value.extra.locale]!['label']!,
|
||||
() => AppTranslation
|
||||
.translations[downloaderCfg.value.extra.locale]!['label']!,
|
||||
(Key key) => DropdownButton<String>(
|
||||
key: key,
|
||||
value: downloaderCfg.value.extra.locale,
|
||||
@@ -216,10 +218,10 @@ class SettingView extends GetView<SettingController> {
|
||||
|
||||
await debounceSave();
|
||||
},
|
||||
items: messages.keys.keys
|
||||
items: AppTranslation.translations.keys
|
||||
.map((e) => DropdownMenuItem<String>(
|
||||
value: e,
|
||||
child: Text(messages.keys[e]!['label']!),
|
||||
child: Text(AppTranslation.translations[e]!['label']!),
|
||||
))
|
||||
.toList(),
|
||||
));
|
||||
|
||||
@@ -24,7 +24,7 @@ class BuildTaskListView extends GetView {
|
||||
actions: <Widget>[
|
||||
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
|
||||
// },
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
};
|
||||
@@ -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': 'پاک کردن',
|
||||
},
|
||||
};
|
||||
@@ -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': 'Удалить',
|
||||
},
|
||||
};
|
||||
@@ -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': '删除',
|
||||
}
|
||||
};
|
||||
@@ -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<String, Map<String, String>> get keys =>
|
||||
{...zhCN, ...enUS, ...ruRU, ...faIR};
|
||||
}
|
||||
@@ -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<void> 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;
|
||||
|
||||
Reference in new issue
Block a user