TetraStats/lib/gen/strings.g.dart

4150 lines
220 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/// Generated file. Do not edit.
///
/// Original: res/i18n
/// To regenerate, run: `dart run slang`
///
/// Locales: 3
/// Strings: 1818 (606 per locale)
///
/// Built on 2024-09-12 at 20:23 UTC
// coverage:ignore-file
// ignore_for_file: type=lint
import 'package:flutter/widgets.dart';
import 'package:slang/builder/model/node.dart';
import 'package:slang_flutter/slang_flutter.dart';
export 'package:slang_flutter/slang_flutter.dart';
const AppLocale _baseLocale = AppLocale.en;
/// Supported locales, see extension methods below.
///
/// Usage:
/// - LocaleSettings.setLocale(AppLocale.en) // set locale
/// - Locale locale = AppLocale.en.flutterLocale // get flutter locale from enum
/// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check
enum AppLocale with BaseAppLocale<AppLocale, Translations> {
en(languageCode: 'en', build: Translations.build),
ru(languageCode: 'ru', build: _StringsRu.build),
zhCn(languageCode: 'zh', countryCode: 'CN', build: _StringsZhCn.build);
const AppLocale({required this.languageCode, this.scriptCode, this.countryCode, required this.build}); // ignore: unused_element
@override final String languageCode;
@override final String? scriptCode;
@override final String? countryCode;
@override final TranslationBuilder<AppLocale, Translations> build;
/// Gets current instance managed by [LocaleSettings].
Translations get translations => LocaleSettings.instance.translationMap[this]!;
}
/// Method A: Simple
///
/// No rebuild after locale change.
/// Translation happens during initialization of the widget (call of t).
/// Configurable via 'translate_var'.
///
/// Usage:
/// String a = t.someKey.anotherKey;
/// String b = t['someKey.anotherKey']; // Only for edge cases!
Translations get t => LocaleSettings.instance.currentTranslations;
/// Method B: Advanced
///
/// All widgets using this method will trigger a rebuild when locale changes.
/// Use this if you have e.g. a settings page where the user can select the locale during runtime.
///
/// Step 1:
/// wrap your App with
/// TranslationProvider(
/// child: MyApp()
/// );
///
/// Step 2:
/// final t = Translations.of(context); // Get t variable.
/// String a = t.someKey.anotherKey; // Use t variable.
/// String b = t['someKey.anotherKey']; // Only for edge cases!
class TranslationProvider extends BaseTranslationProvider<AppLocale, Translations> {
TranslationProvider({required super.child}) : super(settings: LocaleSettings.instance);
static InheritedLocaleData<AppLocale, Translations> of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(context);
}
/// Method B shorthand via [BuildContext] extension method.
/// Configurable via 'translate_var'.
///
/// Usage (e.g. in a widget's build method):
/// context.t.someKey.anotherKey
extension BuildContextTranslationsExtension on BuildContext {
Translations get t => TranslationProvider.of(this).translations;
}
/// Manages all translation instances and the current locale
class LocaleSettings extends BaseFlutterLocaleSettings<AppLocale, Translations> {
LocaleSettings._() : super(utils: AppLocaleUtils.instance);
static final instance = LocaleSettings._();
// static aliases (checkout base methods for documentation)
static AppLocale get currentLocale => instance.currentLocale;
static Stream<AppLocale> getLocaleStream() => instance.getLocaleStream();
static AppLocale setLocale(AppLocale locale, {bool? listenToDeviceLocale = false}) => instance.setLocale(locale, listenToDeviceLocale: listenToDeviceLocale);
static AppLocale setLocaleRaw(String rawLocale, {bool? listenToDeviceLocale = false}) => instance.setLocaleRaw(rawLocale, listenToDeviceLocale: listenToDeviceLocale);
static AppLocale useDeviceLocale() => instance.useDeviceLocale();
@Deprecated('Use [AppLocaleUtils.supportedLocales]') static List<Locale> get supportedLocales => instance.supportedLocales;
@Deprecated('Use [AppLocaleUtils.supportedLocalesRaw]') static List<String> get supportedLocalesRaw => instance.supportedLocalesRaw;
static void setPluralResolver({String? language, AppLocale? locale, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) => instance.setPluralResolver(
language: language,
locale: locale,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
}
/// Provides utility functions without any side effects.
class AppLocaleUtils extends BaseAppLocaleUtils<AppLocale, Translations> {
AppLocaleUtils._() : super(baseLocale: _baseLocale, locales: AppLocale.values);
static final instance = AppLocaleUtils._();
// static aliases (checkout base methods for documentation)
static AppLocale parse(String rawLocale) => instance.parse(rawLocale);
static AppLocale parseLocaleParts({required String languageCode, String? scriptCode, String? countryCode}) => instance.parseLocaleParts(languageCode: languageCode, scriptCode: scriptCode, countryCode: countryCode);
static AppLocale findDeviceLocale() => instance.findDeviceLocale();
static List<Locale> get supportedLocales => instance.supportedLocales;
static List<String> get supportedLocalesRaw => instance.supportedLocalesRaw;
}
// translations
// Path: <root>
class Translations implements BaseTranslations<AppLocale, Translations> {
/// Returns the current translations of the given [context].
///
/// Usage:
/// final t = Translations.of(context);
static Translations of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(context).translations;
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
Translations.build({Map<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = TranslationMetadata(
locale: AppLocale.en,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <en>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
dynamic operator[](String key) => $meta.getTranslation(key);
late final Translations _root = this; // ignore: unused_field
// Translations
Map<String, String> get locales => {
'en': 'English',
'ru': 'Russian (Русский)',
'zh-CN': 'Simplified Chinese (简体中文)',
};
String get tetraLeague => 'Tetra League';
String get tlRecords => 'TL Records';
String get history => 'History';
String get sprint => '40 Lines';
String get blitz => 'Blitz';
String get recent => 'Recent';
String get recentRuns => 'Recent runs';
String blitzScore({required Object p}) => '${p} points';
String get openSPreplay => 'Open replay in TETR.IO';
String get downloadSPreplay => 'Download replay';
String get other => 'Other';
String get distinguishment => 'Distinguishment';
String get zen => 'Zen';
String get bio => 'Bio';
String get news => 'News';
late final _StringsNewsPartsEn newsParts = _StringsNewsPartsEn._(_root);
String get openSearch => 'Search player';
String get closeSearch => 'Close search';
String get searchHint => 'Nickname, ID or Discord userID (with "ds:" prefix)';
String get refresh => 'Refresh';
String get fetchAndsaveTLHistory => 'Get player history';
String get fetchAndSaveOldTLmatches => 'Get Tetra League matches history';
String fetchAndsaveTLHistoryResult({required Object number}) => '${number} states was found';
String fetchAndSaveOldTLmatchesResult({required Object number}) => '${number} matches was found';
String get showStoredData => 'Show stored data';
String get statsCalc => 'Stats Calculator';
String get settings => 'Settings';
String get track => 'Track';
String get stopTracking => 'Stop\ntracking';
String get becameTracked => 'Added to tracking list!';
String get compare => 'Compare';
String get stoppedBeingTracked => 'Removed from tracking list!';
String get tlLeaderboard => 'Tetra League leaderboard';
String get noRecords => 'No records';
String noOldRecords({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: 'No records',
one: 'Only ${n} record',
two: 'Only ${n} records',
few: 'Only ${n} records',
many: 'Only ${n} records',
other: 'Only ${n} records',
);
String get noRecord => 'No record';
String get botRecord => 'Bots are not allowed to set records';
String get anonRecord => 'Guests are not allowed to set records';
String get notEnoughData => 'Not enough data';
String get noHistorySaved => 'No history saved';
String get pseudoTooltipHeaderInit => 'Hover over point';
String get pseudoTooltipFooterInit => 'to see detailed data';
String obtainDate({required Object date}) => 'Obtained ${date}';
String fetchDate({required Object date}) => 'Fetched ${date}';
String get exactGametime => 'Exact gametime';
String get bigRedBanned => 'BANNED';
String get normalBanned => 'Banned';
String get bigRedBadStanding => 'BAD STANDING';
String get copiedToClipboard => 'Copied to clipboard!';
String get playerRoleAccount => ' account ';
String get wasFromBeginning => 'that was from very beginning';
String get created => 'created';
String get botCreatedBy => 'by';
String get notSupporter => 'Not a supporter';
String get assignedManualy => 'That badge was assigned manualy by TETR.IO admins';
String supporter({required Object tier}) => 'Supporter tier ${tier}';
String comparingWith({required Object newDate, required Object oldDate}) => 'Data from ${newDate} comparing with ${oldDate}';
String get top => 'Top';
String get topRank => 'Top rank';
String verdictGeneral({required Object n, required Object verdict, required Object rank}) => '${n} ${verdict} than ${rank} rank average';
String get verdictBetter => 'better';
String get verdictWorse => 'worse';
String get smooth => 'Smooth';
String get postSeason => 'Off-season';
String get seasonStarts => 'Season starts in:';
String get nanow => 'Not avaliable for now...';
String seasonEnds({required Object countdown}) => 'Season ends in ${countdown}';
String get seasonEnded => 'Season has ended';
String gamesUntilRanked({required Object left}) => '${left} games until being ranked';
String numOfVictories({required Object wins}) => '~${wins} victories';
String get promotionOnNextWin => 'Promotion on next win';
String numOfdefeats({required Object losses}) => '~${losses} defeats';
String get demotionOnNextLoss => 'Demotion on next loss';
String get nerdStats => 'Nerd Stats';
String get playersYouTrack => 'Players you track';
String get formula => 'Formula';
String get exactValue => 'Exact value';
String get neverPlayedTL => 'That user never played Tetra League';
String get botTL => 'Bots are not allowed to play Tetra League';
String get anonTL => 'Guests are not allowed to play Tetra League';
String get quickPlay => 'Quick Play';
String get expert => 'Expert';
String get withMods => 'With mods';
String withModsPlural({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: 'with ${n} mods',
one: 'with ${n} mod',
two: 'with ${n} mods',
few: 'with ${n} mods',
many: 'with ${n} mods',
other: 'with ${n} mods',
);
String get exportDB => 'Export local database';
String get exportDBDescription => 'It contains states and Tetra League records of the tracked players and list of tracked players.';
String get desktopExportAlertTitle => 'Desktop export';
String get desktopExportText => 'It seems like you using this app on desktop. Check your documents folder, you should find "TetraStats.db". Copy it somewhere';
String get androidExportAlertTitle => 'Android export';
String androidExportText({required Object exportedDB}) => 'Exported.\n${exportedDB}';
String get importDB => 'Import local database';
String get importDBDescription => 'Restore your backup. Notice that already stored database will be overwritten.';
String get importWrongFileType => 'Wrong file type';
String get importCancelled => 'Operation was cancelled';
String get importSuccess => 'Import successful';
String get yourID => 'Your TETR.IO account';
String get yourIDAlertTitle => 'Your nickname in TETR.IO';
String get yourIDText => 'When app loads, it will retrieve data for this account';
String get language => 'Language';
String get updateInBackground => 'Update stats in the background';
String get updateInBackgroundDescription => 'While Tetra Stats is running, it can update stats of the current player when cache expires';
String get customization => 'Customization';
String get customizationDescription => 'Change appearance of different things in Tetra Stats UI';
String get oskKagari => 'Osk Kagari gimmick';
String get oskKagariDescription => 'If on, osk\'s rank on main view will be rendered as :kagari:';
String get AccentColor => 'Accent color';
String get AccentColorDescription => 'Almost all interactive UI elements highlighted with this color';
String get timestamps => 'Timestamps';
String get timestampsDescription => 'You can choose, in which way timestamps shows time';
String get timestampsAbsoluteGMT => 'Absolute (GMT)';
String get timestampsAbsoluteLocalTime => 'Absolute (Your timezone)';
String get timestampsRelative => 'Relative';
String get rating => 'Main representation of rating';
String get ratingDescription => 'TR is not linear, while Glicko does not have boundaries and percentile is volatile';
String get ratingLBposition => 'LB position';
String get sheetbotGraphs => 'Sheetbot-like behavior for radar graphs';
String get sheetbotGraphsDescription => 'If on, points on the graphs can appear on the opposite half of the graph if value is negative';
String get lbStats => 'Show leaderboard based stats';
String get lbStatsDescription => 'That will impact on loading times, but will allow you to see position on LB by stats and comparison with average values';
String get aboutApp => 'About app';
String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r\nTETR.IO replay grabber API by szy';
String stateViewTitle({required Object nickname, required Object date}) => '${nickname} account on ${date}';
String statesViewTitle({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
String matchesViewTitle({required Object nickname}) => '${nickname} TL matches';
String statesViewEntry({required Object level, required Object glicko, required Object rd, required Object games}) => '${level} TR, ${glicko}±${rd} Glicko, ${games} игр сыграно';
String stateRemoved({required Object date}) => '${date} state was removed from database!';
String matchRemoved({required Object date}) => '${date} match was removed from database!';
String get viewAllMatches => 'View all matches';
String get trackedPlayersViewTitle => 'Stored data';
String get trackedPlayersZeroEntrys => 'Empty list. Press "Track" button in previous view to add current player here';
String get trackedPlayersOneEntry => 'There is only one player';
String trackedPlayersManyEntrys({required Object numberOfPlayers}) => 'There are ${numberOfPlayers} players';
String trackedPlayersEntry({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} states';
String trackedPlayersDescription({required Object firstStateDate, required Object lastStateDate}) => 'From ${firstStateDate} until ${lastStateDate}';
String trackedPlayersStatesDeleted({required Object nickname}) => '${nickname} states was removed from database!';
String get duplicatedFix => 'Remove duplicated TL mathces';
String get compressDB => 'Compress DB';
String SpaceSaved({required Object size}) => 'Space saved: ${size}';
String averageXrank({required Object rankLetter}) => 'Average ${rankLetter} rank';
String get vs => 'vs';
String get inTLmatch => 'in TL match';
String get downloadReplay => 'Download .ttrm replay';
String get openReplay => 'Open replay in TETR.IO';
String replaySaved({required Object path}) => 'Replay saved to ${path}';
String get match => 'Match';
String get timeWeightedmatch => 'Match (time-weighted)';
String roundNumber({required Object n}) => 'Round ${n}';
String get statsFor => 'Stats for';
String get numberOfRounds => 'Number of rounds';
String get matchLength => 'Match Length';
String get roundLength => 'Round Length';
String get matchStats => 'Match stats';
String get timeWeightedmatchStats => 'Time-weighted match stats';
String get replayIssue => 'Can\'t process replay';
String get matchIsTooOld => 'Replay is not available';
String get winner => 'Winner';
String get registred => 'Registred';
String get playedTL => 'Played Tetra League';
String get winChance => 'Win Chance';
String get byGlicko => 'By Glicko';
String get byEstTR => 'By Est. TR';
String compareViewNoValues({required Object avgR}) => 'Please, enter username, user ID, APM-PPS-VS values (divider doesn\'t matter, only order matter) or ${avgR} (where R is rank) to both fields';
String compareViewWrongValue({required Object value}) => 'Falied to assign ${value}';
String get mostRecentOne => 'Most recent one';
String get yes => 'Yes';
String get no => 'No';
String get daysLater => 'days later';
String get dayseBefore => 'days before';
String get fromBeginning => 'From beginning';
String get calc => 'Calc';
String get calcViewNoValues => 'Enter values to calculate the stats';
String get rankAveragesViewTitle => 'Ranks cutoffs';
String get sprintAndBlitsViewTitle => '40 lines and Blitz averages';
String sprintAndBlitsRelevance({required Object date}) => 'Relevance: ${date}';
String get rank => 'Rank';
String get averages => 'Averages';
String get lbViewZeroEntrys => 'Empty list';
String get lbViewOneEntry => 'There is only one player';
String lbViewManyEntrys({required Object numberOfPlayers}) => 'There are ${numberOfPlayers}';
String get everyoneAverages => 'Values for leaderboard';
String get sortBy => 'Sort by';
String get reversed => 'Reversed';
String get country => 'Country';
String rankAverages({required Object rank}) => 'Values for ${rank} rank';
String players({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} players',
one: '${n} player',
two: '${n} players',
few: '${n} players',
many: '${n} players',
other: '${n} players',
);
String games({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} games',
one: '${n} game',
two: '${n} games',
few: '${n} games',
many: '${n} games',
other: '${n} games',
);
String gamesPlayed({required Object games}) => '${games} played';
String get chart => 'Chart';
String get entries => 'Entries';
String get minimums => 'Minimums';
String get maximums => 'Maximums';
String get lowestValues => 'Lowest Values';
String get averageValues => 'Average Values';
String get highestValues => 'Highest Values';
String forPlayer({required Object username}) => 'for player ${username}';
String currentAxis({required Object axis}) => '${axis} axis:';
String get p1nkl0bst3rAlert => 'That data was retrived from third party API maintained by p1nkl0bst3r';
String get notForWeb => 'Function is not available for web version';
late final _StringsGraphsEn graphs = _StringsGraphsEn._(_root);
late final _StringsStatCellNumEn statCellNum = _StringsStatCellNumEn._(_root);
Map<String, String> get playerRole => {
'user': 'User',
'banned': 'Banned',
'bot': 'Bot',
'sysop': 'System operator',
'admin': 'Admin',
'mod': 'Moderator',
'halfmod': 'Community moderator',
'anon': 'Anonymous',
};
late final _StringsNumOfGameActionsEn numOfGameActions = _StringsNumOfGameActionsEn._(_root);
late final _StringsPopupActionsEn popupActions = _StringsPopupActionsEn._(_root);
late final _StringsErrorsEn errors = _StringsErrorsEn._(_root);
Map<String, String> get countries => {
'': 'Not selected',
'AF': 'Afghanistan',
'AX': 'Åland Islands',
'AL': 'Albania',
'DZ': 'Algeria',
'AS': 'American Samoa',
'AD': 'Andorra',
'AO': 'Angola',
'AI': 'Anguilla',
'AQ': 'Antarctica',
'AG': 'Antigua and Barbuda',
'AR': 'Argentina',
'AM': 'Armenia',
'AW': 'Aruba',
'AU': 'Australia',
'AT': 'Austria',
'AZ': 'Azerbaijan',
'BS': 'Bahamas',
'BH': 'Bahrain',
'BD': 'Bangladesh',
'BB': 'Barbados',
'BY': 'Belarus',
'BE': 'Belgium',
'BZ': 'Belize',
'BJ': 'Benin',
'BM': 'Bermuda',
'BT': 'Bhutan',
'BO': 'Bolivia, Plurinational State of',
'BA': 'Bosnia and Herzegovina',
'BW': 'Botswana',
'BV': 'Bouvet Island',
'BR': 'Brazil',
'IO': 'British Indian Ocean Territory',
'BN': 'Brunei Darussalam',
'BG': 'Bulgaria',
'BF': 'Burkina Faso',
'BI': 'Burundi',
'KH': 'Cambodia',
'CM': 'Cameroon',
'CA': 'Canada',
'CV': 'Cape Verde',
'BQ': 'Caribbean Netherlands',
'KY': 'Cayman Islands',
'CF': 'Central African Republic',
'TD': 'Chad',
'CL': 'Chile',
'CN': 'China',
'CX': 'Christmas Island',
'CC': 'Cocos (Keeling) Islands',
'CO': 'Colombia',
'KM': 'Comoros',
'CG': 'Congo',
'CD': 'Congo, the Democratic Republic of the',
'CK': 'Cook Islands',
'CR': 'Costa Rica',
'CI': 'Côte d\'Ivoire',
'HR': 'Croatia',
'CU': 'Cuba',
'CW': 'Curaçao',
'CY': 'Cyprus',
'CZ': 'Czech Republic',
'DK': 'Denmark',
'DJ': 'Djibouti',
'DM': 'Dominica',
'DO': 'Dominican Republic',
'EC': 'Ecuador',
'EG': 'Egypt',
'SV': 'El Salvador',
'GB-ENG': 'England',
'GQ': 'Equatorial Guinea',
'ER': 'Eritrea',
'EE': 'Estonia',
'ET': 'Ethiopia',
'EU': 'Europe',
'FK': 'Falkland Islands (Malvinas)',
'FO': 'Faroe Islands',
'FJ': 'Fiji',
'FI': 'Finland',
'FR': 'France',
'GF': 'French Guiana',
'PF': 'French Polynesia',
'TF': 'French Southern Territories',
'GA': 'Gabon',
'GM': 'Gambia',
'GE': 'Georgia',
'DE': 'Germany',
'GH': 'Ghana',
'GI': 'Gibraltar',
'GR': 'Greece',
'GL': 'Greenland',
'GD': 'Grenada',
'GP': 'Guadeloupe',
'GU': 'Guam',
'GT': 'Guatemala',
'GG': 'Guernsey',
'GN': 'Guinea',
'GW': 'Guinea-Bissau',
'GY': 'Guyana',
'HT': 'Haiti',
'HM': 'Heard Island and McDonald Islands',
'VA': 'Holy See (Vatican City State)',
'HN': 'Honduras',
'HK': 'Hong Kong',
'HU': 'Hungary',
'IS': 'Iceland',
'IN': 'India',
'ID': 'Indonesia',
'IR': 'Iran, Islamic Republic of',
'IQ': 'Iraq',
'IE': 'Ireland',
'IM': 'Isle of Man',
'IL': 'Israel',
'IT': 'Italy',
'JM': 'Jamaica',
'JP': 'Japan',
'JE': 'Jersey',
'JO': 'Jordan',
'KZ': 'Kazakhstan',
'KE': 'Kenya',
'KI': 'Kiribati',
'KP': 'Korea, Democratic People\'s Republic of',
'KR': 'Korea, Republic of',
'XK': 'Kosovo',
'KW': 'Kuwait',
'KG': 'Kyrgyzstan',
'LA': 'Lao People\'s Democratic Republic',
'LV': 'Latvia',
'LB': 'Lebanon',
'LS': 'Lesotho',
'LR': 'Liberia',
'LY': 'Libya',
'LI': 'Liechtenstein',
'LT': 'Lithuania',
'LU': 'Luxembourg',
'MO': 'Macao',
'MK': 'Macedonia, the former Yugoslav Republic of',
'MG': 'Madagascar',
'MW': 'Malawi',
'MY': 'Malaysia',
'MV': 'Maldives',
'ML': 'Mali',
'MT': 'Malta',
'MH': 'Marshall Islands',
'MQ': 'Martinique',
'MR': 'Mauritania',
'MU': 'Mauritius',
'YT': 'Mayotte',
'MX': 'Mexico',
'FM': 'Micronesia, Federated States of',
'MD': 'Moldova, Republic of',
'MC': 'Monaco',
'ME': 'Montenegro',
'MA': 'Morocco',
'MN': 'Mongolia',
'MS': 'Montserrat',
'MZ': 'Mozambique',
'MM': 'Myanmar',
'NA': 'Namibia',
'NR': 'Nauru',
'NP': 'Nepal',
'NL': 'Netherlands',
'AN': 'Netherlands Antilles',
'NC': 'New Caledonia',
'NZ': 'New Zealand',
'NI': 'Nicaragua',
'NE': 'Niger',
'NG': 'Nigeria',
'NU': 'Niue',
'NF': 'Norfolk Island',
'GB-NIR': 'Northern Ireland',
'MP': 'Northern Mariana Islands',
'NO': 'Norway',
'OM': 'Oman',
'PK': 'Pakistan',
'PW': 'Palau',
'PS': 'Palestine',
'PA': 'Panama',
'PG': 'Papua New Guinea',
'PY': 'Paraguay',
'PE': 'Peru',
'PH': 'Philippines',
'PN': 'Pitcairn',
'PL': 'Poland',
'PT': 'Portugal',
'PR': 'Puerto Rico',
'QA': 'Qatar',
'RE': 'Réunion',
'RO': 'Romania',
'RU': 'Russian Federation',
'RW': 'Rwanda',
'BL': 'Saint Barthélemy',
'SH': 'Saint Helena, Ascension and Tristan da Cunha',
'KN': 'Saint Kitts and Nevis',
'LC': 'Saint Lucia',
'MF': 'Saint Martin',
'PM': 'Saint Pierre and Miquelon',
'VC': 'Saint Vincent and the Grenadines',
'WS': 'Samoa',
'SM': 'San Marino',
'ST': 'Sao Tome and Principe',
'SA': 'Saudi Arabia',
'GB-SCT': 'Scotland',
'SN': 'Senegal',
'RS': 'Serbia',
'SC': 'Seychelles',
'SL': 'Sierra Leone',
'SG': 'Singapore',
'SX': 'Sint Maarten (Dutch part)',
'SK': 'Slovakia',
'SI': 'Slovenia',
'SB': 'Solomon Islands',
'SO': 'Somalia',
'ZA': 'South Africa',
'GS': 'South Georgia and the South Sandwich Islands',
'SS': 'South Sudan',
'ES': 'Spain',
'LK': 'Sri Lanka',
'SD': 'Sudan',
'SR': 'Suriname',
'SJ': 'Svalbard and Jan Mayen Islands',
'SZ': 'Swaziland',
'SE': 'Sweden',
'CH': 'Switzerland',
'SY': 'Syrian Arab Republic',
'TW': 'Taiwan',
'TJ': 'Tajikistan',
'TZ': 'Tanzania, United Republic of',
'TH': 'Thailand',
'TL': 'Timor-Leste',
'TG': 'Togo',
'TK': 'Tokelau',
'TO': 'Tonga',
'TT': 'Trinidad and Tobago',
'TN': 'Tunisia',
'TR': 'Turkey',
'TM': 'Turkmenistan',
'TC': 'Turks and Caicos Islands',
'TV': 'Tuvalu',
'UG': 'Uganda',
'UA': 'Ukraine',
'AE': 'United Arab Emirates',
'GB': 'United Kingdom',
'US': 'United States',
'UY': 'Uruguay',
'UM': 'US Minor Outlying Islands',
'UZ': 'Uzbekistan',
'VU': 'Vanuatu',
'VE': 'Venezuela, Bolivarian Republic of',
'VN': 'Vietnam',
'VG': 'Virgin Islands, British',
'VI': 'Virgin Islands, U.S.',
'GB-WLS': 'Wales',
'WF': 'Wallis and Futuna Islands',
'EH': 'Western Sahara',
'YE': 'Yemen',
'ZM': 'Zambia',
'ZW': 'Zimbabwe',
'XX': 'Unknown',
'XM': 'The Moon',
};
}
// Path: newsParts
class _StringsNewsPartsEn {
_StringsNewsPartsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get leaderboardStart => 'Got ';
String get leaderboardMiddle => 'on ';
String get personalbest => 'Got a new PB in ';
String get personalbestMiddle => 'of ';
String get badgeStart => 'Obtained a ';
String get badgeEnd => 'badge';
String get rankupStart => 'Obtained ';
String rankupMiddle({required Object r}) => '${r} rank ';
String get rankupEnd => 'in Tetra League';
String get tetoSupporter => 'TETR.IO supporter';
String get supporterStart => 'Become a ';
String get supporterGiftStart => 'Received the gift of ';
String unknownNews({required Object type}) => 'Unknown news of type ${type}';
}
// Path: graphs
class _StringsGraphsEn {
_StringsGraphsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get attack => 'Attack';
String get speed => 'Speed';
String get defense => 'Defense';
String get cheese => 'Cheese';
}
// Path: statCellNum
class _StringsStatCellNumEn {
_StringsStatCellNumEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get xpLevel => 'XP Level';
String get xpProgress => 'Progress to next level';
String xpFrom0ToLevel({required Object n}) => 'Progress from 0 XP to level ${n}';
String get xpLeft => 'XP left';
String get hoursPlayed => 'Hours\nPlayed';
String get onlineGames => 'Online\nGames';
String get gamesWon => 'Games\nWon';
String get totalGames => 'Total Games Played';
String get totalWon => 'Total Games Won';
String get friends => 'Friends';
String get apm => 'Attack\nPer Minute';
String get vs => 'Versus\nScore';
String get recordLB => 'Leaderboard placement';
String get lbp => 'Leaderboard\nplacement';
String get lbpShort => '№ in LB';
String get lbpc => 'Country LB\nplacement';
String get lbpcShort => '№ in local LB';
String get gamesPlayed => 'Games\nplayed';
String get gamesWonTL => 'Games\nWon';
String get winrate => 'Winrate';
String get level => 'Level';
String get score => 'Score';
String get spp => 'Score\nPer Piece';
String get pieces => 'Pieces\nPlaced';
String get pps => 'Pieces\nPer Second';
String get finesseFaults => 'Finesse\nFaults';
String get finessePercentage => 'Finesse\nPercentage';
String get keys => 'Key\nPresses';
String get kpp => 'KP Per\nPiece';
String get kps => 'KP Per\nSecond';
String get tr => 'Tetra Rating';
String get rd => 'Rating Deviation';
String get app => 'Attack Per Piece';
String get appDescription => '(Abbreviated as APP) Main efficiency metric. Tells how many attack you producing per piece';
String get vsapmDescription => 'Basically, tells how much and how efficient you using garbage in your attacks';
String get dss => 'Downstack\nPer Second';
String get dssDescription => '(Abbreviated as DS/S) Downstack per Second measures how many garbage lines you clear in a second.';
String get dsp => 'Downstack\nPer Piece';
String get dspDescription => '(Abbreviated as DS/P) Downstack per Piece measures how many garbage lines you clear per piece.';
String get appdsp => 'APP + DS/P';
String get appdspDescription => 'Just a sum of Attack per Piece and Downstack per Piece.';
String get cheese => 'Cheese\nIndex';
String get cheeseDescription => '(Abbreviated as Cheese) Cheese Index is an approximation how much clean / cheese garbage player sends. Lower = more clean. Higher = more cheese.\nInvented by kerrmunism';
String get gbe => 'Garbage\nEfficiency';
String get gbeDescription => '(Abbreviated as Gb Eff.) Garbage Efficiency measures how well player uses their garbage. Higher = better or they use their garbage more. Lower = they mostly send their garbage back at cheese or rarely clear garbage.\nInvented by Zepheniah and Dragonboy.';
String get nyaapp => 'Weighted\nAPP';
String get nyaappDescription => '(Abbreviated as wAPP) Essentially, a measure of your ability to send cheese while still maintaining a high APP.\nInvented by Wertj.';
String get area => 'Area';
String get areaDescription => 'How much space your shape takes up on the graph, if you exclude the cheese and vs/apm sections';
String get estOfTR => 'Estimated TR';
String get estOfTRShort => 'Est. TR';
String get accOfEst => 'Accuracy';
String get accOfEstShort => 'Acc.';
}
// Path: numOfGameActions
class _StringsNumOfGameActionsEn {
_StringsNumOfGameActionsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get pc => 'All Clears';
String get hold => 'Holds';
String inputs({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} key presses',
one: '${n} key press',
two: '${n} key presses',
few: '${n} key presses',
many: '${n} key presses',
other: '${n} key presses',
);
String tspinsTotal({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} T-spins total',
one: '${n} T-spin total',
two: '${n} T-spins total',
few: '${n} T-spins total',
many: '${n} T-spins total',
other: '${n} T-spins total',
);
String lineClears({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} lines cleared',
one: '${n} line cleared',
two: '${n} lines cleared',
few: '${n} lines cleared',
many: '${n} lines cleared',
other: '${n} lines cleared',
);
}
// Path: popupActions
class _StringsPopupActionsEn {
_StringsPopupActionsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
String get cancel => 'Cancel';
String get submit => 'Submit';
String get ok => 'OK';
}
// Path: errors
class _StringsErrorsEn {
_StringsErrorsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
String connection({required Object code, required Object message}) => 'Some issue with connection: ${code} ${message}';
String get noSuchUser => 'No such user';
String get noSuchUserSub => 'Either you mistyped something, or the account no longer exists';
String get discordNotAssigned => 'No user assigned to given Discord ID';
String get discordNotAssignedSub => 'Make sure you provided valid ID';
String get history => 'History for that player is missing';
String get actionSuggestion => 'Perhaps, you want to';
String get p1nkl0bst3rTLmatches => 'No Tetra League matches was found';
String get clientException => 'No internet connection';
String get forbidden => 'Your IP address is blocked';
String forbiddenSub({required Object nickname}) => 'If you are using VPN or Proxy, turn it off. If this does not help, reach out to ${nickname}';
String get tooManyRequests => 'You have been rate limited.';
String get tooManyRequestsSub => 'Wait a few moments and try again';
String get internal => 'Something happened on the tetr.io side';
String get internalSub => 'osk, probably, already aware about it';
String get internalWebVersion => 'Something happened on the tetr.io side (or on oskware_bridge, idk honestly)';
String get internalWebVersionSub => 'If osk status page says that everything is ok, let dan63047 know about this issue';
String get oskwareBridge => 'Something happened with oskware_bridge';
String get oskwareBridgeSub => 'Let dan63047 know';
String get p1nkl0bst3rForbidden => 'Third party API blocked your IP address';
String get p1nkl0bst3rTooManyRequests => 'Too many requests to third party API. Try again later';
String get p1nkl0bst3rinternal => 'Something happened on the p1nkl0bst3r side';
String get p1nkl0bst3rinternalWebVersion => 'Something happened on the p1nkl0bst3r side (or on oskware_bridge, idk honestly)';
String get replayAlreadySaved => 'Replay already saved';
String get replayExpired => 'Replay expired and not available anymore';
String get replayRejected => 'Third party API blocked your IP address';
}
// Path: <root>
class _StringsRu implements Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
_StringsRu.build({Map<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = TranslationMetadata(
locale: AppLocale.ru,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <ru>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
@override late final _StringsRu _root = this; // ignore: unused_field
// Translations
@override Map<String, String> get locales => {
'en': 'Английский (English)',
'ru': 'Русский',
'zh-CN': 'Упрощенный Китайский (简体中文)',
};
@override String get tetraLeague => 'Тетра Лига';
@override String get tlRecords => 'Матчи ТЛ';
@override String get history => 'История';
@override String get sprint => '40 линий';
@override String get blitz => 'Блиц';
@override String get recent => 'Недавно';
@override String get recentRuns => 'Недавние';
@override String blitzScore({required Object p}) => '${p} очков';
@override String get openSPreplay => 'Открыть повтор в TETR.IO';
@override String get downloadSPreplay => 'Скачать повтор';
@override String get other => 'Другое';
@override String get distinguishment => 'Заслуга';
@override String get zen => 'Дзен';
@override String get bio => 'Биография';
@override String get news => 'Новости';
@override late final _StringsNewsPartsRu newsParts = _StringsNewsPartsRu._(_root);
@override String get openSearch => 'Искать игрока';
@override String get closeSearch => 'Закрыть поиск';
@override String get searchHint => 'Ник, ID или ID в Discord (с префиксом "ds:")';
@override String get refresh => 'Обновить';
@override String get fetchAndsaveTLHistory => 'Получить историю игрока';
@override String get fetchAndSaveOldTLmatches => 'Получить старые матчи Тетра Лиги';
@override String fetchAndsaveTLHistoryResult({required Object number}) => '${number} состояний было найдено';
@override String fetchAndSaveOldTLmatchesResult({required Object number}) => '${number} старых матчей было найдено';
@override String get showStoredData => 'Показать сохранённые данные';
@override String get statsCalc => 'Калькулятор статистики';
@override String get settings => 'Настройки';
@override String get track => 'Отслеживать';
@override String get stopTracking => 'Перестать\nотслеживать';
@override String get becameTracked => 'Добавлен в список отслеживания!';
@override String get stoppedBeingTracked => 'Удалён из списка отслеживания!';
@override String get compare => 'Сравнить';
@override String get tlLeaderboard => 'Рейтинговая таблица';
@override String get noRecords => 'Нет записей';
@override String noOldRecords({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: 'Нет записей',
one: 'Всего один матч',
two: 'Всего ${n} матча',
few: 'Всего ${n} матча',
many: 'Всего ${n} матчей',
other: '${n} матчей',
);
@override String get noRecord => 'Нет рекорда';
@override String get botRecord => 'Ботам нельзя ставить рекорды';
@override String get anonRecord => 'Гостям нельзя ставить рекорды';
@override String get notEnoughData => 'Недостаточно данных';
@override String get noHistorySaved => 'Нет сохранённой истории';
@override String get pseudoTooltipHeaderInit => 'Наведите курсор на точку';
@override String get pseudoTooltipFooterInit => 'чтобы узнать подробности';
@override String obtainDate({required Object date}) => 'Получено ${date}';
@override String fetchDate({required Object date}) => 'На момент ${date}';
@override String get exactGametime => 'Время, проведённое в игре';
@override String get bigRedBanned => 'ЗАБАНЕН';
@override String get normalBanned => 'Забанен';
@override String get bigRedBadStanding => 'ПЛОХАЯ РЕПУТАЦИЯ';
@override String get copiedToClipboard => 'Скопировано в буфер обмена!';
@override String get playerRoleAccount => ', аккаунт которого ';
@override String get wasFromBeginning => 'существовал с самого начала';
@override String get created => 'создан';
@override String get botCreatedBy => 'игроком';
@override String get notSupporter => 'Нет саппортерки';
@override String supporter({required Object tier}) => 'Саппортерка ${tier} уровня';
@override String get assignedManualy => 'Этот значок был присвоен вручную администрацией TETR.IO';
@override String comparingWith({required Object newDate, required Object oldDate}) => 'Данные от ${newDate} в сравнении с данными от ${oldDate}';
@override String get top => 'Топ';
@override String get topRank => 'Топ ранг';
@override String verdictGeneral({required Object verdict, required Object rank, required Object n}) => '${verdict} среднего ${rank} ранга на ${n}';
@override String get verdictBetter => 'Лучше';
@override String get verdictWorse => 'Хуже';
@override String get smooth => 'Гладкий';
@override String get postSeason => 'Внесезонье';
@override String get seasonStarts => 'Сезон начнётся через:';
@override String get nanow => 'Пока недоступно...';
@override String seasonEnds({required Object countdown}) => 'Сезон закончится через ${countdown}';
@override String get seasonEnded => 'Сезон закончился';
@override String gamesUntilRanked({required Object left}) => '${left} матчей до получения рейтинга';
@override String numOfVictories({required Object wins}) => '~${wins} побед';
@override String get promotionOnNextWin => 'Повышение после следующей победы';
@override String numOfdefeats({required Object losses}) => '~${losses} поражений';
@override String get demotionOnNextLoss => 'Понижение после следующего поражения';
@override String get nerdStats => 'Для задротов';
@override String get playersYouTrack => 'Отслеживаемые игроки';
@override String get formula => 'Формула';
@override String get exactValue => 'Точное значение';
@override String get neverPlayedTL => 'Этот игрок никогда не играл в Тетра Лигу';
@override String get botTL => 'Ботам нельзя играть в Тетра Лигу';
@override String get anonTL => 'Гостям нельзя играть в Тетра Лигу';
@override String get quickPlay => 'Быстрая Игра';
@override String get expert => 'Эксперт';
@override String get withMods => 'С модами';
@override String withModsPlural({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: 'с ${n} модами',
one: 'с ${n} модом',
two: 'с ${n} модами',
few: 'с ${n} модами',
many: 'с ${n} модами',
other: 'с ${n} модами',
);
@override String get exportDB => 'Экспортировать локальную базу данных';
@override String get exportDBDescription => 'Она содержит состояния аккаунтов и их матчей в Тетра Лиге для отслеживаемых игроков и список таких игроков.';
@override String get desktopExportAlertTitle => 'Экспорт на десктопе';
@override String get desktopExportText => 'Похоже, вы используете десктопную версию. Проверьте папку "Документы", там вы должны найти файл "TetraStats.db". Скопируйте его куда-нибудь';
@override String get androidExportAlertTitle => 'Экспорт на Android';
@override String androidExportText({required Object exportedDB}) => 'Экспортировано.\n${exportedDB}';
@override String get importDB => 'Импортировать локальную базу данных';
@override String get importDBDescription => 'Восстановите свою резеврную копию. Обратите внимание, что текущая база данных будет перезаписана.';
@override String get importWrongFileType => 'Неверный тип файла';
@override String get importCancelled => 'Операция была отменена';
@override String get importSuccess => 'Успешно импортировано';
@override String get yourID => 'Ваш аккаунт в TETR.IO';
@override String get yourIDAlertTitle => 'Ваш ник в TETR.IO';
@override String get yourIDText => 'При запуске приложения оно будет получать статистику этого игрока.';
@override String get language => 'Язык (Language)';
@override String get updateInBackground => 'Обновлять статистику в фоне';
@override String get updateInBackgroundDescription => 'Пока Tetra Stats работает, он может обновлять статистику самостоятельно когда кеш истекает';
@override String get customization => 'Кастомизация';
@override String get customizationDescription => 'Измените внешний вид пользовательского интерфейса Tetra Stats';
@override String get oskKagari => '"Оск Кагари" прикол';
@override String get oskKagariDescription => 'Если включено, вместо настоящего ранга оска будет рендерится :kagari:';
@override String get AccentColor => 'Цветовой акцент';
@override String get AccentColorDescription => 'Почти все интерактивные элементы пользовательского интерфейса окрашены в этот цвет';
@override String get timestamps => 'Метки времени';
@override String get timestampsDescription => 'Вы можете выбрать, каким образом метки времени показывают время';
@override String get timestampsAbsoluteGMT => 'Абсолютные (GMT)';
@override String get timestampsAbsoluteLocalTime => 'Абсолютные (Ваш часовой пояс)';
@override String get timestampsRelative => 'Относительные';
@override String get rating => 'Основное представление рейтинга';
@override String get ratingDescription => 'TR нелинеен, тогда как Glicko не имеет границ, а положение в таблице лидеров волатильно';
@override String get ratingLBposition => 'Позиция в рейтинге';
@override String get sheetbotGraphs => 'Графики-радары как у sheetBot';
@override String get sheetbotGraphsDescription => 'Если включено, точки на графике могут появляться на противоположной стороне графика если значение отрицательное';
@override String get lbStats => 'Показывать статистику, основанную на рейтинговой таблице';
@override String get lbStatsDescription => 'Это повлияет на время загрузки, но позволит видеть положение в рейтинге и сравнение со средними значениями по рангу по каждой стате';
@override String get aboutApp => 'О приложении';
@override String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r\nВозможность скачивать повторы из TETR.IO предоставляет szy';
@override String stateViewTitle({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
@override String statesViewTitle({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
@override String matchesViewTitle({required Object nickname}) => 'Матчи аккаунта ${nickname}';
@override String statesViewEntry({required Object level, required Object glicko, required Object rd, required Object games}) => '${level} TR, ${glicko}±${rd} Glicko, ${games} игр сыграно';
@override String stateRemoved({required Object date}) => 'Состояние от ${date} было удалено из локальной базы данных!';
@override String matchRemoved({required Object date}) => 'Матч от ${date} был удален из локальной базы данных!';
@override String get viewAllMatches => 'Все матчи';
@override String get trackedPlayersViewTitle => 'Сохранённые данные';
@override String get trackedPlayersZeroEntrys => 'Пустой список. Вернитесь на предыдущий экран и нажмите кнопку "Отслеживать", чтобы текущий игрок появился здесь';
@override String get trackedPlayersOneEntry => 'В списке только один игрок';
@override String trackedPlayersManyEntrys({required Object numberOfPlayers}) => 'В списке ${numberOfPlayers} игроков';
@override String trackedPlayersEntry({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} состояний';
@override String trackedPlayersDescription({required Object firstStateDate, required Object lastStateDate}) => 'Начиная с ${firstStateDate} и заканчивая ${lastStateDate}';
@override String trackedPlayersStatesDeleted({required Object nickname}) => 'Состояния аккаунта ${nickname} были удалены из локальной базы данных!';
@override String get duplicatedFix => 'Удалить дубликаты матчей в Тетра Лиге';
@override String get compressDB => 'Сжать базу данных';
@override String SpaceSaved({required Object size}) => 'Места освобождено: ${size}';
@override String averageXrank({required Object rankLetter}) => 'Средний ${rankLetter} ранг';
@override String get vs => 'против';
@override String get inTLmatch => 'в матче ТЛ';
@override String get downloadReplay => 'Скачать .ttrm повтор';
@override String get openReplay => 'Открыть повтор в TETR.IO';
@override String replaySaved({required Object path}) => 'Повтор сохранён по пути ${path}';
@override String get match => 'Матч';
@override String get timeWeightedmatch => 'Матч (взвешенная по времени)';
@override String roundNumber({required Object n}) => 'Раунд ${n}';
@override String get statsFor => 'Статистика за';
@override String get numberOfRounds => 'Количество раундов';
@override String get matchLength => 'Продолжительность матча';
@override String get roundLength => 'Продолжительность раунда';
@override String get matchStats => 'Статистика матча';
@override String get timeWeightedmatchStats => 'Взвешенная по времени cтатистика матча';
@override String get replayIssue => 'Ошибка обработки повтора';
@override String get matchIsTooOld => 'Информация о повторе недоступна';
@override String get winner => 'Победитель';
@override String get registred => 'Зарегистрирован';
@override String get playedTL => 'Играл в Тетра Лигу';
@override String get winChance => 'Шансы на победу';
@override String get byGlicko => 'По Glicko';
@override String get byEstTR => 'По расч. TR';
@override String compareViewNoValues({required Object avgR}) => 'Пожалуйста, введите никнейм, ID, APM-PPS-VS (неважно, какой разделитель, важен порядок) или ${avgR} (где R это ранг), в оба поля';
@override String compareViewWrongValue({required Object value}) => 'Не удалось получить ${value}';
@override String get mostRecentOne => 'Самый последний';
@override String get yes => 'Да';
@override String get no => 'Нет';
@override String get daysLater => 'дней позже';
@override String get dayseBefore => 'дней раньше';
@override String get fromBeginning => 'С начала';
@override String get calc => 'Считать';
@override String get calcViewNoValues => 'Введите значения, чтобы посчитать статистику';
@override String get rankAveragesViewTitle => 'Требования рангов';
@override String get sprintAndBlitsViewTitle => 'Средние результаты 40 линий и блица';
@override String sprintAndBlitsRelevance({required Object date}) => 'Актуальность: ${date}';
@override String get rank => 'Ранг';
@override String get averages => 'Средние значения';
@override String get lbViewZeroEntrys => 'Рейтинговая таблица пуста';
@override String get lbViewOneEntry => 'В рейтинговой таблице всего один игрок';
@override String lbViewManyEntrys({required Object numberOfPlayers}) => 'В рейтинговой таблице находится ${numberOfPlayers}';
@override String get everyoneAverages => 'Значения таблицы';
@override String get sortBy => 'Cортировать по';
@override String get reversed => 'Наоборот';
@override String get country => 'Страна';
@override String rankAverages({required Object rank}) => 'Значения для ${rank} ранга';
@override String players({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} игроков',
one: '${n} игрок',
two: '${n} игрока',
few: '${n} игрока',
many: '${n} игроков',
other: '${n} игроков',
);
@override String games({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} игр',
one: '${n} игра',
two: '${n} игры',
few: '${n} игры',
many: '${n} игр',
other: '${n} игр',
);
@override String gamesPlayed({required Object games}) => '${games} сыграно';
@override String get chart => 'График';
@override String get entries => 'Список';
@override String get minimums => 'Минимумы';
@override String get maximums => 'Максимумы';
@override String get lowestValues => 'Самые низкие показатели';
@override String get averageValues => 'Средние значения показателей';
@override String get highestValues => 'Самые высокие показатели';
@override String forPlayer({required Object username}) => 'для игрока ${username}';
@override String currentAxis({required Object axis}) => 'Ось ${axis}:';
@override String get p1nkl0bst3rAlert => 'Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r';
@override String get notForWeb => 'Функция недоступна для веб версии';
@override late final _StringsGraphsRu graphs = _StringsGraphsRu._(_root);
@override late final _StringsStatCellNumRu statCellNum = _StringsStatCellNumRu._(_root);
@override Map<String, String> get playerRole => {
'user': 'Пользователь',
'banned': 'Заблокированный пользователь',
'bot': 'Бот',
'sysop': 'Системный оператор',
'admin': 'Администратор',
'mod': 'Модератор',
'halfmod': 'Модератор сообщества',
'anon': 'Аноним',
};
@override late final _StringsNumOfGameActionsRu numOfGameActions = _StringsNumOfGameActionsRu._(_root);
@override late final _StringsPopupActionsRu popupActions = _StringsPopupActionsRu._(_root);
@override late final _StringsErrorsRu errors = _StringsErrorsRu._(_root);
@override Map<String, String> get countries => {
'': 'Не выбрана',
'AF': 'Афганистан',
'AX': 'Аландские острова',
'AL': 'Албания',
'DZ': 'Алжир',
'AS': 'Американское Самоа',
'AD': 'Андорра',
'AO': 'Ангола',
'AI': 'Ангилья',
'AQ': 'Антарктида',
'AG': 'Антигуа и Барбуда',
'AR': 'Аргентина',
'AM': 'Армения',
'AW': 'Аруба',
'AU': 'Австралия',
'AT': 'Австрия',
'AZ': 'Азербайджан',
'BS': 'Багамские острова',
'BH': 'Бахрейн',
'BD': 'Бангладеш',
'BB': 'Барбадос',
'BY': 'Беларусь',
'BE': 'Бельгия',
'BZ': 'Белиз',
'BJ': 'Бенин',
'BM': 'Бермуды',
'BT': 'Бутан',
'BO': 'Боливия, Многонациональное Государство',
'BA': 'Босния и Герцеговина',
'BW': 'Ботсвана',
'BV': 'Остров Буве',
'BR': 'Бразилия',
'IO': 'Британская территория в Индийском океане',
'BN': 'Бруней-Даруссалам',
'BG': 'Болгария',
'BF': 'Буркина-Фасо',
'BI': 'Бурунди',
'KH': 'Камбоджа',
'CM': 'Камерун',
'CA': 'Канада',
'CV': 'Кабо-Верде',
'BQ': 'Карибские Нидерланды',
'KY': 'Каймановы острова',
'CF': 'Центральноафриканская Республика',
'TD': 'Чад',
'CL': 'Чили',
'CN': 'Китай',
'CX': 'Остров Рождества',
'CC': 'Кокосовые острова',
'CO': 'Колумбия',
'KM': 'Коморские острова',
'CG': 'Конго',
'CD': 'Конго, Демократическая Республика',
'CK': 'Острова Кука',
'CR': 'Коста-Рика',
'CI': 'Берег Слоновой Кости',
'HR': 'Хорватия',
'CU': 'Куба',
'CW': 'Кюрасао',
'CY': 'Кипр',
'CZ': 'Чешская Республика',
'DK': 'Дания',
'DJ': 'Джибути',
'DM': 'Доминика',
'DO': 'Доминиканская Республика',
'EC': 'Эквадор',
'EG': 'Египет',
'SV': 'Сальвадор',
'GB-ENG': 'Англия',
'GQ': 'Экваториальная Гвинея',
'ER': 'Эритрея',
'EE': 'Эстония',
'ET': 'Эфиопия',
'EU': 'Европа',
'FK': 'Фолклендские (Мальвинские) острова',
'FO': 'Фарерские острова',
'FJ': 'Фиджи',
'FI': 'Финляндия',
'FR': 'Франция',
'GF': 'Французская Гвиана',
'PF': 'Французская Полинезия',
'TF': 'Южные территории Франции',
'GA': 'Габон',
'GM': 'Гамбия',
'GE': 'Грузия',
'DE': 'Германия',
'GH': 'Гана',
'GI': 'Гибралтар',
'GR': 'Греция',
'GL': 'Гренландия',
'GD': 'Гренада',
'GP': 'Гваделупа',
'GU': 'Гуам',
'GT': 'Гватемала',
'GG': 'Гернси',
'GN': 'Гвинея',
'GW': 'Гвинея-Бисау',
'GY': 'Гайана',
'HT': 'Гаити',
'HM': 'Остров Херд и острова Макдональд',
'VA': 'Святой Престол (государство-городок Ватикан)',
'HN': 'Гондурас',
'HK': 'Гонконг',
'HU': 'Венгрия',
'IS': 'Исландия',
'IN': 'Индия',
'ID': 'Индонезия',
'IR': 'Иран, Исламская Республика',
'IQ': 'Ирак',
'IE': 'Ирландия',
'IM': 'Остров Мэн',
'IL': 'Израиль',
'IT': 'Италия',
'JM': 'Ямайка',
'JP': 'Япония',
'JE': 'Джерси',
'JO': 'Иордания',
'KZ': 'Казахстан',
'KE': 'Кения',
'KI': 'Кирибати',
'KP': 'Корея, Народно-Демократическая Республика',
'KR': 'Корея, Республика',
'XK': 'Косово',
'KW': 'Кувейт',
'KG': 'Кыргызстан',
'LA': 'Лаосская Народно-Демократическая Республика',
'LV': 'Латвия',
'LB': 'Ливан',
'LS': 'Лесото',
'LR': 'Либерия',
'LY': 'Ливия',
'LI': 'Лихтенштейн',
'LT': 'Литва',
'LU': 'Люксембург',
'MO': 'Макао',
'MK': 'Македония, бывшая югославская республика',
'MG': 'Мадагаскар',
'MW': 'Малави',
'MY': 'Малайзия',
'MV': 'Мальдивы',
'ML': 'Мали',
'MT': 'Мальта',
'MH': 'Маршалловы острова',
'MQ': 'Мартиника',
'MR': 'Мавритания',
'MU': 'Маврикий',
'YT': 'Майотта',
'MX': 'Мексика',
'FM': 'Микронезия, Федеративные Штаты',
'MD': 'Молдова, Республика',
'MC': 'Монако',
'ME': 'Черногория',
'MA': 'Марокко',
'MN': 'Монголия',
'MS': 'Монтсеррат',
'MZ': 'Мозамбик',
'MM': 'Мьянма',
'NA': 'Намибия',
'NR': 'Науру',
'NP': 'Непал',
'NL': 'Нидерланды',
'AN': 'Нидерландские Антильские острова',
'NC': 'Новая Каледония',
'NZ': 'Новая Зеландия',
'NI': 'Никарагуа',
'NE': 'Нигер',
'NG': 'Нигерия',
'NU': 'Ниуэ',
'NF': 'Остров Норфолк',
'GB-NIR': 'Северная Ирландия',
'MP': 'Северные Марианские острова',
'NO': 'Норвегия',
'OM': 'Оман',
'PK': 'Пакистан',
'PW': 'Палау',
'PS': 'Палестина',
'PA': 'Панама',
'PG': 'Папуа-Новая Гвинея',
'PY': 'Парагвай',
'PE': 'Перу',
'PH': 'Филиппины',
'PN': 'Питкэрн',
'PL': 'Польша',
'PT': 'Португалия',
'PR': 'Пуэрто-Рико',
'QA': 'Катар',
'RE': 'Реюньон',
'RO': 'Румыния',
'RU': 'Российская Федерация',
'RW': 'Руанда',
'BL': 'Сен-Бартелеми',
'SH': 'Острова Святой Елены, Вознесения и Тристан-да-Кунья',
'KN': 'Сент-Китс и Невис',
'LC': 'Сент-Люсия',
'MF': 'Сен-Мартен',
'PM': 'Сен-Пьер и Микелон',
'VC': 'Сент-Винсент и Гренадины',
'WS': 'Самоа',
'SM': 'Сан-Марино',
'ST': 'Сан-Томе и Принсипи',
'SA': 'Саудовская Аравия',
'GB-SCT': 'Шотландия',
'SN': 'Сенегал',
'RS': 'Сербия',
'SC': 'Сейшельские острова',
'SL': 'Сьерра-Леоне',
'SG': 'Сингапур',
'SX': 'Синт-Мартен (голландская часть)',
'SK': 'Словакия',
'SI': 'Словения',
'SB': 'Соломоновы острова',
'SO': 'Сомали',
'ZA': 'ЮАР',
'GS': 'Южная Георгия и Южные Сандвичевы острова',
'SS': 'Южный Судан',
'ES': 'Испания',
'LK': 'Шри-Ланка',
'SD': 'Судан',
'SR': 'Суринам',
'SJ': 'Острова Шпицберген и Ян-Майен',
'SZ': 'Свазиленд',
'SE': 'Швеция',
'CH': 'Швейцария',
'SY': 'Сирийская Арабская Республика',
'TW': 'Тайвань',
'TJ': 'Таджикистан',
'TZ': 'Танзания, Объединенная Республика',
'TH': 'Таиланд',
'TL': 'Тимор-Лешти',
'TG': 'Того',
'TK': 'Токелау',
'TO': 'Tonga',
'TT': 'Тринидад и Тобаго',
'TN': 'Тунис',
'TR': 'Турция',
'TM': 'Туркменистан',
'TC': 'Острова Теркс и Кайкос',
'ТВ': 'Тувалу',
'UG': 'Уганда',
'UA': 'Украина',
'AE': 'Объединенные Арабские Эмираты',
'GB': 'Великобритания',
'US': 'Соединенные Штаты',
'UY': 'Уругвай',
'UM': 'Малые периферийные острова США',
'UZ': 'Узбекистан',
'VU': 'Вануату',
'VE': 'Венесуэла, Боливарианская Республика',
'VN': 'Вьетнам',
'VG': 'Виргинские острова, Британские',
'VI': 'Виргинские острова, США',
'GB-WLS': 'Уэльс',
'WF': 'Острова Уоллис и Футуна',
'EH': 'Западная Сахара',
'YE': 'Йемен',
'ZM': 'Замбия',
'ZW': 'Зимбабве',
'XX': 'Неизвестно',
'XM': 'Луна',
};
}
// Path: newsParts
class _StringsNewsPartsRu implements _StringsNewsPartsEn {
_StringsNewsPartsRu._(this._root);
@override final _StringsRu _root; // ignore: unused_field
// Translations
@override String get leaderboardStart => 'Взял ';
@override String get leaderboardMiddle => 'в таблице ';
@override String get personalbest => 'Поставил новый ЛР в ';
@override String get personalbestMiddle => 'с результатом в ';
@override String get badgeStart => 'Заработал значок ';
@override String get badgeEnd => '';
@override String get rankupStart => 'Заработал ';
@override String rankupMiddle({required Object r}) => '${r} ранг ';
@override String get rankupEnd => 'в Тетра Лиге';
@override String get tetoSupporter => 'TETR.IO supporter';
@override String get supporterStart => 'Стал обладателем ';
@override String get supporterGiftStart => 'Получил подарок в виде ';
@override String unknownNews({required Object type}) => 'Неизвестная новость типа ${type}';
}
// Path: graphs
class _StringsGraphsRu implements _StringsGraphsEn {
_StringsGraphsRu._(this._root);
@override final _StringsRu _root; // ignore: unused_field
// Translations
@override String get attack => 'Атака';
@override String get speed => 'Скорость';
@override String get defense => 'Защита';
@override String get cheese => 'Сыр';
}
// Path: statCellNum
class _StringsStatCellNumRu implements _StringsStatCellNumEn {
_StringsStatCellNumRu._(this._root);
@override final _StringsRu _root; // ignore: unused_field
// Translations
@override String get xpLevel => 'Уровень\nопыта';
@override String get xpProgress => 'Прогресс до следующего уровня';
@override String xpFrom0ToLevel({required Object n}) => 'Прогресс от 0 XP до ${n} уровня';
@override String get xpLeft => 'XP осталось';
@override String get hoursPlayed => 'Часов\nСыграно';
@override String get onlineGames => 'Онлайн\nИгр';
@override String get gamesWon => 'Онлайн\nПобед';
@override String get totalGames => 'Всего матчей';
@override String get totalWon => 'Всего побед';
@override String get friends => 'Друзей';
@override String get apm => 'Атака в\nМинуту';
@override String get vs => 'Показатель\nVersus';
@override String get recordLB => 'Место в таблице';
@override String get lbp => 'Положение\nв рейтинге';
@override String get lbpShort => '№ в рейтинге';
@override String get lbpc => 'Положение\nв рейтинге страны';
@override String get lbpcShort => '№ по стране';
@override String get gamesPlayed => 'Игр\nСыграно';
@override String get gamesWonTL => 'Побед';
@override String get winrate => 'Процент\nпобед';
@override String get level => 'Уровень';
@override String get score => 'Счёт';
@override String get spp => 'Очков\nна Фигуру';
@override String get pieces => 'Фигур\nУстановлено';
@override String get pps => 'Фигур в\nСекунду';
@override String get finesseFaults => 'Ошибок\nТехники';
@override String get finessePercentage => '% Качества\nТехники';
@override String get keys => 'Нажатий\nКлавиш';
@override String get kpp => 'Нажатий\nна Фигуру';
@override String get kps => 'Нажатий\nв Секунду';
@override String get tr => 'Тетра Рейтинг';
@override String get rd => 'Отклонение рейтинга';
@override String get app => 'Атака на Фигуру';
@override String get appDescription => '(Сокращенно APP) Главный показатель эффективности. Показывает, сколько атаки приходится на одну фигуру';
@override String get vsapmDescription => 'В основном, показывает как много мусора игрок использует в своих атаках и насколько эффективно.';
@override String get dss => 'Downstack\nв Секунду';
@override String get dssDescription => '(Сокращенно DS/S) Downstack (спуск вниз) в Секунду показывает как много мусорных линий в среднем игрок убирает за одну секунду.';
@override String get dsp => 'Downstack\nна Фигуру';
@override String get dspDescription => '(Сокращенно DS/P) Downstack (спуск вниз) на Фигуру показывает как много мусорных линий в среднем игрок убирает одну фигуру.';
@override String get appdsp => 'APP + DS/P';
@override String get appdspDescription => 'Просто сумма Атаки на Фигуру и Downstack на Фигуру.';
@override String get cheese => 'Индекс сыра';
@override String get cheeseDescription => '(Сокращенно Cheese) Индекс сыра является аппроксимацией того, насколько чистый / дырявый мусор игрок отправляет. Меньше = более чистый. Больше = более дырявый.\nПридумал kerrmunism';
@override String get gbe => 'Garbage\nEfficiency';
@override String get gbeDescription => '(Сокращенно Gb Eff.) Garbage Efficiency показывает насколько хорошо игрок использует свой мусор. Больше = лучше (или он использует больше мусора). Меньше = в основном отправляют сыр (или он редко чистит мусор).\nПридумали Zepheniah и Dragonboy.';
@override String get nyaapp => 'Взвешенный\nAPP';
@override String get nyaappDescription => '(Сокращенно wAPP) По сути, показывает способность отправлять сыр, сохраняя при этом высокую эффективность.\nПридумал Wertj.';
@override String get area => 'Area';
@override String get areaDescription => 'Какую площадь занимает диаграмма, если не брать в расчёт индекс сыра и VS/APM';
@override String get estOfTR => 'Расчётный TR';
@override String get estOfTRShort => 'Расч. TR';
@override String get accOfEst => 'Точность расчёта';
@override String get accOfEstShort => 'Точность';
}
// Path: numOfGameActions
class _StringsNumOfGameActionsRu implements _StringsNumOfGameActionsEn {
_StringsNumOfGameActionsRu._(this._root);
@override final _StringsRu _root; // ignore: unused_field
// Translations
@override String get pc => 'Все чисто';
@override String get hold => 'В запас';
@override String inputs({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} нажатий клавиш',
one: '${n} нажатие на клавишу',
two: '${n} нажатия на клавишы',
few: '${n} нажатия на клавишы',
many: '${n} нажатий на клавиш',
other: '${n} нажатий на клавиш',
);
@override String tspinsTotal({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} T-спинов всего',
one: 'Всего ${n} T-спин',
two: '${n} T-спина всего',
few: '${n} T-спина всего',
many: '${n} T-спинов всего',
other: '${n} T-спинов всего',
);
@override String lineClears({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} линий очищено',
one: '${n} линия очищена',
two: '${n} линии очищено',
few: '${n} линии очищено',
many: '${n} линий очищено',
other: '${n} линий очищено',
);
}
// Path: popupActions
class _StringsPopupActionsRu implements _StringsPopupActionsEn {
_StringsPopupActionsRu._(this._root);
@override final _StringsRu _root; // ignore: unused_field
// Translations
@override String get cancel => 'Отменить';
@override String get submit => 'Подтвердить';
@override String get ok => 'OK';
}
// Path: errors
class _StringsErrorsRu implements _StringsErrorsEn {
_StringsErrorsRu._(this._root);
@override final _StringsRu _root; // ignore: unused_field
// Translations
@override String connection({required Object code, required Object message}) => 'Проблема с подключением: ${code} ${message}';
@override String get noSuchUser => 'Нет такого пользователя';
@override String get noSuchUserSub => 'Либо вы ошиблись при вводе, либо аккаунта больше не существует';
@override String get discordNotAssigned => 'К данному Discord ID не привязан аккаунт';
@override String get discordNotAssignedSub => 'Убедитесь в том, что вы вставили правильный ID';
@override String get history => 'История данного игрока отсутствует';
@override String get actionSuggestion => 'Возможно, вы хотите';
@override String get p1nkl0bst3rTLmatches => 'Старых матчей Тетра Лиги не было найдено';
@override String get clientException => 'Нет соединения с интернетом';
@override String get forbidden => 'Ваш IP адрес заблокирован';
@override String forbiddenSub({required Object nickname}) => 'Если у вас работает VPN или прокси, выключите его. Если это не помогло, свяжитесь с ${nickname}';
@override String get tooManyRequests => 'Слишком много запросов';
@override String get tooManyRequestsSub => 'Подождите немного и попробуйте снова';
@override String get internal => 'Что-то случилось на стороне tetr.io';
@override String get internalSub => 'Скорее всего, osk уже в курсе об этом';
@override String get internalWebVersion => 'Что-то случилось на стороне tetr.io (или на стороне oskware_bridge, я хз если честно)';
@override String get internalWebVersionSub => 'Если статус страница osk-а говорит, что всё ок - свяжитесь с dan63047';
@override String get oskwareBridge => 'Что-то случилось с oskware_bridge';
@override String get oskwareBridgeSub => 'Дайте dan63047 знать';
@override String get p1nkl0bst3rForbidden => 'Стороннее API заблокировало ваш IP адрес';
@override String get p1nkl0bst3rTooManyRequests => 'Слишком много запросов к стороннему API. Попробуйте позже';
@override String get p1nkl0bst3rinternal => 'Что-то случилось на стороне p1nkl0bst3r-а';
@override String get p1nkl0bst3rinternalWebVersion => 'Что-то случилось на стороне p1nkl0bst3r-а (или на стороне oskware_bridge, я хз если честно)';
@override String get replayAlreadySaved => 'Повтор уже сохранён';
@override String get replayExpired => 'Повтор истёк и больше недоступен';
@override String get replayRejected => 'Стороннее API заблокировало ваш IP адрес';
}
// Path: <root>
class _StringsZhCn implements Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
_StringsZhCn.build({Map<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = TranslationMetadata(
locale: AppLocale.zhCn,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <zh-CN>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
@override late final _StringsZhCn _root = this; // ignore: unused_field
// Translations
@override Map<String, String> get locales => {
'en': '英语 (English)',
'ru': '俄语 (Русский)',
'zh-CN': '简体中文',
};
@override String get tetraLeague => 'Tetra联赛';
@override String get tlRecords => 'Tetra联赛记录';
@override String get history => '历史';
@override String get sprint => '40行竞速';
@override String get blitz => '闪电战';
@override String get recent => '最近';
@override String get recentRuns => '最近游玩局数';
@override String blitzScore({required Object p}) => '${p}';
@override String get openSPreplay => '在TETR.IO打开回放';
@override String get downloadSPreplay => '下载回放';
@override String get other => '其他';
@override String get distinguishment => '区别';
@override String get zen => '禅意模式';
@override String get bio => '个人简介';
@override String get news => '新闻';
@override late final _StringsNewsPartsZhCn newsParts = _StringsNewsPartsZhCn._(_root);
@override String get openSearch => '搜索玩家';
@override String get closeSearch => '关闭搜索';
@override String get searchHint => '昵称ID或Discord用户ID需要 "ds:" 前缀)';
@override String get refresh => '刷新';
@override String get fetchAndsaveTLHistory => '获取玩家历史';
@override String get fetchAndSaveOldTLmatches => '获取玩家Tetra联赛历史';
@override String fetchAndsaveTLHistoryResult({required Object number}) => '找到 ${number} 个状态';
@override String fetchAndSaveOldTLmatchesResult({required Object number}) => '找到 ${number} 场Tetra联赛比赛';
@override String get showStoredData => '显示获得的数据';
@override String get statsCalc => '统计计算器';
@override String get settings => '设置';
@override String get track => '添加到\n跟踪列表';
@override String get stopTracking => '从跟踪列表\n中移除';
@override String get becameTracked => '已添加到跟踪列表!';
@override String get compare => '对比';
@override String get stoppedBeingTracked => '已从跟踪列表中移除!';
@override String get tlLeaderboard => 'Tetra联赛排行榜';
@override String get noRecords => '无记录';
@override String noOldRecords({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '无记录',
one: '只有 ${n} 个记录',
two: '只有 ${n} 个记录',
few: '只有 ${n} 个记录',
many: '只有 ${n} 个记录',
other: '只有 ${n} 个记录',
);
@override String get noRecord => '没有记录';
@override String get botRecord => '机器人不予参加排位赛';
@override String get anonRecord => '匿名用户不予参加排位赛';
@override String get notEnoughData => '没有足够的数据';
@override String get noHistorySaved => '没有保存历史';
@override String get pseudoTooltipHeaderInit => '将鼠标放在点上';
@override String get pseudoTooltipFooterInit => '以查看详细信息';
@override String obtainDate({required Object date}) => '${date} 获得';
@override String fetchDate({required Object date}) => 'Fetched ${date}';
@override String get exactGametime => '实际游玩时长';
@override String get bigRedBanned => '该账号封禁中';
@override String get normalBanned => '封禁';
@override String get bigRedBadStanding => '信誉不佳';
@override String get copiedToClipboard => '已复制';
@override String get playerRoleAccount => '账号';
@override String get wasFromBeginning => '在很久很久以前';
@override String get created => '创建于';
@override String get botCreatedBy => '';
@override String get notSupporter => '非会员';
@override String get assignedManualy => '该勋章由 TETR.IO 管理员手动分配';
@override String supporter({required Object tier}) => '会员等级 ${tier}';
@override String comparingWith({required Object newDate, required Object oldDate}) => '${newDate} 时的数据与 ${oldDate} 比较';
@override String get top => '';
@override String get topRank => '最高段位';
@override String verdictGeneral({required Object rank, required Object verdict, required Object n}) => '${rank} 段平均数据${verdict} ${n}';
@override String get verdictBetter => '';
@override String get verdictWorse => '';
@override String get smooth => '平滑';
@override String get postSeason => '淡季';
@override String get seasonStarts => '下一赛即将开始于:';
@override String get nanow => '暂未完成,敬请等待!';
@override String seasonEnds({required Object countdown}) => '赛季将会在 ${countdown} 后结束';
@override String get seasonEnded => 'Season has ended';
@override String gamesUntilRanked({required Object left}) => '还有 ${left} 场比赛获取段位';
@override String numOfVictories({required Object wins}) => '~${wins} 场胜局';
@override String get promotionOnNextWin => '下一次胜利即可升段';
@override String numOfdefeats({required Object losses}) => '~${losses} 场败局';
@override String get demotionOnNextLoss => '下一次失败即可掉段';
@override String get nerdStats => '详细信息';
@override String get playersYouTrack => '跟踪';
@override String get formula => '公式';
@override String get exactValue => '实际值';
@override String get neverPlayedTL => '此用户没有参与Tetra联赛';
@override String get botTL => '机器人不予参加Tetra联赛';
@override String get anonTL => '匿名用户不予参加Tetra联赛';
@override String get quickPlay => '快速游戏';
@override String get expert => '专家';
@override String get withMods => '带着模组';
@override String withModsPlural({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '带着 ${n} 个模组',
one: '带着 ${n} 个模组',
two: '带着 ${n} 个模组',
few: '带着 ${n} 个模组',
many: '带着 ${n} 个模组',
other: '带着 ${n} 个模组',
);
@override String get exportDB => '导出本地数据';
@override String get exportDBDescription => '它包含跟踪的玩家的状态和Tetra联赛记录和跟踪列表。';
@override String get desktopExportAlertTitle => '桌面导出';
@override String get desktopExportText => '您好像在使用桌面版。请查看你的“文档”文件夹你应该能找到“TetraStats.db”。把它复制到一个地方';
@override String get androidExportAlertTitle => '安卓导出';
@override String androidExportText({required Object exportedDB}) => '导出成功\n${exportedDB}';
@override String get importDB => '导入本地数据';
@override String get importDBDescription => '恢复您的备份。请注意,已存储的数据库将被覆盖。';
@override String get importWrongFileType => '文件类型错误';
@override String get importCancelled => '已取消';
@override String get importSuccess => '导入成功';
@override String get yourID => '你的 TETR.IO 用户';
@override String get yourIDAlertTitle => '你的 TETR.IO 昵称';
@override String get yourIDText => '当程序加载,它将显示此用户的数据';
@override String get language => '语言';
@override String get updateInBackground => '自动升级数据';
@override String get updateInBackgroundDescription => '当 Tetra Stats 运行时,它可以在缓存过期时更新当前玩家的统计数据';
@override String get customization => '自定义';
@override String get customizationDescription => '更改 Tetra Stats UI 中不同事物的外观';
@override String get oskKagari => 'osk 特有的 Kagari 段位';
@override String get oskKagariDescription => '如果打开,主视图上的 osk 段位将显示为 :kagari:';
@override String get AccentColor => '主题色';
@override String get AccentColorDescription => '几乎所有交互式 UI 元素都用此颜色突出显示';
@override String get timestamps => '时间';
@override String get timestampsDescription => '您可以选择显示时间的方式';
@override String get timestampsAbsoluteGMT => '绝对 (GMT)';
@override String get timestampsAbsoluteLocalTime => '绝对 (你的时区)';
@override String get timestampsRelative => '相对';
@override String get rating => '评级主要表现';
@override String get ratingDescription => 'TR 不是线性的,而 Glicko 没有边界,百分位数易挥发';
@override String get ratingLBposition => 'LB 位置';
@override String get sheetbotGraphs => 'Sheetbot式雷达图';
@override String get sheetbotGraphsDescription => '若开启,雷达图上的点为负时可以出现在对面';
@override String get lbStats => '显示基于排行榜的数据';
@override String get lbStatsDescription => '这会影响加载时间,但允许您通过统计数据查看排行榜上的位置并与平均值进行比较';
@override String get aboutApp => '关于';
@override String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) ${version} 版 Build ${buildNumber}\n\n由 dan63047 制作\n由 kerrmunism 提供公式\n由 p1nkl0bst3r 提供历史\nTETR.IO 回放抓取器 API 由 szy 制作';
@override String stateViewTitle({required Object nickname, required Object date}) => '${nickname}${date}';
@override String statesViewTitle({required Object nickname, required Object number}) => '${nickname}${number} 个状态';
@override String matchesViewTitle({required Object nickname}) => '${nickname} 的Tetra联赛历史';
@override String statesViewEntry({required Object level, required Object glicko, required Object rd, required Object games}) => '${level} TR, ${glicko}±${rd} Glicko, ${games} 次游戏';
@override String stateRemoved({required Object date}) => '成功移除 ${date} 的状态!';
@override String matchRemoved({required Object date}) => '成功移除 ${date} 的比赛!';
@override String get viewAllMatches => '查看所有比赛';
@override String get trackedPlayersViewTitle => '获取的数据';
@override String get trackedPlayersZeroEntrys => '列表为空。 点击 “添加到跟踪列表” 可以将玩家放在这里';
@override String get trackedPlayersOneEntry => '只有 1 个玩家';
@override String trackedPlayersManyEntrys({required Object numberOfPlayers}) => '${numberOfPlayers} 个玩家';
@override String trackedPlayersEntry({required Object nickname, required Object numberOfStates}) => '${nickname}${numberOfStates} 个状态';
@override String trackedPlayersDescription({required Object firstStateDate, required Object lastStateDate}) => '${firstStateDate}${lastStateDate}';
@override String trackedPlayersStatesDeleted({required Object nickname}) => '成功从数据库中移除 ${nickname} 个状态!';
@override String get duplicatedFix => '删除重复的 TL 匹配项';
@override String get compressDB => '压缩数据库';
@override String SpaceSaved({required Object size}) => '保存空白:${size}';
@override String averageXrank({required Object rankLetter}) => '平均 ${rankLetter}';
@override String get vs => 'vs';
@override String get inTLmatch => '在Tetra联赛中';
@override String get downloadReplay => '下载 .ttrm 回放';
@override String get openReplay => '在 TETR.IO 打开回放';
@override String replaySaved({required Object path}) => '已保存回放至 ${path}';
@override String get match => '比赛';
@override String get timeWeightedmatch => '比赛(时间加权)';
@override String roundNumber({required Object n}) => '${n} 回合';
@override String get statsFor => '数据:';
@override String get numberOfRounds => '回合数';
@override String get matchLength => '比赛时长';
@override String get roundLength => '回合时长';
@override String get matchStats => '比赛数据';
@override String get timeWeightedmatchStats => '时间加权比赛数据';
@override String get replayIssue => '无法处理回放';
@override String get matchIsTooOld => '无回放';
@override String get winner => '赢家';
@override String get registred => '注册日期';
@override String get playedTL => '游玩过Tetra联赛';
@override String get winChance => '胜利机会';
@override String get byGlicko => '靠Glicko';
@override String get byEstTR => '靠预测TR';
@override String compareViewNoValues({required Object avgR}) => '请输入用户名用户IOAPM-PPS-VS值 (分隔符不重要,只需要顺序)或者${avgR}R是一个段位到两个字段';
@override String compareViewWrongValue({required Object value}) => '获取 ${value} 失败';
@override String get mostRecentOne => '最接近的';
@override String get yes => '';
@override String get no => '';
@override String get daysLater => '天后';
@override String get dayseBefore => '天前';
@override String get fromBeginning => '开服';
@override String get calc => '计算器';
@override String get calcViewNoValues => '输入值以计算数据';
@override String get rankAveragesViewTitle => '段位分隔符';
@override String get sprintAndBlitsViewTitle => '竞速与闪电战平均数据';
@override String sprintAndBlitsRelevance({required Object date}) => '数据来自${date}';
@override String get rank => '段位';
@override String get averages => '平均';
@override String get lbViewZeroEntrys => '';
@override String get lbViewOneEntry => '只有一个玩家';
@override String lbViewManyEntrys({required Object numberOfPlayers}) => '${numberOfPlayers}';
@override String get everyoneAverages => 'Tetra联赛散点图';
@override String get sortBy => '排序依据';
@override String get reversed => '反向';
@override String get country => '地区';
@override String rankAverages({required Object rank}) => '${rank}段位散点图';
@override String players({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 个玩家',
one: '${n} 个玩家',
two: '${n} 个玩家',
few: '${n} 个玩家',
many: '${n} 个玩家',
other: '${n} 个玩家',
);
@override String games({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 场游戏',
one: '${n} 场游戏',
two: '${n} 场游戏',
few: '${n} 场游戏',
many: '${n} 场游戏',
other: '${n} 场游戏',
);
@override String gamesPlayed({required Object games}) => '${games} 场游戏';
@override String get chart => '列表';
@override String get entries => '条目';
@override String get minimums => '最小值';
@override String get maximums => '最大值';
@override String get lowestValues => '最小值';
@override String get averageValues => '平均值';
@override String get highestValues => '最大值';
@override String forPlayer({required Object username}) => '来自用户 ${username}';
@override String currentAxis({required Object axis}) => '${axis} 轴:';
@override String get p1nkl0bst3rAlert => '该数据是从 p1nkl0bst3r 维护的第三方 API 中检索的';
@override String get notForWeb => '浏览器版本暂不支持函数';
@override late final _StringsGraphsZhCn graphs = _StringsGraphsZhCn._(_root);
@override late final _StringsStatCellNumZhCn statCellNum = _StringsStatCellNumZhCn._(_root);
@override Map<String, String> get playerRole => {
'user': '用户',
'banned': '封禁',
'bot': '机器人',
'sysop': '系统管理员',
'admin': '管理员',
'mod': '管理员',
'halfmod': '社区管理员',
'anon': '匿名',
};
@override late final _StringsNumOfGameActionsZhCn numOfGameActions = _StringsNumOfGameActionsZhCn._(_root);
@override late final _StringsPopupActionsZhCn popupActions = _StringsPopupActionsZhCn._(_root);
@override late final _StringsErrorsZhCn errors = _StringsErrorsZhCn._(_root);
@override Map<String, String> get countries => {
'': '',
'AF': '阿富汗',
'AX': '奥兰群岛',
'AL': '阿尔巴尼亚',
'DZ': '阿尔及利亚',
'AS': '美属萨摩亚',
'AD': '安道尔',
'AO': '安哥拉',
'AI': '安圭拉',
'AQ': '南极洲',
'AG': '安提瓜和巴布达',
'AR': '阿根廷',
'AM': '亚美尼亚',
'AW': '阿鲁巴',
'AU': '澳大利亚',
'AT': '奥地利',
'AZ': '阿塞拜疆',
'BS': '巴哈马',
'BH': '巴林',
'BD': '孟加拉国',
'BB': '巴巴多斯',
'BY': '白俄罗斯',
'BE': '比利时',
'BZ': '伯利兹',
'BJ': '贝宁',
'BM': '百慕大',
'BT': '不丹',
'BO': '玻利维亚多民族国',
'BA': '波斯尼亚和黑塞哥维那',
'BW': '博茨瓦纳',
'BV': '布韦岛',
'BR': '巴西',
'IO': '英属印度洋领地',
'BN': '文莱达鲁萨兰国',
'BG': '保加利亚',
'BF': '布基纳法索',
'BI': '布隆迪',
'KH': '柬埔寨',
'CM': '喀麦隆',
'CA': '加拿大',
'CV': '佛得角',
'BQ': '荷兰加勒比区',
'KY': '开曼群岛',
'CF': '中非',
'TD': '乍得',
'CL': '智利',
'CN': '中国',
'CX': '圣诞岛',
'CC': '科科斯(基林)群岛',
'CO': '哥伦比亚',
'KM': '科摩罗',
'CG': '刚果(布)/刚果共和国',
'CD': '刚果(金)/刚果民主共和国',
'CK': '库克群岛',
'CR': '哥斯达黎加',
'CI': '科特迪瓦',
'HR': '克罗地亚',
'CU': '古巴',
'CW': '库拉索',
'CY': '塞浦路斯',
'CZ': '捷克',
'DK': '丹麦',
'DJ': '吉布提',
'DM': '多米尼加',
'DO': '多米尼加共和国',
'EC': '厄瓜多尔',
'EG': '埃及',
'SV': '萨尔瓦多',
'GB-ENG': '英格兰',
'GQ': '赤道几内亚',
'ER': '厄立特里亚',
'EE': '爱沙尼亚',
'ET': '埃塞俄比亚',
'EU': '欧洲',
'FK': '福克兰群岛/马尔维纳斯群岛',
'FO': '法罗群岛',
'FJ': '斐济',
'FI': '芬兰',
'FR': '法国',
'GF': '法属圭亚那',
'PF': '法属波利尼西亚',
'TF': '法属南部领地',
'GA': '加蓬',
'GM': '冈比亚',
'GE': '格鲁吉亚',
'DE': '德国',
'GH': '加纳',
'GI': '直布罗陀',
'GR': '希腊',
'GL': '格陵兰岛',
'GD': '格林纳达',
'GP': '瓜德罗普岛',
'GU': '关岛',
'GT': '危地马拉',
'GG': '根西岛',
'GN': '几内亚',
'GW': '几内亚比绍',
'GY': '圭亚那',
'HT': '海地',
'HM': '赫德岛和麦克唐纳群岛',
'VA': '梵蒂冈',
'HN': '洪都拉斯',
'HK': '中国香港',
'HU': '匈牙利',
'IS': '冰岛',
'IN': '印度',
'ID': '印度尼西亚',
'IR': '伊朗',
'IQ': '伊拉克',
'IE': '爱尔兰',
'IM': '马恩岛',
'IL': '以色列',
'IT': '意大利',
'JM': '牙买加',
'JP': '日本',
'JE': 'Jersey',
'JO': '约旦',
'KZ': '哈萨克斯坦',
'KE': '肯尼亚',
'KI': '基里巴斯',
'KP': '朝鲜',
'KR': '韩国',
'XK': '科索沃',
'KW': '科威特',
'KG': '吉尔吉斯斯坦',
'LA': '老挝',
'LV': '拉脱维亚',
'LB': '黎巴嫩',
'LS': '莱索托',
'LR': '利比里亚',
'LY': '利比亚',
'LI': '列支敦士登',
'LT': '立陶宛',
'LU': '卢森堡',
'MO': '中国澳门',
'MK': '马其顿',
'MG': '马达加斯加',
'MW': '马拉维',
'MY': '马来西亚',
'MV': '马尔代夫',
'ML': '马里',
'MT': '马耳他',
'MH': '马绍尔群岛',
'MQ': '马提尼克岛',
'MR': '毛里塔尼亚',
'MU': '毛里求斯',
'YT': '马约特岛',
'MX': '墨西哥',
'FM': '密克罗尼西亚联邦',
'MD': '摩尔多瓦共和国',
'MC': '摩纳哥',
'ME': '黑山',
'MA': '摩洛哥',
'MN': '蒙古',
'MS': '蒙特塞拉特',
'MZ': '莫桑比克',
'MM': '缅甸',
'NA': '纳米比亚',
'NR': '瑙鲁',
'NP': '尼泊尔',
'NL': '尼德兰',
'AN': '荷属安的列斯',
'NC': '新喀里多尼亚',
'NZ': '新西兰',
'NI': '尼加拉瓜',
'NE': '尼日尔',
'NG': '尼日利亚',
'NU': '纽埃',
'NF': '诺福克岛',
'GB-NIR': '北爱尔兰',
'MP': '北马里亚纳群岛',
'NO': '挪威',
'OM': '阿曼',
'PK': '巴基斯坦',
'PW': '帕劳',
'PS': '巴勒斯坦',
'PA': '巴拿马',
'PG': '巴布亚新几内亚',
'PY': '巴拉圭',
'PE': '秘鲁',
'PH': '菲律宾',
'PN': '皮特凯恩',
'PL': '波兰',
'PT': '葡萄牙',
'PR': '波多黎各',
'QA': '卡塔尔',
'RE': '留尼汪',
'RO': '罗马尼亚',
'RU': '俄罗斯联邦',
'RW': '卢旺达',
'BL': '圣巴泰勒米',
'SH': '圣赫勒拿,阿森松和特里斯坦-达库尼亚',
'KN': '圣基茨和尼维斯',
'LC': '圣卢西亚',
'MF': '圣马丁',
'PM': '圣皮埃尔和密克隆群岛',
'VC': '圣文森特和格林纳丁斯',
'WS': '萨摩亚',
'SM': '圣马力诺',
'ST': '圣多美和普林西比',
'SA': '沙特阿拉伯',
'GB-SCT': '苏格兰',
'SN': '塞内加尔',
'RS': '塞尔维亚',
'SC': '塞舌尔',
'SL': '塞拉利昂',
'SG': '新加坡',
'SX': '荷属圣马丁',
'SK': '斯洛伐克',
'SI': '斯洛文尼亚',
'SB': '所罗门群岛',
'SO': '索马里',
'ZA': '南非',
'GS': '南乔治亚和南桑威奇群岛',
'SS': '南苏丹',
'ES': '西班牙',
'LK': '斯里兰卡',
'SD': '苏丹',
'SR': '苏里南',
'SJ': '斯瓦尔巴和扬马延群岛',
'SZ': '斯威士兰',
'SE': '瑞典',
'CH': '瑞士',
'SY': '叙利亚',
'TW': '中国台湾',
'TJ': '塔吉克斯坦',
'TZ': '坦桑尼亚',
'TH': '泰国',
'TL': '东帝汶',
'TG': '多哥',
'TK': '托克劳',
'TO': '汤加',
'TT': '特立尼达和多巴哥',
'TN': '突尼斯',
'TR': '土耳其',
'TM': '土库曼斯坦',
'TC': '特克斯和凯科斯群岛',
'TV': '图瓦卢',
'UG': '乌干达',
'UA': '乌克兰',
'AE': '阿拉伯联合酋长国',
'GB': '英国',
'US': '美国',
'UY': '乌拉圭',
'UM': '美国小岛屿',
'UZ': '乌兹别克斯坦',
'VU': '瓦努阿图',
'VE': '委内瑞拉玻利瓦尔共和国',
'VN': '越南',
'VG': '英属维尔京群岛',
'VI': '美属维尔京群岛',
'GB-WLS': '威尔士',
'WF': '瓦利斯和富图纳群岛',
'EH': '西撒哈拉',
'YE': '也门',
'ZM': '赞比亚',
'ZW': '津巴布韦',
'XX': '未知',
'XM': '月球',
};
}
// Path: newsParts
class _StringsNewsPartsZhCn implements _StringsNewsPartsEn {
_StringsNewsPartsZhCn._(this._root);
@override final _StringsZhCn _root; // ignore: unused_field
// Translations
@override String get leaderboardStart => '取得 ';
@override String get leaderboardMiddle => '';
@override String get personalbest => '';
@override String get personalbestMiddle => ' 中取得了新的个人最好成绩 ';
@override String get badgeStart => '获得勋章 ';
@override String get badgeEnd => '';
@override String get rankupStart => '达成 ';
@override String rankupMiddle({required Object r}) => '${r} 段位 ';
@override String get rankupEnd => '';
@override String get tetoSupporter => 'TETR.IO 会员';
@override String get supporterStart => '成为了 ';
@override String get supporterGiftStart => '被赠送了 ';
@override String unknownNews({required Object type}) => '未知新闻 ${type}';
}
// Path: graphs
class _StringsGraphsZhCn implements _StringsGraphsEn {
_StringsGraphsZhCn._(this._root);
@override final _StringsZhCn _root; // ignore: unused_field
// Translations
@override String get attack => '攻击';
@override String get speed => '速度';
@override String get defense => '防御';
@override String get cheese => '奶酪层';
}
// Path: statCellNum
class _StringsStatCellNumZhCn implements _StringsStatCellNumEn {
_StringsStatCellNumZhCn._(this._root);
@override final _StringsZhCn _root; // ignore: unused_field
// Translations
@override String get xpLevel => 'XP等级';
@override String get xpProgress => '到下一等级的进度';
@override String xpFrom0ToLevel({required Object n}) => '从 0 到 ${n} 等级的进度';
@override String get xpLeft => 'XP 还有';
@override String get hoursPlayed => '小时游玩';
@override String get onlineGames => '在线游戏场次';
@override String get gamesWon => '获胜场次';
@override String get totalGames => '总在线游戏场次';
@override String get totalWon => '总在线游戏获胜场次';
@override String get friends => '好友';
@override String get apm => '每分\n发送垃圾行';
@override String get vs => 'VS\n分数';
@override String get recordLB => '名次';
@override String get lbp => '名次';
@override String get lbpShort => '名次';
@override String get lbpc => '地区\n名次';
@override String get lbpcShort => '地区名次';
@override String get gamesPlayed => '游戏\n场次';
@override String get gamesWonTL => '获胜\n场次';
@override String get winrate => '胜率';
@override String get level => '等级';
@override String get score => '分数';
@override String get spp => '每块\n得分';
@override String get pieces => '放置\n块数';
@override String get pps => '每秒\n放置块数';
@override String get finesseFaults => '非极简\n操作';
@override String get finessePercentage => '极简率';
@override String get keys => '按键';
@override String get kpp => '每块\n按键';
@override String get kps => '每秒\n按键';
@override String get tr => 'Tetra分数';
@override String get rd => '偏移值';
@override String get app => '每块发送垃圾行数';
@override String get appDescription => '(Attack per Piece, 简称APP) 主要效率指标。表示玩家每块可以发动多少次攻击';
@override String get vsapmDescription => '基本上可以告诉你在攻击中利用垃圾行的效率';
@override String get dss => '每秒\n挖掘';
@override String get dssDescription => '(Downstack per Second, 简称 DS/S) 测量一秒钟内清除多少条垃圾行。';
@override String get dsp => '每块\n挖掘';
@override String get dspDescription => '(Downstack per Piece, 简称 DS/P) 测量每一块清除多少条垃圾行。';
@override String get appdsp => 'APP + DS/P';
@override String get appdspDescription => '只是每块发送垃圾行数与每块挖掘之和。';
@override String get cheese => '垃圾行\n混乱指数';
@override String get cheeseDescription => '(Cheese Index, 简称Cheese) 是玩家发出的垃圾行有多整齐/混乱的近似值。低数据代表整齐,高数据代表混乱。\n由 kerrmunism 发明';
@override String get gbe => '垃圾行\n效率';
@override String get gbeDescription => '(Garbage Efficity, 简称Gb Eff.) 测量玩家如何很好地利用他们收到的垃圾行。高数据代表更好或者他们更多地用TA的垃圾行低数据代表TA大多将垃圾行送回奶酪层或者很少清理垃圾行。\n由 Zepheniah 与 Dragonboy 发明。';
@override String get nyaapp => '加权\nAPP';
@override String get nyaappDescription => '(Weighted APP, 简称wAPP) 在本质上是在衡量您在保持高 APP 的同时发送奶酪的能力。\n由 Wertj 发明。';
@override String get area => '面积';
@override String get areaDescription => '如果排除 Cheese 和 vs/apm 部分,您的形状在图表上占据了多少空间';
@override String get estOfTR => '预测 TR';
@override String get estOfTRShort => '预测 TR';
@override String get accOfEst => '预测实际差量';
@override String get accOfEstShort => '预测实际差量';
}
// Path: numOfGameActions
class _StringsNumOfGameActionsZhCn implements _StringsNumOfGameActionsEn {
_StringsNumOfGameActionsZhCn._(this._root);
@override final _StringsZhCn _root; // ignore: unused_field
// Translations
@override String get pc => '全消数';
@override String get hold => '暂存数';
@override String inputs({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 次按键',
one: '${n} 次按键',
two: '${n} 次按键',
few: '${n} 次按键',
many: '${n} 次按键',
other: '${n} 次按键',
);
@override String tspinsTotal({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 次T旋',
one: '${n} 次T旋',
two: '${n} 次T旋',
few: '${n} 次T旋',
many: '${n} 次T旋',
other: '${n} 次T旋',
);
@override String lineClears({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '清除了 ${n}',
one: '清除了 ${n}',
two: '清除了 ${n}',
few: '清除了 ${n}',
many: '清除了 ${n}',
other: '清除了 ${n}',
);
}
// Path: popupActions
class _StringsPopupActionsZhCn implements _StringsPopupActionsEn {
_StringsPopupActionsZhCn._(this._root);
@override final _StringsZhCn _root; // ignore: unused_field
// Translations
@override String get cancel => '取消';
@override String get submit => '确定';
@override String get ok => '彳亍';
}
// Path: errors
class _StringsErrorsZhCn implements _StringsErrorsEn {
_StringsErrorsZhCn._(this._root);
@override final _StringsZhCn _root; // ignore: unused_field
// Translations
@override String connection({required Object code, required Object message}) => '连接错误: ${code} ${message}';
@override String get noSuchUser => '没有这样的用户';
@override String get noSuchUserSub => '检查用户名的拼写是否错误,也许用户不存在';
@override String get discordNotAssigned => '没有用户绑定到该Discord ID';
@override String get discordNotAssignedSub => '您必须输入合法的ID';
@override String get history => '此玩家没有历史';
@override String get actionSuggestion => '你也许想';
@override String get p1nkl0bst3rTLmatches => '没有比赛';
@override String get clientException => '连接不到网络';
@override String get forbidden => '你的IP地址被封禁';
@override String forbiddenSub({required Object nickname}) => '请关闭您的VPN。若问题仍然存在请联系 ${nickname}';
@override String get tooManyRequests => '您申请的请求过多';
@override String get tooManyRequestsSub => '等一会再试吧';
@override String get internal => 'tetr.io 似乎出错了';
@override String get internalSub => 'osk也许要被';
@override String get internalWebVersion => 'tetr.io 或者 oskware_bridge 似乎出错了';
@override String get internalWebVersionSub => '如果 osk 说没有什么问题请让dan63047知道';
@override String get oskwareBridge => 'oskware_bridge 似乎出错了';
@override String get oskwareBridgeSub => '请让 dan63047 知道';
@override String get p1nkl0bst3rForbidden => '第三方API封禁了你的IP地址';
@override String get p1nkl0bst3rTooManyRequests => '第三方API……太多请求了。';
@override String get p1nkl0bst3rinternal => 'p1nkl0bst3r 那边似乎出错了';
@override String get p1nkl0bst3rinternalWebVersion => 'p1nkl0bst3r (或 on oskware_bridge, 其实我并不知道) 那边似乎出错了';
@override String get replayAlreadySaved => '你已保存此回放';
@override String get replayExpired => '回放已过期';
@override String get replayRejected => '第三方API封禁了你的IP地址';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on Translations {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'locales.en': return 'English';
case 'locales.ru': return 'Russian (Русский)';
case 'locales.zh-CN': return 'Simplified Chinese (简体中文)';
case 'tetraLeague': return 'Tetra League';
case 'tlRecords': return 'TL Records';
case 'history': return 'History';
case 'sprint': return '40 Lines';
case 'blitz': return 'Blitz';
case 'recent': return 'Recent';
case 'recentRuns': return 'Recent runs';
case 'blitzScore': return ({required Object p}) => '${p} points';
case 'openSPreplay': return 'Open replay in TETR.IO';
case 'downloadSPreplay': return 'Download replay';
case 'other': return 'Other';
case 'distinguishment': return 'Distinguishment';
case 'zen': return 'Zen';
case 'bio': return 'Bio';
case 'news': return 'News';
case 'newsParts.leaderboardStart': return 'Got ';
case 'newsParts.leaderboardMiddle': return 'on ';
case 'newsParts.personalbest': return 'Got a new PB in ';
case 'newsParts.personalbestMiddle': return 'of ';
case 'newsParts.badgeStart': return 'Obtained a ';
case 'newsParts.badgeEnd': return 'badge';
case 'newsParts.rankupStart': return 'Obtained ';
case 'newsParts.rankupMiddle': return ({required Object r}) => '${r} rank ';
case 'newsParts.rankupEnd': return 'in Tetra League';
case 'newsParts.tetoSupporter': return 'TETR.IO supporter';
case 'newsParts.supporterStart': return 'Become a ';
case 'newsParts.supporterGiftStart': return 'Received the gift of ';
case 'newsParts.unknownNews': return ({required Object type}) => 'Unknown news of type ${type}';
case 'openSearch': return 'Search player';
case 'closeSearch': return 'Close search';
case 'searchHint': return 'Nickname, ID or Discord userID (with "ds:" prefix)';
case 'refresh': return 'Refresh';
case 'fetchAndsaveTLHistory': return 'Get player history';
case 'fetchAndSaveOldTLmatches': return 'Get Tetra League matches history';
case 'fetchAndsaveTLHistoryResult': return ({required Object number}) => '${number} states was found';
case 'fetchAndSaveOldTLmatchesResult': return ({required Object number}) => '${number} matches was found';
case 'showStoredData': return 'Show stored data';
case 'statsCalc': return 'Stats Calculator';
case 'settings': return 'Settings';
case 'track': return 'Track';
case 'stopTracking': return 'Stop\ntracking';
case 'becameTracked': return 'Added to tracking list!';
case 'compare': return 'Compare';
case 'stoppedBeingTracked': return 'Removed from tracking list!';
case 'tlLeaderboard': return 'Tetra League leaderboard';
case 'noRecords': return 'No records';
case 'noOldRecords': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: 'No records',
one: 'Only ${n} record',
two: 'Only ${n} records',
few: 'Only ${n} records',
many: 'Only ${n} records',
other: 'Only ${n} records',
);
case 'noRecord': return 'No record';
case 'botRecord': return 'Bots are not allowed to set records';
case 'anonRecord': return 'Guests are not allowed to set records';
case 'notEnoughData': return 'Not enough data';
case 'noHistorySaved': return 'No history saved';
case 'pseudoTooltipHeaderInit': return 'Hover over point';
case 'pseudoTooltipFooterInit': return 'to see detailed data';
case 'obtainDate': return ({required Object date}) => 'Obtained ${date}';
case 'fetchDate': return ({required Object date}) => 'Fetched ${date}';
case 'exactGametime': return 'Exact gametime';
case 'bigRedBanned': return 'BANNED';
case 'normalBanned': return 'Banned';
case 'bigRedBadStanding': return 'BAD STANDING';
case 'copiedToClipboard': return 'Copied to clipboard!';
case 'playerRoleAccount': return ' account ';
case 'wasFromBeginning': return 'that was from very beginning';
case 'created': return 'created';
case 'botCreatedBy': return 'by';
case 'notSupporter': return 'Not a supporter';
case 'assignedManualy': return 'That badge was assigned manualy by TETR.IO admins';
case 'supporter': return ({required Object tier}) => 'Supporter tier ${tier}';
case 'comparingWith': return ({required Object newDate, required Object oldDate}) => 'Data from ${newDate} comparing with ${oldDate}';
case 'top': return 'Top';
case 'topRank': return 'Top rank';
case 'verdictGeneral': return ({required Object n, required Object verdict, required Object rank}) => '${n} ${verdict} than ${rank} rank average';
case 'verdictBetter': return 'better';
case 'verdictWorse': return 'worse';
case 'smooth': return 'Smooth';
case 'postSeason': return 'Off-season';
case 'seasonStarts': return 'Season starts in:';
case 'nanow': return 'Not avaliable for now...';
case 'seasonEnds': return ({required Object countdown}) => 'Season ends in ${countdown}';
case 'seasonEnded': return 'Season has ended';
case 'gamesUntilRanked': return ({required Object left}) => '${left} games until being ranked';
case 'numOfVictories': return ({required Object wins}) => '~${wins} victories';
case 'promotionOnNextWin': return 'Promotion on next win';
case 'numOfdefeats': return ({required Object losses}) => '~${losses} defeats';
case 'demotionOnNextLoss': return 'Demotion on next loss';
case 'nerdStats': return 'Nerd Stats';
case 'playersYouTrack': return 'Players you track';
case 'formula': return 'Formula';
case 'exactValue': return 'Exact value';
case 'neverPlayedTL': return 'That user never played Tetra League';
case 'botTL': return 'Bots are not allowed to play Tetra League';
case 'anonTL': return 'Guests are not allowed to play Tetra League';
case 'quickPlay': return 'Quick Play';
case 'expert': return 'Expert';
case 'withMods': return 'With mods';
case 'withModsPlural': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: 'with ${n} mods',
one: 'with ${n} mod',
two: 'with ${n} mods',
few: 'with ${n} mods',
many: 'with ${n} mods',
other: 'with ${n} mods',
);
case 'exportDB': return 'Export local database';
case 'exportDBDescription': return 'It contains states and Tetra League records of the tracked players and list of tracked players.';
case 'desktopExportAlertTitle': return 'Desktop export';
case 'desktopExportText': return 'It seems like you using this app on desktop. Check your documents folder, you should find "TetraStats.db". Copy it somewhere';
case 'androidExportAlertTitle': return 'Android export';
case 'androidExportText': return ({required Object exportedDB}) => 'Exported.\n${exportedDB}';
case 'importDB': return 'Import local database';
case 'importDBDescription': return 'Restore your backup. Notice that already stored database will be overwritten.';
case 'importWrongFileType': return 'Wrong file type';
case 'importCancelled': return 'Operation was cancelled';
case 'importSuccess': return 'Import successful';
case 'yourID': return 'Your TETR.IO account';
case 'yourIDAlertTitle': return 'Your nickname in TETR.IO';
case 'yourIDText': return 'When app loads, it will retrieve data for this account';
case 'language': return 'Language';
case 'updateInBackground': return 'Update stats in the background';
case 'updateInBackgroundDescription': return 'While Tetra Stats is running, it can update stats of the current player when cache expires';
case 'customization': return 'Customization';
case 'customizationDescription': return 'Change appearance of different things in Tetra Stats UI';
case 'oskKagari': return 'Osk Kagari gimmick';
case 'oskKagariDescription': return 'If on, osk\'s rank on main view will be rendered as :kagari:';
case 'AccentColor': return 'Accent color';
case 'AccentColorDescription': return 'Almost all interactive UI elements highlighted with this color';
case 'timestamps': return 'Timestamps';
case 'timestampsDescription': return 'You can choose, in which way timestamps shows time';
case 'timestampsAbsoluteGMT': return 'Absolute (GMT)';
case 'timestampsAbsoluteLocalTime': return 'Absolute (Your timezone)';
case 'timestampsRelative': return 'Relative';
case 'rating': return 'Main representation of rating';
case 'ratingDescription': return 'TR is not linear, while Glicko does not have boundaries and percentile is volatile';
case 'ratingLBposition': return 'LB position';
case 'sheetbotGraphs': return 'Sheetbot-like behavior for radar graphs';
case 'sheetbotGraphsDescription': return 'If on, points on the graphs can appear on the opposite half of the graph if value is negative';
case 'lbStats': return 'Show leaderboard based stats';
case 'lbStatsDescription': return 'That will impact on loading times, but will allow you to see position on LB by stats and comparison with average values';
case 'aboutApp': return 'About app';
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r\nTETR.IO replay grabber API by szy';
case 'stateViewTitle': return ({required Object nickname, required Object date}) => '${nickname} account on ${date}';
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
case 'matchesViewTitle': return ({required Object nickname}) => '${nickname} TL matches';
case 'statesViewEntry': return ({required Object level, required Object glicko, required Object rd, required Object games}) => '${level} TR, ${glicko}±${rd} Glicko, ${games} игр сыграно';
case 'stateRemoved': return ({required Object date}) => '${date} state was removed from database!';
case 'matchRemoved': return ({required Object date}) => '${date} match was removed from database!';
case 'viewAllMatches': return 'View all matches';
case 'trackedPlayersViewTitle': return 'Stored data';
case 'trackedPlayersZeroEntrys': return 'Empty list. Press "Track" button in previous view to add current player here';
case 'trackedPlayersOneEntry': return 'There is only one player';
case 'trackedPlayersManyEntrys': return ({required Object numberOfPlayers}) => 'There are ${numberOfPlayers} players';
case 'trackedPlayersEntry': return ({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} states';
case 'trackedPlayersDescription': return ({required Object firstStateDate, required Object lastStateDate}) => 'From ${firstStateDate} until ${lastStateDate}';
case 'trackedPlayersStatesDeleted': return ({required Object nickname}) => '${nickname} states was removed from database!';
case 'duplicatedFix': return 'Remove duplicated TL mathces';
case 'compressDB': return 'Compress DB';
case 'SpaceSaved': return ({required Object size}) => 'Space saved: ${size}';
case 'averageXrank': return ({required Object rankLetter}) => 'Average ${rankLetter} rank';
case 'vs': return 'vs';
case 'inTLmatch': return 'in TL match';
case 'downloadReplay': return 'Download .ttrm replay';
case 'openReplay': return 'Open replay in TETR.IO';
case 'replaySaved': return ({required Object path}) => 'Replay saved to ${path}';
case 'match': return 'Match';
case 'timeWeightedmatch': return 'Match (time-weighted)';
case 'roundNumber': return ({required Object n}) => 'Round ${n}';
case 'statsFor': return 'Stats for';
case 'numberOfRounds': return 'Number of rounds';
case 'matchLength': return 'Match Length';
case 'roundLength': return 'Round Length';
case 'matchStats': return 'Match stats';
case 'timeWeightedmatchStats': return 'Time-weighted match stats';
case 'replayIssue': return 'Can\'t process replay';
case 'matchIsTooOld': return 'Replay is not available';
case 'winner': return 'Winner';
case 'registred': return 'Registred';
case 'playedTL': return 'Played Tetra League';
case 'winChance': return 'Win Chance';
case 'byGlicko': return 'By Glicko';
case 'byEstTR': return 'By Est. TR';
case 'compareViewNoValues': return ({required Object avgR}) => 'Please, enter username, user ID, APM-PPS-VS values (divider doesn\'t matter, only order matter) or ${avgR} (where R is rank) to both fields';
case 'compareViewWrongValue': return ({required Object value}) => 'Falied to assign ${value}';
case 'mostRecentOne': return 'Most recent one';
case 'yes': return 'Yes';
case 'no': return 'No';
case 'daysLater': return 'days later';
case 'dayseBefore': return 'days before';
case 'fromBeginning': return 'From beginning';
case 'calc': return 'Calc';
case 'calcViewNoValues': return 'Enter values to calculate the stats';
case 'rankAveragesViewTitle': return 'Ranks cutoffs';
case 'sprintAndBlitsViewTitle': return '40 lines and Blitz averages';
case 'sprintAndBlitsRelevance': return ({required Object date}) => 'Relevance: ${date}';
case 'rank': return 'Rank';
case 'averages': return 'Averages';
case 'lbViewZeroEntrys': return 'Empty list';
case 'lbViewOneEntry': return 'There is only one player';
case 'lbViewManyEntrys': return ({required Object numberOfPlayers}) => 'There are ${numberOfPlayers}';
case 'everyoneAverages': return 'Values for leaderboard';
case 'sortBy': return 'Sort by';
case 'reversed': return 'Reversed';
case 'country': return 'Country';
case 'rankAverages': return ({required Object rank}) => 'Values for ${rank} rank';
case 'players': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} players',
one: '${n} player',
two: '${n} players',
few: '${n} players',
many: '${n} players',
other: '${n} players',
);
case 'games': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} games',
one: '${n} game',
two: '${n} games',
few: '${n} games',
many: '${n} games',
other: '${n} games',
);
case 'gamesPlayed': return ({required Object games}) => '${games} played';
case 'chart': return 'Chart';
case 'entries': return 'Entries';
case 'minimums': return 'Minimums';
case 'maximums': return 'Maximums';
case 'lowestValues': return 'Lowest Values';
case 'averageValues': return 'Average Values';
case 'highestValues': return 'Highest Values';
case 'forPlayer': return ({required Object username}) => 'for player ${username}';
case 'currentAxis': return ({required Object axis}) => '${axis} axis:';
case 'p1nkl0bst3rAlert': return 'That data was retrived from third party API maintained by p1nkl0bst3r';
case 'notForWeb': return 'Function is not available for web version';
case 'graphs.attack': return 'Attack';
case 'graphs.speed': return 'Speed';
case 'graphs.defense': return 'Defense';
case 'graphs.cheese': return 'Cheese';
case 'statCellNum.xpLevel': return 'XP Level';
case 'statCellNum.xpProgress': return 'Progress to next level';
case 'statCellNum.xpFrom0ToLevel': return ({required Object n}) => 'Progress from 0 XP to level ${n}';
case 'statCellNum.xpLeft': return 'XP left';
case 'statCellNum.hoursPlayed': return 'Hours\nPlayed';
case 'statCellNum.onlineGames': return 'Online\nGames';
case 'statCellNum.gamesWon': return 'Games\nWon';
case 'statCellNum.totalGames': return 'Total Games Played';
case 'statCellNum.totalWon': return 'Total Games Won';
case 'statCellNum.friends': return 'Friends';
case 'statCellNum.apm': return 'Attack\nPer Minute';
case 'statCellNum.vs': return 'Versus\nScore';
case 'statCellNum.recordLB': return 'Leaderboard placement';
case 'statCellNum.lbp': return 'Leaderboard\nplacement';
case 'statCellNum.lbpShort': return '№ in LB';
case 'statCellNum.lbpc': return 'Country LB\nplacement';
case 'statCellNum.lbpcShort': return '№ in local LB';
case 'statCellNum.gamesPlayed': return 'Games\nplayed';
case 'statCellNum.gamesWonTL': return 'Games\nWon';
case 'statCellNum.winrate': return 'Winrate';
case 'statCellNum.level': return 'Level';
case 'statCellNum.score': return 'Score';
case 'statCellNum.spp': return 'Score\nPer Piece';
case 'statCellNum.pieces': return 'Pieces\nPlaced';
case 'statCellNum.pps': return 'Pieces\nPer Second';
case 'statCellNum.finesseFaults': return 'Finesse\nFaults';
case 'statCellNum.finessePercentage': return 'Finesse\nPercentage';
case 'statCellNum.keys': return 'Key\nPresses';
case 'statCellNum.kpp': return 'KP Per\nPiece';
case 'statCellNum.kps': return 'KP Per\nSecond';
case 'statCellNum.tr': return 'Tetra Rating';
case 'statCellNum.rd': return 'Rating Deviation';
case 'statCellNum.app': return 'Attack Per Piece';
case 'statCellNum.appDescription': return '(Abbreviated as APP) Main efficiency metric. Tells how many attack you producing per piece';
case 'statCellNum.vsapmDescription': return 'Basically, tells how much and how efficient you using garbage in your attacks';
case 'statCellNum.dss': return 'Downstack\nPer Second';
case 'statCellNum.dssDescription': return '(Abbreviated as DS/S) Downstack per Second measures how many garbage lines you clear in a second.';
case 'statCellNum.dsp': return 'Downstack\nPer Piece';
case 'statCellNum.dspDescription': return '(Abbreviated as DS/P) Downstack per Piece measures how many garbage lines you clear per piece.';
case 'statCellNum.appdsp': return 'APP + DS/P';
case 'statCellNum.appdspDescription': return 'Just a sum of Attack per Piece and Downstack per Piece.';
case 'statCellNum.cheese': return 'Cheese\nIndex';
case 'statCellNum.cheeseDescription': return '(Abbreviated as Cheese) Cheese Index is an approximation how much clean / cheese garbage player sends. Lower = more clean. Higher = more cheese.\nInvented by kerrmunism';
case 'statCellNum.gbe': return 'Garbage\nEfficiency';
case 'statCellNum.gbeDescription': return '(Abbreviated as Gb Eff.) Garbage Efficiency measures how well player uses their garbage. Higher = better or they use their garbage more. Lower = they mostly send their garbage back at cheese or rarely clear garbage.\nInvented by Zepheniah and Dragonboy.';
case 'statCellNum.nyaapp': return 'Weighted\nAPP';
case 'statCellNum.nyaappDescription': return '(Abbreviated as wAPP) Essentially, a measure of your ability to send cheese while still maintaining a high APP.\nInvented by Wertj.';
case 'statCellNum.area': return 'Area';
case 'statCellNum.areaDescription': return 'How much space your shape takes up on the graph, if you exclude the cheese and vs/apm sections';
case 'statCellNum.estOfTR': return 'Estimated TR';
case 'statCellNum.estOfTRShort': return 'Est. TR';
case 'statCellNum.accOfEst': return 'Accuracy';
case 'statCellNum.accOfEstShort': return 'Acc.';
case 'playerRole.user': return 'User';
case 'playerRole.banned': return 'Banned';
case 'playerRole.bot': return 'Bot';
case 'playerRole.sysop': return 'System operator';
case 'playerRole.admin': return 'Admin';
case 'playerRole.mod': return 'Moderator';
case 'playerRole.halfmod': return 'Community moderator';
case 'playerRole.anon': return 'Anonymous';
case 'numOfGameActions.pc': return 'All Clears';
case 'numOfGameActions.hold': return 'Holds';
case 'numOfGameActions.inputs': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} key presses',
one: '${n} key press',
two: '${n} key presses',
few: '${n} key presses',
many: '${n} key presses',
other: '${n} key presses',
);
case 'numOfGameActions.tspinsTotal': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} T-spins total',
one: '${n} T-spin total',
two: '${n} T-spins total',
few: '${n} T-spins total',
many: '${n} T-spins total',
other: '${n} T-spins total',
);
case 'numOfGameActions.lineClears': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
zero: '${n} lines cleared',
one: '${n} line cleared',
two: '${n} lines cleared',
few: '${n} lines cleared',
many: '${n} lines cleared',
other: '${n} lines cleared',
);
case 'popupActions.cancel': return 'Cancel';
case 'popupActions.submit': return 'Submit';
case 'popupActions.ok': return 'OK';
case 'errors.connection': return ({required Object code, required Object message}) => 'Some issue with connection: ${code} ${message}';
case 'errors.noSuchUser': return 'No such user';
case 'errors.noSuchUserSub': return 'Either you mistyped something, or the account no longer exists';
case 'errors.discordNotAssigned': return 'No user assigned to given Discord ID';
case 'errors.discordNotAssignedSub': return 'Make sure you provided valid ID';
case 'errors.history': return 'History for that player is missing';
case 'errors.actionSuggestion': return 'Perhaps, you want to';
case 'errors.p1nkl0bst3rTLmatches': return 'No Tetra League matches was found';
case 'errors.clientException': return 'No internet connection';
case 'errors.forbidden': return 'Your IP address is blocked';
case 'errors.forbiddenSub': return ({required Object nickname}) => 'If you are using VPN or Proxy, turn it off. If this does not help, reach out to ${nickname}';
case 'errors.tooManyRequests': return 'You have been rate limited.';
case 'errors.tooManyRequestsSub': return 'Wait a few moments and try again';
case 'errors.internal': return 'Something happened on the tetr.io side';
case 'errors.internalSub': return 'osk, probably, already aware about it';
case 'errors.internalWebVersion': return 'Something happened on the tetr.io side (or on oskware_bridge, idk honestly)';
case 'errors.internalWebVersionSub': return 'If osk status page says that everything is ok, let dan63047 know about this issue';
case 'errors.oskwareBridge': return 'Something happened with oskware_bridge';
case 'errors.oskwareBridgeSub': return 'Let dan63047 know';
case 'errors.p1nkl0bst3rForbidden': return 'Third party API blocked your IP address';
case 'errors.p1nkl0bst3rTooManyRequests': return 'Too many requests to third party API. Try again later';
case 'errors.p1nkl0bst3rinternal': return 'Something happened on the p1nkl0bst3r side';
case 'errors.p1nkl0bst3rinternalWebVersion': return 'Something happened on the p1nkl0bst3r side (or on oskware_bridge, idk honestly)';
case 'errors.replayAlreadySaved': return 'Replay already saved';
case 'errors.replayExpired': return 'Replay expired and not available anymore';
case 'errors.replayRejected': return 'Third party API blocked your IP address';
case 'countries.': return 'Not selected';
case 'countries.AF': return 'Afghanistan';
case 'countries.AX': return 'Åland Islands';
case 'countries.AL': return 'Albania';
case 'countries.DZ': return 'Algeria';
case 'countries.AS': return 'American Samoa';
case 'countries.AD': return 'Andorra';
case 'countries.AO': return 'Angola';
case 'countries.AI': return 'Anguilla';
case 'countries.AQ': return 'Antarctica';
case 'countries.AG': return 'Antigua and Barbuda';
case 'countries.AR': return 'Argentina';
case 'countries.AM': return 'Armenia';
case 'countries.AW': return 'Aruba';
case 'countries.AU': return 'Australia';
case 'countries.AT': return 'Austria';
case 'countries.AZ': return 'Azerbaijan';
case 'countries.BS': return 'Bahamas';
case 'countries.BH': return 'Bahrain';
case 'countries.BD': return 'Bangladesh';
case 'countries.BB': return 'Barbados';
case 'countries.BY': return 'Belarus';
case 'countries.BE': return 'Belgium';
case 'countries.BZ': return 'Belize';
case 'countries.BJ': return 'Benin';
case 'countries.BM': return 'Bermuda';
case 'countries.BT': return 'Bhutan';
case 'countries.BO': return 'Bolivia, Plurinational State of';
case 'countries.BA': return 'Bosnia and Herzegovina';
case 'countries.BW': return 'Botswana';
case 'countries.BV': return 'Bouvet Island';
case 'countries.BR': return 'Brazil';
case 'countries.IO': return 'British Indian Ocean Territory';
case 'countries.BN': return 'Brunei Darussalam';
case 'countries.BG': return 'Bulgaria';
case 'countries.BF': return 'Burkina Faso';
case 'countries.BI': return 'Burundi';
case 'countries.KH': return 'Cambodia';
case 'countries.CM': return 'Cameroon';
case 'countries.CA': return 'Canada';
case 'countries.CV': return 'Cape Verde';
case 'countries.BQ': return 'Caribbean Netherlands';
case 'countries.KY': return 'Cayman Islands';
case 'countries.CF': return 'Central African Republic';
case 'countries.TD': return 'Chad';
case 'countries.CL': return 'Chile';
case 'countries.CN': return 'China';
case 'countries.CX': return 'Christmas Island';
case 'countries.CC': return 'Cocos (Keeling) Islands';
case 'countries.CO': return 'Colombia';
case 'countries.KM': return 'Comoros';
case 'countries.CG': return 'Congo';
case 'countries.CD': return 'Congo, the Democratic Republic of the';
case 'countries.CK': return 'Cook Islands';
case 'countries.CR': return 'Costa Rica';
case 'countries.CI': return 'Côte d\'Ivoire';
case 'countries.HR': return 'Croatia';
case 'countries.CU': return 'Cuba';
case 'countries.CW': return 'Curaçao';
case 'countries.CY': return 'Cyprus';
case 'countries.CZ': return 'Czech Republic';
case 'countries.DK': return 'Denmark';
case 'countries.DJ': return 'Djibouti';
case 'countries.DM': return 'Dominica';
case 'countries.DO': return 'Dominican Republic';
case 'countries.EC': return 'Ecuador';
case 'countries.EG': return 'Egypt';
case 'countries.SV': return 'El Salvador';
case 'countries.GB-ENG': return 'England';
case 'countries.GQ': return 'Equatorial Guinea';
case 'countries.ER': return 'Eritrea';
case 'countries.EE': return 'Estonia';
case 'countries.ET': return 'Ethiopia';
case 'countries.EU': return 'Europe';
case 'countries.FK': return 'Falkland Islands (Malvinas)';
case 'countries.FO': return 'Faroe Islands';
case 'countries.FJ': return 'Fiji';
case 'countries.FI': return 'Finland';
case 'countries.FR': return 'France';
case 'countries.GF': return 'French Guiana';
case 'countries.PF': return 'French Polynesia';
case 'countries.TF': return 'French Southern Territories';
case 'countries.GA': return 'Gabon';
case 'countries.GM': return 'Gambia';
case 'countries.GE': return 'Georgia';
case 'countries.DE': return 'Germany';
case 'countries.GH': return 'Ghana';
case 'countries.GI': return 'Gibraltar';
case 'countries.GR': return 'Greece';
case 'countries.GL': return 'Greenland';
case 'countries.GD': return 'Grenada';
case 'countries.GP': return 'Guadeloupe';
case 'countries.GU': return 'Guam';
case 'countries.GT': return 'Guatemala';
case 'countries.GG': return 'Guernsey';
case 'countries.GN': return 'Guinea';
case 'countries.GW': return 'Guinea-Bissau';
case 'countries.GY': return 'Guyana';
case 'countries.HT': return 'Haiti';
case 'countries.HM': return 'Heard Island and McDonald Islands';
case 'countries.VA': return 'Holy See (Vatican City State)';
case 'countries.HN': return 'Honduras';
case 'countries.HK': return 'Hong Kong';
case 'countries.HU': return 'Hungary';
case 'countries.IS': return 'Iceland';
case 'countries.IN': return 'India';
case 'countries.ID': return 'Indonesia';
case 'countries.IR': return 'Iran, Islamic Republic of';
case 'countries.IQ': return 'Iraq';
case 'countries.IE': return 'Ireland';
case 'countries.IM': return 'Isle of Man';
case 'countries.IL': return 'Israel';
case 'countries.IT': return 'Italy';
case 'countries.JM': return 'Jamaica';
case 'countries.JP': return 'Japan';
case 'countries.JE': return 'Jersey';
case 'countries.JO': return 'Jordan';
case 'countries.KZ': return 'Kazakhstan';
case 'countries.KE': return 'Kenya';
case 'countries.KI': return 'Kiribati';
case 'countries.KP': return 'Korea, Democratic People\'s Republic of';
case 'countries.KR': return 'Korea, Republic of';
case 'countries.XK': return 'Kosovo';
case 'countries.KW': return 'Kuwait';
case 'countries.KG': return 'Kyrgyzstan';
case 'countries.LA': return 'Lao People\'s Democratic Republic';
case 'countries.LV': return 'Latvia';
case 'countries.LB': return 'Lebanon';
case 'countries.LS': return 'Lesotho';
case 'countries.LR': return 'Liberia';
case 'countries.LY': return 'Libya';
case 'countries.LI': return 'Liechtenstein';
case 'countries.LT': return 'Lithuania';
case 'countries.LU': return 'Luxembourg';
case 'countries.MO': return 'Macao';
case 'countries.MK': return 'Macedonia, the former Yugoslav Republic of';
case 'countries.MG': return 'Madagascar';
case 'countries.MW': return 'Malawi';
case 'countries.MY': return 'Malaysia';
case 'countries.MV': return 'Maldives';
case 'countries.ML': return 'Mali';
case 'countries.MT': return 'Malta';
case 'countries.MH': return 'Marshall Islands';
case 'countries.MQ': return 'Martinique';
case 'countries.MR': return 'Mauritania';
case 'countries.MU': return 'Mauritius';
case 'countries.YT': return 'Mayotte';
case 'countries.MX': return 'Mexico';
case 'countries.FM': return 'Micronesia, Federated States of';
case 'countries.MD': return 'Moldova, Republic of';
case 'countries.MC': return 'Monaco';
case 'countries.ME': return 'Montenegro';
case 'countries.MA': return 'Morocco';
case 'countries.MN': return 'Mongolia';
case 'countries.MS': return 'Montserrat';
case 'countries.MZ': return 'Mozambique';
case 'countries.MM': return 'Myanmar';
case 'countries.NA': return 'Namibia';
case 'countries.NR': return 'Nauru';
case 'countries.NP': return 'Nepal';
case 'countries.NL': return 'Netherlands';
case 'countries.AN': return 'Netherlands Antilles';
case 'countries.NC': return 'New Caledonia';
case 'countries.NZ': return 'New Zealand';
case 'countries.NI': return 'Nicaragua';
case 'countries.NE': return 'Niger';
case 'countries.NG': return 'Nigeria';
case 'countries.NU': return 'Niue';
case 'countries.NF': return 'Norfolk Island';
case 'countries.GB-NIR': return 'Northern Ireland';
case 'countries.MP': return 'Northern Mariana Islands';
case 'countries.NO': return 'Norway';
case 'countries.OM': return 'Oman';
case 'countries.PK': return 'Pakistan';
case 'countries.PW': return 'Palau';
case 'countries.PS': return 'Palestine';
case 'countries.PA': return 'Panama';
case 'countries.PG': return 'Papua New Guinea';
case 'countries.PY': return 'Paraguay';
case 'countries.PE': return 'Peru';
case 'countries.PH': return 'Philippines';
case 'countries.PN': return 'Pitcairn';
case 'countries.PL': return 'Poland';
case 'countries.PT': return 'Portugal';
case 'countries.PR': return 'Puerto Rico';
case 'countries.QA': return 'Qatar';
case 'countries.RE': return 'Réunion';
case 'countries.RO': return 'Romania';
case 'countries.RU': return 'Russian Federation';
case 'countries.RW': return 'Rwanda';
case 'countries.BL': return 'Saint Barthélemy';
case 'countries.SH': return 'Saint Helena, Ascension and Tristan da Cunha';
case 'countries.KN': return 'Saint Kitts and Nevis';
case 'countries.LC': return 'Saint Lucia';
case 'countries.MF': return 'Saint Martin';
case 'countries.PM': return 'Saint Pierre and Miquelon';
case 'countries.VC': return 'Saint Vincent and the Grenadines';
case 'countries.WS': return 'Samoa';
case 'countries.SM': return 'San Marino';
case 'countries.ST': return 'Sao Tome and Principe';
case 'countries.SA': return 'Saudi Arabia';
case 'countries.GB-SCT': return 'Scotland';
case 'countries.SN': return 'Senegal';
case 'countries.RS': return 'Serbia';
case 'countries.SC': return 'Seychelles';
case 'countries.SL': return 'Sierra Leone';
case 'countries.SG': return 'Singapore';
case 'countries.SX': return 'Sint Maarten (Dutch part)';
case 'countries.SK': return 'Slovakia';
case 'countries.SI': return 'Slovenia';
case 'countries.SB': return 'Solomon Islands';
case 'countries.SO': return 'Somalia';
case 'countries.ZA': return 'South Africa';
case 'countries.GS': return 'South Georgia and the South Sandwich Islands';
case 'countries.SS': return 'South Sudan';
case 'countries.ES': return 'Spain';
case 'countries.LK': return 'Sri Lanka';
case 'countries.SD': return 'Sudan';
case 'countries.SR': return 'Suriname';
case 'countries.SJ': return 'Svalbard and Jan Mayen Islands';
case 'countries.SZ': return 'Swaziland';
case 'countries.SE': return 'Sweden';
case 'countries.CH': return 'Switzerland';
case 'countries.SY': return 'Syrian Arab Republic';
case 'countries.TW': return 'Taiwan';
case 'countries.TJ': return 'Tajikistan';
case 'countries.TZ': return 'Tanzania, United Republic of';
case 'countries.TH': return 'Thailand';
case 'countries.TL': return 'Timor-Leste';
case 'countries.TG': return 'Togo';
case 'countries.TK': return 'Tokelau';
case 'countries.TO': return 'Tonga';
case 'countries.TT': return 'Trinidad and Tobago';
case 'countries.TN': return 'Tunisia';
case 'countries.TR': return 'Turkey';
case 'countries.TM': return 'Turkmenistan';
case 'countries.TC': return 'Turks and Caicos Islands';
case 'countries.TV': return 'Tuvalu';
case 'countries.UG': return 'Uganda';
case 'countries.UA': return 'Ukraine';
case 'countries.AE': return 'United Arab Emirates';
case 'countries.GB': return 'United Kingdom';
case 'countries.US': return 'United States';
case 'countries.UY': return 'Uruguay';
case 'countries.UM': return 'US Minor Outlying Islands';
case 'countries.UZ': return 'Uzbekistan';
case 'countries.VU': return 'Vanuatu';
case 'countries.VE': return 'Venezuela, Bolivarian Republic of';
case 'countries.VN': return 'Vietnam';
case 'countries.VG': return 'Virgin Islands, British';
case 'countries.VI': return 'Virgin Islands, U.S.';
case 'countries.GB-WLS': return 'Wales';
case 'countries.WF': return 'Wallis and Futuna Islands';
case 'countries.EH': return 'Western Sahara';
case 'countries.YE': return 'Yemen';
case 'countries.ZM': return 'Zambia';
case 'countries.ZW': return 'Zimbabwe';
case 'countries.XX': return 'Unknown';
case 'countries.XM': return 'The Moon';
default: return null;
}
}
}
extension on _StringsRu {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'locales.en': return 'Английский (English)';
case 'locales.ru': return 'Русский';
case 'locales.zh-CN': return 'Упрощенный Китайский (简体中文)';
case 'tetraLeague': return 'Тетра Лига';
case 'tlRecords': return 'Матчи ТЛ';
case 'history': return 'История';
case 'sprint': return '40 линий';
case 'blitz': return 'Блиц';
case 'recent': return 'Недавно';
case 'recentRuns': return 'Недавние';
case 'blitzScore': return ({required Object p}) => '${p} очков';
case 'openSPreplay': return 'Открыть повтор в TETR.IO';
case 'downloadSPreplay': return 'Скачать повтор';
case 'other': return 'Другое';
case 'distinguishment': return 'Заслуга';
case 'zen': return 'Дзен';
case 'bio': return 'Биография';
case 'news': return 'Новости';
case 'newsParts.leaderboardStart': return 'Взял ';
case 'newsParts.leaderboardMiddle': return 'в таблице ';
case 'newsParts.personalbest': return 'Поставил новый ЛР в ';
case 'newsParts.personalbestMiddle': return 'с результатом в ';
case 'newsParts.badgeStart': return 'Заработал значок ';
case 'newsParts.badgeEnd': return '';
case 'newsParts.rankupStart': return 'Заработал ';
case 'newsParts.rankupMiddle': return ({required Object r}) => '${r} ранг ';
case 'newsParts.rankupEnd': return 'в Тетра Лиге';
case 'newsParts.tetoSupporter': return 'TETR.IO supporter';
case 'newsParts.supporterStart': return 'Стал обладателем ';
case 'newsParts.supporterGiftStart': return 'Получил подарок в виде ';
case 'newsParts.unknownNews': return ({required Object type}) => 'Неизвестная новость типа ${type}';
case 'openSearch': return 'Искать игрока';
case 'closeSearch': return 'Закрыть поиск';
case 'searchHint': return 'Ник, ID или ID в Discord (с префиксом "ds:")';
case 'refresh': return 'Обновить';
case 'fetchAndsaveTLHistory': return 'Получить историю игрока';
case 'fetchAndSaveOldTLmatches': return 'Получить старые матчи Тетра Лиги';
case 'fetchAndsaveTLHistoryResult': return ({required Object number}) => '${number} состояний было найдено';
case 'fetchAndSaveOldTLmatchesResult': return ({required Object number}) => '${number} старых матчей было найдено';
case 'showStoredData': return 'Показать сохранённые данные';
case 'statsCalc': return 'Калькулятор статистики';
case 'settings': return 'Настройки';
case 'track': return 'Отслеживать';
case 'stopTracking': return 'Перестать\nотслеживать';
case 'becameTracked': return 'Добавлен в список отслеживания!';
case 'stoppedBeingTracked': return 'Удалён из списка отслеживания!';
case 'compare': return 'Сравнить';
case 'tlLeaderboard': return 'Рейтинговая таблица';
case 'noRecords': return 'Нет записей';
case 'noOldRecords': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: 'Нет записей',
one: 'Всего один матч',
two: 'Всего ${n} матча',
few: 'Всего ${n} матча',
many: 'Всего ${n} матчей',
other: '${n} матчей',
);
case 'noRecord': return 'Нет рекорда';
case 'botRecord': return 'Ботам нельзя ставить рекорды';
case 'anonRecord': return 'Гостям нельзя ставить рекорды';
case 'notEnoughData': return 'Недостаточно данных';
case 'noHistorySaved': return 'Нет сохранённой истории';
case 'pseudoTooltipHeaderInit': return 'Наведите курсор на точку';
case 'pseudoTooltipFooterInit': return 'чтобы узнать подробности';
case 'obtainDate': return ({required Object date}) => 'Получено ${date}';
case 'fetchDate': return ({required Object date}) => 'На момент ${date}';
case 'exactGametime': return 'Время, проведённое в игре';
case 'bigRedBanned': return 'ЗАБАНЕН';
case 'normalBanned': return 'Забанен';
case 'bigRedBadStanding': return 'ПЛОХАЯ РЕПУТАЦИЯ';
case 'copiedToClipboard': return 'Скопировано в буфер обмена!';
case 'playerRoleAccount': return ', аккаунт которого ';
case 'wasFromBeginning': return 'существовал с самого начала';
case 'created': return 'создан';
case 'botCreatedBy': return 'игроком';
case 'notSupporter': return 'Нет саппортерки';
case 'supporter': return ({required Object tier}) => 'Саппортерка ${tier} уровня';
case 'assignedManualy': return 'Этот значок был присвоен вручную администрацией TETR.IO';
case 'comparingWith': return ({required Object newDate, required Object oldDate}) => 'Данные от ${newDate} в сравнении с данными от ${oldDate}';
case 'top': return 'Топ';
case 'topRank': return 'Топ ранг';
case 'verdictGeneral': return ({required Object verdict, required Object rank, required Object n}) => '${verdict} среднего ${rank} ранга на ${n}';
case 'verdictBetter': return 'Лучше';
case 'verdictWorse': return 'Хуже';
case 'smooth': return 'Гладкий';
case 'postSeason': return 'Внесезонье';
case 'seasonStarts': return 'Сезон начнётся через:';
case 'nanow': return 'Пока недоступно...';
case 'seasonEnds': return ({required Object countdown}) => 'Сезон закончится через ${countdown}';
case 'seasonEnded': return 'Сезон закончился';
case 'gamesUntilRanked': return ({required Object left}) => '${left} матчей до получения рейтинга';
case 'numOfVictories': return ({required Object wins}) => '~${wins} побед';
case 'promotionOnNextWin': return 'Повышение после следующей победы';
case 'numOfdefeats': return ({required Object losses}) => '~${losses} поражений';
case 'demotionOnNextLoss': return 'Понижение после следующего поражения';
case 'nerdStats': return 'Для задротов';
case 'playersYouTrack': return 'Отслеживаемые игроки';
case 'formula': return 'Формула';
case 'exactValue': return 'Точное значение';
case 'neverPlayedTL': return 'Этот игрок никогда не играл в Тетра Лигу';
case 'botTL': return 'Ботам нельзя играть в Тетра Лигу';
case 'anonTL': return 'Гостям нельзя играть в Тетра Лигу';
case 'quickPlay': return 'Быстрая Игра';
case 'expert': return 'Эксперт';
case 'withMods': return 'С модами';
case 'withModsPlural': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: 'с ${n} модами',
one: 'с ${n} модом',
two: 'с ${n} модами',
few: 'с ${n} модами',
many: 'с ${n} модами',
other: 'с ${n} модами',
);
case 'exportDB': return 'Экспортировать локальную базу данных';
case 'exportDBDescription': return 'Она содержит состояния аккаунтов и их матчей в Тетра Лиге для отслеживаемых игроков и список таких игроков.';
case 'desktopExportAlertTitle': return 'Экспорт на десктопе';
case 'desktopExportText': return 'Похоже, вы используете десктопную версию. Проверьте папку "Документы", там вы должны найти файл "TetraStats.db". Скопируйте его куда-нибудь';
case 'androidExportAlertTitle': return 'Экспорт на Android';
case 'androidExportText': return ({required Object exportedDB}) => 'Экспортировано.\n${exportedDB}';
case 'importDB': return 'Импортировать локальную базу данных';
case 'importDBDescription': return 'Восстановите свою резеврную копию. Обратите внимание, что текущая база данных будет перезаписана.';
case 'importWrongFileType': return 'Неверный тип файла';
case 'importCancelled': return 'Операция была отменена';
case 'importSuccess': return 'Успешно импортировано';
case 'yourID': return 'Ваш аккаунт в TETR.IO';
case 'yourIDAlertTitle': return 'Ваш ник в TETR.IO';
case 'yourIDText': return 'При запуске приложения оно будет получать статистику этого игрока.';
case 'language': return 'Язык (Language)';
case 'updateInBackground': return 'Обновлять статистику в фоне';
case 'updateInBackgroundDescription': return 'Пока Tetra Stats работает, он может обновлять статистику самостоятельно когда кеш истекает';
case 'customization': return 'Кастомизация';
case 'customizationDescription': return 'Измените внешний вид пользовательского интерфейса Tetra Stats';
case 'oskKagari': return '"Оск Кагари" прикол';
case 'oskKagariDescription': return 'Если включено, вместо настоящего ранга оска будет рендерится :kagari:';
case 'AccentColor': return 'Цветовой акцент';
case 'AccentColorDescription': return 'Почти все интерактивные элементы пользовательского интерфейса окрашены в этот цвет';
case 'timestamps': return 'Метки времени';
case 'timestampsDescription': return 'Вы можете выбрать, каким образом метки времени показывают время';
case 'timestampsAbsoluteGMT': return 'Абсолютные (GMT)';
case 'timestampsAbsoluteLocalTime': return 'Абсолютные (Ваш часовой пояс)';
case 'timestampsRelative': return 'Относительные';
case 'rating': return 'Основное представление рейтинга';
case 'ratingDescription': return 'TR нелинеен, тогда как Glicko не имеет границ, а положение в таблице лидеров волатильно';
case 'ratingLBposition': return 'Позиция в рейтинге';
case 'sheetbotGraphs': return 'Графики-радары как у sheetBot';
case 'sheetbotGraphsDescription': return 'Если включено, точки на графике могут появляться на противоположной стороне графика если значение отрицательное';
case 'lbStats': return 'Показывать статистику, основанную на рейтинговой таблице';
case 'lbStatsDescription': return 'Это повлияет на время загрузки, но позволит видеть положение в рейтинге и сравнение со средними значениями по рангу по каждой стате';
case 'aboutApp': return 'О приложении';
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r\nВозможность скачивать повторы из TETR.IO предоставляет szy';
case 'stateViewTitle': return ({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
case 'matchesViewTitle': return ({required Object nickname}) => 'Матчи аккаунта ${nickname}';
case 'statesViewEntry': return ({required Object level, required Object glicko, required Object rd, required Object games}) => '${level} TR, ${glicko}±${rd} Glicko, ${games} игр сыграно';
case 'stateRemoved': return ({required Object date}) => 'Состояние от ${date} было удалено из локальной базы данных!';
case 'matchRemoved': return ({required Object date}) => 'Матч от ${date} был удален из локальной базы данных!';
case 'viewAllMatches': return 'Все матчи';
case 'trackedPlayersViewTitle': return 'Сохранённые данные';
case 'trackedPlayersZeroEntrys': return 'Пустой список. Вернитесь на предыдущий экран и нажмите кнопку "Отслеживать", чтобы текущий игрок появился здесь';
case 'trackedPlayersOneEntry': return 'В списке только один игрок';
case 'trackedPlayersManyEntrys': return ({required Object numberOfPlayers}) => 'В списке ${numberOfPlayers} игроков';
case 'trackedPlayersEntry': return ({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} состояний';
case 'trackedPlayersDescription': return ({required Object firstStateDate, required Object lastStateDate}) => 'Начиная с ${firstStateDate} и заканчивая ${lastStateDate}';
case 'trackedPlayersStatesDeleted': return ({required Object nickname}) => 'Состояния аккаунта ${nickname} были удалены из локальной базы данных!';
case 'duplicatedFix': return 'Удалить дубликаты матчей в Тетра Лиге';
case 'compressDB': return 'Сжать базу данных';
case 'SpaceSaved': return ({required Object size}) => 'Места освобождено: ${size}';
case 'averageXrank': return ({required Object rankLetter}) => 'Средний ${rankLetter} ранг';
case 'vs': return 'против';
case 'inTLmatch': return 'в матче ТЛ';
case 'downloadReplay': return 'Скачать .ttrm повтор';
case 'openReplay': return 'Открыть повтор в TETR.IO';
case 'replaySaved': return ({required Object path}) => 'Повтор сохранён по пути ${path}';
case 'match': return 'Матч';
case 'timeWeightedmatch': return 'Матч (взвешенная по времени)';
case 'roundNumber': return ({required Object n}) => 'Раунд ${n}';
case 'statsFor': return 'Статистика за';
case 'numberOfRounds': return 'Количество раундов';
case 'matchLength': return 'Продолжительность матча';
case 'roundLength': return 'Продолжительность раунда';
case 'matchStats': return 'Статистика матча';
case 'timeWeightedmatchStats': return 'Взвешенная по времени cтатистика матча';
case 'replayIssue': return 'Ошибка обработки повтора';
case 'matchIsTooOld': return 'Информация о повторе недоступна';
case 'winner': return 'Победитель';
case 'registred': return 'Зарегистрирован';
case 'playedTL': return 'Играл в Тетра Лигу';
case 'winChance': return 'Шансы на победу';
case 'byGlicko': return 'По Glicko';
case 'byEstTR': return 'По расч. TR';
case 'compareViewNoValues': return ({required Object avgR}) => 'Пожалуйста, введите никнейм, ID, APM-PPS-VS (неважно, какой разделитель, важен порядок) или ${avgR} (где R это ранг), в оба поля';
case 'compareViewWrongValue': return ({required Object value}) => 'Не удалось получить ${value}';
case 'mostRecentOne': return 'Самый последний';
case 'yes': return 'Да';
case 'no': return 'Нет';
case 'daysLater': return 'дней позже';
case 'dayseBefore': return 'дней раньше';
case 'fromBeginning': return 'С начала';
case 'calc': return 'Считать';
case 'calcViewNoValues': return 'Введите значения, чтобы посчитать статистику';
case 'rankAveragesViewTitle': return 'Требования рангов';
case 'sprintAndBlitsViewTitle': return 'Средние результаты 40 линий и блица';
case 'sprintAndBlitsRelevance': return ({required Object date}) => 'Актуальность: ${date}';
case 'rank': return 'Ранг';
case 'averages': return 'Средние значения';
case 'lbViewZeroEntrys': return 'Рейтинговая таблица пуста';
case 'lbViewOneEntry': return 'В рейтинговой таблице всего один игрок';
case 'lbViewManyEntrys': return ({required Object numberOfPlayers}) => 'В рейтинговой таблице находится ${numberOfPlayers}';
case 'everyoneAverages': return 'Значения таблицы';
case 'sortBy': return 'Cортировать по';
case 'reversed': return 'Наоборот';
case 'country': return 'Страна';
case 'rankAverages': return ({required Object rank}) => 'Значения для ${rank} ранга';
case 'players': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} игроков',
one: '${n} игрок',
two: '${n} игрока',
few: '${n} игрока',
many: '${n} игроков',
other: '${n} игроков',
);
case 'games': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} игр',
one: '${n} игра',
two: '${n} игры',
few: '${n} игры',
many: '${n} игр',
other: '${n} игр',
);
case 'gamesPlayed': return ({required Object games}) => '${games} сыграно';
case 'chart': return 'График';
case 'entries': return 'Список';
case 'minimums': return 'Минимумы';
case 'maximums': return 'Максимумы';
case 'lowestValues': return 'Самые низкие показатели';
case 'averageValues': return 'Средние значения показателей';
case 'highestValues': return 'Самые высокие показатели';
case 'forPlayer': return ({required Object username}) => 'для игрока ${username}';
case 'currentAxis': return ({required Object axis}) => 'Ось ${axis}:';
case 'p1nkl0bst3rAlert': return 'Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r';
case 'notForWeb': return 'Функция недоступна для веб версии';
case 'graphs.attack': return 'Атака';
case 'graphs.speed': return 'Скорость';
case 'graphs.defense': return 'Защита';
case 'graphs.cheese': return 'Сыр';
case 'statCellNum.xpLevel': return 'Уровень\nопыта';
case 'statCellNum.xpProgress': return 'Прогресс до следующего уровня';
case 'statCellNum.xpFrom0ToLevel': return ({required Object n}) => 'Прогресс от 0 XP до ${n} уровня';
case 'statCellNum.xpLeft': return 'XP осталось';
case 'statCellNum.hoursPlayed': return 'Часов\nСыграно';
case 'statCellNum.onlineGames': return 'Онлайн\nИгр';
case 'statCellNum.gamesWon': return 'Онлайн\nПобед';
case 'statCellNum.totalGames': return 'Всего матчей';
case 'statCellNum.totalWon': return 'Всего побед';
case 'statCellNum.friends': return 'Друзей';
case 'statCellNum.apm': return 'Атака в\nМинуту';
case 'statCellNum.vs': return 'Показатель\nVersus';
case 'statCellNum.recordLB': return 'Место в таблице';
case 'statCellNum.lbp': return 'Положение\nв рейтинге';
case 'statCellNum.lbpShort': return '№ в рейтинге';
case 'statCellNum.lbpc': return 'Положение\nв рейтинге страны';
case 'statCellNum.lbpcShort': return '№ по стране';
case 'statCellNum.gamesPlayed': return 'Игр\nСыграно';
case 'statCellNum.gamesWonTL': return 'Побед';
case 'statCellNum.winrate': return 'Процент\nпобед';
case 'statCellNum.level': return 'Уровень';
case 'statCellNum.score': return 'Счёт';
case 'statCellNum.spp': return 'Очков\nна Фигуру';
case 'statCellNum.pieces': return 'Фигур\nУстановлено';
case 'statCellNum.pps': return 'Фигур в\nСекунду';
case 'statCellNum.finesseFaults': return 'Ошибок\nТехники';
case 'statCellNum.finessePercentage': return '% Качества\nТехники';
case 'statCellNum.keys': return 'Нажатий\nКлавиш';
case 'statCellNum.kpp': return 'Нажатий\nна Фигуру';
case 'statCellNum.kps': return 'Нажатий\nв Секунду';
case 'statCellNum.tr': return 'Тетра Рейтинг';
case 'statCellNum.rd': return 'Отклонение рейтинга';
case 'statCellNum.app': return 'Атака на Фигуру';
case 'statCellNum.appDescription': return '(Сокращенно APP) Главный показатель эффективности. Показывает, сколько атаки приходится на одну фигуру';
case 'statCellNum.vsapmDescription': return 'В основном, показывает как много мусора игрок использует в своих атаках и насколько эффективно.';
case 'statCellNum.dss': return 'Downstack\nв Секунду';
case 'statCellNum.dssDescription': return '(Сокращенно DS/S) Downstack (спуск вниз) в Секунду показывает как много мусорных линий в среднем игрок убирает за одну секунду.';
case 'statCellNum.dsp': return 'Downstack\nна Фигуру';
case 'statCellNum.dspDescription': return '(Сокращенно DS/P) Downstack (спуск вниз) на Фигуру показывает как много мусорных линий в среднем игрок убирает одну фигуру.';
case 'statCellNum.appdsp': return 'APP + DS/P';
case 'statCellNum.appdspDescription': return 'Просто сумма Атаки на Фигуру и Downstack на Фигуру.';
case 'statCellNum.cheese': return 'Индекс сыра';
case 'statCellNum.cheeseDescription': return '(Сокращенно Cheese) Индекс сыра является аппроксимацией того, насколько чистый / дырявый мусор игрок отправляет. Меньше = более чистый. Больше = более дырявый.\nПридумал kerrmunism';
case 'statCellNum.gbe': return 'Garbage\nEfficiency';
case 'statCellNum.gbeDescription': return '(Сокращенно Gb Eff.) Garbage Efficiency показывает насколько хорошо игрок использует свой мусор. Больше = лучше (или он использует больше мусора). Меньше = в основном отправляют сыр (или он редко чистит мусор).\nПридумали Zepheniah и Dragonboy.';
case 'statCellNum.nyaapp': return 'Взвешенный\nAPP';
case 'statCellNum.nyaappDescription': return '(Сокращенно wAPP) По сути, показывает способность отправлять сыр, сохраняя при этом высокую эффективность.\nПридумал Wertj.';
case 'statCellNum.area': return 'Area';
case 'statCellNum.areaDescription': return 'Какую площадь занимает диаграмма, если не брать в расчёт индекс сыра и VS/APM';
case 'statCellNum.estOfTR': return 'Расчётный TR';
case 'statCellNum.estOfTRShort': return 'Расч. TR';
case 'statCellNum.accOfEst': return 'Точность расчёта';
case 'statCellNum.accOfEstShort': return 'Точность';
case 'playerRole.user': return 'Пользователь';
case 'playerRole.banned': return 'Заблокированный пользователь';
case 'playerRole.bot': return 'Бот';
case 'playerRole.sysop': return 'Системный оператор';
case 'playerRole.admin': return 'Администратор';
case 'playerRole.mod': return 'Модератор';
case 'playerRole.halfmod': return 'Модератор сообщества';
case 'playerRole.anon': return 'Аноним';
case 'numOfGameActions.pc': return 'Все чисто';
case 'numOfGameActions.hold': return 'В запас';
case 'numOfGameActions.inputs': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} нажатий клавиш',
one: '${n} нажатие на клавишу',
two: '${n} нажатия на клавишы',
few: '${n} нажатия на клавишы',
many: '${n} нажатий на клавиш',
other: '${n} нажатий на клавиш',
);
case 'numOfGameActions.tspinsTotal': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} T-спинов всего',
one: 'Всего ${n} T-спин',
two: '${n} T-спина всего',
few: '${n} T-спина всего',
many: '${n} T-спинов всего',
other: '${n} T-спинов всего',
);
case 'numOfGameActions.lineClears': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
zero: '${n} линий очищено',
one: '${n} линия очищена',
two: '${n} линии очищено',
few: '${n} линии очищено',
many: '${n} линий очищено',
other: '${n} линий очищено',
);
case 'popupActions.cancel': return 'Отменить';
case 'popupActions.submit': return 'Подтвердить';
case 'popupActions.ok': return 'OK';
case 'errors.connection': return ({required Object code, required Object message}) => 'Проблема с подключением: ${code} ${message}';
case 'errors.noSuchUser': return 'Нет такого пользователя';
case 'errors.noSuchUserSub': return 'Либо вы ошиблись при вводе, либо аккаунта больше не существует';
case 'errors.discordNotAssigned': return 'К данному Discord ID не привязан аккаунт';
case 'errors.discordNotAssignedSub': return 'Убедитесь в том, что вы вставили правильный ID';
case 'errors.history': return 'История данного игрока отсутствует';
case 'errors.actionSuggestion': return 'Возможно, вы хотите';
case 'errors.p1nkl0bst3rTLmatches': return 'Старых матчей Тетра Лиги не было найдено';
case 'errors.clientException': return 'Нет соединения с интернетом';
case 'errors.forbidden': return 'Ваш IP адрес заблокирован';
case 'errors.forbiddenSub': return ({required Object nickname}) => 'Если у вас работает VPN или прокси, выключите его. Если это не помогло, свяжитесь с ${nickname}';
case 'errors.tooManyRequests': return 'Слишком много запросов';
case 'errors.tooManyRequestsSub': return 'Подождите немного и попробуйте снова';
case 'errors.internal': return 'Что-то случилось на стороне tetr.io';
case 'errors.internalSub': return 'Скорее всего, osk уже в курсе об этом';
case 'errors.internalWebVersion': return 'Что-то случилось на стороне tetr.io (или на стороне oskware_bridge, я хз если честно)';
case 'errors.internalWebVersionSub': return 'Если статус страница osk-а говорит, что всё ок - свяжитесь с dan63047';
case 'errors.oskwareBridge': return 'Что-то случилось с oskware_bridge';
case 'errors.oskwareBridgeSub': return 'Дайте dan63047 знать';
case 'errors.p1nkl0bst3rForbidden': return 'Стороннее API заблокировало ваш IP адрес';
case 'errors.p1nkl0bst3rTooManyRequests': return 'Слишком много запросов к стороннему API. Попробуйте позже';
case 'errors.p1nkl0bst3rinternal': return 'Что-то случилось на стороне p1nkl0bst3r-а';
case 'errors.p1nkl0bst3rinternalWebVersion': return 'Что-то случилось на стороне p1nkl0bst3r-а (или на стороне oskware_bridge, я хз если честно)';
case 'errors.replayAlreadySaved': return 'Повтор уже сохранён';
case 'errors.replayExpired': return 'Повтор истёк и больше недоступен';
case 'errors.replayRejected': return 'Стороннее API заблокировало ваш IP адрес';
case 'countries.': return 'Не выбрана';
case 'countries.AF': return 'Афганистан';
case 'countries.AX': return 'Аландские острова';
case 'countries.AL': return 'Албания';
case 'countries.DZ': return 'Алжир';
case 'countries.AS': return 'Американское Самоа';
case 'countries.AD': return 'Андорра';
case 'countries.AO': return 'Ангола';
case 'countries.AI': return 'Ангилья';
case 'countries.AQ': return 'Антарктида';
case 'countries.AG': return 'Антигуа и Барбуда';
case 'countries.AR': return 'Аргентина';
case 'countries.AM': return 'Армения';
case 'countries.AW': return 'Аруба';
case 'countries.AU': return 'Австралия';
case 'countries.AT': return 'Австрия';
case 'countries.AZ': return 'Азербайджан';
case 'countries.BS': return 'Багамские острова';
case 'countries.BH': return 'Бахрейн';
case 'countries.BD': return 'Бангладеш';
case 'countries.BB': return 'Барбадос';
case 'countries.BY': return 'Беларусь';
case 'countries.BE': return 'Бельгия';
case 'countries.BZ': return 'Белиз';
case 'countries.BJ': return 'Бенин';
case 'countries.BM': return 'Бермуды';
case 'countries.BT': return 'Бутан';
case 'countries.BO': return 'Боливия, Многонациональное Государство';
case 'countries.BA': return 'Босния и Герцеговина';
case 'countries.BW': return 'Ботсвана';
case 'countries.BV': return 'Остров Буве';
case 'countries.BR': return 'Бразилия';
case 'countries.IO': return 'Британская территория в Индийском океане';
case 'countries.BN': return 'Бруней-Даруссалам';
case 'countries.BG': return 'Болгария';
case 'countries.BF': return 'Буркина-Фасо';
case 'countries.BI': return 'Бурунди';
case 'countries.KH': return 'Камбоджа';
case 'countries.CM': return 'Камерун';
case 'countries.CA': return 'Канада';
case 'countries.CV': return 'Кабо-Верде';
case 'countries.BQ': return 'Карибские Нидерланды';
case 'countries.KY': return 'Каймановы острова';
case 'countries.CF': return 'Центральноафриканская Республика';
case 'countries.TD': return 'Чад';
case 'countries.CL': return 'Чили';
case 'countries.CN': return 'Китай';
case 'countries.CX': return 'Остров Рождества';
case 'countries.CC': return 'Кокосовые острова';
case 'countries.CO': return 'Колумбия';
case 'countries.KM': return 'Коморские острова';
case 'countries.CG': return 'Конго';
case 'countries.CD': return 'Конго, Демократическая Республика';
case 'countries.CK': return 'Острова Кука';
case 'countries.CR': return 'Коста-Рика';
case 'countries.CI': return 'Берег Слоновой Кости';
case 'countries.HR': return 'Хорватия';
case 'countries.CU': return 'Куба';
case 'countries.CW': return 'Кюрасао';
case 'countries.CY': return 'Кипр';
case 'countries.CZ': return 'Чешская Республика';
case 'countries.DK': return 'Дания';
case 'countries.DJ': return 'Джибути';
case 'countries.DM': return 'Доминика';
case 'countries.DO': return 'Доминиканская Республика';
case 'countries.EC': return 'Эквадор';
case 'countries.EG': return 'Египет';
case 'countries.SV': return 'Сальвадор';
case 'countries.GB-ENG': return 'Англия';
case 'countries.GQ': return 'Экваториальная Гвинея';
case 'countries.ER': return 'Эритрея';
case 'countries.EE': return 'Эстония';
case 'countries.ET': return 'Эфиопия';
case 'countries.EU': return 'Европа';
case 'countries.FK': return 'Фолклендские (Мальвинские) острова';
case 'countries.FO': return 'Фарерские острова';
case 'countries.FJ': return 'Фиджи';
case 'countries.FI': return 'Финляндия';
case 'countries.FR': return 'Франция';
case 'countries.GF': return 'Французская Гвиана';
case 'countries.PF': return 'Французская Полинезия';
case 'countries.TF': return 'Южные территории Франции';
case 'countries.GA': return 'Габон';
case 'countries.GM': return 'Гамбия';
case 'countries.GE': return 'Грузия';
case 'countries.DE': return 'Германия';
case 'countries.GH': return 'Гана';
case 'countries.GI': return 'Гибралтар';
case 'countries.GR': return 'Греция';
case 'countries.GL': return 'Гренландия';
case 'countries.GD': return 'Гренада';
case 'countries.GP': return 'Гваделупа';
case 'countries.GU': return 'Гуам';
case 'countries.GT': return 'Гватемала';
case 'countries.GG': return 'Гернси';
case 'countries.GN': return 'Гвинея';
case 'countries.GW': return 'Гвинея-Бисау';
case 'countries.GY': return 'Гайана';
case 'countries.HT': return 'Гаити';
case 'countries.HM': return 'Остров Херд и острова Макдональд';
case 'countries.VA': return 'Святой Престол (государство-городок Ватикан)';
case 'countries.HN': return 'Гондурас';
case 'countries.HK': return 'Гонконг';
case 'countries.HU': return 'Венгрия';
case 'countries.IS': return 'Исландия';
case 'countries.IN': return 'Индия';
case 'countries.ID': return 'Индонезия';
case 'countries.IR': return 'Иран, Исламская Республика';
case 'countries.IQ': return 'Ирак';
case 'countries.IE': return 'Ирландия';
case 'countries.IM': return 'Остров Мэн';
case 'countries.IL': return 'Израиль';
case 'countries.IT': return 'Италия';
case 'countries.JM': return 'Ямайка';
case 'countries.JP': return 'Япония';
case 'countries.JE': return 'Джерси';
case 'countries.JO': return 'Иордания';
case 'countries.KZ': return 'Казахстан';
case 'countries.KE': return 'Кения';
case 'countries.KI': return 'Кирибати';
case 'countries.KP': return 'Корея, Народно-Демократическая Республика';
case 'countries.KR': return 'Корея, Республика';
case 'countries.XK': return 'Косово';
case 'countries.KW': return 'Кувейт';
case 'countries.KG': return 'Кыргызстан';
case 'countries.LA': return 'Лаосская Народно-Демократическая Республика';
case 'countries.LV': return 'Латвия';
case 'countries.LB': return 'Ливан';
case 'countries.LS': return 'Лесото';
case 'countries.LR': return 'Либерия';
case 'countries.LY': return 'Ливия';
case 'countries.LI': return 'Лихтенштейн';
case 'countries.LT': return 'Литва';
case 'countries.LU': return 'Люксембург';
case 'countries.MO': return 'Макао';
case 'countries.MK': return 'Македония, бывшая югославская республика';
case 'countries.MG': return 'Мадагаскар';
case 'countries.MW': return 'Малави';
case 'countries.MY': return 'Малайзия';
case 'countries.MV': return 'Мальдивы';
case 'countries.ML': return 'Мали';
case 'countries.MT': return 'Мальта';
case 'countries.MH': return 'Маршалловы острова';
case 'countries.MQ': return 'Мартиника';
case 'countries.MR': return 'Мавритания';
case 'countries.MU': return 'Маврикий';
case 'countries.YT': return 'Майотта';
case 'countries.MX': return 'Мексика';
case 'countries.FM': return 'Микронезия, Федеративные Штаты';
case 'countries.MD': return 'Молдова, Республика';
case 'countries.MC': return 'Монако';
case 'countries.ME': return 'Черногория';
case 'countries.MA': return 'Марокко';
case 'countries.MN': return 'Монголия';
case 'countries.MS': return 'Монтсеррат';
case 'countries.MZ': return 'Мозамбик';
case 'countries.MM': return 'Мьянма';
case 'countries.NA': return 'Намибия';
case 'countries.NR': return 'Науру';
case 'countries.NP': return 'Непал';
case 'countries.NL': return 'Нидерланды';
case 'countries.AN': return 'Нидерландские Антильские острова';
case 'countries.NC': return 'Новая Каледония';
case 'countries.NZ': return 'Новая Зеландия';
case 'countries.NI': return 'Никарагуа';
case 'countries.NE': return 'Нигер';
case 'countries.NG': return 'Нигерия';
case 'countries.NU': return 'Ниуэ';
case 'countries.NF': return 'Остров Норфолк';
case 'countries.GB-NIR': return 'Северная Ирландия';
case 'countries.MP': return 'Северные Марианские острова';
case 'countries.NO': return 'Норвегия';
case 'countries.OM': return 'Оман';
case 'countries.PK': return 'Пакистан';
case 'countries.PW': return 'Палау';
case 'countries.PS': return 'Палестина';
case 'countries.PA': return 'Панама';
case 'countries.PG': return 'Папуа-Новая Гвинея';
case 'countries.PY': return 'Парагвай';
case 'countries.PE': return 'Перу';
case 'countries.PH': return 'Филиппины';
case 'countries.PN': return 'Питкэрн';
case 'countries.PL': return 'Польша';
case 'countries.PT': return 'Португалия';
case 'countries.PR': return 'Пуэрто-Рико';
case 'countries.QA': return 'Катар';
case 'countries.RE': return 'Реюньон';
case 'countries.RO': return 'Румыния';
case 'countries.RU': return 'Российская Федерация';
case 'countries.RW': return 'Руанда';
case 'countries.BL': return 'Сен-Бартелеми';
case 'countries.SH': return 'Острова Святой Елены, Вознесения и Тристан-да-Кунья';
case 'countries.KN': return 'Сент-Китс и Невис';
case 'countries.LC': return 'Сент-Люсия';
case 'countries.MF': return 'Сен-Мартен';
case 'countries.PM': return 'Сен-Пьер и Микелон';
case 'countries.VC': return 'Сент-Винсент и Гренадины';
case 'countries.WS': return 'Самоа';
case 'countries.SM': return 'Сан-Марино';
case 'countries.ST': return 'Сан-Томе и Принсипи';
case 'countries.SA': return 'Саудовская Аравия';
case 'countries.GB-SCT': return 'Шотландия';
case 'countries.SN': return 'Сенегал';
case 'countries.RS': return 'Сербия';
case 'countries.SC': return 'Сейшельские острова';
case 'countries.SL': return 'Сьерра-Леоне';
case 'countries.SG': return 'Сингапур';
case 'countries.SX': return 'Синт-Мартен (голландская часть)';
case 'countries.SK': return 'Словакия';
case 'countries.SI': return 'Словения';
case 'countries.SB': return 'Соломоновы острова';
case 'countries.SO': return 'Сомали';
case 'countries.ZA': return 'ЮАР';
case 'countries.GS': return 'Южная Георгия и Южные Сандвичевы острова';
case 'countries.SS': return 'Южный Судан';
case 'countries.ES': return 'Испания';
case 'countries.LK': return 'Шри-Ланка';
case 'countries.SD': return 'Судан';
case 'countries.SR': return 'Суринам';
case 'countries.SJ': return 'Острова Шпицберген и Ян-Майен';
case 'countries.SZ': return 'Свазиленд';
case 'countries.SE': return 'Швеция';
case 'countries.CH': return 'Швейцария';
case 'countries.SY': return 'Сирийская Арабская Республика';
case 'countries.TW': return 'Тайвань';
case 'countries.TJ': return 'Таджикистан';
case 'countries.TZ': return 'Танзания, Объединенная Республика';
case 'countries.TH': return 'Таиланд';
case 'countries.TL': return 'Тимор-Лешти';
case 'countries.TG': return 'Того';
case 'countries.TK': return 'Токелау';
case 'countries.TO': return 'Tonga';
case 'countries.TT': return 'Тринидад и Тобаго';
case 'countries.TN': return 'Тунис';
case 'countries.TR': return 'Турция';
case 'countries.TM': return 'Туркменистан';
case 'countries.TC': return 'Острова Теркс и Кайкос';
case 'countries.ТВ': return 'Тувалу';
case 'countries.UG': return 'Уганда';
case 'countries.UA': return 'Украина';
case 'countries.AE': return 'Объединенные Арабские Эмираты';
case 'countries.GB': return 'Великобритания';
case 'countries.US': return 'Соединенные Штаты';
case 'countries.UY': return 'Уругвай';
case 'countries.UM': return 'Малые периферийные острова США';
case 'countries.UZ': return 'Узбекистан';
case 'countries.VU': return 'Вануату';
case 'countries.VE': return 'Венесуэла, Боливарианская Республика';
case 'countries.VN': return 'Вьетнам';
case 'countries.VG': return 'Виргинские острова, Британские';
case 'countries.VI': return 'Виргинские острова, США';
case 'countries.GB-WLS': return 'Уэльс';
case 'countries.WF': return 'Острова Уоллис и Футуна';
case 'countries.EH': return 'Западная Сахара';
case 'countries.YE': return 'Йемен';
case 'countries.ZM': return 'Замбия';
case 'countries.ZW': return 'Зимбабве';
case 'countries.XX': return 'Неизвестно';
case 'countries.XM': return 'Луна';
default: return null;
}
}
}
extension on _StringsZhCn {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'locales.en': return '英语 (English)';
case 'locales.ru': return '俄语 (Русский)';
case 'locales.zh-CN': return '简体中文';
case 'tetraLeague': return 'Tetra联赛';
case 'tlRecords': return 'Tetra联赛记录';
case 'history': return '历史';
case 'sprint': return '40行竞速';
case 'blitz': return '闪电战';
case 'recent': return '最近';
case 'recentRuns': return '最近游玩局数';
case 'blitzScore': return ({required Object p}) => '${p}';
case 'openSPreplay': return '在TETR.IO打开回放';
case 'downloadSPreplay': return '下载回放';
case 'other': return '其他';
case 'distinguishment': return '区别';
case 'zen': return '禅意模式';
case 'bio': return '个人简介';
case 'news': return '新闻';
case 'newsParts.leaderboardStart': return '取得 ';
case 'newsParts.leaderboardMiddle': return '';
case 'newsParts.personalbest': return '';
case 'newsParts.personalbestMiddle': return ' 中取得了新的个人最好成绩 ';
case 'newsParts.badgeStart': return '获得勋章 ';
case 'newsParts.badgeEnd': return '';
case 'newsParts.rankupStart': return '达成 ';
case 'newsParts.rankupMiddle': return ({required Object r}) => '${r} 段位 ';
case 'newsParts.rankupEnd': return '';
case 'newsParts.tetoSupporter': return 'TETR.IO 会员';
case 'newsParts.supporterStart': return '成为了 ';
case 'newsParts.supporterGiftStart': return '被赠送了 ';
case 'newsParts.unknownNews': return ({required Object type}) => '未知新闻 ${type}';
case 'openSearch': return '搜索玩家';
case 'closeSearch': return '关闭搜索';
case 'searchHint': return '昵称ID或Discord用户ID需要 "ds:" 前缀)';
case 'refresh': return '刷新';
case 'fetchAndsaveTLHistory': return '获取玩家历史';
case 'fetchAndSaveOldTLmatches': return '获取玩家Tetra联赛历史';
case 'fetchAndsaveTLHistoryResult': return ({required Object number}) => '找到 ${number} 个状态';
case 'fetchAndSaveOldTLmatchesResult': return ({required Object number}) => '找到 ${number} 场Tetra联赛比赛';
case 'showStoredData': return '显示获得的数据';
case 'statsCalc': return '统计计算器';
case 'settings': return '设置';
case 'track': return '添加到\n跟踪列表';
case 'stopTracking': return '从跟踪列表\n中移除';
case 'becameTracked': return '已添加到跟踪列表!';
case 'compare': return '对比';
case 'stoppedBeingTracked': return '已从跟踪列表中移除!';
case 'tlLeaderboard': return 'Tetra联赛排行榜';
case 'noRecords': return '无记录';
case 'noOldRecords': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '无记录',
one: '只有 ${n} 个记录',
two: '只有 ${n} 个记录',
few: '只有 ${n} 个记录',
many: '只有 ${n} 个记录',
other: '只有 ${n} 个记录',
);
case 'noRecord': return '没有记录';
case 'botRecord': return '机器人不予参加排位赛';
case 'anonRecord': return '匿名用户不予参加排位赛';
case 'notEnoughData': return '没有足够的数据';
case 'noHistorySaved': return '没有保存历史';
case 'pseudoTooltipHeaderInit': return '将鼠标放在点上';
case 'pseudoTooltipFooterInit': return '以查看详细信息';
case 'obtainDate': return ({required Object date}) => '${date} 获得';
case 'fetchDate': return ({required Object date}) => 'Fetched ${date}';
case 'exactGametime': return '实际游玩时长';
case 'bigRedBanned': return '该账号封禁中';
case 'normalBanned': return '封禁';
case 'bigRedBadStanding': return '信誉不佳';
case 'copiedToClipboard': return '已复制';
case 'playerRoleAccount': return '账号';
case 'wasFromBeginning': return '在很久很久以前';
case 'created': return '创建于';
case 'botCreatedBy': return '';
case 'notSupporter': return '非会员';
case 'assignedManualy': return '该勋章由 TETR.IO 管理员手动分配';
case 'supporter': return ({required Object tier}) => '会员等级 ${tier}';
case 'comparingWith': return ({required Object newDate, required Object oldDate}) => '${newDate} 时的数据与 ${oldDate} 比较';
case 'top': return '';
case 'topRank': return '最高段位';
case 'verdictGeneral': return ({required Object rank, required Object verdict, required Object n}) => '${rank} 段平均数据${verdict} ${n}';
case 'verdictBetter': return '';
case 'verdictWorse': return '';
case 'smooth': return '平滑';
case 'postSeason': return '淡季';
case 'seasonStarts': return '下一赛即将开始于:';
case 'nanow': return '暂未完成,敬请等待!';
case 'seasonEnds': return ({required Object countdown}) => '赛季将会在 ${countdown} 后结束';
case 'seasonEnded': return 'Season has ended';
case 'gamesUntilRanked': return ({required Object left}) => '还有 ${left} 场比赛获取段位';
case 'numOfVictories': return ({required Object wins}) => '~${wins} 场胜局';
case 'promotionOnNextWin': return '下一次胜利即可升段';
case 'numOfdefeats': return ({required Object losses}) => '~${losses} 场败局';
case 'demotionOnNextLoss': return '下一次失败即可掉段';
case 'nerdStats': return '详细信息';
case 'playersYouTrack': return '跟踪';
case 'formula': return '公式';
case 'exactValue': return '实际值';
case 'neverPlayedTL': return '此用户没有参与Tetra联赛';
case 'botTL': return '机器人不予参加Tetra联赛';
case 'anonTL': return '匿名用户不予参加Tetra联赛';
case 'quickPlay': return '快速游戏';
case 'expert': return '专家';
case 'withMods': return '带着模组';
case 'withModsPlural': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '带着 ${n} 个模组',
one: '带着 ${n} 个模组',
two: '带着 ${n} 个模组',
few: '带着 ${n} 个模组',
many: '带着 ${n} 个模组',
other: '带着 ${n} 个模组',
);
case 'exportDB': return '导出本地数据';
case 'exportDBDescription': return '它包含跟踪的玩家的状态和Tetra联赛记录和跟踪列表。';
case 'desktopExportAlertTitle': return '桌面导出';
case 'desktopExportText': return '您好像在使用桌面版。请查看你的“文档”文件夹你应该能找到“TetraStats.db”。把它复制到一个地方';
case 'androidExportAlertTitle': return '安卓导出';
case 'androidExportText': return ({required Object exportedDB}) => '导出成功\n${exportedDB}';
case 'importDB': return '导入本地数据';
case 'importDBDescription': return '恢复您的备份。请注意,已存储的数据库将被覆盖。';
case 'importWrongFileType': return '文件类型错误';
case 'importCancelled': return '已取消';
case 'importSuccess': return '导入成功';
case 'yourID': return '你的 TETR.IO 用户';
case 'yourIDAlertTitle': return '你的 TETR.IO 昵称';
case 'yourIDText': return '当程序加载,它将显示此用户的数据';
case 'language': return '语言';
case 'updateInBackground': return '自动升级数据';
case 'updateInBackgroundDescription': return '当 Tetra Stats 运行时,它可以在缓存过期时更新当前玩家的统计数据';
case 'customization': return '自定义';
case 'customizationDescription': return '更改 Tetra Stats UI 中不同事物的外观';
case 'oskKagari': return 'osk 特有的 Kagari 段位';
case 'oskKagariDescription': return '如果打开,主视图上的 osk 段位将显示为 :kagari:';
case 'AccentColor': return '主题色';
case 'AccentColorDescription': return '几乎所有交互式 UI 元素都用此颜色突出显示';
case 'timestamps': return '时间';
case 'timestampsDescription': return '您可以选择显示时间的方式';
case 'timestampsAbsoluteGMT': return '绝对 (GMT)';
case 'timestampsAbsoluteLocalTime': return '绝对 (你的时区)';
case 'timestampsRelative': return '相对';
case 'rating': return '评级主要表现';
case 'ratingDescription': return 'TR 不是线性的,而 Glicko 没有边界,百分位数易挥发';
case 'ratingLBposition': return 'LB 位置';
case 'sheetbotGraphs': return 'Sheetbot式雷达图';
case 'sheetbotGraphsDescription': return '若开启,雷达图上的点为负时可以出现在对面';
case 'lbStats': return '显示基于排行榜的数据';
case 'lbStatsDescription': return '这会影响加载时间,但允许您通过统计数据查看排行榜上的位置并与平均值进行比较';
case 'aboutApp': return '关于';
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) ${version} 版 Build ${buildNumber}\n\n由 dan63047 制作\n由 kerrmunism 提供公式\n由 p1nkl0bst3r 提供历史\nTETR.IO 回放抓取器 API 由 szy 制作';
case 'stateViewTitle': return ({required Object nickname, required Object date}) => '${nickname}${date}';
case 'statesViewTitle': return ({required Object nickname, required Object number}) => '${nickname}${number} 个状态';
case 'matchesViewTitle': return ({required Object nickname}) => '${nickname} 的Tetra联赛历史';
case 'statesViewEntry': return ({required Object level, required Object glicko, required Object rd, required Object games}) => '${level} TR, ${glicko}±${rd} Glicko, ${games} 次游戏';
case 'stateRemoved': return ({required Object date}) => '成功移除 ${date} 的状态!';
case 'matchRemoved': return ({required Object date}) => '成功移除 ${date} 的比赛!';
case 'viewAllMatches': return '查看所有比赛';
case 'trackedPlayersViewTitle': return '获取的数据';
case 'trackedPlayersZeroEntrys': return '列表为空。 点击 “添加到跟踪列表” 可以将玩家放在这里';
case 'trackedPlayersOneEntry': return '只有 1 个玩家';
case 'trackedPlayersManyEntrys': return ({required Object numberOfPlayers}) => '${numberOfPlayers} 个玩家';
case 'trackedPlayersEntry': return ({required Object nickname, required Object numberOfStates}) => '${nickname}${numberOfStates} 个状态';
case 'trackedPlayersDescription': return ({required Object firstStateDate, required Object lastStateDate}) => '${firstStateDate}${lastStateDate}';
case 'trackedPlayersStatesDeleted': return ({required Object nickname}) => '成功从数据库中移除 ${nickname} 个状态!';
case 'duplicatedFix': return '删除重复的 TL 匹配项';
case 'compressDB': return '压缩数据库';
case 'SpaceSaved': return ({required Object size}) => '保存空白:${size}';
case 'averageXrank': return ({required Object rankLetter}) => '平均 ${rankLetter}';
case 'vs': return 'vs';
case 'inTLmatch': return '在Tetra联赛中';
case 'downloadReplay': return '下载 .ttrm 回放';
case 'openReplay': return '在 TETR.IO 打开回放';
case 'replaySaved': return ({required Object path}) => '已保存回放至 ${path}';
case 'match': return '比赛';
case 'timeWeightedmatch': return '比赛(时间加权)';
case 'roundNumber': return ({required Object n}) => '${n} 回合';
case 'statsFor': return '数据:';
case 'numberOfRounds': return '回合数';
case 'matchLength': return '比赛时长';
case 'roundLength': return '回合时长';
case 'matchStats': return '比赛数据';
case 'timeWeightedmatchStats': return '时间加权比赛数据';
case 'replayIssue': return '无法处理回放';
case 'matchIsTooOld': return '无回放';
case 'winner': return '赢家';
case 'registred': return '注册日期';
case 'playedTL': return '游玩过Tetra联赛';
case 'winChance': return '胜利机会';
case 'byGlicko': return '靠Glicko';
case 'byEstTR': return '靠预测TR';
case 'compareViewNoValues': return ({required Object avgR}) => '请输入用户名用户IOAPM-PPS-VS值 (分隔符不重要,只需要顺序)或者${avgR}R是一个段位到两个字段';
case 'compareViewWrongValue': return ({required Object value}) => '获取 ${value} 失败';
case 'mostRecentOne': return '最接近的';
case 'yes': return '';
case 'no': return '';
case 'daysLater': return '天后';
case 'dayseBefore': return '天前';
case 'fromBeginning': return '开服';
case 'calc': return '计算器';
case 'calcViewNoValues': return '输入值以计算数据';
case 'rankAveragesViewTitle': return '段位分隔符';
case 'sprintAndBlitsViewTitle': return '竞速与闪电战平均数据';
case 'sprintAndBlitsRelevance': return ({required Object date}) => '数据来自${date}';
case 'rank': return '段位';
case 'averages': return '平均';
case 'lbViewZeroEntrys': return '';
case 'lbViewOneEntry': return '只有一个玩家';
case 'lbViewManyEntrys': return ({required Object numberOfPlayers}) => '${numberOfPlayers}';
case 'everyoneAverages': return 'Tetra联赛散点图';
case 'sortBy': return '排序依据';
case 'reversed': return '反向';
case 'country': return '地区';
case 'rankAverages': return ({required Object rank}) => '${rank}段位散点图';
case 'players': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 个玩家',
one: '${n} 个玩家',
two: '${n} 个玩家',
few: '${n} 个玩家',
many: '${n} 个玩家',
other: '${n} 个玩家',
);
case 'games': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 场游戏',
one: '${n} 场游戏',
two: '${n} 场游戏',
few: '${n} 场游戏',
many: '${n} 场游戏',
other: '${n} 场游戏',
);
case 'gamesPlayed': return ({required Object games}) => '${games} 场游戏';
case 'chart': return '列表';
case 'entries': return '条目';
case 'minimums': return '最小值';
case 'maximums': return '最大值';
case 'lowestValues': return '最小值';
case 'averageValues': return '平均值';
case 'highestValues': return '最大值';
case 'forPlayer': return ({required Object username}) => '来自用户 ${username}';
case 'currentAxis': return ({required Object axis}) => '${axis} 轴:';
case 'p1nkl0bst3rAlert': return '该数据是从 p1nkl0bst3r 维护的第三方 API 中检索的';
case 'notForWeb': return '浏览器版本暂不支持函数';
case 'graphs.attack': return '攻击';
case 'graphs.speed': return '速度';
case 'graphs.defense': return '防御';
case 'graphs.cheese': return '奶酪层';
case 'statCellNum.xpLevel': return 'XP等级';
case 'statCellNum.xpProgress': return '到下一等级的进度';
case 'statCellNum.xpFrom0ToLevel': return ({required Object n}) => '从 0 到 ${n} 等级的进度';
case 'statCellNum.xpLeft': return 'XP 还有';
case 'statCellNum.hoursPlayed': return '小时游玩';
case 'statCellNum.onlineGames': return '在线游戏场次';
case 'statCellNum.gamesWon': return '获胜场次';
case 'statCellNum.totalGames': return '总在线游戏场次';
case 'statCellNum.totalWon': return '总在线游戏获胜场次';
case 'statCellNum.friends': return '好友';
case 'statCellNum.apm': return '每分\n发送垃圾行';
case 'statCellNum.vs': return 'VS\n分数';
case 'statCellNum.recordLB': return '名次';
case 'statCellNum.lbp': return '名次';
case 'statCellNum.lbpShort': return '名次';
case 'statCellNum.lbpc': return '地区\n名次';
case 'statCellNum.lbpcShort': return '地区名次';
case 'statCellNum.gamesPlayed': return '游戏\n场次';
case 'statCellNum.gamesWonTL': return '获胜\n场次';
case 'statCellNum.winrate': return '胜率';
case 'statCellNum.level': return '等级';
case 'statCellNum.score': return '分数';
case 'statCellNum.spp': return '每块\n得分';
case 'statCellNum.pieces': return '放置\n块数';
case 'statCellNum.pps': return '每秒\n放置块数';
case 'statCellNum.finesseFaults': return '非极简\n操作';
case 'statCellNum.finessePercentage': return '极简率';
case 'statCellNum.keys': return '按键';
case 'statCellNum.kpp': return '每块\n按键';
case 'statCellNum.kps': return '每秒\n按键';
case 'statCellNum.tr': return 'Tetra分数';
case 'statCellNum.rd': return '偏移值';
case 'statCellNum.app': return '每块发送垃圾行数';
case 'statCellNum.appDescription': return '(Attack per Piece, 简称APP) 主要效率指标。表示玩家每块可以发动多少次攻击';
case 'statCellNum.vsapmDescription': return '基本上可以告诉你在攻击中利用垃圾行的效率';
case 'statCellNum.dss': return '每秒\n挖掘';
case 'statCellNum.dssDescription': return '(Downstack per Second, 简称 DS/S) 测量一秒钟内清除多少条垃圾行。';
case 'statCellNum.dsp': return '每块\n挖掘';
case 'statCellNum.dspDescription': return '(Downstack per Piece, 简称 DS/P) 测量每一块清除多少条垃圾行。';
case 'statCellNum.appdsp': return 'APP + DS/P';
case 'statCellNum.appdspDescription': return '只是每块发送垃圾行数与每块挖掘之和。';
case 'statCellNum.cheese': return '垃圾行\n混乱指数';
case 'statCellNum.cheeseDescription': return '(Cheese Index, 简称Cheese) 是玩家发出的垃圾行有多整齐/混乱的近似值。低数据代表整齐,高数据代表混乱。\n由 kerrmunism 发明';
case 'statCellNum.gbe': return '垃圾行\n效率';
case 'statCellNum.gbeDescription': return '(Garbage Efficity, 简称Gb Eff.) 测量玩家如何很好地利用他们收到的垃圾行。高数据代表更好或者他们更多地用TA的垃圾行低数据代表TA大多将垃圾行送回奶酪层或者很少清理垃圾行。\n由 Zepheniah 与 Dragonboy 发明。';
case 'statCellNum.nyaapp': return '加权\nAPP';
case 'statCellNum.nyaappDescription': return '(Weighted APP, 简称wAPP) 在本质上是在衡量您在保持高 APP 的同时发送奶酪的能力。\n由 Wertj 发明。';
case 'statCellNum.area': return '面积';
case 'statCellNum.areaDescription': return '如果排除 Cheese 和 vs/apm 部分,您的形状在图表上占据了多少空间';
case 'statCellNum.estOfTR': return '预测 TR';
case 'statCellNum.estOfTRShort': return '预测 TR';
case 'statCellNum.accOfEst': return '预测实际差量';
case 'statCellNum.accOfEstShort': return '预测实际差量';
case 'playerRole.user': return '用户';
case 'playerRole.banned': return '封禁';
case 'playerRole.bot': return '机器人';
case 'playerRole.sysop': return '系统管理员';
case 'playerRole.admin': return '管理员';
case 'playerRole.mod': return '管理员';
case 'playerRole.halfmod': return '社区管理员';
case 'playerRole.anon': return '匿名';
case 'numOfGameActions.pc': return '全消数';
case 'numOfGameActions.hold': return '暂存数';
case 'numOfGameActions.inputs': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 次按键',
one: '${n} 次按键',
two: '${n} 次按键',
few: '${n} 次按键',
many: '${n} 次按键',
other: '${n} 次按键',
);
case 'numOfGameActions.tspinsTotal': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '${n} 次T旋',
one: '${n} 次T旋',
two: '${n} 次T旋',
few: '${n} 次T旋',
many: '${n} 次T旋',
other: '${n} 次T旋',
);
case 'numOfGameActions.lineClears': return ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
zero: '清除了 ${n}',
one: '清除了 ${n}',
two: '清除了 ${n}',
few: '清除了 ${n}',
many: '清除了 ${n}',
other: '清除了 ${n}',
);
case 'popupActions.cancel': return '取消';
case 'popupActions.submit': return '确定';
case 'popupActions.ok': return '彳亍';
case 'errors.connection': return ({required Object code, required Object message}) => '连接错误: ${code} ${message}';
case 'errors.noSuchUser': return '没有这样的用户';
case 'errors.noSuchUserSub': return '检查用户名的拼写是否错误,也许用户不存在';
case 'errors.discordNotAssigned': return '没有用户绑定到该Discord ID';
case 'errors.discordNotAssignedSub': return '您必须输入合法的ID';
case 'errors.history': return '此玩家没有历史';
case 'errors.actionSuggestion': return '你也许想';
case 'errors.p1nkl0bst3rTLmatches': return '没有比赛';
case 'errors.clientException': return '连接不到网络';
case 'errors.forbidden': return '你的IP地址被封禁';
case 'errors.forbiddenSub': return ({required Object nickname}) => '请关闭您的VPN。若问题仍然存在请联系 ${nickname}';
case 'errors.tooManyRequests': return '您申请的请求过多';
case 'errors.tooManyRequestsSub': return '等一会再试吧';
case 'errors.internal': return 'tetr.io 似乎出错了';
case 'errors.internalSub': return 'osk也许要被';
case 'errors.internalWebVersion': return 'tetr.io 或者 oskware_bridge 似乎出错了';
case 'errors.internalWebVersionSub': return '如果 osk 说没有什么问题请让dan63047知道';
case 'errors.oskwareBridge': return 'oskware_bridge 似乎出错了';
case 'errors.oskwareBridgeSub': return '请让 dan63047 知道';
case 'errors.p1nkl0bst3rForbidden': return '第三方API封禁了你的IP地址';
case 'errors.p1nkl0bst3rTooManyRequests': return '第三方API……太多请求了。';
case 'errors.p1nkl0bst3rinternal': return 'p1nkl0bst3r 那边似乎出错了';
case 'errors.p1nkl0bst3rinternalWebVersion': return 'p1nkl0bst3r (或 on oskware_bridge, 其实我并不知道) 那边似乎出错了';
case 'errors.replayAlreadySaved': return '你已保存此回放';
case 'errors.replayExpired': return '回放已过期';
case 'errors.replayRejected': return '第三方API封禁了你的IP地址';
case 'countries.': return '';
case 'countries.AF': return '阿富汗';
case 'countries.AX': return '奥兰群岛';
case 'countries.AL': return '阿尔巴尼亚';
case 'countries.DZ': return '阿尔及利亚';
case 'countries.AS': return '美属萨摩亚';
case 'countries.AD': return '安道尔';
case 'countries.AO': return '安哥拉';
case 'countries.AI': return '安圭拉';
case 'countries.AQ': return '南极洲';
case 'countries.AG': return '安提瓜和巴布达';
case 'countries.AR': return '阿根廷';
case 'countries.AM': return '亚美尼亚';
case 'countries.AW': return '阿鲁巴';
case 'countries.AU': return '澳大利亚';
case 'countries.AT': return '奥地利';
case 'countries.AZ': return '阿塞拜疆';
case 'countries.BS': return '巴哈马';
case 'countries.BH': return '巴林';
case 'countries.BD': return '孟加拉国';
case 'countries.BB': return '巴巴多斯';
case 'countries.BY': return '白俄罗斯';
case 'countries.BE': return '比利时';
case 'countries.BZ': return '伯利兹';
case 'countries.BJ': return '贝宁';
case 'countries.BM': return '百慕大';
case 'countries.BT': return '不丹';
case 'countries.BO': return '玻利维亚多民族国';
case 'countries.BA': return '波斯尼亚和黑塞哥维那';
case 'countries.BW': return '博茨瓦纳';
case 'countries.BV': return '布韦岛';
case 'countries.BR': return '巴西';
case 'countries.IO': return '英属印度洋领地';
case 'countries.BN': return '文莱达鲁萨兰国';
case 'countries.BG': return '保加利亚';
case 'countries.BF': return '布基纳法索';
case 'countries.BI': return '布隆迪';
case 'countries.KH': return '柬埔寨';
case 'countries.CM': return '喀麦隆';
case 'countries.CA': return '加拿大';
case 'countries.CV': return '佛得角';
case 'countries.BQ': return '荷兰加勒比区';
case 'countries.KY': return '开曼群岛';
case 'countries.CF': return '中非';
case 'countries.TD': return '乍得';
case 'countries.CL': return '智利';
case 'countries.CN': return '中国';
case 'countries.CX': return '圣诞岛';
case 'countries.CC': return '科科斯(基林)群岛';
case 'countries.CO': return '哥伦比亚';
case 'countries.KM': return '科摩罗';
case 'countries.CG': return '刚果(布)/刚果共和国';
case 'countries.CD': return '刚果(金)/刚果民主共和国';
case 'countries.CK': return '库克群岛';
case 'countries.CR': return '哥斯达黎加';
case 'countries.CI': return '科特迪瓦';
case 'countries.HR': return '克罗地亚';
case 'countries.CU': return '古巴';
case 'countries.CW': return '库拉索';
case 'countries.CY': return '塞浦路斯';
case 'countries.CZ': return '捷克';
case 'countries.DK': return '丹麦';
case 'countries.DJ': return '吉布提';
case 'countries.DM': return '多米尼加';
case 'countries.DO': return '多米尼加共和国';
case 'countries.EC': return '厄瓜多尔';
case 'countries.EG': return '埃及';
case 'countries.SV': return '萨尔瓦多';
case 'countries.GB-ENG': return '英格兰';
case 'countries.GQ': return '赤道几内亚';
case 'countries.ER': return '厄立特里亚';
case 'countries.EE': return '爱沙尼亚';
case 'countries.ET': return '埃塞俄比亚';
case 'countries.EU': return '欧洲';
case 'countries.FK': return '福克兰群岛/马尔维纳斯群岛';
case 'countries.FO': return '法罗群岛';
case 'countries.FJ': return '斐济';
case 'countries.FI': return '芬兰';
case 'countries.FR': return '法国';
case 'countries.GF': return '法属圭亚那';
case 'countries.PF': return '法属波利尼西亚';
case 'countries.TF': return '法属南部领地';
case 'countries.GA': return '加蓬';
case 'countries.GM': return '冈比亚';
case 'countries.GE': return '格鲁吉亚';
case 'countries.DE': return '德国';
case 'countries.GH': return '加纳';
case 'countries.GI': return '直布罗陀';
case 'countries.GR': return '希腊';
case 'countries.GL': return '格陵兰岛';
case 'countries.GD': return '格林纳达';
case 'countries.GP': return '瓜德罗普岛';
case 'countries.GU': return '关岛';
case 'countries.GT': return '危地马拉';
case 'countries.GG': return '根西岛';
case 'countries.GN': return '几内亚';
case 'countries.GW': return '几内亚比绍';
case 'countries.GY': return '圭亚那';
case 'countries.HT': return '海地';
case 'countries.HM': return '赫德岛和麦克唐纳群岛';
case 'countries.VA': return '梵蒂冈';
case 'countries.HN': return '洪都拉斯';
case 'countries.HK': return '中国香港';
case 'countries.HU': return '匈牙利';
case 'countries.IS': return '冰岛';
case 'countries.IN': return '印度';
case 'countries.ID': return '印度尼西亚';
case 'countries.IR': return '伊朗';
case 'countries.IQ': return '伊拉克';
case 'countries.IE': return '爱尔兰';
case 'countries.IM': return '马恩岛';
case 'countries.IL': return '以色列';
case 'countries.IT': return '意大利';
case 'countries.JM': return '牙买加';
case 'countries.JP': return '日本';
case 'countries.JE': return 'Jersey';
case 'countries.JO': return '约旦';
case 'countries.KZ': return '哈萨克斯坦';
case 'countries.KE': return '肯尼亚';
case 'countries.KI': return '基里巴斯';
case 'countries.KP': return '朝鲜';
case 'countries.KR': return '韩国';
case 'countries.XK': return '科索沃';
case 'countries.KW': return '科威特';
case 'countries.KG': return '吉尔吉斯斯坦';
case 'countries.LA': return '老挝';
case 'countries.LV': return '拉脱维亚';
case 'countries.LB': return '黎巴嫩';
case 'countries.LS': return '莱索托';
case 'countries.LR': return '利比里亚';
case 'countries.LY': return '利比亚';
case 'countries.LI': return '列支敦士登';
case 'countries.LT': return '立陶宛';
case 'countries.LU': return '卢森堡';
case 'countries.MO': return '中国澳门';
case 'countries.MK': return '马其顿';
case 'countries.MG': return '马达加斯加';
case 'countries.MW': return '马拉维';
case 'countries.MY': return '马来西亚';
case 'countries.MV': return '马尔代夫';
case 'countries.ML': return '马里';
case 'countries.MT': return '马耳他';
case 'countries.MH': return '马绍尔群岛';
case 'countries.MQ': return '马提尼克岛';
case 'countries.MR': return '毛里塔尼亚';
case 'countries.MU': return '毛里求斯';
case 'countries.YT': return '马约特岛';
case 'countries.MX': return '墨西哥';
case 'countries.FM': return '密克罗尼西亚联邦';
case 'countries.MD': return '摩尔多瓦共和国';
case 'countries.MC': return '摩纳哥';
case 'countries.ME': return '黑山';
case 'countries.MA': return '摩洛哥';
case 'countries.MN': return '蒙古';
case 'countries.MS': return '蒙特塞拉特';
case 'countries.MZ': return '莫桑比克';
case 'countries.MM': return '缅甸';
case 'countries.NA': return '纳米比亚';
case 'countries.NR': return '瑙鲁';
case 'countries.NP': return '尼泊尔';
case 'countries.NL': return '尼德兰';
case 'countries.AN': return '荷属安的列斯';
case 'countries.NC': return '新喀里多尼亚';
case 'countries.NZ': return '新西兰';
case 'countries.NI': return '尼加拉瓜';
case 'countries.NE': return '尼日尔';
case 'countries.NG': return '尼日利亚';
case 'countries.NU': return '纽埃';
case 'countries.NF': return '诺福克岛';
case 'countries.GB-NIR': return '北爱尔兰';
case 'countries.MP': return '北马里亚纳群岛';
case 'countries.NO': return '挪威';
case 'countries.OM': return '阿曼';
case 'countries.PK': return '巴基斯坦';
case 'countries.PW': return '帕劳';
case 'countries.PS': return '巴勒斯坦';
case 'countries.PA': return '巴拿马';
case 'countries.PG': return '巴布亚新几内亚';
case 'countries.PY': return '巴拉圭';
case 'countries.PE': return '秘鲁';
case 'countries.PH': return '菲律宾';
case 'countries.PN': return '皮特凯恩';
case 'countries.PL': return '波兰';
case 'countries.PT': return '葡萄牙';
case 'countries.PR': return '波多黎各';
case 'countries.QA': return '卡塔尔';
case 'countries.RE': return '留尼汪';
case 'countries.RO': return '罗马尼亚';
case 'countries.RU': return '俄罗斯联邦';
case 'countries.RW': return '卢旺达';
case 'countries.BL': return '圣巴泰勒米';
case 'countries.SH': return '圣赫勒拿,阿森松和特里斯坦-达库尼亚';
case 'countries.KN': return '圣基茨和尼维斯';
case 'countries.LC': return '圣卢西亚';
case 'countries.MF': return '圣马丁';
case 'countries.PM': return '圣皮埃尔和密克隆群岛';
case 'countries.VC': return '圣文森特和格林纳丁斯';
case 'countries.WS': return '萨摩亚';
case 'countries.SM': return '圣马力诺';
case 'countries.ST': return '圣多美和普林西比';
case 'countries.SA': return '沙特阿拉伯';
case 'countries.GB-SCT': return '苏格兰';
case 'countries.SN': return '塞内加尔';
case 'countries.RS': return '塞尔维亚';
case 'countries.SC': return '塞舌尔';
case 'countries.SL': return '塞拉利昂';
case 'countries.SG': return '新加坡';
case 'countries.SX': return '荷属圣马丁';
case 'countries.SK': return '斯洛伐克';
case 'countries.SI': return '斯洛文尼亚';
case 'countries.SB': return '所罗门群岛';
case 'countries.SO': return '索马里';
case 'countries.ZA': return '南非';
case 'countries.GS': return '南乔治亚和南桑威奇群岛';
case 'countries.SS': return '南苏丹';
case 'countries.ES': return '西班牙';
case 'countries.LK': return '斯里兰卡';
case 'countries.SD': return '苏丹';
case 'countries.SR': return '苏里南';
case 'countries.SJ': return '斯瓦尔巴和扬马延群岛';
case 'countries.SZ': return '斯威士兰';
case 'countries.SE': return '瑞典';
case 'countries.CH': return '瑞士';
case 'countries.SY': return '叙利亚';
case 'countries.TW': return '中国台湾';
case 'countries.TJ': return '塔吉克斯坦';
case 'countries.TZ': return '坦桑尼亚';
case 'countries.TH': return '泰国';
case 'countries.TL': return '东帝汶';
case 'countries.TG': return '多哥';
case 'countries.TK': return '托克劳';
case 'countries.TO': return '汤加';
case 'countries.TT': return '特立尼达和多巴哥';
case 'countries.TN': return '突尼斯';
case 'countries.TR': return '土耳其';
case 'countries.TM': return '土库曼斯坦';
case 'countries.TC': return '特克斯和凯科斯群岛';
case 'countries.TV': return '图瓦卢';
case 'countries.UG': return '乌干达';
case 'countries.UA': return '乌克兰';
case 'countries.AE': return '阿拉伯联合酋长国';
case 'countries.GB': return '英国';
case 'countries.US': return '美国';
case 'countries.UY': return '乌拉圭';
case 'countries.UM': return '美国小岛屿';
case 'countries.UZ': return '乌兹别克斯坦';
case 'countries.VU': return '瓦努阿图';
case 'countries.VE': return '委内瑞拉玻利瓦尔共和国';
case 'countries.VN': return '越南';
case 'countries.VG': return '英属维尔京群岛';
case 'countries.VI': return '美属维尔京群岛';
case 'countries.GB-WLS': return '威尔士';
case 'countries.WF': return '瓦利斯和富图纳群岛';
case 'countries.EH': return '西撒哈拉';
case 'countries.YE': return '也门';
case 'countries.ZM': return '赞比亚';
case 'countries.ZW': return '津巴布韦';
case 'countries.XX': return '未知';
case 'countries.XM': return '月球';
default: return null;
}
}
}