diff --git a/lib/app.dart b/lib/app.dart index 56bc3c9..d084e56 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -32,6 +32,7 @@ import 'ui/home/game_doctor/game_doctor_ui.dart'; import 'ui/home/localization/advanced_localization_ui.dart'; import 'ui/index_ui.dart'; import 'ui/settings/upgrade_dialog.dart'; +import 'ui/tools/unp4kc/dcb_viewer_ui.dart'; import 'ui/tools/unp4kc/unp4kc_ui.dart'; part 'app.g.dart'; @@ -84,6 +85,11 @@ GoRouter router(Ref ref) { builder: (_, _) => const SizedBox(), routes: [ GoRoute(path: 'unp4kc', pageBuilder: (context, state) => myPageBuilder(context, state, const UnP4kcUI())), + GoRoute( + path: 'dcb_viewer', + pageBuilder: (context, state) => + myPageBuilder(context, state, DcbViewerUI(initialFilePath: (state.extra as Map?)?['path'])), + ), ], ), GoRoute(path: '/guide', pageBuilder: (context, state) => myPageBuilder(context, state, const GuideUI())), diff --git a/lib/app.g.dart b/lib/app.g.dart index 858fd00..6e5e5bb 100644 --- a/lib/app.g.dart +++ b/lib/app.g.dart @@ -48,7 +48,7 @@ final class RouterProvider } } -String _$routerHash() => r'62dd494daf9b176547e30da83b1923ccdea13b4f'; +String _$routerHash() => r'e89f3f0277879147cdce5373cbe2554821e9cd31'; @ProviderFor(AppGlobalModel) const appGlobalModelProvider = AppGlobalModelProvider._(); diff --git a/lib/common/rust/api/unp4k_api.dart b/lib/common/rust/api/unp4k_api.dart index 9fd05a6..35f6365 100644 --- a/lib/common/rust/api/unp4k_api.dart +++ b/lib/common/rust/api/unp4k_api.dart @@ -38,6 +38,80 @@ Future p4KExtractToDisk({ /// 关闭 P4K 读取器 Future p4KClose() => RustLib.instance.api.crateApiUnp4KApiP4KClose(); +/// 检查数据是否为 DataForge/DCB 格式 +Future dcbIsDataforge({required List data}) => + RustLib.instance.api.crateApiUnp4KApiDcbIsDataforge(data: data); + +/// 从内存数据打开 DCB 文件 +Future dcbOpen({required List data}) => + RustLib.instance.api.crateApiUnp4KApiDcbOpen(data: data); + +/// 获取 DCB 记录数量 +Future dcbGetRecordCount() => + RustLib.instance.api.crateApiUnp4KApiDcbGetRecordCount(); + +/// 获取所有 DCB 记录路径列表 +Future> dcbGetRecordList() => + RustLib.instance.api.crateApiUnp4KApiDcbGetRecordList(); + +/// 根据路径获取单条记录的 XML +Future dcbRecordToXml({required String path}) => + RustLib.instance.api.crateApiUnp4KApiDcbRecordToXml(path: path); + +/// 根据索引获取单条记录的 XML +Future dcbRecordToXmlByIndex({required BigInt index}) => + RustLib.instance.api.crateApiUnp4KApiDcbRecordToXmlByIndex(index: index); + +/// 全文搜索 DCB 记录 +Future> dcbSearchAll({ + required String query, + required BigInt maxResults, +}) => RustLib.instance.api.crateApiUnp4KApiDcbSearchAll( + query: query, + maxResults: maxResults, +); + +/// 导出 DCB 到磁盘 +/// merge: true = 合并为单个 XML,false = 分离为多个 XML 文件 +Future dcbExportToDisk({ + required String outputPath, + required String dcbPath, + required bool merge, +}) => RustLib.instance.api.crateApiUnp4KApiDcbExportToDisk( + outputPath: outputPath, + dcbPath: dcbPath, + merge: merge, +); + +/// 关闭 DCB 读取器 +Future dcbClose() => RustLib.instance.api.crateApiUnp4KApiDcbClose(); + +/// DCB 记录项信息 +@freezed +sealed class DcbRecordItem with _$DcbRecordItem { + const factory DcbRecordItem({required String path, required BigInt index}) = + _DcbRecordItem; +} + +@freezed +sealed class DcbSearchMatch with _$DcbSearchMatch { + const factory DcbSearchMatch({ + required BigInt lineNumber, + required String lineContent, + }) = _DcbSearchMatch; +} + +/// 全文搜索 DCB 记录 +/// 返回匹配的记录路径和预览摘要 +@freezed +sealed class DcbSearchResult with _$DcbSearchResult { + const factory DcbSearchResult({ + required String path, + required BigInt index, + required List matches, + }) = _DcbSearchResult; +} + /// P4K 文件项信息 @freezed sealed class P4kFileItem with _$P4kFileItem { diff --git a/lib/common/rust/api/unp4k_api.freezed.dart b/lib/common/rust/api/unp4k_api.freezed.dart index d37457c..135e5ef 100644 --- a/lib/common/rust/api/unp4k_api.freezed.dart +++ b/lib/common/rust/api/unp4k_api.freezed.dart @@ -11,6 +11,777 @@ part of 'unp4k_api.dart'; // dart format off T _$identity(T value) => value; +/// @nodoc +mixin _$DcbRecordItem { + + String get path; BigInt get index; +/// Create a copy of DcbRecordItem +/// with the given fields replaced by the non-null parameter values. +@JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +$DcbRecordItemCopyWith get copyWith => _$DcbRecordItemCopyWithImpl(this as DcbRecordItem, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbRecordItem&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index)); +} + + +@override +int get hashCode => Object.hash(runtimeType,path,index); + +@override +String toString() { + return 'DcbRecordItem(path: $path, index: $index)'; +} + + +} + +/// @nodoc +abstract mixin class $DcbRecordItemCopyWith<$Res> { + factory $DcbRecordItemCopyWith(DcbRecordItem value, $Res Function(DcbRecordItem) _then) = _$DcbRecordItemCopyWithImpl; +@useResult +$Res call({ + String path, BigInt index +}); + + + + +} +/// @nodoc +class _$DcbRecordItemCopyWithImpl<$Res> + implements $DcbRecordItemCopyWith<$Res> { + _$DcbRecordItemCopyWithImpl(this._self, this._then); + + final DcbRecordItem _self; + final $Res Function(DcbRecordItem) _then; + +/// Create a copy of DcbRecordItem +/// with the given fields replaced by the non-null parameter values. +@pragma('vm:prefer-inline') @override $Res call({Object? path = null,Object? index = null,}) { + return _then(_self.copyWith( +path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable +as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable +as BigInt, + )); +} + +} + + +/// Adds pattern-matching-related methods to [DcbRecordItem]. +extension DcbRecordItemPatterns on DcbRecordItem { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _DcbRecordItem value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _DcbRecordItem() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _DcbRecordItem value) $default,){ +final _that = this; +switch (_that) { +case _DcbRecordItem(): +return $default(_that);} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _DcbRecordItem value)? $default,){ +final _that = this; +switch (_that) { +case _DcbRecordItem() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( String path, BigInt index)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _DcbRecordItem() when $default != null: +return $default(_that.path,_that.index);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( String path, BigInt index) $default,) {final _that = this; +switch (_that) { +case _DcbRecordItem(): +return $default(_that.path,_that.index);} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( String path, BigInt index)? $default,) {final _that = this; +switch (_that) { +case _DcbRecordItem() when $default != null: +return $default(_that.path,_that.index);case _: + return null; + +} +} + +} + +/// @nodoc + + +class _DcbRecordItem implements DcbRecordItem { + const _DcbRecordItem({required this.path, required this.index}); + + +@override final String path; +@override final BigInt index; + +/// Create a copy of DcbRecordItem +/// with the given fields replaced by the non-null parameter values. +@override @JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +_$DcbRecordItemCopyWith<_DcbRecordItem> get copyWith => __$DcbRecordItemCopyWithImpl<_DcbRecordItem>(this, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbRecordItem&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index)); +} + + +@override +int get hashCode => Object.hash(runtimeType,path,index); + +@override +String toString() { + return 'DcbRecordItem(path: $path, index: $index)'; +} + + +} + +/// @nodoc +abstract mixin class _$DcbRecordItemCopyWith<$Res> implements $DcbRecordItemCopyWith<$Res> { + factory _$DcbRecordItemCopyWith(_DcbRecordItem value, $Res Function(_DcbRecordItem) _then) = __$DcbRecordItemCopyWithImpl; +@override @useResult +$Res call({ + String path, BigInt index +}); + + + + +} +/// @nodoc +class __$DcbRecordItemCopyWithImpl<$Res> + implements _$DcbRecordItemCopyWith<$Res> { + __$DcbRecordItemCopyWithImpl(this._self, this._then); + + final _DcbRecordItem _self; + final $Res Function(_DcbRecordItem) _then; + +/// Create a copy of DcbRecordItem +/// with the given fields replaced by the non-null parameter values. +@override @pragma('vm:prefer-inline') $Res call({Object? path = null,Object? index = null,}) { + return _then(_DcbRecordItem( +path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable +as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable +as BigInt, + )); +} + + +} + +/// @nodoc +mixin _$DcbSearchMatch { + + BigInt get lineNumber; String get lineContent; +/// Create a copy of DcbSearchMatch +/// with the given fields replaced by the non-null parameter values. +@JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +$DcbSearchMatchCopyWith get copyWith => _$DcbSearchMatchCopyWithImpl(this as DcbSearchMatch, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbSearchMatch&&(identical(other.lineNumber, lineNumber) || other.lineNumber == lineNumber)&&(identical(other.lineContent, lineContent) || other.lineContent == lineContent)); +} + + +@override +int get hashCode => Object.hash(runtimeType,lineNumber,lineContent); + +@override +String toString() { + return 'DcbSearchMatch(lineNumber: $lineNumber, lineContent: $lineContent)'; +} + + +} + +/// @nodoc +abstract mixin class $DcbSearchMatchCopyWith<$Res> { + factory $DcbSearchMatchCopyWith(DcbSearchMatch value, $Res Function(DcbSearchMatch) _then) = _$DcbSearchMatchCopyWithImpl; +@useResult +$Res call({ + BigInt lineNumber, String lineContent +}); + + + + +} +/// @nodoc +class _$DcbSearchMatchCopyWithImpl<$Res> + implements $DcbSearchMatchCopyWith<$Res> { + _$DcbSearchMatchCopyWithImpl(this._self, this._then); + + final DcbSearchMatch _self; + final $Res Function(DcbSearchMatch) _then; + +/// Create a copy of DcbSearchMatch +/// with the given fields replaced by the non-null parameter values. +@pragma('vm:prefer-inline') @override $Res call({Object? lineNumber = null,Object? lineContent = null,}) { + return _then(_self.copyWith( +lineNumber: null == lineNumber ? _self.lineNumber : lineNumber // ignore: cast_nullable_to_non_nullable +as BigInt,lineContent: null == lineContent ? _self.lineContent : lineContent // ignore: cast_nullable_to_non_nullable +as String, + )); +} + +} + + +/// Adds pattern-matching-related methods to [DcbSearchMatch]. +extension DcbSearchMatchPatterns on DcbSearchMatch { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _DcbSearchMatch value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _DcbSearchMatch() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _DcbSearchMatch value) $default,){ +final _that = this; +switch (_that) { +case _DcbSearchMatch(): +return $default(_that);} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _DcbSearchMatch value)? $default,){ +final _that = this; +switch (_that) { +case _DcbSearchMatch() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( BigInt lineNumber, String lineContent)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _DcbSearchMatch() when $default != null: +return $default(_that.lineNumber,_that.lineContent);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( BigInt lineNumber, String lineContent) $default,) {final _that = this; +switch (_that) { +case _DcbSearchMatch(): +return $default(_that.lineNumber,_that.lineContent);} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( BigInt lineNumber, String lineContent)? $default,) {final _that = this; +switch (_that) { +case _DcbSearchMatch() when $default != null: +return $default(_that.lineNumber,_that.lineContent);case _: + return null; + +} +} + +} + +/// @nodoc + + +class _DcbSearchMatch implements DcbSearchMatch { + const _DcbSearchMatch({required this.lineNumber, required this.lineContent}); + + +@override final BigInt lineNumber; +@override final String lineContent; + +/// Create a copy of DcbSearchMatch +/// with the given fields replaced by the non-null parameter values. +@override @JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +_$DcbSearchMatchCopyWith<_DcbSearchMatch> get copyWith => __$DcbSearchMatchCopyWithImpl<_DcbSearchMatch>(this, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbSearchMatch&&(identical(other.lineNumber, lineNumber) || other.lineNumber == lineNumber)&&(identical(other.lineContent, lineContent) || other.lineContent == lineContent)); +} + + +@override +int get hashCode => Object.hash(runtimeType,lineNumber,lineContent); + +@override +String toString() { + return 'DcbSearchMatch(lineNumber: $lineNumber, lineContent: $lineContent)'; +} + + +} + +/// @nodoc +abstract mixin class _$DcbSearchMatchCopyWith<$Res> implements $DcbSearchMatchCopyWith<$Res> { + factory _$DcbSearchMatchCopyWith(_DcbSearchMatch value, $Res Function(_DcbSearchMatch) _then) = __$DcbSearchMatchCopyWithImpl; +@override @useResult +$Res call({ + BigInt lineNumber, String lineContent +}); + + + + +} +/// @nodoc +class __$DcbSearchMatchCopyWithImpl<$Res> + implements _$DcbSearchMatchCopyWith<$Res> { + __$DcbSearchMatchCopyWithImpl(this._self, this._then); + + final _DcbSearchMatch _self; + final $Res Function(_DcbSearchMatch) _then; + +/// Create a copy of DcbSearchMatch +/// with the given fields replaced by the non-null parameter values. +@override @pragma('vm:prefer-inline') $Res call({Object? lineNumber = null,Object? lineContent = null,}) { + return _then(_DcbSearchMatch( +lineNumber: null == lineNumber ? _self.lineNumber : lineNumber // ignore: cast_nullable_to_non_nullable +as BigInt,lineContent: null == lineContent ? _self.lineContent : lineContent // ignore: cast_nullable_to_non_nullable +as String, + )); +} + + +} + +/// @nodoc +mixin _$DcbSearchResult { + + String get path; BigInt get index; List get matches; +/// Create a copy of DcbSearchResult +/// with the given fields replaced by the non-null parameter values. +@JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +$DcbSearchResultCopyWith get copyWith => _$DcbSearchResultCopyWithImpl(this as DcbSearchResult, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbSearchResult&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index)&&const DeepCollectionEquality().equals(other.matches, matches)); +} + + +@override +int get hashCode => Object.hash(runtimeType,path,index,const DeepCollectionEquality().hash(matches)); + +@override +String toString() { + return 'DcbSearchResult(path: $path, index: $index, matches: $matches)'; +} + + +} + +/// @nodoc +abstract mixin class $DcbSearchResultCopyWith<$Res> { + factory $DcbSearchResultCopyWith(DcbSearchResult value, $Res Function(DcbSearchResult) _then) = _$DcbSearchResultCopyWithImpl; +@useResult +$Res call({ + String path, BigInt index, List matches +}); + + + + +} +/// @nodoc +class _$DcbSearchResultCopyWithImpl<$Res> + implements $DcbSearchResultCopyWith<$Res> { + _$DcbSearchResultCopyWithImpl(this._self, this._then); + + final DcbSearchResult _self; + final $Res Function(DcbSearchResult) _then; + +/// Create a copy of DcbSearchResult +/// with the given fields replaced by the non-null parameter values. +@pragma('vm:prefer-inline') @override $Res call({Object? path = null,Object? index = null,Object? matches = null,}) { + return _then(_self.copyWith( +path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable +as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable +as BigInt,matches: null == matches ? _self.matches : matches // ignore: cast_nullable_to_non_nullable +as List, + )); +} + +} + + +/// Adds pattern-matching-related methods to [DcbSearchResult]. +extension DcbSearchResultPatterns on DcbSearchResult { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _DcbSearchResult value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _DcbSearchResult() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _DcbSearchResult value) $default,){ +final _that = this; +switch (_that) { +case _DcbSearchResult(): +return $default(_that);} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _DcbSearchResult value)? $default,){ +final _that = this; +switch (_that) { +case _DcbSearchResult() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( String path, BigInt index, List matches)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _DcbSearchResult() when $default != null: +return $default(_that.path,_that.index,_that.matches);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( String path, BigInt index, List matches) $default,) {final _that = this; +switch (_that) { +case _DcbSearchResult(): +return $default(_that.path,_that.index,_that.matches);} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( String path, BigInt index, List matches)? $default,) {final _that = this; +switch (_that) { +case _DcbSearchResult() when $default != null: +return $default(_that.path,_that.index,_that.matches);case _: + return null; + +} +} + +} + +/// @nodoc + + +class _DcbSearchResult implements DcbSearchResult { + const _DcbSearchResult({required this.path, required this.index, required final List matches}): _matches = matches; + + +@override final String path; +@override final BigInt index; + final List _matches; +@override List get matches { + if (_matches is EqualUnmodifiableListView) return _matches; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_matches); +} + + +/// Create a copy of DcbSearchResult +/// with the given fields replaced by the non-null parameter values. +@override @JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +_$DcbSearchResultCopyWith<_DcbSearchResult> get copyWith => __$DcbSearchResultCopyWithImpl<_DcbSearchResult>(this, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbSearchResult&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index)&&const DeepCollectionEquality().equals(other._matches, _matches)); +} + + +@override +int get hashCode => Object.hash(runtimeType,path,index,const DeepCollectionEquality().hash(_matches)); + +@override +String toString() { + return 'DcbSearchResult(path: $path, index: $index, matches: $matches)'; +} + + +} + +/// @nodoc +abstract mixin class _$DcbSearchResultCopyWith<$Res> implements $DcbSearchResultCopyWith<$Res> { + factory _$DcbSearchResultCopyWith(_DcbSearchResult value, $Res Function(_DcbSearchResult) _then) = __$DcbSearchResultCopyWithImpl; +@override @useResult +$Res call({ + String path, BigInt index, List matches +}); + + + + +} +/// @nodoc +class __$DcbSearchResultCopyWithImpl<$Res> + implements _$DcbSearchResultCopyWith<$Res> { + __$DcbSearchResultCopyWithImpl(this._self, this._then); + + final _DcbSearchResult _self; + final $Res Function(_DcbSearchResult) _then; + +/// Create a copy of DcbSearchResult +/// with the given fields replaced by the non-null parameter values. +@override @pragma('vm:prefer-inline') $Res call({Object? path = null,Object? index = null,Object? matches = null,}) { + return _then(_DcbSearchResult( +path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable +as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable +as BigInt,matches: null == matches ? _self._matches : matches // ignore: cast_nullable_to_non_nullable +as List, + )); +} + + +} + /// @nodoc mixin _$P4kFileItem { diff --git a/lib/common/rust/frb_generated.dart b/lib/common/rust/frb_generated.dart index c7288eb..4951ae0 100644 --- a/lib/common/rust/frb_generated.dart +++ b/lib/common/rust/frb_generated.dart @@ -72,7 +72,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => -1482626931; + int get rustContentHash => -1903117367; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -94,6 +94,31 @@ abstract class RustLibApi extends BaseApi { required String shortcutName, }); + Future crateApiUnp4KApiDcbClose(); + + Future crateApiUnp4KApiDcbExportToDisk({ + required String outputPath, + required String dcbPath, + required bool merge, + }); + + Future crateApiUnp4KApiDcbGetRecordCount(); + + Future> crateApiUnp4KApiDcbGetRecordList(); + + Future crateApiUnp4KApiDcbIsDataforge({required List data}); + + Future crateApiUnp4KApiDcbOpen({required List data}); + + Future crateApiUnp4KApiDcbRecordToXml({required String path}); + + Future crateApiUnp4KApiDcbRecordToXmlByIndex({required BigInt index}); + + Future> crateApiUnp4KApiDcbSearchAll({ + required String query, + required BigInt maxResults, + }); + Future> crateApiHttpApiDnsLookupIps({required String host}); Future> crateApiHttpApiDnsLookupTxt({required String host}); @@ -464,6 +489,240 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["targetPath", "shortcutName"], ); + @override + Future crateApiUnp4KApiDcbClose() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + return wire.wire__crate__api__unp4k_api__dcb_close(port_); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbCloseConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbCloseConstMeta => + const TaskConstMeta(debugName: "dcb_close", argNames: []); + + @override + Future crateApiUnp4KApiDcbExportToDisk({ + required String outputPath, + required String dcbPath, + required bool merge, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(outputPath); + var arg1 = cst_encode_String(dcbPath); + var arg2 = cst_encode_bool(merge); + return wire.wire__crate__api__unp4k_api__dcb_export_to_disk( + port_, + arg0, + arg1, + arg2, + ); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbExportToDiskConstMeta, + argValues: [outputPath, dcbPath, merge], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbExportToDiskConstMeta => + const TaskConstMeta( + debugName: "dcb_export_to_disk", + argNames: ["outputPath", "dcbPath", "merge"], + ); + + @override + Future crateApiUnp4KApiDcbGetRecordCount() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + return wire.wire__crate__api__unp4k_api__dcb_get_record_count(port_); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_usize, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbGetRecordCountConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbGetRecordCountConstMeta => + const TaskConstMeta(debugName: "dcb_get_record_count", argNames: []); + + @override + Future> crateApiUnp4KApiDcbGetRecordList() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + return wire.wire__crate__api__unp4k_api__dcb_get_record_list(port_); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_list_dcb_record_item, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbGetRecordListConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbGetRecordListConstMeta => + const TaskConstMeta(debugName: "dcb_get_record_list", argNames: []); + + @override + Future crateApiUnp4KApiDcbIsDataforge({required List data}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_list_prim_u_8_loose(data); + return wire.wire__crate__api__unp4k_api__dcb_is_dataforge( + port_, + arg0, + ); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_bool, + decodeErrorData: null, + ), + constMeta: kCrateApiUnp4KApiDcbIsDataforgeConstMeta, + argValues: [data], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbIsDataforgeConstMeta => + const TaskConstMeta(debugName: "dcb_is_dataforge", argNames: ["data"]); + + @override + Future crateApiUnp4KApiDcbOpen({required List data}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_list_prim_u_8_loose(data); + return wire.wire__crate__api__unp4k_api__dcb_open(port_, arg0); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbOpenConstMeta, + argValues: [data], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbOpenConstMeta => + const TaskConstMeta(debugName: "dcb_open", argNames: ["data"]); + + @override + Future crateApiUnp4KApiDcbRecordToXml({required String path}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(path); + return wire.wire__crate__api__unp4k_api__dcb_record_to_xml( + port_, + arg0, + ); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_String, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbRecordToXmlConstMeta, + argValues: [path], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbRecordToXmlConstMeta => + const TaskConstMeta(debugName: "dcb_record_to_xml", argNames: ["path"]); + + @override + Future crateApiUnp4KApiDcbRecordToXmlByIndex({ + required BigInt index, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_usize(index); + return wire.wire__crate__api__unp4k_api__dcb_record_to_xml_by_index( + port_, + arg0, + ); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_String, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbRecordToXmlByIndexConstMeta, + argValues: [index], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbRecordToXmlByIndexConstMeta => + const TaskConstMeta( + debugName: "dcb_record_to_xml_by_index", + argNames: ["index"], + ); + + @override + Future> crateApiUnp4KApiDcbSearchAll({ + required String query, + required BigInt maxResults, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(query); + var arg1 = cst_encode_usize(maxResults); + return wire.wire__crate__api__unp4k_api__dcb_search_all( + port_, + arg0, + arg1, + ); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_list_dcb_search_result, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiUnp4KApiDcbSearchAllConstMeta, + argValues: [query, maxResults], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiUnp4KApiDcbSearchAllConstMeta => + const TaskConstMeta( + debugName: "dcb_search_all", + argNames: ["query", "maxResults"], + ); + @override Future> crateApiHttpApiDnsLookupIps({required String host}) { return handler.executeNormal( @@ -2660,6 +2919,43 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return dco_decode_web_view_configuration(raw); } + @protected + DcbRecordItem dco_decode_dcb_record_item(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + return DcbRecordItem( + path: dco_decode_String(arr[0]), + index: dco_decode_usize(arr[1]), + ); + } + + @protected + DcbSearchMatch dco_decode_dcb_search_match(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + return DcbSearchMatch( + lineNumber: dco_decode_usize(arr[0]), + lineContent: dco_decode_String(arr[1]), + ); + } + + @protected + DcbSearchResult dco_decode_dcb_search_result(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 3) + throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); + return DcbSearchResult( + path: dco_decode_String(arr[0]), + index: dco_decode_usize(arr[1]), + matches: dco_decode_list_dcb_search_match(arr[2]), + ); + } + @protected DownloadGlobalStat dco_decode_download_global_stat(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -2725,6 +3021,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (raw as List).map(dco_decode_String).toList(); } + @protected + List dco_decode_list_dcb_record_item(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_dcb_record_item).toList(); + } + + @protected + List dco_decode_list_dcb_search_match(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_dcb_search_match).toList(); + } + + @protected + List dco_decode_list_dcb_search_result(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_dcb_search_result).toList(); + } + @protected List dco_decode_list_download_task_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -3083,6 +3397,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (sse_decode_web_view_configuration(deserializer)); } + @protected + DcbRecordItem sse_decode_dcb_record_item(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_path = sse_decode_String(deserializer); + var var_index = sse_decode_usize(deserializer); + return DcbRecordItem(path: var_path, index: var_index); + } + + @protected + DcbSearchMatch sse_decode_dcb_search_match(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_lineNumber = sse_decode_usize(deserializer); + var var_lineContent = sse_decode_String(deserializer); + return DcbSearchMatch( + lineNumber: var_lineNumber, + lineContent: var_lineContent, + ); + } + + @protected + DcbSearchResult sse_decode_dcb_search_result(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_path = sse_decode_String(deserializer); + var var_index = sse_decode_usize(deserializer); + var var_matches = sse_decode_list_dcb_search_match(deserializer); + return DcbSearchResult( + path: var_path, + index: var_index, + matches: var_matches, + ); + } + @protected DownloadGlobalStat sse_decode_download_global_stat( SseDeserializer deserializer, @@ -3168,6 +3514,48 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ans_; } + @protected + List sse_decode_list_dcb_record_item( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_dcb_record_item(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_dcb_search_match( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_dcb_search_match(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_dcb_search_result( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_dcb_search_result(deserializer)); + } + return ans_; + } + @protected List sse_decode_list_download_task_info( SseDeserializer deserializer, @@ -3711,6 +4099,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_web_view_configuration(self, serializer); } + @protected + void sse_encode_dcb_record_item( + DcbRecordItem self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.path, serializer); + sse_encode_usize(self.index, serializer); + } + + @protected + void sse_encode_dcb_search_match( + DcbSearchMatch self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize(self.lineNumber, serializer); + sse_encode_String(self.lineContent, serializer); + } + + @protected + void sse_encode_dcb_search_result( + DcbSearchResult self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.path, serializer); + sse_encode_usize(self.index, serializer); + sse_encode_list_dcb_search_match(self.matches, serializer); + } + @protected void sse_encode_download_global_stat( DownloadGlobalStat self, @@ -3778,6 +4197,42 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void sse_encode_list_dcb_record_item( + List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_dcb_record_item(item, serializer); + } + } + + @protected + void sse_encode_list_dcb_search_match( + List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_dcb_search_match(item, serializer); + } + } + + @protected + void sse_encode_list_dcb_search_result( + List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_dcb_search_result(item, serializer); + } + } + @protected void sse_encode_list_download_task_info( List self, diff --git a/lib/common/rust/frb_generated.io.dart b/lib/common/rust/frb_generated.io.dart index 4ef46d3..74ba715 100644 --- a/lib/common/rust/frb_generated.io.dart +++ b/lib/common/rust/frb_generated.io.dart @@ -61,6 +61,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + DcbRecordItem dco_decode_dcb_record_item(dynamic raw); + + @protected + DcbSearchMatch dco_decode_dcb_search_match(dynamic raw); + + @protected + DcbSearchResult dco_decode_dcb_search_result(dynamic raw); + @protected DownloadGlobalStat dco_decode_download_global_stat(dynamic raw); @@ -82,6 +91,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List dco_decode_list_String(dynamic raw); + @protected + List dco_decode_list_dcb_record_item(dynamic raw); + + @protected + List dco_decode_list_dcb_search_match(dynamic raw); + + @protected + List dco_decode_list_dcb_search_result(dynamic raw); + @protected List dco_decode_list_download_task_info(dynamic raw); @@ -220,6 +238,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + DcbRecordItem sse_decode_dcb_record_item(SseDeserializer deserializer); + + @protected + DcbSearchMatch sse_decode_dcb_search_match(SseDeserializer deserializer); + + @protected + DcbSearchResult sse_decode_dcb_search_result(SseDeserializer deserializer); + @protected DownloadGlobalStat sse_decode_download_global_stat( SseDeserializer deserializer, @@ -245,6 +272,21 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List sse_decode_list_String(SseDeserializer deserializer); + @protected + List sse_decode_list_dcb_record_item( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_dcb_search_match( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_dcb_search_result( + SseDeserializer deserializer, + ); + @protected List sse_decode_list_download_task_info( SseDeserializer deserializer, @@ -457,6 +499,41 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { return ans; } + @protected + ffi.Pointer cst_encode_list_dcb_record_item( + List raw, + ) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_dcb_record_item(raw.length); + for (var i = 0; i < raw.length; ++i) { + cst_api_fill_to_wire_dcb_record_item(raw[i], ans.ref.ptr[i]); + } + return ans; + } + + @protected + ffi.Pointer cst_encode_list_dcb_search_match( + List raw, + ) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_dcb_search_match(raw.length); + for (var i = 0; i < raw.length; ++i) { + cst_api_fill_to_wire_dcb_search_match(raw[i], ans.ref.ptr[i]); + } + return ans; + } + + @protected + ffi.Pointer + cst_encode_list_dcb_search_result(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_dcb_search_result(raw.length); + for (var i = 0; i < raw.length; ++i) { + cst_api_fill_to_wire_dcb_search_result(raw[i], ans.ref.ptr[i]); + } + return ans; + } + @protected ffi.Pointer cst_encode_list_download_task_info(List raw) { @@ -611,6 +688,34 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { cst_api_fill_to_wire_web_view_configuration(apiObj, wireObj.ref); } + @protected + void cst_api_fill_to_wire_dcb_record_item( + DcbRecordItem apiObj, + wire_cst_dcb_record_item wireObj, + ) { + wireObj.path = cst_encode_String(apiObj.path); + wireObj.index = cst_encode_usize(apiObj.index); + } + + @protected + void cst_api_fill_to_wire_dcb_search_match( + DcbSearchMatch apiObj, + wire_cst_dcb_search_match wireObj, + ) { + wireObj.line_number = cst_encode_usize(apiObj.lineNumber); + wireObj.line_content = cst_encode_String(apiObj.lineContent); + } + + @protected + void cst_api_fill_to_wire_dcb_search_result( + DcbSearchResult apiObj, + wire_cst_dcb_search_result wireObj, + ) { + wireObj.path = cst_encode_String(apiObj.path); + wireObj.index = cst_encode_usize(apiObj.index); + wireObj.matches = cst_encode_list_dcb_search_match(apiObj.matches); + } + @protected void cst_api_fill_to_wire_download_global_stat( DownloadGlobalStat apiObj, @@ -865,6 +970,21 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_dcb_record_item(DcbRecordItem self, SseSerializer serializer); + + @protected + void sse_encode_dcb_search_match( + DcbSearchMatch self, + SseSerializer serializer, + ); + + @protected + void sse_encode_dcb_search_result( + DcbSearchResult self, + SseSerializer serializer, + ); + @protected void sse_encode_download_global_stat( DownloadGlobalStat self, @@ -895,6 +1015,24 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_list_String(List self, SseSerializer serializer); + @protected + void sse_encode_list_dcb_record_item( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_dcb_search_match( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_dcb_search_result( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_download_task_info( List self, @@ -1147,6 +1285,198 @@ class RustLibWire implements BaseWire { ) >(); + void wire__crate__api__unp4k_api__dcb_close(int port_) { + return _wire__crate__api__unp4k_api__dcb_close(port_); + } + + late final _wire__crate__api__unp4k_api__dcb_closePtr = + _lookup>( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_close', + ); + late final _wire__crate__api__unp4k_api__dcb_close = + _wire__crate__api__unp4k_api__dcb_closePtr + .asFunction(); + + void wire__crate__api__unp4k_api__dcb_export_to_disk( + int port_, + ffi.Pointer output_path, + ffi.Pointer dcb_path, + bool merge, + ) { + return _wire__crate__api__unp4k_api__dcb_export_to_disk( + port_, + output_path, + dcb_path, + merge, + ); + } + + late final _wire__crate__api__unp4k_api__dcb_export_to_diskPtr = + _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ) + > + >( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_export_to_disk', + ); + late final _wire__crate__api__unp4k_api__dcb_export_to_disk = + _wire__crate__api__unp4k_api__dcb_export_to_diskPtr + .asFunction< + void Function( + int, + ffi.Pointer, + ffi.Pointer, + bool, + ) + >(); + + void wire__crate__api__unp4k_api__dcb_get_record_count(int port_) { + return _wire__crate__api__unp4k_api__dcb_get_record_count(port_); + } + + late final _wire__crate__api__unp4k_api__dcb_get_record_countPtr = + _lookup>( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_get_record_count', + ); + late final _wire__crate__api__unp4k_api__dcb_get_record_count = + _wire__crate__api__unp4k_api__dcb_get_record_countPtr + .asFunction(); + + void wire__crate__api__unp4k_api__dcb_get_record_list(int port_) { + return _wire__crate__api__unp4k_api__dcb_get_record_list(port_); + } + + late final _wire__crate__api__unp4k_api__dcb_get_record_listPtr = + _lookup>( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_get_record_list', + ); + late final _wire__crate__api__unp4k_api__dcb_get_record_list = + _wire__crate__api__unp4k_api__dcb_get_record_listPtr + .asFunction(); + + void wire__crate__api__unp4k_api__dcb_is_dataforge( + int port_, + ffi.Pointer data, + ) { + return _wire__crate__api__unp4k_api__dcb_is_dataforge(port_, data); + } + + late final _wire__crate__api__unp4k_api__dcb_is_dataforgePtr = + _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ) + > + >( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_is_dataforge', + ); + late final _wire__crate__api__unp4k_api__dcb_is_dataforge = + _wire__crate__api__unp4k_api__dcb_is_dataforgePtr + .asFunction< + void Function(int, ffi.Pointer) + >(); + + void wire__crate__api__unp4k_api__dcb_open( + int port_, + ffi.Pointer data, + ) { + return _wire__crate__api__unp4k_api__dcb_open(port_, data); + } + + late final _wire__crate__api__unp4k_api__dcb_openPtr = + _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ) + > + >('frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_open'); + late final _wire__crate__api__unp4k_api__dcb_open = + _wire__crate__api__unp4k_api__dcb_openPtr + .asFunction< + void Function(int, ffi.Pointer) + >(); + + void wire__crate__api__unp4k_api__dcb_record_to_xml( + int port_, + ffi.Pointer path, + ) { + return _wire__crate__api__unp4k_api__dcb_record_to_xml(port_, path); + } + + late final _wire__crate__api__unp4k_api__dcb_record_to_xmlPtr = + _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ) + > + >( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_record_to_xml', + ); + late final _wire__crate__api__unp4k_api__dcb_record_to_xml = + _wire__crate__api__unp4k_api__dcb_record_to_xmlPtr + .asFunction< + void Function(int, ffi.Pointer) + >(); + + void wire__crate__api__unp4k_api__dcb_record_to_xml_by_index( + int port_, + int index, + ) { + return _wire__crate__api__unp4k_api__dcb_record_to_xml_by_index( + port_, + index, + ); + } + + late final _wire__crate__api__unp4k_api__dcb_record_to_xml_by_indexPtr = + _lookup>( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_record_to_xml_by_index', + ); + late final _wire__crate__api__unp4k_api__dcb_record_to_xml_by_index = + _wire__crate__api__unp4k_api__dcb_record_to_xml_by_indexPtr + .asFunction(); + + void wire__crate__api__unp4k_api__dcb_search_all( + int port_, + ffi.Pointer query, + int max_results, + ) { + return _wire__crate__api__unp4k_api__dcb_search_all( + port_, + query, + max_results, + ); + } + + late final _wire__crate__api__unp4k_api__dcb_search_allPtr = + _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.UintPtr, + ) + > + >( + 'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_search_all', + ); + late final _wire__crate__api__unp4k_api__dcb_search_all = + _wire__crate__api__unp4k_api__dcb_search_allPtr + .asFunction< + void Function(int, ffi.Pointer, int) + >(); + void wire__crate__api__http_api__dns_lookup_ips( int port_, ffi.Pointer host, @@ -2989,6 +3319,54 @@ class RustLibWire implements BaseWire { late final _cst_new_list_String = _cst_new_list_StringPtr .asFunction Function(int)>(); + ffi.Pointer cst_new_list_dcb_record_item( + int len, + ) { + return _cst_new_list_dcb_record_item(len); + } + + late final _cst_new_list_dcb_record_itemPtr = + _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Int32) + > + >('frbgen_starcitizen_doctor_cst_new_list_dcb_record_item'); + late final _cst_new_list_dcb_record_item = _cst_new_list_dcb_record_itemPtr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_list_dcb_search_match( + int len, + ) { + return _cst_new_list_dcb_search_match(len); + } + + late final _cst_new_list_dcb_search_matchPtr = + _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Int32) + > + >('frbgen_starcitizen_doctor_cst_new_list_dcb_search_match'); + late final _cst_new_list_dcb_search_match = _cst_new_list_dcb_search_matchPtr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_list_dcb_search_result( + int len, + ) { + return _cst_new_list_dcb_search_result(len); + } + + late final _cst_new_list_dcb_search_resultPtr = + _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Int32) + > + >('frbgen_starcitizen_doctor_cst_new_list_dcb_search_result'); + late final _cst_new_list_dcb_search_result = + _cst_new_list_dcb_search_resultPtr + .asFunction< + ffi.Pointer Function(int) + >(); + ffi.Pointer cst_new_list_download_task_info( int len, ) { @@ -3125,15 +3503,15 @@ final class wire_cst_list_prim_u_8_strict extends ffi.Struct { external int len; } -final class wire_cst_list_String extends ffi.Struct { - external ffi.Pointer> ptr; +final class wire_cst_list_prim_u_8_loose extends ffi.Struct { + external ffi.Pointer ptr; @ffi.Int32() external int len; } -final class wire_cst_list_prim_u_8_loose extends ffi.Struct { - external ffi.Pointer ptr; +final class wire_cst_list_String extends ffi.Struct { + external ffi.Pointer> ptr; @ffi.Int32() external int len; @@ -3180,6 +3558,50 @@ final class wire_cst_web_view_configuration extends ffi.Struct { external ffi.Pointer user_agent; } +final class wire_cst_dcb_record_item extends ffi.Struct { + external ffi.Pointer path; + + @ffi.UintPtr() + external int index; +} + +final class wire_cst_list_dcb_record_item extends ffi.Struct { + external ffi.Pointer ptr; + + @ffi.Int32() + external int len; +} + +final class wire_cst_dcb_search_match extends ffi.Struct { + @ffi.UintPtr() + external int line_number; + + external ffi.Pointer line_content; +} + +final class wire_cst_list_dcb_search_match extends ffi.Struct { + external ffi.Pointer ptr; + + @ffi.Int32() + external int len; +} + +final class wire_cst_dcb_search_result extends ffi.Struct { + external ffi.Pointer path; + + @ffi.UintPtr() + external int index; + + external ffi.Pointer matches; +} + +final class wire_cst_list_dcb_search_result extends ffi.Struct { + external ffi.Pointer ptr; + + @ffi.Int32() + external int len; +} + final class wire_cst_download_task_info extends ffi.Struct { @ffi.UintPtr() external int id; diff --git a/lib/data/dcb_data.dart b/lib/data/dcb_data.dart new file mode 100644 index 0000000..f1630cb --- /dev/null +++ b/lib/data/dcb_data.dart @@ -0,0 +1,24 @@ +/// DCB 记录项数据 +class DcbRecordData { + final String path; + final int index; + + const DcbRecordData({required this.path, required this.index}); +} + +/// DCB 搜索匹配数据 +class DcbSearchMatchData { + final int lineNumber; + final String lineContent; + + const DcbSearchMatchData({required this.lineNumber, required this.lineContent}); +} + +/// DCB 搜索结果数据 +class DcbSearchResultData { + final String path; + final int index; + final List matches; + + const DcbSearchResultData({required this.path, required this.index, required this.matches}); +} diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 5ed3c25..4b22775 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -33,266 +33,272 @@ class MessageLookup extends MessageLookupByLibrary { static String m5(v0) => "New version found -> ${v0}"; - static String m6(v0) => "Game abnormal exit: ${v0}"; + static String m6(v0) => "${v0} records loaded"; - static String m7(v0) => + static String m7(v0) => "${v0} results found"; + + static String m8(v0) => "DataForge Viewer -> ${v0}"; + + static String m9(v0) => "Game abnormal exit: ${v0}"; + + static String m10(v0) => "info:${v0}, please click the bottom right corner to join the group for feedback."; - static String m8(v0) => "Analysis complete, found ${v0} issues"; + static String m11(v0) => "Analysis complete, found ${v0} issues"; - static String m9(v0, v1) => + static String m12(v0, v1) => "Failed to create folder, please try to create it manually.\nDirectory: ${v0} \nError: ${v1}"; - static String m10(v0) => "Fix failed, ${v0}"; + static String m13(v0) => "Fix failed, ${v0}"; - static String m11(v0) => "Unsupported operating system: ${v0}"; + static String m14(v0) => "Unsupported operating system: ${v0}"; - static String m12(v0) => + static String m15(v0) => "Add ForcedPhysicalSectorSizeInBytes value to registry to simulate old devices. Hard disk partition (${v0})"; - static String m13(v0) => + static String m16(v0) => "Chinese installation path! This may cause game startup/installation errors! (${v0}), please change the installation path in the RSI Launcher."; - static String m14(v0) => + static String m17(v0) => "Click to fix and create LIVE folder for you, then retry installation. (${v0})"; - static String m15(v0) => "Fix suggestion: ${v0}"; + static String m18(v0) => "Fix suggestion: ${v0}"; - static String m16(v0) => + static String m19(v0) => "You need at least 16GB of physical memory (RAM) to run this game. (Current size: ${v0})"; - static String m17(v0) => "Please upgrade your system (${v0})"; + static String m20(v0) => "Please upgrade your system (${v0})"; - static String m18(v0) => "One-Click Diagnosis -> ${v0}"; + static String m21(v0) => "One-Click Diagnosis -> ${v0}"; - static String m19(v0) => "Checked: ${v0}"; + static String m22(v0) => "Checked: ${v0}"; - static String m20(v0) => "Checking... (${v0}%)"; + static String m23(v0) => "Checking... (${v0}%)"; - static String m21(v0, v1) => "Download: ${v0}/s Upload: ${v1}/s"; + static String m24(v0, v1) => "Download: ${v0}/s Upload: ${v1}/s"; - static String m22(v0) => "Downloaded: ${v0}"; + static String m25(v0) => "Downloaded: ${v0}"; - static String m23(v0) => "Downloading... (${v0}%)"; + static String m26(v0) => "Downloading... (${v0}%)"; - static String m24(v0) => "Status: ${v0}"; + static String m27(v0) => "Status: ${v0}"; - static String m25(v1) => "Total Size: ${v1}"; + static String m28(v1) => "Total Size: ${v1}"; - static String m26(v0) => "Uploaded: ${v0}"; + static String m29(v0) => "Uploaded: ${v0}"; - static String m27(v0, v1, v2, v3, v4) => + static String m30(v0, v1, v2, v3, v4) => "Game exited abnormally\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\nDiagnostic information: ${v3} \n${v4}"; - static String m28(v0) => + static String m31(v0) => "Failed to initialize web localization resources! ${v0}"; - static String m29(v0) => + static String m32(v0) => "Scan complete, found ${v0} valid installation directories"; - static String m30(v0) => "${v0} days "; + static String m33(v0) => "${v0} days "; - static String m31(v0) => "Loaded localization version: ${v0}"; + static String m34(v0) => "Loaded localization version: ${v0}"; - static String m32(v0) => "Advanced Localization -> ${v0}"; + static String m35(v0) => "Advanced Localization -> ${v0}"; - static String m33(v0, v1) => + static String m36(v0, v1) => "Localization text lines: ${v0} P4K text lines: ${v1}"; - static String m34(v0) => "Preview: ${v0}"; - - static String m35(v0) => - "There\'s a new version of the localization you installed on ${v0}!"; - - static String m36(v1, v2) => - "RSI Server reports version: ${v1} \n\nLocal version: ${v2} \n\nIt is recommended to use RSI Launcher to update the game!"; - - static String m37(v0) => - "Delete the local file? You can try downloading it again later. Error message:\n${v0}"; + static String m37(v0) => "Preview: ${v0}"; static String m38(v0) => + "There\'s a new version of the localization you installed on ${v0}!"; + + static String m39(v1, v2) => + "RSI Server reports version: ${v1} \n\nLocal version: ${v2} \n\nIt is recommended to use RSI Launcher to update the game!"; + + static String m40(v0) => + "Delete the local file? You can try downloading it again later. Error message:\n${v0}"; + + static String m41(v0) => "${v0}\n\nThe local translation model has poor handling of mixed Chinese and English; if needed, it is recommended to send them separately."; - static String m39(v0) => "Community Input Method Support: ${v0}"; + static String m42(v0) => "Community Input Method Support: ${v0}"; - static String m40(v0) => "Community input method support updated to: ${v0}"; + static String m43(v0) => "Community input method support updated to: ${v0}"; - static String m41(v0) => "Channel: ${v0}"; + static String m44(v0) => "Channel: ${v0}"; - static String m42(v0) => "Enabled (${v0}):"; + static String m45(v0) => "Enabled (${v0}):"; - static String m43(v0) => "Installation error!\n\n ${v0}"; + static String m46(v0) => "Installation error!\n\n ${v0}"; - static String m44(v0) => "Installed version: ${v0}"; + static String m47(v0) => "Installed version: ${v0}"; - static String m45(v0) => "Update time: ${v0}"; + static String m48(v0) => "Update time: ${v0}"; - static String m46(v0) => "Version number: ${v0}"; - - static String m47(v0, v1, v2, v3, v4) => - "Area: ${v0} Player driving: ${v1} Collision entity: ${v2} \nCollision vehicle: ${v3} Collision distance: ${v4} "; - - static String m48(v0, v2, v3) => - "Victim ID: ${v0} \nLocation: ${v2} \nArea: ${v3}"; - - static String m49(v0) => "Detailed information: ${v0}"; + static String m49(v0) => "Version number: ${v0}"; static String m50(v0, v1, v2, v3, v4) => + "Area: ${v0} Player driving: ${v1} Collision entity: ${v2} \nCollision vehicle: ${v3} Collision distance: ${v4} "; + + static String m51(v0, v2, v3) => + "Victim ID: ${v0} \nLocation: ${v2} \nArea: ${v3}"; + + static String m52(v0) => "Detailed information: ${v0}"; + + static String m53(v0, v1, v2, v3, v4) => "Kills: ${v0} Deaths: ${v1} Suicides: ${v2} \nVehicle Destruction (Soft Death): ${v3} Vehicle Destruction (Disintegration): ${v4}"; - static String m51(v0, v1) => "Mode: ${v0} Time taken: ${v1} seconds"; + static String m54(v0, v1) => "Mode: ${v0} Time taken: ${v1} seconds"; - static String m52(v0, v1, v2) => "${v0} hours ${v1} minutes ${v2} seconds"; + static String m55(v0, v1, v2) => "${v0} hours ${v1} minutes ${v2} seconds"; - static String m53(v0, v1) => "Player ID: ${v0} Location: ${v1}"; + static String m56(v0, v1) => "Player ID: ${v0} Location: ${v1}"; - static String m54(v0) => "Player ${v0} logged in..."; + static String m57(v0) => "Player ${v0} logged in..."; - static String m55(v0, v1, v2, v3, v4) => + static String m58(v0, v1, v2, v3, v4) => "Vehicle model: ${v0} \nArea: ${v1} \nDamage level: ${v2} (${v3}) Responsible party: ${v4}"; - static String m56(v0) => "Connection failed: ${v0}"; + static String m59(v0) => "Connection failed: ${v0}"; - static String m57(v0) => "${v0} days ago"; + static String m60(v0) => "${v0} days ago"; - static String m58(v0) => "Failed to exit room: ${v0}"; + static String m61(v0) => "Failed to exit room: ${v0}"; - static String m59(v0) => "Failed to get verification code: ${v0}"; + static String m62(v0) => "Failed to get verification code: ${v0}"; - static String m60(v0) => "${v0} hours ago"; + static String m63(v0) => "${v0} hours ago"; - static String m61(v0) => "Are you sure you want to kick ${v0}?"; + static String m64(v0) => "Are you sure you want to kick ${v0}?"; - static String m62(v0) => "Failed to kick member: ${v0}"; + static String m65(v0) => "Failed to kick member: ${v0}"; - static String m63(v0) => "Failed to load room list: ${v0}"; + static String m66(v0) => "Failed to load room list: ${v0}"; - static String m64(v0, v1) => "${v0}/${v1} members"; + static String m67(v0, v1) => "${v0}/${v1} members"; - static String m65(v0) => "${v0} minutes ago"; + static String m68(v0) => "${v0} minutes ago"; - static String m66(v0) => "Reconnect failed: ${v0}"; + static String m69(v0) => "Reconnect failed: ${v0}"; - static String m67(v0) => "Reconnect failed, attempted ${v0} times"; + static String m70(v0) => "Reconnect failed, attempted ${v0} times"; - static String m68(v0) => "Registration failed: ${v0}"; + static String m71(v0) => "Registration failed: ${v0}"; - static String m69(v0) => + static String m72(v0) => "Are you sure you want to transfer ownership to ${v0}?"; - static String m70(v0) => "Failed to transfer ownership: ${v0}"; + static String m73(v0) => "Failed to transfer ownership: ${v0}"; - static String m71(v0) => "Current status: ${v0}"; + static String m74(v0) => "Current status: ${v0}"; - static String m72(v0, v1, v2) => + static String m75(v0, v1, v2) => "${v0} Min value: ${v1} / Max value: ${v2}"; - static String m73(v0) => "Performance Optimization -> ${v0}"; + static String m76(v0) => "Performance Optimization -> ${v0}"; - static String m74(v0) => + static String m77(v0) => "Cache size ${v0}MB, clears the localization file cache downloaded by SCToolbox, does not affect installed localizations"; - static String m75(v0) => + static String m78(v0) => "Number of cores set: ${v0} (This feature applies to SCToolbox one-click launch on the homepage or RSI Launcher admin mode in tools. When set to 0, this feature is not enabled)"; - static String m76(v0) => + static String m79(v0) => "⚠ AnalyticsApi.touch(\"launch\") error: ${v0} - continuing"; - static String m77(v0) => "✗ appModel.initApp() error: ${v0}"; + static String m80(v0) => "✗ appModel.initApp() error: ${v0}"; - static String m78(v0) => "⚠ aria2cModelProvider initialization error: ${v0}"; + static String m81(v0) => "⚠ aria2cModelProvider initialization error: ${v0}"; - static String m79(v0) => "⚠ URLConf.checkHost() error: ${v0} - continuing"; + static String m82(v0) => "⚠ URLConf.checkHost() error: ${v0} - continuing"; - static String m80(v0) => "⚠ appModel.checkUpdate() error: ${v0} - continuing"; + static String m83(v0) => "⚠ appModel.checkUpdate() error: ${v0} - continuing"; - static String m81(v0) => "[Diagnostic] Failed to close Hive boxes: ${v0}"; + static String m84(v0) => "[Diagnostic] Failed to close Hive boxes: ${v0}"; - static String m82(v0) => + static String m85(v0) => "[Diagnostic] Database directory does not exist: ${v0}"; - static String m83(v0) => "[Diagnostic] Deleting database directory: ${v0}"; + static String m86(v0) => "[Diagnostic] Deleting database directory: ${v0}"; - static String m84(v0) => "[Diagnostic] ${v0}"; + static String m87(v0) => "[Diagnostic] ${v0}"; - static String m85(v0) => "Diagnostic Mode - Step ${v0}"; + static String m88(v0) => "Diagnostic Mode - Step ${v0}"; - static String m86(v0) => "✗ Hive.openBox(\"app_conf\") error: ${v0}"; + static String m89(v0) => "✗ Hive.openBox(\"app_conf\") error: ${v0}"; - static String m87(v0) => "[${v0}] ⚠ Log file does not exist"; + static String m90(v0) => "[${v0}] ⚠ Log file does not exist"; - static String m88(v0) => + static String m91(v0) => "[${v0}] --- Log reading complete (showing last 1000 lines) ---"; - static String m89(v0, v1) => "[${v0}] ✗ Failed to read log: ${v1}"; + static String m92(v0, v1) => "[${v0}] ✗ Failed to read log: ${v1}"; - static String m90(v0) => "[Diagnostic] Failed to reset database: ${v0}"; + static String m93(v0) => "[Diagnostic] Failed to reset database: ${v0}"; - static String m91(v0) => "[${v0}] Starting initialization..."; + static String m94(v0) => "[${v0}] Starting initialization..."; - static String m92(v0) => "[${v0}] --- Starting to read full log file ---"; - - static String m93(v0) => - "Cleanup failed, please remove manually, file location: ${v0}"; - - static String m94(v0) => "An error occurred: ${v0}"; - - static String m95(v0) => - "Initialization failed, please take a screenshot to report to the developer. ${v0}"; + static String m95(v0) => "[${v0}] --- Starting to read full log file ---"; static String m96(v0) => - "If you have issues with the nvme patch, please run this tool. (May cause game installation/updates to be unavailable.)\n\nCurrent patch status: ${v0}"; + "Cleanup failed, please remove manually, file location: ${v0}"; - static String m97(v0) => - "Use the diversion download service provided by Star Citizen Chinese Wiki for downloading or repairing p4k.\nVersion info: ${v0}"; + static String m97(v0) => "An error occurred: ${v0}"; static String m98(v0) => - "In some cases, the log file of the RSI Launcher may be corrupted, preventing problem scanning from completing. Use this tool to clean up corrupted log files.\n\nCurrent log file size: ${v0} MB"; + "Initialization failed, please take a screenshot to report to the developer. ${v0}"; static String m99(v0) => + "If you have issues with the nvme patch, please run this tool. (May cause game installation/updates to be unavailable.)\n\nCurrent patch status: ${v0}"; + + static String m100(v0) => + "Use the diversion download service provided by Star Citizen Chinese Wiki for downloading or repairing p4k.\nVersion info: ${v0}"; + + static String m101(v0) => + "In some cases, the log file of the RSI Launcher may be corrupted, preventing problem scanning from completing. Use this tool to clean up corrupted log files.\n\nCurrent log file size: ${v0} MB"; + + static String m102(v0) => "If game graphics appear abnormal or after version updates, you can use this tool to clear expired shaders (also restores Vulkan to DX11)\n\nCache size: ${v0} MB"; - static String m100(v0, v1, v2, v3, v4) => + static String m103(v0, v1, v2, v3, v4) => "System: ${v0}\n\nProcessor: ${v1}\n\nMemory size: ${v2}GB\n\nGPU information:\n${v3}\n\nStorage information:\n${v4}\n\n"; - static String m101(v0) => "Current Renderer: ${v0}"; + static String m104(v0) => "Current Renderer: ${v0}"; - static String m102(v0) => "Save failed: ${v0}"; + static String m105(v0) => "Save failed: ${v0}"; - static String m103(v0) => "Processing failed!: ${v0}"; + static String m106(v0) => "Processing failed!: ${v0}"; - static String m104(v0) => "Failed to read launcher information: ${v0}"; + static String m107(v0) => "Failed to read launcher information: ${v0}"; - static String m105(v0) => "Patch status: ${v0}"; + static String m108(v0) => "Patch status: ${v0}"; - static String m106(v0) => "Launcher internal version information: ${v0}"; + static String m109(v0) => "Launcher internal version information: ${v0}"; - static String m107(v0) => "Export Selected (${v0})"; + static String m110(v0) => "Export Selected (${v0})"; - static String m108(v0) => "Extraction failed: ${v0}"; + static String m111(v0) => "Extraction failed: ${v0}"; - static String m109(v0) => "Extraction complete: ${v0}"; + static String m112(v0) => "Extraction complete: ${v0}"; - static String m110(v0) => "Extracting: ${v0}"; + static String m113(v0) => "Extracting: ${v0}"; - static String m111(v0) => "Extraction completed, ${v0} files total"; + static String m114(v0) => "Extraction completed, ${v0} files total"; - static String m112(v0) => "Current file: ${v0}"; + static String m115(v0) => "Current file: ${v0}"; - static String m113(v0, v1) => "Extracting (${v0}/${v1})"; + static String m116(v0, v1) => "Extracting (${v0}/${v1})"; - static String m114(v0) => "Opening file: ${v0}"; + static String m117(v0) => "Opening file: ${v0}"; - static String m115(v0, v1) => + static String m118(v0, v1) => "Loading complete: ${v0} files, time taken: ${v1} ms"; - static String m116(v0) => "Reading file: ${v0}..."; + static String m119(v0) => "Reading file: ${v0}..."; - static String m117(v0, v1) => "Processing files (${v0}/${v1})..."; + static String m120(v0, v1) => "Processing files (${v0}/${v1})..."; - static String m118(v0) => "Unknown file type\n${v0}"; + static String m121(v0) => "Unknown file type\n${v0}"; - static String m119(v0) => "P4K Viewer -> ${v0}"; + static String m122(v0) => "P4K Viewer -> ${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -340,6 +346,7 @@ class MessageLookup extends MessageLookupByLibrary { "about_online_feedback": MessageLookupByLibrary.simpleMessage( "Online Feedback", ), + "action_back": MessageLookupByLibrary.simpleMessage("Back"), "action_close": MessageLookupByLibrary.simpleMessage("Close"), "action_open_folder": MessageLookupByLibrary.simpleMessage("Open Folder"), "app_common_error_info": m0, @@ -403,6 +410,87 @@ class MessageLookup extends MessageLookupByLibrary { "Note: Currently using diversion server for updates, which may result in decreased download speed but helps us with cost control. If the download is abnormal, please click here to switch to manual installation.", ), "app_upgrade_title_new_version_found": m5, + "dcb_viewer_error_not_dcb": MessageLookupByLibrary.simpleMessage( + "Invalid DCB file format", + ), + "dcb_viewer_export": MessageLookupByLibrary.simpleMessage("Export"), + "dcb_viewer_export_failed": MessageLookupByLibrary.simpleMessage( + "Export failed", + ), + "dcb_viewer_export_multiple_xml": MessageLookupByLibrary.simpleMessage( + "Export as multiple XML files", + ), + "dcb_viewer_export_single_xml": MessageLookupByLibrary.simpleMessage( + "Export as single XML", + ), + "dcb_viewer_export_success": MessageLookupByLibrary.simpleMessage( + "Export successful", + ), + "dcb_viewer_fold_all": MessageLookupByLibrary.simpleMessage( + "Fold/Unfold Code Blocks", + ), + "dcb_viewer_loaded_records": m6, + "dcb_viewer_loading": MessageLookupByLibrary.simpleMessage( + "Loading DCB file...", + ), + "dcb_viewer_loading_records": MessageLookupByLibrary.simpleMessage( + "Loading record list...", + ), + "dcb_viewer_no_records": MessageLookupByLibrary.simpleMessage("No records"), + "dcb_viewer_no_search_results": MessageLookupByLibrary.simpleMessage( + "No search results", + ), + "dcb_viewer_parsing": MessageLookupByLibrary.simpleMessage( + "Parsing DataForge data...", + ), + "dcb_viewer_search_case_sensitive": MessageLookupByLibrary.simpleMessage( + "Match Case", + ), + "dcb_viewer_search_fulltext_placeholder": + MessageLookupByLibrary.simpleMessage( + "Full text search (press Enter)...", + ), + "dcb_viewer_search_in_file": MessageLookupByLibrary.simpleMessage( + "Search in current file...", + ), + "dcb_viewer_search_list_placeholder": MessageLookupByLibrary.simpleMessage( + "Filter record paths...", + ), + "dcb_viewer_search_mode": MessageLookupByLibrary.simpleMessage( + "Search Mode", + ), + "dcb_viewer_search_no_results": MessageLookupByLibrary.simpleMessage( + "No results", + ), + "dcb_viewer_search_regex": MessageLookupByLibrary.simpleMessage( + "Use Regular Expression", + ), + "dcb_viewer_search_results": m7, + "dcb_viewer_searching": MessageLookupByLibrary.simpleMessage( + "Searching...", + ), + "dcb_viewer_select_another_file": MessageLookupByLibrary.simpleMessage( + "Select Another File", + ), + "dcb_viewer_select_dcb_file": MessageLookupByLibrary.simpleMessage( + "Select DCB File", + ), + "dcb_viewer_select_file_description": MessageLookupByLibrary.simpleMessage( + "Please select a .dcb file or DCB file extracted from P4K", + ), + "dcb_viewer_select_file_title": MessageLookupByLibrary.simpleMessage( + "Select DCB File", + ), + "dcb_viewer_select_p4k_file": MessageLookupByLibrary.simpleMessage( + "Select P4K File", + ), + "dcb_viewer_select_record": MessageLookupByLibrary.simpleMessage( + "Select a record to view XML content", + ), + "dcb_viewer_title": m8, + "dcb_viewer_title_standalone": MessageLookupByLibrary.simpleMessage( + "DataForge Viewer", + ), "doctor_action_analyzing": MessageLookupByLibrary.simpleMessage( "Analyzing...", ), @@ -419,30 +507,30 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage( "Checking: Runtime environment", ), - "doctor_action_info_game_abnormal_exit": m6, + "doctor_action_info_game_abnormal_exit": m9, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage( "Game abnormal exit: Unknown exception", ), - "doctor_action_info_info_feedback": m7, - "doctor_action_result_analysis_issues_found": m8, + "doctor_action_info_info_feedback": m10, + "doctor_action_result_analysis_issues_found": m11, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage( "Analysis complete, no issues found", ), - "doctor_action_result_create_folder_fail": m9, + "doctor_action_result_create_folder_fail": m12, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage( "Folder creation successful, please try to continue downloading the game!", ), - "doctor_action_result_fix_fail": m10, + "doctor_action_result_fix_fail": m13, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "Fix successful, please try restarting and continue installing the game! If the registry modification causes compatibility issues with other software, please use the NVME registry cleaner in the Tools section.", ), "doctor_action_result_game_start_success": MessageLookupByLibrary.simpleMessage( "Fix successful, please try to start the game. (If the problem persists, please use the \'Reinstall EAC\' tool in the toolbox)", ), - "doctor_action_result_info_unsupported_os": m11, + "doctor_action_result_info_unsupported_os": m14, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage( "This issue is not currently supported for automatic handling, please provide screenshots to seek help", @@ -535,10 +623,10 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_info_processing": MessageLookupByLibrary.simpleMessage( "Processing...", ), - "doctor_info_result_add_registry_value": m12, + "doctor_info_result_add_registry_value": m15, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage("Chinese installation path!"), - "doctor_info_result_chinese_install_path_error": m13, + "doctor_info_result_chinese_install_path_error": m16, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage( "Chinese username!", ), @@ -546,12 +634,12 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Chinese username may cause game startup/installation errors! Click the fix button to view the modification tutorial!", ), - "doctor_info_result_create_live_folder": m14, + "doctor_info_result_create_live_folder": m17, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage( "EasyAntiCheat not installed or abnormal exit", ), - "doctor_info_result_fix_suggestion": m15, + "doctor_info_result_fix_suggestion": m18, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "New type NVME device, not compatible with RSI Launcher, may cause installation failure", @@ -562,7 +650,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("Low physical memory"), - "doctor_info_result_memory_requirement": m16, + "doctor_info_result_memory_requirement": m19, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("EasyAntiCheat files missing"), "doctor_info_result_missing_live_folder": MessageLookupByLibrary.simpleMessage( @@ -574,7 +662,7 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage( "Unsupported operating system, the game may not run", ), - "doctor_info_result_upgrade_system": m17, + "doctor_info_result_upgrade_system": m20, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "EasyAntiCheat files not found in LIVE folder or files are incomplete, please use RSI Launcher to verify files", @@ -589,7 +677,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Please select the game installation directory on the home page.", ), - "doctor_title_one_click_diagnosis": m18, + "doctor_title_one_click_diagnosis": m21, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage( "Cancel All", ), @@ -631,11 +719,11 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_action_resume_all": MessageLookupByLibrary.simpleMessage( "Resume All", ), - "downloader_info_checked": m19, + "downloader_info_checked": m22, "downloader_info_checking": MessageLookupByLibrary.simpleMessage( "Checking", ), - "downloader_info_checking_progress": m20, + "downloader_info_checking_progress": m23, "downloader_info_deleted": MessageLookupByLibrary.simpleMessage("Deleted"), "downloader_info_download_completed": MessageLookupByLibrary.simpleMessage( "Download Completed", @@ -647,9 +735,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Please enter download units, e.g.: 1, 100k, 10m. Enter 0 or leave blank for unlimited speed.", ), - "downloader_info_download_upload_speed": m21, - "downloader_info_downloaded": m22, - "downloader_info_downloading": m23, + "downloader_info_download_upload_speed": m24, + "downloader_info_downloaded": m25, + "downloader_info_downloading": m26, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage( "Downloading...", ), @@ -672,9 +760,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Speed limit settings saved. Will apply on next downloader start.", ), - "downloader_info_status": m24, - "downloader_info_total_size": m25, - "downloader_info_uploaded": m26, + "downloader_info_status": m27, + "downloader_info_total_size": m28, + "downloader_info_uploaded": m29, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("Waiting"), "downloader_input_download_speed_limit": MessageLookupByLibrary.simpleMessage("Download Speed Limit:"), @@ -717,7 +805,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("DPS Calculator Localization"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("External Browser Extension:"), - "home_action_info_abnormal_game_exit": m27, + "home_action_info_abnormal_game_exit": m30, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage( "Please check the popup web link for detailed information.", ), @@ -728,7 +816,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage( "Game built-in", ), - "home_action_info_initialization_failed": m28, + "home_action_info_initialization_failed": m31, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage( "Initializing localization resources...", @@ -751,7 +839,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Roberts Space Industries, the origin of everything", ), - "home_action_info_scan_complete_valid_directories_found": m29, + "home_action_info_scan_complete_valid_directories_found": m32, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage( "Scanning ...", ), @@ -814,7 +902,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_holiday_countdown": MessageLookupByLibrary.simpleMessage( "Holiday Countdown", ), - "home_holiday_countdown_days": m30, + "home_holiday_countdown_days": m33, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* The holiday dates above are manually collected and maintained, and may contain errors. Feedback is welcome!", ), @@ -893,10 +981,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Reading p4k file..."), "home_localization_advanced_msg_reading_server_localization_text": MessageLookupByLibrary.simpleMessage("Getting localization text..."), - "home_localization_advanced_msg_version": m31, - "home_localization_advanced_title": m32, - "home_localization_advanced_title_msg": m33, - "home_localization_advanced_title_preview": m34, + "home_localization_advanced_msg_version": m34, + "home_localization_advanced_title": m35, + "home_localization_advanced_title_msg": m36, + "home_localization_advanced_title_preview": m37, "home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage( "This version does not provide a description", ), @@ -906,7 +994,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "New localization version available!", ), - "home_localization_new_version_installed": m35, + "home_localization_new_version_installed": m38, "home_localization_select_customize_file": MessageLookupByLibrary.simpleMessage( "Please select custom localization file", @@ -928,7 +1016,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "This feature helps you launch the game more conveniently.\n\nTo ensure account safety, this feature uses a localized browser to maintain login status and will not save your password information (unless you enable the auto-fill feature).\n\nWhen using this feature to login, please ensure that your SCToolbox is downloaded from a trusted source.", ), - "home_login_info_rsi_server_report": m36, + "home_login_info_rsi_server_report": m39, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage( "Launching the game for you...", ), @@ -961,12 +1049,12 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Download has started. Please re-enable the translation function after the model download is complete.", ), - "input_method_auto_translate_model_load_failed_content": m37, + "input_method_auto_translate_model_load_failed_content": m40, "input_method_auto_translate_model_load_failed_title": MessageLookupByLibrary.simpleMessage( "Translation model loading failed", ), - "input_method_auto_translate_model_tips": m38, + "input_method_auto_translate_model_tips": m41, "input_method_auto_translate_model_tips_downloading_tips": MessageLookupByLibrary.simpleMessage( "Model is downloading, please wait...", @@ -975,7 +1063,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Community input method support not installed", ), - "input_method_community_input_method_support_version": m39, + "input_method_community_input_method_support_version": m42, "input_method_confirm_enable_remote_input": MessageLookupByLibrary.simpleMessage("Confirm enable remote input?"), "input_method_confirm_install_advanced_localization": @@ -1035,7 +1123,7 @@ class MessageLookup extends MessageLookupByLibrary { "input_method_support_updated": MessageLookupByLibrary.simpleMessage( "Community input method support updated", ), - "input_method_support_updated_to_version": m40, + "input_method_support_updated_to_version": m43, "input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage( "Text cannot be empty!", ), @@ -1056,7 +1144,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Localization Feedback"), "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage("Uninstall Localization"), - "localization_info_channel": m41, + "localization_info_channel": m44, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("Community Localization"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage( @@ -1065,16 +1153,16 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_custom_files": MessageLookupByLibrary.simpleMessage( "Custom Files", ), - "localization_info_enabled": m42, + "localization_info_enabled": m45, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "USER.cfg contains incompatible localization parameters, which may be residual information from previous localization files.\n\nThis may cause the localization to be invalid or display garbled characters. Click confirm to remove these with one click (will not affect other configurations).", ), - "localization_info_installation_error": m43, + "localization_info_installation_error": m46, "localization_info_installed": MessageLookupByLibrary.simpleMessage( "Installed", ), - "localization_info_installed_version": m44, + "localization_info_installed_version": m47, "localization_info_language": MessageLookupByLibrary.simpleMessage( "Language: ", ), @@ -1097,14 +1185,14 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_unavailable": MessageLookupByLibrary.simpleMessage( "Unavailable", ), - "localization_info_update_time": m45, - "localization_info_version_number": m46, - "log_analyzer_collision_details": m47, - "log_analyzer_death_details": m48, + "localization_info_update_time": m48, + "localization_info_version_number": m49, + "log_analyzer_collision_details": m50, + "log_analyzer_death_details": m51, "log_analyzer_description": MessageLookupByLibrary.simpleMessage( "Analyze your gameplay records (login, death, kills, and other information)", ), - "log_analyzer_details_info": m49, + "log_analyzer_details_info": m52, "log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage( "Disintegration", ), @@ -1148,11 +1236,11 @@ class MessageLookup extends MessageLookupByLibrary { "log_analyzer_game_start": MessageLookupByLibrary.simpleMessage( "Game Start", ), - "log_analyzer_kill_death_suicide_count": m50, + "log_analyzer_kill_death_suicide_count": m53, "log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage( "Kill Summary", ), - "log_analyzer_mode_loading_time": m51, + "log_analyzer_mode_loading_time": m54, "log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage( "No game crash information detected", ), @@ -1164,9 +1252,9 @@ class MessageLookup extends MessageLookupByLibrary { "----- SCToolbox One-Click Diagnosis -----", ), "log_analyzer_play_time": MessageLookupByLibrary.simpleMessage("Play Time"), - "log_analyzer_play_time_format": m52, - "log_analyzer_player_location": m53, - "log_analyzer_player_login": m54, + "log_analyzer_play_time_format": m55, + "log_analyzer_player_location": m56, + "log_analyzer_player_login": m57, "log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage( "Enter keywords to search content", ), @@ -1177,7 +1265,7 @@ class MessageLookup extends MessageLookupByLibrary { "Soft Death", ), "log_analyzer_title": MessageLookupByLibrary.simpleMessage("Log Analyzer"), - "log_analyzer_vehicle_damage_details": m55, + "log_analyzer_vehicle_damage_details": m58, "log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage( "View Local Inventory", ), @@ -1222,7 +1310,7 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage( "Confirm Dismiss", ), - "party_room_connect_error": m56, + "party_room_connect_error": m59, "party_room_connect_failed": MessageLookupByLibrary.simpleMessage( "Connection failed", ), @@ -1253,7 +1341,7 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_create_room": MessageLookupByLibrary.simpleMessage( "Create Room", ), - "party_room_days_ago": m57, + "party_room_days_ago": m60, "party_room_disconnected": MessageLookupByLibrary.simpleMessage( "Connection lost", ), @@ -1288,7 +1376,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "party_room_error": MessageLookupByLibrary.simpleMessage("Error"), "party_room_exit_room": MessageLookupByLibrary.simpleMessage("Exit Room"), - "party_room_exit_room_failed": m58, + "party_room_exit_room_failed": m61, "party_room_game_id_empty": MessageLookupByLibrary.simpleMessage( "Game ID cannot be empty", ), @@ -1298,12 +1386,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_game_not_started": MessageLookupByLibrary.simpleMessage( "", ), - "party_room_get_code_failed": m59, + "party_room_get_code_failed": m62, "party_room_go_login": MessageLookupByLibrary.simpleMessage("Login"), "party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage( "You are browsing as a guest. Log in to create or join rooms.", ), - "party_room_hours_ago": m60, + "party_room_hours_ago": m63, "party_room_info_updated": MessageLookupByLibrary.simpleMessage( "Room information updated", ), @@ -1322,8 +1410,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_kick_member": MessageLookupByLibrary.simpleMessage( "Kick Member", ), - "party_room_kick_member_confirm": m61, - "party_room_kick_member_failed": m62, + "party_room_kick_member_confirm": m64, + "party_room_kick_member_failed": m65, "party_room_kicked": MessageLookupByLibrary.simpleMessage( "was kicked from the room", ), @@ -1338,13 +1426,13 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_link_format_error": MessageLookupByLibrary.simpleMessage( "Link format error!", ), - "party_room_load_list_failed": m63, + "party_room_load_list_failed": m66, "party_room_loading": MessageLookupByLibrary.simpleMessage("Loading..."), "party_room_location": MessageLookupByLibrary.simpleMessage("Location"), "party_room_login": MessageLookupByLibrary.simpleMessage("Login"), "party_room_main_menu": MessageLookupByLibrary.simpleMessage("
"), - "party_room_members_count": m64, - "party_room_minutes_ago": m65, + "party_room_members_count": m67, + "party_room_minutes_ago": m68, "party_room_need_login": MessageLookupByLibrary.simpleMessage( "Login Required", ), @@ -1381,12 +1469,12 @@ class MessageLookup extends MessageLookupByLibrary { ), "party_room_prev_step": MessageLookupByLibrary.simpleMessage("Previous"), "party_room_reconnect": MessageLookupByLibrary.simpleMessage("Reconnect"), - "party_room_reconnect_failed": m66, + "party_room_reconnect_failed": m69, "party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage( "The connection to the room server has been lost. Do you want to reconnect?", ), - "party_room_reconnect_retry": m67, - "party_room_register_failed": m68, + "party_room_reconnect_retry": m70, + "party_room_register_failed": m71, "party_room_register_success": MessageLookupByLibrary.simpleMessage( "Registration Successful!", ), @@ -1476,8 +1564,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_transfer_owner": MessageLookupByLibrary.simpleMessage( "Transfer Ownership", ), - "party_room_transfer_owner_confirm": m69, - "party_room_transfer_owner_failed": m70, + "party_room_transfer_owner_confirm": m72, + "party_room_transfer_owner_failed": m73, "party_room_unknown_area": MessageLookupByLibrary.simpleMessage( "Unknown Area", ), @@ -1529,7 +1617,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "performance_action_super": MessageLookupByLibrary.simpleMessage("Super"), "performance_info_applied": MessageLookupByLibrary.simpleMessage("Applied"), - "performance_info_current_status": m71, + "performance_info_current_status": m74, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage( "Deleting config file...", ), @@ -1545,7 +1633,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_info_graphics": MessageLookupByLibrary.simpleMessage( "Graphics", ), - "performance_info_min_max_values": m72, + "performance_info_min_max_values": m75, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage( "Not applied", ), @@ -1726,7 +1814,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_json_text_water_info": MessageLookupByLibrary.simpleMessage( "Various water level effects", ), - "performance_title_performance_optimization": m73, + "performance_title_performance_optimization": m76, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage("Clear Localization File Cache"), "setting_action_create_desktop_shortcut": @@ -1741,7 +1829,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage("Auto-fill data cleared"), - "setting_action_info_cache_clearing_info": m74, + "setting_action_info_cache_clearing_info": m77, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage( "This will not affect installed localizations.", @@ -1801,7 +1889,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage("Reset Auto Password Fill"), - "setting_action_set_core_count": m75, + "setting_action_set_core_count": m78, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage( "Set Game File (StarCitizen.exe)", ), @@ -1845,39 +1933,39 @@ class MessageLookup extends MessageLookupByLibrary { "splash_analytics_done": MessageLookupByLibrary.simpleMessage( "✓ AnalyticsApi.touch(\"launch\") completed", ), - "splash_analytics_error": m76, + "splash_analytics_error": m79, "splash_analytics_timeout": MessageLookupByLibrary.simpleMessage( "⚠ AnalyticsApi.touch() timeout (10s) - continuing", ), "splash_app_init_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.initApp() completed", ), - "splash_app_init_error": m77, + "splash_app_init_error": m80, "splash_app_init_timeout": MessageLookupByLibrary.simpleMessage( "✗ appModel.initApp() timeout (10s)", ), "splash_aria2c_done": MessageLookupByLibrary.simpleMessage( "✓ aria2cModelProvider initialization complete", ), - "splash_aria2c_error": m78, + "splash_aria2c_error": m81, "splash_check_host_done": MessageLookupByLibrary.simpleMessage( "✓ URLConf.checkHost() completed", ), - "splash_check_host_error": m79, + "splash_check_host_error": m82, "splash_check_host_timeout": MessageLookupByLibrary.simpleMessage( "⚠ URLConf.checkHost() timeout (10s) - continuing", ), "splash_check_update_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.checkUpdate() completed", ), - "splash_check_update_error": m80, + "splash_check_update_error": m83, "splash_check_update_timeout": MessageLookupByLibrary.simpleMessage( "⚠ appModel.checkUpdate() timeout (10s) - continuing", ), "splash_check_version": MessageLookupByLibrary.simpleMessage( "Checking splash_alert_info_version...", ), - "splash_close_hive_failed": m81, + "splash_close_hive_failed": m84, "splash_context_unmounted": MessageLookupByLibrary.simpleMessage( "✗ Context unmounted", ), @@ -1893,16 +1981,16 @@ class MessageLookup extends MessageLookupByLibrary { "splash_db_deleted": MessageLookupByLibrary.simpleMessage( "[Diagnostic] Database directory deleted", ), - "splash_db_not_exist": m82, + "splash_db_not_exist": m85, "splash_db_reset_done": MessageLookupByLibrary.simpleMessage( "[Diagnostic] Database reset complete, preparing to exit application", ), "splash_db_reset_msg": MessageLookupByLibrary.simpleMessage( "Database has been reset, application will exit. Please restart the application.", ), - "splash_deleting_db": m83, - "splash_diagnostic_log": m84, - "splash_diagnostic_mode": m85, + "splash_deleting_db": m86, + "splash_diagnostic_log": m87, + "splash_diagnostic_mode": m88, "splash_error": MessageLookupByLibrary.simpleMessage("Error"), "splash_exec_analytics": MessageLookupByLibrary.simpleMessage( "Executing AnalyticsApi.touch(\"launch\")...", @@ -1922,7 +2010,7 @@ class MessageLookup extends MessageLookupByLibrary { "splash_hive_done": MessageLookupByLibrary.simpleMessage( "✓ Hive.openBox(\"app_conf\") completed", ), - "splash_hive_error": m86, + "splash_hive_error": m89, "splash_hive_timeout": MessageLookupByLibrary.simpleMessage( "✗ Hive.openBox(\"app_conf\") timeout (10s)", ), @@ -1932,24 +2020,24 @@ class MessageLookup extends MessageLookupByLibrary { "splash_init_task_status": MessageLookupByLibrary.simpleMessage( "Initialization Task Status:", ), - "splash_log_not_exist": m87, - "splash_log_read_done": m88, + "splash_log_not_exist": m90, + "splash_log_read_done": m91, "splash_open_hive_box": MessageLookupByLibrary.simpleMessage( "Opening Hive app_conf box...", ), "splash_read_full_log": MessageLookupByLibrary.simpleMessage( "Read Full Log", ), - "splash_read_log_failed": m89, + "splash_read_log_failed": m92, "splash_reset_database": MessageLookupByLibrary.simpleMessage( "Reset Database", ), - "splash_reset_db_failed": m90, + "splash_reset_db_failed": m93, "splash_show_agreement": MessageLookupByLibrary.simpleMessage( "Need to show user agreement dialog...", ), - "splash_start_init": m91, - "splash_start_read_log": m92, + "splash_start_init": m94, + "splash_start_read_log": m95, "splash_step0_done": MessageLookupByLibrary.simpleMessage( "--- Step 0 complete, entering Step 1 ---", ), @@ -2014,6 +2102,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_close_photography_mode": MessageLookupByLibrary.simpleMessage( "Close Photography Mode", ), + "tools_action_dcb_viewer": MessageLookupByLibrary.simpleMessage( + "DCB/DataForge Viewer", + ), + "tools_action_dcb_viewer_info": MessageLookupByLibrary.simpleMessage( + "View and export DataForge game database (.dcb) file content", + ), "tools_action_hosts_acceleration_experimental": MessageLookupByLibrary.simpleMessage( "Hosts Acceleration (Experimental)", @@ -2021,7 +2115,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage( "Cleanup complete, please complete one installation / game launch operation.", ), - "tools_action_info_cleanup_failed": m93, + "tools_action_info_cleanup_failed": m96, "tools_action_info_config_file_not_exist": MessageLookupByLibrary.simpleMessage( "Configuration file does not exist, please try running the game once", @@ -2029,7 +2123,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage( "EAC files have been removed for you. Next, we\'ll open the RSI launcher for you. Please go to SETTINGS -> VERIFY to reinstall EAC.", ), - "tools_action_info_error_occurred": m94, + "tools_action_info_error_occurred": m97, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "Fixed successfully, please try restarting your computer and then continue installing the game! If the registry modification causes compatibility issues with other software, please use the NVME Registry Cleanup in Tools.", ), @@ -2041,7 +2135,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Write IP information to the Hosts file to solve issues such as DNS pollution in some regions that prevent logging in to the official website.\nThis feature is in its first testing phase, please provide feedback if you encounter any issues.", ), - "tools_action_info_init_failed": m95, + "tools_action_info_init_failed": m98, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "Log file does not exist. Please try launching the game or installing the game once and then exit the launcher. If the problem persists, please try updating the launcher to the latest version!", ), @@ -2054,7 +2148,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage( "Not installed", ), - "tools_action_info_nvme_patch_issue": m96, + "tools_action_info_nvme_patch_issue": m99, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "One-click disable in-game lens shake for better photography operations.\n\n@Lapernum provides parameter information.", @@ -2063,7 +2157,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "A p4k download task is already in progress, please check the download manager!", ), - "tools_action_info_p4k_download_repair_tip": m97, + "tools_action_info_p4k_download_repair_tip": m100, "tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage( "P4k is Star Citizen\'s core game file, over 100GB+. The offline download provided by SCToolbox is to help users who have extremely slow p4k file downloads or to repair p4k files that the official launcher cannot fix.\n\nNext, a dialog will ask for your save location (you can choose the Star Citizen folder or elsewhere). After downloading, please make sure the P4K file is placed in the LIVE folder, then verify and update using the Star Citizen launcher.", ), @@ -2081,7 +2175,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "RSI launcher directory not found, please try manual operation.", ), - "tools_action_info_rsi_launcher_log_issue": m98, + "tools_action_info_rsi_launcher_log_issue": m101, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage( "RSI launcher not found, please try reinstalling or manually adding it in settings.", @@ -2093,12 +2187,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "Run the RSI launcher as administrator, which may solve some issues.\n\nIf efficiency core blocking parameters are set, they will also be applied here.", ), - "tools_action_info_shader_cache_issue": m99, + "tools_action_info_shader_cache_issue": m102, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "Star Citizen game installation location not found, please complete at least one game launch operation or manually add it in settings.", ), - "tools_action_info_system_info_content": m100, + "tools_action_info_system_info_content": m103, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage( "System Information", ), @@ -2131,7 +2225,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "tools_action_switch_graphics_renderer": MessageLookupByLibrary.simpleMessage("Switch DirectX/Vulkan Renderer"), - "tools_action_switch_graphics_renderer_info": m101, + "tools_action_switch_graphics_renderer_info": m104, "tools_action_unp4k": MessageLookupByLibrary.simpleMessage("P4K Viewer"), "tools_action_unp4k_info": MessageLookupByLibrary.simpleMessage( "Unpack Star Citizen p4k files", @@ -2150,7 +2244,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_graphics_renderer_dialog_save": MessageLookupByLibrary.simpleMessage( "Save", ), - "tools_graphics_renderer_dialog_save_failed": m102, + "tools_graphics_renderer_dialog_save_failed": m105, "tools_graphics_renderer_dialog_save_success": MessageLookupByLibrary.simpleMessage("Renderer settings saved"), "tools_graphics_renderer_dialog_title": @@ -2195,7 +2289,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage( "Game installation location: ", ), - "tools_info_processing_failed": m103, + "tools_info_processing_failed": m106, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage( "RSI Launcher location:", ), @@ -2220,15 +2314,15 @@ class MessageLookup extends MessageLookupByLibrary { "Failed to read launcher information!", ), "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args": - m104, + m107, "tools_rsi_launcher_enhance_msg_error_launcher_notfound": MessageLookupByLibrary.simpleMessage("RSI launcher not found"), - "tools_rsi_launcher_enhance_msg_patch_status": m105, + "tools_rsi_launcher_enhance_msg_patch_status": m108, "tools_rsi_launcher_enhance_msg_uninstall": MessageLookupByLibrary.simpleMessage( "* To uninstall the enhancement patch, please reinstall the RSI launcher.", ), - "tools_rsi_launcher_enhance_msg_version": m106, + "tools_rsi_launcher_enhance_msg_version": m109, "tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage( "RSI Launcher Enhancement is a community feature that unpacks the \"RSI Launcher\" on your computer and adds additional enhancement features. Which features to use is up to you.\n\nCurrently, only multi-language operations are officially permitted by CIG. Launcher download enhancement is an extra feature we consider useful, but violating the CIG user agreement (https://robertsspaceindustries.com/eula) may result in serious consequences such as account banning. Whether to enable it is your decision, and we are not responsible for any consequences (game damage, account banning, etc.) that may arise.\n\nThe modifications to the launcher are open-sourced at: https://github.com/StarCitizenToolBox/RSILauncherEnhance, which you can check if needed.\n\nIf for any reason you need to cancel this enhancement patch, please directly reinstall the official launcher.", ), @@ -2263,10 +2357,10 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_action_deselect_all": MessageLookupByLibrary.simpleMessage( "Deselect All", ), - "tools_unp4k_action_export_selected": m107, - "tools_unp4k_action_extract_failed": m108, - "tools_unp4k_action_extract_success": m109, - "tools_unp4k_action_extracting": m110, + "tools_unp4k_action_export_selected": m110, + "tools_unp4k_action_extract_failed": m111, + "tools_unp4k_action_extract_success": m112, + "tools_unp4k_action_extracting": m113, "tools_unp4k_action_multi_select": MessageLookupByLibrary.simpleMessage( "Multi-Select", ), @@ -2279,12 +2373,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_extract_cancelled": MessageLookupByLibrary.simpleMessage( "Extraction cancelled", ), - "tools_unp4k_extract_completed": m111, - "tools_unp4k_extract_current_file": m112, + "tools_unp4k_extract_completed": m114, + "tools_unp4k_extract_current_file": m115, "tools_unp4k_extract_dialog_title": MessageLookupByLibrary.simpleMessage( "Extract Files", ), - "tools_unp4k_extract_progress": m113, + "tools_unp4k_extract_progress": m116, "tools_unp4k_missing_runtime": MessageLookupByLibrary.simpleMessage( "Missing Runtime", ), @@ -2296,17 +2390,17 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage( "Initializing...", ), - "tools_unp4k_msg_open_file": m114, - "tools_unp4k_msg_read_completed": m115, - "tools_unp4k_msg_read_file": m116, + "tools_unp4k_msg_open_file": m117, + "tools_unp4k_msg_read_completed": m118, + "tools_unp4k_msg_read_file": m119, "tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage( "Reading P4K file...", ), "tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage( "Processing files...", ), - "tools_unp4k_msg_reading3": m117, - "tools_unp4k_msg_unknown_file_type": m118, + "tools_unp4k_msg_reading3": m120, + "tools_unp4k_msg_unknown_file_type": m121, "tools_unp4k_search_no_result": MessageLookupByLibrary.simpleMessage( "No matching files found", ), @@ -2331,7 +2425,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_sort_size_desc": MessageLookupByLibrary.simpleMessage( "Larger First", ), - "tools_unp4k_title": m119, + "tools_unp4k_title": m122, "tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage( "Click file to preview", ), diff --git a/lib/generated/intl/messages_ja.dart b/lib/generated/intl/messages_ja.dart index 4dab681..a795665 100644 --- a/lib/generated/intl/messages_ja.dart +++ b/lib/generated/intl/messages_ja.dart @@ -33,228 +33,228 @@ class MessageLookup extends MessageLookupByLibrary { static String m5(v0) => "新しいバージョンが見つかりました -> ${v0}"; - static String m6(v0) => "ゲームが異常終了しました:${v0}"; + static String m9(v0) => "ゲームが異常終了しました:${v0}"; - static String m7(v0) => "info:${v0}、右下の「グループに参加」をクリックしてフィードバックしてください。"; + static String m10(v0) => "info:${v0}、右下の「グループに参加」をクリックしてフィードバックしてください。"; - static String m8(v0) => "分析完了、${v0}個の問題が見つかりました"; + static String m11(v0) => "分析完了、${v0}個の問題が見つかりました"; - static String m9(v0, v1) => + static String m12(v0, v1) => "フォルダの作成に失敗しました。手動で作成してみてください。\nディレクトリ:${v0} \nエラー:${v1}"; - static String m10(v0) => "修復に失敗しました、${v0}"; + static String m13(v0) => "修復に失敗しました、${v0}"; - static String m11(v0) => "サポートされていないオペレーティングシステム:${v0}"; + static String m14(v0) => "サポートされていないオペレーティングシステム:${v0}"; - static String m12(v0) => + static String m15(v0) => "レジストリにForcedPhysicalSectorSizeInBytes値を追加して古いデバイスをエミュレートします。ハードディスクパーティション(${v0})"; - static String m13(v0) => + static String m16(v0) => "中国語のインストールパスです!これはゲームの起動/インストールエラーを引き起こす可能性があります!(${v0})、RSIランチャーでインストールパスを変更してください。"; - static String m14(v0) => + static String m17(v0) => "クリックして修復すると、LIVEフォルダが作成されます。完了したらインストールを再試行してください。(${v0})"; - static String m15(v0) => "修正提案: ${v0}"; + static String m18(v0) => "修正提案: ${v0}"; - static String m16(v0) => + static String m19(v0) => "このゲームを実行するには、少なくとも16GBの物理メモリ(RAM)が必要です。(現在のサイズ:${v0})"; - static String m17(v0) => "システムをアップグレードしてください (${v0})"; + static String m20(v0) => "システムをアップグレードしてください (${v0})"; - static String m18(v0) => "ワンクリック診断 -> ${v0}"; + static String m21(v0) => "ワンクリック診断 -> ${v0}"; - static String m19(v0) => "検証済み:${v0}"; + static String m22(v0) => "検証済み:${v0}"; - static String m20(v0) => "検証中... (${v0}%)"; + static String m23(v0) => "検証中... (${v0}%)"; - static String m21(v0, v1) => "ダウンロード: ${v0}/s アップロード:${v1}/s"; + static String m24(v0, v1) => "ダウンロード: ${v0}/s アップロード:${v1}/s"; - static String m22(v0) => "ダウンロード済み:${v0}"; + static String m25(v0) => "ダウンロード済み:${v0}"; - static String m23(v0) => "ダウンロード中... (${v0}%)"; + static String m26(v0) => "ダウンロード中... (${v0}%)"; - static String m24(v0) => "ステータス:${v0}"; + static String m27(v0) => "ステータス:${v0}"; - static String m25(v1) => "合計サイズ:${v1}"; + static String m28(v1) => "合計サイズ:${v1}"; - static String m26(v0) => "アップロード済み:${v0}"; + static String m29(v0) => "アップロード済み:${v0}"; - static String m27(v0, v1, v2, v3, v4) => + static String m30(v0, v1, v2, v3, v4) => "ゲームが正常に終了しませんでした\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\n診断情報:${v3} \n${v4}"; - static String m28(v0) => "ウェブローカリゼーションリソースの初期化に失敗しました!${v0}"; + static String m31(v0) => "ウェブローカリゼーションリソースの初期化に失敗しました!${v0}"; - 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) => "高度なローカリゼーション -> ${v0}"; + static String m35(v0) => "高度なローカリゼーション -> ${v0}"; - static String m33(v0, v1) => "ローカリゼーションテキスト行数:${v0} P4Kテキスト行数:${v1}"; + static String m36(v0, v1) => "ローカリゼーションテキスト行数:${v0} P4Kテキスト行数:${v1}"; - static String m34(v0) => "プレビュー:${v0}"; + static String m37(v0) => "プレビュー:${v0}"; - static String m35(v0) => "${v0}にインストールしたローカリゼーションに新しいバージョンがあります!"; + static String m38(v0) => "${v0}にインストールしたローカリゼーションに新しいバージョンがあります!"; - static String m36(v1, v2) => + static String m39(v1, v2) => "RSIサーバーが報告するバージョン:${v1} \n\nローカルバージョン:${v2} \n\nRSI Launcherを使用してゲームを更新することをお勧めします!"; - static String m39(v0) => "コミュニティ入力メソッドサポート:${v0}"; + static String m42(v0) => "コミュニティ入力メソッドサポート:${v0}"; - static String m40(v0) => "コミュニティ入力メソッドサポートが更新されました:${v0}"; + static String m43(v0) => "コミュニティ入力メソッドサポートが更新されました:${v0}"; - static String m41(v0) => "チャネル:${v0}"; + static String m44(v0) => "チャネル:${v0}"; - static String m42(v0) => "有効(${v0}):"; + static String m45(v0) => "有効(${v0}):"; - static String m43(v0) => "インストールエラー!\n\n ${v0}"; + static String m46(v0) => "インストールエラー!\n\n ${v0}"; - static String m44(v0) => "インストール済みバージョン:${v0}"; + static String m47(v0) => "インストール済みバージョン:${v0}"; - static String m45(v0) => "更新時間:${v0}"; + static String m48(v0) => "更新時間:${v0}"; - static String m46(v0) => "バージョン番号:${v0}"; - - static String m47(v0, v1, v2, v3, v4) => - "エリア:${v0} プレイヤー操縦:${v1} 衝突エンティティ:${v2} \n衝突ビークル:${v3} 衝突距離:${v4} "; - - static String m48(v0, v2, v3) => "被害者ID:${v0} \n位置:${v2} \nエリア:${v3}"; - - static String m49(v0) => "詳細情報:${v0}"; + static String m49(v0) => "バージョン番号:${v0}"; static String m50(v0, v1, v2, v3, v4) => + "エリア:${v0} プレイヤー操縦:${v1} 衝突エンティティ:${v2} \n衝突ビークル:${v3} 衝突距離:${v4} "; + + static String m51(v0, v2, v3) => "被害者ID:${v0} \n位置:${v2} \nエリア:${v3}"; + + static String m52(v0) => "詳細情報:${v0}"; + + static String m53(v0, v1, v2, v3, v4) => "キル数:${v0} デス数:${v1} 自殺回数:${v2} \n機体破壊(ソフトデス):${v3} 機体破壊(解体):${v4}"; - static String m51(v0, v1) => "モード:${v0} 所要時間:${v1}秒"; + static String m54(v0, v1) => "モード:${v0} 所要時間:${v1}秒"; - static String m52(v0, v1, v2) => "${v0}時間${v1}分${v2}秒"; + static String m55(v0, v1, v2) => "${v0}時間${v1}分${v2}秒"; - static String m53(v0, v1) => "プレイヤーID:${v0} 位置:${v1}"; + static String m56(v0, v1) => "プレイヤーID:${v0} 位置:${v1}"; - static String m54(v0) => "プレイヤー ${v0} ログイン中..."; + static String m57(v0) => "プレイヤー ${v0} ログイン中..."; - static String m55(v0, v1, v2, v3, v4) => + static String m58(v0, v1, v2, v3, v4) => "ビークルモデル:${v0} \nエリア:${v1} \n損傷レベル:${v2} (${v3}) 責任者:${v4}"; - static String m56(v0) => "接続に失敗: ${v0}"; + static String m59(v0) => "接続に失敗: ${v0}"; - static String m57(v0) => "${v0}日前"; + static String m60(v0) => "${v0}日前"; - static String m58(v0) => "ルーム退出に失敗: ${v0}"; + static String m61(v0) => "ルーム退出に失敗: ${v0}"; - static String m59(v0) => "認証コードの取得に失敗: ${v0}"; + static String m62(v0) => "認証コードの取得に失敗: ${v0}"; - static String m60(v0) => "${v0}時間前"; + static String m63(v0) => "${v0}時間前"; - static String m61(v0) => "${v0}をキックしてもよろしいですか?"; + static String m64(v0) => "${v0}をキックしてもよろしいですか?"; - static String m62(v0) => "メンバーのキックに失敗: ${v0}"; + static String m65(v0) => "メンバーのキックに失敗: ${v0}"; - static String m63(v0) => "ルームリストの読み込みに失敗: ${v0}"; + static String m66(v0) => "ルームリストの読み込みに失敗: ${v0}"; - static String m64(v0, v1) => "${v0}/${v1} メンバー"; + static String m67(v0, v1) => "${v0}/${v1} メンバー"; - static String m65(v0) => "${v0}分前"; + static String m68(v0) => "${v0}分前"; - static String m66(v0) => "再接続に失敗: ${v0}"; + static String m69(v0) => "再接続に失敗: ${v0}"; - static String m67(v0) => "再接続に失敗、${v0}回試行済み"; + static String m70(v0) => "再接続に失敗、${v0}回試行済み"; - static String m68(v0) => "登録に失敗: ${v0}"; + static String m71(v0) => "登録に失敗: ${v0}"; - static String m69(v0) => "${v0}にオーナー権限を移譲してもよろしいですか?"; + static String m72(v0) => "${v0}にオーナー権限を移譲してもよろしいですか?"; - static String m70(v0) => "オーナー権限の移譲に失敗: ${v0}"; + static String m73(v0) => "オーナー権限の移譲に失敗: ${v0}"; - static String m71(v0) => "現在の状態:${v0}"; + static String m74(v0) => "現在の状態:${v0}"; - static String m72(v0, v1, v2) => "${v0} 最小値: ${v1} / 最大値: ${v2}"; + static String m75(v0, v1, v2) => "${v0} 最小値: ${v1} / 最大値: ${v2}"; - static String m73(v0) => "パフォーマンス最適化 -> ${v0}"; + static String m76(v0) => "パフォーマンス最適化 -> ${v0}"; - static String m74(v0) => + static String m77(v0) => "キャッシュサイズ ${v0}MB、ツールボックスがダウンロードしたローカリゼーションファイルキャッシュをクリアします。インストール済みのローカリゼーションには影響しません"; - static String m75(v0) => + static String m78(v0) => "設定されたコア数:${v0} (この機能はホームページのツールボックスワンクリック起動またはツールのRSIランチャー管理者モードに適用されます。0の場合、この機能は有効になりません)"; - static String m76(v0) => "⚠ AnalyticsApi.touch(\"launch\") エラー: ${v0} - 続行"; + static String m79(v0) => "⚠ AnalyticsApi.touch(\"launch\") エラー: ${v0} - 続行"; - static String m77(v0) => "✗ appModel.initApp() エラー: ${v0}"; + static String m80(v0) => "✗ appModel.initApp() エラー: ${v0}"; - static String m78(v0) => "⚠ aria2cModelProvider 初期化エラー: ${v0}"; + static String m81(v0) => "⚠ aria2cModelProvider 初期化エラー: ${v0}"; - static String m79(v0) => "⚠ URLConf.checkHost() エラー: ${v0} - 続行"; + static String m82(v0) => "⚠ URLConf.checkHost() エラー: ${v0} - 続行"; - static String m80(v0) => "⚠ appModel.checkUpdate() エラー: ${v0} - 続行"; + static String m83(v0) => "⚠ appModel.checkUpdate() エラー: ${v0} - 続行"; - static String m81(v0) => "[診断] Hive boxesを閉じることに失敗: ${v0}"; + static String m84(v0) => "[診断] Hive boxesを閉じることに失敗: ${v0}"; - static String m82(v0) => "[診断] データベースディレクトリが存在しません: ${v0}"; + static String m85(v0) => "[診断] データベースディレクトリが存在しません: ${v0}"; - static String m83(v0) => "[診断] データベースディレクトリを削除中: ${v0}"; + static String m86(v0) => "[診断] データベースディレクトリを削除中: ${v0}"; - static String m84(v0) => "[診断] ${v0}"; + static String m87(v0) => "[診断] ${v0}"; - static String m85(v0) => "診断モード - ステップ ${v0}"; + static String m88(v0) => "診断モード - ステップ ${v0}"; - static String m86(v0) => "✗ Hive.openBox(\"app_conf\") エラー: ${v0}"; + static String m89(v0) => "✗ Hive.openBox(\"app_conf\") エラー: ${v0}"; - static String m87(v0) => "[${v0}] ⚠ ログファイルが存在しません"; + static String m90(v0) => "[${v0}] ⚠ ログファイルが存在しません"; - static String m88(v0) => "[${v0}] --- ログ読み取り完了 (最後の1000行を表示) ---"; + static String m91(v0) => "[${v0}] --- ログ読み取り完了 (最後の1000行を表示) ---"; - static String m89(v0, v1) => "[${v0}] ✗ ログ読み取りに失敗: ${v1}"; + static String m92(v0, v1) => "[${v0}] ✗ ログ読み取りに失敗: ${v1}"; - static String m90(v0) => "[診断] データベースリセットに失敗: ${v0}"; + static String m93(v0) => "[診断] データベースリセットに失敗: ${v0}"; - static String m91(v0) => "[${v0}] 初期化を開始..."; + static String m94(v0) => "[${v0}] 初期化を開始..."; - static String m92(v0) => "[${v0}] --- 完全なログファイルの読み取りを開始 ---"; + static String m95(v0) => "[${v0}] --- 完全なログファイルの読み取りを開始 ---"; - static String m93(v0) => "クリーンアップに失敗しました。手動で削除してください。ファイルの場所:${v0}"; + static String m96(v0) => "クリーンアップに失敗しました。手動で削除してください。ファイルの場所:${v0}"; - static String m94(v0) => "エラーが発生しました:${v0}"; + static String m97(v0) => "エラーが発生しました:${v0}"; - static String m95(v0) => "初期化に失敗しました。スクリーンショットを撮って開発者に報告してください。${v0}"; - - static String m96(v0) => - "nvmeパッチを使用して問題が発生した場合は、このツールを実行してください。(ゲームのインストール/更新が使用できなくなる可能性があります。)\n\n現在のパッチ状態:${v0}"; - - static String m97(v0) => - "Star Citizen中国語百科事典が提供する分散ダウンロードサービスを使用して、p4kのダウンロードや修復ができます。 \nバージョン情報:${v0}"; - - static String m98(v0) => - "特定の状況でRSIランチャーのログファイルが破損し、問題スキャンが完了できなくなることがあります。このツールを使用して破損したログファイルをクリーンアップしてください。\n\n現在のログファイルサイズ:${v0} MB"; + static String m98(v0) => "初期化に失敗しました。スクリーンショットを撮って開発者に報告してください。${v0}"; static String m99(v0) => + "nvmeパッチを使用して問題が発生した場合は、このツールを実行してください。(ゲームのインストール/更新が使用できなくなる可能性があります。)\n\n現在のパッチ状態:${v0}"; + + static String m100(v0) => + "Star Citizen中国語百科事典が提供する分散ダウンロードサービスを使用して、p4kのダウンロードや修復ができます。 \nバージョン情報:${v0}"; + + static String m101(v0) => + "特定の状況でRSIランチャーのログファイルが破損し、問題スキャンが完了できなくなることがあります。このツールを使用して破損したログファイルをクリーンアップしてください。\n\n現在のログファイルサイズ:${v0} MB"; + + static String m102(v0) => "ゲームの表示に異常が発生した場合や、バージョン更新後に、このツールを使用して古いシェーダーをクリアできます(同時にVulkanをDX11に戻します) \n\nキャッシュサイズ:${v0} MB"; - static String m100(v0, v1, v2, v3, v4) => + static String m103(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 m103(v0) => "処理に失敗しました!:${v0}"; + static String m106(v0) => "処理に失敗しました!:${v0}"; - static String m104(v0) => "ランチャー情報の読み込みに失敗:${v0}"; + static String m107(v0) => "ランチャー情報の読み込みに失敗:${v0}"; - static String m105(v0) => "パッチ状態:${v0}"; + static String m108(v0) => "パッチ状態:${v0}"; - static String m106(v0) => "ランチャー内部バージョン情報:${v0}"; + static String m109(v0) => "ランチャー内部バージョン情報:${v0}"; - static String m114(v0) => "ファイルを開く:${v0}"; + static String m117(v0) => "ファイルを開く:${v0}"; - static String m115(v0, v1) => "読み込み完了:${v0}ファイル、所要時間:${v1} ms"; + static String m118(v0, v1) => "読み込み完了:${v0}ファイル、所要時間:${v1} ms"; - static String m116(v0) => "ファイルを読み込み中:${v0}..."; + static String m119(v0) => "ファイルを読み込み中:${v0}..."; - static String m117(v0, v1) => "ファイルを処理中(${v0}/${v1})..."; + static String m120(v0, v1) => "ファイルを処理中(${v0}/${v1})..."; - static String m118(v0) => "不明なファイルタイプ\n${v0}"; + static String m121(v0) => "不明なファイルタイプ\n${v0}"; - static String m119(v0) => "P4Kビューア -> ${v0}"; + static String m122(v0) => "P4Kビューア -> ${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -369,19 +369,19 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage( "確認中:実行環境", ), - "doctor_action_info_game_abnormal_exit": m6, + "doctor_action_info_game_abnormal_exit": m9, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage("ゲームが異常終了しました:不明なエラー"), - "doctor_action_info_info_feedback": m7, - "doctor_action_result_analysis_issues_found": m8, + "doctor_action_info_info_feedback": m10, + "doctor_action_result_analysis_issues_found": m11, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage("分析完了、問題は見つかりませんでした"), - "doctor_action_result_create_folder_fail": m9, + "doctor_action_result_create_folder_fail": m12, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage( "フォルダの作成に成功しました。ゲームのダウンロードを続けてみてください!", ), - "doctor_action_result_fix_fail": m10, + "doctor_action_result_fix_fail": m13, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "修復に成功しました。再起動してからゲームのインストールを続けてみてください!レジストリの変更が他のソフトウェアに互換性の問題を引き起こす場合は、ツールのNVMEレジストリクリーナーを使用してください。", ), @@ -389,7 +389,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "修復に成功しました。ゲームを起動してみてください。(問題が解決しない場合は、ツールボックスの「EACを再インストール」を使用してください)", ), - "doctor_action_result_info_unsupported_os": m11, + "doctor_action_result_info_unsupported_os": m14, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage( "この問題は現在自動処理をサポートしていません。スクリーンショットを撮って助けを求めてください", @@ -477,10 +477,10 @@ class MessageLookup extends MessageLookupByLibrary { "助けが必要ですか?クリックしてグループに参加し、無料のサポートを受けましょう!", ), "doctor_info_processing": MessageLookupByLibrary.simpleMessage("処理中..."), - "doctor_info_result_add_registry_value": m12, + "doctor_info_result_add_registry_value": m15, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage("中国語のインストールパス!"), - "doctor_info_result_chinese_install_path_error": m13, + "doctor_info_result_chinese_install_path_error": m16, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage( "中国語ユーザー名!", ), @@ -488,12 +488,12 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "中国語のユーザー名はゲームの起動/インストールエラーを引き起こす可能性があります!修復ボタンをクリックして変更チュートリアルを表示してください!", ), - "doctor_info_result_create_live_folder": m14, + "doctor_info_result_create_live_folder": m17, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage( "EasyAntiCheatがインストールされていないか、正常に終了していません", ), - "doctor_info_result_fix_suggestion": m15, + "doctor_info_result_fix_suggestion": m18, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "新しいタイプのNVMEデバイスで、RSIランチャーとの互換性がありません。インストールが失敗する可能性があります", @@ -504,7 +504,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("物理メモリが不足しています"), - "doctor_info_result_memory_requirement": m16, + "doctor_info_result_memory_requirement": m19, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("EasyAntiCheatファイルが見つかりません"), "doctor_info_result_missing_live_folder": @@ -517,7 +517,7 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage( "サポートされていないオペレーティングシステムです。ゲームが実行できない可能性があります", ), - "doctor_info_result_upgrade_system": m17, + "doctor_info_result_upgrade_system": m20, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "LIVEフォルダ内にEasyAntiCheatファイルが見つからないか、ファイルが不完全です。RSIランチャーを使用してファイルを検証してください", @@ -532,7 +532,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "ホームページでゲームインストールディレクトリを選択してください。", ), - "doctor_title_one_click_diagnosis": m18, + "doctor_title_one_click_diagnosis": m21, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage( "すべてキャンセル", ), @@ -568,9 +568,9 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_action_resume_all": MessageLookupByLibrary.simpleMessage( "すべて再開", ), - "downloader_info_checked": m19, + "downloader_info_checked": m22, "downloader_info_checking": MessageLookupByLibrary.simpleMessage("検証中"), - "downloader_info_checking_progress": m20, + "downloader_info_checking_progress": m23, "downloader_info_deleted": MessageLookupByLibrary.simpleMessage("削除済み"), "downloader_info_download_completed": MessageLookupByLibrary.simpleMessage( "ダウンロード完了", @@ -582,9 +582,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "ダウンロード単位を入力してください。例:1、100k、10m、0または空白で制限なし。", ), - "downloader_info_download_upload_speed": m21, - "downloader_info_downloaded": m22, - "downloader_info_downloading": m23, + "downloader_info_download_upload_speed": m24, + "downloader_info_downloaded": m25, + "downloader_info_downloading": m26, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage( "ダウンロード中...", ), @@ -607,9 +607,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "速度制限設定が保存されました。次回のダウンローダー起動時に適用されます。", ), - "downloader_info_status": m24, - "downloader_info_total_size": m25, - "downloader_info_uploaded": m26, + "downloader_info_status": m27, + "downloader_info_total_size": m28, + "downloader_info_uploaded": m29, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("待機中"), "downloader_input_download_speed_limit": MessageLookupByLibrary.simpleMessage("ダウンロード制限:"), @@ -653,7 +653,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("DPS計算機 ローカリゼーション"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("外部ブラウザ拡張機能:"), - "home_action_info_abnormal_game_exit": m27, + "home_action_info_abnormal_game_exit": m30, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage( "詳細情報を確認するには、ポップアップしたウェブリンクを確認してください。", ), @@ -662,7 +662,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage( "ゲーム内蔵", ), - "home_action_info_initialization_failed": m28, + "home_action_info_initialization_failed": m31, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage("ローカリゼーションリソースを初期化中..."), "home_action_info_log_file_parse_fail": @@ -677,7 +677,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Roberts Space Industries、すべての始まり", ), - "home_action_info_scan_complete_valid_directories_found": m29, + "home_action_info_scan_complete_valid_directories_found": m32, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage( "スキャン中 ...", ), @@ -734,7 +734,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "home_announcement_details": MessageLookupByLibrary.simpleMessage("お知らせ詳細"), "home_holiday_countdown": MessageLookupByLibrary.simpleMessage("祝日カウントダウン"), - "home_holiday_countdown_days": m30, + "home_holiday_countdown_days": m33, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* 上記の祝日日付は手動で収集・管理されており、誤りがある可能性があります。フィードバックを歓迎します!", ), @@ -809,10 +809,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("p4kファイルを読み込み中..."), "home_localization_advanced_msg_reading_server_localization_text": MessageLookupByLibrary.simpleMessage("ローカリゼーションテキストを取得中..."), - "home_localization_advanced_msg_version": m31, - "home_localization_advanced_title": m32, - "home_localization_advanced_title_msg": m33, - "home_localization_advanced_title_preview": m34, + "home_localization_advanced_msg_version": m34, + "home_localization_advanced_title": m35, + "home_localization_advanced_title_msg": m36, + "home_localization_advanced_title_preview": m37, "home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage( "このバージョンには説明がありません", ), @@ -820,7 +820,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage(" (高度なローカリゼーション)"), "home_localization_new_version_available": MessageLookupByLibrary.simpleMessage("ローカリゼーションの新しいバージョンが利用可能です!"), - "home_localization_new_version_installed": m35, + "home_localization_new_version_installed": m38, "home_localization_select_customize_file": MessageLookupByLibrary.simpleMessage("カスタムローカリゼーションファイルを選択してください"), "home_localization_select_customize_file_ini": @@ -838,7 +838,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "この機能はゲームをより便利に起動するのに役立ちます。\n\nアカウントセキュリティを確保するために、この機能はローカリゼーションブラウザを使用してログイン状態を保持し、パスワード情報を保存しません(自動入力機能を有効にしていない限り)。\n\nこの機能を使用してアカウントにログインする場合は、信頼できるソースからSCToolboxをダウンロードしていることを確認してください。", ), - "home_login_info_rsi_server_report": m36, + "home_login_info_rsi_server_report": m39, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage( "ゲームを起動しています...", ), @@ -865,7 +865,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "input_method_community_input_method_not_installed": MessageLookupByLibrary.simpleMessage("コミュニティ入力メソッドサポートがインストールされていません"), - "input_method_community_input_method_support_version": m39, + "input_method_community_input_method_support_version": m42, "input_method_confirm_enable_remote_input": MessageLookupByLibrary.simpleMessage("リモート入力を有効にしますか?"), "input_method_confirm_install_advanced_localization": @@ -915,7 +915,7 @@ class MessageLookup extends MessageLookupByLibrary { "input_method_support_updated": MessageLookupByLibrary.simpleMessage( "コミュニティ入力メソッドサポートが更新されました", ), - "input_method_support_updated_to_version": m40, + "input_method_support_updated_to_version": m43, "input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage( "テキストを空にすることはできません!", ), @@ -936,7 +936,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("ローカリゼーションフィードバック"), "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage("ローカリゼーションをアンインストール"), - "localization_info_channel": m41, + "localization_info_channel": m44, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("コミュニティローカリゼーション"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage( @@ -945,16 +945,16 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_custom_files": MessageLookupByLibrary.simpleMessage( "カスタムファイル", ), - "localization_info_enabled": m42, + "localization_info_enabled": m45, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "USER.cfgに互換性のないローカリゼーションパラメータが含まれています。これは以前のローカリゼーションファイルの残りである可能性があります。\n\nこれによりローカリゼーションが無効になったり文字化けしたりする可能性があります。確認をクリックすると、ワンクリックで削除されます(他の設定には影響しません)。", ), - "localization_info_installation_error": m43, + "localization_info_installation_error": m46, "localization_info_installed": MessageLookupByLibrary.simpleMessage( "インストール済み", ), - "localization_info_installed_version": m44, + "localization_info_installed_version": m47, "localization_info_language": MessageLookupByLibrary.simpleMessage( "言語: ", ), @@ -975,14 +975,14 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_unavailable": MessageLookupByLibrary.simpleMessage( "利用不可", ), - "localization_info_update_time": m45, - "localization_info_version_number": m46, - "log_analyzer_collision_details": m47, - "log_analyzer_death_details": m48, + "localization_info_update_time": m48, + "localization_info_version_number": m49, + "log_analyzer_collision_details": m50, + "log_analyzer_death_details": m51, "log_analyzer_description": MessageLookupByLibrary.simpleMessage( "プレイ記録を分析(ログイン、死亡、キルなどの情報)", ), - "log_analyzer_details_info": m49, + "log_analyzer_details_info": m52, "log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage("崩壊"), "log_analyzer_filter_account_related": MessageLookupByLibrary.simpleMessage( "アカウント関連", @@ -1020,9 +1020,9 @@ class MessageLookup extends MessageLookupByLibrary { "ゲーム読み込み", ), "log_analyzer_game_start": MessageLookupByLibrary.simpleMessage("ゲーム起動"), - "log_analyzer_kill_death_suicide_count": m50, + "log_analyzer_kill_death_suicide_count": m53, "log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage("キル概要"), - "log_analyzer_mode_loading_time": m51, + "log_analyzer_mode_loading_time": m54, "log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage( "ゲームクラッシュ情報は検出されませんでした", ), @@ -1032,9 +1032,9 @@ class MessageLookup extends MessageLookupByLibrary { "log_analyzer_one_click_diagnosis_header": MessageLookupByLibrary.simpleMessage("----- SCToolbox ワンクリック診断 -----"), "log_analyzer_play_time": MessageLookupByLibrary.simpleMessage("プレイ時間"), - "log_analyzer_play_time_format": m52, - "log_analyzer_player_location": m53, - "log_analyzer_player_login": m54, + "log_analyzer_play_time_format": m55, + "log_analyzer_player_location": m56, + "log_analyzer_player_login": m57, "log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage( "キーワードを入力して内容を検索", ), @@ -1043,7 +1043,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "log_analyzer_soft_death": MessageLookupByLibrary.simpleMessage("ソフト死亡"), "log_analyzer_title": MessageLookupByLibrary.simpleMessage("logアナライザ"), - "log_analyzer_vehicle_damage_details": m55, + "log_analyzer_vehicle_damage_details": m58, "log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage( "ローカルインベントリを表示", ), @@ -1074,7 +1074,7 @@ class MessageLookup extends MessageLookupByLibrary { "プロフィールの任意の場所にコードを追加してください。コードは30分間有効です", ), "party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage("解散を確認"), - "party_room_connect_error": m56, + "party_room_connect_error": m59, "party_room_connect_failed": MessageLookupByLibrary.simpleMessage( "接続に失敗しました", ), @@ -1103,7 +1103,7 @@ class MessageLookup extends MessageLookupByLibrary { "新しいルームを作成", ), "party_room_create_room": MessageLookupByLibrary.simpleMessage("ルームを作成"), - "party_room_days_ago": m57, + "party_room_days_ago": m60, "party_room_disconnected": MessageLookupByLibrary.simpleMessage( "接続が切断されました", ), @@ -1134,7 +1134,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "party_room_error": MessageLookupByLibrary.simpleMessage("エラー"), "party_room_exit_room": MessageLookupByLibrary.simpleMessage("ルームを退出"), - "party_room_exit_room_failed": m58, + "party_room_exit_room_failed": m61, "party_room_game_id_empty": MessageLookupByLibrary.simpleMessage( "ゲームIDを入力してください", ), @@ -1144,12 +1144,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_game_not_started": MessageLookupByLibrary.simpleMessage( "<ゲーム未起動>", ), - "party_room_get_code_failed": m59, + "party_room_get_code_failed": m62, "party_room_go_login": MessageLookupByLibrary.simpleMessage("ログイン"), "party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage( "ゲストとして閲覧中です。ログインするとルームの作成や参加が可能です。", ), - "party_room_hours_ago": m60, + "party_room_hours_ago": m63, "party_room_info_updated": MessageLookupByLibrary.simpleMessage( "ルーム情報が更新されました", ), @@ -1164,8 +1164,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_just_now": MessageLookupByLibrary.simpleMessage("たった今"), "party_room_kick": MessageLookupByLibrary.simpleMessage("キック"), "party_room_kick_member": MessageLookupByLibrary.simpleMessage("メンバーをキック"), - "party_room_kick_member_confirm": m61, - "party_room_kick_member_failed": m62, + "party_room_kick_member_confirm": m64, + "party_room_kick_member_failed": m65, "party_room_kicked": MessageLookupByLibrary.simpleMessage("ルームからキックされました"), "party_room_leave_confirm": MessageLookupByLibrary.simpleMessage( "ルームを退出しますか?", @@ -1176,13 +1176,13 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_link_format_error": MessageLookupByLibrary.simpleMessage( "リンク形式が正しくありません!", ), - "party_room_load_list_failed": m63, + "party_room_load_list_failed": m66, "party_room_loading": MessageLookupByLibrary.simpleMessage("読み込み中..."), "party_room_location": MessageLookupByLibrary.simpleMessage("場所"), "party_room_login": MessageLookupByLibrary.simpleMessage("ログイン"), "party_room_main_menu": MessageLookupByLibrary.simpleMessage("<メインメニュー>"), - "party_room_members_count": m64, - "party_room_minutes_ago": m65, + "party_room_members_count": m67, + "party_room_minutes_ago": m68, "party_room_need_login": MessageLookupByLibrary.simpleMessage("ログインが必要です"), "party_room_new_owner": MessageLookupByLibrary.simpleMessage("新しいオーナー"), "party_room_next_step": MessageLookupByLibrary.simpleMessage("次へ"), @@ -1215,12 +1215,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_player_death": MessageLookupByLibrary.simpleMessage("プレイヤー死亡"), "party_room_prev_step": MessageLookupByLibrary.simpleMessage("前へ"), "party_room_reconnect": MessageLookupByLibrary.simpleMessage("再接続"), - "party_room_reconnect_failed": m66, + "party_room_reconnect_failed": m69, "party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage( "ルームサーバーとの接続が切断されました。再接続しますか?", ), - "party_room_reconnect_retry": m67, - "party_room_register_failed": m68, + "party_room_reconnect_retry": m70, + "party_room_register_failed": m71, "party_room_register_success": MessageLookupByLibrary.simpleMessage( "登録成功!", ), @@ -1300,8 +1300,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_transfer_owner": MessageLookupByLibrary.simpleMessage( "オーナー権限を移譲", ), - "party_room_transfer_owner_confirm": m69, - "party_room_transfer_owner_failed": m70, + "party_room_transfer_owner_confirm": m72, + "party_room_transfer_owner_failed": m73, "party_room_unknown_area": MessageLookupByLibrary.simpleMessage("不明なエリア"), "party_room_unknown_location": MessageLookupByLibrary.simpleMessage( "不明な場所", @@ -1343,7 +1343,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "performance_action_super": MessageLookupByLibrary.simpleMessage("超高"), "performance_info_applied": MessageLookupByLibrary.simpleMessage("適用済み"), - "performance_info_current_status": m71, + "performance_info_current_status": m74, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage( "設定ファイルを削除中...", ), @@ -1357,7 +1357,7 @@ class MessageLookup extends MessageLookupByLibrary { "この機能はグラフィックカードのボトルネックの最適化に役立ちますが、CPUのボトルネックには逆効果になることがあります。グラフィックカードの性能が高い場合は、より良い画質を使用してグラフィックカードの利用率を高めることができます。", ), "performance_info_graphics": MessageLookupByLibrary.simpleMessage("グラフィック"), - "performance_info_min_max_values": m72, + "performance_info_min_max_values": m75, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage("未適用"), "performance_info_shader_clearing_warning": MessageLookupByLibrary.simpleMessage( @@ -1519,7 +1519,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_json_text_water_info": MessageLookupByLibrary.simpleMessage( "様々な水のレベル", ), - "performance_title_performance_optimization": m73, + "performance_title_performance_optimization": m76, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage("ローカリゼーションファイルキャッシュをクリア"), "setting_action_create_desktop_shortcut": @@ -1532,7 +1532,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage("自動入力データがクリアされました"), - "setting_action_info_cache_clearing_info": m74, + "setting_action_info_cache_clearing_info": m77, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage("これはインストール済みのローカリゼーションには影響しません。"), "setting_action_info_confirm_clear_cache": @@ -1584,7 +1584,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage("自動パスワード入力をリセット"), - "setting_action_set_core_count": m75, + "setting_action_set_core_count": m78, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage( "ゲームファイルを設定(StarCitizen.exe)", ), @@ -1626,39 +1626,39 @@ class MessageLookup extends MessageLookupByLibrary { "splash_analytics_done": MessageLookupByLibrary.simpleMessage( "✓ AnalyticsApi.touch(\"launch\") 完了", ), - "splash_analytics_error": m76, + "splash_analytics_error": m79, "splash_analytics_timeout": MessageLookupByLibrary.simpleMessage( "⚠ AnalyticsApi.touch() タイムアウト (10秒) - 続行", ), "splash_app_init_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.initApp() 完了", ), - "splash_app_init_error": m77, + "splash_app_init_error": m80, "splash_app_init_timeout": MessageLookupByLibrary.simpleMessage( "✗ appModel.initApp() タイムアウト (10秒)", ), "splash_aria2c_done": MessageLookupByLibrary.simpleMessage( "✓ aria2cModelProvider 初期化完了", ), - "splash_aria2c_error": m78, + "splash_aria2c_error": m81, "splash_check_host_done": MessageLookupByLibrary.simpleMessage( "✓ URLConf.checkHost() 完了", ), - "splash_check_host_error": m79, + "splash_check_host_error": m82, "splash_check_host_timeout": MessageLookupByLibrary.simpleMessage( "⚠ URLConf.checkHost() タイムアウト (10秒) - 続行", ), "splash_check_update_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.checkUpdate() 完了", ), - "splash_check_update_error": m80, + "splash_check_update_error": m83, "splash_check_update_timeout": MessageLookupByLibrary.simpleMessage( "⚠ appModel.checkUpdate() タイムアウト (10秒) - 続行", ), "splash_check_version": MessageLookupByLibrary.simpleMessage( "splash_alert_info_versionを確認中...", ), - "splash_close_hive_failed": m81, + "splash_close_hive_failed": m84, "splash_context_unmounted": MessageLookupByLibrary.simpleMessage( "✗ Contextがアンマウントされました", ), @@ -1674,16 +1674,16 @@ class MessageLookup extends MessageLookupByLibrary { "splash_db_deleted": MessageLookupByLibrary.simpleMessage( "[診断] データベースディレクトリを削除しました", ), - "splash_db_not_exist": m82, + "splash_db_not_exist": m85, "splash_db_reset_done": MessageLookupByLibrary.simpleMessage( "[診断] データベースリセット完了、アプリケーション終了準備中", ), "splash_db_reset_msg": MessageLookupByLibrary.simpleMessage( "データベースがリセットされました。アプリケーションは終了します。アプリケーションを再起動してください。", ), - "splash_deleting_db": m83, - "splash_diagnostic_log": m84, - "splash_diagnostic_mode": m85, + "splash_deleting_db": m86, + "splash_diagnostic_log": m87, + "splash_diagnostic_mode": m88, "splash_error": MessageLookupByLibrary.simpleMessage("エラー"), "splash_exec_analytics": MessageLookupByLibrary.simpleMessage( "AnalyticsApi.touch(\"launch\")を実行中...", @@ -1703,7 +1703,7 @@ class MessageLookup extends MessageLookupByLibrary { "splash_hive_done": MessageLookupByLibrary.simpleMessage( "✓ Hive.openBox(\"app_conf\") 完了", ), - "splash_hive_error": m86, + "splash_hive_error": m89, "splash_hive_timeout": MessageLookupByLibrary.simpleMessage( "✗ Hive.openBox(\"app_conf\") タイムアウト (10秒)", ), @@ -1713,22 +1713,22 @@ class MessageLookup extends MessageLookupByLibrary { "splash_init_task_status": MessageLookupByLibrary.simpleMessage( "初期化タスクの状態:", ), - "splash_log_not_exist": m87, - "splash_log_read_done": m88, + "splash_log_not_exist": m90, + "splash_log_read_done": m91, "splash_open_hive_box": MessageLookupByLibrary.simpleMessage( "Hive app_conf boxを開いています...", ), "splash_read_full_log": MessageLookupByLibrary.simpleMessage("完全なログを読み取り"), - "splash_read_log_failed": m89, + "splash_read_log_failed": m92, "splash_reset_database": MessageLookupByLibrary.simpleMessage( "データベースをリセット", ), - "splash_reset_db_failed": m90, + "splash_reset_db_failed": m93, "splash_show_agreement": MessageLookupByLibrary.simpleMessage( "ユーザー同意ダイアログを表示する必要があります...", ), - "splash_start_init": m91, - "splash_start_read_log": m92, + "splash_start_init": m94, + "splash_start_read_log": m95, "splash_step0_done": MessageLookupByLibrary.simpleMessage( "--- ステップ0完了、ステップ1に進みます ---", ), @@ -1795,13 +1795,13 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage( "クリーンアップが完了しました。インストールまたはゲーム起動操作を完了してください。", ), - "tools_action_info_cleanup_failed": m93, + "tools_action_info_cleanup_failed": m96, "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": m94, + "tools_action_info_error_occurred": m97, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "修復が成功しました。コンピュータを再起動してからゲームのインストールを続けてみてください!レジストリの変更が他のソフトウェアに互換性の問題を引き起こす場合は、ツールの「NVMEレジストリクリーナー」を使用してください。", ), @@ -1811,7 +1811,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "IP情報をHostsファイルに書き込み、一部の地域でのDNS汚染による公式サイトへのログイン問題などを解決します。\nこの機能は第一段階のテスト中です。問題が発生した場合はすぐにフィードバックしてください。", ), - "tools_action_info_init_failed": m95, + "tools_action_info_init_failed": m98, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "ログファイルが存在しません。ゲームを一度起動またはインストールしてから、ランチャーを終了してください。問題が解決しない場合は、ランチャーを最新バージョンに更新してみてください!", ), @@ -1825,7 +1825,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage( "インストールされていません", ), - "tools_action_info_nvme_patch_issue": m96, + "tools_action_info_nvme_patch_issue": m99, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "ゲーム内のレンズの揺れをワンクリックでオフにして、撮影操作を容易にします。\n\n @拉邦那 Lapernum 提供のパラメータ情報。", @@ -1834,7 +1834,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "p4kのダウンロードタスクが既に進行中です。ダウンロードマネージャーで確認してください!", ), - "tools_action_info_p4k_download_repair_tip": m97, + "tools_action_info_p4k_download_repair_tip": m100, "tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage( "P4kはStar Citizenのコアゲームファイルで、100GB以上のサイズです。SCToolboxが提供するオフラインダウンロードは、p4kファイルのダウンロードが非常に遅いユーザーをサポートするため、または公式ランチャーで修復できないp4kファイルを修正するためのものです。\n\n次に保存先を選択するダイアログが表示されます(Star Citizenフォルダでも他の場所でも選択可能)。ダウンロード完了後、P4KファイルがLIVEフォルダ内にあることを確認し、Star Citizenランチャーで検証と更新を行ってください。", ), @@ -1851,7 +1851,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "RSIランチャーディレクトリが見つかりません。手動で操作してください。", ), - "tools_action_info_rsi_launcher_log_issue": m98, + "tools_action_info_rsi_launcher_log_issue": m101, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage( "RSIランチャーが見つかりません。再インストールするか、設定で手動で追加してください。", @@ -1863,12 +1863,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "RSIランチャーを管理者権限で実行すると、一部の問題が解決する場合があります。\n\n効率コア無視パラメータを設定している場合は、ここでも適用されます。", ), - "tools_action_info_shader_cache_issue": m99, + "tools_action_info_shader_cache_issue": m102, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "Star Citizenゲームのインストール場所が見つかりません。少なくとも1回ゲームを起動するか、設定で手動で追加してください。", ), - "tools_action_info_system_info_content": m100, + "tools_action_info_system_info_content": m103, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage( "システム情報", ), @@ -1931,7 +1931,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage( "ゲームインストール場所: ", ), - "tools_info_processing_failed": m103, + "tools_info_processing_failed": m106, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage( "RSIランチャー場所:", ), @@ -1953,15 +1953,15 @@ class MessageLookup extends MessageLookupByLibrary { "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error": MessageLookupByLibrary.simpleMessage("ランチャー情報の読み込みに失敗しました!"), "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args": - m104, + m107, "tools_rsi_launcher_enhance_msg_error_launcher_notfound": MessageLookupByLibrary.simpleMessage("RSIランチャーが見つかりません"), - "tools_rsi_launcher_enhance_msg_patch_status": m105, + "tools_rsi_launcher_enhance_msg_patch_status": m108, "tools_rsi_launcher_enhance_msg_uninstall": MessageLookupByLibrary.simpleMessage( "* 機能強化パッチをアンインストールするには、RSIランチャーを上書きインストールしてください。", ), - "tools_rsi_launcher_enhance_msg_version": m106, + "tools_rsi_launcher_enhance_msg_version": m109, "tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage( "RSIランチャー機能強化はコミュニティ機能で、お使いのコンピューターで「RSI Launcher」を解凍し、追加の機能強化を加えます。どの機能を使用するかはあなた次第です。\n\n現在、公式(CIG)は多言語操作のみを許可していますが、ランチャーダウンロード機能強化は私たちが有用だと考える追加機能です。cigユーザー契約(https://robertsspaceindustries.com/eula)に違反すると、アカウント禁止などの深刻な結果を招く可能性があり、使用するかどうかはあなた自身の判断によります。私たちは発生する可能性のある結果(ゲームの損傷、アカウント禁止など)に対して責任を負いません。\n\nランチャーの変更内容については、https://github.com/StarCitizenToolBox/RSILauncherEnhanceでオープンソースとして公開しています。必要に応じて確認できます。\n\n何らかの理由でこの機能強化パッチをキャンセルする必要がある場合は、公式ランチャーを直接上書きインストールしてください。", ), @@ -1995,18 +1995,18 @@ class MessageLookup extends MessageLookupByLibrary { "この機能を使用するには.NET8ランタイムをインストールする必要があります。下のボタンをクリックしてダウンロードしてインストールし、インストールが成功したらこのページを再度開いて使用を続行してください。", ), "tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage("初期化中..."), - "tools_unp4k_msg_open_file": m114, - "tools_unp4k_msg_read_completed": m115, - "tools_unp4k_msg_read_file": m116, + "tools_unp4k_msg_open_file": m117, + "tools_unp4k_msg_read_completed": m118, + "tools_unp4k_msg_read_file": m119, "tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage( "P4Kファイルを読み込み中...", ), "tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage( "ファイルを処理中...", ), - "tools_unp4k_msg_reading3": m117, - "tools_unp4k_msg_unknown_file_type": m118, - "tools_unp4k_title": m119, + "tools_unp4k_msg_reading3": m120, + "tools_unp4k_msg_unknown_file_type": m121, + "tools_unp4k_title": m122, "tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage( "プレビューするファイルをクリック", ), diff --git a/lib/generated/intl/messages_ru.dart b/lib/generated/intl/messages_ru.dart index 446b067..dc6f44c 100644 --- a/lib/generated/intl/messages_ru.dart +++ b/lib/generated/intl/messages_ru.dart @@ -33,243 +33,243 @@ class MessageLookup extends MessageLookupByLibrary { static String m5(v0) => "Найдена новая версия -> ${v0}"; - static String m6(v0) => "Аварийное завершение игры: ${v0}"; + static String m9(v0) => "Аварийное завершение игры: ${v0}"; - static String m7(v0) => + static String m10(v0) => "инфо:${v0}, пожалуйста, нажмите в правом нижнем углу, чтобы присоединиться к группе для обратной связи."; - static String m8(v0) => "Анализ завершен, обнаружено ${v0} проблем"; + static String m11(v0) => "Анализ завершен, обнаружено ${v0} проблем"; - static String m9(v0, v1) => + static String m12(v0, v1) => "Не удалось создать папку, попробуйте создать её вручную.\nПуть: ${v0}\nОшибка: ${v1}"; - static String m10(v0) => "Исправление не удалось, ${v0}"; + static String m13(v0) => "Исправление не удалось, ${v0}"; - static String m11(v0) => "Неподдерживаемая операционная система: ${v0}"; + static String m14(v0) => "Неподдерживаемая операционная система: ${v0}"; - static String m12(v0) => + static String m15(v0) => "Добавление значения ForcedPhysicalSectorSizeInBytes в реестр для эмуляции старого устройства. Раздел диска (${v0})"; - static String m13(v0) => + static String m16(v0) => "Путь установки на китайском! Это может вызвать ошибки запуска/установки игры! (${v0}), пожалуйста, измените путь установки в RSI Launcher."; - static String m14(v0) => + static String m17(v0) => "Нажмите исправить, чтобы создать папку LIVE, затем повторите попытку установки. (${v0})"; - static String m15(v0) => "Предложение по исправлению: ${v0}"; + static String m18(v0) => "Предложение по исправлению: ${v0}"; - static String m16(v0) => + static String m19(v0) => "Вам нужно как минимум 16 ГБ физической памяти (RAM) для запуска этой игры. (Текущий размер: ${v0})"; - static String m17(v0) => "Пожалуйста, обновите вашу систему (${v0})"; + static String m20(v0) => "Пожалуйста, обновите вашу систему (${v0})"; - static String m18(v0) => "Быстрая диагностика -> ${v0}"; + static String m21(v0) => "Быстрая диагностика -> ${v0}"; - static String m19(v0) => "Проверено: ${v0}"; + static String m22(v0) => "Проверено: ${v0}"; - static String m20(v0) => "Проверка... (${v0}%)"; + static String m23(v0) => "Проверка... (${v0}%)"; - static String m21(v0, v1) => "Загрузка: ${v0}/с Отдача: ${v1}/с"; + static String m24(v0, v1) => "Загрузка: ${v0}/с Отдача: ${v1}/с"; - static String m22(v0) => "Загружено: ${v0}"; + static String m25(v0) => "Загружено: ${v0}"; - static String m23(v0) => "Загрузка... (${v0}%)"; + static String m26(v0) => "Загрузка... (${v0}%)"; - static String m24(v0) => "Статус: ${v0}"; + static String m27(v0) => "Статус: ${v0}"; - static String m25(v1) => "Общий размер: ${v1}"; + static String m28(v1) => "Общий размер: ${v1}"; - static String m26(v0) => "Отдано: ${v0}"; + static String m29(v0) => "Отдано: ${v0}"; - static String m27(v0, v1, v2, v3, v4) => + static String m30(v0, v1, v2, v3, v4) => "Игра завершилась ненормально\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\nДиагностическая информация: ${v3}\n${v4}"; - static String m28(v0) => + static String m31(v0) => "Ошибка инициализации ресурсов веб-локализации! ${v0}"; - static String m29(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) => "Расширенная локализация -> ${v0}"; + static String m35(v0) => "Расширенная локализация -> ${v0}"; - static String m33(v0, v1) => "Строк локализации: ${v0} Строк P4K: ${v1}"; + static String m36(v0, v1) => "Строк локализации: ${v0} Строк P4K: ${v1}"; - static String m34(v0) => "Предпросмотр: ${v0}"; + static String m37(v0) => "Предпросмотр: ${v0}"; - static String m35(v0) => + static String m38(v0) => "Доступна новая версия локализации, установленной ${v0}!"; - static String m36(v1, v2) => + static String m39(v1, v2) => "Сервер RSI сообщает версию: ${v1}\n\nЛокальная версия: ${v2}\n\nРекомендуется обновить игру через RSI Launcher!"; - static String m39(v0) => "Поддержка метода ввода сообщества: ${v0}"; + static String m42(v0) => "Поддержка метода ввода сообщества: ${v0}"; - static String m40(v0) => + static String m43(v0) => "Поддержка метода ввода сообщества обновлена до версии: ${v0}"; - static String m41(v0) => "Канал: ${v0}"; + static String m44(v0) => "Канал: ${v0}"; - static String m42(v0) => "Включено (${v0}):"; + static String m45(v0) => "Включено (${v0}):"; - static String m43(v0) => "Ошибка установки!\n\n${v0}"; + static String m46(v0) => "Ошибка установки!\n\n${v0}"; - static String m44(v0) => "Установленная версия: ${v0}"; + static String m47(v0) => "Установленная версия: ${v0}"; - static String m45(v0) => "Время обновления: ${v0}"; + static String m48(v0) => "Время обновления: ${v0}"; - static String m46(v0) => "Номер версии: ${v0}"; - - static String m47(v0, v1, v2, v3, v4) => - "Зона: ${v0} Управление игроком: ${v1} Объект столкновения: ${v2} \nТехника столкновения: ${v3} Дистанция столкновения: ${v4} "; - - static String m48(v0, v2, v3) => - "ID жертвы: ${v0} \nID убийцы: ${v2} \nЗона: ${v3}"; - - static String m49(v0) => "Подробная информация: ${v0}"; + static String m49(v0) => "Номер версии: ${v0}"; static String m50(v0, v1, v2, v3, v4) => + "Зона: ${v0} Управление игроком: ${v1} Объект столкновения: ${v2} \nТехника столкновения: ${v3} Дистанция столкновения: ${v4} "; + + static String m51(v0, v2, v3) => + "ID жертвы: ${v0} \nID убийцы: ${v2} \nЗона: ${v3}"; + + static String m52(v0) => "Подробная информация: ${v0}"; + + static String m53(v0, v1, v2, v3, v4) => "Убийства: ${v0} Смерти: ${v1} Самоубийства: ${v2} \nУничтожение техники (Мягкая смерть): ${v3} Уничтожение техники (Распад): ${v4}"; - static String m51(v0, v1) => "Режим: ${v0} Время: ${v1} секунд"; + static String m54(v0, v1) => "Режим: ${v0} Время: ${v1} секунд"; - static String m52(v0, v1, v2) => "${v0} часов ${v1} минут ${v2} секунд"; + static String m55(v0, v1, v2) => "${v0} часов ${v1} минут ${v2} секунд"; - static String m53(v0, v1) => "ID игрока: ${v0} Местоположение: ${v1}"; + static String m56(v0, v1) => "ID игрока: ${v0} Местоположение: ${v1}"; - static String m54(v0) => "Игрок ${v0} входит в игру..."; + static String m57(v0) => "Игрок ${v0} входит в игру..."; - static String m55(v0, v1, v2, v3, v4) => + static String m58(v0, v1, v2, v3, v4) => "Модель техники: ${v0} \nЗона: ${v1} \nУровень повреждения: ${v2} (${v3}) Виновник: ${v4}"; - static String m56(v0) => "Ошибка подключения: ${v0}"; + static String m59(v0) => "Ошибка подключения: ${v0}"; - static String m57(v0) => "${v0} дн. назад"; + static String m60(v0) => "${v0} дн. назад"; - static String m58(v0) => "Не удалось выйти из комнаты: ${v0}"; + static String m61(v0) => "Не удалось выйти из комнаты: ${v0}"; - static String m59(v0) => "Не удалось получить код подтверждения: ${v0}"; + static String m62(v0) => "Не удалось получить код подтверждения: ${v0}"; - static String m60(v0) => "${v0} ч. назад"; + static String m63(v0) => "${v0} ч. назад"; - static String m61(v0) => "Вы уверены, что хотите выгнать ${v0}?"; + static String m64(v0) => "Вы уверены, что хотите выгнать ${v0}?"; - static String m62(v0) => "Не удалось выгнать участника: ${v0}"; + static String m65(v0) => "Не удалось выгнать участника: ${v0}"; - static String m63(v0) => "Не удалось загрузить список комнат: ${v0}"; + static String m66(v0) => "Не удалось загрузить список комнат: ${v0}"; - static String m64(v0, v1) => "${v0}/${v1} участников"; + static String m67(v0, v1) => "${v0}/${v1} участников"; - static String m65(v0) => "${v0} мин. назад"; + static String m68(v0) => "${v0} мин. назад"; - static String m66(v0) => "Не удалось переподключиться: ${v0}"; + static String m69(v0) => "Не удалось переподключиться: ${v0}"; - static String m67(v0) => "Не удалось переподключиться, попыток: ${v0}"; + static String m70(v0) => "Не удалось переподключиться, попыток: ${v0}"; - static String m68(v0) => "Ошибка регистрации: ${v0}"; + static String m71(v0) => "Ошибка регистрации: ${v0}"; - static String m69(v0) => "Вы уверены, что хотите передать владение ${v0}?"; + static String m72(v0) => "Вы уверены, что хотите передать владение ${v0}?"; - static String m70(v0) => "Не удалось передать владение: ${v0}"; + static String m73(v0) => "Не удалось передать владение: ${v0}"; - static String m71(v0) => "Текущий статус: ${v0}"; + static String m74(v0) => "Текущий статус: ${v0}"; - static String m72(v0, v1, v2) => "${v0} Мин.: ${v1} / Макс.: ${v2}"; + static String m75(v0, v1, v2) => "${v0} Мин.: ${v1} / Макс.: ${v2}"; - static String m73(v0) => "Оптимизация производительности -> ${v0}"; + static String m76(v0) => "Оптимизация производительности -> ${v0}"; - static String m74(v0) => + static String m77(v0) => "Размер кэша ${v0}MB, очистка кэша загруженных SCToolbox файлов локализации, не повлияет на установленные локализации"; - static String m75(v0) => + static String m78(v0) => "Установленное количество ядер: ${v0} (Эта функция применяется при запуске через SCToolbox или в режиме администратора RSI Launcher из набора инструментов. При значении 0 функция отключена)"; - static String m76(v0) => + static String m79(v0) => "⚠ AnalyticsApi.touch(\"launch\") ошибка: ${v0} - продолжение"; - static String m77(v0) => "✗ appModel.initApp() ошибка: ${v0}"; + static String m80(v0) => "✗ appModel.initApp() ошибка: ${v0}"; - static String m78(v0) => "⚠ aria2cModelProvider ошибка инициализации: ${v0}"; + static String m81(v0) => "⚠ aria2cModelProvider ошибка инициализации: ${v0}"; - static String m79(v0) => "⚠ URLConf.checkHost() ошибка: ${v0} - продолжение"; - - static String m80(v0) => - "⚠ appModel.checkUpdate() ошибка: ${v0} - продолжение"; - - static String m81(v0) => "[Диагностика] Не удалось закрыть Hive boxes: ${v0}"; - - static String m82(v0) => - "[Диагностика] Директория базы данных не существует: ${v0}"; + static String m82(v0) => "⚠ URLConf.checkHost() ошибка: ${v0} - продолжение"; static String m83(v0) => + "⚠ appModel.checkUpdate() ошибка: ${v0} - продолжение"; + + static String m84(v0) => "[Диагностика] Не удалось закрыть Hive boxes: ${v0}"; + + static String m85(v0) => + "[Диагностика] Директория базы данных не существует: ${v0}"; + + static String m86(v0) => "[Диагностика] Удаление директории базы данных: ${v0}"; - static String m84(v0) => "[Диагностика] ${v0}"; + static String m87(v0) => "[Диагностика] ${v0}"; - static String m85(v0) => "Режим диагностики - Шаг ${v0}"; + static String m88(v0) => "Режим диагностики - Шаг ${v0}"; - static String m86(v0) => "✗ Hive.openBox(\"app_conf\") ошибка: ${v0}"; + static String m89(v0) => "✗ Hive.openBox(\"app_conf\") ошибка: ${v0}"; - static String m87(v0) => "[${v0}] ⚠ Лог-файл не существует"; + static String m90(v0) => "[${v0}] ⚠ Лог-файл не существует"; - static String m88(v0) => + static String m91(v0) => "[${v0}] --- Чтение лога завершено (показаны последние 1000 строк) ---"; - static String m89(v0, v1) => "[${v0}] ✗ Не удалось прочитать лог: ${v1}"; - - static String m90(v0) => - "[Диагностика] Не удалось сбросить базу данных: ${v0}"; - - static String m91(v0) => "[${v0}] Начало инициализации..."; - - static String m92(v0) => "[${v0}] --- Начало чтения полного лог-файла ---"; + static String m92(v0, v1) => "[${v0}] ✗ Не удалось прочитать лог: ${v1}"; static String m93(v0) => - "Очистка не удалась, пожалуйста, удалите файл вручную, расположение файла: ${v0}"; + "[Диагностика] Не удалось сбросить базу данных: ${v0}"; - static String m94(v0) => "Произошла ошибка: ${v0}"; + static String m94(v0) => "[${v0}] Начало инициализации..."; - static String m95(v0) => - "Ошибка инициализации, пожалуйста, сделайте снимок экрана и сообщите разработчику. ${v0}"; + static String m95(v0) => "[${v0}] --- Начало чтения полного лог-файла ---"; static String m96(v0) => - "Если у вас возникли проблемы с патчем NVME, запустите этот инструмент. (Может привести к недоступности установки/обновления игры.)\n\nСтатус патча: ${v0}"; + "Очистка не удалась, пожалуйста, удалите файл вручную, расположение файла: ${v0}"; - static String m97(v0) => - "Использовать сервис зеркальной загрузки от китайской Star Citizen Wiki для загрузки или восстановления файла p4k.\nИнформация о версии: ${v0}"; + static String m97(v0) => "Произошла ошибка: ${v0}"; static String m98(v0) => - "В некоторых случаях лог-файл RSI Launcher может повредиться, что мешает завершению сканирования проблем. Используйте этот инструмент для очистки поврежденных лог-файлов.\n\nТекущий размер лог-файла: ${v0} МБ"; + "Ошибка инициализации, пожалуйста, сделайте снимок экрана и сообщите разработчику. ${v0}"; static String m99(v0) => + "Если у вас возникли проблемы с патчем NVME, запустите этот инструмент. (Может привести к недоступности установки/обновления игры.)\n\nСтатус патча: ${v0}"; + + static String m100(v0) => + "Использовать сервис зеркальной загрузки от китайской Star Citizen Wiki для загрузки или восстановления файла p4k.\nИнформация о версии: ${v0}"; + + static String m101(v0) => + "В некоторых случаях лог-файл RSI Launcher может повредиться, что мешает завершению сканирования проблем. Используйте этот инструмент для очистки поврежденных лог-файлов.\n\nТекущий размер лог-файла: ${v0} МБ"; + + static String m102(v0) => "Если графика игры выглядит необычно или после обновления версии, используйте этот инструмент для очистки устаревших шейдеров (также вернёт Vulkan к DX11)\n\nРазмер кэша: ${v0} МБ"; - static String m100(v0, v1, v2, v3, v4) => + static String m103(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 m103(v0) => "Ошибка обработки: ${v0}"; + static String m106(v0) => "Ошибка обработки: ${v0}"; - static String m104(v0) => "Не удалось прочитать информацию о лаунчере: ${v0}"; + static String m107(v0) => "Не удалось прочитать информацию о лаунчере: ${v0}"; - static String m105(v0) => "Статус патча: ${v0}"; + static String m108(v0) => "Статус патча: ${v0}"; - static String m106(v0) => "Внутренняя версия лаунчера: ${v0}"; + static String m109(v0) => "Внутренняя версия лаунчера: ${v0}"; - static String m114(v0) => "Открытие файла: ${v0}"; + static String m117(v0) => "Открытие файла: ${v0}"; - static String m115(v0, v1) => + static String m118(v0, v1) => "Загрузка завершена: ${v0} файлов, время: ${v1} мс"; - static String m116(v0) => "Чтение файла: ${v0}..."; + static String m119(v0) => "Чтение файла: ${v0}..."; - static String m117(v0, v1) => "Обработка файлов (${v0}/${v1})..."; + static String m120(v0, v1) => "Обработка файлов (${v0}/${v1})..."; - static String m118(v0) => "Неизвестный тип файла\n${v0}"; + static String m121(v0) => "Неизвестный тип файла\n${v0}"; - static String m119(v0) => "Просмотрщик P4K -> ${v0}"; + static String m122(v0) => "Просмотрщик P4K -> ${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -402,30 +402,30 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage( "Проверка: среды выполнения", ), - "doctor_action_info_game_abnormal_exit": m6, + "doctor_action_info_game_abnormal_exit": m9, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage( "Аварийное завершение игры: неизвестная ошибка", ), - "doctor_action_info_info_feedback": m7, - "doctor_action_result_analysis_issues_found": m8, + "doctor_action_info_info_feedback": m10, + "doctor_action_result_analysis_issues_found": m11, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage( "Анализ завершен, проблем не обнаружено", ), - "doctor_action_result_create_folder_fail": m9, + "doctor_action_result_create_folder_fail": m12, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage( "Папка успешно создана, пожалуйста, попробуйте продолжить загрузку игры!", ), - "doctor_action_result_fix_fail": m10, + "doctor_action_result_fix_fail": m13, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "Исправление выполнено успешно, пожалуйста, попробуйте перезагрузить компьютер и продолжить установку игры! Если изменение реестра вызвало проблемы совместимости с другими программами, используйте очистку реестра NVME в разделе Инструменты.", ), "doctor_action_result_game_start_success": MessageLookupByLibrary.simpleMessage( "Исправлено успешно, попробуйте запустить игру. (Если проблема не устраняется, используйте \'Переустановить EAC\' в наборе инструментов.)", ), - "doctor_action_result_info_unsupported_os": m11, + "doctor_action_result_info_unsupported_os": m14, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage( "Эта проблема в настоящее время не поддерживает автоматическое исправление, пожалуйста, предоставьте снимок экрана для получения помощи", @@ -518,10 +518,10 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_info_processing": MessageLookupByLibrary.simpleMessage( "Обработка...", ), - "doctor_info_result_add_registry_value": m12, + "doctor_info_result_add_registry_value": m15, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage("Путь установки на китайском!"), - "doctor_info_result_chinese_install_path_error": m13, + "doctor_info_result_chinese_install_path_error": m16, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage( "Имя пользователя на китайском!", ), @@ -529,12 +529,12 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Имя пользователя на китайском может вызвать ошибки запуска/установки игры! Нажмите кнопку исправить, чтобы увидеть руководство по изменению!", ), - "doctor_info_result_create_live_folder": m14, + "doctor_info_result_create_live_folder": m17, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage( "EasyAntiCheat не установлен или некорректно завершен", ), - "doctor_info_result_fix_suggestion": m15, + "doctor_info_result_fix_suggestion": m18, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "Новое устройство NVME, временно несовместимое с RSI Launcher, может привести к сбою установки", @@ -545,7 +545,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("Недостаточно физической памяти"), - "doctor_info_result_memory_requirement": m16, + "doctor_info_result_memory_requirement": m19, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("Отсутствуют файлы EasyAntiCheat"), "doctor_info_result_missing_live_folder": MessageLookupByLibrary.simpleMessage( @@ -557,7 +557,7 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage( "Неподдерживаемая операционная система, игра может не запуститься", ), - "doctor_info_result_upgrade_system": m17, + "doctor_info_result_upgrade_system": m20, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "Файлы EasyAntiCheat не найдены в папке LIVE или файлы неполные. Пожалуйста, используйте RSI Launcher для проверки файлов", @@ -572,7 +572,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Пожалуйста, выберите директорию установки игры на главной странице.", ), - "doctor_title_one_click_diagnosis": m18, + "doctor_title_one_click_diagnosis": m21, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage( "Отменить все", ), @@ -608,11 +608,11 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_action_resume_all": MessageLookupByLibrary.simpleMessage( "Возобновить все", ), - "downloader_info_checked": m19, + "downloader_info_checked": m22, "downloader_info_checking": MessageLookupByLibrary.simpleMessage( "Проверка", ), - "downloader_info_checking_progress": m20, + "downloader_info_checking_progress": m23, "downloader_info_deleted": MessageLookupByLibrary.simpleMessage("Удалено"), "downloader_info_download_completed": MessageLookupByLibrary.simpleMessage( "Загрузка завершена", @@ -624,9 +624,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Пожалуйста, введите единицу скорости загрузки, например: 1, 100k, 10m. Оставьте поле пустым или введите 0 для снятия ограничения.", ), - "downloader_info_download_upload_speed": m21, - "downloader_info_downloaded": m22, - "downloader_info_downloading": m23, + "downloader_info_download_upload_speed": m24, + "downloader_info_downloaded": m25, + "downloader_info_downloading": m26, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage( "Загрузка...", ), @@ -651,9 +651,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Настройки ограничения скорости сохранены. Будут применены при следующем запуске загрузчика.", ), - "downloader_info_status": m24, - "downloader_info_total_size": m25, - "downloader_info_uploaded": m26, + "downloader_info_status": m27, + "downloader_info_total_size": m28, + "downloader_info_uploaded": m29, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("Ожидание"), "downloader_input_download_speed_limit": MessageLookupByLibrary.simpleMessage("Ограничение загрузки:"), @@ -700,7 +700,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Локализация DPS калькулятора"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("Расширение внешнего браузера:"), - "home_action_info_abnormal_game_exit": m27, + "home_action_info_abnormal_game_exit": m30, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage( "Пожалуйста, проверьте появившуюся веб-ссылку для получения подробной информации.", ), @@ -711,7 +711,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage( "Встроено в игру", ), - "home_action_info_initialization_failed": m28, + "home_action_info_initialization_failed": m31, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage( "Инициализация ресурсов локализации...", @@ -734,7 +734,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Roberts Space Industries, начало всего", ), - "home_action_info_scan_complete_valid_directories_found": m29, + "home_action_info_scan_complete_valid_directories_found": m32, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage( "Сканирование...", ), @@ -801,7 +801,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_holiday_countdown": MessageLookupByLibrary.simpleMessage( "Обратный отсчет до праздников", ), - "home_holiday_countdown_days": m30, + "home_holiday_countdown_days": m33, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* Даты праздников собираются и поддерживаются вручную и могут содержать ошибки. Обратная связь приветствуется!", ), @@ -882,10 +882,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Чтение файла p4k..."), "home_localization_advanced_msg_reading_server_localization_text": MessageLookupByLibrary.simpleMessage("Получение текста локализации..."), - "home_localization_advanced_msg_version": m31, - "home_localization_advanced_title": m32, - "home_localization_advanced_title_msg": m33, - "home_localization_advanced_title_preview": m34, + "home_localization_advanced_msg_version": m34, + "home_localization_advanced_title": m35, + "home_localization_advanced_title_msg": m36, + "home_localization_advanced_title_preview": m37, "home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage( "Для этой версии нет описания", ), @@ -895,7 +895,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Доступна новая версия локализации!", ), - "home_localization_new_version_installed": m35, + "home_localization_new_version_installed": m38, "home_localization_select_customize_file": MessageLookupByLibrary.simpleMessage( "Пожалуйста, выберите пользовательский файл локализации", @@ -919,7 +919,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Эта функция помогает вам удобнее запускать игру.\n\nДля обеспечения безопасности аккаунта эта функция использует локализованный браузер для сохранения состояния входа, и не сохраняет информацию о вашем пароле (если вы не включили функцию автозаполнения).\n\nПри использовании этой функции для входа в аккаунт убедитесь, что вы скачали SCToolbox из надежного источника.", ), - "home_login_info_rsi_server_report": m36, + "home_login_info_rsi_server_report": m39, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage( "Запускаем игру...", ), @@ -952,7 +952,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Поддержка метода ввода сообщества не установлена", ), - "input_method_community_input_method_support_version": m39, + "input_method_community_input_method_support_version": m42, "input_method_confirm_enable_remote_input": MessageLookupByLibrary.simpleMessage( "Подтвердить включение удаленного ввода?", @@ -1014,7 +1014,7 @@ class MessageLookup extends MessageLookupByLibrary { "input_method_support_updated": MessageLookupByLibrary.simpleMessage( "Поддержка метода ввода сообщества обновлена", ), - "input_method_support_updated_to_version": m40, + "input_method_support_updated_to_version": m43, "input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage( "Текст не может быть пустым!", ), @@ -1035,7 +1035,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Отзыв о локализации"), "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage("Удалить локализацию"), - "localization_info_channel": m41, + "localization_info_channel": m44, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("Локализация сообщества"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage( @@ -1044,16 +1044,16 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_custom_files": MessageLookupByLibrary.simpleMessage( "Пользовательские файлы", ), - "localization_info_enabled": m42, + "localization_info_enabled": m45, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "USER.cfg содержит несовместимые параметры локализации, это может быть остаток от предыдущих файлов локализации.\n\nЭто может привести к неработающей локализации или искаженному тексту, нажмите подтвердить, чтобы удалить эти параметры (это не повлияет на другие настройки).", ), - "localization_info_installation_error": m43, + "localization_info_installation_error": m46, "localization_info_installed": MessageLookupByLibrary.simpleMessage( "Установлено", ), - "localization_info_installed_version": m44, + "localization_info_installed_version": m47, "localization_info_language": MessageLookupByLibrary.simpleMessage( "Язык: ", ), @@ -1078,14 +1078,14 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_unavailable": MessageLookupByLibrary.simpleMessage( "Недоступно", ), - "localization_info_update_time": m45, - "localization_info_version_number": m46, - "log_analyzer_collision_details": m47, - "log_analyzer_death_details": m48, + "localization_info_update_time": m48, + "localization_info_version_number": m49, + "log_analyzer_collision_details": m50, + "log_analyzer_death_details": m51, "log_analyzer_description": MessageLookupByLibrary.simpleMessage( "Анализ ваших игровых записей (логин, смерти, убийства и другая информация)", ), - "log_analyzer_details_info": m49, + "log_analyzer_details_info": m52, "log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage( "Дезинтеграция", ), @@ -1129,11 +1129,11 @@ class MessageLookup extends MessageLookupByLibrary { "log_analyzer_game_start": MessageLookupByLibrary.simpleMessage( "Запуск игры", ), - "log_analyzer_kill_death_suicide_count": m50, + "log_analyzer_kill_death_suicide_count": m53, "log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage( "Сводка убийств", ), - "log_analyzer_mode_loading_time": m51, + "log_analyzer_mode_loading_time": m54, "log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage( "Сбои игры не обнаружены", ), @@ -1147,9 +1147,9 @@ class MessageLookup extends MessageLookupByLibrary { "log_analyzer_play_time": MessageLookupByLibrary.simpleMessage( "Время игры", ), - "log_analyzer_play_time_format": m52, - "log_analyzer_player_location": m53, - "log_analyzer_player_login": m54, + "log_analyzer_play_time_format": m55, + "log_analyzer_player_location": m56, + "log_analyzer_player_login": m57, "log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage( "Введите ключевые слова для поиска", ), @@ -1162,7 +1162,7 @@ class MessageLookup extends MessageLookupByLibrary { "log_analyzer_title": MessageLookupByLibrary.simpleMessage( "Анализатор логов", ), - "log_analyzer_vehicle_damage_details": m55, + "log_analyzer_vehicle_damage_details": m58, "log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage( "Просмотр локального инвентаря", ), @@ -1195,7 +1195,7 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage( "Подтвердить роспуск", ), - "party_room_connect_error": m56, + "party_room_connect_error": m59, "party_room_connect_failed": MessageLookupByLibrary.simpleMessage( "Ошибка подключения", ), @@ -1226,7 +1226,7 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_create_room": MessageLookupByLibrary.simpleMessage( "Создать комнату", ), - "party_room_days_ago": m57, + "party_room_days_ago": m60, "party_room_disconnected": MessageLookupByLibrary.simpleMessage( "Соединение потеряно", ), @@ -1265,7 +1265,7 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_exit_room": MessageLookupByLibrary.simpleMessage( "Выйти из комнаты", ), - "party_room_exit_room_failed": m58, + "party_room_exit_room_failed": m61, "party_room_game_id_empty": MessageLookupByLibrary.simpleMessage( "Игровой ID не может быть пустым", ), @@ -1275,12 +1275,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_game_not_started": MessageLookupByLibrary.simpleMessage( "<Игра не запущена>", ), - "party_room_get_code_failed": m59, + "party_room_get_code_failed": m62, "party_room_go_login": MessageLookupByLibrary.simpleMessage("Войти"), "party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage( "Вы просматриваете как гость. Войдите, чтобы создавать или присоединяться к комнатам.", ), - "party_room_hours_ago": m60, + "party_room_hours_ago": m63, "party_room_info_updated": MessageLookupByLibrary.simpleMessage( "Информация о комнате обновлена", ), @@ -1299,8 +1299,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_kick_member": MessageLookupByLibrary.simpleMessage( "Выгнать участника", ), - "party_room_kick_member_confirm": m61, - "party_room_kick_member_failed": m62, + "party_room_kick_member_confirm": m64, + "party_room_kick_member_failed": m65, "party_room_kicked": MessageLookupByLibrary.simpleMessage( "был выгнан из комнаты", ), @@ -1317,15 +1317,15 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_link_format_error": MessageLookupByLibrary.simpleMessage( "Неверный формат ссылки!", ), - "party_room_load_list_failed": m63, + "party_room_load_list_failed": m66, "party_room_loading": MessageLookupByLibrary.simpleMessage("Загрузка..."), "party_room_location": MessageLookupByLibrary.simpleMessage("Локация"), "party_room_login": MessageLookupByLibrary.simpleMessage("Войти"), "party_room_main_menu": MessageLookupByLibrary.simpleMessage( "<Главное меню>", ), - "party_room_members_count": m64, - "party_room_minutes_ago": m65, + "party_room_members_count": m67, + "party_room_minutes_ago": m68, "party_room_need_login": MessageLookupByLibrary.simpleMessage( "Требуется вход", ), @@ -1368,12 +1368,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_reconnect": MessageLookupByLibrary.simpleMessage( "Переподключиться", ), - "party_room_reconnect_failed": m66, + "party_room_reconnect_failed": m69, "party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage( "Соединение с сервером комнаты потеряно. Переподключиться?", ), - "party_room_reconnect_retry": m67, - "party_room_register_failed": m68, + "party_room_reconnect_retry": m70, + "party_room_register_failed": m71, "party_room_register_success": MessageLookupByLibrary.simpleMessage( "Регистрация успешна!", ), @@ -1465,8 +1465,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_transfer_owner": MessageLookupByLibrary.simpleMessage( "Передать владение", ), - "party_room_transfer_owner_confirm": m69, - "party_room_transfer_owner_failed": m70, + "party_room_transfer_owner_confirm": m72, + "party_room_transfer_owner_failed": m73, "party_room_unknown_area": MessageLookupByLibrary.simpleMessage( "Неизвестная зона", ), @@ -1524,7 +1524,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_info_applied": MessageLookupByLibrary.simpleMessage( "Применено", ), - "performance_info_current_status": m71, + "performance_info_current_status": m74, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage( "Удаление файла конфигурации...", ), @@ -1542,7 +1542,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_info_graphics": MessageLookupByLibrary.simpleMessage( "Графика", ), - "performance_info_min_max_values": m72, + "performance_info_min_max_values": m75, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage( "Не применено", ), @@ -1722,7 +1722,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_json_text_water_info": MessageLookupByLibrary.simpleMessage( "Уровень всех водных эффектов", ), - "performance_title_performance_optimization": m73, + "performance_title_performance_optimization": m76, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage("Очистить кэш файлов локализации"), "setting_action_create_desktop_shortcut": @@ -1737,7 +1737,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage("Данные автозаполнения очищены"), - "setting_action_info_cache_clearing_info": m74, + "setting_action_info_cache_clearing_info": m77, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage( "Это не повлияет на уже установленные локализации.", @@ -1799,7 +1799,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage("Сбросить автозаполнение пароля"), - "setting_action_set_core_count": m75, + "setting_action_set_core_count": m78, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage( "Установить файл игры (StarCitizen.exe)", ), @@ -1849,39 +1849,39 @@ class MessageLookup extends MessageLookupByLibrary { "splash_analytics_done": MessageLookupByLibrary.simpleMessage( "✓ AnalyticsApi.touch(\"launch\") выполнено", ), - "splash_analytics_error": m76, + "splash_analytics_error": m79, "splash_analytics_timeout": MessageLookupByLibrary.simpleMessage( "⚠ AnalyticsApi.touch() таймаут (10с) - продолжение", ), "splash_app_init_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.initApp() выполнено", ), - "splash_app_init_error": m77, + "splash_app_init_error": m80, "splash_app_init_timeout": MessageLookupByLibrary.simpleMessage( "✗ appModel.initApp() таймаут (10с)", ), "splash_aria2c_done": MessageLookupByLibrary.simpleMessage( "✓ aria2cModelProvider инициализация завершена", ), - "splash_aria2c_error": m78, + "splash_aria2c_error": m81, "splash_check_host_done": MessageLookupByLibrary.simpleMessage( "✓ URLConf.checkHost() выполнено", ), - "splash_check_host_error": m79, + "splash_check_host_error": m82, "splash_check_host_timeout": MessageLookupByLibrary.simpleMessage( "⚠ URLConf.checkHost() таймаут (10с) - продолжение", ), "splash_check_update_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.checkUpdate() выполнено", ), - "splash_check_update_error": m80, + "splash_check_update_error": m83, "splash_check_update_timeout": MessageLookupByLibrary.simpleMessage( "⚠ appModel.checkUpdate() таймаут (10с) - продолжение", ), "splash_check_version": MessageLookupByLibrary.simpleMessage( "Проверка splash_alert_info_version...", ), - "splash_close_hive_failed": m81, + "splash_close_hive_failed": m84, "splash_context_unmounted": MessageLookupByLibrary.simpleMessage( "✗ Context размонтирован", ), @@ -1897,16 +1897,16 @@ class MessageLookup extends MessageLookupByLibrary { "splash_db_deleted": MessageLookupByLibrary.simpleMessage( "[Диагностика] Директория базы данных удалена", ), - "splash_db_not_exist": m82, + "splash_db_not_exist": m85, "splash_db_reset_done": MessageLookupByLibrary.simpleMessage( "[Диагностика] Сброс базы данных завершён, подготовка к выходу из приложения", ), "splash_db_reset_msg": MessageLookupByLibrary.simpleMessage( "База данных сброшена, приложение будет закрыто. Пожалуйста, перезапустите приложение.", ), - "splash_deleting_db": m83, - "splash_diagnostic_log": m84, - "splash_diagnostic_mode": m85, + "splash_deleting_db": m86, + "splash_diagnostic_log": m87, + "splash_diagnostic_mode": m88, "splash_error": MessageLookupByLibrary.simpleMessage("Ошибка"), "splash_exec_analytics": MessageLookupByLibrary.simpleMessage( "Выполнение AnalyticsApi.touch(\"launch\")...", @@ -1926,7 +1926,7 @@ class MessageLookup extends MessageLookupByLibrary { "splash_hive_done": MessageLookupByLibrary.simpleMessage( "✓ Hive.openBox(\"app_conf\") выполнено", ), - "splash_hive_error": m86, + "splash_hive_error": m89, "splash_hive_timeout": MessageLookupByLibrary.simpleMessage( "✗ Hive.openBox(\"app_conf\") таймаут (10с)", ), @@ -1936,24 +1936,24 @@ class MessageLookup extends MessageLookupByLibrary { "splash_init_task_status": MessageLookupByLibrary.simpleMessage( "Статус задач инициализации:", ), - "splash_log_not_exist": m87, - "splash_log_read_done": m88, + "splash_log_not_exist": m90, + "splash_log_read_done": m91, "splash_open_hive_box": MessageLookupByLibrary.simpleMessage( "Открытие Hive app_conf box...", ), "splash_read_full_log": MessageLookupByLibrary.simpleMessage( "Прочитать полный лог", ), - "splash_read_log_failed": m89, + "splash_read_log_failed": m92, "splash_reset_database": MessageLookupByLibrary.simpleMessage( "Сбросить базу данных", ), - "splash_reset_db_failed": m90, + "splash_reset_db_failed": m93, "splash_show_agreement": MessageLookupByLibrary.simpleMessage( "Необходимо показать диалог пользовательского соглашения...", ), - "splash_start_init": m91, - "splash_start_read_log": m92, + "splash_start_init": m94, + "splash_start_read_log": m95, "splash_step0_done": MessageLookupByLibrary.simpleMessage( "--- Шаг 0 завершён, переход к Шагу 1 ---", ), @@ -2027,14 +2027,14 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage( "Очистка завершена, пожалуйста, выполните установку или запуск игры.", ), - "tools_action_info_cleanup_failed": m93, + "tools_action_info_cleanup_failed": m96, "tools_action_info_config_file_not_exist": MessageLookupByLibrary.simpleMessage( "Конфигурационный файл не существует, попробуйте запустить игру один раз", ), "tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage( "Файлы EAC удалены. Сейчас будет открыт RSI Launcher, пожалуйста, перейдите в SETTINGS -> VERIFY для переустановки EAC.", ), - "tools_action_info_error_occurred": m94, + "tools_action_info_error_occurred": m97, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "Исправление успешно, попробуйте перезагрузить компьютер и продолжить установку игры! Если изменения реестра вызвали проблемы совместимости с другими программами, используйте инструмент очистки реестра NVME в разделе Инструменты.", ), @@ -2046,7 +2046,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Запись IP-адресов в файл Hosts для решения проблем с DNS-загрязнением, препятствующих входу на официальный сайт в некоторых регионах.\nЭта функция находится на первом этапе тестирования, пожалуйста, сообщайте о любых проблемах.", ), - "tools_action_info_init_failed": m95, + "tools_action_info_init_failed": m98, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "Лог-файл не существует, попробуйте запустить игру или начать установку и выйти из лаунчера. Если проблема не решена, попробуйте обновить лаунчер до последней версии!", ), @@ -2059,7 +2059,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage( "Не установлен", ), - "tools_action_info_nvme_patch_issue": m96, + "tools_action_info_nvme_patch_issue": m99, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "Одним кликом отключить дрожание камеры в игре для упрощения фотосъёмки.\n\nИнформация о параметрах предоставлена @拉邦那 Lapernum.", @@ -2068,7 +2068,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Загрузка p4k уже выполняется, пожалуйста, проверьте менеджер загрузок!", ), - "tools_action_info_p4k_download_repair_tip": m97, + "tools_action_info_p4k_download_repair_tip": m100, "tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage( "P4k - это основной файл игры Star Citizen, размером более 100 ГБ. Автономное скачивание, предоставляемое SCToolbox, помогает пользователям с медленной загрузкой p4k или для исправления файла p4k, который не может быть исправлен официальным лаунчером.\n\nДалее появится диалоговое окно с запросом места сохранения (можно выбрать папку Star Citizen или другое место). После завершения загрузки убедитесь, что файл P4K находится в папке LIVE, затем используйте лаунчер Star Citizen для проверки обновлений.", ), @@ -2086,7 +2086,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "Директория RSI Launcher не найдена, пожалуйста, выполните операцию вручную.", ), - "tools_action_info_rsi_launcher_log_issue": m98, + "tools_action_info_rsi_launcher_log_issue": m101, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage( "RSI Launcher не найден, попробуйте переустановить его или добавить вручную в настройках.", @@ -2098,12 +2098,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "Запуск RSI Launcher от имени администратора может решить некоторые проблемы.\n\nЕсли настроены параметры блокировки энергоэффективных ядер, они также будут применены здесь.", ), - "tools_action_info_shader_cache_issue": m99, + "tools_action_info_shader_cache_issue": m102, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "Местоположение установки Star Citizen не найдено, пожалуйста, запустите игру хотя бы один раз или добавьте местоположение вручную в настройках.", ), - "tools_action_info_system_info_content": m100, + "tools_action_info_system_info_content": m103, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage( "Информация о системе", ), @@ -2174,7 +2174,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage( "Место установки игры: ", ), - "tools_info_processing_failed": m103, + "tools_info_processing_failed": m106, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage( "Местоположение RSI Launcher:", ), @@ -2203,15 +2203,15 @@ class MessageLookup extends MessageLookupByLibrary { "Не удалось прочитать информацию о лаунчере!", ), "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args": - m104, + m107, "tools_rsi_launcher_enhance_msg_error_launcher_notfound": MessageLookupByLibrary.simpleMessage("RSI Launcher не найден"), - "tools_rsi_launcher_enhance_msg_patch_status": m105, + "tools_rsi_launcher_enhance_msg_patch_status": m108, "tools_rsi_launcher_enhance_msg_uninstall": MessageLookupByLibrary.simpleMessage( "* Чтобы удалить патч улучшений, переустановите RSI Launcher.", ), - "tools_rsi_launcher_enhance_msg_version": m106, + "tools_rsi_launcher_enhance_msg_version": m109, "tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage( "Улучшения RSI Launcher - это функция сообщества, которая распаковывает \"RSI Launcher\" на вашем компьютере и добавляет дополнительные функции улучшений. Какие функции использовать - решать вам.\n\nВ настоящее время CIG разрешает нам только операции с мультиязычностью. Ускорение загрузки лаунчера - это дополнительная функция, которую мы считаем полезной. Нарушение пользовательского соглашения CIG (https://robertsspaceindustries.com/eula) может привести к серьезным последствиям, включая блокировку аккаунта. Решение об использовании остается за вами, мы не несем ответственности за возможные последствия (повреждение игры, блокировка аккаунта и т.д.).\n\nДля модификаций лаунчера мы открыли исходный код на: https://github.com/StarCitizenToolBox/RSILauncherEnhance, при необходимости вы можете его изучить.\n\nЕсли по какой-либо причине вам нужно отменить этот патч улучшений, просто переустановите официальный лаунчер поверх текущего.", ), @@ -2250,18 +2250,18 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage( "Инициализация...", ), - "tools_unp4k_msg_open_file": m114, - "tools_unp4k_msg_read_completed": m115, - "tools_unp4k_msg_read_file": m116, + "tools_unp4k_msg_open_file": m117, + "tools_unp4k_msg_read_completed": m118, + "tools_unp4k_msg_read_file": m119, "tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage( "Чтение файла P4K...", ), "tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage( "Обработка файлов...", ), - "tools_unp4k_msg_reading3": m117, - "tools_unp4k_msg_unknown_file_type": m118, - "tools_unp4k_title": m119, + "tools_unp4k_msg_reading3": m120, + "tools_unp4k_msg_unknown_file_type": m121, + "tools_unp4k_title": m122, "tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage( "Нажмите на файл для предварительного просмотра", ), diff --git a/lib/generated/intl/messages_zh_CN.dart b/lib/generated/intl/messages_zh_CN.dart index b7901a5..8dec4c6 100644 --- a/lib/generated/intl/messages_zh_CN.dart +++ b/lib/generated/intl/messages_zh_CN.dart @@ -33,244 +33,250 @@ class MessageLookup extends MessageLookupByLibrary { static String m5(v0) => "发现新版本 -> ${v0}"; - static String m6(v0) => "游戏异常退出:${v0}"; + static String m6(v0) => "已加载 ${v0} 条记录"; - static String m7(v0) => "info:${v0},请点击右下角加群反馈。"; + static String m7(v0) => "找到 ${v0} 个结果"; - static String m8(v0) => "分析完毕,发现 ${v0} 个问题"; + static String m8(v0) => "DataForge 查看器 -> ${v0}"; - static String m9(v0, v1) => "创建文件夹失败,请尝试手动创建。\n目录:${v0} \n错误:${v1}"; + static String m9(v0) => "游戏异常退出:${v0}"; - static String m10(v0) => "修复失败,${v0}"; + static String m10(v0) => "info:${v0},请点击右下角加群反馈。"; - static String m11(v0) => "不支持的操作系统:${v0}"; + static String m11(v0) => "分析完毕,发现 ${v0} 个问题"; - static String m12(v0) => + static String m12(v0, v1) => "创建文件夹失败,请尝试手动创建。\n目录:${v0} \n错误:${v1}"; + + static String m13(v0) => "修复失败,${v0}"; + + static String m14(v0) => "不支持的操作系统:${v0}"; + + static String m15(v0) => "为注册表项添加 ForcedPhysicalSectorSizeInBytes 值 模拟旧设备。硬盘分区(${v0})"; - static String m13(v0) => "中文安装路径!这可能会导致游戏 启动/安装 错误!(${v0}),请在RSI启动器更换安装路径。"; + static String m16(v0) => "中文安装路径!这可能会导致游戏 启动/安装 错误!(${v0}),请在RSI启动器更换安装路径。"; - static String m14(v0) => "点击修复为您创建 LIVE 文件夹,完成后重试安装。(${v0})"; + static String m17(v0) => "点击修复为您创建 LIVE 文件夹,完成后重试安装。(${v0})"; - static String m15(v0) => "修复建议: ${v0}"; + static String m18(v0) => "修复建议: ${v0}"; - static String m16(v0) => "您至少需要 16GB 的物理内存(Memory)才可运行此游戏。(当前大小:${v0})"; + static String m19(v0) => "您至少需要 16GB 的物理内存(Memory)才可运行此游戏。(当前大小:${v0})"; - static String m17(v0) => "请升级您的系统 (${v0})"; + static String m20(v0) => "请升级您的系统 (${v0})"; - static String m18(v0) => "一键诊断 -> ${v0}"; + static String m21(v0) => "一键诊断 -> ${v0}"; - static String m19(v0) => "已校验:${v0}"; + static String m22(v0) => "已校验:${v0}"; - static String m20(v0) => "校验中... (${v0}%)"; + static String m23(v0) => "校验中... (${v0}%)"; - static String m21(v0, v1) => "下载: ${v0}/s 上传:${v1}/s"; + static String m24(v0, v1) => "下载: ${v0}/s 上传:${v1}/s"; - static String m22(v0) => "已下载:${v0}"; + static String m25(v0) => "已下载:${v0}"; - static String m23(v0) => "下载中... (${v0}%)"; + static String m26(v0) => "下载中... (${v0}%)"; - static String m24(v0) => "状态:${v0}"; + static String m27(v0) => "状态:${v0}"; - static String m25(v1) => "总大小:${v1}"; + static String m28(v1) => "总大小:${v1}"; - static String m26(v0) => "已上传:${v0}"; + static String m29(v0) => "已上传:${v0}"; - static String m27(v0, v1, v2, v3, v4) => + static String m30(v0, v1, v2, v3, v4) => "游戏非正常退出\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\n诊断信息:${v3} \n${v4}"; - static String m28(v0) => "初始化网页汉化资源失败!${v0}"; + static String m31(v0) => "初始化网页汉化资源失败!${v0}"; - 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) => "高级汉化 -> ${v0}"; + static String m35(v0) => "高级汉化 -> ${v0}"; - static String m33(v0, v1) => "汉化文本行数:${v0} P4K文本行数:${v1}"; + static String m36(v0, v1) => "汉化文本行数:${v0} P4K文本行数:${v1}"; - static String m34(v0) => "预览:${v0}"; + static String m37(v0) => "预览:${v0}"; - static String m35(v0) => "您在 ${v0} 安装的汉化有新版本啦!"; + static String m38(v0) => "您在 ${v0} 安装的汉化有新版本啦!"; - static String m36(v1, v2) => + static String m39(v1, v2) => "RSI 服务器报告版本号:${v1} \n\n本地版本号:${v2} \n\n建议使用 RSI Launcher 更新游戏!"; - static String m37(v0) => "是否删除本地文件,稍后您可以尝试重新下载。错误信息:\n${v0}"; + static String m40(v0) => "是否删除本地文件,稍后您可以尝试重新下载。错误信息:\n${v0}"; - static String m38(v0) => "${v0}\n\n本地翻译模型对中英混合处理能力较差,如有需要,建议分开发送。"; + static String m41(v0) => "${v0}\n\n本地翻译模型对中英混合处理能力较差,如有需要,建议分开发送。"; - static String m39(v0) => "社区输入法支持:${v0}"; + static String m42(v0) => "社区输入法支持:${v0}"; - static String m40(v0) => "社区输入法支持已更新到:${v0}"; + static String m43(v0) => "社区输入法支持已更新到:${v0}"; - static String m41(v0) => "通道:${v0}"; + static String m44(v0) => "通道:${v0}"; - static String m42(v0) => "启用(${v0}):"; + static String m45(v0) => "启用(${v0}):"; - static String m43(v0) => "安装出错!\n\n ${v0}"; + static String m46(v0) => "安装出错!\n\n ${v0}"; - static String m44(v0) => "已安装版本:${v0}"; + static String m47(v0) => "已安装版本:${v0}"; - static String m45(v0) => "更新时间:${v0}"; + static String m48(v0) => "更新时间:${v0}"; - static String m46(v0) => "版本号:${v0}"; - - static String m47(v0, v1, v2, v3, v4) => - "区域:${v0} 玩家驾驶:${v1} 碰撞实体:${v2} \n碰撞载具: ${v3} 碰撞距离:${v4} "; - - static String m48(v0, v2, v3) => "受害者ID:${v0} \n位置:${v2} \n区域:${v3}"; - - static String m49(v0) => "详细信息:${v0}"; + static String m49(v0) => "版本号:${v0}"; static String m50(v0, v1, v2, v3, v4) => + "区域:${v0} 玩家驾驶:${v1} 碰撞实体:${v2} \n碰撞载具: ${v3} 碰撞距离:${v4} "; + + static String m51(v0, v2, v3) => "受害者ID:${v0} \n位置:${v2} \n区域:${v3}"; + + static String m52(v0) => "详细信息:${v0}"; + + static String m53(v0, v1, v2, v3, v4) => "击杀次数:${v0} 死亡次数:${v1} 自杀次数:${v2} \n载具损毁(软死亡):${v3} 载具损毁(解体):${v4}"; - static String m51(v0, v1) => "模式:${v0} 用时:${v1} 秒"; + static String m54(v0, v1) => "模式:${v0} 用时:${v1} 秒"; - static String m52(v0, v1, v2) => "${v0} 小时 ${v1} 分钟 ${v2} 秒"; + static String m55(v0, v1, v2) => "${v0} 小时 ${v1} 分钟 ${v2} 秒"; - static String m53(v0, v1) => "玩家ID:${v0} 位置:${v1}"; + static String m56(v0, v1) => "玩家ID:${v0} 位置:${v1}"; - static String m54(v0) => "玩家 ${v0} 登录 ..."; + static String m57(v0) => "玩家 ${v0} 登录 ..."; - static String m55(v0, v1, v2, v3, v4) => + static String m58(v0, v1, v2, v3, v4) => "载具型号:${v0} \n区域:${v1} \n损毁等级:${v2} (${v3}) 责任方:${v4}"; - static String m56(v0) => "连接失败: ${v0}"; + static String m59(v0) => "连接失败: ${v0}"; - static String m57(v0) => "${v0} 天前"; + static String m60(v0) => "${v0} 天前"; - static String m58(v0) => "退出房间失败: ${v0}"; + static String m61(v0) => "退出房间失败: ${v0}"; - static String m59(v0) => "获取验证码失败: ${v0}"; + static String m62(v0) => "获取验证码失败: ${v0}"; - static String m60(v0) => "${v0} 小时前"; + static String m63(v0) => "${v0} 小时前"; - static String m61(v0) => "确定要踢出 ${v0} 吗?"; + static String m64(v0) => "确定要踢出 ${v0} 吗?"; - static String m62(v0) => "踢出成员失败:${v0}"; + static String m65(v0) => "踢出成员失败:${v0}"; - static String m63(v0) => "加载房间列表失败: ${v0}"; + static String m66(v0) => "加载房间列表失败: ${v0}"; - static String m64(v0, v1) => "${v0}/${v1} 成员"; + static String m67(v0, v1) => "${v0}/${v1} 成员"; - static String m65(v0) => "${v0} 分钟前"; + static String m68(v0) => "${v0} 分钟前"; - static String m66(v0) => "重连失败: ${v0}"; + static String m69(v0) => "重连失败: ${v0}"; - static String m67(v0) => "重连失败,已尝试 ${v0} 次"; + static String m70(v0) => "重连失败,已尝试 ${v0} 次"; - static String m68(v0) => "注册失败: ${v0}"; + static String m71(v0) => "注册失败: ${v0}"; - static String m69(v0) => "确定要将房主转移给 ${v0} 吗?"; + static String m72(v0) => "确定要将房主转移给 ${v0} 吗?"; - static String m70(v0) => "转移房主失败:${v0}"; + static String m73(v0) => "转移房主失败:${v0}"; - static String m71(v0) => "当前状态:${v0}"; + static String m74(v0) => "当前状态:${v0}"; - static String m72(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; + static String m75(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; - static String m73(v0) => "性能优化 -> ${v0}"; + static String m76(v0) => "性能优化 -> ${v0}"; - static String m74(v0) => "缓存大小 ${v0}MB,清理盒子下载的汉化文件缓存,不会影响已安装的汉化"; + static String m77(v0) => "缓存大小 ${v0}MB,清理盒子下载的汉化文件缓存,不会影响已安装的汉化"; - static String m75(v0) => + static String m78(v0) => "已设置的核心数量:${v0} (此功能适用于首页的盒子一键启动 或 工具中的RSI启动器管理员模式,当为 0 时不启用此功能 )"; - static String m76(v0) => "⚠ AnalyticsApi.touch(\"launch\") 错误: ${v0} - 继续执行"; + static String m79(v0) => "⚠ AnalyticsApi.touch(\"launch\") 错误: ${v0} - 继续执行"; - static String m77(v0) => "✗ appModel.initApp() 错误: ${v0}"; + static String m80(v0) => "✗ appModel.initApp() 错误: ${v0}"; - static String m78(v0) => "⚠ aria2cModelProvider 初始化错误: ${v0}"; + static String m81(v0) => "⚠ aria2cModelProvider 初始化错误: ${v0}"; - static String m79(v0) => "⚠ URLConf.checkHost() 错误: ${v0} - 继续执行"; + static String m82(v0) => "⚠ URLConf.checkHost() 错误: ${v0} - 继续执行"; - static String m80(v0) => "⚠ appModel.checkUpdate() 错误: ${v0} - 继续执行"; + static String m83(v0) => "⚠ appModel.checkUpdate() 错误: ${v0} - 继续执行"; - static String m81(v0) => "[诊断] 关闭 Hive boxes 失败: ${v0}"; + static String m84(v0) => "[诊断] 关闭 Hive boxes 失败: ${v0}"; - static String m82(v0) => "[诊断] 数据库目录不存在: ${v0}"; + static String m85(v0) => "[诊断] 数据库目录不存在: ${v0}"; - static String m83(v0) => "[诊断] 正在删除数据库目录: ${v0}"; + static String m86(v0) => "[诊断] 正在删除数据库目录: ${v0}"; - static String m84(v0) => "[诊断] ${v0}"; + static String m87(v0) => "[诊断] ${v0}"; - static String m85(v0) => "诊断模式 - Step ${v0}"; + static String m88(v0) => "诊断模式 - Step ${v0}"; - static String m86(v0) => "✗ Hive.openBox(\"app_conf\") 错误: ${v0}"; + static String m89(v0) => "✗ Hive.openBox(\"app_conf\") 错误: ${v0}"; - static String m87(v0) => "[${v0}] ⚠ 日志文件不存在"; + static String m90(v0) => "[${v0}] ⚠ 日志文件不存在"; - static String m88(v0) => "[${v0}] --- 日志读取完成 (显示最后1000行) ---"; + static String m91(v0) => "[${v0}] --- 日志读取完成 (显示最后1000行) ---"; - static String m89(v0, v1) => "[${v0}] ✗ 读取日志失败: ${v1}"; + static String m92(v0, v1) => "[${v0}] ✗ 读取日志失败: ${v1}"; - static String m90(v0) => "[诊断] 重置数据库失败: ${v0}"; + static String m93(v0) => "[诊断] 重置数据库失败: ${v0}"; - static String m91(v0) => "[${v0}] 开始初始化..."; + static String m94(v0) => "[${v0}] 开始初始化..."; - static String m92(v0) => "[${v0}] --- 开始读取完整日志文件 ---"; + static String m95(v0) => "[${v0}] --- 开始读取完整日志文件 ---"; - static String m93(v0) => "清理失败,请手动移除,文件位置:${v0}"; + static String m96(v0) => "清理失败,请手动移除,文件位置:${v0}"; - static String m94(v0) => "出现错误:${v0}"; + static String m97(v0) => "出现错误:${v0}"; - static String m95(v0) => "初始化失败,请截图报告给开发者。${v0}"; - - static String m96(v0) => - "若您使用 nvme 补丁出现问题,请运行此工具。(可能导致游戏 安装/更新 不可用。)\n\n当前补丁状态:${v0}"; - - static String m97(v0) => "使用星际公民中文百科提供的分流下载服务,可用于下载或修复 p4k。 \n版本信息:${v0}"; - - static String m98(v0) => - "在某些情况下 RSI启动器 的 log 文件会损坏,导致无法完成问题扫描,使用此工具清理损坏的 log 文件。\n\n当前日志文件大小:${v0} MB"; + static String m98(v0) => "初始化失败,请截图报告给开发者。${v0}"; static String m99(v0) => + "若您使用 nvme 补丁出现问题,请运行此工具。(可能导致游戏 安装/更新 不可用。)\n\n当前补丁状态:${v0}"; + + static String m100(v0) => "使用星际公民中文百科提供的分流下载服务,可用于下载或修复 p4k。 \n版本信息:${v0}"; + + static String m101(v0) => + "在某些情况下 RSI启动器 的 log 文件会损坏,导致无法完成问题扫描,使用此工具清理损坏的 log 文件。\n\n当前日志文件大小:${v0} MB"; + + static String m102(v0) => "若游戏画面出现异常或版本更新后可使用本工具清理过期的着色器(同时会将 Vulkan 还原为 DX11) \n\n缓存大小:${v0} MB"; - static String m100(v0, v1, v2, v3, v4) => + static String m103(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 m101(v0) => "当前渲染器:${v0}"; + static String m104(v0) => "当前渲染器:${v0}"; - static String m102(v0) => "保存失败:${v0}"; + static String m105(v0) => "保存失败:${v0}"; - static String m103(v0) => "处理失败!:${v0}"; + static String m106(v0) => "处理失败!:${v0}"; - static String m104(v0) => "读取启动器信息失败:${v0}"; + static String m107(v0) => "读取启动器信息失败:${v0}"; - static String m105(v0) => "补丁状态:${v0}"; + static String m108(v0) => "补丁状态:${v0}"; - static String m106(v0) => "启动器内部版本信息:${v0}"; + static String m109(v0) => "启动器内部版本信息:${v0}"; - static String m107(v0) => "导出选中项 (${v0})"; + static String m110(v0) => "导出选中项 (${v0})"; - static String m108(v0) => "提取失败:${v0}"; + static String m111(v0) => "提取失败:${v0}"; - static String m109(v0) => "提取完成:${v0}"; + static String m112(v0) => "提取完成:${v0}"; - static String m110(v0) => "正在提取:${v0}"; + static String m113(v0) => "正在提取:${v0}"; - static String m111(v0) => "提取完成,共 ${v0} 个文件"; + static String m114(v0) => "提取完成,共 ${v0} 个文件"; - static String m112(v0) => "当前文件:${v0}"; + static String m115(v0) => "当前文件:${v0}"; - static String m113(v0, v1) => "正在提取 (${v0}/${v1})"; + static String m116(v0, v1) => "正在提取 (${v0}/${v1})"; - static String m114(v0) => "打开文件:${v0}"; + static String m117(v0) => "打开文件:${v0}"; - static String m115(v0, v1) => "加载完毕:${v0} 个文件,用时:${v1} ms"; + static String m118(v0, v1) => "加载完毕:${v0} 个文件,用时:${v1} ms"; - static String m116(v0) => "读取文件:${v0} ..."; + static String m119(v0) => "读取文件:${v0} ..."; - static String m117(v0, v1) => "正在处理文件 (${v0}/${v1}) ..."; + static String m120(v0, v1) => "正在处理文件 (${v0}/${v1}) ..."; - static String m118(v0) => "未知文件类型\n${v0}"; + static String m121(v0) => "未知文件类型\n${v0}"; - static String m119(v0) => "P4K 查看器 -> ${v0}"; + static String m122(v0) => "P4K 查看器 -> ${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -306,6 +312,7 @@ class MessageLookup extends MessageLookupByLibrary { "已经是最新版本!", ), "about_online_feedback": MessageLookupByLibrary.simpleMessage("在线反馈"), + "action_back": MessageLookupByLibrary.simpleMessage("返回"), "action_close": MessageLookupByLibrary.simpleMessage("关闭"), "action_open_folder": MessageLookupByLibrary.simpleMessage("打开文件夹"), "app_common_error_info": m0, @@ -363,6 +370,71 @@ class MessageLookup extends MessageLookupByLibrary { "提示:当前正在使用分流服务器进行更新,可能会出现下载速度下降,但有助于我们进行成本控制,若下载异常请点击这里跳转手动安装。", ), "app_upgrade_title_new_version_found": m5, + "dcb_viewer_error_not_dcb": MessageLookupByLibrary.simpleMessage( + "无效的 DCB 文件格式", + ), + "dcb_viewer_export": MessageLookupByLibrary.simpleMessage("导出"), + "dcb_viewer_export_failed": MessageLookupByLibrary.simpleMessage("导出失败"), + "dcb_viewer_export_multiple_xml": MessageLookupByLibrary.simpleMessage( + "导出为多个 XML 文件", + ), + "dcb_viewer_export_single_xml": MessageLookupByLibrary.simpleMessage( + "导出为单个 XML", + ), + "dcb_viewer_export_success": MessageLookupByLibrary.simpleMessage("导出成功"), + "dcb_viewer_fold_all": MessageLookupByLibrary.simpleMessage("折叠/展开代码块"), + "dcb_viewer_loaded_records": m6, + "dcb_viewer_loading": MessageLookupByLibrary.simpleMessage( + "正在加载 DCB 文件...", + ), + "dcb_viewer_loading_records": MessageLookupByLibrary.simpleMessage( + "正在加载记录列表...", + ), + "dcb_viewer_no_records": MessageLookupByLibrary.simpleMessage("没有记录"), + "dcb_viewer_no_search_results": MessageLookupByLibrary.simpleMessage( + "没有搜索结果", + ), + "dcb_viewer_parsing": MessageLookupByLibrary.simpleMessage( + "正在解析 DataForge 数据...", + ), + "dcb_viewer_search_case_sensitive": MessageLookupByLibrary.simpleMessage( + "区分大小写", + ), + "dcb_viewer_search_fulltext_placeholder": + MessageLookupByLibrary.simpleMessage("全文搜索(回车确认)..."), + "dcb_viewer_search_in_file": MessageLookupByLibrary.simpleMessage( + "在当前文件中搜索...", + ), + "dcb_viewer_search_list_placeholder": MessageLookupByLibrary.simpleMessage( + "过滤记录路径...", + ), + "dcb_viewer_search_mode": MessageLookupByLibrary.simpleMessage("搜索模式"), + "dcb_viewer_search_no_results": MessageLookupByLibrary.simpleMessage("无结果"), + "dcb_viewer_search_regex": MessageLookupByLibrary.simpleMessage("使用正则表达式"), + "dcb_viewer_search_results": m7, + "dcb_viewer_searching": MessageLookupByLibrary.simpleMessage("正在搜索..."), + "dcb_viewer_select_another_file": MessageLookupByLibrary.simpleMessage( + "选择其他文件", + ), + "dcb_viewer_select_dcb_file": MessageLookupByLibrary.simpleMessage( + "选择 DCB 文件", + ), + "dcb_viewer_select_file_description": MessageLookupByLibrary.simpleMessage( + "请选择一个 .dcb 文件或从 P4K 中提取的 DCB 文件", + ), + "dcb_viewer_select_file_title": MessageLookupByLibrary.simpleMessage( + "选择 DCB 文件", + ), + "dcb_viewer_select_p4k_file": MessageLookupByLibrary.simpleMessage( + "选择 P4K 文件", + ), + "dcb_viewer_select_record": MessageLookupByLibrary.simpleMessage( + "选择一条记录以查看 XML 内容", + ), + "dcb_viewer_title": m8, + "dcb_viewer_title_standalone": MessageLookupByLibrary.simpleMessage( + "DataForge 查看器", + ), "doctor_action_analyzing": MessageLookupByLibrary.simpleMessage("正在分析..."), "doctor_action_game_run_log": MessageLookupByLibrary.simpleMessage( "游戏运行log", @@ -375,17 +447,17 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage( "正在检查:运行环境", ), - "doctor_action_info_game_abnormal_exit": m6, + "doctor_action_info_game_abnormal_exit": m9, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage("游戏异常退出:未知异常"), - "doctor_action_info_info_feedback": m7, - "doctor_action_result_analysis_issues_found": m8, + "doctor_action_info_info_feedback": m10, + "doctor_action_result_analysis_issues_found": m11, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage("分析完毕,没有发现问题"), - "doctor_action_result_create_folder_fail": m9, + "doctor_action_result_create_folder_fail": m12, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage("创建文件夹成功,请尝试继续下载游戏!"), - "doctor_action_result_fix_fail": m10, + "doctor_action_result_fix_fail": m13, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "修复成功,请尝试重启后继续安装游戏! 若注册表修改操作导致其他软件出现兼容问题,请使用 工具 中的 NVME 注册表清理。", ), @@ -393,7 +465,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "修复成功,请尝试启动游戏。(若问题无法解决,请使用工具箱的 《重装 EAC》)", ), - "doctor_action_result_info_unsupported_os": m11, + "doctor_action_result_info_unsupported_os": m14, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage("该问题暂不支持自动处理,请提供截图寻求帮助"), "doctor_action_result_redirect_warning": @@ -472,10 +544,10 @@ class MessageLookup extends MessageLookupByLibrary { "需要帮助? 点击加群寻求免费人工支援!", ), "doctor_info_processing": MessageLookupByLibrary.simpleMessage("正在处理..."), - "doctor_info_result_add_registry_value": m12, + "doctor_info_result_add_registry_value": m15, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage("中文安装路径!"), - "doctor_info_result_chinese_install_path_error": m13, + "doctor_info_result_chinese_install_path_error": m16, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage( "中文用户名!", ), @@ -483,10 +555,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "中文用户名可能会导致游戏启动/安装错误! 点击修复按钮查看修改教程!", ), - "doctor_info_result_create_live_folder": m14, + "doctor_info_result_create_live_folder": m17, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 未安装 或 未正常退出"), - "doctor_info_result_fix_suggestion": m15, + "doctor_info_result_fix_suggestion": m18, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "新型 NVME 设备,与 RSI 启动器暂不兼容,可能导致安装失败", @@ -497,7 +569,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("物理内存过低"), - "doctor_info_result_memory_requirement": m16, + "doctor_info_result_memory_requirement": m19, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 文件丢失"), "doctor_info_result_missing_live_folder": @@ -508,7 +580,7 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage( "不支持的操作系统,游戏可能无法运行", ), - "doctor_info_result_upgrade_system": m17, + "doctor_info_result_upgrade_system": m20, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "未在 LIVE 文件夹找到 EasyAntiCheat 文件 或 文件不完整,请使用 RSI 启动器校验文件", @@ -521,7 +593,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "doctor_tip_title_select_game_directory": MessageLookupByLibrary.simpleMessage("请在首页选择游戏安装目录。"), - "doctor_title_one_click_diagnosis": m18, + "doctor_title_one_click_diagnosis": m21, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage( "全部取消", ), @@ -555,9 +627,9 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_action_resume_all": MessageLookupByLibrary.simpleMessage( "恢复全部", ), - "downloader_info_checked": m19, + "downloader_info_checked": m22, "downloader_info_checking": MessageLookupByLibrary.simpleMessage("校验中"), - "downloader_info_checking_progress": m20, + "downloader_info_checking_progress": m23, "downloader_info_deleted": MessageLookupByLibrary.simpleMessage("已删除"), "downloader_info_download_completed": MessageLookupByLibrary.simpleMessage( "下载完成", @@ -567,9 +639,9 @@ class MessageLookup extends MessageLookupByLibrary { ), "downloader_info_download_unit_input_prompt": MessageLookupByLibrary.simpleMessage("请输入下载单位,如:1、100k、10m, 0或留空为不限速。"), - "downloader_info_download_upload_speed": m21, - "downloader_info_downloaded": m22, - "downloader_info_downloading": m23, + "downloader_info_download_upload_speed": m24, + "downloader_info_downloaded": m25, + "downloader_info_downloading": m26, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage( "下载中...", ), @@ -586,9 +658,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("限速设置已保存。是否立即重启下载管理器以应用新设置?"), "downloader_info_speed_limit_saved_restart_required": MessageLookupByLibrary.simpleMessage("限速设置已保存,将在下次启动下载器时生效。"), - "downloader_info_status": m24, - "downloader_info_total_size": m25, - "downloader_info_uploaded": m26, + "downloader_info_status": m27, + "downloader_info_total_size": m28, + "downloader_info_uploaded": m29, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("等待中"), "downloader_input_download_speed_limit": MessageLookupByLibrary.simpleMessage("下载限速:"), @@ -629,7 +701,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("DPS计算器汉化"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("外部浏览器拓展:"), - "home_action_info_abnormal_game_exit": m27, + "home_action_info_abnormal_game_exit": m30, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage( "请查看弹出的网页链接获得详细信息。", ), @@ -638,7 +710,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage( "游戏内置", ), - "home_action_info_initialization_failed": m28, + "home_action_info_initialization_failed": m31, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage("正在初始化汉化资源..."), "home_action_info_log_file_parse_fail": @@ -651,7 +723,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("快捷安装汉化资源"), "home_action_info_roberts_space_industries_origin": MessageLookupByLibrary.simpleMessage("罗伯茨航天工业公司,万物的起源"), - "home_action_info_scan_complete_valid_directories_found": m29, + "home_action_info_scan_complete_valid_directories_found": m32, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage( "正在扫描 ...", ), @@ -708,7 +780,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "home_announcement_details": MessageLookupByLibrary.simpleMessage("公告详情"), "home_holiday_countdown": MessageLookupByLibrary.simpleMessage("节日倒计时"), - "home_holiday_countdown_days": m30, + "home_holiday_countdown_days": m33, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* 以上节日日期由人工收录、维护,可能存在错误,欢迎反馈!", ), @@ -783,10 +855,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("读取 p4k 文件 ..."), "home_localization_advanced_msg_reading_server_localization_text": MessageLookupByLibrary.simpleMessage("获取汉化文本 ..."), - "home_localization_advanced_msg_version": m31, - "home_localization_advanced_title": m32, - "home_localization_advanced_title_msg": m33, - "home_localization_advanced_title_preview": m34, + "home_localization_advanced_msg_version": m34, + "home_localization_advanced_title": m35, + "home_localization_advanced_title_msg": m36, + "home_localization_advanced_title_preview": m37, "home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage( "该版本没有提供描述", ), @@ -794,7 +866,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage(" (高级汉化)"), "home_localization_new_version_available": MessageLookupByLibrary.simpleMessage("汉化有新版本!"), - "home_localization_new_version_installed": m35, + "home_localization_new_version_installed": m38, "home_localization_select_customize_file": MessageLookupByLibrary.simpleMessage("请选择自定义汉化文件"), "home_localization_select_customize_file_ini": @@ -812,7 +884,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "本功能可以帮您更加便利的启动游戏。\n\n为确保账户安全 ,本功能使用汉化浏览器保留登录状态,且不会保存您的密码信息(除非你启用了自动填充功能)。\n\n使用此功能登录账号时请确保您的 SC汉化盒子 是从可信任的来源下载。", ), - "home_login_info_rsi_server_report": m36, + "home_login_info_rsi_server_report": m39, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage( "正在为您启动游戏...", ), @@ -839,15 +911,15 @@ class MessageLookup extends MessageLookupByLibrary { ), "input_method_auto_translate_model_download_start": MessageLookupByLibrary.simpleMessage("下载已开始,请在模型下载完成后重新启用翻译功能。"), - "input_method_auto_translate_model_load_failed_content": m37, + "input_method_auto_translate_model_load_failed_content": m40, "input_method_auto_translate_model_load_failed_title": MessageLookupByLibrary.simpleMessage("翻译模型加载失败"), - "input_method_auto_translate_model_tips": m38, + "input_method_auto_translate_model_tips": m41, "input_method_auto_translate_model_tips_downloading_tips": MessageLookupByLibrary.simpleMessage("模型正在下载中,请稍后..."), "input_method_community_input_method_not_installed": MessageLookupByLibrary.simpleMessage("未安装社区输入法支持"), - "input_method_community_input_method_support_version": m39, + "input_method_community_input_method_support_version": m42, "input_method_confirm_enable_remote_input": MessageLookupByLibrary.simpleMessage("确认启用远程输入?"), "input_method_confirm_install_advanced_localization": @@ -898,7 +970,7 @@ class MessageLookup extends MessageLookupByLibrary { "input_method_support_updated": MessageLookupByLibrary.simpleMessage( "社区输入法支持已更新", ), - "input_method_support_updated_to_version": m40, + "input_method_support_updated_to_version": m43, "input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage( "文本不能为空!", ), @@ -917,7 +989,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("汉化反馈"), "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage("卸载汉化"), - "localization_info_channel": m41, + "localization_info_channel": m44, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("社区汉化"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage( @@ -926,14 +998,14 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_custom_files": MessageLookupByLibrary.simpleMessage( "自定义文件", ), - "localization_info_enabled": m42, + "localization_info_enabled": m45, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "USER.cfg 包含不兼容的汉化参数,这可能是以前的汉化文件的残留信息。\n\n这将可能导致汉化无效或乱码,点击确认为您一键移除(不会影响其他配置)。", ), - "localization_info_installation_error": m43, + "localization_info_installation_error": m46, "localization_info_installed": MessageLookupByLibrary.simpleMessage("已安装"), - "localization_info_installed_version": m44, + "localization_info_installed_version": m47, "localization_info_language": MessageLookupByLibrary.simpleMessage( "语言: ", ), @@ -952,14 +1024,14 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_unavailable": MessageLookupByLibrary.simpleMessage( "不可用", ), - "localization_info_update_time": m45, - "localization_info_version_number": m46, - "log_analyzer_collision_details": m47, - "log_analyzer_death_details": m48, + "localization_info_update_time": m48, + "localization_info_version_number": m49, + "log_analyzer_collision_details": m50, + "log_analyzer_death_details": m51, "log_analyzer_description": MessageLookupByLibrary.simpleMessage( "分析您的游玩记录 (登录、死亡、击杀 等信息)", ), - "log_analyzer_details_info": m49, + "log_analyzer_details_info": m52, "log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage("解体"), "log_analyzer_filter_account_related": MessageLookupByLibrary.simpleMessage( "账户相关", @@ -993,9 +1065,9 @@ class MessageLookup extends MessageLookupByLibrary { ), "log_analyzer_game_loading": MessageLookupByLibrary.simpleMessage("游戏加载"), "log_analyzer_game_start": MessageLookupByLibrary.simpleMessage("游戏启动"), - "log_analyzer_kill_death_suicide_count": m50, + "log_analyzer_kill_death_suicide_count": m53, "log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage("击杀总结"), - "log_analyzer_mode_loading_time": m51, + "log_analyzer_mode_loading_time": m54, "log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage( "未检测到游戏崩溃信息", ), @@ -1005,9 +1077,9 @@ class MessageLookup extends MessageLookupByLibrary { "log_analyzer_one_click_diagnosis_header": MessageLookupByLibrary.simpleMessage("----- 汉化盒子一键诊断 -----"), "log_analyzer_play_time": MessageLookupByLibrary.simpleMessage("游玩时长"), - "log_analyzer_play_time_format": m52, - "log_analyzer_player_location": m53, - "log_analyzer_player_login": m54, + "log_analyzer_play_time_format": m55, + "log_analyzer_player_location": m56, + "log_analyzer_player_login": m57, "log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage( "输入关键字搜索内容", ), @@ -1016,7 +1088,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "log_analyzer_soft_death": MessageLookupByLibrary.simpleMessage("软死亡"), "log_analyzer_title": MessageLookupByLibrary.simpleMessage("log 分析器"), - "log_analyzer_vehicle_damage_details": m55, + "log_analyzer_vehicle_damage_details": m58, "log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage( "查看本地库存", ), @@ -1051,7 +1123,7 @@ class MessageLookup extends MessageLookupByLibrary { "在简介的任意位置添加验证码即可,验证码30分钟内有效", ), "party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage("确认解散"), - "party_room_connect_error": m56, + "party_room_connect_error": m59, "party_room_connect_failed": MessageLookupByLibrary.simpleMessage("连接失败"), "party_room_connecting": MessageLookupByLibrary.simpleMessage("正在连接服务器..."), "party_room_continue": MessageLookupByLibrary.simpleMessage("继续"), @@ -1068,7 +1140,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "party_room_create_new_room": MessageLookupByLibrary.simpleMessage("创建新房间"), "party_room_create_room": MessageLookupByLibrary.simpleMessage("创建房间"), - "party_room_days_ago": m57, + "party_room_days_ago": m60, "party_room_disconnected": MessageLookupByLibrary.simpleMessage("连接已断开"), "party_room_dismiss": MessageLookupByLibrary.simpleMessage("解散"), "party_room_dismiss_confirm_msg": MessageLookupByLibrary.simpleMessage( @@ -1093,7 +1165,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "party_room_error": MessageLookupByLibrary.simpleMessage("错误"), "party_room_exit_room": MessageLookupByLibrary.simpleMessage("退出房间"), - "party_room_exit_room_failed": m58, + "party_room_exit_room_failed": m61, "party_room_game_id_empty": MessageLookupByLibrary.simpleMessage( "游戏ID不能为空", ), @@ -1103,12 +1175,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_game_not_started": MessageLookupByLibrary.simpleMessage( "<游戏未启动>", ), - "party_room_get_code_failed": m59, + "party_room_get_code_failed": m62, "party_room_go_login": MessageLookupByLibrary.simpleMessage("去登录"), "party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage( "您正在以游客身份浏览,登录后可创建或加入房间。", ), - "party_room_hours_ago": m60, + "party_room_hours_ago": m63, "party_room_info_updated": MessageLookupByLibrary.simpleMessage("房间信息已更新"), "party_room_join": MessageLookupByLibrary.simpleMessage("加入"), "party_room_join_failed": MessageLookupByLibrary.simpleMessage("加入失败"), @@ -1119,8 +1191,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_just_now": MessageLookupByLibrary.simpleMessage("刚刚"), "party_room_kick": MessageLookupByLibrary.simpleMessage("踢出"), "party_room_kick_member": MessageLookupByLibrary.simpleMessage("踢出成员"), - "party_room_kick_member_confirm": m61, - "party_room_kick_member_failed": m62, + "party_room_kick_member_confirm": m64, + "party_room_kick_member_failed": m65, "party_room_kicked": MessageLookupByLibrary.simpleMessage("被踢出房间"), "party_room_leave_confirm": MessageLookupByLibrary.simpleMessage( "确认离开房间吗?", @@ -1131,13 +1203,13 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_link_format_error": MessageLookupByLibrary.simpleMessage( "链接格式错误!", ), - "party_room_load_list_failed": m63, + "party_room_load_list_failed": m66, "party_room_loading": MessageLookupByLibrary.simpleMessage("加载中..."), "party_room_location": MessageLookupByLibrary.simpleMessage("位置"), "party_room_login": MessageLookupByLibrary.simpleMessage("登录"), "party_room_main_menu": MessageLookupByLibrary.simpleMessage("<主菜单>"), - "party_room_members_count": m64, - "party_room_minutes_ago": m65, + "party_room_members_count": m67, + "party_room_minutes_ago": m68, "party_room_need_login": MessageLookupByLibrary.simpleMessage("需要登录"), "party_room_new_owner": MessageLookupByLibrary.simpleMessage("新房主"), "party_room_next_step": MessageLookupByLibrary.simpleMessage("下一步"), @@ -1164,12 +1236,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_player_death": MessageLookupByLibrary.simpleMessage("玩家死亡"), "party_room_prev_step": MessageLookupByLibrary.simpleMessage("上一步"), "party_room_reconnect": MessageLookupByLibrary.simpleMessage("重新连接"), - "party_room_reconnect_failed": m66, + "party_room_reconnect_failed": m69, "party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage( "与房间服务器的连接已断开,是否重新连接?", ), - "party_room_reconnect_retry": m67, - "party_room_register_failed": m68, + "party_room_reconnect_retry": m70, + "party_room_register_failed": m71, "party_room_register_success": MessageLookupByLibrary.simpleMessage( "注册成功!", ), @@ -1237,8 +1309,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_title": MessageLookupByLibrary.simpleMessage("组队大厅"), "party_room_transfer": MessageLookupByLibrary.simpleMessage("转移"), "party_room_transfer_owner": MessageLookupByLibrary.simpleMessage("转移房主"), - "party_room_transfer_owner_confirm": m69, - "party_room_transfer_owner_failed": m70, + "party_room_transfer_owner_confirm": m72, + "party_room_transfer_owner_failed": m73, "party_room_unknown_area": MessageLookupByLibrary.simpleMessage("未知区域"), "party_room_unknown_location": MessageLookupByLibrary.simpleMessage("未知位置"), "party_room_unknown_user": MessageLookupByLibrary.simpleMessage("未知用户"), @@ -1274,7 +1346,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "performance_action_super": MessageLookupByLibrary.simpleMessage("超级"), "performance_info_applied": MessageLookupByLibrary.simpleMessage("已应用"), - "performance_info_current_status": m71, + "performance_info_current_status": m74, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage( "删除配置文件...", ), @@ -1288,7 +1360,7 @@ class MessageLookup extends MessageLookupByLibrary { "该功能对优化显卡瓶颈有很大帮助,但对 CPU 瓶颈可能起反效果,如果您显卡性能强劲,可以尝试使用更好的画质来获得更高的显卡利用率。", ), "performance_info_graphics": MessageLookupByLibrary.simpleMessage("图形"), - "performance_info_min_max_values": m72, + "performance_info_min_max_values": m75, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage("未应用"), "performance_info_shader_clearing_warning": MessageLookupByLibrary.simpleMessage( @@ -1447,7 +1519,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_json_text_water_info": MessageLookupByLibrary.simpleMessage( "各种水的等级", ), - "performance_title_performance_optimization": m73, + "performance_title_performance_optimization": m76, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage("清理汉化文件缓存"), "setting_action_create_desktop_shortcut": @@ -1460,7 +1532,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage("已清理自动填充数据"), - "setting_action_info_cache_clearing_info": m74, + "setting_action_info_cache_clearing_info": m77, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage("这不会影响已安装的汉化。"), "setting_action_info_confirm_clear_cache": @@ -1505,7 +1577,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage("重置自动密码填充"), - "setting_action_set_core_count": m75, + "setting_action_set_core_count": m78, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage( "设置游戏文件 (StarCitizen.exe)", ), @@ -1547,39 +1619,39 @@ class MessageLookup extends MessageLookupByLibrary { "splash_analytics_done": MessageLookupByLibrary.simpleMessage( "✓ AnalyticsApi.touch(\"launch\") 完成", ), - "splash_analytics_error": m76, + "splash_analytics_error": m79, "splash_analytics_timeout": MessageLookupByLibrary.simpleMessage( "⚠ AnalyticsApi.touch() 超时 (10秒) - 继续执行", ), "splash_app_init_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.initApp() 完成", ), - "splash_app_init_error": m77, + "splash_app_init_error": m80, "splash_app_init_timeout": MessageLookupByLibrary.simpleMessage( "✗ appModel.initApp() 超时 (10秒)", ), "splash_aria2c_done": MessageLookupByLibrary.simpleMessage( "✓ aria2cModelProvider 初始化完成", ), - "splash_aria2c_error": m78, + "splash_aria2c_error": m81, "splash_check_host_done": MessageLookupByLibrary.simpleMessage( "✓ URLConf.checkHost() 完成", ), - "splash_check_host_error": m79, + "splash_check_host_error": m82, "splash_check_host_timeout": MessageLookupByLibrary.simpleMessage( "⚠ URLConf.checkHost() 超时 (10秒) - 继续执行", ), "splash_check_update_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.checkUpdate() 完成", ), - "splash_check_update_error": m80, + "splash_check_update_error": m83, "splash_check_update_timeout": MessageLookupByLibrary.simpleMessage( "⚠ appModel.checkUpdate() 超时 (10秒) - 继续执行", ), "splash_check_version": MessageLookupByLibrary.simpleMessage( "检查 splash_alert_info_version...", ), - "splash_close_hive_failed": m81, + "splash_close_hive_failed": m84, "splash_context_unmounted": MessageLookupByLibrary.simpleMessage( "✗ Context 已卸载", ), @@ -1593,16 +1665,16 @@ class MessageLookup extends MessageLookupByLibrary { "✗ Context 已卸载,无法导航", ), "splash_db_deleted": MessageLookupByLibrary.simpleMessage("[诊断] 数据库目录已删除"), - "splash_db_not_exist": m82, + "splash_db_not_exist": m85, "splash_db_reset_done": MessageLookupByLibrary.simpleMessage( "[诊断] 数据库重置完成,准备退出应用", ), "splash_db_reset_msg": MessageLookupByLibrary.simpleMessage( "数据库已重置,应用将退出。请重新启动应用。", ), - "splash_deleting_db": m83, - "splash_diagnostic_log": m84, - "splash_diagnostic_mode": m85, + "splash_deleting_db": m86, + "splash_diagnostic_log": m87, + "splash_diagnostic_mode": m88, "splash_error": MessageLookupByLibrary.simpleMessage("错误"), "splash_exec_analytics": MessageLookupByLibrary.simpleMessage( "执行 AnalyticsApi.touch(\"launch\")...", @@ -1622,7 +1694,7 @@ class MessageLookup extends MessageLookupByLibrary { "splash_hive_done": MessageLookupByLibrary.simpleMessage( "✓ Hive.openBox(\"app_conf\") 完成", ), - "splash_hive_error": m86, + "splash_hive_error": m89, "splash_hive_timeout": MessageLookupByLibrary.simpleMessage( "✗ Hive.openBox(\"app_conf\") 超时 (10秒)", ), @@ -1632,20 +1704,20 @@ class MessageLookup extends MessageLookupByLibrary { "splash_init_task_status": MessageLookupByLibrary.simpleMessage( "初始化任务执行情况:", ), - "splash_log_not_exist": m87, - "splash_log_read_done": m88, + "splash_log_not_exist": m90, + "splash_log_read_done": m91, "splash_open_hive_box": MessageLookupByLibrary.simpleMessage( "打开 Hive app_conf box...", ), "splash_read_full_log": MessageLookupByLibrary.simpleMessage("读取完整日志"), - "splash_read_log_failed": m89, + "splash_read_log_failed": m92, "splash_reset_database": MessageLookupByLibrary.simpleMessage("重置数据库"), - "splash_reset_db_failed": m90, + "splash_reset_db_failed": m93, "splash_show_agreement": MessageLookupByLibrary.simpleMessage( "需要显示用户协议对话框...", ), - "splash_start_init": m91, - "splash_start_read_log": m92, + "splash_start_init": m94, + "splash_start_read_log": m95, "splash_step0_done": MessageLookupByLibrary.simpleMessage( "--- Step 0 完成,进入 Step 1 ---", ), @@ -1705,18 +1777,24 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_close_photography_mode": MessageLookupByLibrary.simpleMessage( "关闭摄影模式", ), + "tools_action_dcb_viewer": MessageLookupByLibrary.simpleMessage( + "DCB/DataForge 查看器", + ), + "tools_action_dcb_viewer_info": MessageLookupByLibrary.simpleMessage( + "查看和导出 DataForge 游戏数据库 (.dcb) 文件内容", + ), "tools_action_hosts_acceleration_experimental": MessageLookupByLibrary.simpleMessage("Hosts 加速(实验性)"), "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage( "清理完毕,请完成一次安装 / 游戏启动 操作。", ), - "tools_action_info_cleanup_failed": m93, + "tools_action_info_cleanup_failed": m96, "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": m94, + "tools_action_info_error_occurred": m97, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "修复成功,请尝试重启电脑后继续安装游戏! 若注册表修改操作导致其他软件出现兼容问题,请使用 工具 中的 NVME 注册表清理。", @@ -1727,7 +1805,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "将 IP 信息写入 Hosts 文件,解决部分地区的 DNS 污染导致无法登录官网等问题。\n该功能正在进行第一阶段测试,遇到问题请及时反馈。", ), - "tools_action_info_init_failed": m95, + "tools_action_info_init_failed": m98, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "日志文件不存在,请尝试进行一次游戏启动或游戏安装,并退出启动器,若无法解决问题,请尝试将启动器更新至最新版本!", @@ -1742,14 +1820,14 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage( "未安装", ), - "tools_action_info_nvme_patch_issue": m96, + "tools_action_info_nvme_patch_issue": m99, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "一键关闭游戏内镜头晃动以便于摄影操作。\n\n @拉邦那 Lapernum 提供参数信息。", ), "tools_action_info_p4k_download_in_progress": MessageLookupByLibrary.simpleMessage("已经有一个p4k下载任务正在进行中,请前往下载管理器查看!"), - "tools_action_info_p4k_download_repair_tip": m97, + "tools_action_info_p4k_download_repair_tip": m100, "tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage( "P4k 是星际公民的核心游戏文件,高达 100GB+,盒子提供的离线下载是为了帮助一些p4k文件下载超级慢的用户 或用于修复官方启动器无法修复的 p4k 文件。\n\n接下来会弹窗询问您保存位置(可以选择星际公民文件夹也可以选择别处),下载完成后请确保 P4K 文件夹位于 LIVE 文件夹内,之后使用星际公民启动器校验更新即可。", ), @@ -1764,7 +1842,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "tools_action_info_rsi_launcher_directory_not_found": MessageLookupByLibrary.simpleMessage("未找到 RSI 启动器目录,请您尝试手动操作。"), - "tools_action_info_rsi_launcher_log_issue": m98, + "tools_action_info_rsi_launcher_log_issue": m101, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage("未找到 RSI 启动器,请尝试重新安装,或在设置中手动添加。"), "tools_action_info_rsi_launcher_running_warning": @@ -1772,12 +1850,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "以管理员身份运行RSI启动器,可能会解决一些问题。\n\n若设置了能效核心屏蔽参数,也会在此应用。", ), - "tools_action_info_shader_cache_issue": m99, + "tools_action_info_shader_cache_issue": m102, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "未找到星际公民游戏安装位置,请至少完成一次游戏启动操作 或在设置中手动添加。", ), - "tools_action_info_system_info_content": m100, + "tools_action_info_system_info_content": m103, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage( "系统信息", ), @@ -1804,7 +1882,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "tools_action_switch_graphics_renderer": MessageLookupByLibrary.simpleMessage("切换 DirectX/Vulkan 渲染器"), - "tools_action_switch_graphics_renderer_info": m101, + "tools_action_switch_graphics_renderer_info": m104, "tools_action_unp4k": MessageLookupByLibrary.simpleMessage("P4K 查看器"), "tools_action_unp4k_info": MessageLookupByLibrary.simpleMessage( "解包星际公民 p4k 文件", @@ -1823,7 +1901,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_graphics_renderer_dialog_save": MessageLookupByLibrary.simpleMessage( "保存", ), - "tools_graphics_renderer_dialog_save_failed": m102, + "tools_graphics_renderer_dialog_save_failed": m105, "tools_graphics_renderer_dialog_save_success": MessageLookupByLibrary.simpleMessage("渲染器设置已保存"), "tools_graphics_renderer_dialog_title": @@ -1868,7 +1946,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage( "游戏安装位置: ", ), - "tools_info_processing_failed": m103, + "tools_info_processing_failed": m106, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage( "RSI启动器位置:", ), @@ -1888,13 +1966,13 @@ class MessageLookup extends MessageLookupByLibrary { "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error": MessageLookupByLibrary.simpleMessage("读取启动器信息失败!"), "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args": - m104, + m107, "tools_rsi_launcher_enhance_msg_error_launcher_notfound": MessageLookupByLibrary.simpleMessage("未找到 RSI 启动器"), - "tools_rsi_launcher_enhance_msg_patch_status": m105, + "tools_rsi_launcher_enhance_msg_patch_status": m108, "tools_rsi_launcher_enhance_msg_uninstall": MessageLookupByLibrary.simpleMessage("* 如需卸载增强补丁,请覆盖安装 RSI 启动器。"), - "tools_rsi_launcher_enhance_msg_version": m106, + "tools_rsi_launcher_enhance_msg_version": m109, "tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage( "RSI 启动器增强是一项社区功能,它会在您的电脑上解包 \"RSI Launcher\" 并加入额外的增强功能,具体使用哪些功能由您决定。\n\n目前,官方(CIG)仅许可我们进行多语言操作,启动器下载增强是我们认为有用的额外功能,违反cig用户协议(https://robertsspaceindustries.com/eula)可能导致账号被封禁等严重后果,是否启用由您自己决定,我们不对可能产生的后果(游戏损坏,账号封禁等)承担任何责任。\n\n对于启动器的修改内容,我们开源于:https://github.com/StarCitizenToolBox/RSILauncherEnhance,如有需要,您可自行查阅。\n\n如果您因为任何原因需要取消此增强补丁,请直接覆盖安装官方启动器。", ), @@ -1922,10 +2000,10 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_action_deselect_all": MessageLookupByLibrary.simpleMessage( "取消全选", ), - "tools_unp4k_action_export_selected": m107, - "tools_unp4k_action_extract_failed": m108, - "tools_unp4k_action_extract_success": m109, - "tools_unp4k_action_extracting": m110, + "tools_unp4k_action_export_selected": m110, + "tools_unp4k_action_extract_failed": m111, + "tools_unp4k_action_extract_success": m112, + "tools_unp4k_action_extracting": m113, "tools_unp4k_action_multi_select": MessageLookupByLibrary.simpleMessage( "多选", ), @@ -1936,12 +2014,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_extract_cancelled": MessageLookupByLibrary.simpleMessage( "提取已取消", ), - "tools_unp4k_extract_completed": m111, - "tools_unp4k_extract_current_file": m112, + "tools_unp4k_extract_completed": m114, + "tools_unp4k_extract_current_file": m115, "tools_unp4k_extract_dialog_title": MessageLookupByLibrary.simpleMessage( "提取文件", ), - "tools_unp4k_extract_progress": m113, + "tools_unp4k_extract_progress": m116, "tools_unp4k_missing_runtime": MessageLookupByLibrary.simpleMessage( "缺少运行库", ), @@ -1951,17 +2029,17 @@ class MessageLookup extends MessageLookupByLibrary { "使用此功能需安装 .NET8 运行库,请点击下方按钮下载安装,安装成功后重新打开此页面即可继续使用。", ), "tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage("初始化中..."), - "tools_unp4k_msg_open_file": m114, - "tools_unp4k_msg_read_completed": m115, - "tools_unp4k_msg_read_file": m116, + "tools_unp4k_msg_open_file": m117, + "tools_unp4k_msg_read_completed": m118, + "tools_unp4k_msg_read_file": m119, "tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage( "正在读取P4K 文件 ...", ), "tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage( "正在处理文件 ...", ), - "tools_unp4k_msg_reading3": m117, - "tools_unp4k_msg_unknown_file_type": m118, + "tools_unp4k_msg_reading3": m120, + "tools_unp4k_msg_unknown_file_type": m121, "tools_unp4k_search_no_result": MessageLookupByLibrary.simpleMessage( "未找到匹配文件", ), @@ -1974,7 +2052,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_unp4k_sort_default": MessageLookupByLibrary.simpleMessage("默认排序"), "tools_unp4k_sort_size_asc": MessageLookupByLibrary.simpleMessage("小文件优先"), "tools_unp4k_sort_size_desc": MessageLookupByLibrary.simpleMessage("大文件优先"), - "tools_unp4k_title": m119, + "tools_unp4k_title": m122, "tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage("单击文件以预览"), "tools_vehicle_sorting_info": MessageLookupByLibrary.simpleMessage( "将左侧载具拖动到右侧列表中,这将会为载具名称增加 001、002 .. 等前缀,方便您在游戏内 UI 快速定位载具。在右侧列表上下拖动可以调整载具的顺序。", diff --git a/lib/generated/intl/messages_zh_TW.dart b/lib/generated/intl/messages_zh_TW.dart index 7b35b41..1b1ada9 100644 --- a/lib/generated/intl/messages_zh_TW.dart +++ b/lib/generated/intl/messages_zh_TW.dart @@ -33,222 +33,222 @@ class MessageLookup extends MessageLookupByLibrary { static String m5(v0) => "發現新版本 -> ${v0}"; - static String m6(v0) => "遊戲錯誤退出:${v0}"; + static String m9(v0) => "遊戲錯誤退出:${v0}"; - static String m7(v0) => "info:${v0},請點擊右下角加群回饋。"; + static String m10(v0) => "info:${v0},請點擊右下角加群回饋。"; - static String m8(v0) => "分析完畢,發現 ${v0} 個問題"; + static String m11(v0) => "分析完畢,發現 ${v0} 個問題"; - static String m9(v0, v1) => "建立資料夾失敗,請嘗試手動建立。\n目錄:${v0} \n錯誤:${v1}"; + static String m12(v0, v1) => "建立資料夾失敗,請嘗試手動建立。\n目錄:${v0} \n錯誤:${v1}"; - static String m10(v0) => "修復失敗,${v0}"; + static String m13(v0) => "修復失敗,${v0}"; - static String m11(v0) => "不支援的作業系統:${v0}"; + static String m14(v0) => "不支援的作業系統:${v0}"; - static String m12(v0) => + static String m15(v0) => "為登錄鍵值添加 ForcedPhysicalSectorSizeInBytes 值 模擬舊裝置。硬碟分區(${v0})"; - static String m13(v0) => "中文安裝路徑!這可能會導致遊戲 啟動/安裝 錯誤!(${v0}),請在RSI啟動器更換安裝路徑。"; + static String m16(v0) => "中文安裝路徑!這可能會導致遊戲 啟動/安裝 錯誤!(${v0}),請在RSI啟動器更換安裝路徑。"; - static String m14(v0) => "點擊修復為您新增 LIVE 資料夾,完成後重試安裝。(${v0})"; + static String m17(v0) => "點擊修復為您新增 LIVE 資料夾,完成後重試安裝。(${v0})"; - static String m15(v0) => "修復建議: ${v0}"; + static String m18(v0) => "修復建議: ${v0}"; - static String m16(v0) => "您至少需要 16GB 的物理記憶體(Memory)才可執行此遊戲。(目前大小:${v0})"; + static String m19(v0) => "您至少需要 16GB 的物理記憶體(Memory)才可執行此遊戲。(目前大小:${v0})"; - static String m17(v0) => "請更新您的系統 (${v0})"; + static String m20(v0) => "請更新您的系統 (${v0})"; - static String m18(v0) => "疑難排解 -> ${v0}"; + static String m21(v0) => "疑難排解 -> ${v0}"; - static String m19(v0) => "已校驗:${v0}"; + static String m22(v0) => "已校驗:${v0}"; - static String m20(v0) => "校驗中... (${v0}%)"; + static String m23(v0) => "校驗中... (${v0}%)"; - static String m21(v0, v1) => "下載: ${v0}/s 上傳:${v1}/s"; + static String m24(v0, v1) => "下載: ${v0}/s 上傳:${v1}/s"; - static String m22(v0) => "已下載:${v0}"; + static String m25(v0) => "已下載:${v0}"; - static String m23(v0) => "下載中... (${v0}%)"; + static String m26(v0) => "下載中... (${v0}%)"; - static String m24(v0) => "狀態:${v0}"; + static String m27(v0) => "狀態:${v0}"; - static String m25(v1) => "總大小:${v1}"; + static String m28(v1) => "總大小:${v1}"; - static String m26(v0) => "已上傳:${v0}"; + static String m29(v0) => "已上傳:${v0}"; - static String m27(v0, v1, v2, v3, v4) => + static String m30(v0, v1, v2, v3, v4) => "遊戲非正常退出\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\n診斷資訊:${v3} \n${v4}"; - static String m28(v0) => "初始化網頁翻譯文件失敗!${v0}"; + static String m31(v0) => "初始化網頁翻譯文件失敗!${v0}"; - 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) => "進階翻譯 -> ${v0}"; + static String m35(v0) => "進階翻譯 -> ${v0}"; - static String m33(v0, v1) => "翻譯文字行數:${v0} P4K文字行數:${v1}"; + static String m36(v0, v1) => "翻譯文字行數:${v0} P4K文字行數:${v1}"; - static String m34(v0) => "預覽:${v0}"; + static String m37(v0) => "預覽:${v0}"; - static String m35(v0) => "您在 ${v0} 安裝的社群翻譯有新的版本"; + static String m38(v0) => "您在 ${v0} 安裝的社群翻譯有新的版本"; - static String m36(v1, v2) => + static String m39(v1, v2) => "RSI 伺服器報告版本號:${v1} \n\n本機版本號:${v2} \n\n建議使用 RSI Launcher 更新遊戲!"; - static String m39(v0) => "社區輸入法支持:${v0}"; + static String m42(v0) => "社區輸入法支持:${v0}"; - static String m40(v0) => "社區輸入法支持已更新到:${v0}"; + static String m43(v0) => "社區輸入法支持已更新到:${v0}"; - static String m41(v0) => "遊戲通道:${v0}"; + static String m44(v0) => "遊戲通道:${v0}"; - static String m42(v0) => "啟用(${v0}):"; + static String m45(v0) => "啟用(${v0}):"; - static String m43(v0) => "安裝錯誤!\n\n ${v0}"; + static String m46(v0) => "安裝錯誤!\n\n ${v0}"; - static String m44(v0) => "已安裝:${v0}"; + static String m47(v0) => "已安裝:${v0}"; - static String m45(v0) => "更新時間:${v0}"; + static String m48(v0) => "更新時間:${v0}"; - static String m46(v0) => "版本:${v0}"; - - static String m47(v0, v1, v2, v3, v4) => - "區域:${v0} 玩家駕駛:${v1} 碰撞實體:${v2} \n碰撞載具: ${v3} 碰撞距離:${v4} "; - - static String m48(v0, v2, v3) => "受害者ID:${v0} \n位置:${v2} \n區域:${v3}"; - - static String m49(v0) => "詳細資訊:${v0}"; + static String m49(v0) => "版本:${v0}"; static String m50(v0, v1, v2, v3, v4) => + "區域:${v0} 玩家駕駛:${v1} 碰撞實體:${v2} \n碰撞載具: ${v3} 碰撞距離:${v4} "; + + static String m51(v0, v2, v3) => "受害者ID:${v0} \n位置:${v2} \n區域:${v3}"; + + static String m52(v0) => "詳細資訊:${v0}"; + + static String m53(v0, v1, v2, v3, v4) => "擊殺次數:${v0} 死亡次數:${v1} 自殺次數:${v2} \n載具損壞(軟死亡):${v3} 載具損壞(解體):${v4}"; - static String m51(v0, v1) => "模式:${v0} 用時:${v1} 秒"; + static String m54(v0, v1) => "模式:${v0} 用時:${v1} 秒"; - static String m52(v0, v1, v2) => "${v0} 小時 ${v1} 分鐘 ${v2} 秒"; + static String m55(v0, v1, v2) => "${v0} 小時 ${v1} 分鐘 ${v2} 秒"; - static String m53(v0, v1) => "玩家ID:${v0} 位置:${v1}"; + static String m56(v0, v1) => "玩家ID:${v0} 位置:${v1}"; - static String m54(v0) => "玩家 ${v0} 登入 ..."; + static String m57(v0) => "玩家 ${v0} 登入 ..."; - static String m55(v0, v1, v2, v3, v4) => + static String m58(v0, v1, v2, v3, v4) => "載具型號:${v0} \n區域:${v1} \n損毀等級:${v2} (${v3}) 責任方:${v4}"; - static String m56(v0) => "連接失敗: ${v0}"; + static String m59(v0) => "連接失敗: ${v0}"; - static String m57(v0) => "${v0} 天前"; + static String m60(v0) => "${v0} 天前"; - static String m58(v0) => "退出房間失敗: ${v0}"; + static String m61(v0) => "退出房間失敗: ${v0}"; - static String m59(v0) => "獲取驗證碼失敗: ${v0}"; + static String m62(v0) => "獲取驗證碼失敗: ${v0}"; - static String m60(v0) => "${v0} 小時前"; + static String m63(v0) => "${v0} 小時前"; - static String m61(v0) => "確定要踢出 ${v0} 嗎?"; + static String m64(v0) => "確定要踢出 ${v0} 嗎?"; - static String m62(v0) => "踢出成員失敗:${v0}"; + static String m65(v0) => "踢出成員失敗:${v0}"; - static String m63(v0) => "載入房間列表失敗: ${v0}"; + static String m66(v0) => "載入房間列表失敗: ${v0}"; - static String m64(v0, v1) => "${v0}/${v1} 成員"; + static String m67(v0, v1) => "${v0}/${v1} 成員"; - static String m65(v0) => "${v0} 分鐘前"; + static String m68(v0) => "${v0} 分鐘前"; - static String m66(v0) => "重連失敗: ${v0}"; + static String m69(v0) => "重連失敗: ${v0}"; - static String m67(v0) => "重連失敗,已嘗試 ${v0} 次"; + static String m70(v0) => "重連失敗,已嘗試 ${v0} 次"; - static String m68(v0) => "註冊失敗: ${v0}"; + static String m71(v0) => "註冊失敗: ${v0}"; - static String m69(v0) => "確定要將房主轉移給 ${v0} 嗎?"; + static String m72(v0) => "確定要將房主轉移給 ${v0} 嗎?"; - static String m70(v0) => "轉移房主失敗:${v0}"; + static String m73(v0) => "轉移房主失敗:${v0}"; - static String m71(v0) => "目前狀態:${v0}"; + static String m74(v0) => "目前狀態:${v0}"; - static String m72(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; + static String m75(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}"; - static String m73(v0) => "畫面調整 -> ${v0}"; + static String m76(v0) => "畫面調整 -> ${v0}"; - static String m74(v0) => "快取大小 ${v0}MB,清理工具箱下載的翻譯文件快取,不會影響已安裝的社群翻譯"; + static String m77(v0) => "快取大小 ${v0}MB,清理工具箱下載的翻譯文件快取,不會影響已安裝的社群翻譯"; - static String m75(v0) => + static String m78(v0) => "已設定的核心數量:${v0} (此功能適用於首頁的工具箱快速啟動 或 工具中的RSI啟動器管理員模式,當為 0 時不啟用此功能 )"; - static String m76(v0) => "⚠ AnalyticsApi.touch(\"launch\") 錯誤: ${v0} - 繼續執行"; + static String m79(v0) => "⚠ AnalyticsApi.touch(\"launch\") 錯誤: ${v0} - 繼續執行"; - static String m77(v0) => "✗ appModel.initApp() 錯誤: ${v0}"; + static String m80(v0) => "✗ appModel.initApp() 錯誤: ${v0}"; - static String m78(v0) => "⚠ aria2cModelProvider 初始化錯誤: ${v0}"; + static String m81(v0) => "⚠ aria2cModelProvider 初始化錯誤: ${v0}"; - static String m79(v0) => "⚠ URLConf.checkHost() 錯誤: ${v0} - 繼續執行"; + static String m82(v0) => "⚠ URLConf.checkHost() 錯誤: ${v0} - 繼續執行"; - static String m80(v0) => "⚠ appModel.checkUpdate() 錯誤: ${v0} - 繼續執行"; + static String m83(v0) => "⚠ appModel.checkUpdate() 錯誤: ${v0} - 繼續執行"; - static String m81(v0) => "[診斷] 關閉 Hive boxes 失敗: ${v0}"; + static String m84(v0) => "[診斷] 關閉 Hive boxes 失敗: ${v0}"; - static String m82(v0) => "[診斷] 資料庫目錄不存在: ${v0}"; + static String m85(v0) => "[診斷] 資料庫目錄不存在: ${v0}"; - static String m83(v0) => "[診斷] 正在刪除資料庫目錄: ${v0}"; + static String m86(v0) => "[診斷] 正在刪除資料庫目錄: ${v0}"; - static String m84(v0) => "[診斷] ${v0}"; + static String m87(v0) => "[診斷] ${v0}"; - static String m85(v0) => "診斷模式 - Step ${v0}"; + static String m88(v0) => "診斷模式 - Step ${v0}"; - static String m86(v0) => "✗ Hive.openBox(\"app_conf\") 錯誤: ${v0}"; + static String m89(v0) => "✗ Hive.openBox(\"app_conf\") 錯誤: ${v0}"; - static String m87(v0) => "[${v0}] ⚠ 日誌檔案不存在"; + static String m90(v0) => "[${v0}] ⚠ 日誌檔案不存在"; - static String m88(v0) => "[${v0}] --- 日誌讀取完成 (顯示最後1000行) ---"; + static String m91(v0) => "[${v0}] --- 日誌讀取完成 (顯示最後1000行) ---"; - static String m89(v0, v1) => "[${v0}] ✗ 讀取日誌失敗: ${v1}"; + static String m92(v0, v1) => "[${v0}] ✗ 讀取日誌失敗: ${v1}"; - static String m90(v0) => "[診斷] 重置資料庫失敗: ${v0}"; + static String m93(v0) => "[診斷] 重置資料庫失敗: ${v0}"; - static String m91(v0) => "[${v0}] 開始初始化..."; + static String m94(v0) => "[${v0}] 開始初始化..."; - static String m92(v0) => "[${v0}] --- 開始讀取完整日誌檔案 ---"; + static String m95(v0) => "[${v0}] --- 開始讀取完整日誌檔案 ---"; - static String m93(v0) => "清理失敗,請手動移除,檔案位置:${v0}"; + static String m96(v0) => "清理失敗,請手動移除,檔案位置:${v0}"; - static String m94(v0) => "出現錯誤:${v0}"; + static String m97(v0) => "出現錯誤:${v0}"; - static String m95(v0) => "初始化失敗,請截圖報告給開發者。${v0}"; - - static String m96(v0) => - "若您使用 nvme 補丁出現問題,請執行此工具。(可能導致遊戲 安裝/更新 無法使用。)\n\n目前補丁狀態:${v0}"; - - static String m97(v0) => "使用星際公民中文百科提供的分流下載服務,可用於下載或修復 p4k。 \n版本資訊:${v0}"; - - static String m98(v0) => - "在某些情況下 RSI啟動器 的 log 文件會損壞,導致無法完成問題掃描,使用此工具清理損壞的 log 文件。\n\n目前日誌檔案大小:${v0} MB"; + static String m98(v0) => "初始化失敗,請截圖報告給開發者。${v0}"; static String m99(v0) => + "若您使用 nvme 補丁出現問題,請執行此工具。(可能導致遊戲 安裝/更新 無法使用。)\n\n目前補丁狀態:${v0}"; + + static String m100(v0) => "使用星際公民中文百科提供的分流下載服務,可用於下載或修復 p4k。 \n版本資訊:${v0}"; + + static String m101(v0) => + "在某些情況下 RSI啟動器 的 log 文件會損壞,導致無法完成問題掃描,使用此工具清理損壞的 log 文件。\n\n目前日誌檔案大小:${v0} MB"; + + static String m102(v0) => "若遊戲畫面出現異常或版本更新後可使用此工具清除著色器快取 \n\n(同時會將 Vulkan 還原為 DX11)\n快取大小:${v0} MB"; - static String m100(v0, v1, v2, v3, v4) => + static String m103(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 m103(v0) => "處理失敗!:${v0}"; + static String m106(v0) => "處理失敗!:${v0}"; - static String m104(v0) => "讀取啟動器資訊失敗:${v0}"; + static String m107(v0) => "讀取啟動器資訊失敗:${v0}"; - static String m105(v0) => "補丁狀態:${v0}"; + static String m108(v0) => "補丁狀態:${v0}"; - static String m106(v0) => "啟動器內部版本資訊:${v0}"; + static String m109(v0) => "啟動器內部版本資訊:${v0}"; - static String m114(v0) => "打開文件:${v0}"; + static String m117(v0) => "打開文件:${v0}"; - static String m115(v0, v1) => "載入完畢:${v0} 個文件,用時:${v1} ms"; + static String m118(v0, v1) => "載入完畢:${v0} 個文件,用時:${v1} ms"; - static String m116(v0) => "讀取文件:${v0} ..."; + static String m119(v0) => "讀取文件:${v0} ..."; - static String m117(v0, v1) => "正在處理文件 (${v0}/${v1}) ..."; + static String m120(v0, v1) => "正在處理文件 (${v0}/${v1}) ..."; - static String m118(v0) => "未知文件類型\n${v0}"; + static String m121(v0) => "未知文件類型\n${v0}"; - static String m119(v0) => "P4K 查看器 -> ${v0}"; + static String m122(v0) => "P4K 查看器 -> ${v0}"; final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { @@ -355,17 +355,17 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage( "正在檢查:執行環境", ), - "doctor_action_info_game_abnormal_exit": m6, + "doctor_action_info_game_abnormal_exit": m9, "doctor_action_info_game_abnormal_exit_unknown": MessageLookupByLibrary.simpleMessage("遊戲錯誤退出:未知錯誤"), - "doctor_action_info_info_feedback": m7, - "doctor_action_result_analysis_issues_found": m8, + "doctor_action_info_info_feedback": m10, + "doctor_action_result_analysis_issues_found": m11, "doctor_action_result_analysis_no_issue": MessageLookupByLibrary.simpleMessage("分析完畢,沒有發現問題"), - "doctor_action_result_create_folder_fail": m9, + "doctor_action_result_create_folder_fail": m12, "doctor_action_result_create_folder_success": MessageLookupByLibrary.simpleMessage("建立資料夾成功,請嘗試繼續下載遊戲!"), - "doctor_action_result_fix_fail": m10, + "doctor_action_result_fix_fail": m13, "doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage( "修復成功,請嘗試重啟後繼續安裝遊戲! 若登錄檔修改操作導致其他軟體出現相容問題,請使用 工具 中的 NVME 登錄檔清理。", ), @@ -373,7 +373,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "修復成功,請嘗試啟動遊戲。(若問題無法解決,請使用工具箱的 《重裝 EAC》)", ), - "doctor_action_result_info_unsupported_os": m11, + "doctor_action_result_info_unsupported_os": m14, "doctor_action_result_issue_not_supported": MessageLookupByLibrary.simpleMessage("該問題暫不支援自動處理,請提供截圖尋求幫助"), "doctor_action_result_redirect_warning": @@ -456,10 +456,10 @@ class MessageLookup extends MessageLookupByLibrary { "需要幫助? 點擊加群尋求免費人工支援!", ), "doctor_info_processing": MessageLookupByLibrary.simpleMessage("正在處理..."), - "doctor_info_result_add_registry_value": m12, + "doctor_info_result_add_registry_value": m15, "doctor_info_result_chinese_install_path": MessageLookupByLibrary.simpleMessage("中文安裝路徑!"), - "doctor_info_result_chinese_install_path_error": m13, + "doctor_info_result_chinese_install_path_error": m16, "doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage( "中文使用者名稱!", ), @@ -467,10 +467,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "中文使用者名稱可能會導致遊戲啟動/安裝錯誤! 點擊修復按鈕查看修改教學!", ), - "doctor_info_result_create_live_folder": m14, + "doctor_info_result_create_live_folder": m17, "doctor_info_result_easyanticheat_not_installed": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 未安裝 或 未正常退出"), - "doctor_info_result_fix_suggestion": m15, + "doctor_info_result_fix_suggestion": m18, "doctor_info_result_incompatible_nvme_device": MessageLookupByLibrary.simpleMessage( "新型 NVME 裝置,與 RSI 啟動器暫不相容,可能導致安裝失敗", @@ -481,7 +481,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "doctor_info_result_low_physical_memory": MessageLookupByLibrary.simpleMessage("物理記憶體過低"), - "doctor_info_result_memory_requirement": m16, + "doctor_info_result_memory_requirement": m19, "doctor_info_result_missing_easyanticheat_files": MessageLookupByLibrary.simpleMessage("EasyAntiCheat 檔案遺失"), "doctor_info_result_missing_live_folder": @@ -492,7 +492,7 @@ class MessageLookup extends MessageLookupByLibrary { "doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage( "不支援的作業系統,遊戲可能無法執行", ), - "doctor_info_result_upgrade_system": m17, + "doctor_info_result_upgrade_system": m20, "doctor_info_result_verify_files_with_rsi_launcher": MessageLookupByLibrary.simpleMessage( "未在 LIVE 資料夾找到 EasyAntiCheat 文件 或 文件不完整,請使用 RSI 啟動器校驗文件", @@ -505,7 +505,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "doctor_tip_title_select_game_directory": MessageLookupByLibrary.simpleMessage("請在首頁選擇遊戲安裝目錄。"), - "doctor_title_one_click_diagnosis": m18, + "doctor_title_one_click_diagnosis": m21, "downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage( "全部取消", ), @@ -539,9 +539,9 @@ class MessageLookup extends MessageLookupByLibrary { "downloader_action_resume_all": MessageLookupByLibrary.simpleMessage( "全部繼續", ), - "downloader_info_checked": m19, + "downloader_info_checked": m22, "downloader_info_checking": MessageLookupByLibrary.simpleMessage("校驗中"), - "downloader_info_checking_progress": m20, + "downloader_info_checking_progress": m23, "downloader_info_deleted": MessageLookupByLibrary.simpleMessage("已刪除"), "downloader_info_download_completed": MessageLookupByLibrary.simpleMessage( "下載完成", @@ -551,9 +551,9 @@ class MessageLookup extends MessageLookupByLibrary { ), "downloader_info_download_unit_input_prompt": MessageLookupByLibrary.simpleMessage("請輸入下載單位,如:1、100k、10m, 0或留空為不限速。"), - "downloader_info_download_upload_speed": m21, - "downloader_info_downloaded": m22, - "downloader_info_downloading": m23, + "downloader_info_download_upload_speed": m24, + "downloader_info_downloaded": m25, + "downloader_info_downloading": m26, "downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage( "下載中...", ), @@ -570,9 +570,9 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("限速設定已儲存。是否立即重新啟動下載管理器以套用新設定?"), "downloader_info_speed_limit_saved_restart_required": MessageLookupByLibrary.simpleMessage("限速設定已儲存,將在下次啟動下載器時生效。"), - "downloader_info_status": m24, - "downloader_info_total_size": m25, - "downloader_info_uploaded": m26, + "downloader_info_status": m27, + "downloader_info_total_size": m28, + "downloader_info_uploaded": m29, "downloader_info_waiting": MessageLookupByLibrary.simpleMessage("等待中"), "downloader_input_download_speed_limit": MessageLookupByLibrary.simpleMessage("下載限制:"), @@ -613,7 +613,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("DPS計算器"), "home_action_external_browser_extension": MessageLookupByLibrary.simpleMessage("瀏覽器擴充套件:"), - "home_action_info_abnormal_game_exit": m27, + "home_action_info_abnormal_game_exit": m30, "home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage( "請查看彈出式網頁連結獲得詳細資訊。", ), @@ -622,7 +622,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage( "內建翻譯文件", ), - "home_action_info_initialization_failed": m28, + "home_action_info_initialization_failed": m31, "home_action_info_initializing_resources": MessageLookupByLibrary.simpleMessage("正在初始化翻譯文件..."), "home_action_info_log_file_parse_fail": @@ -635,7 +635,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("快速安裝翻譯文件"), "home_action_info_roberts_space_industries_origin": MessageLookupByLibrary.simpleMessage("羅伯茨航天工業公司,萬物的起源"), - "home_action_info_scan_complete_valid_directories_found": m29, + "home_action_info_scan_complete_valid_directories_found": m32, "home_action_info_scanning": MessageLookupByLibrary.simpleMessage( "正在掃描 ...", ), @@ -690,7 +690,7 @@ class MessageLookup extends MessageLookupByLibrary { "home_action_uex_localization": MessageLookupByLibrary.simpleMessage("UEX"), "home_announcement_details": MessageLookupByLibrary.simpleMessage("公告詳情"), "home_holiday_countdown": MessageLookupByLibrary.simpleMessage("遊戲節慶倒數計時"), - "home_holiday_countdown_days": m30, + "home_holiday_countdown_days": m33, "home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage( "* 以上節慶日期由人工收錄與維護,可能存在部分偏誤,歡迎進行反饋!", ), @@ -765,10 +765,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("讀取 p4k 文件 ..."), "home_localization_advanced_msg_reading_server_localization_text": MessageLookupByLibrary.simpleMessage("獲取翻譯文字 ..."), - "home_localization_advanced_msg_version": m31, - "home_localization_advanced_title": m32, - "home_localization_advanced_title_msg": m33, - "home_localization_advanced_title_preview": m34, + "home_localization_advanced_msg_version": m34, + "home_localization_advanced_title": m35, + "home_localization_advanced_title_msg": m36, + "home_localization_advanced_title_preview": m37, "home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage( "該版本沒有提供描述", ), @@ -776,7 +776,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage(" (進階翻譯)"), "home_localization_new_version_available": MessageLookupByLibrary.simpleMessage("社群翻譯有新的版本"), - "home_localization_new_version_installed": m35, + "home_localization_new_version_installed": m38, "home_localization_select_customize_file": MessageLookupByLibrary.simpleMessage("請選擇自定義翻譯文件"), "home_localization_select_customize_file_ini": @@ -794,7 +794,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "本功能可以幫您更加便利的啟動遊戲。\n\n為確保帳戶安全 ,本功能使用中文翻譯瀏覽器保留登入狀態,且不會儲存您的密碼資訊(除非你啟用了自動輸入功能)。\n\n使用此功能登入帳號時請確保您的 SC工具箱 是從可信任的來源下載。", ), - "home_login_info_rsi_server_report": m36, + "home_login_info_rsi_server_report": m39, "home_login_title_launching_game": MessageLookupByLibrary.simpleMessage( "正在為您啟動遊戲...", ), @@ -821,7 +821,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "input_method_community_input_method_not_installed": MessageLookupByLibrary.simpleMessage("未安裝社區輸入法支持"), - "input_method_community_input_method_support_version": m39, + "input_method_community_input_method_support_version": m42, "input_method_confirm_enable_remote_input": MessageLookupByLibrary.simpleMessage("確認啟用遠程輸入?"), "input_method_confirm_install_advanced_localization": @@ -872,7 +872,7 @@ class MessageLookup extends MessageLookupByLibrary { "input_method_support_updated": MessageLookupByLibrary.simpleMessage( "社區輸入法支持已更新", ), - "input_method_support_updated_to_version": m40, + "input_method_support_updated_to_version": m43, "input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage( "文本不能為空!", ), @@ -891,7 +891,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("意見反饋"), "localization_action_uninstall_translation": MessageLookupByLibrary.simpleMessage("解除安裝"), - "localization_info_channel": m41, + "localization_info_channel": m44, "localization_info_community_translation": MessageLookupByLibrary.simpleMessage("社群翻譯"), "localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage( @@ -900,14 +900,14 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_custom_files": MessageLookupByLibrary.simpleMessage( "自訂文件", ), - "localization_info_enabled": m42, + "localization_info_enabled": m45, "localization_info_incompatible_translation_params_warning": MessageLookupByLibrary.simpleMessage( "USER.cfg 包含不相容的翻譯參數,這可能是以前的翻譯文件的殘留信息。\n\n這將可能導致翻譯無效或亂碼,點擊確認進行快速刪除(不會影響其他配置)。", ), - "localization_info_installation_error": m43, + "localization_info_installation_error": m46, "localization_info_installed": MessageLookupByLibrary.simpleMessage("已安裝"), - "localization_info_installed_version": m44, + "localization_info_installed_version": m47, "localization_info_language": MessageLookupByLibrary.simpleMessage( "語言: ", ), @@ -928,14 +928,14 @@ class MessageLookup extends MessageLookupByLibrary { "localization_info_unavailable": MessageLookupByLibrary.simpleMessage( "無法使用", ), - "localization_info_update_time": m45, - "localization_info_version_number": m46, - "log_analyzer_collision_details": m47, - "log_analyzer_death_details": m48, + "localization_info_update_time": m48, + "localization_info_version_number": m49, + "log_analyzer_collision_details": m50, + "log_analyzer_death_details": m51, "log_analyzer_description": MessageLookupByLibrary.simpleMessage( "分析您的遊玩記錄 (登入、死亡、擊殺 等資訊)", ), - "log_analyzer_details_info": m49, + "log_analyzer_details_info": m52, "log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage("解體"), "log_analyzer_filter_account_related": MessageLookupByLibrary.simpleMessage( "帳戶相關", @@ -969,9 +969,9 @@ class MessageLookup extends MessageLookupByLibrary { ), "log_analyzer_game_loading": MessageLookupByLibrary.simpleMessage("遊戲載入"), "log_analyzer_game_start": MessageLookupByLibrary.simpleMessage("遊戲啟動"), - "log_analyzer_kill_death_suicide_count": m50, + "log_analyzer_kill_death_suicide_count": m53, "log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage("擊殺總結"), - "log_analyzer_mode_loading_time": m51, + "log_analyzer_mode_loading_time": m54, "log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage( "未檢測到遊戲崩潰資訊", ), @@ -981,9 +981,9 @@ class MessageLookup extends MessageLookupByLibrary { "log_analyzer_one_click_diagnosis_header": MessageLookupByLibrary.simpleMessage("----- 工具箱疑難排解 -----"), "log_analyzer_play_time": MessageLookupByLibrary.simpleMessage("遊玩時長"), - "log_analyzer_play_time_format": m52, - "log_analyzer_player_location": m53, - "log_analyzer_player_login": m54, + "log_analyzer_play_time_format": m55, + "log_analyzer_player_location": m56, + "log_analyzer_player_login": m57, "log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage( "輸入關鍵字搜索內容", ), @@ -992,7 +992,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "log_analyzer_soft_death": MessageLookupByLibrary.simpleMessage("軟死亡"), "log_analyzer_title": MessageLookupByLibrary.simpleMessage("log 分析器"), - "log_analyzer_vehicle_damage_details": m55, + "log_analyzer_vehicle_damage_details": m58, "log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage( "查看本地庫存", ), @@ -1027,7 +1027,7 @@ class MessageLookup extends MessageLookupByLibrary { "在簡介的任意位置添加驗證碼即可,驗證碼30分鐘內有效", ), "party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage("確認解散"), - "party_room_connect_error": m56, + "party_room_connect_error": m59, "party_room_connect_failed": MessageLookupByLibrary.simpleMessage("連接失敗"), "party_room_connecting": MessageLookupByLibrary.simpleMessage("正在連接伺服器..."), "party_room_continue": MessageLookupByLibrary.simpleMessage("繼續"), @@ -1044,7 +1044,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "party_room_create_new_room": MessageLookupByLibrary.simpleMessage("建立新房間"), "party_room_create_room": MessageLookupByLibrary.simpleMessage("建立房間"), - "party_room_days_ago": m57, + "party_room_days_ago": m60, "party_room_disconnected": MessageLookupByLibrary.simpleMessage("連接已斷開"), "party_room_dismiss": MessageLookupByLibrary.simpleMessage("解散"), "party_room_dismiss_confirm_msg": MessageLookupByLibrary.simpleMessage( @@ -1069,7 +1069,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "party_room_error": MessageLookupByLibrary.simpleMessage("錯誤"), "party_room_exit_room": MessageLookupByLibrary.simpleMessage("退出房間"), - "party_room_exit_room_failed": m58, + "party_room_exit_room_failed": m61, "party_room_game_id_empty": MessageLookupByLibrary.simpleMessage( "遊戲ID不能為空", ), @@ -1079,12 +1079,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_game_not_started": MessageLookupByLibrary.simpleMessage( "<遊戲未啟動>", ), - "party_room_get_code_failed": m59, + "party_room_get_code_failed": m62, "party_room_go_login": MessageLookupByLibrary.simpleMessage("去登入"), "party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage( "您正在以訪客身份瀏覽,登入後可建立或加入房間。", ), - "party_room_hours_ago": m60, + "party_room_hours_ago": m63, "party_room_info_updated": MessageLookupByLibrary.simpleMessage("房間資訊已更新"), "party_room_join": MessageLookupByLibrary.simpleMessage("加入"), "party_room_join_failed": MessageLookupByLibrary.simpleMessage("加入失敗"), @@ -1095,8 +1095,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_just_now": MessageLookupByLibrary.simpleMessage("剛剛"), "party_room_kick": MessageLookupByLibrary.simpleMessage("踢出"), "party_room_kick_member": MessageLookupByLibrary.simpleMessage("踢出成員"), - "party_room_kick_member_confirm": m61, - "party_room_kick_member_failed": m62, + "party_room_kick_member_confirm": m64, + "party_room_kick_member_failed": m65, "party_room_kicked": MessageLookupByLibrary.simpleMessage("被踢出房間"), "party_room_leave_confirm": MessageLookupByLibrary.simpleMessage( "確認離開房間嗎?", @@ -1107,13 +1107,13 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_link_format_error": MessageLookupByLibrary.simpleMessage( "連結格式錯誤!", ), - "party_room_load_list_failed": m63, + "party_room_load_list_failed": m66, "party_room_loading": MessageLookupByLibrary.simpleMessage("載入中..."), "party_room_location": MessageLookupByLibrary.simpleMessage("位置"), "party_room_login": MessageLookupByLibrary.simpleMessage("登入"), "party_room_main_menu": MessageLookupByLibrary.simpleMessage("<主選單>"), - "party_room_members_count": m64, - "party_room_minutes_ago": m65, + "party_room_members_count": m67, + "party_room_minutes_ago": m68, "party_room_need_login": MessageLookupByLibrary.simpleMessage("需要登入"), "party_room_new_owner": MessageLookupByLibrary.simpleMessage("新房主"), "party_room_next_step": MessageLookupByLibrary.simpleMessage("下一步"), @@ -1140,12 +1140,12 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_player_death": MessageLookupByLibrary.simpleMessage("玩家死亡"), "party_room_prev_step": MessageLookupByLibrary.simpleMessage("上一步"), "party_room_reconnect": MessageLookupByLibrary.simpleMessage("重新連接"), - "party_room_reconnect_failed": m66, + "party_room_reconnect_failed": m69, "party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage( "與房間伺服器的連接已斷開,是否重新連接?", ), - "party_room_reconnect_retry": m67, - "party_room_register_failed": m68, + "party_room_reconnect_retry": m70, + "party_room_register_failed": m71, "party_room_register_success": MessageLookupByLibrary.simpleMessage( "註冊成功!", ), @@ -1213,8 +1213,8 @@ class MessageLookup extends MessageLookupByLibrary { "party_room_title": MessageLookupByLibrary.simpleMessage("組隊大廳"), "party_room_transfer": MessageLookupByLibrary.simpleMessage("轉移"), "party_room_transfer_owner": MessageLookupByLibrary.simpleMessage("轉移房主"), - "party_room_transfer_owner_confirm": m69, - "party_room_transfer_owner_failed": m70, + "party_room_transfer_owner_confirm": m72, + "party_room_transfer_owner_failed": m73, "party_room_unknown_area": MessageLookupByLibrary.simpleMessage("未知區域"), "party_room_unknown_location": MessageLookupByLibrary.simpleMessage("未知位置"), "party_room_unknown_user": MessageLookupByLibrary.simpleMessage("未知使用者"), @@ -1250,7 +1250,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "performance_action_super": MessageLookupByLibrary.simpleMessage("極高"), "performance_info_applied": MessageLookupByLibrary.simpleMessage("已套用"), - "performance_info_current_status": m71, + "performance_info_current_status": m74, "performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage( "刪除配置檔案...", ), @@ -1264,7 +1264,7 @@ class MessageLookup extends MessageLookupByLibrary { "此功能對改善因 GPU 造成的瓶頸,但對於因 CPU 造成瓶頸的裝置可能引發負面效果,如果您 GPU 性能強勁,可以嘗試更改為更高的畫質來獲得更高的 GPU 使用率並改善畫面表現。", ), "performance_info_graphics": MessageLookupByLibrary.simpleMessage("圖形"), - "performance_info_min_max_values": m72, + "performance_info_min_max_values": m75, "performance_info_not_applied": MessageLookupByLibrary.simpleMessage("未套用"), "performance_info_shader_clearing_warning": MessageLookupByLibrary.simpleMessage( @@ -1423,7 +1423,7 @@ class MessageLookup extends MessageLookupByLibrary { "performance_json_text_water_info": MessageLookupByLibrary.simpleMessage( "各種水的等級", ), - "performance_title_performance_optimization": m73, + "performance_title_performance_optimization": m76, "setting_action_clear_translation_file_cache": MessageLookupByLibrary.simpleMessage("清理翻譯文件快取"), "setting_action_create_desktop_shortcut": @@ -1436,7 +1436,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_info_autofill_data_cleared": MessageLookupByLibrary.simpleMessage("已清理自動輸入資料"), - "setting_action_info_cache_clearing_info": m74, + "setting_action_info_cache_clearing_info": m77, "setting_action_info_clear_cache_warning": MessageLookupByLibrary.simpleMessage("這不會影響已安裝的社群翻譯。"), "setting_action_info_confirm_clear_cache": @@ -1481,7 +1481,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "setting_action_reset_auto_password_fill": MessageLookupByLibrary.simpleMessage("重設自動密碼輸入"), - "setting_action_set_core_count": m75, + "setting_action_set_core_count": m78, "setting_action_set_game_file": MessageLookupByLibrary.simpleMessage( "變更遊戲文件 (StarCitizen.exe)", ), @@ -1523,39 +1523,39 @@ class MessageLookup extends MessageLookupByLibrary { "splash_analytics_done": MessageLookupByLibrary.simpleMessage( "✓ AnalyticsApi.touch(\"launch\") 完成", ), - "splash_analytics_error": m76, + "splash_analytics_error": m79, "splash_analytics_timeout": MessageLookupByLibrary.simpleMessage( "⚠ AnalyticsApi.touch() 超時 (10秒) - 繼續執行", ), "splash_app_init_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.initApp() 完成", ), - "splash_app_init_error": m77, + "splash_app_init_error": m80, "splash_app_init_timeout": MessageLookupByLibrary.simpleMessage( "✗ appModel.initApp() 超時 (10秒)", ), "splash_aria2c_done": MessageLookupByLibrary.simpleMessage( "✓ aria2cModelProvider 初始化完成", ), - "splash_aria2c_error": m78, + "splash_aria2c_error": m81, "splash_check_host_done": MessageLookupByLibrary.simpleMessage( "✓ URLConf.checkHost() 完成", ), - "splash_check_host_error": m79, + "splash_check_host_error": m82, "splash_check_host_timeout": MessageLookupByLibrary.simpleMessage( "⚠ URLConf.checkHost() 超時 (10秒) - 繼續執行", ), "splash_check_update_done": MessageLookupByLibrary.simpleMessage( "✓ appModel.checkUpdate() 完成", ), - "splash_check_update_error": m80, + "splash_check_update_error": m83, "splash_check_update_timeout": MessageLookupByLibrary.simpleMessage( "⚠ appModel.checkUpdate() 超時 (10秒) - 繼續執行", ), "splash_check_version": MessageLookupByLibrary.simpleMessage( "檢查 splash_alert_info_version...", ), - "splash_close_hive_failed": m81, + "splash_close_hive_failed": m84, "splash_context_unmounted": MessageLookupByLibrary.simpleMessage( "✗ Context 已卸載", ), @@ -1569,16 +1569,16 @@ class MessageLookup extends MessageLookupByLibrary { "✗ Context 已卸載,無法導航", ), "splash_db_deleted": MessageLookupByLibrary.simpleMessage("[診斷] 資料庫目錄已刪除"), - "splash_db_not_exist": m82, + "splash_db_not_exist": m85, "splash_db_reset_done": MessageLookupByLibrary.simpleMessage( "[診斷] 資料庫重置完成,準備退出應用", ), "splash_db_reset_msg": MessageLookupByLibrary.simpleMessage( "資料庫已重置,應用將退出。請重新啟動應用。", ), - "splash_deleting_db": m83, - "splash_diagnostic_log": m84, - "splash_diagnostic_mode": m85, + "splash_deleting_db": m86, + "splash_diagnostic_log": m87, + "splash_diagnostic_mode": m88, "splash_error": MessageLookupByLibrary.simpleMessage("錯誤"), "splash_exec_analytics": MessageLookupByLibrary.simpleMessage( "執行 AnalyticsApi.touch(\"launch\")...", @@ -1598,7 +1598,7 @@ class MessageLookup extends MessageLookupByLibrary { "splash_hive_done": MessageLookupByLibrary.simpleMessage( "✓ Hive.openBox(\"app_conf\") 完成", ), - "splash_hive_error": m86, + "splash_hive_error": m89, "splash_hive_timeout": MessageLookupByLibrary.simpleMessage( "✗ Hive.openBox(\"app_conf\") 超時 (10秒)", ), @@ -1608,20 +1608,20 @@ class MessageLookup extends MessageLookupByLibrary { "splash_init_task_status": MessageLookupByLibrary.simpleMessage( "初始化任務執行情況:", ), - "splash_log_not_exist": m87, - "splash_log_read_done": m88, + "splash_log_not_exist": m90, + "splash_log_read_done": m91, "splash_open_hive_box": MessageLookupByLibrary.simpleMessage( "開啟 Hive app_conf box...", ), "splash_read_full_log": MessageLookupByLibrary.simpleMessage("讀取完整日誌"), - "splash_read_log_failed": m89, + "splash_read_log_failed": m92, "splash_reset_database": MessageLookupByLibrary.simpleMessage("重置資料庫"), - "splash_reset_db_failed": m90, + "splash_reset_db_failed": m93, "splash_show_agreement": MessageLookupByLibrary.simpleMessage( "需要顯示使用者協議對話框...", ), - "splash_start_init": m91, - "splash_start_read_log": m92, + "splash_start_init": m94, + "splash_start_read_log": m95, "splash_step0_done": MessageLookupByLibrary.simpleMessage( "--- Step 0 完成,進入 Step 1 ---", ), @@ -1683,13 +1683,13 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage( "清理完畢,請完成一次安裝 / 遊戲啟動 操作。", ), - "tools_action_info_cleanup_failed": m93, + "tools_action_info_cleanup_failed": m96, "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": m94, + "tools_action_info_error_occurred": m97, "tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage( "修復成功,請嘗試重新啟動電腦後繼續安裝遊戲! 若登錄檔修改操作導致其他軟體出現相容問題,請使用 工具 中的 NVME 登錄檔清理。", @@ -1700,7 +1700,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage( "將 IP 資訊寫入 Hosts 文件,解決部分地區的 DNS 汙染導致無法登入官網等問題。\n該功能正在進行第一階段測試,遇到問題請及時回饋。", ), - "tools_action_info_init_failed": m95, + "tools_action_info_init_failed": m98, "tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage( "日誌檔案不存在,請嘗試進行一次遊戲啟動或遊戲安裝,並退出啟動器,若無法解決問題,請嘗試將啟動器更新至最新版本!", @@ -1713,14 +1713,14 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage( "未安裝", ), - "tools_action_info_nvme_patch_issue": m96, + "tools_action_info_nvme_patch_issue": m99, "tools_action_info_one_key_close_lens_shake": MessageLookupByLibrary.simpleMessage( "關閉遊戲內鏡頭晃動效果以便進行攝影。\n\n @拉邦那 Lapernum 提供參數資訊。", ), "tools_action_info_p4k_download_in_progress": MessageLookupByLibrary.simpleMessage("已經有一個p4k下載任務正在進行中,請前往下載管理器查看!"), - "tools_action_info_p4k_download_repair_tip": m97, + "tools_action_info_p4k_download_repair_tip": m100, "tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage( "P4k 是星際公民的核心遊戲文件,高達 100GB+,工具箱提供的離線下載是為了幫助一些p4k文件下載慢到不行的使用者 或用於修復官方啟動器無法修復的 p4k 文件。\n\n接下來會跳出視窗詢問您儲存位置(可以選擇星際公民資料夾也可以選擇別處),下載完成後請確保 P4K 資料夾位於 LIVE 資料夾內,之後使用星際公民啟動器校驗更新即可。", ), @@ -1735,7 +1735,7 @@ class MessageLookup extends MessageLookupByLibrary { ), "tools_action_info_rsi_launcher_directory_not_found": MessageLookupByLibrary.simpleMessage("未找到 RSI 啟動器目錄,請您嘗試手動操作。"), - "tools_action_info_rsi_launcher_log_issue": m98, + "tools_action_info_rsi_launcher_log_issue": m101, "tools_action_info_rsi_launcher_not_found": MessageLookupByLibrary.simpleMessage("未找到 RSI 啟動器,請嘗試重新安裝,或在設定中手動新增。"), "tools_action_info_rsi_launcher_running_warning": @@ -1743,12 +1743,12 @@ class MessageLookup extends MessageLookupByLibrary { "tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage( "以管理員身份執行RSI啟動器,可能會解決一些問題。\n\n若設定了 E-Core 核心忽略參數,也會在此套用。", ), - "tools_action_info_shader_cache_issue": m99, + "tools_action_info_shader_cache_issue": m102, "tools_action_info_star_citizen_not_found": MessageLookupByLibrary.simpleMessage( "未找到星際公民遊戲安裝位置,請至少完成一次遊戲啟動操作 或在設定中手動新增。", ), - "tools_action_info_system_info_content": m100, + "tools_action_info_system_info_content": m103, "tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage( "系統資訊", ), @@ -1811,7 +1811,7 @@ class MessageLookup extends MessageLookupByLibrary { "tools_info_game_install_location": MessageLookupByLibrary.simpleMessage( "遊戲安裝位置: ", ), - "tools_info_processing_failed": m103, + "tools_info_processing_failed": m106, "tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage( "RSI啟動器位置:", ), @@ -1831,13 +1831,13 @@ class MessageLookup extends MessageLookupByLibrary { "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error": MessageLookupByLibrary.simpleMessage("讀取啟動器資訊失敗!"), "tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args": - m104, + m107, "tools_rsi_launcher_enhance_msg_error_launcher_notfound": MessageLookupByLibrary.simpleMessage("未找到 RSI 啟動器"), - "tools_rsi_launcher_enhance_msg_patch_status": m105, + "tools_rsi_launcher_enhance_msg_patch_status": m108, "tools_rsi_launcher_enhance_msg_uninstall": MessageLookupByLibrary.simpleMessage("* 如需移除增強補丁,請覆蓋安裝 RSI 啟動器。"), - "tools_rsi_launcher_enhance_msg_version": m106, + "tools_rsi_launcher_enhance_msg_version": m109, "tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage( "RSI 啟動器增強是一項社群功能,它會在您的電腦上解包 \"RSI Launcher\" 並加入額外的增強功能,具體使用哪些功能由您決定。\n\n目前,官方(CIG)僅許可我們進行多語言操作,啟動器下載增強是我們認為有用的額外功能,違反cig使用者協議(https://robertsspaceindustries.com/eula)可能導致帳號被封禁等嚴重後果,是否啟用由您自己決定,我們不對可能產生的後果(遊戲損壞,帳號封禁等)承擔任何責任。\n\n對於啟動器的修改內容,我們開源於:https://github.com/StarCitizenToolBox/RSILauncherEnhance,如有需要,您可自行查閱。\n\n如果您因為任何原因需要取消此增強補丁,請直接覆蓋安裝官方啟動器。", ), @@ -1869,18 +1869,18 @@ class MessageLookup extends MessageLookupByLibrary { "使用此功能需安裝 .NET8 運行庫,請點擊下方按鈕下載安裝,安裝成功後重新打開此頁面即可繼續使用。", ), "tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage("初始化中..."), - "tools_unp4k_msg_open_file": m114, - "tools_unp4k_msg_read_completed": m115, - "tools_unp4k_msg_read_file": m116, + "tools_unp4k_msg_open_file": m117, + "tools_unp4k_msg_read_completed": m118, + "tools_unp4k_msg_read_file": m119, "tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage( "正在讀取P4K 文件 ...", ), "tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage( "正在處理文件 ...", ), - "tools_unp4k_msg_reading3": m117, - "tools_unp4k_msg_unknown_file_type": m118, - "tools_unp4k_title": m119, + "tools_unp4k_msg_reading3": m120, + "tools_unp4k_msg_unknown_file_type": m121, + "tools_unp4k_title": m122, "tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage("單擊文件以預覽"), "tools_vehicle_sorting_info": MessageLookupByLibrary.simpleMessage( "將左側載具拖動到右側列表中,這將會為載具名稱增加 001、002 .. 等前綴,方便您在遊戲內 UI 快速定位載具。在右側列表上下拖動可以調整載具的順序。", diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 50f5136..382a2c7 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -8202,6 +8202,331 @@ class S { ); } + /// `DataForge Viewer -> {v0}` + String dcb_viewer_title(Object v0) { + return Intl.message( + 'DataForge Viewer -> $v0', + name: 'dcb_viewer_title', + desc: '', + args: [v0], + ); + } + + /// `Loading DCB file...` + String get dcb_viewer_loading { + return Intl.message( + 'Loading DCB file...', + name: 'dcb_viewer_loading', + desc: '', + args: [], + ); + } + + /// `Parsing DataForge data...` + String get dcb_viewer_parsing { + return Intl.message( + 'Parsing DataForge data...', + name: 'dcb_viewer_parsing', + desc: '', + args: [], + ); + } + + /// `Loading record list...` + String get dcb_viewer_loading_records { + return Intl.message( + 'Loading record list...', + name: 'dcb_viewer_loading_records', + desc: '', + args: [], + ); + } + + /// `{v0} records loaded` + String dcb_viewer_loaded_records(Object v0) { + return Intl.message( + '$v0 records loaded', + name: 'dcb_viewer_loaded_records', + desc: '', + args: [v0], + ); + } + + /// `Invalid DCB file format` + String get dcb_viewer_error_not_dcb { + return Intl.message( + 'Invalid DCB file format', + name: 'dcb_viewer_error_not_dcb', + desc: '', + args: [], + ); + } + + /// `Search Mode` + String get dcb_viewer_search_mode { + return Intl.message( + 'Search Mode', + name: 'dcb_viewer_search_mode', + desc: '', + args: [], + ); + } + + /// `Searching...` + String get dcb_viewer_searching { + return Intl.message( + 'Searching...', + name: 'dcb_viewer_searching', + desc: '', + args: [], + ); + } + + /// `{v0} results found` + String dcb_viewer_search_results(Object v0) { + return Intl.message( + '$v0 results found', + name: 'dcb_viewer_search_results', + desc: '', + args: [v0], + ); + } + + /// `Full text search (press Enter)...` + String get dcb_viewer_search_fulltext_placeholder { + return Intl.message( + 'Full text search (press Enter)...', + name: 'dcb_viewer_search_fulltext_placeholder', + desc: '', + args: [], + ); + } + + /// `Filter record paths...` + String get dcb_viewer_search_list_placeholder { + return Intl.message( + 'Filter record paths...', + name: 'dcb_viewer_search_list_placeholder', + desc: '', + args: [], + ); + } + + /// `Search in current file...` + String get dcb_viewer_search_in_file { + return Intl.message( + 'Search in current file...', + name: 'dcb_viewer_search_in_file', + desc: '', + args: [], + ); + } + + /// `No results` + String get dcb_viewer_search_no_results { + return Intl.message( + 'No results', + name: 'dcb_viewer_search_no_results', + desc: '', + args: [], + ); + } + + /// `Match Case` + String get dcb_viewer_search_case_sensitive { + return Intl.message( + 'Match Case', + name: 'dcb_viewer_search_case_sensitive', + desc: '', + args: [], + ); + } + + /// `Use Regular Expression` + String get dcb_viewer_search_regex { + return Intl.message( + 'Use Regular Expression', + name: 'dcb_viewer_search_regex', + desc: '', + args: [], + ); + } + + /// `Fold/Unfold Code Blocks` + String get dcb_viewer_fold_all { + return Intl.message( + 'Fold/Unfold Code Blocks', + name: 'dcb_viewer_fold_all', + desc: '', + args: [], + ); + } + + /// `No records` + String get dcb_viewer_no_records { + return Intl.message( + 'No records', + name: 'dcb_viewer_no_records', + desc: '', + args: [], + ); + } + + /// `No search results` + String get dcb_viewer_no_search_results { + return Intl.message( + 'No search results', + name: 'dcb_viewer_no_search_results', + desc: '', + args: [], + ); + } + + /// `Select a record to view XML content` + String get dcb_viewer_select_record { + return Intl.message( + 'Select a record to view XML content', + name: 'dcb_viewer_select_record', + desc: '', + args: [], + ); + } + + /// `Export` + String get dcb_viewer_export { + return Intl.message( + 'Export', + name: 'dcb_viewer_export', + desc: '', + args: [], + ); + } + + /// `Export as single XML` + String get dcb_viewer_export_single_xml { + return Intl.message( + 'Export as single XML', + name: 'dcb_viewer_export_single_xml', + desc: '', + args: [], + ); + } + + /// `Export as multiple XML files` + String get dcb_viewer_export_multiple_xml { + return Intl.message( + 'Export as multiple XML files', + name: 'dcb_viewer_export_multiple_xml', + desc: '', + args: [], + ); + } + + /// `Export successful` + String get dcb_viewer_export_success { + return Intl.message( + 'Export successful', + name: 'dcb_viewer_export_success', + desc: '', + args: [], + ); + } + + /// `Export failed` + String get dcb_viewer_export_failed { + return Intl.message( + 'Export failed', + name: 'dcb_viewer_export_failed', + desc: '', + args: [], + ); + } + + /// `DataForge Viewer` + String get dcb_viewer_title_standalone { + return Intl.message( + 'DataForge Viewer', + name: 'dcb_viewer_title_standalone', + desc: '', + args: [], + ); + } + + /// `Select DCB File` + String get dcb_viewer_select_file_title { + return Intl.message( + 'Select DCB File', + name: 'dcb_viewer_select_file_title', + desc: '', + args: [], + ); + } + + /// `Please select a .dcb file or DCB file extracted from P4K` + String get dcb_viewer_select_file_description { + return Intl.message( + 'Please select a .dcb file or DCB file extracted from P4K', + name: 'dcb_viewer_select_file_description', + desc: '', + args: [], + ); + } + + /// `Select DCB File` + String get dcb_viewer_select_dcb_file { + return Intl.message( + 'Select DCB File', + name: 'dcb_viewer_select_dcb_file', + desc: '', + args: [], + ); + } + + /// `Select P4K File` + String get dcb_viewer_select_p4k_file { + return Intl.message( + 'Select P4K File', + name: 'dcb_viewer_select_p4k_file', + desc: '', + args: [], + ); + } + + /// `Select Another File` + String get dcb_viewer_select_another_file { + return Intl.message( + 'Select Another File', + name: 'dcb_viewer_select_another_file', + desc: '', + args: [], + ); + } + + /// `DCB/DataForge Viewer` + String get tools_action_dcb_viewer { + return Intl.message( + 'DCB/DataForge Viewer', + name: 'tools_action_dcb_viewer', + desc: '', + args: [], + ); + } + + /// `View and export DataForge game database (.dcb) file content` + String get tools_action_dcb_viewer_info { + return Intl.message( + 'View and export DataForge game database (.dcb) file content', + name: 'tools_action_dcb_viewer_info', + desc: '', + args: [], + ); + } + + /// `Back` + String get action_back { + return Intl.message('Back', name: 'action_back', desc: '', args: []); + } + /// `Switch DirectX/Vulkan Renderer` String get tools_action_switch_graphics_renderer { return Intl.message( diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 009a0d9..9f485a8 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -1463,6 +1463,39 @@ "tools_unp4k_action_cancel_multi_select": "Cancel Multi-Select", "tools_unp4k_action_select_all": "Select All", "tools_unp4k_action_deselect_all": "Deselect All", + "dcb_viewer_title": "DataForge Viewer -> {v0}", + "dcb_viewer_loading": "Loading DCB file...", + "dcb_viewer_parsing": "Parsing DataForge data...", + "dcb_viewer_loading_records": "Loading record list...", + "dcb_viewer_loaded_records": "{v0} records loaded", + "dcb_viewer_error_not_dcb": "Invalid DCB file format", + "dcb_viewer_search_mode": "Search Mode", + "dcb_viewer_searching": "Searching...", + "dcb_viewer_search_results": "{v0} results found", + "dcb_viewer_search_fulltext_placeholder": "Full text search (press Enter)...", + "dcb_viewer_search_list_placeholder": "Filter record paths...", + "dcb_viewer_search_in_file": "Search in current file...", + "dcb_viewer_search_no_results": "No results", + "dcb_viewer_search_case_sensitive": "Match Case", + "dcb_viewer_search_regex": "Use Regular Expression", + "dcb_viewer_fold_all": "Fold/Unfold Code Blocks", + "dcb_viewer_no_records": "No records", + "dcb_viewer_no_search_results": "No search results", + "dcb_viewer_select_record": "Select a record to view XML content", + "dcb_viewer_export": "Export", + "dcb_viewer_export_single_xml": "Export as single XML", + "dcb_viewer_export_multiple_xml": "Export as multiple XML files", + "dcb_viewer_export_success": "Export successful", + "dcb_viewer_export_failed": "Export failed", + "dcb_viewer_title_standalone": "DataForge Viewer", + "dcb_viewer_select_file_title": "Select DCB File", + "dcb_viewer_select_file_description": "Please select a .dcb file or DCB file extracted from P4K", + "dcb_viewer_select_dcb_file": "Select DCB File", + "dcb_viewer_select_p4k_file": "Select P4K File", + "dcb_viewer_select_another_file": "Select Another File", + "tools_action_dcb_viewer": "DCB/DataForge Viewer", + "tools_action_dcb_viewer_info": "View and export DataForge game database (.dcb) file content", + "action_back": "Back", "tools_action_switch_graphics_renderer": "Switch DirectX/Vulkan Renderer", "tools_action_switch_graphics_renderer_info": "Current Renderer: {v0}", "tools_graphics_renderer_dx11": "DirectX 11", diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index a6c60d8..5ffb5ea 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -1178,6 +1178,39 @@ "tools_unp4k_action_cancel_multi_select": "取消多选", "tools_unp4k_action_select_all": "全选", "tools_unp4k_action_deselect_all": "取消全选", + "dcb_viewer_title": "DataForge 查看器 -> {v0}", + "dcb_viewer_loading": "正在加载 DCB 文件...", + "dcb_viewer_parsing": "正在解析 DataForge 数据...", + "dcb_viewer_loading_records": "正在加载记录列表...", + "dcb_viewer_loaded_records": "已加载 {v0} 条记录", + "dcb_viewer_error_not_dcb": "无效的 DCB 文件格式", + "dcb_viewer_search_mode": "搜索模式", + "dcb_viewer_searching": "正在搜索...", + "dcb_viewer_search_results": "找到 {v0} 个结果", + "dcb_viewer_search_fulltext_placeholder": "全文搜索(回车确认)...", + "dcb_viewer_search_list_placeholder": "过滤记录路径...", + "dcb_viewer_search_in_file": "在当前文件中搜索...", + "dcb_viewer_search_no_results": "无结果", + "dcb_viewer_search_case_sensitive": "区分大小写", + "dcb_viewer_search_regex": "使用正则表达式", + "dcb_viewer_fold_all": "折叠/展开代码块", + "dcb_viewer_no_records": "没有记录", + "dcb_viewer_no_search_results": "没有搜索结果", + "dcb_viewer_select_record": "选择一条记录以查看 XML 内容", + "dcb_viewer_export": "导出", + "dcb_viewer_export_single_xml": "导出为单个 XML", + "dcb_viewer_export_multiple_xml": "导出为多个 XML 文件", + "dcb_viewer_export_success": "导出成功", + "dcb_viewer_export_failed": "导出失败", + "dcb_viewer_title_standalone": "DataForge 查看器", + "dcb_viewer_select_file_title": "选择 DCB 文件", + "dcb_viewer_select_file_description": "请选择一个 .dcb 文件或从 P4K 中提取的 DCB 文件", + "dcb_viewer_select_dcb_file": "选择 DCB 文件", + "dcb_viewer_select_p4k_file": "选择 P4K 文件", + "dcb_viewer_select_another_file": "选择其他文件", + "tools_action_dcb_viewer": "DCB/DataForge 查看器", + "tools_action_dcb_viewer_info": "查看和导出 DataForge 游戏数据库 (.dcb) 文件内容", + "action_back": "返回", "tools_action_switch_graphics_renderer": "切换 DirectX/Vulkan 渲染器", "tools_action_switch_graphics_renderer_info": "当前渲染器:{v0}", "tools_graphics_renderer_dx11": "DirectX 11", diff --git a/lib/provider/dcb_viewer.dart b/lib/provider/dcb_viewer.dart new file mode 100644 index 0000000..3ce5990 --- /dev/null +++ b/lib/provider/dcb_viewer.dart @@ -0,0 +1,323 @@ +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:starcitizen_doctor/common/rust/api/unp4k_api.dart' as unp4k_api; +import 'package:starcitizen_doctor/common/utils/log.dart'; +import 'package:starcitizen_doctor/data/dcb_data.dart'; + +part 'dcb_viewer.freezed.dart'; + +part 'dcb_viewer.g.dart'; + +/// DCB 查看器视图模式 +enum DcbViewMode { + /// 普通列表浏览模式 + browse, + + /// 全文搜索结果模式 + searchResults, +} + +/// DCB 查看器输入源类型 +enum DcbSourceType { + /// 未初始化 + none, + + /// 从文件路径加载 + filePath, + + /// 从 P4K 内存数据加载 + p4kMemory, +} + +@freezed +abstract class DcbViewerState with _$DcbViewerState { + const factory DcbViewerState({ + /// 是否正在加载 + @Default(true) bool isLoading, + + /// 加载/错误消息 + @Default('') String message, + + /// 错误消息 + String? errorMessage, + + /// DCB 文件路径(用于显示标题) + @Default('') String dcbFilePath, + + /// 数据源类型 + @Default(DcbSourceType.none) DcbSourceType sourceType, + + /// 所有记录列表 + @Default([]) List allRecords, + + /// 当前过滤后的记录列表(用于列表搜索) + @Default([]) List filteredRecords, + + /// 当前选中的记录路径 + String? selectedRecordPath, + + /// 当前显示的 XML 内容 + @Default('') String currentXml, + + /// 列表搜索查询 + @Default('') String listSearchQuery, + + /// 全文搜索查询 + @Default('') String fullTextSearchQuery, + + /// 当前视图模式 + @Default(DcbViewMode.browse) DcbViewMode viewMode, + + /// 全文搜索结果 + @Default([]) List searchResults, + + /// 是否正在搜索 + @Default(false) bool isSearching, + + /// 是否正在加载 XML + @Default(false) bool isLoadingXml, + + /// 是否正在导出 + @Default(false) bool isExporting, + + /// 是否需要选择文件 + @Default(false) bool needSelectFile, + }) = _DcbViewerState; +} + +@riverpod +class DcbViewerModel extends _$DcbViewerModel { + @override + DcbViewerState build() { + ref.onDispose(() async { + try { + await unp4k_api.dcbClose(); + } catch (e) { + dPrint('[DCB Viewer] close error: $e'); + } + }); + return const DcbViewerState(isLoading: false, needSelectFile: true); + } + + /// 从磁盘文件路径加载 DCB + Future initFromFilePath(String filePath) async { + state = state.copyWith( + isLoading: true, + message: S.current.dcb_viewer_loading, + dcbFilePath: filePath, + sourceType: DcbSourceType.filePath, + needSelectFile: false, + errorMessage: null, + ); + + try { + final file = File(filePath); + if (!await file.exists()) { + state = state.copyWith(isLoading: false, errorMessage: 'File not found: $filePath'); + return; + } + + final data = await file.readAsBytes(); + await _loadDcbData(data, filePath); + } catch (e) { + dPrint('[DCB Viewer] init from file error: $e'); + state = state.copyWith(isLoading: false, errorMessage: e.toString()); + } + } + + /// 从 P4K 文件中提取并加载 DCB (Data/Game2.dcb) + Future initFromP4kFile(String p4kPath) async { + state = state.copyWith( + isLoading: true, + message: S.current.dcb_viewer_loading, + dcbFilePath: 'Data/Game2.dcb', + sourceType: DcbSourceType.p4kMemory, + needSelectFile: false, + errorMessage: null, + ); + + try { + // 打开 P4K 文件 + state = state.copyWith(message: S.current.tools_unp4k_msg_reading); + await unp4k_api.p4KOpen(p4KPath: p4kPath); + + // 提取 DCB 文件到内存 + state = state.copyWith(message: S.current.dcb_viewer_loading); + final data = await unp4k_api.p4KExtractToMemory(filePath: '\\Data\\Game2.dcb'); + + // 关闭 P4K(已完成提取) + await unp4k_api.p4KClose(); + + // 将数据写入临时文件并加载 + final tempDir = await getTemporaryDirectory(); + final tempPath = '${tempDir.path}/SCToolbox_dcb/Game2.dcb'; + final tempFile = File(tempPath); + await tempFile.parent.create(recursive: true); + await tempFile.writeAsBytes(data); + + state = state.copyWith(dcbFilePath: tempPath); + await _loadDcbData(Uint8List.fromList(data), tempPath); + } catch (e) { + dPrint('[DCB Viewer] init from P4K error: $e'); + // 确保关闭 P4K + try { + await unp4k_api.p4KClose(); + } catch (_) {} + state = state.copyWith(isLoading: false, errorMessage: e.toString()); + } + } + + /// 从内存数据初始化 DCB 查看器 + Future initFromData(Uint8List data, String filePath) async { + state = state.copyWith( + isLoading: true, + message: S.current.dcb_viewer_loading, + dcbFilePath: filePath, + sourceType: DcbSourceType.p4kMemory, + needSelectFile: false, + errorMessage: null, + ); + + await _loadDcbData(data, filePath); + } + + /// 内部方法:加载 DCB 数据 + Future _loadDcbData(Uint8List data, String filePath) async { + try { + // 检查是否为 DCB 格式 + final isDataforge = await unp4k_api.dcbIsDataforge(data: data); + if (!isDataforge) { + state = state.copyWith(isLoading: false, errorMessage: S.current.dcb_viewer_error_not_dcb); + return; + } + + // 解析 DCB 文件 + state = state.copyWith(message: S.current.dcb_viewer_parsing); + await unp4k_api.dcbOpen(data: data); + + // 获取记录列表 + state = state.copyWith(message: S.current.dcb_viewer_loading_records); + final apiRecords = await unp4k_api.dcbGetRecordList(); + + // 转换为本地数据类型 + final records = apiRecords.map((r) => DcbRecordData(path: r.path, index: r.index.toInt())).toList(); + + state = state.copyWith( + isLoading: false, + message: S.current.dcb_viewer_loaded_records(records.length), + allRecords: records, + filteredRecords: records, + ); + } catch (e) { + dPrint('[DCB Viewer] load data error: $e'); + state = state.copyWith(isLoading: false, errorMessage: e.toString()); + } + } + + /// 选择一条记录并加载其 XML + Future selectRecord(DcbRecordData record) async { + if (state.selectedRecordPath == record.path) return; + + state = state.copyWith(selectedRecordPath: record.path, isLoadingXml: true, currentXml: ''); + + try { + final xml = await unp4k_api.dcbRecordToXml(path: record.path); + state = state.copyWith(isLoadingXml: false, currentXml: xml); + } catch (e) { + dPrint('[DCB Viewer] load xml error: $e'); + state = state.copyWith(isLoadingXml: false, currentXml: ''); + } + } + + /// 列表搜索(过滤路径) + void searchList(String query) { + state = state.copyWith(listSearchQuery: query); + + if (query.isEmpty) { + state = state.copyWith(filteredRecords: state.allRecords); + return; + } + + final queryLower = query.toLowerCase(); + final filtered = state.allRecords.where((record) { + return record.path.toLowerCase().contains(queryLower); + }).toList(); + + state = state.copyWith(filteredRecords: filtered); + } + + /// 全文搜索 + Future searchFullText(String query) async { + if (query.isEmpty) { + // 退出搜索模式 + state = state.copyWith(viewMode: DcbViewMode.browse, fullTextSearchQuery: '', searchResults: []); + return; + } + + state = state.copyWith(isSearching: true, fullTextSearchQuery: query, viewMode: DcbViewMode.searchResults); + + try { + final apiResults = await unp4k_api.dcbSearchAll(query: query, maxResults: BigInt.from(500)); + + // 转换为本地数据类型 + final results = apiResults.map((r) { + return DcbSearchResultData( + path: r.path, + index: r.index.toInt(), + matches: r.matches + .map((m) => DcbSearchMatchData(lineNumber: m.lineNumber.toInt(), lineContent: m.lineContent)) + .toList(), + ); + }).toList(); + + state = state.copyWith( + isSearching: false, + searchResults: results, + message: S.current.dcb_viewer_search_results(results.length), + ); + } catch (e) { + dPrint('[DCB Viewer] search error: $e'); + state = state.copyWith(isSearching: false, message: 'Search error: $e'); + } + } + + /// 从搜索结果选择记录 + Future selectFromSearchResult(DcbSearchResultData result) async { + final record = DcbRecordData(path: result.path, index: result.index); + await selectRecord(record); + } + + /// 退出搜索模式 + void exitSearchMode() { + state = state.copyWith( + viewMode: DcbViewMode.browse, + fullTextSearchQuery: '', + searchResults: [], + message: S.current.dcb_viewer_loaded_records(state.allRecords.length), + ); + } + + /// 导出 DCB(合并或分离模式) + Future exportToDisk(String outputPath, bool merge) async { + state = state.copyWith(isExporting: true); + + try { + await unp4k_api.dcbExportToDisk(outputPath: outputPath, merge: merge, dcbPath: state.dcbFilePath); + state = state.copyWith(isExporting: false); + return null; // 成功 + } catch (e) { + dPrint('[DCB Viewer] export error: $e'); + state = state.copyWith(isExporting: false); + return e.toString(); + } + } + + /// 重置状态,回到选择文件界面 + void reset() { + state = const DcbViewerState(isLoading: false, needSelectFile: true); + } +} diff --git a/lib/provider/dcb_viewer.freezed.dart b/lib/provider/dcb_viewer.freezed.dart new file mode 100644 index 0000000..b9eaca2 --- /dev/null +++ b/lib/provider/dcb_viewer.freezed.dart @@ -0,0 +1,374 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'dcb_viewer.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +// dart format off +T _$identity(T value) => value; +/// @nodoc +mixin _$DcbViewerState { + +/// 是否正在加载 + bool get isLoading;/// 加载/错误消息 + String get message;/// 错误消息 + String? get errorMessage;/// DCB 文件路径(用于显示标题) + String get dcbFilePath;/// 数据源类型 + DcbSourceType get sourceType;/// 所有记录列表 + List get allRecords;/// 当前过滤后的记录列表(用于列表搜索) + List get filteredRecords;/// 当前选中的记录路径 + String? get selectedRecordPath;/// 当前显示的 XML 内容 + String get currentXml;/// 列表搜索查询 + String get listSearchQuery;/// 全文搜索查询 + String get fullTextSearchQuery;/// 当前视图模式 + DcbViewMode get viewMode;/// 全文搜索结果 + List get searchResults;/// 是否正在搜索 + bool get isSearching;/// 是否正在加载 XML + bool get isLoadingXml;/// 是否正在导出 + bool get isExporting;/// 是否需要选择文件 + bool get needSelectFile; +/// Create a copy of DcbViewerState +/// with the given fields replaced by the non-null parameter values. +@JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +$DcbViewerStateCopyWith get copyWith => _$DcbViewerStateCopyWithImpl(this as DcbViewerState, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbViewerState&&(identical(other.isLoading, isLoading) || other.isLoading == isLoading)&&(identical(other.message, message) || other.message == message)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.dcbFilePath, dcbFilePath) || other.dcbFilePath == dcbFilePath)&&(identical(other.sourceType, sourceType) || other.sourceType == sourceType)&&const DeepCollectionEquality().equals(other.allRecords, allRecords)&&const DeepCollectionEquality().equals(other.filteredRecords, filteredRecords)&&(identical(other.selectedRecordPath, selectedRecordPath) || other.selectedRecordPath == selectedRecordPath)&&(identical(other.currentXml, currentXml) || other.currentXml == currentXml)&&(identical(other.listSearchQuery, listSearchQuery) || other.listSearchQuery == listSearchQuery)&&(identical(other.fullTextSearchQuery, fullTextSearchQuery) || other.fullTextSearchQuery == fullTextSearchQuery)&&(identical(other.viewMode, viewMode) || other.viewMode == viewMode)&&const DeepCollectionEquality().equals(other.searchResults, searchResults)&&(identical(other.isSearching, isSearching) || other.isSearching == isSearching)&&(identical(other.isLoadingXml, isLoadingXml) || other.isLoadingXml == isLoadingXml)&&(identical(other.isExporting, isExporting) || other.isExporting == isExporting)&&(identical(other.needSelectFile, needSelectFile) || other.needSelectFile == needSelectFile)); +} + + +@override +int get hashCode => Object.hash(runtimeType,isLoading,message,errorMessage,dcbFilePath,sourceType,const DeepCollectionEquality().hash(allRecords),const DeepCollectionEquality().hash(filteredRecords),selectedRecordPath,currentXml,listSearchQuery,fullTextSearchQuery,viewMode,const DeepCollectionEquality().hash(searchResults),isSearching,isLoadingXml,isExporting,needSelectFile); + +@override +String toString() { + return 'DcbViewerState(isLoading: $isLoading, message: $message, errorMessage: $errorMessage, dcbFilePath: $dcbFilePath, sourceType: $sourceType, allRecords: $allRecords, filteredRecords: $filteredRecords, selectedRecordPath: $selectedRecordPath, currentXml: $currentXml, listSearchQuery: $listSearchQuery, fullTextSearchQuery: $fullTextSearchQuery, viewMode: $viewMode, searchResults: $searchResults, isSearching: $isSearching, isLoadingXml: $isLoadingXml, isExporting: $isExporting, needSelectFile: $needSelectFile)'; +} + + +} + +/// @nodoc +abstract mixin class $DcbViewerStateCopyWith<$Res> { + factory $DcbViewerStateCopyWith(DcbViewerState value, $Res Function(DcbViewerState) _then) = _$DcbViewerStateCopyWithImpl; +@useResult +$Res call({ + bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List allRecords, List filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile +}); + + + + +} +/// @nodoc +class _$DcbViewerStateCopyWithImpl<$Res> + implements $DcbViewerStateCopyWith<$Res> { + _$DcbViewerStateCopyWithImpl(this._self, this._then); + + final DcbViewerState _self; + final $Res Function(DcbViewerState) _then; + +/// Create a copy of DcbViewerState +/// with the given fields replaced by the non-null parameter values. +@pragma('vm:prefer-inline') @override $Res call({Object? isLoading = null,Object? message = null,Object? errorMessage = freezed,Object? dcbFilePath = null,Object? sourceType = null,Object? allRecords = null,Object? filteredRecords = null,Object? selectedRecordPath = freezed,Object? currentXml = null,Object? listSearchQuery = null,Object? fullTextSearchQuery = null,Object? viewMode = null,Object? searchResults = null,Object? isSearching = null,Object? isLoadingXml = null,Object? isExporting = null,Object? needSelectFile = null,}) { + return _then(_self.copyWith( +isLoading: null == isLoading ? _self.isLoading : isLoading // ignore: cast_nullable_to_non_nullable +as bool,message: null == message ? _self.message : message // ignore: cast_nullable_to_non_nullable +as String,errorMessage: freezed == errorMessage ? _self.errorMessage : errorMessage // ignore: cast_nullable_to_non_nullable +as String?,dcbFilePath: null == dcbFilePath ? _self.dcbFilePath : dcbFilePath // ignore: cast_nullable_to_non_nullable +as String,sourceType: null == sourceType ? _self.sourceType : sourceType // ignore: cast_nullable_to_non_nullable +as DcbSourceType,allRecords: null == allRecords ? _self.allRecords : allRecords // ignore: cast_nullable_to_non_nullable +as List,filteredRecords: null == filteredRecords ? _self.filteredRecords : filteredRecords // ignore: cast_nullable_to_non_nullable +as List,selectedRecordPath: freezed == selectedRecordPath ? _self.selectedRecordPath : selectedRecordPath // ignore: cast_nullable_to_non_nullable +as String?,currentXml: null == currentXml ? _self.currentXml : currentXml // ignore: cast_nullable_to_non_nullable +as String,listSearchQuery: null == listSearchQuery ? _self.listSearchQuery : listSearchQuery // ignore: cast_nullable_to_non_nullable +as String,fullTextSearchQuery: null == fullTextSearchQuery ? _self.fullTextSearchQuery : fullTextSearchQuery // ignore: cast_nullable_to_non_nullable +as String,viewMode: null == viewMode ? _self.viewMode : viewMode // ignore: cast_nullable_to_non_nullable +as DcbViewMode,searchResults: null == searchResults ? _self.searchResults : searchResults // ignore: cast_nullable_to_non_nullable +as List,isSearching: null == isSearching ? _self.isSearching : isSearching // ignore: cast_nullable_to_non_nullable +as bool,isLoadingXml: null == isLoadingXml ? _self.isLoadingXml : isLoadingXml // ignore: cast_nullable_to_non_nullable +as bool,isExporting: null == isExporting ? _self.isExporting : isExporting // ignore: cast_nullable_to_non_nullable +as bool,needSelectFile: null == needSelectFile ? _self.needSelectFile : needSelectFile // ignore: cast_nullable_to_non_nullable +as bool, + )); +} + +} + + +/// Adds pattern-matching-related methods to [DcbViewerState]. +extension DcbViewerStatePatterns on DcbViewerState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _DcbViewerState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _DcbViewerState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _DcbViewerState value) $default,){ +final _that = this; +switch (_that) { +case _DcbViewerState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _DcbViewerState value)? $default,){ +final _that = this; +switch (_that) { +case _DcbViewerState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List allRecords, List filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _DcbViewerState() when $default != null: +return $default(_that.isLoading,_that.message,_that.errorMessage,_that.dcbFilePath,_that.sourceType,_that.allRecords,_that.filteredRecords,_that.selectedRecordPath,_that.currentXml,_that.listSearchQuery,_that.fullTextSearchQuery,_that.viewMode,_that.searchResults,_that.isSearching,_that.isLoadingXml,_that.isExporting,_that.needSelectFile);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List allRecords, List filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile) $default,) {final _that = this; +switch (_that) { +case _DcbViewerState(): +return $default(_that.isLoading,_that.message,_that.errorMessage,_that.dcbFilePath,_that.sourceType,_that.allRecords,_that.filteredRecords,_that.selectedRecordPath,_that.currentXml,_that.listSearchQuery,_that.fullTextSearchQuery,_that.viewMode,_that.searchResults,_that.isSearching,_that.isLoadingXml,_that.isExporting,_that.needSelectFile);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List allRecords, List filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile)? $default,) {final _that = this; +switch (_that) { +case _DcbViewerState() when $default != null: +return $default(_that.isLoading,_that.message,_that.errorMessage,_that.dcbFilePath,_that.sourceType,_that.allRecords,_that.filteredRecords,_that.selectedRecordPath,_that.currentXml,_that.listSearchQuery,_that.fullTextSearchQuery,_that.viewMode,_that.searchResults,_that.isSearching,_that.isLoadingXml,_that.isExporting,_that.needSelectFile);case _: + return null; + +} +} + +} + +/// @nodoc + + +class _DcbViewerState implements DcbViewerState { + const _DcbViewerState({this.isLoading = true, this.message = '', this.errorMessage, this.dcbFilePath = '', this.sourceType = DcbSourceType.none, final List allRecords = const [], final List filteredRecords = const [], this.selectedRecordPath, this.currentXml = '', this.listSearchQuery = '', this.fullTextSearchQuery = '', this.viewMode = DcbViewMode.browse, final List searchResults = const [], this.isSearching = false, this.isLoadingXml = false, this.isExporting = false, this.needSelectFile = false}): _allRecords = allRecords,_filteredRecords = filteredRecords,_searchResults = searchResults; + + +/// 是否正在加载 +@override@JsonKey() final bool isLoading; +/// 加载/错误消息 +@override@JsonKey() final String message; +/// 错误消息 +@override final String? errorMessage; +/// DCB 文件路径(用于显示标题) +@override@JsonKey() final String dcbFilePath; +/// 数据源类型 +@override@JsonKey() final DcbSourceType sourceType; +/// 所有记录列表 + final List _allRecords; +/// 所有记录列表 +@override@JsonKey() List get allRecords { + if (_allRecords is EqualUnmodifiableListView) return _allRecords; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_allRecords); +} + +/// 当前过滤后的记录列表(用于列表搜索) + final List _filteredRecords; +/// 当前过滤后的记录列表(用于列表搜索) +@override@JsonKey() List get filteredRecords { + if (_filteredRecords is EqualUnmodifiableListView) return _filteredRecords; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_filteredRecords); +} + +/// 当前选中的记录路径 +@override final String? selectedRecordPath; +/// 当前显示的 XML 内容 +@override@JsonKey() final String currentXml; +/// 列表搜索查询 +@override@JsonKey() final String listSearchQuery; +/// 全文搜索查询 +@override@JsonKey() final String fullTextSearchQuery; +/// 当前视图模式 +@override@JsonKey() final DcbViewMode viewMode; +/// 全文搜索结果 + final List _searchResults; +/// 全文搜索结果 +@override@JsonKey() List get searchResults { + if (_searchResults is EqualUnmodifiableListView) return _searchResults; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_searchResults); +} + +/// 是否正在搜索 +@override@JsonKey() final bool isSearching; +/// 是否正在加载 XML +@override@JsonKey() final bool isLoadingXml; +/// 是否正在导出 +@override@JsonKey() final bool isExporting; +/// 是否需要选择文件 +@override@JsonKey() final bool needSelectFile; + +/// Create a copy of DcbViewerState +/// with the given fields replaced by the non-null parameter values. +@override @JsonKey(includeFromJson: false, includeToJson: false) +@pragma('vm:prefer-inline') +_$DcbViewerStateCopyWith<_DcbViewerState> get copyWith => __$DcbViewerStateCopyWithImpl<_DcbViewerState>(this, _$identity); + + + +@override +bool operator ==(Object other) { + return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbViewerState&&(identical(other.isLoading, isLoading) || other.isLoading == isLoading)&&(identical(other.message, message) || other.message == message)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.dcbFilePath, dcbFilePath) || other.dcbFilePath == dcbFilePath)&&(identical(other.sourceType, sourceType) || other.sourceType == sourceType)&&const DeepCollectionEquality().equals(other._allRecords, _allRecords)&&const DeepCollectionEquality().equals(other._filteredRecords, _filteredRecords)&&(identical(other.selectedRecordPath, selectedRecordPath) || other.selectedRecordPath == selectedRecordPath)&&(identical(other.currentXml, currentXml) || other.currentXml == currentXml)&&(identical(other.listSearchQuery, listSearchQuery) || other.listSearchQuery == listSearchQuery)&&(identical(other.fullTextSearchQuery, fullTextSearchQuery) || other.fullTextSearchQuery == fullTextSearchQuery)&&(identical(other.viewMode, viewMode) || other.viewMode == viewMode)&&const DeepCollectionEquality().equals(other._searchResults, _searchResults)&&(identical(other.isSearching, isSearching) || other.isSearching == isSearching)&&(identical(other.isLoadingXml, isLoadingXml) || other.isLoadingXml == isLoadingXml)&&(identical(other.isExporting, isExporting) || other.isExporting == isExporting)&&(identical(other.needSelectFile, needSelectFile) || other.needSelectFile == needSelectFile)); +} + + +@override +int get hashCode => Object.hash(runtimeType,isLoading,message,errorMessage,dcbFilePath,sourceType,const DeepCollectionEquality().hash(_allRecords),const DeepCollectionEquality().hash(_filteredRecords),selectedRecordPath,currentXml,listSearchQuery,fullTextSearchQuery,viewMode,const DeepCollectionEquality().hash(_searchResults),isSearching,isLoadingXml,isExporting,needSelectFile); + +@override +String toString() { + return 'DcbViewerState(isLoading: $isLoading, message: $message, errorMessage: $errorMessage, dcbFilePath: $dcbFilePath, sourceType: $sourceType, allRecords: $allRecords, filteredRecords: $filteredRecords, selectedRecordPath: $selectedRecordPath, currentXml: $currentXml, listSearchQuery: $listSearchQuery, fullTextSearchQuery: $fullTextSearchQuery, viewMode: $viewMode, searchResults: $searchResults, isSearching: $isSearching, isLoadingXml: $isLoadingXml, isExporting: $isExporting, needSelectFile: $needSelectFile)'; +} + + +} + +/// @nodoc +abstract mixin class _$DcbViewerStateCopyWith<$Res> implements $DcbViewerStateCopyWith<$Res> { + factory _$DcbViewerStateCopyWith(_DcbViewerState value, $Res Function(_DcbViewerState) _then) = __$DcbViewerStateCopyWithImpl; +@override @useResult +$Res call({ + bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List allRecords, List filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile +}); + + + + +} +/// @nodoc +class __$DcbViewerStateCopyWithImpl<$Res> + implements _$DcbViewerStateCopyWith<$Res> { + __$DcbViewerStateCopyWithImpl(this._self, this._then); + + final _DcbViewerState _self; + final $Res Function(_DcbViewerState) _then; + +/// Create a copy of DcbViewerState +/// with the given fields replaced by the non-null parameter values. +@override @pragma('vm:prefer-inline') $Res call({Object? isLoading = null,Object? message = null,Object? errorMessage = freezed,Object? dcbFilePath = null,Object? sourceType = null,Object? allRecords = null,Object? filteredRecords = null,Object? selectedRecordPath = freezed,Object? currentXml = null,Object? listSearchQuery = null,Object? fullTextSearchQuery = null,Object? viewMode = null,Object? searchResults = null,Object? isSearching = null,Object? isLoadingXml = null,Object? isExporting = null,Object? needSelectFile = null,}) { + return _then(_DcbViewerState( +isLoading: null == isLoading ? _self.isLoading : isLoading // ignore: cast_nullable_to_non_nullable +as bool,message: null == message ? _self.message : message // ignore: cast_nullable_to_non_nullable +as String,errorMessage: freezed == errorMessage ? _self.errorMessage : errorMessage // ignore: cast_nullable_to_non_nullable +as String?,dcbFilePath: null == dcbFilePath ? _self.dcbFilePath : dcbFilePath // ignore: cast_nullable_to_non_nullable +as String,sourceType: null == sourceType ? _self.sourceType : sourceType // ignore: cast_nullable_to_non_nullable +as DcbSourceType,allRecords: null == allRecords ? _self._allRecords : allRecords // ignore: cast_nullable_to_non_nullable +as List,filteredRecords: null == filteredRecords ? _self._filteredRecords : filteredRecords // ignore: cast_nullable_to_non_nullable +as List,selectedRecordPath: freezed == selectedRecordPath ? _self.selectedRecordPath : selectedRecordPath // ignore: cast_nullable_to_non_nullable +as String?,currentXml: null == currentXml ? _self.currentXml : currentXml // ignore: cast_nullable_to_non_nullable +as String,listSearchQuery: null == listSearchQuery ? _self.listSearchQuery : listSearchQuery // ignore: cast_nullable_to_non_nullable +as String,fullTextSearchQuery: null == fullTextSearchQuery ? _self.fullTextSearchQuery : fullTextSearchQuery // ignore: cast_nullable_to_non_nullable +as String,viewMode: null == viewMode ? _self.viewMode : viewMode // ignore: cast_nullable_to_non_nullable +as DcbViewMode,searchResults: null == searchResults ? _self._searchResults : searchResults // ignore: cast_nullable_to_non_nullable +as List,isSearching: null == isSearching ? _self.isSearching : isSearching // ignore: cast_nullable_to_non_nullable +as bool,isLoadingXml: null == isLoadingXml ? _self.isLoadingXml : isLoadingXml // ignore: cast_nullable_to_non_nullable +as bool,isExporting: null == isExporting ? _self.isExporting : isExporting // ignore: cast_nullable_to_non_nullable +as bool,needSelectFile: null == needSelectFile ? _self.needSelectFile : needSelectFile // ignore: cast_nullable_to_non_nullable +as bool, + )); +} + + +} + +// dart format on diff --git a/lib/provider/dcb_viewer.g.dart b/lib/provider/dcb_viewer.g.dart new file mode 100644 index 0000000..02b8eea --- /dev/null +++ b/lib/provider/dcb_viewer.g.dart @@ -0,0 +1,63 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'dcb_viewer.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(DcbViewerModel) +const dcbViewerModelProvider = DcbViewerModelProvider._(); + +final class DcbViewerModelProvider + extends $NotifierProvider { + const DcbViewerModelProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'dcbViewerModelProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$dcbViewerModelHash(); + + @$internal + @override + DcbViewerModel create() => DcbViewerModel(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(DcbViewerState value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + +String _$dcbViewerModelHash() => r'94c3542282f64917efadbe14a0ee4967220bec77'; + +abstract class _$DcbViewerModel extends $Notifier { + DcbViewerState build(); + @$mustCallSuper + @override + void runBuild() { + final created = build(); + final ref = this.ref as $Ref; + final element = + ref.element + as $ClassProviderElement< + AnyNotifier, + DcbViewerState, + Object?, + Object? + >; + element.handleValue(ref, created); + } +} diff --git a/lib/provider/unp4kc.dart b/lib/provider/unp4kc.dart index 1907a80..87cecdc 100644 --- a/lib/provider/unp4kc.dart +++ b/lib/provider/unp4kc.dart @@ -1,8 +1,11 @@ +// ignore_for_file: avoid_build_context_in_providers import 'dart:io'; import 'package:file/memory.dart'; +import 'package:fluent_ui/fluent_ui.dart'; import 'package:flutter/foundation.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:go_router/go_router.dart'; import 'package:path_provider/path_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:starcitizen_doctor/api/analytics.dart'; @@ -378,17 +381,18 @@ class Unp4kCModel extends _$Unp4kCModel { } } - Future openFile(String filePath) async { + Future openFile(String filePath, {BuildContext? context}) async { final tempDir = await getTemporaryDirectory(); final tempPath = "${tempDir.absolute.path}\\SCToolbox_unp4kc\\${SCLoggerHelper.getGameChannelID(getGamePath())}\\"; state = state.copyWith( tempOpenFile: const MapEntry("loading", ""), endMessage: S.current.tools_unp4k_msg_open_file(filePath), ); - await extractFile(filePath, tempPath, mode: "extract_open"); + // ignore: use_build_context_synchronously + await extractFile(filePath, tempPath, mode: "extract_open", context: context); } - Future extractFile(String filePath, String outputPath, {String mode = "extract"}) async { + Future extractFile(String filePath, String outputPath, {String mode = "extract", BuildContext? context}) async { try { // remove first \\ if (filePath.startsWith("\\")) { @@ -402,6 +406,16 @@ class Unp4kCModel extends _$Unp4kCModel { await unp4k_api.p4KExtractToDisk(filePath: filePath, outputPath: outputPath); if (mode == "extract_open") { + if (context != null && filePath.toLowerCase().endsWith(".dcb")) { + // 关闭 loading 状态 + state = state.copyWith(tempOpenFile: null, endMessage: S.current.tools_unp4k_msg_open_file(filePath)); + // 跳转至 DCBViewer + if (context.mounted) { + context.push("/tools/dcb_viewer", extra: {"path": fullOutputPath}); + } + + return; + } const textExt = [".txt", ".xml", ".json", ".lua", ".cfg", ".ini", ".mtl"]; const imgExt = [".png"]; String openType = "unknown"; diff --git a/lib/provider/unp4kc.freezed.dart b/lib/provider/unp4kc.freezed.dart index cc01f62..93e1fdb 100644 --- a/lib/provider/unp4kc.freezed.dart +++ b/lib/provider/unp4kc.freezed.dart @@ -12,7 +12,7 @@ part of 'unp4kc.dart'; // dart format off T _$identity(T value) => value; /// @nodoc -mixin _$Unp4kcState implements DiagnosticableTreeMixin { +mixin _$Unp4kcState { bool get startUp; Map? get files; MemoryFileSystem? get fs; String get curPath; String? get endMessage; MapEntry? get tempOpenFile; String get errorMessage; String get searchQuery; bool get isSearching;/// 搜索结果的虚拟文件系统(支持分级展示) MemoryFileSystem? get searchFs;/// 搜索匹配的文件路径集合 @@ -26,12 +26,6 @@ mixin _$Unp4kcState implements DiagnosticableTreeMixin { $Unp4kcStateCopyWith get copyWith => _$Unp4kcStateCopyWithImpl(this as Unp4kcState, _$identity); -@override -void debugFillProperties(DiagnosticPropertiesBuilder properties) { - properties - ..add(DiagnosticsProperty('type', 'Unp4kcState')) - ..add(DiagnosticsProperty('startUp', startUp))..add(DiagnosticsProperty('files', files))..add(DiagnosticsProperty('fs', fs))..add(DiagnosticsProperty('curPath', curPath))..add(DiagnosticsProperty('endMessage', endMessage))..add(DiagnosticsProperty('tempOpenFile', tempOpenFile))..add(DiagnosticsProperty('errorMessage', errorMessage))..add(DiagnosticsProperty('searchQuery', searchQuery))..add(DiagnosticsProperty('isSearching', isSearching))..add(DiagnosticsProperty('searchFs', searchFs))..add(DiagnosticsProperty('searchMatchedFiles', searchMatchedFiles))..add(DiagnosticsProperty('sortType', sortType))..add(DiagnosticsProperty('isMultiSelectMode', isMultiSelectMode))..add(DiagnosticsProperty('selectedItems', selectedItems)); -} @override bool operator ==(Object other) { @@ -43,7 +37,7 @@ bool operator ==(Object other) { int get hashCode => Object.hash(runtimeType,startUp,const DeepCollectionEquality().hash(files),fs,curPath,endMessage,tempOpenFile,errorMessage,searchQuery,isSearching,searchFs,const DeepCollectionEquality().hash(searchMatchedFiles),sortType,isMultiSelectMode,const DeepCollectionEquality().hash(selectedItems)); @override -String toString({ DiagnosticLevel minLevel = DiagnosticLevel.info }) { +String toString() { return 'Unp4kcState(startUp: $startUp, files: $files, fs: $fs, curPath: $curPath, endMessage: $endMessage, tempOpenFile: $tempOpenFile, errorMessage: $errorMessage, searchQuery: $searchQuery, isSearching: $isSearching, searchFs: $searchFs, searchMatchedFiles: $searchMatchedFiles, sortType: $sortType, isMultiSelectMode: $isMultiSelectMode, selectedItems: $selectedItems)'; } @@ -228,7 +222,7 @@ return $default(_that.startUp,_that.files,_that.fs,_that.curPath,_that.endMessag /// @nodoc -class _Unp4kcState with DiagnosticableTreeMixin implements Unp4kcState { +class _Unp4kcState implements Unp4kcState { const _Unp4kcState({required this.startUp, final Map? files, this.fs, required this.curPath, this.endMessage, this.tempOpenFile, this.errorMessage = "", this.searchQuery = "", this.isSearching = false, this.searchFs, final Set? searchMatchedFiles, this.sortType = Unp4kSortType.defaultSort, this.isMultiSelectMode = false, final Set selectedItems = const {}}): _files = files,_searchMatchedFiles = searchMatchedFiles,_selectedItems = selectedItems; @@ -282,12 +276,6 @@ class _Unp4kcState with DiagnosticableTreeMixin implements Unp4kcState { _$Unp4kcStateCopyWith<_Unp4kcState> get copyWith => __$Unp4kcStateCopyWithImpl<_Unp4kcState>(this, _$identity); -@override -void debugFillProperties(DiagnosticPropertiesBuilder properties) { - properties - ..add(DiagnosticsProperty('type', 'Unp4kcState')) - ..add(DiagnosticsProperty('startUp', startUp))..add(DiagnosticsProperty('files', files))..add(DiagnosticsProperty('fs', fs))..add(DiagnosticsProperty('curPath', curPath))..add(DiagnosticsProperty('endMessage', endMessage))..add(DiagnosticsProperty('tempOpenFile', tempOpenFile))..add(DiagnosticsProperty('errorMessage', errorMessage))..add(DiagnosticsProperty('searchQuery', searchQuery))..add(DiagnosticsProperty('isSearching', isSearching))..add(DiagnosticsProperty('searchFs', searchFs))..add(DiagnosticsProperty('searchMatchedFiles', searchMatchedFiles))..add(DiagnosticsProperty('sortType', sortType))..add(DiagnosticsProperty('isMultiSelectMode', isMultiSelectMode))..add(DiagnosticsProperty('selectedItems', selectedItems)); -} @override bool operator ==(Object other) { @@ -299,7 +287,7 @@ bool operator ==(Object other) { int get hashCode => Object.hash(runtimeType,startUp,const DeepCollectionEquality().hash(_files),fs,curPath,endMessage,tempOpenFile,errorMessage,searchQuery,isSearching,searchFs,const DeepCollectionEquality().hash(_searchMatchedFiles),sortType,isMultiSelectMode,const DeepCollectionEquality().hash(_selectedItems)); @override -String toString({ DiagnosticLevel minLevel = DiagnosticLevel.info }) { +String toString() { return 'Unp4kcState(startUp: $startUp, files: $files, fs: $fs, curPath: $curPath, endMessage: $endMessage, tempOpenFile: $tempOpenFile, errorMessage: $errorMessage, searchQuery: $searchQuery, isSearching: $isSearching, searchFs: $searchFs, searchMatchedFiles: $searchMatchedFiles, sortType: $sortType, isMultiSelectMode: $isMultiSelectMode, selectedItems: $selectedItems)'; } diff --git a/lib/provider/unp4kc.g.dart b/lib/provider/unp4kc.g.dart index 5f6c40e..0661822 100644 --- a/lib/provider/unp4kc.g.dart +++ b/lib/provider/unp4kc.g.dart @@ -41,7 +41,7 @@ final class Unp4kCModelProvider } } -String _$unp4kCModelHash() => r'72ee23ad9864cdfb73a588ea1a0509b083e7dee8'; +String _$unp4kCModelHash() => r'68c24d50113e9e734ae8d277f65999bbef05dc05'; abstract class _$Unp4kCModel extends $Notifier { Unp4kcState build(); diff --git a/lib/ui/tools/tools_ui_model.dart b/lib/ui/tools/tools_ui_model.dart index c1fa3c6..ba6b039 100644 --- a/lib/ui/tools/tools_ui_model.dart +++ b/lib/ui/tools/tools_ui_model.dart @@ -124,6 +124,13 @@ class ToolsUIModel extends _$ToolsUIModel { const Icon(FontAwesomeIcons.fileZipper, size: 24), onTap: () => _unp4kc(context), ), + ToolsItemData( + "dcb_viewer", + S.current.tools_action_dcb_viewer, + S.current.tools_action_dcb_viewer_info, + const Icon(FluentIcons.database, size: 24), + onTap: () => _dcbViewer(context), + ), ]); state = state.copyWith(items: items); @@ -702,6 +709,10 @@ class ToolsUIModel extends _$ToolsUIModel { context.push("/tools/unp4kc"); } + Future _dcbViewer(BuildContext context) async { + context.push("/tools/dcb_viewer"); + } + static Future rsiEnhance(BuildContext context, {bool showNotGameInstallMsg = false}) async { if ((await SystemHelper.getPID("RSI Launcher")).isNotEmpty) { if (!context.mounted) return; diff --git a/lib/ui/tools/tools_ui_model.g.dart b/lib/ui/tools/tools_ui_model.g.dart index 3de238c..74accce 100644 --- a/lib/ui/tools/tools_ui_model.g.dart +++ b/lib/ui/tools/tools_ui_model.g.dart @@ -41,7 +41,7 @@ final class ToolsUIModelProvider } } -String _$toolsUIModelHash() => r'17890d6d16d8e9d98c42d06d9e6c6165965bcee0'; +String _$toolsUIModelHash() => r'b0fefd36bd8f1e23fdd6123d487f73d78e40ad06'; abstract class _$ToolsUIModel extends $Notifier { ToolsUIState build(); diff --git a/lib/ui/tools/unp4kc/dcb_viewer_ui.dart b/lib/ui/tools/unp4kc/dcb_viewer_ui.dart new file mode 100644 index 0000000..49e3382 --- /dev/null +++ b/lib/ui/tools/unp4kc/dcb_viewer_ui.dart @@ -0,0 +1,1124 @@ +import 'package:file_picker/file_picker.dart'; +import 'package:fluent_ui/fluent_ui.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:re_editor/re_editor.dart'; +import 'package:re_highlight/languages/xml.dart'; +import 'package:re_highlight/styles/vs2015.dart'; +import 'package:starcitizen_doctor/data/dcb_data.dart'; +import 'package:starcitizen_doctor/provider/dcb_viewer.dart'; +import 'package:starcitizen_doctor/widgets/widgets.dart'; +import 'package:super_sliver_list/super_sliver_list.dart'; + +/// XML 代码折叠分析器 +/// 分析 XML 标签的开始和结束,用于代码折叠功能 +class XmlCodeChunkAnalyzer implements CodeChunkAnalyzer { + const XmlCodeChunkAnalyzer(); + + @override + List run(CodeLines codeLines) { + final List chunks = []; + final List<_XmlTagInfo> tagStack = []; + + for (int i = 0; i < codeLines.length; i++) { + final String line = codeLines[i].text; + _processLine(line, i, tagStack, chunks); + } + + return chunks; + } + + void _processLine(String line, int lineIndex, List<_XmlTagInfo> tagStack, List chunks) { + final trimmedLine = line.trim(); + + // 跳过空行、注释和 XML 声明 + if (trimmedLine.isEmpty || + trimmedLine.startsWith('