/// Generated file. Do not edit. /// /// Original: res/i18n /// To regenerate, run: `dart run slang` /// /// Locales: 3 /// Strings: 1818 (606 per locale) /// /// Built on 2024-11-16 at 13:39 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 { 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 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 { TranslationProvider({required super.child}) : super(settings: LocaleSettings.instance); static InheritedLocaleData of(BuildContext context) => InheritedLocaleData.of(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 { LocaleSettings._() : super(utils: AppLocaleUtils.instance); static final instance = LocaleSettings._(); // static aliases (checkout base methods for documentation) static AppLocale get currentLocale => instance.currentLocale; static Stream 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 get supportedLocales => instance.supportedLocales; @Deprecated('Use [AppLocaleUtils.supportedLocalesRaw]') static List 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 { 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 get supportedLocales => instance.supportedLocales; static List get supportedLocalesRaw => instance.supportedLocalesRaw; } // translations // Path: class Translations implements BaseTranslations { /// Returns the current translations of the given [context]. /// /// Usage: /// final t = Translations.of(context); static Translations of(BuildContext context) => InheritedLocaleData.of(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? 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 . @override final TranslationMetadata $meta; /// Access flat map dynamic operator[](String key) => $meta.getTranslation(key); late final Translations _root = this; // ignore: unused_field // Translations Map 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 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 get countries => { '': 'Worldwide', '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: 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? 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 . @override final TranslationMetadata $meta; /// Access flat map @override dynamic operator[](String key) => $meta.getTranslation(key); @override late final _StringsRu _root = this; // ignore: unused_field // Translations @override Map 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 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 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: 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? 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 . @override final TranslationMetadata $meta; /// Access flat map @override dynamic operator[](String key) => $meta.getTranslation(key); @override late final _StringsZhCn _root = this; // ignore: unused_field // Translations @override Map 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}) => '请输入用户名,用户IO,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 => '竞速与闪电战平均数据'; @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 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 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 'Worldwide'; 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}) => '请输入用户名,用户IO,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 '竞速与闪电战平均数据'; 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; } } }