diff --git a/lib/app.dart b/lib/app.dart index 9a299e9..0d6170d 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -24,6 +24,7 @@ import 'common/helper/system_helper.dart'; import 'common/io/rs_http.dart'; import 'common/rust/frb_generated.dart'; import 'data/app_version_data.dart'; +import 'generated/no_l10n_strings.dart'; import 'ui/home/downloader/home_downloader_ui.dart'; import 'ui/home/game_doctor/game_doctor_ui.dart'; import 'ui/index_ui.dart'; @@ -33,6 +34,18 @@ part 'app.g.dart'; part 'app.freezed.dart'; +@freezed +class AppGlobalState with _$AppGlobalState { + const factory AppGlobalState({ + String? deviceUUID, + String? applicationSupportDir, + String? applicationBinaryModuleDir, + AppVersionData? networkVersionData, + @Default(ThemeConf()) ThemeConf themeConf, + Locale? appLocale, + }) = _AppGlobalState; +} + @riverpod GoRouter router(RouterRef ref) { return GoRouter( @@ -69,6 +82,13 @@ GoRouter router(RouterRef ref) { @riverpod class AppGlobalModel extends _$AppGlobalModel { + static final appLocaleSupport = { + const Locale("auto"): S.current.settings_app_language_auto, + const Locale("zh", "CN"): NoL10n.langZHS, + const Locale("zh", "TW"): NoL10n.langZHT, + const Locale("en"): NoL10n.langEn, + }; + @override AppGlobalState build() { return const AppGlobalState(); @@ -109,7 +129,17 @@ class AppGlobalModel extends _$AppGlobalModel { AnalyticsApi.touch("firstLaunch"); } final deviceUUID = box.get("install_id", defaultValue: ""); - state = state.copyWith(deviceUUID: deviceUUID); + final localeCode = box.get("app_locale", defaultValue: null); + Locale? locale; + if (localeCode != null) { + final localeSplit = localeCode.toString().split("_"); + if (localeSplit.length == 2 && localeSplit[1].isNotEmpty) { + locale = Locale(localeSplit[0], localeSplit[1]); + } else { + locale = Locale(localeSplit[0]); + } + } + state = state.copyWith(deviceUUID: deviceUUID, appLocale: locale); } catch (e) { exit(1); } @@ -185,8 +215,10 @@ class AppGlobalModel extends _$AppGlobalModel { await Future.delayed(const Duration(milliseconds: 100)); if (state.networkVersionData == null) { if (!context.mounted) return false; - await showToast(context, - "网络异常!\n这可能是您的网络环境存在DNS污染,请尝试更换DNS。\n或服务器正在维护或遭受攻击,稍后再试。 \n进入离线模式... \n\n请谨慎在离线模式中使用。 \n当前版本构建日期:${ConstConf.appVersionDate}\n QQ群:940696487 \n错误信息:$checkUpdateError"); + await showToast( + context, + S.current.app_common_network_error( + ConstConf.appVersionDate, checkUpdateError.toString())); return false; } final lastVersion = ConstConf.isMSE @@ -203,7 +235,7 @@ class AppGlobalModel extends _$AppGlobalModel { if (r != true) { if (!context.mounted) return false; - await showToast(context, "获取更新信息失败,请稍后重试。"); + await showToast(context, S.current.app_common_upgrade_info_error); return false; } return true; @@ -256,17 +288,22 @@ class AppGlobalModel extends _$AppGlobalModel { ); } } -} -@freezed -class AppGlobalState with _$AppGlobalState { - const factory AppGlobalState({ - String? deviceUUID, - String? applicationSupportDir, - String? applicationBinaryModuleDir, - AppVersionData? networkVersionData, - @Default(ThemeConf()) ThemeConf themeConf, - }) = _AppGlobalState; + void changeLocale(value) async { + final appConfBox = await Hive.openBox("app_conf"); + if (value is Locale) { + if (value.languageCode == "auto") { + state = state.copyWith(appLocale: null); + await appConfBox.put("app_locale", null); + return; + } + final localeCode = value.countryCode != null + ? "${value.languageCode}_${value.countryCode ?? ""}" + : value.languageCode; + await appConfBox.put("app_locale", localeCode); + state = state.copyWith(appLocale: value); + } + } } @freezed diff --git a/lib/app.freezed.dart b/lib/app.freezed.dart index 351b336..0239fe6 100644 --- a/lib/app.freezed.dart +++ b/lib/app.freezed.dart @@ -21,6 +21,7 @@ mixin _$AppGlobalState { String? get applicationBinaryModuleDir => throw _privateConstructorUsedError; AppVersionData? get networkVersionData => throw _privateConstructorUsedError; ThemeConf get themeConf => throw _privateConstructorUsedError; + Locale? get appLocale => throw _privateConstructorUsedError; @JsonKey(ignore: true) $AppGlobalStateCopyWith get copyWith => @@ -38,7 +39,8 @@ abstract class $AppGlobalStateCopyWith<$Res> { String? applicationSupportDir, String? applicationBinaryModuleDir, AppVersionData? networkVersionData, - ThemeConf themeConf}); + ThemeConf themeConf, + Locale? appLocale}); $ThemeConfCopyWith<$Res> get themeConf; } @@ -61,6 +63,7 @@ class _$AppGlobalStateCopyWithImpl<$Res, $Val extends AppGlobalState> Object? applicationBinaryModuleDir = freezed, Object? networkVersionData = freezed, Object? themeConf = null, + Object? appLocale = freezed, }) { return _then(_value.copyWith( deviceUUID: freezed == deviceUUID @@ -83,6 +86,10 @@ class _$AppGlobalStateCopyWithImpl<$Res, $Val extends AppGlobalState> ? _value.themeConf : themeConf // ignore: cast_nullable_to_non_nullable as ThemeConf, + appLocale: freezed == appLocale + ? _value.appLocale + : appLocale // ignore: cast_nullable_to_non_nullable + as Locale?, ) as $Val); } @@ -108,7 +115,8 @@ abstract class _$$AppGlobalStateImplCopyWith<$Res> String? applicationSupportDir, String? applicationBinaryModuleDir, AppVersionData? networkVersionData, - ThemeConf themeConf}); + ThemeConf themeConf, + Locale? appLocale}); @override $ThemeConfCopyWith<$Res> get themeConf; @@ -130,6 +138,7 @@ class __$$AppGlobalStateImplCopyWithImpl<$Res> Object? applicationBinaryModuleDir = freezed, Object? networkVersionData = freezed, Object? themeConf = null, + Object? appLocale = freezed, }) { return _then(_$AppGlobalStateImpl( deviceUUID: freezed == deviceUUID @@ -152,6 +161,10 @@ class __$$AppGlobalStateImplCopyWithImpl<$Res> ? _value.themeConf : themeConf // ignore: cast_nullable_to_non_nullable as ThemeConf, + appLocale: freezed == appLocale + ? _value.appLocale + : appLocale // ignore: cast_nullable_to_non_nullable + as Locale?, )); } } @@ -164,7 +177,8 @@ class _$AppGlobalStateImpl implements _AppGlobalState { this.applicationSupportDir, this.applicationBinaryModuleDir, this.networkVersionData, - this.themeConf = const ThemeConf()}); + this.themeConf = const ThemeConf(), + this.appLocale}); @override final String? deviceUUID; @@ -177,10 +191,12 @@ class _$AppGlobalStateImpl implements _AppGlobalState { @override @JsonKey() final ThemeConf themeConf; + @override + final Locale? appLocale; @override String toString() { - return 'AppGlobalState(deviceUUID: $deviceUUID, applicationSupportDir: $applicationSupportDir, applicationBinaryModuleDir: $applicationBinaryModuleDir, networkVersionData: $networkVersionData, themeConf: $themeConf)'; + return 'AppGlobalState(deviceUUID: $deviceUUID, applicationSupportDir: $applicationSupportDir, applicationBinaryModuleDir: $applicationBinaryModuleDir, networkVersionData: $networkVersionData, themeConf: $themeConf, appLocale: $appLocale)'; } @override @@ -199,7 +215,9 @@ class _$AppGlobalStateImpl implements _AppGlobalState { (identical(other.networkVersionData, networkVersionData) || other.networkVersionData == networkVersionData) && (identical(other.themeConf, themeConf) || - other.themeConf == themeConf)); + other.themeConf == themeConf) && + (identical(other.appLocale, appLocale) || + other.appLocale == appLocale)); } @override @@ -209,7 +227,8 @@ class _$AppGlobalStateImpl implements _AppGlobalState { applicationSupportDir, applicationBinaryModuleDir, networkVersionData, - themeConf); + themeConf, + appLocale); @JsonKey(ignore: true) @override @@ -225,7 +244,8 @@ abstract class _AppGlobalState implements AppGlobalState { final String? applicationSupportDir, final String? applicationBinaryModuleDir, final AppVersionData? networkVersionData, - final ThemeConf themeConf}) = _$AppGlobalStateImpl; + final ThemeConf themeConf, + final Locale? appLocale}) = _$AppGlobalStateImpl; @override String? get deviceUUID; @@ -238,6 +258,8 @@ abstract class _AppGlobalState implements AppGlobalState { @override ThemeConf get themeConf; @override + Locale? get appLocale; + @override @JsonKey(ignore: true) _$$AppGlobalStateImplCopyWith<_$AppGlobalStateImpl> get copyWith => throw _privateConstructorUsedError; diff --git a/lib/common/helper/log_helper.dart b/lib/common/helper/log_helper.dart index 64b3ffa..60f80a1 100644 --- a/lib/common/helper/log_helper.dart +++ b/lib/common/helper/log_helper.dart @@ -4,7 +4,6 @@ import 'dart:io'; import 'package:hive/hive.dart'; import 'package:starcitizen_doctor/common/utils/log.dart'; - class SCLoggerHelper { static Future getLogFilePath() async { Map envVars = Platform.environment; @@ -135,35 +134,42 @@ class SCLoggerHelper { static MapEntry? _checkRunningLine(String line) { if (line.contains("STATUS_CRYENGINE_OUT_OF_SYSMEM")) { - return const MapEntry("可用内存不足", "请尝试增加虚拟内存( 1080p 下, 物理可用+虚拟内存需 > 64G )"); + return MapEntry(S.current.doctor_game_error_low_memory, + S.current.doctor_game_error_low_memory_info); } if (line.contains("EXCEPTION_ACCESS_VIOLATION")) { - return const MapEntry("游戏触发了最为广泛的崩溃问题,请查看排障指南", + return MapEntry(S.current.doctor_game_error_generic_info, "https://docs.qq.com/doc/DUURxUVhzTmZoY09Z"); } if (line.contains("DXGI_ERROR_DEVICE_REMOVED")) { - return const MapEntry( - "您的显卡崩溃啦!请查看排障指南", "https://www.bilibili.com/read/cv19335199"); + return MapEntry(S.current.doctor_game_error_gpu_crash, + "https://www.bilibili.com/read/cv19335199"); } if (line.contains("Wakeup socket sendto error")) { - return const MapEntry("检测到 socket 异常", "如使用 X黑盒 加速器,请尝试更换加速模式"); + return MapEntry(S.current.doctor_game_error_socket_error, + S.current.doctor_game_error_socket_error_info); } if (line.contains("The requested operation requires elevated")) { - return const MapEntry("权限不足", "请尝试以管理员权限运行启动器,或使用盒子(微软商店版)启动。"); + return MapEntry(S.current.doctor_game_error_permissions_error, + S.current.doctor_game_error_permissions_error_info); } if (line.contains( "The process cannot access the file because is is being used by another process")) { - return const MapEntry("游戏进程被占用", "请尝试重启启动器,或直接重启电脑"); + return MapEntry(S.current.doctor_game_error_game_process_error, + S.current.doctor_game_error_game_process_error_info); } if (line.contains("0xc0000043")) { - return const MapEntry("游戏程序文件损坏", "请尝试删除 Bin64 文件夹 并在启动器校验。"); + return MapEntry(S.current.doctor_game_error_game_damaged_file, + S.current.doctor_game_error_game_damaged_file_info); } if (line.contains("option to verify the content of the Data.p4k file")) { - return const MapEntry("P4K文件损坏", "请尝试删除 Data.p4k 文件 并在启动器校验 或 使用盒子分流。"); + return MapEntry(S.current.doctor_game_error_game_damaged_p4k_file, + S.current.doctor_game_error_game_damaged_p4k_file_info); } if (line.contains("OUTOFMEMORY Direct3D could not allocate")) { - return const MapEntry("可用显存不足", "请不要在后台运行其他高显卡占用的 游戏/应用,或更换显卡。"); + return MapEntry(S.current.doctor_game_error_low_gpu_memory, + S.current.doctor_game_error_low_gpu_memory_info); } /// Unknown diff --git a/lib/common/utils/async.dart b/lib/common/utils/async.dart index 30b0b13..ac2c98f 100644 --- a/lib/common/utils/async.dart +++ b/lib/common/utils/async.dart @@ -9,7 +9,7 @@ extension AsyncError on Future { } catch (e) { dPrint("unwrap error:$e"); if (context != null && context.mounted) { - showToast(context, "出现错误: $e"); + showToast(context, S.current.app_common_error_info(e.toString())); } return null; } diff --git a/lib/common/utils/base_utils.dart b/lib/common/utils/base_utils.dart index ef64ef9..8c4d664 100644 --- a/lib/common/utils/base_utils.dart +++ b/lib/common/utils/base_utils.dart @@ -5,17 +5,19 @@ import 'package:flutter/rendering.dart'; import 'dart:ui' as ui; import 'package:flutter/services.dart'; +import 'package:starcitizen_doctor/generated/l10n.dart'; Future showToast(BuildContext context, String msg, {BoxConstraints? constraints, String? title}) async { return showBaseDialog(context, - title: title ?? "提示", + title: title ?? S.current.app_common_tip, content: Text(msg), actions: [ FilledButton( - child: const Padding( - padding: EdgeInsets.only(top: 2, bottom: 2, left: 8, right: 8), - child: Text('我知道了'), + child: Padding( + padding: + const EdgeInsets.only(top: 2, bottom: 2, left: 8, right: 8), + child: Text(S.current.app_common_tip_i_know), ), onPressed: () => Navigator.pop(context), ), @@ -25,9 +27,12 @@ Future showToast(BuildContext context, String msg, Future showConfirmDialogs( BuildContext context, String title, Widget content, - {String confirm = "确认", - String cancel = "取消", + {String confirm = "", + String cancel = "", BoxConstraints? constraints}) async { + if (confirm.isEmpty) confirm = S.current.app_common_tip_confirm; + if (cancel.isEmpty) confirm = S.current.app_common_tip_cancel; + final r = await showBaseDialog(context, title: title, content: content, diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index efae117..28cc919 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -20,126 +20,133 @@ typedef String MessageIfAbsent(String messageStr, List args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'en'; - static String m0(v0, v1) => "SCToolBox V ${v0} ${v1}"; + static String m0(v0) => "Error: ${v0}"; - static String m1(v0) => "Initialization failure: ${v0}"; + static String m1(v0, v1) => + "Network anomaly!\nThis may be that your network environment has DNS pollution, please try to replace DNS.\nOr the server is being maintained or attacked and tried it later.\nEnter the offline mode ...\n\nPlease use it carefully in the offline mode.\nThe current version of the construction date: ${v0}\n QQ group: 940696487\nError message: ${v1}"; - static String m2(v0) => "Downloading: ${v0}%"; + static String m2(v0, v1) => "SCToolBox V ${v0} ${v1}"; - static String m3(v0) => "Discover the new version-> ${v0}"; + static String m3(v0) => "Initialization failure: ${v0}"; - static String m4(v0) => "Game abnormal exit: ${v0}"; + static String m4(v0) => "Downloading: ${v0}%"; - static String m5(v0) => + static String m5(v0) => "Discover the new version-> ${v0}"; + + static String m6(v0) => "Game abnormal exit: ${v0}"; + + static String m7(v0) => "Info: ${v0}, please click to add group feedback in the lower right corner."; - static String m6(v0) => "After the analysis, I found that ${v0} questions"; + static String m8(v0) => "After the analysis, I found that ${v0} questions"; - static String m7(v0, v1) => + static String m9(v0, v1) => "Create a folder failed, please try to create manually.\nDirectory: ${v0}\nError: ${v1}"; - static String m8(v0) => "Failure to repair, ${v0}"; + static String m10(v0) => "Failure to repair, ${v0}"; - static String m9(v0) => "Operating system that does not support: ${v0}"; - - static String m10(v0) => - "Add ForcedPhysicalsectorsizeinbytes value to the registry item to simulate old devices. Hard disk partition (${v0})"; - - static String m11(V0) => - "No-English installation path! This may cause the game to start/install errors! (${V0}), please replace the installation path at the RSI starter."; + static String m11(v0) => "Operating system that does not support: ${v0}"; static String m12(v0) => - "Click to fix the Live folder for you, and install it after completion. (${v0})"; + "Add ForcedPhysicalsectorsizeinbytes value to the registry item to simulate old devices. Hard disk partition (${v0})"; - static String m13(v0) => "Repair suggestions: ${v0}"; + static String m13(v0) => + "No-English installation path! This may cause the game to start/install errors! (${v0}), please replace the installation path at the RSI starter."; static String m14(v0) => + "Click to fix the Live folder for you, and install it after completion. (${v0})"; + + static String m15(v0) => "Repair suggestions: ${v0}"; + + static String m16(v0) => "You need at least 16GB of physical memory (Memory) to run this game. (Current size: ${v0})"; - static String m15(v0) => "Please upgrade your system (${v0})"; + static String m17(v0) => "Please upgrade your system (${v0})"; - static String m16(v0) => "One -click diagnosis-> ${v0}"; + static String m18(v0) => "One -click diagnosis-> ${v0}"; - static String m17(v0, v1) => "Download: ${v0}/s Upload: ${v1}/s"; + static String m19(v0, v1) => "Download: ${v0}/s Upload: ${v1}/s"; - static String m18(v0) => "Downloaded: ${v0}"; + static String m20(v0) => "Downloaded: ${v0}"; - static String m19(v0) => "Download ... (${v0}%)"; + static String m21(v0) => "Download ... (${v0}%)"; - static String m20(v0) => "Status: ${v0}"; + static String m22(v0) => "Status: ${v0}"; - static String m21(v1) => "Total size: ${v1}"; + static String m23(v1) => "Total size: ${v1}"; - static String m22(v0) => "Uploaded: ${v0}"; + static String m24(v0) => "Uploaded: ${v0}"; - static String m23(v2) => "In the verification ... (${v2})"; + static String m25(v2) => "In the verification ... (${v2})"; - static String m24(v0, v1, v2, v3, v4) => + static String m26(v0, v1, v2, v3, v4) => "The game exits normally\nexitCode = ${v0}\nstdout = ${v1}\nstderr = ${v2}\n\nDiagnostic information: ${v3}\n${v4}"; - static String m25(v0) => + static String m27(v0) => "Initialized webpage Localization resources failed! ${v0}"; - static String m26(v0) => + static String m28(v0) => "After scanning, find ${v0} a valid installation directory"; - static String m27(v0) => + static String m29(v0) => "${v0} Day"; + + static String m30(v0) => "You have a new version of the Localization you installed in ${v0}!"; - static String m28(v1, v2) => + static String m31(v1, v2) => "RSI server report version number: ${v1}\n\nLocal version number: ${v2}\n\nIt is recommended to use RSI Launcher to update the game!"; - static String m29(v0) => "Channel: ${v0}"; + static String m32(v0) => "Channel: ${v0}"; - static String m30(v0) => "Custom_ ${v0}"; + static String m33(v0) => "Custom_ ${v0}"; - static String m31(v0) => "Enable (${v0}):"; + static String m34(v0) => "Enable (${v0}):"; - static String m32(v0) => "Install an error!\n\n ${v0}"; + static String m35(v0) => "Install an error!\n\n ${v0}"; - static String m33(v0) => "The installed version: ${v0}"; + static String m36(v0) => "The installed version: ${v0}"; - static String m34(v0) => "Update Time: ${v0}"; + static String m37(v0) => "Update Time: ${v0}"; - static String m35(v0) => "Version number: ${v0}"; + static String m38(v0) => "Version number: ${v0}"; - static String m36(v0) => "Current status: ${v0}"; + static String m39(v0) => "Current status: ${v0}"; - static String m37(v0, v1, v2) => + static String m40(v0, v1, v2) => "${v0} minimum value: ${v1} / maximum value: ${v2}"; - static String m38(v0) => "Performance Optimization -> ${v0}"; - - static String m39(v0) => - "The cache size ${v0} MB, clean up the Localization -based file cache of the download of the box, will not affect the installed Localization"; - - static String m40(v0, v1, v2, v3) => - "Enable: ${v0} Device Support: ${v1} Email: ${v2} Password: ${v3}"; - - static String m41(v0) => - "Core quantity that has been set: ${v0} (This function is suitable for the box -click startup or RSI starter manager mode on the homepage, which is not enabled when it is 0)"; + static String m41(v0) => "Performance Optimization -> ${v0}"; static String m42(v0) => - "Failure to clean up, please remove manually, file location: ${v0}"; + "The cache size ${v0} MB, clean up the Localization -based file cache of the download of the box, will not affect the installed Localization"; - static String m43(v0) => "Error: ${v0}"; + static String m43(v0, v1, v2, v3) => + "Enable: ${v0} Device Support: ${v1} Email: ${v2} Password: ${v3}"; static String m44(v0) => - "Initialization failed, please take a screenshot report to the developer. ${v0}"; + "Core quantity that has been set: ${v0} (This function is suitable for the box -click startup or RSI starter manager mode on the homepage, which is not enabled when it is 0)"; static String m45(v0) => - "If you have a problem with the NVME patch, run this tool. (It may cause game installation/update to be unavailable.)\n\nCurrent patch status: ${v0}"; + "Failure to clean up, please remove manually, file location: ${v0}"; - static String m46(v0) => - "In some cases, the LOG file of the RSI promoter will be damaged, causing the problem to be scanned, and using this tool to clean up the damaged log file.\n\nCurrent log file size: ${v0} MB"; + static String m46(v0) => "Error: ${v0}"; static String m47(v0) => + "Initialization failed, please take a screenshot report to the developer. ${v0}"; + + static String m48(v0) => + "If you have a problem with the NVME patch, run this tool. (It may cause game installation/update to be unavailable.)\n\nCurrent patch status: ${v0}"; + + static String m49(v0) => + "In some cases, the LOG file of the RSI promoter will be damaged, causing the problem to be scanned, and using this tool to clean up the damaged log file.\n\nCurrent log file size: ${v0} MB"; + + static String m50(v0) => "If the game screen appears abnormal or the version is updated, you can use the tool to clean the expired color (when it is greater than 500m, it is recommended to clean it)\n\nCache size: ${v0} MB"; - static String m48(v0, v1, v2, v3, v4) => + static String m51(v0, v1, v2, v3, v4) => "System: ${v0}\n\nProcessor: ${v1}\n\nMemory size: ${v2} gb\n\nGraphics card information:\n${v3}\n\nHard disk information:\n${v4}"; - static String m49(V0) => "Failure to handle! : ${V0}"; + static String m52(v0) => "Failure to handle! : ${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -178,14 +185,25 @@ class MessageLookup extends MessageLookupByLibrary { "action_close": MessageLookupByLibrary.simpleMessage("Closure"), "action_open_folder": MessageLookupByLibrary.simpleMessage("Open the folder"), + "app_common_error_info": m0, + "app_common_loading_images": + MessageLookupByLibrary.simpleMessage("Load the picture ..."), + "app_common_network_error": m1, + "app_common_tip": MessageLookupByLibrary.simpleMessage("Hint"), + "app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("Cancel"), + "app_common_tip_confirm": + MessageLookupByLibrary.simpleMessage("Confirm"), + "app_common_tip_i_know": MessageLookupByLibrary.simpleMessage("I see"), + "app_common_upgrade_info_error": MessageLookupByLibrary.simpleMessage( + "If the update information fails, please try it later."), "app_index_menu_about": MessageLookupByLibrary.simpleMessage("About"), "app_index_menu_home": MessageLookupByLibrary.simpleMessage("Index"), "app_index_menu_lobby": MessageLookupByLibrary.simpleMessage("Hall"), "app_index_menu_settings": MessageLookupByLibrary.simpleMessage("Settings"), "app_index_menu_tools": MessageLookupByLibrary.simpleMessage("Tool"), - "app_index_version_info": m0, - "app_init_failed_with_reason": m1, + "app_index_version_info": m2, + "app_init_failed_with_reason": m3, "app_language_code": MessageLookupByLibrary.simpleMessage("en"), "app_language_name": MessageLookupByLibrary.simpleMessage("English"), "app_shortcut_name": @@ -203,7 +221,7 @@ class MessageLookup extends MessageLookupByLibrary { "app_upgrade_info_download_failed": MessageLookupByLibrary.simpleMessage( "Failure to download, please try to install manually!"), - "app_upgrade_info_downloading": m2, + "app_upgrade_info_downloading": m4, "app_upgrade_info_getting_new_version_details": MessageLookupByLibrary.simpleMessage( "Get the new version details ..."), @@ -213,7 +231,7 @@ class MessageLookup extends MessageLookupByLibrary { "Failure to run, try to install manually!"), "app_upgrade_info_update_server_tip": MessageLookupByLibrary.simpleMessage( "Tip: The current diversion server is updated, and the download speed may decline, but it will help us perform cost control. If you download the exception, please click here to jump and manually install it."), - "app_upgrade_title_new_version_found": m3, + "app_upgrade_title_new_version_found": m5, "doctor_action_analyzing": MessageLookupByLibrary.simpleMessage("Analysing..."), "doctor_action_game_run_log": @@ -226,26 +244,26 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage( "Inspection: operating environment"), - "doctor_action_info_game_abnormal_exit": m4, + "doctor_action_info_game_abnormal_exit": m6, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage( "Game abnormal exit: unknown abnormalities"), - "doctor_action_info_info_feedback": m5, - "doctor_action_result_analysis_issues_found": m6, + "doctor_action_info_info_feedback": m7, + "doctor_action_result_analysis_issues_found": m8, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage( "After the analysis, no problems are found"), - "doctor_action_result_create_folder_fail": m7, + "doctor_action_result_create_folder_fail": m9, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage( "Create a folder success, try to continue download the game!"), - "doctor_action_result_fix_fail": m8, + "doctor_action_result_fix_fail": m10, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "If the repair is successful, try to restart and continue to install the game! If the registry modification operation causes compatibility problems with other software, please use the NVMe registry in the tool to clean up."), "doctor_action_result_game_start_success": MessageLookupByLibrary.simpleMessage( "If the repair is successful, try to start the game. (If the problem cannot be solved, please use the toolbox\'s \"Reinstall EAC\")"), - "doctor_action_result_info_unsupported_os": m9, + "doctor_action_result_info_unsupported_os": m11, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage( "This problem does not support automatic processing for the time being, please provide screenshots for help"), @@ -266,6 +284,44 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Check the details"), "doctor_action_view_solution": MessageLookupByLibrary.simpleMessage("View solution"), + "doctor_game_error_game_damaged_file": + MessageLookupByLibrary.simpleMessage("Game program file damage"), + "doctor_game_error_game_damaged_file_info": + MessageLookupByLibrary.simpleMessage( + "Please try to delete the Bin64 folder and check in the launcher."), + "doctor_game_error_game_damaged_p4k_file": + MessageLookupByLibrary.simpleMessage("P4K file damage"), + "doctor_game_error_game_damaged_p4k_file_info": + MessageLookupByLibrary.simpleMessage( + "Please try to delete the data.p4k file and check or use the box to divert in the promoter."), + "doctor_game_error_game_process_error": + MessageLookupByLibrary.simpleMessage( + "The game process is occupied"), + "doctor_game_error_game_process_error_info": + MessageLookupByLibrary.simpleMessage( + "Please try to restart the starter, or restart the computer directly"), + "doctor_game_error_generic_info": MessageLookupByLibrary.simpleMessage( + "The game triggers the most extensive collapse problem, please check the barrier guide guide"), + "doctor_game_error_gpu_crash": MessageLookupByLibrary.simpleMessage( + "Your graphics card crashes! Please check the barrier guide"), + "doctor_game_error_low_gpu_memory": + MessageLookupByLibrary.simpleMessage("Insufficient memory memory"), + "doctor_game_error_low_gpu_memory_info": + MessageLookupByLibrary.simpleMessage( + "Please do not run the game/application occupied by other high graphics cards in the background, or change the graphics card."), + "doctor_game_error_low_memory": + MessageLookupByLibrary.simpleMessage("Insufficient memory"), + "doctor_game_error_low_memory_info": MessageLookupByLibrary.simpleMessage( + "Please try to increase virtual memory (under 1080P, physical available+virtual memory need> 64g)"), + "doctor_game_error_permissions_error": + MessageLookupByLibrary.simpleMessage("Insufficient permissions"), + "doctor_game_error_permissions_error_info": + MessageLookupByLibrary.simpleMessage( + "Please try to run a starter at the administrator authority, or use the box (Microsoft Store version) to start."), + "doctor_game_error_socket_error": MessageLookupByLibrary.simpleMessage( + "Detected SOCKET abnormalities"), + "doctor_game_error_socket_error_info": MessageLookupByLibrary.simpleMessage( + "If you use the X black box accelerator, try to replace the acceleration mode"), "doctor_info_action_fix": MessageLookupByLibrary.simpleMessage("Repair"), "doctor_info_game_rescue_service_note": @@ -275,21 +331,21 @@ class MessageLookup extends MessageLookupByLibrary { "Need help? Click to seek free artificial support!"), "doctor_info_processing": MessageLookupByLibrary.simpleMessage("Treatment ..."), - "doctor_info_result_add_registry_value": m10, + "doctor_info_result_add_registry_value": m12, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage( "No-English installation path!"), - "doctor_info_result_chinese_install_path_error": m11, + "doctor_info_result_chinese_install_path_error": m13, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage("No-English username!"), "doctor_info_result_chinese_username_error": MessageLookupByLibrary.simpleMessage( "The No-English username may cause the game to start/install errors! Click the repair button to view the modification tutorial!"), - "doctor_info_result_create_live_folder": m12, + "doctor_info_result_create_live_folder": m14, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage( "Easyanticheat is not installed or not withdrawn normally"), - "doctor_info_result_fix_suggestion": m13, + "doctor_info_result_fix_suggestion": m15, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "The new NVME device is not compatible with the RSI starter for the time being, which may cause the installation to fail"), @@ -298,7 +354,7 @@ class MessageLookup extends MessageLookupByLibrary { "Easyanticheat is not installed, please click to repair it for you one click. (Before the game starts normally and ends, the problem will always appear. If you retreat for other reasons, you can ignore this entry)"), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("Paralying memory is too low"), - "doctor_info_result_memory_requirement": m14, + "doctor_info_result_memory_requirement": m16, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("Easyanticheat file loss"), "doctor_info_result_missing_live_folder": @@ -308,7 +364,7 @@ class MessageLookup extends MessageLookupByLibrary { "No solution, please take screenshots feedback"), "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage( "The operating system that does not support, the game may not be able to run"), - "doctor_info_result_upgrade_system": m15, + "doctor_info_result_upgrade_system": m17, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "Not found the EasyAnticheat file or file incomplete in the Live folder, please use the RSI starter to check the file"), @@ -320,7 +376,7 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_tip_title_select_game_directory": MessageLookupByLibrary.simpleMessage( "Please select the game installation directory on the homepage."), - "doctor_title_one_click_diagnosis": m16, + "doctor_title_one_click_diagnosis": m18, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage("Cancel all of them"), "downloader_action_cancel_download": @@ -350,9 +406,9 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_info_download_unit_input_prompt": MessageLookupByLibrary.simpleMessage( "Please enter the download unit."), - "downloader_info_download_upload_speed": m17, - "downloader_info_downloaded": m18, - "downloader_info_downloading": m19, + "downloader_info_download_upload_speed": m19, + "downloader_info_downloaded": m20, + "downloader_info_downloading": m21, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage("Downloading..."), "downloader_info_manual_file_deletion_note": @@ -364,10 +420,10 @@ class MessageLookup extends MessageLookupByLibrary { "The SCToolBox uses the P2P network to accelerate file download. If you have limited traffic, you can set the upload bandwidth to 1 (byte) here."), "downloader_info_paused": MessageLookupByLibrary.simpleMessage("Paused"), - "downloader_info_status": m20, - "downloader_info_total_size": m21, - "downloader_info_uploaded": m22, - "downloader_info_verifying": m23, + "downloader_info_status": m22, + "downloader_info_total_size": m23, + "downloader_info_uploaded": m24, + "downloader_info_verifying": m25, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("Waiting"), "downloader_input_download_speed_limit": @@ -387,7 +443,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("DPS calculator Localization"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("External browser expansion:"), - "home_action_info_abnormal_game_exit": m24, + "home_action_info_abnormal_game_exit": m26, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage( "Please check the pop -up web link to get detailed information."), "home_action_info_engine_config_optimization": @@ -395,7 +451,7 @@ class MessageLookup extends MessageLookupByLibrary { "Adjust the engine configuration file to optimize the game performance"), "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage("Built -in game"), - "home_action_info_initialization_failed": m25, + "home_action_info_initialization_failed": m27, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage( "It is initialized Localization resources ..."), @@ -414,7 +470,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_action_info_roberts_space_industries_origin": MessageLookupByLibrary.simpleMessage( "Roberts Aerospace Industry Corporation, the origin of all things"), - "home_action_info_scan_complete_valid_directories_found": m26, + "home_action_info_scan_complete_valid_directories_found": m28, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage("Scanning ..."), "home_action_info_ship_upgrade_damage_value_query": @@ -434,7 +490,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Install Microsoft Store Version"), "home_action_localization_management": - MessageLookupByLibrary.simpleMessage("Localization management"), + MessageLookupByLibrary.simpleMessage("Localizations"), "home_action_login_rsi_account": MessageLookupByLibrary.simpleMessage("Log in to RSI account"), "home_action_one_click_diagnosis": @@ -469,8 +525,11 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Announcement details"), "home_holiday_countdown": MessageLookupByLibrary.simpleMessage("Countdown"), + "home_holiday_countdown_days": m29, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* The above festival date is included in artificially and maintained. There may be errors. Welcome to feedback!"), + "home_holiday_countdown_in_progress": + MessageLookupByLibrary.simpleMessage("In progress"), "home_info_account_security_warning": MessageLookupByLibrary.simpleMessage( "In order to ensure the security of the account, the one -click startup function has been disabled in the development version, and we will provide this feature in the Microsoft store version.\n\nThe Microsoft Store Edition is provided with a reliable distribution download and digital signature by Microsoft, which can effectively prevent software from being maliciously tampered with.\n\nTip: You can use Localization without using a box to start the game."), "home_info_auto_fill_notice": MessageLookupByLibrary.simpleMessage( @@ -486,7 +545,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_localization_new_version_available": MessageLookupByLibrary.simpleMessage( "Sinicization has a new version!"), - "home_localization_new_version_installed": m27, + "home_localization_new_version_installed": m30, "home_login_action_title_box_one_click_launch": MessageLookupByLibrary.simpleMessage("Box one -click start"), "home_login_action_title_need_webview2_runtime": @@ -505,7 +564,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_login_info_password_encryption_notice": MessageLookupByLibrary.simpleMessage( "The box will use the PIN and Windows credentials to save your password encryption, and the password is only stored in your device.\n\nWhen you need to enter a password for the next login, you only need to authorize PIN to automatically fill in the login."), - "home_login_info_rsi_server_report": m28, + "home_login_info_rsi_server_report": m31, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage( "I\'m starting the game for you ..."), "home_login_title_welcome_back": @@ -530,13 +589,13 @@ class MessageLookup extends MessageLookupByLibrary { "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage( "Uninstallation of Localization"), - "localization_info_channel": m29, + "localization_info_channel": m32, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("Community Localization"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage( "The file is damaged, please download again"), - "localization_info_custom_file": m30, + "localization_info_custom_file": m33, "localization_info_custom_file_instructions": MessageLookupByLibrary.simpleMessage( "To open the localized folder, put the customized name .ini file in the Customize_ini folder.\n\nAfter adding a new file, you do not display the refresh button in the upper right corner.\n\nPlease make sure to choose the correct language during installation."), @@ -544,14 +603,14 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Custom file"), "localization_info_custom_text": MessageLookupByLibrary.simpleMessage("Custom text"), - "localization_info_enabled": m31, + "localization_info_enabled": m34, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "User.cfg contains incompatible Localization parameters, which may be the residual information of the previous Localization file.\n\nThis may lead to ineffective or garbled Localization, click to confirm that you are removed with one click (it will not affect other configuration)."), - "localization_info_installation_error": m32, + "localization_info_installation_error": m35, "localization_info_installed": MessageLookupByLibrary.simpleMessage("Installed"), - "localization_info_installed_version": m33, + "localization_info_installed_version": m36, "localization_info_language": MessageLookupByLibrary.simpleMessage("Language:"), "localization_info_machine_translation_warning": @@ -571,8 +630,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("State"), "localization_info_unavailable": MessageLookupByLibrary.simpleMessage("Unavailable"), - "localization_info_update_time": m34, - "localization_info_version_number": m35, + "localization_info_update_time": m37, + "localization_info_version_number": m38, "performance_action_apply": MessageLookupByLibrary.simpleMessage("Application"), "performance_action_apply_and_clear_shaders": @@ -598,7 +657,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Super"), "performance_info_applied": MessageLookupByLibrary.simpleMessage("Applied"), - "performance_info_current_status": m36, + "performance_info_current_status": m39, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage( "Delete the configuration file ..."), @@ -613,7 +672,7 @@ class MessageLookup extends MessageLookupByLibrary { "This function is very helpful for optimizing the bottleneck of the graphics card, but it may have a reverse effect on the CPU bottleneck. If your graphics card performance is strong, you can try to use better picture quality to obtain higher graphics card utilization."), "performance_info_graphics": MessageLookupByLibrary.simpleMessage("Graphic"), - "performance_info_min_max_values": m37, + "performance_info_min_max_values": m40, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage("Unused"), "performance_info_shader_clearing_warning": @@ -622,7 +681,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_info_write_out_config_file": MessageLookupByLibrary.simpleMessage( "Write the configuration file"), - "performance_title_performance_optimization": m38, + "performance_title_performance_optimization": m41, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage( "Clean up the Localization file cache"), @@ -637,7 +696,7 @@ class MessageLookup extends MessageLookupByLibrary { "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage( "Automatic filling data has been cleaned up"), - "setting_action_info_cache_clearing_info": m39, + "setting_action_info_cache_clearing_info": m42, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage( "This will not affect the installed Localization."), @@ -652,7 +711,7 @@ class MessageLookup extends MessageLookupByLibrary { "setting_action_info_delete_local_account_warning": MessageLookupByLibrary.simpleMessage( "This will delete local account records, or it will automatically fill in the next time the game starts the game to disable automatic filling."), - "setting_action_info_device_support_info": m40, + "setting_action_info_device_support_info": m43, "setting_action_info_disabled": MessageLookupByLibrary.simpleMessage("Disabled"), "setting_action_info_enabled": @@ -698,7 +757,7 @@ class MessageLookup extends MessageLookupByLibrary { "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage( "Reset automatic password filling"), - "setting_action_set_core_count": m41, + "setting_action_set_core_count": m44, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage( "Set the game file (StarCitizen.exe)"), "setting_action_set_launcher_file": @@ -709,6 +768,13 @@ class MessageLookup extends MessageLookupByLibrary { "Tool station access acceleration"), "setting_action_view_log": MessageLookupByLibrary.simpleMessage("View log"), + "settings_app_language": + MessageLookupByLibrary.simpleMessage("Language"), + "settings_app_language_auto": + MessageLookupByLibrary.simpleMessage("Automatic"), + "settings_app_language_switch_info": + MessageLookupByLibrary.simpleMessage( + "Switch application Display language"), "tools_action_clear_shader_cache": MessageLookupByLibrary.simpleMessage( "Clean up the color device cache"), "tools_action_close_photography_mode": @@ -719,13 +785,13 @@ class MessageLookup extends MessageLookupByLibrary { "Hosts acceleration (experimental)"), "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage( "After cleaning up, complete the installation / game startup operation once."), - "tools_action_info_cleanup_failed": m42, + "tools_action_info_cleanup_failed": m45, "tools_action_info_config_file_not_exist": MessageLookupByLibrary.simpleMessage( "The configuration file does not exist, please try to run the game once"), "tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage( "Remove the EAC file for you, and then open the RSI startup for you. Please go to Settings-> Verify to reinstall EAC."), - "tools_action_info_error_occurred": m43, + "tools_action_info_error_occurred": m46, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "If the repair is successful, please try to restart the computer and continue to install the game! If the registry modification operation causes compatibility problems with other software, please use the NVMe registry in the tool to clean up."), @@ -735,7 +801,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_hosts_acceleration_experimental_tip": MessageLookupByLibrary.simpleMessage( "Write the IP information into the hosts file to solve problems such as DNS pollution in some regions that cannot log in to the official website.\nThis function is undergoing the first stage of testing. Please report it in time when you encounter problems."), - "tools_action_info_init_failed": m44, + "tools_action_info_init_failed": m47, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "The log file does not exist, please try to start a game startup or game installation, and exit the starter. If the problem cannot be solved, try to update the launcher to the latest version!"), @@ -746,7 +812,7 @@ class MessageLookup extends MessageLookupByLibrary { "Manually write the NVM patch, this function is used only when you know what you do"), "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage("Not Installed"), - "tools_action_info_nvme_patch_issue": m45, + "tools_action_info_nvme_patch_issue": m48, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "Close the game endoscope shaking to facilitate photography operations.\n\n @Lapernum offers parameter information."), @@ -770,7 +836,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_rsi_launcher_directory_not_found": MessageLookupByLibrary.simpleMessage( "If the RSI starter directory is not found, please try manually."), - "tools_action_info_rsi_launcher_log_issue": m46, + "tools_action_info_rsi_launcher_log_issue": m49, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage( "If the RSI label is not found, try to reinstall it or add it manually in the settings."), @@ -779,11 +845,11 @@ class MessageLookup extends MessageLookupByLibrary { "The RSI starter is running! Please turn off the label first and then use this feature!"), "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "Run RSI startups as an administrator may solve some problems.\n\nIf the energy efficiency core shielding parameters are set, it will also be applied here."), - "tools_action_info_shader_cache_issue": m47, + "tools_action_info_shader_cache_issue": m50, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "If the interstellar game installation location is not found, please complete the game startup operation at least once or add it manually in the settings."), - "tools_action_info_system_info_content": m48, + "tools_action_info_system_info_content": m51, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage("System message"), "tools_action_info_valid_game_directory_needed": @@ -840,7 +906,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("I am writing Hosts ..."), "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage("Game installation location:"), - "tools_info_processing_failed": m49, + "tools_info_processing_failed": m52, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage("RSI starter position:"), "tools_info_scanning": diff --git a/lib/generated/intl/messages_zh_CN.dart b/lib/generated/intl/messages_zh_CN.dart index 19d8124..d2b7de8 100644 --- a/lib/generated/intl/messages_zh_CN.dart +++ b/lib/generated/intl/messages_zh_CN.dart @@ -20,114 +20,121 @@ typedef String MessageIfAbsent(String messageStr, List args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'zh_CN'; - static String m0(v0, v1) => "SC汉化盒子 V${v0} ${v1}"; + static String m0(v0) => "出现错误: ${v0}"; - static String m1(v0) => "初始化失败:${v0}"; + static String m1(v0, v1) => + "网络异常!\n这可能是您的网络环境存在DNS污染,请尝试更换DNS。\n或服务器正在维护或遭受攻击,稍后再试。 \n进入离线模式... \n\n请谨慎在离线模式中使用。 \n当前版本构建日期:${v0}\n QQ群:940696487 \n错误信息:${v1}"; - static String m2(v0) => "正在下载: ${v0}% "; + static String m2(v0, v1) => "SC汉化盒子 V${v0} ${v1}"; - static String m3(v0) => "发现新版本 -> ${v0}"; + static String m3(v0) => "初始化失败:${v0}"; - static String m4(v0) => "游戏异常退出:${v0}"; + static String m4(v0) => "正在下载: ${v0}% "; - static String m5(v0) => "info:${v0},请点击右下角加群反馈。"; + static String m5(v0) => "发现新版本 -> ${v0}"; - static String m6(v0) => "分析完毕,发现 ${v0} 个问题"; + static String m6(v0) => "游戏异常退出:${v0}"; - static String m7(v0, v1) => "创建文件夹失败,请尝试手动创建。\n目录:${v0} \n错误:${v1}"; + static String m7(v0) => "info:${v0},请点击右下角加群反馈。"; - static String m8(v0) => "修复失败,${v0}"; + static String m8(v0) => "分析完毕,发现 ${v0} 个问题"; - static String m9(v0) => "不支持的操作系统:${v0}"; + static String m9(v0, v1) => "创建文件夹失败,请尝试手动创建。\n目录:${v0} \n错误:${v1}"; - static String m10(v0) => + static String m10(v0) => "修复失败,${v0}"; + + static String m11(v0) => "不支持的操作系统:${v0}"; + + static String m12(v0) => "为注册表项添加 ForcedPhysicalSectorSizeInBytes 值 模拟旧设备。硬盘分区(${v0})"; - static String m11(V0) => "中文安装路径!这可能会导致游戏 启动/安装 错误!(${V0}),请在RSI启动器更换安装路径。"; + static String m13(v0) => "中文安装路径!这可能会导致游戏 启动/安装 错误!(${v0}),请在RSI启动器更换安装路径。"; - static String m12(v0) => "点击修复为您创建 LIVE 文件夹,完成后重试安装。(${v0})"; + static String m14(v0) => "点击修复为您创建 LIVE 文件夹,完成后重试安装。(${v0})"; - static String m13(v0) => "修复建议: ${v0}"; + static String m15(v0) => "修复建议: ${v0}"; - static String m14(v0) => "您至少需要 16GB 的物理内存(Memory)才可运行此游戏。(当前大小:${v0})"; + static String m16(v0) => "您至少需要 16GB 的物理内存(Memory)才可运行此游戏。(当前大小:${v0})"; - static String m15(v0) => "请升级您的系统 (${v0})"; + static String m17(v0) => "请升级您的系统 (${v0})"; - static String m16(v0) => "一键诊断 -> ${v0}"; + static String m18(v0) => "一键诊断 -> ${v0}"; - static String m17(v0, v1) => "下载: ${v0}/s 上传:${v1}/s"; + static String m19(v0, v1) => "下载: ${v0}/s 上传:${v1}/s"; - static String m18(v0) => "已下载:${v0}"; + static String m20(v0) => "已下载:${v0}"; - static String m19(v0) => "下载中... (${v0}%)"; + static String m21(v0) => "下载中... (${v0}%)"; - static String m20(v0) => "状态:${v0}"; + static String m22(v0) => "状态:${v0}"; - static String m21(v1) => "总大小:${v1}"; + static String m23(v1) => "总大小:${v1}"; - static String m22(v0) => "已上传:${v0}"; + static String m24(v0) => "已上传:${v0}"; - static String m23(v2) => "校验中...(${v2})"; + static String m25(v2) => "校验中...(${v2})"; - static String m24(v0, v1, v2, v3, v4) => + static String m26(v0, v1, v2, v3, v4) => "游戏非正常退出\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\n诊断信息:${v3} \n${v4}"; - static String m25(v0) => "初始化网页汉化资源失败!${v0}"; + static String m27(v0) => "初始化网页汉化资源失败!${v0}"; - static String m26(v0) => "扫描完毕,共找到 ${v0} 个有效安装目录"; + static String m28(v0) => "扫描完毕,共找到 ${v0} 个有效安装目录"; - static String m27(v0) => "您在 ${v0} 安装的汉化有新版本啦!"; + static String m29(v0) => "${v0}天 "; - static String m28(v1, v2) => + static String m30(v0) => "您在 ${v0} 安装的汉化有新版本啦!"; + + static String m31(v1, v2) => "RSI 服务器报告版本号:${v1} \n\n本地版本号:${v2} \n\n建议使用 RSI Launcher 更新游戏!"; - static String m29(v0) => "通道:${v0}"; + static String m32(v0) => "通道:${v0}"; - static String m30(v0) => "自定义_${v0}"; + static String m33(v0) => "自定义_${v0}"; - static String m31(v0) => "启用(${v0}):"; + static String m34(v0) => "启用(${v0}):"; - static String m32(v0) => "安装出错!\n\n ${v0}"; + static String m35(v0) => "安装出错!\n\n ${v0}"; - static String m33(v0) => "已安装版本:${v0}"; + static String m36(v0) => "已安装版本:${v0}"; - static String m34(v0) => "更新时间:${v0}"; + static String m37(v0) => "更新时间:${v0}"; - static String m35(v0) => "版本号:${v0}"; + static String m38(v0) => "版本号:${v0}"; - static String m36(v0) => "当前状态:${v0}"; + static String m39(v0) => "当前状态:${v0}"; - static String m37(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; + static String m40(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; - static String m38(v0) => "性能优化 -> ${v0}"; + static String m41(v0) => "性能优化 -> ${v0}"; - static String m39(v0) => "缓存大小 ${v0}MB,清理盒子下载的汉化文件缓存,不会影响已安装的汉化"; + static String m42(v0) => "缓存大小 ${v0}MB,清理盒子下载的汉化文件缓存,不会影响已安装的汉化"; - static String m40(v0, v1, v2, v3) => + static String m43(v0, v1, v2, v3) => "启用:${v0} 设备支持:${v1} 邮箱:${v2} 密码:${v3}"; - static String m41(v0) => + static String m44(v0) => "已设置的核心数量:${v0} (此功能适用于首页的盒子一键启动 或 工具中的RSI启动器管理员模式,当为 0 时不启用此功能 )"; - static String m42(v0) => "清理失败,请手动移除,文件位置:${v0}"; + static String m45(v0) => "清理失败,请手动移除,文件位置:${v0}"; - static String m43(v0) => "出现错误:${v0}"; + static String m46(v0) => "出现错误:${v0}"; - static String m44(v0) => "初始化失败,请截图报告给开发者。${v0}"; + static String m47(v0) => "初始化失败,请截图报告给开发者。${v0}"; - static String m45(v0) => + static String m48(v0) => "若您使用 nvme 补丁出现问题,请运行此工具。(可能导致游戏 安装/更新 不可用。)\n\n当前补丁状态:${v0}"; - static String m46(v0) => + static String m49(v0) => "在某些情况下 RSI启动器 的 log 文件会损坏,导致无法完成问题扫描,使用此工具清理损坏的 log 文件。\n\n当前日志文件大小:${v0} MB"; - static String m47(v0) => + static String m50(v0) => "若游戏画面出现异常或版本更新后可使用本工具清理过期的着色器(当大于500M时,建议清理) \n\n缓存大小:${v0} MB"; - static String m48(v0, v1, v2, v3, v4) => + static String m51(v0, v1, v2, v3, v4) => "系统:${v0}\n\n处理器:${v1}\n\n内存大小:${v2}GB\n\n显卡信息:\n${v3}\n\n硬盘信息:\n${v4}\n\n"; - static String m49(V0) => "处理失败!:${V0}"; + static String m52(v0) => "处理失败!:${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -160,13 +167,23 @@ class MessageLookup extends MessageLookupByLibrary { "about_online_feedback": MessageLookupByLibrary.simpleMessage("在线反馈"), "action_close": MessageLookupByLibrary.simpleMessage("关闭"), "action_open_folder": MessageLookupByLibrary.simpleMessage("打开文件夹"), + "app_common_error_info": m0, + "app_common_loading_images": + MessageLookupByLibrary.simpleMessage("加载图片..."), + "app_common_network_error": m1, + "app_common_tip": MessageLookupByLibrary.simpleMessage("提示"), + "app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("取消"), + "app_common_tip_confirm": MessageLookupByLibrary.simpleMessage("确认"), + "app_common_tip_i_know": MessageLookupByLibrary.simpleMessage("我知道了"), + "app_common_upgrade_info_error": + MessageLookupByLibrary.simpleMessage("获取更新信息失败,请稍后重试。"), "app_index_menu_about": MessageLookupByLibrary.simpleMessage("关于"), "app_index_menu_home": MessageLookupByLibrary.simpleMessage("首页"), "app_index_menu_lobby": MessageLookupByLibrary.simpleMessage("大厅"), "app_index_menu_settings": MessageLookupByLibrary.simpleMessage("设置"), "app_index_menu_tools": MessageLookupByLibrary.simpleMessage("工具"), - "app_index_version_info": m0, - "app_init_failed_with_reason": m1, + "app_index_version_info": m2, + "app_init_failed_with_reason": m3, "app_language_code": MessageLookupByLibrary.simpleMessage("zh_CN"), "app_language_name": MessageLookupByLibrary.simpleMessage("简体中文"), "app_shortcut_name": @@ -182,7 +199,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("立即更新"), "app_upgrade_info_download_failed": MessageLookupByLibrary.simpleMessage("下载失败,请尝试手动安装!"), - "app_upgrade_info_downloading": m2, + "app_upgrade_info_downloading": m4, "app_upgrade_info_getting_new_version_details": MessageLookupByLibrary.simpleMessage("正在获取新版本详情..."), "app_upgrade_info_installing": @@ -192,7 +209,7 @@ class MessageLookup extends MessageLookupByLibrary { "app_upgrade_info_update_server_tip": MessageLookupByLibrary.simpleMessage( "提示:当前正在使用分流服务器进行更新,可能会出现下载速度下降,但有助于我们进行成本控制,若下载异常请点击这里跳转手动安装。"), - "app_upgrade_title_new_version_found": m3, + "app_upgrade_title_new_version_found": m5, "doctor_action_analyzing": MessageLookupByLibrary.simpleMessage("正在分析..."), "doctor_action_game_run_log": @@ -203,23 +220,23 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("正在检查:安装信息"), "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage("正在检查:运行环境"), - "doctor_action_info_game_abnormal_exit": m4, + "doctor_action_info_game_abnormal_exit": m6, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage("游戏异常退出:未知异常"), - "doctor_action_info_info_feedback": m5, - "doctor_action_result_analysis_issues_found": m6, + "doctor_action_info_info_feedback": m7, + "doctor_action_result_analysis_issues_found": m8, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage("分析完毕,没有发现问题"), - "doctor_action_result_create_folder_fail": m7, + "doctor_action_result_create_folder_fail": m9, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage("创建文件夹成功,请尝试继续下载游戏!"), - "doctor_action_result_fix_fail": m8, + "doctor_action_result_fix_fail": m10, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "修复成功,请尝试重启后继续安装游戏! 若注册表修改操作导致其他软件出现兼容问题,请使用 工具 中的 NVME 注册表清理。"), "doctor_action_result_game_start_success": MessageLookupByLibrary.simpleMessage( "修复成功,请尝试启动游戏。(若问题无法解决,请使用工具箱的 《重装 EAC》)"), - "doctor_action_result_info_unsupported_os": m9, + "doctor_action_result_info_unsupported_os": m11, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage("该问题暂不支持自动处理,请提供截图寻求帮助"), "doctor_action_result_redirect_warning": @@ -238,6 +255,42 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("查看详情"), "doctor_action_view_solution": MessageLookupByLibrary.simpleMessage("查看解决方案"), + "doctor_game_error_game_damaged_file": + MessageLookupByLibrary.simpleMessage("游戏程序文件损坏"), + "doctor_game_error_game_damaged_file_info": + MessageLookupByLibrary.simpleMessage("请尝试删除 Bin64 文件夹 并在启动器校验。"), + "doctor_game_error_game_damaged_p4k_file": + MessageLookupByLibrary.simpleMessage("P4K文件损坏"), + "doctor_game_error_game_damaged_p4k_file_info": + MessageLookupByLibrary.simpleMessage( + "请尝试删除 Data.p4k 文件 并在启动器校验 或 使用盒子分流。"), + "doctor_game_error_game_process_error": + MessageLookupByLibrary.simpleMessage("游戏进程被占用"), + "doctor_game_error_game_process_error_info": + MessageLookupByLibrary.simpleMessage("请尝试重启启动器,或直接重启电脑"), + "doctor_game_error_generic_info": + MessageLookupByLibrary.simpleMessage("游戏触发了最为广泛的崩溃问题,请查看排障指南"), + "doctor_game_error_gpu_crash": + MessageLookupByLibrary.simpleMessage("您的显卡崩溃啦!请查看排障指南"), + "doctor_game_error_low_gpu_memory": + MessageLookupByLibrary.simpleMessage("可用显存不足"), + "doctor_game_error_low_gpu_memory_info": + MessageLookupByLibrary.simpleMessage( + "请不要在后台运行其他高显卡占用的 游戏/应用,或更换显卡。"), + "doctor_game_error_low_memory": + MessageLookupByLibrary.simpleMessage("可用内存不足"), + "doctor_game_error_low_memory_info": + MessageLookupByLibrary.simpleMessage( + "请尝试增加虚拟内存( 1080p 下, 物理可用+虚拟内存需 > 64G )"), + "doctor_game_error_permissions_error": + MessageLookupByLibrary.simpleMessage("权限不足"), + "doctor_game_error_permissions_error_info": + MessageLookupByLibrary.simpleMessage( + "请尝试以管理员权限运行启动器,或使用盒子(微软商店版)启动。"), + "doctor_game_error_socket_error": + MessageLookupByLibrary.simpleMessage("检测到 socket 异常"), + "doctor_game_error_socket_error_info": + MessageLookupByLibrary.simpleMessage("如使用 X黑盒 加速器,请尝试更换加速模式"), "doctor_info_action_fix": MessageLookupByLibrary.simpleMessage("修复"), "doctor_info_game_rescue_service_note": MessageLookupByLibrary.simpleMessage( @@ -246,19 +299,19 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("需要帮助? 点击加群寻求免费人工支援!"), "doctor_info_processing": MessageLookupByLibrary.simpleMessage("正在处理..."), - "doctor_info_result_add_registry_value": m10, + "doctor_info_result_add_registry_value": m12, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage("中文安装路径!"), - "doctor_info_result_chinese_install_path_error": m11, + "doctor_info_result_chinese_install_path_error": m13, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage("中文用户名!"), "doctor_info_result_chinese_username_error": MessageLookupByLibrary.simpleMessage( "中文用户名可能会导致游戏启动/安装错误! 点击修复按钮查看修改教程!"), - "doctor_info_result_create_live_folder": m12, + "doctor_info_result_create_live_folder": m14, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 未安装 或 未正常退出"), - "doctor_info_result_fix_suggestion": m13, + "doctor_info_result_fix_suggestion": m15, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "新型 NVME 设备,与 RSI 启动器暂不兼容,可能导致安装失败"), @@ -267,7 +320,7 @@ class MessageLookup extends MessageLookupByLibrary { "EasyAntiCheat 未安装,请点击修复为您一键安装。(在游戏正常启动并结束前,该问题会一直出现,若您因为其他原因游戏闪退,可忽略此条目)"), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("物理内存过低"), - "doctor_info_result_memory_requirement": m14, + "doctor_info_result_memory_requirement": m16, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 文件丢失"), "doctor_info_result_missing_live_folder": @@ -276,7 +329,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("暂无解决方法,请截图反馈"), "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage("不支持的操作系统,游戏可能无法运行"), - "doctor_info_result_upgrade_system": m15, + "doctor_info_result_upgrade_system": m17, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "未在 LIVE 文件夹找到 EasyAntiCheat 文件 或 文件不完整,请使用 RSI 启动器校验文件"), @@ -287,7 +340,7 @@ class MessageLookup extends MessageLookupByLibrary { "注意:本工具检测结果仅供参考,若您不理解以下操作,请提供截图给有经验的玩家!"), "doctor_tip_title_select_game_directory": MessageLookupByLibrary.simpleMessage("请在首页选择游戏安装目录。"), - "doctor_title_one_click_diagnosis": m16, + "doctor_title_one_click_diagnosis": m18, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage("全部取消"), "downloader_action_cancel_download": @@ -313,9 +366,9 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_info_download_unit_input_prompt": MessageLookupByLibrary.simpleMessage( "请输入下载单位,如:1、100k、10m, 0或留空为不限速。"), - "downloader_info_download_upload_speed": m17, - "downloader_info_downloaded": m18, - "downloader_info_downloading": m19, + "downloader_info_download_upload_speed": m19, + "downloader_info_downloaded": m20, + "downloader_info_downloading": m21, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage("下载中..."), "downloader_info_manual_file_deletion_note": @@ -326,10 +379,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "SC 汉化盒子使用 p2p 网络来加速文件下载,如果您流量有限,可在此处将上传带宽设置为 1(byte)。"), "downloader_info_paused": MessageLookupByLibrary.simpleMessage("已暂停"), - "downloader_info_status": m20, - "downloader_info_total_size": m21, - "downloader_info_uploaded": m22, - "downloader_info_verifying": m23, + "downloader_info_status": m22, + "downloader_info_total_size": m23, + "downloader_info_uploaded": m24, + "downloader_info_verifying": m25, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("等待中"), "downloader_input_download_speed_limit": MessageLookupByLibrary.simpleMessage("下载限速:"), @@ -348,14 +401,14 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("DPS计算器汉化"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("外部浏览器拓展:"), - "home_action_info_abnormal_game_exit": m24, + "home_action_info_abnormal_game_exit": m26, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage("请查看弹出的网页链接获得详细信息。"), "home_action_info_engine_config_optimization": MessageLookupByLibrary.simpleMessage("调整引擎配置文件,优化游戏性能"), "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage("游戏内置"), - "home_action_info_initialization_failed": m25, + "home_action_info_initialization_failed": m27, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage("正在初始化汉化资源..."), "home_action_info_log_file_parse_fail": @@ -368,7 +421,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("快捷安装汉化资源"), "home_action_info_roberts_space_industries_origin": MessageLookupByLibrary.simpleMessage("罗伯茨航天工业公司,万物的起源"), - "home_action_info_scan_complete_valid_directories_found": m26, + "home_action_info_scan_complete_valid_directories_found": m28, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage("正在扫描 ..."), "home_action_info_ship_upgrade_damage_value_query": @@ -417,9 +470,12 @@ class MessageLookup extends MessageLookupByLibrary { "home_announcement_details": MessageLookupByLibrary.simpleMessage("公告详情"), "home_holiday_countdown": MessageLookupByLibrary.simpleMessage("节日倒计时"), + "home_holiday_countdown_days": m29, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* 以上节日日期由人工收录、维护,可能存在错误,欢迎反馈!"), + "home_holiday_countdown_in_progress": + MessageLookupByLibrary.simpleMessage("正在进行中"), "home_info_account_security_warning": MessageLookupByLibrary.simpleMessage( "为确保账户安全,一键启动功能已在开发版中禁用,我们将在微软商店版本中提供此功能。\n\n微软商店版由微软提供可靠的分发下载与数字签名,可有效防止软件被恶意篡改。\n\n提示:您无需使用盒子启动游戏也可使用汉化。"), "home_info_auto_fill_notice": MessageLookupByLibrary.simpleMessage( @@ -431,7 +487,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_install_location": MessageLookupByLibrary.simpleMessage("安装位置:"), "home_localization_new_version_available": MessageLookupByLibrary.simpleMessage("汉化有新版本!"), - "home_localization_new_version_installed": m27, + "home_localization_new_version_installed": m30, "home_login_action_title_box_one_click_launch": MessageLookupByLibrary.simpleMessage("盒子一键启动"), "home_login_action_title_need_webview2_runtime": @@ -448,7 +504,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_login_info_password_encryption_notice": MessageLookupByLibrary.simpleMessage( "盒子将使用 PIN 与 Windows 凭据加密保存您的密码,密码只存储在您的设备中。\n\n当下次登录需要输入密码时,您只需授权PIN即可自动填充登录。"), - "home_login_info_rsi_server_report": m28, + "home_login_info_rsi_server_report": m31, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage("正在为您启动游戏..."), "home_login_title_welcome_back": @@ -470,12 +526,12 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("汉化反馈"), "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage("卸载汉化"), - "localization_info_channel": m29, + "localization_info_channel": m32, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("社区汉化"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage("文件受损,请重新下载"), - "localization_info_custom_file": m30, + "localization_info_custom_file": m33, "localization_info_custom_file_instructions": MessageLookupByLibrary.simpleMessage( "即将打开本地化文件夹,请将自定义的 任意名称.ini 文件放入 Customize_ini 文件夹。\n\n添加新文件后未显示请使用右上角刷新按钮。\n\n安装时请确保选择了正确的语言。"), @@ -483,14 +539,14 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("自定义文件"), "localization_info_custom_text": MessageLookupByLibrary.simpleMessage("自定义文本"), - "localization_info_enabled": m31, + "localization_info_enabled": m34, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "USER.cfg 包含不兼容的汉化参数,这可能是以前的汉化文件的残留信息。\n\n这将可能导致汉化无效或乱码,点击确认为您一键移除(不会影响其他配置)。"), - "localization_info_installation_error": m32, + "localization_info_installation_error": m35, "localization_info_installed": MessageLookupByLibrary.simpleMessage("已安装"), - "localization_info_installed_version": m33, + "localization_info_installed_version": m36, "localization_info_language": MessageLookupByLibrary.simpleMessage("语言: "), "localization_info_machine_translation_warning": @@ -507,8 +563,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("汉化状态"), "localization_info_unavailable": MessageLookupByLibrary.simpleMessage("不可用"), - "localization_info_update_time": m34, - "localization_info_version_number": m35, + "localization_info_update_time": m37, + "localization_info_version_number": m38, "performance_action_apply": MessageLookupByLibrary.simpleMessage("应用"), "performance_action_apply_and_clear_shaders": MessageLookupByLibrary.simpleMessage("应用并清理着色器(推荐)"), @@ -528,7 +584,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage(" 恢复默认 "), "performance_action_super": MessageLookupByLibrary.simpleMessage("超级"), "performance_info_applied": MessageLookupByLibrary.simpleMessage("已应用"), - "performance_info_current_status": m36, + "performance_info_current_status": m39, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage("删除配置文件..."), "performance_info_done": MessageLookupByLibrary.simpleMessage("完成..."), @@ -540,7 +596,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "该功能对优化显卡瓶颈有很大帮助,但对 CPU 瓶颈可能起反效果,如果您显卡性能强劲,可以尝试使用更好的画质来获得更高的显卡利用率。"), "performance_info_graphics": MessageLookupByLibrary.simpleMessage("图形"), - "performance_info_min_max_values": m37, + "performance_info_min_max_values": m40, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage("未应用"), "performance_info_shader_clearing_warning": @@ -548,7 +604,7 @@ class MessageLookup extends MessageLookupByLibrary { "清理着色器后首次进入游戏可能会出现卡顿,请耐心等待游戏初始化完毕。"), "performance_info_write_out_config_file": MessageLookupByLibrary.simpleMessage("写出配置文件"), - "performance_title_performance_optimization": m38, + "performance_title_performance_optimization": m41, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage("清理汉化文件缓存"), "setting_action_create_desktop_shortcut": @@ -560,7 +616,7 @@ class MessageLookup extends MessageLookupByLibrary { "启动游戏时忽略能效核心( 适用于Intel 12th+ 处理器 )"), "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage("已清理自动填充数据"), - "setting_action_info_cache_clearing_info": m39, + "setting_action_info_cache_clearing_info": m42, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage("这不会影响已安装的汉化。"), "setting_action_info_confirm_clear_cache": @@ -572,7 +628,7 @@ class MessageLookup extends MessageLookupByLibrary { "setting_action_info_delete_local_account_warning": MessageLookupByLibrary.simpleMessage( "这将会删除本地的账号记录,或在下次启动游戏时将自动填充选择 ‘否’ 以禁用自动填充。"), - "setting_action_info_device_support_info": m40, + "setting_action_info_device_support_info": m43, "setting_action_info_disabled": MessageLookupByLibrary.simpleMessage("已禁用"), "setting_action_info_enabled": @@ -613,7 +669,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("查看汉化盒子的 log 文件,以定位盒子的 bug"), "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage("重置自动密码填充"), - "setting_action_set_core_count": m41, + "setting_action_set_core_count": m44, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage("设置游戏文件 (StarCitizen.exe)"), "setting_action_set_launcher_file": @@ -622,6 +678,11 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("工具站访问加速"), "setting_action_view_log": MessageLookupByLibrary.simpleMessage("查看log"), + "settings_app_language": MessageLookupByLibrary.simpleMessage("语言"), + "settings_app_language_auto": + MessageLookupByLibrary.simpleMessage("自动"), + "settings_app_language_switch_info": + MessageLookupByLibrary.simpleMessage("切换应用显示语言"), "tools_action_clear_shader_cache": MessageLookupByLibrary.simpleMessage("清理着色器缓存"), "tools_action_close_photography_mode": @@ -630,13 +691,13 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Hosts 加速(实验性)"), "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage("清理完毕,请完成一次安装 / 游戏启动 操作。"), - "tools_action_info_cleanup_failed": m42, + "tools_action_info_cleanup_failed": m45, "tools_action_info_config_file_not_exist": MessageLookupByLibrary.simpleMessage("配置文件不存在,请尝试运行一次游戏"), "tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage( "已为您移除 EAC 文件,接下来将为您打开 RSI 启动器,请您前往 SETTINGS -> VERIFY 重装 EAC。"), - "tools_action_info_error_occurred": m43, + "tools_action_info_error_occurred": m46, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "修复成功,请尝试重启电脑后继续安装游戏! 若注册表修改操作导致其他软件出现兼容问题,请使用 工具 中的 NVME 注册表清理。"), @@ -645,7 +706,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_hosts_acceleration_experimental_tip": MessageLookupByLibrary.simpleMessage( "将 IP 信息写入 Hosts 文件,解决部分地区的 DNS 污染导致无法登录官网等问题。\n该功能正在进行第一阶段测试,遇到问题请及时反馈。"), - "tools_action_info_init_failed": m44, + "tools_action_info_init_failed": m47, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "日志文件不存在,请尝试进行一次游戏启动或游戏安装,并退出启动器,若无法解决问题,请尝试将启动器更新至最新版本!"), @@ -657,7 +718,7 @@ class MessageLookup extends MessageLookupByLibrary { "手动写入NVM补丁,该功能仅在您知道自己在作什么的情况下使用"), "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage("未安装"), - "tools_action_info_nvme_patch_issue": m45, + "tools_action_info_nvme_patch_issue": m48, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "一键关闭游戏内镜头晃动以便于摄影操作。\n\n @拉邦那 Lapernum 提供参数信息。"), @@ -679,7 +740,7 @@ class MessageLookup extends MessageLookupByLibrary { "还原镜头摇晃效果。\n\n@拉邦那 Lapernum 提供参数信息。"), "tools_action_info_rsi_launcher_directory_not_found": MessageLookupByLibrary.simpleMessage("未找到 RSI 启动器目录,请您尝试手动操作。"), - "tools_action_info_rsi_launcher_log_issue": m46, + "tools_action_info_rsi_launcher_log_issue": m49, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage( "未找到 RSI 启动器,请尝试重新安装,或在设置中手动添加。"), @@ -688,11 +749,11 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "以管理员身份运行RSI启动器,可能会解决一些问题。\n\n若设置了能效核心屏蔽参数,也会在此应用。"), - "tools_action_info_shader_cache_issue": m47, + "tools_action_info_shader_cache_issue": m50, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "未找到星际公民游戏安装位置,请至少完成一次游戏启动操作 或在设置中手动添加。"), - "tools_action_info_system_info_content": m48, + "tools_action_info_system_info_content": m51, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage("系统信息"), "tools_action_info_valid_game_directory_needed": @@ -739,7 +800,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("正在写入 Hosts ..."), "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage("游戏安装位置: "), - "tools_info_processing_failed": m49, + "tools_info_processing_failed": m52, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage("RSI启动器位置:"), "tools_info_scanning": MessageLookupByLibrary.simpleMessage("正在扫描..."), diff --git a/lib/generated/intl/messages_zh_TW.dart b/lib/generated/intl/messages_zh_TW.dart index f9eec18..ed2f8fc 100644 --- a/lib/generated/intl/messages_zh_TW.dart +++ b/lib/generated/intl/messages_zh_TW.dart @@ -20,114 +20,121 @@ typedef String MessageIfAbsent(String messageStr, List args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'zh_TW'; - static String m0(v0, v1) => "SC漢化盒子 V${v0} ${v1}"; + static String m0(v0) => "出現錯誤: ${v0}"; - static String m1(v0) => "初始化失敗:${v0}"; + static String m1(v0, v1) => + "網絡異常!\n這可能是您的網絡環境存在DNS汙染,請嘗試更換DNS。\n或服務器正在維護或遭受攻擊,稍後再試。 \n進入離線模式... \n\n請謹慎在離線模式中使用。 \n當前版本構建日期:${v0}\n QQ群:940696487 \n錯誤信息:${v1}"; - static String m2(v0) => "正在下載: ${v0}% "; + static String m2(v0, v1) => "SC漢化盒子 V${v0} ${v1}"; - static String m3(v0) => "發現新版本 -> ${v0}"; + static String m3(v0) => "初始化失敗:${v0}"; - static String m4(v0) => "遊戲異常退出:${v0}"; + static String m4(v0) => "正在下載: ${v0}% "; - static String m5(v0) => "info:${v0},請點擊右下角加入群組反饋。"; + static String m5(v0) => "發現新版本 -> ${v0}"; - static String m6(v0) => "分析完畢,發現 ${v0} 個問題"; + static String m6(v0) => "遊戲異常退出:${v0}"; - static String m7(v0, v1) => "建立資料夾失敗,請嘗試手動建立。\n目錄:${v0} \n錯誤:${v1}"; + static String m7(v0) => "info:${v0},請點擊右下角加入群組反饋。"; - static String m8(v0) => "修復失敗,${v0}"; + static String m8(v0) => "分析完畢,發現 ${v0} 個問題"; - static String m9(v0) => "不支援的操作系統:${v0}"; + static String m9(v0, v1) => "建立資料夾失敗,請嘗試手動建立。\n目錄:${v0} \n錯誤:${v1}"; - static String m10(v0) => + static String m10(v0) => "修復失敗,${v0}"; + + static String m11(v0) => "不支援的操作系統:${v0}"; + + static String m12(v0) => "為註冊表項添加 ForcedPhysicalSectorSizeInBytes 值 模擬舊裝置。硬碟分區(${v0})"; - static String m11(V0) => "中文安裝路徑!這可能會導致遊戲 啟動/安裝 錯誤!(${V0}),請在RSI啟動器更換安裝路徑。"; + static String m13(v0) => "中文安裝路徑!這可能會導致遊戲 啟動/安裝 錯誤!(${v0}),請在RSI啟動器更換安裝路徑。"; - static String m12(v0) => "點擊修復為您建立 LIVE 文件夾,完成後重試安裝。(${v0})"; + static String m14(v0) => "點擊修復為您建立 LIVE 文件夾,完成後重試安裝。(${v0})"; - static String m13(v0) => "修復建議: ${v0}"; + static String m15(v0) => "修復建議: ${v0}"; - static String m14(v0) => "您至少需要 16GB 的物理記憶體(Memory)才可運行此遊戲。(當前大小:${v0})"; + static String m16(v0) => "您至少需要 16GB 的物理記憶體(Memory)才可運行此遊戲。(當前大小:${v0})"; - static String m15(v0) => "請更新您的系統 (${v0})"; + static String m17(v0) => "請更新您的系統 (${v0})"; - static String m16(v0) => "疑難排解 -> ${v0}"; + static String m18(v0) => "疑難排解 -> ${v0}"; - static String m17(v0, v1) => "下載: ${v0}/s 上傳:${v1}/s"; + static String m19(v0, v1) => "下載: ${v0}/s 上傳:${v1}/s"; - static String m18(v0) => "已下載:${v0}"; + static String m20(v0) => "已下載:${v0}"; - static String m19(v0) => "下載中... (${v0}%)"; + static String m21(v0) => "下載中... (${v0}%)"; - static String m20(v0) => "狀態:${v0}"; + static String m22(v0) => "狀態:${v0}"; - static String m21(v1) => "總大小:${v1}"; + static String m23(v1) => "總大小:${v1}"; - static String m22(v0) => "已上傳:${v0}"; + static String m24(v0) => "已上傳:${v0}"; - static String m23(v2) => "校驗中...(${v2})"; + static String m25(v2) => "校驗中...(${v2})"; - static String m24(v0, v1, v2, v3, v4) => + static String m26(v0, v1, v2, v3, v4) => "遊戲非正常退出\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\n診斷信息:${v3} \n${v4}"; - static String m25(v0) => "初始化網頁翻譯資源失敗!${v0}"; + static String m27(v0) => "初始化網頁翻譯資源失敗!${v0}"; - static String m26(v0) => "掃描完畢,共找到 ${v0} 個有效安裝目錄"; + static String m28(v0) => "掃描完畢,共找到 ${v0} 個有效安裝目錄"; - static String m27(v0) => "您在 ${v0} 安裝的翻譯有新版本啦!"; + static String m29(v0) => "${v0}天 "; - static String m28(v1, v2) => + static String m30(v0) => "您在 ${v0} 安裝的翻譯有新版本啦!"; + + static String m31(v1, v2) => "RSI 伺服器報告版本號:${v1} \n\n本地版本號:${v2} \n\n建議使用 RSI Launcher 更新遊戲!"; - static String m29(v0) => "通道:${v0}"; + static String m32(v0) => "通道:${v0}"; - static String m30(v0) => "自訂_${v0}"; + static String m33(v0) => "自訂_${v0}"; - static String m31(v0) => "啟用(${v0}):"; + static String m34(v0) => "啟用(${v0}):"; - static String m32(v0) => "安裝出錯!\n\n ${v0}"; + static String m35(v0) => "安裝出錯!\n\n ${v0}"; - static String m33(v0) => "已安裝版本:${v0}"; + static String m36(v0) => "已安裝版本:${v0}"; - static String m34(v0) => "更新時間:${v0}"; + static String m37(v0) => "更新時間:${v0}"; - static String m35(v0) => "版本號:${v0}"; + static String m38(v0) => "版本號:${v0}"; - static String m36(v0) => "當前狀態:${v0}"; + static String m39(v0) => "當前狀態:${v0}"; - static String m37(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; + static String m40(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; - static String m38(v0) => "性能調整 -> ${v0}"; + static String m41(v0) => "性能調整 -> ${v0}"; - static String m39(v0) => "快取大小 ${v0}MB,清除盒子下載的翻譯文件快取,不會影響已安裝的翻譯"; + static String m42(v0) => "快取大小 ${v0}MB,清除盒子下載的翻譯文件快取,不會影響已安裝的翻譯"; - static String m40(v0, v1, v2, v3) => + static String m43(v0, v1, v2, v3) => "啟用:${v0} 設備支援:${v1} 郵箱:${v2} 密碼:${v3}"; - static String m41(v0) => + static String m44(v0) => "已設置的核心數量:${v0} (此功能適用於首頁的盒子快速啟動 或 工具中的RSI啟動器管理員模式,當為 0 時不啟用此功能 )"; - static String m42(v0) => "清理失敗,請手動移除,文件位置:${v0}"; + static String m45(v0) => "清理失敗,請手動移除,文件位置:${v0}"; - static String m43(v0) => "出現錯誤:${v0}"; + static String m46(v0) => "出現錯誤:${v0}"; - static String m44(v0) => "初始化失敗,請截圖回報給開發者。${v0}"; + static String m47(v0) => "初始化失敗,請截圖回報給開發者。${v0}"; - static String m45(v0) => + static String m48(v0) => "若您使用 nvme 補丁出現問題,請執行此工具。(可能導致遊戲 安裝/更新 不可用。)\n\n當前補丁狀態:${v0}"; - static String m46(v0) => + static String m49(v0) => "在某些情況下 RSI啟動器 的 log 文件會損壞,導致無法完成問題掃描,使用此工具清除損壞的 log 文件。\n\n當前日誌文件大小:${v0} MB"; - static String m47(v0) => + static String m50(v0) => "若遊戲畫面出現異常或版本更新後可使用本工具清除過期的著色器快取(當大於500M時,建議清理) \n\n快取大小:${v0} MB"; - static String m48(v0, v1, v2, v3, v4) => + static String m51(v0, v1, v2, v3, v4) => "系統:${v0}\n\n處理器:${v1}\n\n記憶體大小:${v2}GB\n\n顯示卡資訊:\n${v3}\n\n硬碟資訊:\n${v4}\n\n"; - static String m49(V0) => "處理失敗!:${V0}"; + static String m52(v0) => "處理失敗!:${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -160,13 +167,23 @@ class MessageLookup extends MessageLookupByLibrary { "about_online_feedback": MessageLookupByLibrary.simpleMessage("線上反饋"), "action_close": MessageLookupByLibrary.simpleMessage("關閉"), "action_open_folder": MessageLookupByLibrary.simpleMessage("打開文件夾"), + "app_common_error_info": m0, + "app_common_loading_images": + MessageLookupByLibrary.simpleMessage("加載圖片..."), + "app_common_network_error": m1, + "app_common_tip": MessageLookupByLibrary.simpleMessage("提示"), + "app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("取消"), + "app_common_tip_confirm": MessageLookupByLibrary.simpleMessage("確認"), + "app_common_tip_i_know": MessageLookupByLibrary.simpleMessage("我知道了"), + "app_common_upgrade_info_error": + MessageLookupByLibrary.simpleMessage("獲取更新信息失敗,請稍後重試。"), "app_index_menu_about": MessageLookupByLibrary.simpleMessage("關於"), "app_index_menu_home": MessageLookupByLibrary.simpleMessage("首頁"), "app_index_menu_lobby": MessageLookupByLibrary.simpleMessage("大廳"), "app_index_menu_settings": MessageLookupByLibrary.simpleMessage("設定"), "app_index_menu_tools": MessageLookupByLibrary.simpleMessage("工具"), - "app_index_version_info": m0, - "app_init_failed_with_reason": m1, + "app_index_version_info": m2, + "app_init_failed_with_reason": m3, "app_language_code": MessageLookupByLibrary.simpleMessage("zh_TW"), "app_language_name": MessageLookupByLibrary.simpleMessage("繁體中文"), "app_shortcut_name": @@ -182,7 +199,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("立即更新"), "app_upgrade_info_download_failed": MessageLookupByLibrary.simpleMessage("下載失敗,請嘗試手動安裝!"), - "app_upgrade_info_downloading": m2, + "app_upgrade_info_downloading": m4, "app_upgrade_info_getting_new_version_details": MessageLookupByLibrary.simpleMessage("正在取得新版本詳情..."), "app_upgrade_info_installing": @@ -192,7 +209,7 @@ class MessageLookup extends MessageLookupByLibrary { "app_upgrade_info_update_server_tip": MessageLookupByLibrary.simpleMessage( "提示:當前正在使用分流伺服器進行更新,可能會出現下載速度下降,但有助於我們進行成本控制,若下載異常請點擊這裡跳轉手動安裝。"), - "app_upgrade_title_new_version_found": m3, + "app_upgrade_title_new_version_found": m5, "doctor_action_analyzing": MessageLookupByLibrary.simpleMessage("正在分析..."), "doctor_action_game_run_log": @@ -203,23 +220,23 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("正在檢查:安裝信息"), "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage("正在檢查:運行環境"), - "doctor_action_info_game_abnormal_exit": m4, + "doctor_action_info_game_abnormal_exit": m6, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage("遊戲異常退出:未知異常"), - "doctor_action_info_info_feedback": m5, - "doctor_action_result_analysis_issues_found": m6, + "doctor_action_info_info_feedback": m7, + "doctor_action_result_analysis_issues_found": m8, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage("分析完畢,沒有發現問題"), - "doctor_action_result_create_folder_fail": m7, + "doctor_action_result_create_folder_fail": m9, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage("建立資料夾成功,請嘗試繼續下載遊戲!"), - "doctor_action_result_fix_fail": m8, + "doctor_action_result_fix_fail": m10, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "修復成功,請嘗試重啟後繼續安裝遊戲! 若註冊表修改操作導致其他軟體出現相容性問題,請使用 工具 中的 NVME 註冊表清理。"), "doctor_action_result_game_start_success": MessageLookupByLibrary.simpleMessage( "修復成功,請嘗試啟動遊戲。(若問題無法解決,請使用工具箱的 《重裝 EAC》)"), - "doctor_action_result_info_unsupported_os": m9, + "doctor_action_result_info_unsupported_os": m11, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage("該問題暫不支援自動處理,請提供截圖尋求幫助"), "doctor_action_result_redirect_warning": @@ -238,6 +255,42 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("查看詳情"), "doctor_action_view_solution": MessageLookupByLibrary.simpleMessage("查看解決方案"), + "doctor_game_error_game_damaged_file": + MessageLookupByLibrary.simpleMessage("遊戲程序文件損壞"), + "doctor_game_error_game_damaged_file_info": + MessageLookupByLibrary.simpleMessage("請嘗試刪除 Bin64 文件夾 並在啟動器校驗。"), + "doctor_game_error_game_damaged_p4k_file": + MessageLookupByLibrary.simpleMessage("P4K文件損壞"), + "doctor_game_error_game_damaged_p4k_file_info": + MessageLookupByLibrary.simpleMessage( + "請嘗試刪除 Data.p4k 文件 並在啟動器校驗 或 使用盒子分流。"), + "doctor_game_error_game_process_error": + MessageLookupByLibrary.simpleMessage("遊戲進程被占用"), + "doctor_game_error_game_process_error_info": + MessageLookupByLibrary.simpleMessage("請嘗試重啟啟動器,或直接重啟電腦"), + "doctor_game_error_generic_info": + MessageLookupByLibrary.simpleMessage("遊戲觸發了最為廣泛的崩潰問題,請查看排障指南"), + "doctor_game_error_gpu_crash": + MessageLookupByLibrary.simpleMessage("您的顯卡崩潰啦!請查看排障指南"), + "doctor_game_error_low_gpu_memory": + MessageLookupByLibrary.simpleMessage("可用顯存不足"), + "doctor_game_error_low_gpu_memory_info": + MessageLookupByLibrary.simpleMessage( + "請不要在後台運行其他高顯卡占用的 遊戲/應用,或更換顯卡。"), + "doctor_game_error_low_memory": + MessageLookupByLibrary.simpleMessage("可用內存不足"), + "doctor_game_error_low_memory_info": + MessageLookupByLibrary.simpleMessage( + "請嘗試增加虛擬內存( 1080p 下, 物理可用+虛擬內存需 > 64G )"), + "doctor_game_error_permissions_error": + MessageLookupByLibrary.simpleMessage("權限不足"), + "doctor_game_error_permissions_error_info": + MessageLookupByLibrary.simpleMessage( + "請嘗試以管理員權限運行啟動器,或使用盒子(微軟商店版)啟動。"), + "doctor_game_error_socket_error": + MessageLookupByLibrary.simpleMessage("檢測到 socket 異常"), + "doctor_game_error_socket_error_info": + MessageLookupByLibrary.simpleMessage("如使用 X黑盒 加速器,請嘗試更換加速模式"), "doctor_info_action_fix": MessageLookupByLibrary.simpleMessage("修復"), "doctor_info_game_rescue_service_note": MessageLookupByLibrary.simpleMessage( @@ -246,19 +299,19 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("需要幫助? 點擊加入群組尋求免費人工支援!"), "doctor_info_processing": MessageLookupByLibrary.simpleMessage("正在處理..."), - "doctor_info_result_add_registry_value": m10, + "doctor_info_result_add_registry_value": m12, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage("中文安裝路徑!"), - "doctor_info_result_chinese_install_path_error": m11, + "doctor_info_result_chinese_install_path_error": m13, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage("中文用戶名!"), "doctor_info_result_chinese_username_error": MessageLookupByLibrary.simpleMessage( "中文用戶名可能會導致遊戲啟動/安裝錯誤! 點擊修復按鈕查看修改教學!"), - "doctor_info_result_create_live_folder": m12, + "doctor_info_result_create_live_folder": m14, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 未安裝 或 未正常退出"), - "doctor_info_result_fix_suggestion": m13, + "doctor_info_result_fix_suggestion": m15, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "新型 NVME 裝置,與 RSI 啟動器暫不兼容,可能導致安裝失敗"), @@ -267,7 +320,7 @@ class MessageLookup extends MessageLookupByLibrary { "EasyAntiCheat 未安裝,請點擊修復為您一鍵安裝。(在遊戲正常啟動並結束前,該問題會一直出現,若您因為其他原因遊戲閃退,可忽略此條目)"), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("物理記憶體過低"), - "doctor_info_result_memory_requirement": m14, + "doctor_info_result_memory_requirement": m16, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 文件遺失"), "doctor_info_result_missing_live_folder": @@ -276,7 +329,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("暫無解決方法,請截圖反饋"), "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage("不支援的操作系統,遊戲可能無法運行"), - "doctor_info_result_upgrade_system": m15, + "doctor_info_result_upgrade_system": m17, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "未在 LIVE 文件夾找到 EasyAntiCheat 文件 或 文件不完整,請使用 RSI 啟動器校驗文件"), @@ -287,7 +340,7 @@ class MessageLookup extends MessageLookupByLibrary { "注意:此工具檢測結果僅供參考,若您不理解以下操作,請提供截圖給有經驗的玩家!"), "doctor_tip_title_select_game_directory": MessageLookupByLibrary.simpleMessage("請在首頁選擇遊戲安裝目錄。"), - "doctor_title_one_click_diagnosis": m16, + "doctor_title_one_click_diagnosis": m18, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage("全部取消"), "downloader_action_cancel_download": @@ -313,9 +366,9 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_info_download_unit_input_prompt": MessageLookupByLibrary.simpleMessage( "請輸入下載單位,如:1、100k、10m, 0或留空為不限速。"), - "downloader_info_download_upload_speed": m17, - "downloader_info_downloaded": m18, - "downloader_info_downloading": m19, + "downloader_info_download_upload_speed": m19, + "downloader_info_downloaded": m20, + "downloader_info_downloading": m21, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage("下載中..."), "downloader_info_manual_file_deletion_note": @@ -326,10 +379,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "SC 漢化盒子使用 p2p 網路來加速文件下載,如果您流量有限,可在此處將上傳速率設置為 1(byte)。"), "downloader_info_paused": MessageLookupByLibrary.simpleMessage("已暫停"), - "downloader_info_status": m20, - "downloader_info_total_size": m21, - "downloader_info_uploaded": m22, - "downloader_info_verifying": m23, + "downloader_info_status": m22, + "downloader_info_total_size": m23, + "downloader_info_uploaded": m24, + "downloader_info_verifying": m25, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("等待中"), "downloader_input_download_speed_limit": MessageLookupByLibrary.simpleMessage("下載限制:"), @@ -348,14 +401,14 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("DPS計算器 (中文)"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("外部瀏覽器拓展:"), - "home_action_info_abnormal_game_exit": m24, + "home_action_info_abnormal_game_exit": m26, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage("請查看彈出的網頁連結獲得詳細信息。"), "home_action_info_engine_config_optimization": MessageLookupByLibrary.simpleMessage("調整引擎配置文件,改善遊戲性能"), "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage("遊戲內建"), - "home_action_info_initialization_failed": m25, + "home_action_info_initialization_failed": m27, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage("正在初始化翻譯資源..."), "home_action_info_log_file_parse_fail": @@ -368,7 +421,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("快速安裝翻譯資源"), "home_action_info_roberts_space_industries_origin": MessageLookupByLibrary.simpleMessage("羅伯茨航天工業公司,萬物的起源"), - "home_action_info_scan_complete_valid_directories_found": m26, + "home_action_info_scan_complete_valid_directories_found": m28, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage("正在掃描 ..."), "home_action_info_ship_upgrade_damage_value_query": @@ -417,9 +470,12 @@ class MessageLookup extends MessageLookupByLibrary { "home_announcement_details": MessageLookupByLibrary.simpleMessage("公告詳情"), "home_holiday_countdown": MessageLookupByLibrary.simpleMessage("節日倒計時"), + "home_holiday_countdown_days": m29, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* 以上節日日期由人工收錄、維護,可能存在錯誤,歡迎反饋!"), + "home_holiday_countdown_in_progress": + MessageLookupByLibrary.simpleMessage("正在進行中"), "home_info_account_security_warning": MessageLookupByLibrary.simpleMessage( "為確保帳戶安全,快速啟動功能已在開發版中禁用,我們將在 Microsoft Store 版本中提供此功能。\n\nMicrosoft Store 版由微軟提供可靠的分發下載與數字簽名,可有效防止軟件被惡意篡改。\n\n提示:您無需使用盒子啟動遊戲也可使用翻譯。"), "home_info_auto_fill_notice": MessageLookupByLibrary.simpleMessage( @@ -431,7 +487,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_install_location": MessageLookupByLibrary.simpleMessage("安裝位置:"), "home_localization_new_version_available": MessageLookupByLibrary.simpleMessage("翻譯有新版本!"), - "home_localization_new_version_installed": m27, + "home_localization_new_version_installed": m30, "home_login_action_title_box_one_click_launch": MessageLookupByLibrary.simpleMessage("盒子快速啟動"), "home_login_action_title_need_webview2_runtime": @@ -448,7 +504,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_login_info_password_encryption_notice": MessageLookupByLibrary.simpleMessage( "盒子將使用 PIN 與 Windows 憑據加密保存您的密碼,密碼只儲存在您的裝置中。\n\n當下次登入需要輸入密碼時,您只需授權PIN即可自動輸入登入。"), - "home_login_info_rsi_server_report": m28, + "home_login_info_rsi_server_report": m31, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage("正在為您啟動遊戲..."), "home_login_title_welcome_back": @@ -470,12 +526,12 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("翻譯反饋"), "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage("解除安裝"), - "localization_info_channel": m29, + "localization_info_channel": m32, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("社群翻譯"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage("文件受損,請重新下載"), - "localization_info_custom_file": m30, + "localization_info_custom_file": m33, "localization_info_custom_file_instructions": MessageLookupByLibrary.simpleMessage( "即將打開本地化資料夾,請將自訂的 任意名稱.ini 文件放入 Customize_ini 資料夾。\n\n新增新文件後未顯示請使用右上角刷新按鈕。\n\n安裝時請確保選擇了正確的語言。"), @@ -483,14 +539,14 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("自訂文件"), "localization_info_custom_text": MessageLookupByLibrary.simpleMessage("自訂翻譯文件"), - "localization_info_enabled": m31, + "localization_info_enabled": m34, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "USER.cfg 包含不相容的翻譯參數,這可能是以前的翻譯文件的殘留信息。\n\n這將可能導致翻譯無效或亂碼,點擊確認為您一鍵刪除(不會影響其他配置)。"), - "localization_info_installation_error": m32, + "localization_info_installation_error": m35, "localization_info_installed": MessageLookupByLibrary.simpleMessage("已安裝"), - "localization_info_installed_version": m33, + "localization_info_installed_version": m36, "localization_info_language": MessageLookupByLibrary.simpleMessage("語言: "), "localization_info_machine_translation_warning": @@ -507,8 +563,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("翻譯狀態"), "localization_info_unavailable": MessageLookupByLibrary.simpleMessage("不可用"), - "localization_info_update_time": m34, - "localization_info_version_number": m35, + "localization_info_update_time": m37, + "localization_info_version_number": m38, "performance_action_apply": MessageLookupByLibrary.simpleMessage("套用"), "performance_action_apply_and_clear_shaders": MessageLookupByLibrary.simpleMessage("套用並清除著色器快取(推薦)"), @@ -528,7 +584,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage(" 恢復預設 "), "performance_action_super": MessageLookupByLibrary.simpleMessage("超高"), "performance_info_applied": MessageLookupByLibrary.simpleMessage("已套用"), - "performance_info_current_status": m36, + "performance_info_current_status": m39, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage("刪除配置文件..."), "performance_info_done": MessageLookupByLibrary.simpleMessage("完成..."), @@ -540,7 +596,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "該功能對改善顯卡瓶頸有很大幫助,但對 CPU 瓶頸可能起反效果,如果您顯卡性能強勁,可以嘗試設定更高的畫質來獲得更高的顯卡使用率。"), "performance_info_graphics": MessageLookupByLibrary.simpleMessage("圖形"), - "performance_info_min_max_values": m37, + "performance_info_min_max_values": m40, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage("未套用"), "performance_info_shader_clearing_warning": @@ -548,7 +604,7 @@ class MessageLookup extends MessageLookupByLibrary { "清除著色器快取後首次進入遊戲可能會出現卡頓,請耐心等待遊戲初始化完畢。"), "performance_info_write_out_config_file": MessageLookupByLibrary.simpleMessage("寫出配置文件"), - "performance_title_performance_optimization": m38, + "performance_title_performance_optimization": m41, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage("清除文件快取"), "setting_action_create_desktop_shortcut": @@ -560,7 +616,7 @@ class MessageLookup extends MessageLookupByLibrary { "啟動遊戲時忽略能效核心( 適用於Intel 12th+ 處理器 )"), "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage("已清除自動輸入紀錄"), - "setting_action_info_cache_clearing_info": m39, + "setting_action_info_cache_clearing_info": m42, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage("這不會影響已安裝的翻譯。"), "setting_action_info_confirm_clear_cache": @@ -572,7 +628,7 @@ class MessageLookup extends MessageLookupByLibrary { "setting_action_info_delete_local_account_warning": MessageLookupByLibrary.simpleMessage( "這將會刪除本地的帳號記錄,或在下次啟動遊戲時將自動輸入選擇 ‘否’ 以停用自動輸入。"), - "setting_action_info_device_support_info": m40, + "setting_action_info_device_support_info": m43, "setting_action_info_disabled": MessageLookupByLibrary.simpleMessage("已停用"), "setting_action_info_enabled": @@ -612,7 +668,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("查看漢化盒子的 log 文件,用於定位盒子的 Bug"), "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage("重置自動密碼輸入"), - "setting_action_set_core_count": m41, + "setting_action_set_core_count": m44, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage("更改遊戲文件 (StarCitizen.exe)"), "setting_action_set_launcher_file": @@ -621,6 +677,11 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("網站加速"), "setting_action_view_log": MessageLookupByLibrary.simpleMessage("查看log"), + "settings_app_language": MessageLookupByLibrary.simpleMessage("語言"), + "settings_app_language_auto": + MessageLookupByLibrary.simpleMessage("自動"), + "settings_app_language_switch_info": + MessageLookupByLibrary.simpleMessage("切換應用顯示語言"), "tools_action_clear_shader_cache": MessageLookupByLibrary.simpleMessage("清除著色器快取"), "tools_action_close_photography_mode": @@ -629,12 +690,12 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Hosts 加速(實驗性)"), "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage("清理完畢,請完成一次安裝 / 遊戲啟動 操作。"), - "tools_action_info_cleanup_failed": m42, + "tools_action_info_cleanup_failed": m45, "tools_action_info_config_file_not_exist": MessageLookupByLibrary.simpleMessage("配置文件不存在,請嘗試運行一次遊戲"), "tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage( "已為您移除 EAC 文件,接下來將為您打開 RSI 啟動器,請您前往 SETTINGS -> VERIFY 重新安裝 EAC。"), - "tools_action_info_error_occurred": m43, + "tools_action_info_error_occurred": m46, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "修復成功,請嘗試重啟電腦後繼續安裝遊戲! 若註冊表修改操作導致其他軟體出現相容問題,請使用 工具 中的 NVME 註冊表清理。"), @@ -643,7 +704,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_hosts_acceleration_experimental_tip": MessageLookupByLibrary.simpleMessage( "將 IP 信息寫入 Hosts 文件,解決部分地區的 DNS 汙染導致無法登錄官網等問題。\n該功能正在進行第一階段測試,遇到問題請及時反饋。"), - "tools_action_info_init_failed": m44, + "tools_action_info_init_failed": m47, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "日誌文件不存在,請嘗試進行一次遊戲啟動或遊戲安裝,並退出啟動器,若無法解決問題,請嘗試將啟動器更新至最新版本!"), @@ -655,7 +716,7 @@ class MessageLookup extends MessageLookupByLibrary { "手動寫入NVM補丁,該功能僅在您知道自己在做什麼的情況下使用"), "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage("未安裝"), - "tools_action_info_nvme_patch_issue": m45, + "tools_action_info_nvme_patch_issue": m48, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "一鍵關閉遊戲內鏡頭晃動以便於攝影操作。\n\n @拉邦那 Lapernum 提供參數信息。"), @@ -677,7 +738,7 @@ class MessageLookup extends MessageLookupByLibrary { "還原鏡頭搖晃效果。\n\n@拉邦那 Lapernum 提供參數信息。"), "tools_action_info_rsi_launcher_directory_not_found": MessageLookupByLibrary.simpleMessage("未找到 RSI 啟動器目錄,請您嘗試手動操作。"), - "tools_action_info_rsi_launcher_log_issue": m46, + "tools_action_info_rsi_launcher_log_issue": m49, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage( "未找到 RSI 啟動器,請嘗試重新安裝,或在設置中手動添加。"), @@ -686,11 +747,11 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "以管理員身份執行RSI啟動器,可能會解決一些問題。\n\n若設置了能效核心忽略參數,也會在此套用。"), - "tools_action_info_shader_cache_issue": m47, + "tools_action_info_shader_cache_issue": m50, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "未找到星際公民遊戲安裝位置,請至少完成一次遊戲啟動操作 或在設置中手動新增。"), - "tools_action_info_system_info_content": m48, + "tools_action_info_system_info_content": m51, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage("系統資訊"), "tools_action_info_valid_game_directory_needed": @@ -737,7 +798,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("正在寫入 Hosts ..."), "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage("遊戲安裝位置: "), - "tools_info_processing_failed": m49, + "tools_info_processing_failed": m52, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage("RSI啟動器位置:"), "tools_info_scanning": MessageLookupByLibrary.simpleMessage("正在掃描..."), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 8a846da..4be5482 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -970,13 +970,13 @@ class S { ); } - /// `No-English installation path! This may cause the game to start/install errors! ({V0}), please replace the installation path at the RSI starter.` - String doctor_info_result_chinese_install_path_error(Object V0) { + /// `No-English installation path! This may cause the game to start/install errors! ({v0}), please replace the installation path at the RSI starter.` + String doctor_info_result_chinese_install_path_error(Object v0) { return Intl.message( - 'No-English installation path! This may cause the game to start/install errors! ($V0), please replace the installation path at the RSI starter.', + 'No-English installation path! This may cause the game to start/install errors! ($v0), please replace the installation path at the RSI starter.', name: 'doctor_info_result_chinese_install_path_error', desc: '', - args: [V0], + args: [v0], ); } @@ -1370,10 +1370,10 @@ class S { ); } - /// `Localization management` + /// `Localizations` String get home_action_localization_management { return Intl.message( - 'Localization management', + 'Localizations', name: 'home_action_localization_management', desc: '', args: [], @@ -2872,13 +2872,13 @@ class S { ); } - /// `Failure to handle! : {V0}` - String tools_info_processing_failed(Object V0) { + /// `Failure to handle! : {v0}` + String tools_info_processing_failed(Object v0) { return Intl.message( - 'Failure to handle! : $V0', + 'Failure to handle! : $v0', name: 'tools_info_processing_failed', desc: '', - args: [V0], + args: [v0], ); } @@ -3402,6 +3402,296 @@ class S { args: [], ); } + + /// `Language` + String get settings_app_language { + return Intl.message( + 'Language', + name: 'settings_app_language', + desc: '', + args: [], + ); + } + + /// `Automatic` + String get settings_app_language_auto { + return Intl.message( + 'Automatic', + name: 'settings_app_language_auto', + desc: '', + args: [], + ); + } + + /// `Network anomaly!\nThis may be that your network environment has DNS pollution, please try to replace DNS.\nOr the server is being maintained or attacked and tried it later.\nEnter the offline mode ...\n\nPlease use it carefully in the offline mode.\nThe current version of the construction date: {v0}\n QQ group: 940696487\nError message: {v1}` + String app_common_network_error(Object v0, Object v1) { + return Intl.message( + 'Network anomaly!\nThis may be that your network environment has DNS pollution, please try to replace DNS.\nOr the server is being maintained or attacked and tried it later.\nEnter the offline mode ...\n\nPlease use it carefully in the offline mode.\nThe current version of the construction date: $v0\n QQ group: 940696487\nError message: $v1', + name: 'app_common_network_error', + desc: '', + args: [v0, v1], + ); + } + + /// `If the update information fails, please try it later.` + String get app_common_upgrade_info_error { + return Intl.message( + 'If the update information fails, please try it later.', + name: 'app_common_upgrade_info_error', + desc: '', + args: [], + ); + } + + /// `Insufficient memory` + String get doctor_game_error_low_memory { + return Intl.message( + 'Insufficient memory', + name: 'doctor_game_error_low_memory', + desc: '', + args: [], + ); + } + + /// `Please try to increase virtual memory (under 1080P, physical available+virtual memory need> 64g)` + String get doctor_game_error_low_memory_info { + return Intl.message( + 'Please try to increase virtual memory (under 1080P, physical available+virtual memory need> 64g)', + name: 'doctor_game_error_low_memory_info', + desc: '', + args: [], + ); + } + + /// `The game triggers the most extensive collapse problem, please check the barrier guide guide` + String get doctor_game_error_generic_info { + return Intl.message( + 'The game triggers the most extensive collapse problem, please check the barrier guide guide', + name: 'doctor_game_error_generic_info', + desc: '', + args: [], + ); + } + + /// `Your graphics card crashes! Please check the barrier guide` + String get doctor_game_error_gpu_crash { + return Intl.message( + 'Your graphics card crashes! Please check the barrier guide', + name: 'doctor_game_error_gpu_crash', + desc: '', + args: [], + ); + } + + /// `Detected SOCKET abnormalities` + String get doctor_game_error_socket_error { + return Intl.message( + 'Detected SOCKET abnormalities', + name: 'doctor_game_error_socket_error', + desc: '', + args: [], + ); + } + + /// `If you use the X black box accelerator, try to replace the acceleration mode` + String get doctor_game_error_socket_error_info { + return Intl.message( + 'If you use the X black box accelerator, try to replace the acceleration mode', + name: 'doctor_game_error_socket_error_info', + desc: '', + args: [], + ); + } + + /// `Insufficient permissions` + String get doctor_game_error_permissions_error { + return Intl.message( + 'Insufficient permissions', + name: 'doctor_game_error_permissions_error', + desc: '', + args: [], + ); + } + + /// `Please try to run a starter at the administrator authority, or use the box (Microsoft Store version) to start.` + String get doctor_game_error_permissions_error_info { + return Intl.message( + 'Please try to run a starter at the administrator authority, or use the box (Microsoft Store version) to start.', + name: 'doctor_game_error_permissions_error_info', + desc: '', + args: [], + ); + } + + /// `The game process is occupied` + String get doctor_game_error_game_process_error { + return Intl.message( + 'The game process is occupied', + name: 'doctor_game_error_game_process_error', + desc: '', + args: [], + ); + } + + /// `Please try to restart the starter, or restart the computer directly` + String get doctor_game_error_game_process_error_info { + return Intl.message( + 'Please try to restart the starter, or restart the computer directly', + name: 'doctor_game_error_game_process_error_info', + desc: '', + args: [], + ); + } + + /// `Game program file damage` + String get doctor_game_error_game_damaged_file { + return Intl.message( + 'Game program file damage', + name: 'doctor_game_error_game_damaged_file', + desc: '', + args: [], + ); + } + + /// `Please try to delete the Bin64 folder and check in the launcher.` + String get doctor_game_error_game_damaged_file_info { + return Intl.message( + 'Please try to delete the Bin64 folder and check in the launcher.', + name: 'doctor_game_error_game_damaged_file_info', + desc: '', + args: [], + ); + } + + /// `P4K file damage` + String get doctor_game_error_game_damaged_p4k_file { + return Intl.message( + 'P4K file damage', + name: 'doctor_game_error_game_damaged_p4k_file', + desc: '', + args: [], + ); + } + + /// `Please try to delete the data.p4k file and check or use the box to divert in the promoter.` + String get doctor_game_error_game_damaged_p4k_file_info { + return Intl.message( + 'Please try to delete the data.p4k file and check or use the box to divert in the promoter.', + name: 'doctor_game_error_game_damaged_p4k_file_info', + desc: '', + args: [], + ); + } + + /// `Insufficient memory memory` + String get doctor_game_error_low_gpu_memory { + return Intl.message( + 'Insufficient memory memory', + name: 'doctor_game_error_low_gpu_memory', + desc: '', + args: [], + ); + } + + /// `Please do not run the game/application occupied by other high graphics cards in the background, or change the graphics card.` + String get doctor_game_error_low_gpu_memory_info { + return Intl.message( + 'Please do not run the game/application occupied by other high graphics cards in the background, or change the graphics card.', + name: 'doctor_game_error_low_gpu_memory_info', + desc: '', + args: [], + ); + } + + /// `Error: {v0}` + String app_common_error_info(Object v0) { + return Intl.message( + 'Error: $v0', + name: 'app_common_error_info', + desc: '', + args: [v0], + ); + } + + /// `Hint` + String get app_common_tip { + return Intl.message( + 'Hint', + name: 'app_common_tip', + desc: '', + args: [], + ); + } + + /// `I see` + String get app_common_tip_i_know { + return Intl.message( + 'I see', + name: 'app_common_tip_i_know', + desc: '', + args: [], + ); + } + + /// `Confirm` + String get app_common_tip_confirm { + return Intl.message( + 'Confirm', + name: 'app_common_tip_confirm', + desc: '', + args: [], + ); + } + + /// `Cancel` + String get app_common_tip_cancel { + return Intl.message( + 'Cancel', + name: 'app_common_tip_cancel', + desc: '', + args: [], + ); + } + + /// `Switch application Display language` + String get settings_app_language_switch_info { + return Intl.message( + 'Switch application Display language', + name: 'settings_app_language_switch_info', + desc: '', + args: [], + ); + } + + /// `{v0} Day` + String home_holiday_countdown_days(Object v0) { + return Intl.message( + '$v0 Day', + name: 'home_holiday_countdown_days', + desc: '', + args: [v0], + ); + } + + /// `In progress` + String get home_holiday_countdown_in_progress { + return Intl.message( + 'In progress', + name: 'home_holiday_countdown_in_progress', + desc: '', + args: [], + ); + } + + /// `Load the picture ...` + String get app_common_loading_images { + return Intl.message( + 'Load the picture ...', + name: 'app_common_loading_images', + desc: '', + args: [], + ); + } } class AppLocalizationDelegate extends LocalizationsDelegate { diff --git a/lib/generated/no_l10n_strings.dart b/lib/generated/no_l10n_strings.dart index 584c3c1..ec28141 100644 --- a/lib/generated/no_l10n_strings.dart +++ b/lib/generated/no_l10n_strings.dart @@ -1,4 +1,5 @@ class NoL10n { static const String langZHS = '简体中文'; static const String langZHT = '繁體中文'; + static const String langEn = 'English'; } diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index e107581..97e349e 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -1,5 +1,6 @@ { "@@locale": "en", + "@auto_translate_locale": "en", "app_language_name": "English", "@app_language_name": {}, "app_language_code": "en", @@ -184,7 +185,7 @@ "@doctor_info_result_chinese_username_error": {}, "doctor_info_result_chinese_install_path": "No-English installation path!", "@doctor_info_result_chinese_install_path": {}, - "doctor_info_result_chinese_install_path_error": "No-English installation path! This may cause the game to start/install errors! ({V0}), please replace the installation path at the RSI starter.", + "doctor_info_result_chinese_install_path_error": "No-English installation path! This may cause the game to start/install errors! ({v0}), please replace the installation path at the RSI starter.", "@doctor_info_result_chinese_install_path_error": {}, "doctor_info_result_low_physical_memory": "Paralying memory is too low", "@doctor_info_result_low_physical_memory": {}, @@ -264,7 +265,7 @@ "@home_action_one_click_diagnosis": {}, "home_action_info_one_click_diagnosis_star_citizen": "Auto scan diagnosis of common problems in interstellar citizens", "@home_action_info_one_click_diagnosis_star_citizen": {}, - "home_action_localization_management": "Localization management", + "home_action_localization_management": "Localizations", "@home_action_localization_management": {}, "home_action_info_quick_install_localization_resources": "Fast installation of localization resources", "@home_action_info_quick_install_localization_resources": {}, @@ -564,7 +565,7 @@ "@tools_hosts_action_one_click_acceleration": {}, "tools_info_scanning": "Scanning...", "@tools_info_scanning": {}, - "tools_info_processing_failed": "Failure to handle! : {V0}", + "tools_info_processing_failed": "Failure to handle! : {v0}", "@tools_info_processing_failed": {}, "tools_info_game_install_location": "Game installation location:", "@tools_info_game_install_location": {}, @@ -669,5 +670,34 @@ "webview_localization_enter_device_pin": "Please enter the device PIN to automatically log in to the RSI account", "@webview_localization_enter_device_pin": {}, "webview_localization_device_windows_hello_toast": "Please complete the Windows Hello verification to fill in the password", - "@webview_localization_device_windows_hello_toast": {} -} + "@webview_localization_device_windows_hello_toast": {}, + "settings_app_language": "Language", + "settings_app_language_auto": "Automatic", + "app_common_network_error": "Network anomaly!\nThis may be that your network environment has DNS pollution, please try to replace DNS.\nOr the server is being maintained or attacked and tried it later.\nEnter the offline mode ...\n\nPlease use it carefully in the offline mode.\nThe current version of the construction date: {v0}\n QQ group: 940696487\nError message: {v1}", + "app_common_upgrade_info_error": "If the update information fails, please try it later.", + "doctor_game_error_low_memory": "Insufficient memory", + "doctor_game_error_low_memory_info": "Please try to increase virtual memory (under 1080P, physical available+virtual memory need> 64g)", + "doctor_game_error_generic_info": "The game triggers the most extensive collapse problem, please check the barrier guide guide", + "doctor_game_error_gpu_crash": "Your graphics card crashes! Please check the barrier guide", + "doctor_game_error_socket_error": "Detected SOCKET abnormalities", + "doctor_game_error_socket_error_info": "If you use the X black box accelerator, try to replace the acceleration mode", + "doctor_game_error_permissions_error": "Insufficient permissions", + "doctor_game_error_permissions_error_info": "Please try to run a starter at the administrator authority, or use the box (Microsoft Store version) to start.", + "doctor_game_error_game_process_error": "The game process is occupied", + "doctor_game_error_game_process_error_info": "Please try to restart the starter, or restart the computer directly", + "doctor_game_error_game_damaged_file": "Game program file damage", + "doctor_game_error_game_damaged_file_info": "Please try to delete the Bin64 folder and check in the launcher.", + "doctor_game_error_game_damaged_p4k_file": "P4K file damage", + "doctor_game_error_game_damaged_p4k_file_info": "Please try to delete the data.p4k file and check or use the box to divert in the promoter.", + "doctor_game_error_low_gpu_memory": "Insufficient memory memory", + "doctor_game_error_low_gpu_memory_info": "Please do not run the game/application occupied by other high graphics cards in the background, or change the graphics card.", + "app_common_error_info": "Error: {v0}", + "app_common_tip": "Hint", + "app_common_tip_i_know": "I see", + "app_common_tip_confirm": "Confirm", + "app_common_tip_cancel": "Cancel", + "settings_app_language_switch_info": "Switch application Display language", + "home_holiday_countdown_days": "{v0} Day", + "home_holiday_countdown_in_progress": "In progress", + "app_common_loading_images": "Load the picture ..." +} \ No newline at end of file diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index c8ef8df..a36b7c5 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -2,6 +2,7 @@ "@@locale": "zh_CN", "@auto_translate_locale": "zh-cn", "app_language_name": "简体中文", + "@app_language_name": {}, "app_language_code": "zh_CN", "app_index_version_info": "SC汉化盒子 V{v0} {v1}", "@app_index_version_info": {}, @@ -668,5 +669,34 @@ "webview_localization_enter_device_pin": "请输入设备PIN以自动登录RSI账户", "@webview_localization_enter_device_pin": {}, "webview_localization_device_windows_hello_toast": "请完成 Windows Hello 验证以填充密码", - "@webview_localization_device_windows_hello_toast": {} + "@webview_localization_device_windows_hello_toast": {}, + "settings_app_language": "语言", + "settings_app_language_auto": "自动", + "app_common_network_error": "网络异常!\n这可能是您的网络环境存在DNS污染,请尝试更换DNS。\n或服务器正在维护或遭受攻击,稍后再试。 \n进入离线模式... \n\n请谨慎在离线模式中使用。 \n当前版本构建日期:{v0}\n QQ群:940696487 \n错误信息:{v1}", + "app_common_upgrade_info_error": "获取更新信息失败,请稍后重试。", + "doctor_game_error_low_memory": "可用内存不足", + "doctor_game_error_low_memory_info": "请尝试增加虚拟内存( 1080p 下, 物理可用+虚拟内存需 > 64G )", + "doctor_game_error_generic_info": "游戏触发了最为广泛的崩溃问题,请查看排障指南", + "doctor_game_error_gpu_crash": "您的显卡崩溃啦!请查看排障指南", + "doctor_game_error_socket_error": "检测到 socket 异常", + "doctor_game_error_socket_error_info": "如使用 X黑盒 加速器,请尝试更换加速模式", + "doctor_game_error_permissions_error": "权限不足", + "doctor_game_error_permissions_error_info": "请尝试以管理员权限运行启动器,或使用盒子(微软商店版)启动。", + "doctor_game_error_game_process_error": "游戏进程被占用", + "doctor_game_error_game_process_error_info": "请尝试重启启动器,或直接重启电脑", + "doctor_game_error_game_damaged_file": "游戏程序文件损坏", + "doctor_game_error_game_damaged_file_info": "请尝试删除 Bin64 文件夹 并在启动器校验。", + "doctor_game_error_game_damaged_p4k_file": "P4K文件损坏", + "doctor_game_error_game_damaged_p4k_file_info": "请尝试删除 Data.p4k 文件 并在启动器校验 或 使用盒子分流。", + "doctor_game_error_low_gpu_memory": "可用显存不足", + "doctor_game_error_low_gpu_memory_info": "请不要在后台运行其他高显卡占用的 游戏/应用,或更换显卡。", + "app_common_error_info": "出现错误: {v0}", + "app_common_tip": "提示", + "app_common_tip_i_know": "我知道了", + "app_common_tip_confirm": "确认", + "app_common_tip_cancel": "取消", + "settings_app_language_switch_info": "切换应用显示语言", + "home_holiday_countdown_days": "{v0}天 ", + "home_holiday_countdown_in_progress": "正在进行中", + "app_common_loading_images": "加载图片..." } diff --git a/lib/l10n/intl_zh_TW.arb b/lib/l10n/intl_zh_TW.arb index bf5ac39..6b483c9 100644 --- a/lib/l10n/intl_zh_TW.arb +++ b/lib/l10n/intl_zh_TW.arb @@ -669,5 +669,34 @@ "webview_localization_enter_device_pin": "請輸入裝置PIN以自動登入RSI帳戶", "@webview_localization_enter_device_pin": {}, "webview_localization_device_windows_hello_toast": "請完成 Windows Hello 驗證以輸入密碼", - "@webview_localization_device_windows_hello_toast": {} + "@webview_localization_device_windows_hello_toast": {}, + "settings_app_language": "語言", + "settings_app_language_auto": "自動", + "app_common_network_error": "網絡異常!\n這可能是您的網絡環境存在DNS汙染,請嘗試更換DNS。\n或服務器正在維護或遭受攻擊,稍後再試。 \n進入離線模式... \n\n請謹慎在離線模式中使用。 \n當前版本構建日期:{v0}\n QQ群:940696487 \n錯誤信息:{v1}", + "app_common_upgrade_info_error": "獲取更新信息失敗,請稍後重試。", + "doctor_game_error_low_memory": "可用內存不足", + "doctor_game_error_low_memory_info": "請嘗試增加虛擬內存( 1080p 下, 物理可用+虛擬內存需 > 64G )", + "doctor_game_error_generic_info": "遊戲觸發了最為廣泛的崩潰問題,請查看排障指南", + "doctor_game_error_gpu_crash": "您的顯卡崩潰啦!請查看排障指南", + "doctor_game_error_socket_error": "檢測到 socket 異常", + "doctor_game_error_socket_error_info": "如使用 X黑盒 加速器,請嘗試更換加速模式", + "doctor_game_error_permissions_error": "權限不足", + "doctor_game_error_permissions_error_info": "請嘗試以管理員權限運行啟動器,或使用盒子(微軟商店版)啟動。", + "doctor_game_error_game_process_error": "遊戲進程被占用", + "doctor_game_error_game_process_error_info": "請嘗試重啟啟動器,或直接重啟電腦", + "doctor_game_error_game_damaged_file": "遊戲程序文件損壞", + "doctor_game_error_game_damaged_file_info": "請嘗試刪除 Bin64 文件夾 並在啟動器校驗。", + "doctor_game_error_game_damaged_p4k_file": "P4K文件損壞", + "doctor_game_error_game_damaged_p4k_file_info": "請嘗試刪除 Data.p4k 文件 並在啟動器校驗 或 使用盒子分流。", + "doctor_game_error_low_gpu_memory": "可用顯存不足", + "doctor_game_error_low_gpu_memory_info": "請不要在後台運行其他高顯卡占用的 遊戲/應用,或更換顯卡。", + "app_common_error_info": "出現錯誤: {v0}", + "app_common_tip": "提示", + "app_common_tip_i_know": "我知道了", + "app_common_tip_confirm": "確認", + "app_common_tip_cancel": "取消", + "settings_app_language_switch_info": "切換應用顯示語言", + "home_holiday_countdown_days": "{v0}天 ", + "home_holiday_countdown_in_progress": "正在進行中", + "app_common_loading_images": "加載圖片..." } diff --git a/lib/main.dart b/lib/main.dart index d176ee2..e023b3c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -69,6 +69,7 @@ class App extends HookConsumerWidget { borderRadius: BorderRadius.circular(4), side: BorderSide(color: Colors.white.withOpacity(.01)))), ))), + locale: appState.appLocale, debugShowCheckedModeBanner: false, routeInformationParser: router.routeInformationParser, routerDelegate: router.routerDelegate, diff --git a/lib/provider/aria2c.freezed.dart b/lib/provider/aria2c.freezed.dart index eeb7609..30fc2c5 100644 --- a/lib/provider/aria2c.freezed.dart +++ b/lib/provider/aria2c.freezed.dart @@ -151,13 +151,13 @@ class _$Aria2cModelStateImpl (identical(other.aria2cDir, aria2cDir) || other.aria2cDir == aria2cDir) && (identical(other.aria2c, aria2c) || other.aria2c == aria2c) && - (identical(other.aria2globalStat, aria2globalStat) || - other.aria2globalStat == aria2globalStat)); + const DeepCollectionEquality() + .equals(other.aria2globalStat, aria2globalStat)); } @override - int get hashCode => - Object.hash(runtimeType, aria2cDir, aria2c, aria2globalStat); + int get hashCode => Object.hash(runtimeType, aria2cDir, aria2c, + const DeepCollectionEquality().hash(aria2globalStat)); @JsonKey(ignore: true) @override diff --git a/lib/ui/about/about_ui.dart b/lib/ui/about/about_ui.dart index ea52913..58f01a2 100644 --- a/lib/ui/about/about_ui.dart +++ b/lib/ui/about/about_ui.dart @@ -38,6 +38,7 @@ class AboutUI extends HookConsumerWidget { )), const SizedBox(height: 32), Container( + margin: const EdgeInsets.all(24), decoration: BoxDecoration( color: FluentTheme.of(context).cardColor, borderRadius: BorderRadius.circular(12)), diff --git a/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart b/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart index 6686f5b..bfe5065 100644 --- a/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart +++ b/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart @@ -7,7 +7,7 @@ part of 'home_game_login_dialog_ui_model.dart'; // ************************************************************************** String _$homeGameLoginUIModelHash() => - r'bcd5fc6d85345207797dd51253b2608035e1fc36'; + r'108812122298cf826ee57ecad3e519b1dc3fd6ce'; /// See also [HomeGameLoginUIModel]. @ProviderFor(HomeGameLoginUIModel) diff --git a/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart b/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart index 392d994..d51c21f 100644 --- a/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart +++ b/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart @@ -190,8 +190,8 @@ class _$HomeDownloaderUIStateImpl implements _HomeDownloaderUIState { .equals(other._waitingTasks, _waitingTasks) && const DeepCollectionEquality() .equals(other._stoppedTasks, _stoppedTasks) && - (identical(other.globalStat, globalStat) || - other.globalStat == globalStat)); + const DeepCollectionEquality() + .equals(other.globalStat, globalStat)); } @override @@ -200,7 +200,7 @@ class _$HomeDownloaderUIStateImpl implements _HomeDownloaderUIState { const DeepCollectionEquality().hash(_tasks), const DeepCollectionEquality().hash(_waitingTasks), const DeepCollectionEquality().hash(_stoppedTasks), - globalStat); + const DeepCollectionEquality().hash(globalStat)); @JsonKey(ignore: true) @override diff --git a/lib/ui/home/downloader/home_downloader_ui_model.g.dart b/lib/ui/home/downloader/home_downloader_ui_model.g.dart index beac953..7866b14 100644 --- a/lib/ui/home/downloader/home_downloader_ui_model.g.dart +++ b/lib/ui/home/downloader/home_downloader_ui_model.g.dart @@ -7,7 +7,7 @@ part of 'home_downloader_ui_model.dart'; // ************************************************************************** String _$homeDownloaderUIModelHash() => - r'88e1c9a667672d303cb244305dc0aec89d77ffe5'; + r'ece2e6da4576b945ead5767aea2ccacf5e3e17aa'; /// See also [HomeDownloaderUIModel]. @ProviderFor(HomeDownloaderUIModel) diff --git a/lib/ui/home/game_doctor/game_doctor_ui_model.g.dart b/lib/ui/home/game_doctor/game_doctor_ui_model.g.dart index 59e1ea8..c401157 100644 --- a/lib/ui/home/game_doctor/game_doctor_ui_model.g.dart +++ b/lib/ui/home/game_doctor/game_doctor_ui_model.g.dart @@ -7,7 +7,7 @@ part of 'game_doctor_ui_model.dart'; // ************************************************************************** String _$homeGameDoctorUIModelHash() => - r'10e8103fca9565ee6363c093e1d0bf2bc9e68f41'; + r'b4132559510e3e59b1e2e330d9327ff8790df461'; /// See also [HomeGameDoctorUIModel]. @ProviderFor(HomeGameDoctorUIModel) diff --git a/lib/ui/home/home_ui_model.g.dart b/lib/ui/home/home_ui_model.g.dart index a9f4233..2f503ae 100644 --- a/lib/ui/home/home_ui_model.g.dart +++ b/lib/ui/home/home_ui_model.g.dart @@ -6,7 +6,7 @@ part of 'home_ui_model.dart'; // RiverpodGenerator // ************************************************************************** -String _$homeUIModelHash() => r'8268fab911b162f2f3f8a5a86449ea15a759569b'; +String _$homeUIModelHash() => r'b62026bb0b5ab37c0aed33e0ed018aa9732da58e'; /// See also [HomeUIModel]. @ProviderFor(HomeUIModel) diff --git a/lib/ui/home/localization/localization_dialog_ui.dart b/lib/ui/home/localization/localization_dialog_ui.dart index 947f269..fbfa660 100644 --- a/lib/ui/home/localization/localization_dialog_ui.dart +++ b/lib/ui/home/localization/localization_dialog_ui.dart @@ -424,6 +424,7 @@ class LocalizationDialogUI extends HookConsumerWidget { S.current.localization_info_language, style: const TextStyle(fontSize: 16), ), + const SizedBox(width: 12), ComboBox( value: state.selectedLanguage, items: [ diff --git a/lib/ui/home/localization/localization_ui_model.g.dart b/lib/ui/home/localization/localization_ui_model.g.dart index accced6..db4b338 100644 --- a/lib/ui/home/localization/localization_ui_model.g.dart +++ b/lib/ui/home/localization/localization_ui_model.g.dart @@ -7,7 +7,7 @@ part of 'localization_ui_model.dart'; // ************************************************************************** String _$localizationUIModelHash() => - r'33c538abcdbfd667e844d0dcb5b8b7d6264794ab'; + r'697f9e00ea08729c5debb4d87ffe9fadb5c0ec71'; /// See also [LocalizationUIModel]. @ProviderFor(LocalizationUIModel) diff --git a/lib/ui/home/performance/performance_ui_model.g.dart b/lib/ui/home/performance/performance_ui_model.g.dart index 43c5ce2..e902656 100644 --- a/lib/ui/home/performance/performance_ui_model.g.dart +++ b/lib/ui/home/performance/performance_ui_model.g.dart @@ -7,7 +7,7 @@ part of 'performance_ui_model.dart'; // ************************************************************************** String _$homePerformanceUIModelHash() => - r'0519b95b68b4bffcd940513fa800654c81da2502'; + r'6ac9c9adc428120cb5ce71949221064c9e5d9385'; /// See also [HomePerformanceUIModel]. @ProviderFor(HomePerformanceUIModel) diff --git a/lib/ui/index_ui.dart b/lib/ui/index_ui.dart index 0c5e029..eec7281 100644 --- a/lib/ui/index_ui.dart +++ b/lib/ui/index_ui.dart @@ -2,10 +2,10 @@ import 'package:fluent_ui/fluent_ui.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:starcitizen_doctor/app.dart'; import 'package:starcitizen_doctor/common/conf/const_conf.dart'; import 'package:starcitizen_doctor/provider/aria2c.dart'; import 'package:starcitizen_doctor/ui/home/home_ui_model.dart'; -import 'package:starcitizen_doctor/ui/party_room/party_room_ui.dart'; import 'package:starcitizen_doctor/ui/settings/settings_ui_model.dart'; import 'package:starcitizen_doctor/widgets/widgets.dart'; import 'package:window_manager/window_manager.dart'; @@ -23,6 +23,7 @@ class IndexUI extends HookConsumerWidget { // pre init child ref.watch(homeUIModelProvider.select((value) => null)); ref.watch(settingsUIModelProvider.select((value) => null)); + ref.watch(appGlobalModelProvider); final curIndex = useState(0); return NavigationView( @@ -73,6 +74,7 @@ class IndexUI extends HookConsumerWidget { ], )), pane: NavigationPane( + key: Key("NavigationPane_${S.current.app_language_code}"), selected: curIndex.value, items: getNavigationPaneItems(curIndex), size: NavigationPaneSize( @@ -89,7 +91,7 @@ class IndexUI extends HookConsumerWidget { Map get pageMenus => { FluentIcons.home: S.current.app_index_menu_home, - FluentIcons.game: S.current.app_index_menu_lobby, + // FluentIcons.game: S.current.app_index_menu_lobby, FluentIcons.toolbox: S.current.app_index_menu_tools, FluentIcons.settings: S.current.app_index_menu_settings, FluentIcons.info: S.current.app_index_menu_about, @@ -129,13 +131,13 @@ class IndexUI extends HookConsumerWidget { switch (value) { case 0: return const HomeUI(); + // case 1: + // return const PartyRoomUI(); case 1: - return const PartyRoomUI(); - case 2: return const ToolsUI(); - case 3: + case 2: return const SettingsUI(); - case 4: + case 3: return const AboutUI(); default: return Center( diff --git a/lib/ui/settings/settings_ui.dart b/lib/ui/settings/settings_ui.dart index d13ebf7..f44193e 100644 --- a/lib/ui/settings/settings_ui.dart +++ b/lib/ui/settings/settings_ui.dart @@ -1,6 +1,7 @@ import 'package:fluent_ui/fluent_ui.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:starcitizen_doctor/app.dart'; import 'package:starcitizen_doctor/common/conf/const_conf.dart'; import 'package:starcitizen_doctor/generated/l10n.dart'; import 'package:starcitizen_doctor/ui/settings/settings_ui_model.dart'; @@ -12,90 +13,102 @@ class SettingsUI extends HookConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final sate = ref.watch(settingsUIModelProvider); final model = ref.read(settingsUIModelProvider.notifier); - return Container( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height, - margin: const EdgeInsets.all(16), - child: Column( - children: [ - makeSettingsItem(const Icon(FluentIcons.link, size: 20), - S.current.setting_action_create_settings_shortcut, - subTitle: S.current.setting_action_create_desktop_shortcut, - onTap: () => model.addShortCut(context)), - if (ConstConf.isMSE) ...[ - const SizedBox(height: 12), - makeSettingsItem(const Icon(FluentIcons.reset_device, size: 20), - S.current.setting_action_reset_auto_password_fill, - subTitle: S.current.setting_action_info_device_support_info( - sate.isEnableAutoLogin - ? S.current.setting_action_info_enabled - : S.current.setting_action_info_disabled, - sate.isDeviceSupportWinHello - ? S.current.setting_action_info_support - : S.current.setting_action_info_not_support, - sate.autoLoginEmail, - sate.isEnableAutoLoginPwd - ? S.current.setting_action_info_encrypted_saved - : S.current.setting_action_info_not_saved), - onTap: () => model.onResetAutoLogin(context)), - ], - const SizedBox(height: 12), - makeSettingsItem(const Icon(FontAwesomeIcons.microchip, size: 20), - S.current.setting_action_ignore_efficiency_cores_on_launch, - subTitle: S.current - .setting_action_set_core_count(sate.inputGameLaunchECore), - onTap: () => model.setGameLaunchECore(context)), - const SizedBox(height: 12), - makeSettingsItem(const Icon(FluentIcons.folder_open, size: 20), - S.current.setting_action_set_launcher_file, - subTitle: sate.customLauncherPath != null - ? "${sate.customLauncherPath}" - : S.current - .setting_action_info_manual_launcher_location_setting, - onTap: () => model.setLauncherPath(context), - onDel: () { - model.delName("custom_launcher_path"); - }), - const SizedBox(height: 12), - makeSettingsItem(const Icon(FluentIcons.game, size: 20), - S.current.setting_action_set_game_file, - subTitle: sate.customGamePath != null - ? "${sate.customGamePath}" - : S.current.setting_action_info_manual_game_location_setting, - onTap: () => model.setGamePath(context), - onDel: () { - model.delName("custom_game_path"); - }), - const SizedBox(height: 12), - makeSettingsItem(const Icon(FluentIcons.delete, size: 20), - S.current.setting_action_clear_translation_file_cache, - subTitle: S.current.setting_action_info_cache_clearing_info( - (sate.locationCacheSize / 1024 / 1024).toStringAsFixed(2)), - onTap: () => model.cleanLocationCache(context)), - const SizedBox(height: 12), - makeSettingsItem(const Icon(FluentIcons.speed_high, size: 20), - S.current.setting_action_tool_site_access_acceleration, - onTap: () => - model.onChangeToolSiteMirror(!sate.isEnableToolSiteMirrors), - subTitle: S.current.setting_action_info_mirror_server_info, - onSwitch: model.onChangeToolSiteMirror, - switchStatus: sate.isEnableToolSiteMirrors), - const SizedBox(height: 12), - makeSettingsItem(const Icon(FluentIcons.document_set, size: 20), - S.current.setting_action_view_log, - onTap: () => model.showLogs(), - subTitle: S.current.setting_action_info_view_log_file), - ], + final appGlobalState = ref.watch(appGlobalModelProvider); + final appGlobalModel = ref.read(appGlobalModelProvider.notifier); + return ListView(padding: const EdgeInsets.all(16), children: [ + makeSettingsItem( + const Icon(FontAwesomeIcons.language, size: 20), + S.current.settings_app_language, + subTitle: S.current.settings_app_language_switch_info, + onTap: () {}, + onComboChanged: appGlobalModel.changeLocale, + comboMenus: AppGlobalModel.appLocaleSupport, + selectedComboValue: appGlobalState.appLocale ?? const Locale("auto"), + showGoIcon: false, ), - ); + const SizedBox(height: 12), + makeSettingsItem(const Icon(FluentIcons.link, size: 20), + S.current.setting_action_create_settings_shortcut, + subTitle: S.current.setting_action_create_desktop_shortcut, + onTap: () => model.addShortCut(context)), + if (ConstConf.isMSE) ...[ + const SizedBox(height: 12), + makeSettingsItem(const Icon(FluentIcons.reset_device, size: 20), + S.current.setting_action_reset_auto_password_fill, + subTitle: S.current.setting_action_info_device_support_info( + sate.isEnableAutoLogin + ? S.current.setting_action_info_enabled + : S.current.setting_action_info_disabled, + sate.isDeviceSupportWinHello + ? S.current.setting_action_info_support + : S.current.setting_action_info_not_support, + sate.autoLoginEmail, + sate.isEnableAutoLoginPwd + ? S.current.setting_action_info_encrypted_saved + : S.current.setting_action_info_not_saved), + onTap: () => model.onResetAutoLogin(context)), + ], + const SizedBox(height: 12), + makeSettingsItem(const Icon(FontAwesomeIcons.microchip, size: 20), + S.current.setting_action_ignore_efficiency_cores_on_launch, + subTitle: S.current + .setting_action_set_core_count(sate.inputGameLaunchECore), + onTap: () => model.setGameLaunchECore(context)), + const SizedBox(height: 12), + makeSettingsItem(const Icon(FluentIcons.folder_open, size: 20), + S.current.setting_action_set_launcher_file, + subTitle: sate.customLauncherPath != null + ? "${sate.customLauncherPath}" + : S.current.setting_action_info_manual_launcher_location_setting, + onTap: () => model.setLauncherPath(context), + onDel: () { + model.delName("custom_launcher_path"); + }), + const SizedBox(height: 12), + makeSettingsItem(const Icon(FluentIcons.game, size: 20), + S.current.setting_action_set_game_file, + subTitle: sate.customGamePath != null + ? "${sate.customGamePath}" + : S.current.setting_action_info_manual_game_location_setting, + onTap: () => model.setGamePath(context), + onDel: () { + model.delName("custom_game_path"); + }), + const SizedBox(height: 12), + makeSettingsItem(const Icon(FluentIcons.delete, size: 20), + S.current.setting_action_clear_translation_file_cache, + subTitle: S.current.setting_action_info_cache_clearing_info( + (sate.locationCacheSize / 1024 / 1024).toStringAsFixed(2)), + onTap: () => model.cleanLocationCache(context)), + const SizedBox(height: 12), + makeSettingsItem(const Icon(FluentIcons.speed_high, size: 20), + S.current.setting_action_tool_site_access_acceleration, + onTap: () => + model.onChangeToolSiteMirror(!sate.isEnableToolSiteMirrors), + subTitle: S.current.setting_action_info_mirror_server_info, + onSwitch: model.onChangeToolSiteMirror, + switchStatus: sate.isEnableToolSiteMirrors), + const SizedBox(height: 12), + makeSettingsItem(const Icon(FluentIcons.document_set, size: 20), + S.current.setting_action_view_log, + onTap: () => model.showLogs(), + subTitle: S.current.setting_action_info_view_log_file), + ]); } - Widget makeSettingsItem(Widget icon, String title, - {String? subTitle, - VoidCallback? onTap, - VoidCallback? onDel, - void Function(bool? b)? onSwitch, - bool switchStatus = false}) { + Widget makeSettingsItem( + Widget icon, + String title, { + String? subTitle, + VoidCallback? onTap, + VoidCallback? onDel, + void Function(bool? b)? onSwitch, + bool switchStatus = false, + bool showGoIcon = true, + Map comboMenus = const {}, + ValueChanged? onComboChanged, + dynamic selectedComboValue, + }) { return Button( onPressed: onTap, child: Padding( @@ -103,7 +116,7 @@ class SettingsUI extends HookConsumerWidget { child: Row( children: [ icon, - const SizedBox(width: 16), + const SizedBox(width: 18), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -116,11 +129,15 @@ class SettingsUI extends HookConsumerWidget { ), if (subTitle != null) ...[ const SizedBox(height: 3), - Text( - subTitle, - style: TextStyle( - fontSize: 12, color: Colors.white.withOpacity(.6)), - ) + Padding( + padding: const EdgeInsets.only(right: 12), + child: Text( + subTitle, + textAlign: TextAlign.start, + style: TextStyle( + fontSize: 12, color: Colors.white.withOpacity(.6)), + ), + ), ] ], ), @@ -136,11 +153,27 @@ class SettingsUI extends HookConsumerWidget { if (onSwitch != null) ...[ ToggleSwitch(checked: switchStatus, onChanged: onSwitch), ], + if (comboMenus.isNotEmpty) ...[ + SizedBox( + height: 36, + child: ComboBox( + value: selectedComboValue, + items: [ + for (final mkv in comboMenus.entries) + ComboBoxItem( + value: mkv.key, + child: Text(mkv.value), + ) + ], + onChanged: onComboChanged, + ), + ) + ], const SizedBox(width: 12), - const Icon(FluentIcons.chevron_right), + if (showGoIcon) const Icon(FluentIcons.chevron_right), ], ), ), ); } -} +} \ No newline at end of file diff --git a/lib/ui/settings/settings_ui_model.g.dart b/lib/ui/settings/settings_ui_model.g.dart index 1d06df4..84b69ea 100644 --- a/lib/ui/settings/settings_ui_model.g.dart +++ b/lib/ui/settings/settings_ui_model.g.dart @@ -6,7 +6,7 @@ part of 'settings_ui_model.dart'; // RiverpodGenerator // ************************************************************************** -String _$settingsUIModelHash() => r'de69e289c526d61a6287a9ca7bae848a4d594c20'; +String _$settingsUIModelHash() => r'acc2a90f5bbfc6ba82b17454e73881ac32b30b6a'; /// See also [SettingsUIModel]. @ProviderFor(SettingsUIModel) diff --git a/lib/ui/tools/tools_ui_model.g.dart b/lib/ui/tools/tools_ui_model.g.dart index a831fae..7778f8b 100644 --- a/lib/ui/tools/tools_ui_model.g.dart +++ b/lib/ui/tools/tools_ui_model.g.dart @@ -6,7 +6,7 @@ part of 'tools_ui_model.dart'; // RiverpodGenerator // ************************************************************************** -String _$toolsUIModelHash() => r'5568cfd422f98a1aff9b8cb9d522c84565fcc289'; +String _$toolsUIModelHash() => r'6b4ab0195cc9606202ae5d0dce574735090f486f'; /// See also [ToolsUIModel]. @ProviderFor(ToolsUIModel) diff --git a/lib/widgets/src/countdown_time_text.dart b/lib/widgets/src/countdown_time_text.dart index bf54c4b..74117d7 100644 --- a/lib/widgets/src/countdown_time_text.dart +++ b/lib/widgets/src/countdown_time_text.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:fluent_ui/fluent_ui.dart'; +import 'package:starcitizen_doctor/generated/l10n.dart'; class CountdownTimeText extends StatefulWidget { final DateTime targetTime; @@ -61,7 +62,7 @@ class _CountdownTimeTextState extends State { mainAxisSize: MainAxisSize.min, children: [ Text( - "$day天 ", + S.current.home_holiday_countdown_days(day), style: TextStyle( fontSize: 24, color: day < 30 ? Colors.red : Colors.white), ), @@ -78,9 +79,9 @@ class _CountdownTimeTextState extends State { @override Widget build(BuildContext context) { if (stopTimer) { - return const Text( - "正在进行中", - style: TextStyle( + return Text( + S.current.home_holiday_countdown_in_progress, + style: const TextStyle( fontSize: 18, color: Color.fromRGBO(32, 220, 89, 1.0), fontWeight: FontWeight.bold), diff --git a/lib/widgets/widgets.dart b/lib/widgets/widgets.dart index f4b0d08..28dde4a 100644 --- a/lib/widgets/widgets.dart +++ b/lib/widgets/widgets.dart @@ -4,6 +4,7 @@ import 'package:fluent_ui/fluent_ui.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:starcitizen_doctor/generated/l10n.dart'; import 'package:url_launcher/url_launcher_string.dart'; import 'package:window_manager/window_manager.dart'; @@ -107,16 +108,14 @@ List makeMarkdownView(String description, {String? attachmentsUrl}) { loadStateChanged: (ExtendedImageState state) { switch (state.extendedImageLoadState) { case LoadState.loading: - return const Center( + return Center( child: Padding( - padding: EdgeInsets.all(8.0), + padding: const EdgeInsets.all(8.0), child: Column( children: [ - ProgressRing(), - SizedBox( - height: 12, - ), - Text("加载图片...") + const ProgressRing(), + const SizedBox(height: 12), + Text(S.current.app_common_loading_images) ], ), ), diff --git a/packages/sct_dev_tools/bin/auto_l10n.dart b/packages/sct_dev_tools/bin/auto_l10n.dart index be5df45..ca75249 100644 --- a/packages/sct_dev_tools/bin/auto_l10n.dart +++ b/packages/sct_dev_tools/bin/auto_l10n.dart @@ -10,9 +10,19 @@ import 'package:uuid/v4.dart'; final stringResult = []; class AutoL10nTools { + final skipPaths = ["lib/generated"]; + void genL10nFiles() { - final dir = Directory('lib/ui'); + final dir = Directory('lib/'); for (var entity in dir.listSync(recursive: true)) { + bool shouldSkip = false; + for (var path in skipPaths) { + if (entity.path.replaceAll("\\", "/").startsWith(path)) { + shouldSkip = true; + } + break; + } + if (shouldSkip) continue; if (entity is File && entity.path.endsWith('.dart')) { print('Processing ${entity.path}...'); _processDartFile(entity); @@ -24,14 +34,22 @@ class AutoL10nTools { if (outputMap.containsValue(value)) { continue; } - final key = UuidV4().generate(); + var key = UuidV4().generate(); + final l10nFile = File("./lib/l10n/intl_zh_CN.arb"); + final cnJsonMap = json.decode(l10nFile.readAsStringSync()) as Map; + for (var element in cnJsonMap.entries) { + if (element.value == value) { + key = element.key; + } + } outputMap[key] = value; } // output to json final j = json.encode(outputMap); File("./lib/generated/l10n_temp.json").writeAsStringSync(j); print( - "output to json file (length: ${outputMap.length}): ./lib/generated/l10n_temp.json"); + "output to json file (length: ${outputMap + .length}): ./lib/generated/l10n_temp.json"); } } @@ -40,19 +58,28 @@ class AutoL10nTools { // readToJsonMap final jsonMap = json.decode(l10nFile.readAsStringSync()); // read all dart File - final dir = Directory('lib/ui'); + final dir = Directory('lib/'); for (var entity in dir.listSync(recursive: true)) { + bool shouldSkip = false; + for (var path in skipPaths) { + if (entity.path.replaceAll("\\", "/").startsWith(path)) { + shouldSkip = true; + } + break; + } + if (shouldSkip) continue; if (entity is File && entity.path.endsWith('.dart') && !(entity.path.endsWith(".g.dart") && entity.path.endsWith(".freezed.dart"))) { print('Processing ${entity.path}...'); // sort map with value length - final newMap = Map.fromEntries( + final newMap = Map.fromEntries( jsonMap.entries.toList() - ..sort((a, b) => (b.value as String) - .length - .compareTo((a.value as String).length)), + ..sort((a, b) => + (b.value.toString()) + .length + .compareTo((a.value.toString()).length)), ); _replaceDartFile(entity, newMap); } @@ -64,12 +91,12 @@ class AutoL10nTools { final toFile = File("./lib/l10n/intl_$to.arb"); final translator = GoogleTranslator(); final formMap = - json.decode(formFile.readAsStringSync()) as Map; + json.decode(formFile.readAsStringSync()) as Map; final toMap = - json.decode(toFile.readAsStringSync()) as Map; + json.decode(toFile.readAsStringSync()) as Map; - final formLocaleCode = formMap["@auto_translate_locale"] as String; - final toLocaleCode = toMap["@auto_translate_locale"] as String; + final formLocaleCode = formMap["@auto_translate_locale"].toString(); + final toLocaleCode = toMap["@auto_translate_locale"].toString(); print("formLocaleCode: $formLocaleCode, toLocaleCode: $toLocaleCode"); final newMap = {}; @@ -114,7 +141,7 @@ class AutoL10nTools { void _replaceDartFile(File entity, jsonMap) { for (var key in jsonMap.keys) { if (key == "@@locale") continue; - final mapValue = jsonMap[key] as String; + final mapValue = jsonMap[key].toString(); if (mapValue.contains("{") && mapValue.contains("}")) { print("skipping args value === $mapValue"); continue;