mirror of
https://ghfast.top/https://github.com/StarCitizenToolBox/app.git
synced 2025-06-04 10:43:49 +08:00
feat: VehicleSorting l10
fix: _short name
This commit is contained in:
parent
488ad2a485
commit
f328d981c8
@ -6,7 +6,7 @@ import 'package:starcitizen_doctor/common/io/rs_http.dart';
|
||||
import 'package:starcitizen_doctor/common/utils/log.dart';
|
||||
|
||||
class AnalyticsApi {
|
||||
static touch(String key) async {
|
||||
static Future<void> touch(String key) async {
|
||||
if (kDebugMode || kProfileMode) {
|
||||
dPrint("AnalyticsApi.touch === $key skip");
|
||||
return;
|
||||
|
@ -252,7 +252,7 @@ class AppGlobalModel extends _$AppGlobalModel {
|
||||
|
||||
Timer? _activityThemeColorTimer;
|
||||
|
||||
checkActivityThemeColor(AppVersionData networkVersionData) {
|
||||
void checkActivityThemeColor(AppVersionData networkVersionData) {
|
||||
if (_activityThemeColorTimer != null) {
|
||||
_activityThemeColorTimer?.cancel();
|
||||
_activityThemeColorTimer = null;
|
||||
|
@ -1,7 +1,7 @@
|
||||
class ConstConf {
|
||||
static const String appVersion = "2.14.1";
|
||||
static const int appVersionCode = 65;
|
||||
static const String appVersionDate = "2025-05-08";
|
||||
static const String appVersion = "2.14.2";
|
||||
static const int appVersionCode = 66;
|
||||
static const String appVersionDate = "2025-06-01";
|
||||
static const _gameChannels = [
|
||||
"LIVE",
|
||||
"4.0_PREVIEW",
|
||||
|
@ -789,14 +789,6 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"New localization version available!",
|
||||
),
|
||||
"home_localization_new_version_installed": m34,
|
||||
"home_localization_ptu_advanced_localization_tip_title":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"Advanced Localization Recommended",
|
||||
),
|
||||
"home_localization_ptu_advanced_localization_tip_title_info":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"In PTU/EPTU and other test channels, current localization text may not be synchronized with the game. Using advanced localization can reduce the occurrence of garbled text.",
|
||||
),
|
||||
"home_localization_select_customize_file":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"Please select custom localization file",
|
||||
@ -1681,6 +1673,21 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage(
|
||||
"Click file to preview",
|
||||
),
|
||||
"tools_vehicle_sorting_info": MessageLookupByLibrary.simpleMessage(
|
||||
"Drag vehicles from the left to the right list. This will add prefixes like 001, 002... to vehicle names, making it easier to locate them in the game UI. Drag vehicles up and down in the right list to adjust their order.",
|
||||
),
|
||||
"tools_vehicle_sorting_search": MessageLookupByLibrary.simpleMessage(
|
||||
"Search Vehicles",
|
||||
),
|
||||
"tools_vehicle_sorting_sorted": MessageLookupByLibrary.simpleMessage(
|
||||
"Sorted Vehicles",
|
||||
),
|
||||
"tools_vehicle_sorting_title": MessageLookupByLibrary.simpleMessage(
|
||||
"Vehicle Sorting",
|
||||
),
|
||||
"tools_vehicle_sorting_vehicle": MessageLookupByLibrary.simpleMessage(
|
||||
"Vehicles",
|
||||
),
|
||||
"webview_localization_finished_invitations":
|
||||
MessageLookupByLibrary.simpleMessage("Finished invitations"),
|
||||
"webview_localization_name_member": MessageLookupByLibrary.simpleMessage(
|
||||
|
@ -734,12 +734,6 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"home_localization_new_version_available":
|
||||
MessageLookupByLibrary.simpleMessage("ローカリゼーションの新しいバージョンが利用可能です!"),
|
||||
"home_localization_new_version_installed": m34,
|
||||
"home_localization_ptu_advanced_localization_tip_title":
|
||||
MessageLookupByLibrary.simpleMessage("高度なローカリゼーションの使用をお勧めします"),
|
||||
"home_localization_ptu_advanced_localization_tip_title_info":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"PTU/EPTUなどのテストチャンネルでは、現在のローカリゼーションテキストがゲームと同期していない可能性があります。高度なローカリゼーションを使用することで文字化けの発生を減らすことができます。",
|
||||
),
|
||||
"home_localization_select_customize_file":
|
||||
MessageLookupByLibrary.simpleMessage("カスタムローカリゼーションファイルを選択してください"),
|
||||
"home_localization_select_customize_file_ini":
|
||||
|
@ -800,14 +800,6 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"Доступна новая версия локализации!",
|
||||
),
|
||||
"home_localization_new_version_installed": m34,
|
||||
"home_localization_ptu_advanced_localization_tip_title":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"Рекомендуется использовать расширенную локализацию",
|
||||
),
|
||||
"home_localization_ptu_advanced_localization_tip_title_info":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"В тестовых каналах PTU/EPTU текущий текст локализации может быть не синхронизирован с игрой. Использование расширенной локализации может уменьшить появление некорректного текста.",
|
||||
),
|
||||
"home_localization_select_customize_file":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"Пожалуйста, выберите пользовательский файл локализации",
|
||||
|
@ -690,12 +690,6 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"home_localization_new_version_available":
|
||||
MessageLookupByLibrary.simpleMessage("汉化有新版本!"),
|
||||
"home_localization_new_version_installed": m34,
|
||||
"home_localization_ptu_advanced_localization_tip_title":
|
||||
MessageLookupByLibrary.simpleMessage("推荐使用高级汉化"),
|
||||
"home_localization_ptu_advanced_localization_tip_title_info":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"在 PTU/EPTU 等测试频道 ,当前汉化文本可能与游戏不同步,使用高级汉化可以减少乱码产生。",
|
||||
),
|
||||
"home_localization_select_customize_file":
|
||||
MessageLookupByLibrary.simpleMessage("请选择自定义汉化文件"),
|
||||
"home_localization_select_customize_file_ini":
|
||||
@ -1447,6 +1441,17 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"tools_unp4k_msg_unknown_file_type": m74,
|
||||
"tools_unp4k_title": m75,
|
||||
"tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage("单击文件以预览"),
|
||||
"tools_vehicle_sorting_info": MessageLookupByLibrary.simpleMessage(
|
||||
"将左侧载具拖动到右侧列表中,这将会为载具名称增加 001、002 .. 等前缀,方便您在游戏内 UI 快速定位载具。在右侧列表上下拖动可以调整载具的顺序。",
|
||||
),
|
||||
"tools_vehicle_sorting_search": MessageLookupByLibrary.simpleMessage(
|
||||
"搜索载具",
|
||||
),
|
||||
"tools_vehicle_sorting_sorted": MessageLookupByLibrary.simpleMessage(
|
||||
"已排序载具",
|
||||
),
|
||||
"tools_vehicle_sorting_title": MessageLookupByLibrary.simpleMessage("载具排序"),
|
||||
"tools_vehicle_sorting_vehicle": MessageLookupByLibrary.simpleMessage("载具"),
|
||||
"webview_localization_finished_invitations":
|
||||
MessageLookupByLibrary.simpleMessage("已完成的邀请"),
|
||||
"webview_localization_name_member": MessageLookupByLibrary.simpleMessage(
|
||||
|
@ -694,12 +694,6 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"home_localization_new_version_available":
|
||||
MessageLookupByLibrary.simpleMessage("社群翻譯有新的版本"),
|
||||
"home_localization_new_version_installed": m34,
|
||||
"home_localization_ptu_advanced_localization_tip_title":
|
||||
MessageLookupByLibrary.simpleMessage("推薦使用高級翻譯"),
|
||||
"home_localization_ptu_advanced_localization_tip_title_info":
|
||||
MessageLookupByLibrary.simpleMessage(
|
||||
"在 PTU/EPTU 等測試頻道 ,當前翻譯文本可能與遊戲不同步,使用高級翻譯可以減少亂碼產生。",
|
||||
),
|
||||
"home_localization_select_customize_file":
|
||||
MessageLookupByLibrary.simpleMessage("請選擇自定義翻譯文件"),
|
||||
"home_localization_select_customize_file_ini":
|
||||
@ -1453,6 +1447,17 @@ class MessageLookup extends MessageLookupByLibrary {
|
||||
"tools_unp4k_msg_unknown_file_type": m74,
|
||||
"tools_unp4k_title": m75,
|
||||
"tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage("單擊文件以預覽"),
|
||||
"tools_vehicle_sorting_info": MessageLookupByLibrary.simpleMessage(
|
||||
"將左側載具拖動到右側列表中,這將會為載具名稱增加 001、002 .. 等前綴,方便您在遊戲內 UI 快速定位載具。在右側列表上下拖動可以調整載具的順序。",
|
||||
),
|
||||
"tools_vehicle_sorting_search": MessageLookupByLibrary.simpleMessage(
|
||||
"搜索載具",
|
||||
),
|
||||
"tools_vehicle_sorting_sorted": MessageLookupByLibrary.simpleMessage(
|
||||
"已排序載具",
|
||||
),
|
||||
"tools_vehicle_sorting_title": MessageLookupByLibrary.simpleMessage("載具排序"),
|
||||
"tools_vehicle_sorting_vehicle": MessageLookupByLibrary.simpleMessage("載具"),
|
||||
"webview_localization_finished_invitations":
|
||||
MessageLookupByLibrary.simpleMessage("已完成的邀請"),
|
||||
"webview_localization_name_member": MessageLookupByLibrary.simpleMessage(
|
||||
|
@ -4820,26 +4820,6 @@ class S {
|
||||
);
|
||||
}
|
||||
|
||||
/// `Advanced Localization Recommended`
|
||||
String get home_localization_ptu_advanced_localization_tip_title {
|
||||
return Intl.message(
|
||||
'Advanced Localization Recommended',
|
||||
name: 'home_localization_ptu_advanced_localization_tip_title',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `In PTU/EPTU and other test channels, current localization text may not be synchronized with the game. Using advanced localization can reduce the occurrence of garbled text.`
|
||||
String get home_localization_ptu_advanced_localization_tip_title_info {
|
||||
return Intl.message(
|
||||
'In PTU/EPTU and other test channels, current localization text may not be synchronized with the game. Using advanced localization can reduce the occurrence of garbled text.',
|
||||
name: 'home_localization_ptu_advanced_localization_tip_title_info',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Collapse Additional Features`
|
||||
String get tools_rsi_launcher_enhance_action_fold {
|
||||
return Intl.message(
|
||||
@ -5892,6 +5872,56 @@ class S {
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Vehicle Sorting`
|
||||
String get tools_vehicle_sorting_title {
|
||||
return Intl.message(
|
||||
'Vehicle Sorting',
|
||||
name: 'tools_vehicle_sorting_title',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Drag vehicles from the left to the right list. This will add prefixes like 001, 002... to vehicle names, making it easier to locate them in the game UI. Drag vehicles up and down in the right list to adjust their order.`
|
||||
String get tools_vehicle_sorting_info {
|
||||
return Intl.message(
|
||||
'Drag vehicles from the left to the right list. This will add prefixes like 001, 002... to vehicle names, making it easier to locate them in the game UI. Drag vehicles up and down in the right list to adjust their order.',
|
||||
name: 'tools_vehicle_sorting_info',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Vehicles`
|
||||
String get tools_vehicle_sorting_vehicle {
|
||||
return Intl.message(
|
||||
'Vehicles',
|
||||
name: 'tools_vehicle_sorting_vehicle',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Search Vehicles`
|
||||
String get tools_vehicle_sorting_search {
|
||||
return Intl.message(
|
||||
'Search Vehicles',
|
||||
name: 'tools_vehicle_sorting_search',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Sorted Vehicles`
|
||||
String get tools_vehicle_sorting_sorted {
|
||||
return Intl.message(
|
||||
'Sorted Vehicles',
|
||||
name: 'tools_vehicle_sorting_sorted',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class AppLocalizationDelegate extends LocalizationsDelegate<S> {
|
||||
|
@ -793,8 +793,6 @@
|
||||
"home_localization_select_customize_file_ini": "Please select ini file",
|
||||
"home_localization_select_customize_file": "Please select custom localization file",
|
||||
"home_localization_action_select_customize_file": "Click to select ini file",
|
||||
"home_localization_ptu_advanced_localization_tip_title": "Advanced Localization Recommended",
|
||||
"home_localization_ptu_advanced_localization_tip_title_info": "In PTU/EPTU and other test channels, current localization text may not be synchronized with the game. Using advanced localization can reduce the occurrence of garbled text.",
|
||||
"tools_rsi_launcher_enhance_action_fold": "Collapse Additional Features",
|
||||
"tools_rsi_launcher_enhance_action_expand": "Expand Additional Features",
|
||||
"tools_unp4k_missing_runtime": "Missing Runtime",
|
||||
@ -898,5 +896,10 @@
|
||||
"nav_third_party_service_disclaimer": "*The services linked correspond to third-party providers. We do not make any guarantees and users should assess the risks of using them. | ",
|
||||
"nav_website_navigation_data_provided_by": "Website navigation data provided by",
|
||||
"nav_provided_by": "",
|
||||
"nav_fetching_data": "Fetching data..."
|
||||
"nav_fetching_data": "Fetching data...",
|
||||
"tools_vehicle_sorting_title": "Vehicle Sorting",
|
||||
"tools_vehicle_sorting_info": "Drag vehicles from the left to the right list. This will add prefixes like 001, 002... to vehicle names, making it easier to locate them in the game UI. Drag vehicles up and down in the right list to adjust their order.",
|
||||
"tools_vehicle_sorting_vehicle": "Vehicles",
|
||||
"tools_vehicle_sorting_search": "Search Vehicles",
|
||||
"tools_vehicle_sorting_sorted": "Sorted Vehicles"
|
||||
}
|
||||
|
@ -792,8 +792,6 @@
|
||||
"home_localization_select_customize_file_ini": "iniファイルを選択してください",
|
||||
"home_localization_select_customize_file": "カスタムローカリゼーションファイルを選択してください",
|
||||
"home_localization_action_select_customize_file": "iniファイルを選択するにはクリック",
|
||||
"home_localization_ptu_advanced_localization_tip_title": "高度なローカリゼーションの使用をお勧めします",
|
||||
"home_localization_ptu_advanced_localization_tip_title_info": "PTU/EPTUなどのテストチャンネルでは、現在のローカリゼーションテキストがゲームと同期していない可能性があります。高度なローカリゼーションを使用することで文字化けの発生を減らすことができます。",
|
||||
"tools_rsi_launcher_enhance_action_fold": "追加機能を折りたたむ",
|
||||
"tools_rsi_launcher_enhance_action_expand": "追加機能を展開",
|
||||
"tools_unp4k_missing_runtime": "ランタイムがありません",
|
||||
|
@ -793,8 +793,6 @@
|
||||
"home_localization_select_customize_file_ini": "Пожалуйста, выберите ini файл",
|
||||
"home_localization_select_customize_file": "Пожалуйста, выберите пользовательский файл локализации",
|
||||
"home_localization_action_select_customize_file": "Нажмите для выбора ini файла",
|
||||
"home_localization_ptu_advanced_localization_tip_title": "Рекомендуется использовать расширенную локализацию",
|
||||
"home_localization_ptu_advanced_localization_tip_title_info": "В тестовых каналах PTU/EPTU текущий текст локализации может быть не синхронизирован с игрой. Использование расширенной локализации может уменьшить появление некорректного текста.",
|
||||
"tools_rsi_launcher_enhance_action_fold": "Свернуть дополнительные функции",
|
||||
"tools_rsi_launcher_enhance_action_expand": "Развернуть дополнительные функции",
|
||||
"tools_unp4k_missing_runtime": "Отсутствует среда выполнения",
|
||||
|
@ -793,8 +793,6 @@
|
||||
"home_localization_select_customize_file_ini": "请选择 ini 文件",
|
||||
"home_localization_select_customize_file": "请选择自定义汉化文件",
|
||||
"home_localization_action_select_customize_file": "点击选择 ini 文件",
|
||||
"home_localization_ptu_advanced_localization_tip_title": "推荐使用高级汉化",
|
||||
"home_localization_ptu_advanced_localization_tip_title_info": "在 PTU/EPTU 等测试频道 ,当前汉化文本可能与游戏不同步,使用高级汉化可以减少乱码产生。",
|
||||
"tools_rsi_launcher_enhance_action_fold": "收起额外功能",
|
||||
"tools_rsi_launcher_enhance_action_expand": "展开额外功能",
|
||||
"tools_unp4k_missing_runtime": "缺少运行库",
|
||||
@ -898,5 +896,10 @@
|
||||
"nav_third_party_service_disclaimer": "*对应链接指向的服务由第三方提供,我们不对其做任何担保,请用户自行判断使用风险 | ",
|
||||
"nav_website_navigation_data_provided_by": "网站导航数据由",
|
||||
"nav_provided_by": "提供",
|
||||
"nav_fetching_data": "正在获取数据..."
|
||||
"nav_fetching_data": "正在获取数据...",
|
||||
"tools_vehicle_sorting_title": "载具排序",
|
||||
"tools_vehicle_sorting_info": "将左侧载具拖动到右侧列表中,这将会为载具名称增加 001、002 .. 等前缀,方便您在游戏内 UI 快速定位载具。在右侧列表上下拖动可以调整载具的顺序。",
|
||||
"tools_vehicle_sorting_vehicle": "载具",
|
||||
"tools_vehicle_sorting_search": "搜索载具",
|
||||
"tools_vehicle_sorting_sorted": "已排序载具"
|
||||
}
|
@ -791,8 +791,6 @@
|
||||
"home_localization_select_customize_file_ini": "請選擇 ini 文件",
|
||||
"home_localization_select_customize_file": "請選擇自定義翻譯文件",
|
||||
"home_localization_action_select_customize_file": "點擊選擇 ini 文件",
|
||||
"home_localization_ptu_advanced_localization_tip_title": "推薦使用高級翻譯",
|
||||
"home_localization_ptu_advanced_localization_tip_title_info": "在 PTU/EPTU 等測試頻道 ,當前翻譯文本可能與遊戲不同步,使用高級翻譯可以減少亂碼產生。",
|
||||
"tools_rsi_launcher_enhance_action_fold": "收起額外功能",
|
||||
"tools_rsi_launcher_enhance_action_expand": "展開額外功能",
|
||||
"tools_unp4k_missing_runtime": "缺少運行庫",
|
||||
@ -900,5 +898,10 @@
|
||||
"nav_third_party_service_disclaimer": "*對應鏈接指向的服務由第三方提供,我們不對其做任何擔保,請用戶自行判斷使用風險 | ",
|
||||
"nav_website_navigation_data_provided_by": "網站導航數據由",
|
||||
"nav_provided_by": "提供",
|
||||
"nav_fetching_data": "正在獲取數據..."
|
||||
"nav_fetching_data": "正在獲取數據...",
|
||||
"tools_vehicle_sorting_title": "載具排序",
|
||||
"tools_vehicle_sorting_info": "將左側載具拖動到右側列表中,這將會為載具名稱增加 001、002 .. 等前綴,方便您在遊戲內 UI 快速定位載具。在右側列表上下拖動可以調整載具的順序。",
|
||||
"tools_vehicle_sorting_vehicle": "載具",
|
||||
"tools_vehicle_sorting_search": "搜索載具",
|
||||
"tools_vehicle_sorting_sorted": "已排序載具"
|
||||
}
|
@ -30,7 +30,13 @@ class LocalizationDialogUI extends HookConsumerWidget {
|
||||
return ContentDialog(
|
||||
title: makeTitle(context, model, state),
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context).size.width * .7, minHeight: MediaQuery.of(context).size.height * .9),
|
||||
maxWidth: MediaQuery
|
||||
.of(context)
|
||||
.size
|
||||
.width * .7, minHeight: MediaQuery
|
||||
.of(context)
|
||||
.size
|
||||
.height * .9),
|
||||
content: Padding(
|
||||
padding: const EdgeInsets.only(left: 12, right: 12, top: 12),
|
||||
child: SingleChildScrollView(
|
||||
@ -39,137 +45,129 @@ class LocalizationDialogUI extends HookConsumerWidget {
|
||||
AnimatedSize(
|
||||
duration: const Duration(milliseconds: 130),
|
||||
child: state.patchStatus?.key == true &&
|
||||
state.patchStatus?.value == S.current.home_action_info_game_built_in
|
||||
state.patchStatus?.value == S.current.home_action_info_game_built_in
|
||||
? Padding(
|
||||
padding: const EdgeInsets.only(bottom: 12),
|
||||
child: InfoBar(
|
||||
title: Text(S.current.home_action_info_warning),
|
||||
content: Text(S.current.localization_info_machine_translation_warning),
|
||||
severity: InfoBarSeverity.info,
|
||||
style: InfoBarThemeData(decoration: (severity) {
|
||||
return const BoxDecoration(color: Color.fromRGBO(155, 7, 7, 1.0));
|
||||
}, iconColor: (severity) {
|
||||
return Colors.white;
|
||||
}),
|
||||
),
|
||||
)
|
||||
: SizedBox(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
),
|
||||
),
|
||||
if (!(model.getScInstallPath() ?? "").contains("LIVE"))
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 12),
|
||||
child: InfoBar(
|
||||
title: Text(S.current.home_localization_ptu_advanced_localization_tip_title),
|
||||
content: Text(S.current.home_localization_ptu_advanced_localization_tip_title_info),
|
||||
title: Text(S.current.home_action_info_warning),
|
||||
content: Text(S.current.localization_info_machine_translation_warning),
|
||||
severity: InfoBarSeverity.info,
|
||||
style: InfoBarThemeData(decoration: (severity) {
|
||||
return BoxDecoration(color: Colors.orange);
|
||||
return const BoxDecoration(color: Color.fromRGBO(155, 7, 7, 1.0));
|
||||
}, iconColor: (severity) {
|
||||
return Colors.white;
|
||||
}),
|
||||
),
|
||||
)
|
||||
: SizedBox(
|
||||
width: MediaQuery
|
||||
.of(context)
|
||||
.size
|
||||
.width,
|
||||
),
|
||||
),
|
||||
makeToolsListContainer(context, model, state),
|
||||
makeListContainer(
|
||||
S.current.localization_info_translation,
|
||||
[
|
||||
if (state.patchStatus == null)
|
||||
makeLoading(context)
|
||||
else ...[
|
||||
const SizedBox(height: 6),
|
||||
Row(
|
||||
children: [
|
||||
Center(
|
||||
child: Text(S.current.localization_info_enabled(
|
||||
LocalizationUIModel.languageSupport[state.selectedLanguage] ?? "")),
|
||||
),
|
||||
const Spacer(),
|
||||
ToggleSwitch(
|
||||
checked: state.patchStatus?.key == true,
|
||||
onChanged: model.updateLangCfg,
|
||||
)
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Row(
|
||||
children: [
|
||||
Text(S.current.localization_info_installed_version(
|
||||
"${state.patchStatus?.value ?? ""} ${(state.isInstalledAdvanced ?? false) ? S.current.home_localization_msg_version_advanced : ""}")),
|
||||
SizedBox(width: 24),
|
||||
if (state.installedCommunityInputMethodSupportVersion != null)
|
||||
Text(
|
||||
S.current.input_method_community_input_method_support_version(
|
||||
state.installedCommunityInputMethodSupportVersion ?? "?"),
|
||||
)
|
||||
],
|
||||
else
|
||||
...[
|
||||
const SizedBox(height: 6),
|
||||
Row(
|
||||
children: [
|
||||
Center(
|
||||
child: Text(S.current.localization_info_enabled(
|
||||
LocalizationUIModel.languageSupport[state.selectedLanguage] ?? "")),
|
||||
),
|
||||
),
|
||||
if (state.patchStatus?.value != S.current.home_action_info_game_built_in)
|
||||
Row(
|
||||
children: [
|
||||
Button(
|
||||
onPressed: model.goFeedback,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(4),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(FluentIcons.feedback),
|
||||
const SizedBox(width: 6),
|
||||
Text(S.current.localization_action_translation_feedback),
|
||||
],
|
||||
),
|
||||
)),
|
||||
const SizedBox(width: 16),
|
||||
Button(
|
||||
onPressed: model.doDelIniFile(),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(4),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(FluentIcons.delete),
|
||||
const SizedBox(width: 6),
|
||||
Text(S.current.localization_action_uninstall_translation),
|
||||
],
|
||||
),
|
||||
)),
|
||||
],
|
||||
const Spacer(),
|
||||
ToggleSwitch(
|
||||
checked: state.patchStatus?.key == true,
|
||||
onChanged: model.updateLangCfg,
|
||||
)
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Row(
|
||||
children: [
|
||||
Text(S.current.localization_info_installed_version(
|
||||
"${state.patchStatus?.value ?? ""} ${(state.isInstalledAdvanced ?? false) ? S
|
||||
.current.home_localization_msg_version_advanced : ""}")),
|
||||
SizedBox(width: 24),
|
||||
if (state.installedCommunityInputMethodSupportVersion != null)
|
||||
Text(
|
||||
S.current.input_method_community_input_method_support_version(
|
||||
state.installedCommunityInputMethodSupportVersion ?? "?"),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Container(
|
||||
color: Colors.white.withValues(alpha: .1),
|
||||
height: 1,
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
if (state.apiLocalizationData == null)
|
||||
makeLoading(context)
|
||||
else if (state.apiLocalizationData!.isEmpty)
|
||||
Center(
|
||||
child: Text(
|
||||
S.current.localization_info_no_translation_available,
|
||||
style: TextStyle(fontSize: 13, color: Colors.white.withValues(alpha: .8)),
|
||||
),
|
||||
)
|
||||
else
|
||||
AlignedGridView.count(
|
||||
crossAxisCount: 2,
|
||||
crossAxisSpacing: 12,
|
||||
mainAxisSpacing: 12,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
final item = state.apiLocalizationData!.entries.elementAt(index);
|
||||
return makeRemoteList(context, model, item, state, index);
|
||||
},
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
itemCount: state.apiLocalizationData?.length ?? 0,
|
||||
)
|
||||
],
|
||||
if (state.patchStatus?.value != S.current.home_action_info_game_built_in)
|
||||
Row(
|
||||
children: [
|
||||
Button(
|
||||
onPressed: model.goFeedback,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(4),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(FluentIcons.feedback),
|
||||
const SizedBox(width: 6),
|
||||
Text(S.current.localization_action_translation_feedback),
|
||||
],
|
||||
),
|
||||
)),
|
||||
const SizedBox(width: 16),
|
||||
Button(
|
||||
onPressed: model.doDelIniFile(),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(4),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(FluentIcons.delete),
|
||||
const SizedBox(width: 6),
|
||||
Text(S.current.localization_action_uninstall_translation),
|
||||
],
|
||||
),
|
||||
)),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Container(
|
||||
color: Colors.white.withValues(alpha: .1),
|
||||
height: 1,
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
if (state.apiLocalizationData == null)
|
||||
makeLoading(context)
|
||||
else
|
||||
if (state.apiLocalizationData!.isEmpty)
|
||||
Center(
|
||||
child: Text(
|
||||
S.current.localization_info_no_translation_available,
|
||||
style: TextStyle(fontSize: 13, color: Colors.white.withValues(alpha: .8)),
|
||||
),
|
||||
)
|
||||
else
|
||||
AlignedGridView.count(
|
||||
crossAxisCount: 2,
|
||||
crossAxisSpacing: 12,
|
||||
mainAxisSpacing: 12,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
final item = state.apiLocalizationData!.entries.elementAt(index);
|
||||
return makeRemoteList(context, model, item, state, index);
|
||||
},
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
itemCount: state.apiLocalizationData?.length ?? 0,
|
||||
)
|
||||
],
|
||||
],
|
||||
context),
|
||||
],
|
||||
@ -236,35 +234,36 @@ class LocalizationDialogUI extends HookConsumerWidget {
|
||||
padding: EdgeInsets.only(right: 12),
|
||||
child: ProgressRing(),
|
||||
)
|
||||
else ...[
|
||||
Icon(
|
||||
isInstalled
|
||||
? FluentIcons.check_mark
|
||||
: isItemEnabled
|
||||
? FluentIcons.download
|
||||
: FluentIcons.disable_updates,
|
||||
color: Colors.white.withValues(alpha: .8),
|
||||
size: 18,
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
Text(
|
||||
isInstalled
|
||||
? S.current.localization_info_installed
|
||||
: (isItemEnabled
|
||||
? S.current.localization_action_install
|
||||
: S.current.localization_info_unavailable),
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: .8),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
if ((!isInstalled) && isItemEnabled)
|
||||
else
|
||||
...[
|
||||
Icon(
|
||||
FluentIcons.chevron_right,
|
||||
size: 14,
|
||||
color: Colors.white.withValues(alpha: .6),
|
||||
)
|
||||
]
|
||||
isInstalled
|
||||
? FluentIcons.check_mark
|
||||
: isItemEnabled
|
||||
? FluentIcons.download
|
||||
: FluentIcons.disable_updates,
|
||||
color: Colors.white.withValues(alpha: .8),
|
||||
size: 18,
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
Text(
|
||||
isInstalled
|
||||
? S.current.localization_info_installed
|
||||
: (isItemEnabled
|
||||
? S.current.localization_action_install
|
||||
: S.current.localization_info_unavailable),
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: .8),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
if ((!isInstalled) && isItemEnabled)
|
||||
Icon(
|
||||
FluentIcons.chevron_right,
|
||||
size: 14,
|
||||
color: Colors.white.withValues(alpha: .6),
|
||||
)
|
||||
]
|
||||
],
|
||||
),
|
||||
if (item.value.note != null) ...[
|
||||
@ -294,7 +293,9 @@ class LocalizationDialogUI extends HookConsumerWidget {
|
||||
child: AnimatedSize(
|
||||
duration: const Duration(milliseconds: 130),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: FluentTheme.of(context).cardColor, borderRadius: BorderRadius.circular(7)),
|
||||
decoration: BoxDecoration(color: FluentTheme
|
||||
.of(context)
|
||||
.cardColor, borderRadius: BorderRadius.circular(7)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 12, left: 24, right: 24),
|
||||
child: Column(
|
||||
@ -378,9 +379,9 @@ class LocalizationDialogUI extends HookConsumerWidget {
|
||||
onChanged: state.workingVersion.isNotEmpty
|
||||
? null
|
||||
: (v) {
|
||||
if (v == null) return;
|
||||
model.selectLang(v);
|
||||
},
|
||||
if (v == null) return;
|
||||
model.selectLang(v);
|
||||
},
|
||||
)
|
||||
],
|
||||
),
|
||||
@ -399,16 +400,16 @@ class LocalizationDialogUI extends HookConsumerWidget {
|
||||
Widget makeToolsListContainer(BuildContext context, LocalizationUIModel model, LocalizationUIState state) {
|
||||
final toolsMenu = {
|
||||
"launcher_mod": (
|
||||
const Icon(FluentIcons.c_plus_plus, size: 24),
|
||||
(S.current.home_localization_action_rsi_launcher_localization),
|
||||
const Icon(FluentIcons.c_plus_plus, size: 24),
|
||||
(S.current.home_localization_action_rsi_launcher_localization),
|
||||
),
|
||||
"advanced": (
|
||||
const Icon(FluentIcons.queue_advanced, size: 24),
|
||||
(S.current.home_localization_action_advanced),
|
||||
const Icon(FluentIcons.queue_advanced, size: 24),
|
||||
(S.current.home_localization_action_advanced),
|
||||
),
|
||||
"custom_files": (
|
||||
const Icon(FluentIcons.custom_activity, size: 24),
|
||||
(S.current.home_localization_action_install_customize),
|
||||
const Icon(FluentIcons.custom_activity, size: 24),
|
||||
(S.current.home_localization_action_install_customize),
|
||||
),
|
||||
};
|
||||
|
||||
@ -425,34 +426,36 @@ class LocalizationDialogUI extends HookConsumerWidget {
|
||||
child: GestureDetector(
|
||||
onTap: enableTap
|
||||
? () async {
|
||||
switch (item.key) {
|
||||
case "launcher_mod":
|
||||
ToolsUIModel.rsiEnhance(context);
|
||||
break;
|
||||
case "advanced":
|
||||
context.push("/index/advanced_localization");
|
||||
break;
|
||||
case "custom_files":
|
||||
final sb = await showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) => const LocalizationFromFileDialogUI(),
|
||||
);
|
||||
if (sb is (StringBuffer, bool)) {
|
||||
if (!context.mounted) return;
|
||||
await model.installFormString(
|
||||
sb.$1,
|
||||
S.current.localization_info_custom_files,
|
||||
isEnableCommunityInputMethod: sb.$2,
|
||||
context: context,
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (item.key) {
|
||||
case "launcher_mod":
|
||||
ToolsUIModel.rsiEnhance(context);
|
||||
break;
|
||||
case "advanced":
|
||||
context.push("/index/advanced_localization");
|
||||
break;
|
||||
case "custom_files":
|
||||
final sb = await showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) => const LocalizationFromFileDialogUI(),
|
||||
);
|
||||
if (sb is (StringBuffer, bool)) {
|
||||
if (!context.mounted) return;
|
||||
await model.installFormString(
|
||||
sb.$1,
|
||||
S.current.localization_info_custom_files,
|
||||
isEnableCommunityInputMethod: sb.$2,
|
||||
context: context,
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
: null,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: FluentTheme.of(context).cardColor,
|
||||
color: FluentTheme
|
||||
.of(context)
|
||||
.cardColor,
|
||||
borderRadius: BorderRadius.circular(7),
|
||||
),
|
||||
padding: const EdgeInsets.all(12),
|
||||
|
@ -277,7 +277,7 @@ class LocalizationUIModel extends _$LocalizationUIModel {
|
||||
if ((context?.mounted ?? false) && isEnableVehicleSorting) {
|
||||
if (!context!.mounted) return;
|
||||
final iniStringDataVN = ValueNotifier(iniStringData);
|
||||
final ok = await showConfirmDialogs(context, "载具排序", VehicleSortingDialogUi(iniStringData: iniStringDataVN),constraints: BoxConstraints(
|
||||
final ok = await showConfirmDialogs(context, S.current.tools_vehicle_sorting_title, VehicleSortingDialogUi(iniStringData: iniStringDataVN),constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context).size.width * .75,
|
||||
));
|
||||
if (ok) {
|
||||
@ -669,7 +669,7 @@ class LocalizationUIModel extends _$LocalizationUIModel {
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
"载具排序",
|
||||
S.current.tools_vehicle_sorting_title,
|
||||
),
|
||||
Spacer(),
|
||||
StatefulBuilder(
|
||||
@ -717,4 +717,4 @@ class LocalizationUIModel extends _$LocalizationUIModel {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -41,9 +41,7 @@ class VehicleSortingDialogUi extends HookConsumerWidget {
|
||||
color: Colors.white.withValues(alpha: .03),
|
||||
borderRadius: BorderRadius.circular(4.0),
|
||||
),
|
||||
child: Text(
|
||||
"将左侧载具拖动到右侧列表中,这将会为载具名称增加 001、002 .. 等前缀,方便您在游戏内 UI 快速定位载具。在右侧列表上下拖动可以调整载具的顺序。",
|
||||
),
|
||||
child: Text(S.current.tools_vehicle_sorting_info),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Expanded(
|
||||
@ -60,10 +58,10 @@ class VehicleSortingDialogUi extends HookConsumerWidget {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Padding(
|
||||
Padding(
|
||||
padding: EdgeInsets.all(4.0),
|
||||
child: Text(
|
||||
"载具",
|
||||
S.current.tools_vehicle_sorting_vehicle,
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
@ -74,7 +72,7 @@ class VehicleSortingDialogUi extends HookConsumerWidget {
|
||||
Expanded(
|
||||
child: TextFormBox(
|
||||
controller: leftSearchController,
|
||||
placeholder: "搜索载具",
|
||||
placeholder: S.current.tools_vehicle_sorting_search,
|
||||
onChanged: (value) {
|
||||
leftSearchKey.value = value;
|
||||
},
|
||||
@ -140,10 +138,10 @@ class VehicleSortingDialogUi extends HookConsumerWidget {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Padding(
|
||||
Padding(
|
||||
padding: EdgeInsets.all(4.0),
|
||||
child: Text(
|
||||
"已排序载具",
|
||||
S.current.tools_vehicle_sorting_sorted,
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
@ -314,6 +312,8 @@ class VehicleSortingDialogUi extends HookConsumerWidget {
|
||||
if (parts.length == 2) {
|
||||
final key = parts[0].trim();
|
||||
final value = parts[1].trim();
|
||||
// 过滤掉短名称
|
||||
if (key.toLowerCase().endsWith("_short") || key.toLowerCase().endsWith("_short,p")) continue;
|
||||
vehicleMap[key] = value;
|
||||
}
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ msix_config:
|
||||
publisher_display_name: xkeyC Studio
|
||||
identity_name: 56575xkeyC.MSE
|
||||
publisher: CN=B54C897B-C263-4680-B6AB-4913C603DF87
|
||||
msix_version: 2.14.1.0
|
||||
msix_version: 2.14.2.0
|
||||
logo_path: ./assets/app_logo.png
|
||||
capabilities: internetClient,allowElevation
|
||||
languages: zh-cn
|
||||
|
Loading…
x
Reference in New Issue
Block a user