Files
asciinevrdie/lib/l10n/app_localizations.dart
JiWoong Sul faf87eccb0 feat(l10n): 다국어 문자열 추가
- 옵션 메뉴, 통계, 도움말 등 UI 문자열 추가
- en, ko, ja, zh 지원
2026-01-21 17:34:39 +09:00

999 lines
23 KiB
Dart
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart' as intl;
import 'app_localizations_en.dart';
import 'app_localizations_ja.dart';
import 'app_localizations_ko.dart';
import 'app_localizations_zh.dart';
// ignore_for_file: type=lint
/// Callers can lookup localized strings with an instance of L10n
/// returned by `L10n.of(context)`.
///
/// Applications need to include `L10n.delegate()` in their app's
/// `localizationDelegates` list, and the locales they support in the app's
/// `supportedLocales` list. For example:
///
/// ```dart
/// import 'l10n/app_localizations.dart';
///
/// return MaterialApp(
/// localizationsDelegates: L10n.localizationsDelegates,
/// supportedLocales: L10n.supportedLocales,
/// home: MyApplicationHome(),
/// );
/// ```
///
/// ## Update pubspec.yaml
///
/// Please make sure to update your pubspec.yaml to include the following
/// packages:
///
/// ```yaml
/// dependencies:
/// # Internationalization support.
/// flutter_localizations:
/// sdk: flutter
/// intl: any # Use the pinned version from flutter_localizations
///
/// # Rest of dependencies
/// ```
///
/// ## iOS Applications
///
/// iOS applications define key application metadata, including supported
/// locales, in an Info.plist file that is built into the application bundle.
/// To configure the locales supported by your app, youll need to edit this
/// file.
///
/// First, open your projects ios/Runner.xcworkspace Xcode workspace file.
/// Then, in the Project Navigator, open the Info.plist file under the Runner
/// projects Runner folder.
///
/// Next, select the Information Property List item, select Add Item from the
/// Editor menu, then select Localizations from the pop-up menu.
///
/// Select and expand the newly-created Localizations item then, for each
/// locale your application supports, add a new item and select the locale
/// you wish to add from the pop-up menu in the Value field. This list should
/// be consistent with the languages listed in the L10n.supportedLocales
/// property.
abstract class L10n {
L10n(String locale)
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
final String localeName;
static L10n of(BuildContext context) {
return Localizations.of<L10n>(context, L10n)!;
}
static const LocalizationsDelegate<L10n> delegate = _L10nDelegate();
/// A list of this localizations delegate along with the default localizations
/// delegates.
///
/// Returns a list of localizations delegates containing this delegate along with
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
/// and GlobalWidgetsLocalizations.delegate.
///
/// Additional delegates can be added by appending to this list in
/// MaterialApp. This list does not have to be used at all if a custom list
/// of delegates is preferred or required.
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
<LocalizationsDelegate<dynamic>>[
delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
];
/// A list of this localizations delegate's supported locales.
static const List<Locale> supportedLocales = <Locale>[
Locale('en'),
Locale('ja'),
Locale('ko'),
Locale('zh'),
];
/// Application title
///
/// In en, this message translates to:
/// **'ASCII NEVER DIE'**
String get appTitle;
/// Tag indicating offline mode
///
/// In en, this message translates to:
/// **'No network'**
String get tagNoNetwork;
/// Tag indicating idle RPG gameplay
///
/// In en, this message translates to:
/// **'Idle RPG loop'**
String get tagIdleRpg;
/// Tag indicating local save support
///
/// In en, this message translates to:
/// **'Local saves'**
String get tagLocalSaves;
/// New character button
///
/// In en, this message translates to:
/// **'New character'**
String get newCharacter;
/// Load save button
///
/// In en, this message translates to:
/// **'Load save'**
String get loadSave;
/// Load game dialog title
///
/// In en, this message translates to:
/// **'Load Game'**
String get loadGame;
/// View build plan button
///
/// In en, this message translates to:
/// **'View build plan'**
String get viewBuildPlan;
/// Build roadmap section title
///
/// In en, this message translates to:
/// **'Build roadmap'**
String get buildRoadmap;
/// Tech stack section title
///
/// In en, this message translates to:
/// **'Tech stack'**
String get techStack;
/// Cancel button
///
/// In en, this message translates to:
/// **'Cancel'**
String get cancel;
/// Exit game dialog title
///
/// In en, this message translates to:
/// **'Exit Game'**
String get exitGame;
/// Save progress confirmation message
///
/// In en, this message translates to:
/// **'Save your progress before leaving?'**
String get saveProgressQuestion;
/// Exit without saving button
///
/// In en, this message translates to:
/// **'Exit without saving'**
String get exitWithoutSaving;
/// Save and exit button
///
/// In en, this message translates to:
/// **'Save and Exit'**
String get saveAndExit;
/// Game screen title with character name
///
/// In en, this message translates to:
/// **'ASCII NEVER DIE - {name}'**
String progressQuestTitle(String name);
/// Level up tooltip
///
/// In en, this message translates to:
/// **'Level Up'**
String get levelUp;
/// Complete quest tooltip
///
/// In en, this message translates to:
/// **'Complete Quest'**
String get completeQuest;
/// Complete plot tooltip
///
/// In en, this message translates to:
/// **'Complete Plot'**
String get completePlot;
/// Character sheet panel title
///
/// In en, this message translates to:
/// **'Character Sheet'**
String get characterSheet;
/// Traits section title
///
/// In en, this message translates to:
/// **'Traits'**
String get traits;
/// Stats section title
///
/// In en, this message translates to:
/// **'Stats'**
String get stats;
/// Experience section title
///
/// In en, this message translates to:
/// **'Experience'**
String get experience;
/// XP needed tooltip
///
/// In en, this message translates to:
/// **'XP needed for next level'**
String get xpNeededForNextLevel;
/// Skills section title (unified spellbook + skills)
///
/// In en, this message translates to:
/// **'Skills'**
String get spellBook;
/// Empty skills message
///
/// In en, this message translates to:
/// **'No skills yet'**
String get noSpellsYet;
/// Equipment panel title
///
/// In en, this message translates to:
/// **'Equipment'**
String get equipment;
/// Inventory panel title
///
/// In en, this message translates to:
/// **'Inventory'**
String get inventory;
/// Encumbrance section title
///
/// In en, this message translates to:
/// **'Encumbrance'**
String get encumbrance;
/// Combat log panel title
///
/// In en, this message translates to:
/// **'Combat Log'**
String get combatLog;
/// Plot development panel title
///
/// In en, this message translates to:
/// **'Plot Development'**
String get plotDevelopment;
/// Quests panel title
///
/// In en, this message translates to:
/// **'Quests'**
String get quests;
/// Name trait label
///
/// In en, this message translates to:
/// **'Name'**
String get traitName;
/// Race trait label
///
/// In en, this message translates to:
/// **'Race'**
String get traitRace;
/// Class trait label
///
/// In en, this message translates to:
/// **'Class'**
String get traitClass;
/// Level trait label
///
/// In en, this message translates to:
/// **'Level'**
String get traitLevel;
/// Strength stat
///
/// In en, this message translates to:
/// **'STR'**
String get statStr;
/// Constitution stat
///
/// In en, this message translates to:
/// **'CON'**
String get statCon;
/// Dexterity stat
///
/// In en, this message translates to:
/// **'DEX'**
String get statDex;
/// Intelligence stat
///
/// In en, this message translates to:
/// **'INT'**
String get statInt;
/// Wisdom stat
///
/// In en, this message translates to:
/// **'WIS'**
String get statWis;
/// Charisma stat
///
/// In en, this message translates to:
/// **'CHA'**
String get statCha;
/// Max HP stat
///
/// In en, this message translates to:
/// **'HP Max'**
String get statHpMax;
/// Max MP stat
///
/// In en, this message translates to:
/// **'MP Max'**
String get statMpMax;
/// Weapon equipment slot
///
/// In en, this message translates to:
/// **'Weapon'**
String get equipWeapon;
/// Shield equipment slot
///
/// In en, this message translates to:
/// **'Shield'**
String get equipShield;
/// Helm equipment slot
///
/// In en, this message translates to:
/// **'Helm'**
String get equipHelm;
/// Hauberk equipment slot
///
/// In en, this message translates to:
/// **'Hauberk'**
String get equipHauberk;
/// Brassairts equipment slot
///
/// In en, this message translates to:
/// **'Brassairts'**
String get equipBrassairts;
/// Vambraces equipment slot
///
/// In en, this message translates to:
/// **'Vambraces'**
String get equipVambraces;
/// Gauntlets equipment slot
///
/// In en, this message translates to:
/// **'Gauntlets'**
String get equipGauntlets;
/// Gambeson equipment slot
///
/// In en, this message translates to:
/// **'Gambeson'**
String get equipGambeson;
/// Cuisses equipment slot
///
/// In en, this message translates to:
/// **'Cuisses'**
String get equipCuisses;
/// Greaves equipment slot
///
/// In en, this message translates to:
/// **'Greaves'**
String get equipGreaves;
/// Sollerets equipment slot
///
/// In en, this message translates to:
/// **'Sollerets'**
String get equipSollerets;
/// Coin label
///
/// In en, this message translates to:
/// **'Coin'**
String get gold;
/// Coin with amount
///
/// In en, this message translates to:
/// **'Coin: {amount}'**
String goldAmount(int amount);
/// Prologue plot stage
///
/// In en, this message translates to:
/// **'Prologue'**
String get prologue;
/// Act with roman numeral
///
/// In en, this message translates to:
/// **'Act {number}'**
String actNumber(String number);
/// Empty quests message
///
/// In en, this message translates to:
/// **'No active quests'**
String get noActiveQuests;
/// Quest with number
///
/// In en, this message translates to:
/// **'Quest #{number}'**
String questNumber(int number);
/// Welcome message in task progress panel
///
/// In en, this message translates to:
/// **'Welcome to ASCII NEVER DIE!'**
String get welcomeMessage;
/// No saved games message
///
/// In en, this message translates to:
/// **'No saved games found.'**
String get noSavedGames;
/// Load error message
///
/// In en, this message translates to:
/// **'Failed to load save file: {error}'**
String loadError(String error);
/// Name label in character creation
///
/// In en, this message translates to:
/// **'Name'**
String get name;
/// Generate name tooltip
///
/// In en, this message translates to:
/// **'Generate Name'**
String get generateName;
/// Total label for stats
///
/// In en, this message translates to:
/// **'Total'**
String get total;
/// Undo button for stat reroll
///
/// In en, this message translates to:
/// **'Undo'**
String get unroll;
/// Roll button
///
/// In en, this message translates to:
/// **'Roll'**
String get roll;
/// Race selection title
///
/// In en, this message translates to:
/// **'Race'**
String get race;
/// Class selection title
///
/// In en, this message translates to:
/// **'Class'**
String get classTitle;
/// Percentage complete
///
/// In en, this message translates to:
/// **'{percent}% complete'**
String percentComplete(int percent);
/// New character screen title
///
/// In en, this message translates to:
/// **'ASCII NEVER DIE - New Character'**
String get newCharacterTitle;
/// Confirm character creation button
///
/// In en, this message translates to:
/// **'Sold!'**
String get soldButton;
/// Victory overlay congratulations
///
/// In en, this message translates to:
/// **'★ CONGRATULATIONS ★'**
String get endingCongratulations;
/// Game completion message
///
/// In en, this message translates to:
/// **'You have completed the game!'**
String get endingGameComplete;
/// Hero section title
///
/// In en, this message translates to:
/// **'THE HERO'**
String get endingTheHero;
/// Level display format
///
/// In en, this message translates to:
/// **'Level {level}'**
String endingLevelFormat(int level);
/// Journey statistics section title
///
/// In en, this message translates to:
/// **'JOURNEY STATISTICS'**
String get endingJourneyStats;
/// Monsters killed stat label
///
/// In en, this message translates to:
/// **'Monsters Slain'**
String get endingMonstersSlain;
/// Quests completed stat label
///
/// In en, this message translates to:
/// **'Quests Completed'**
String get endingQuestsCompleted;
/// Play time stat label
///
/// In en, this message translates to:
/// **'Play Time'**
String get endingPlayTime;
/// Final stats section title
///
/// In en, this message translates to:
/// **'FINAL STATS'**
String get endingFinalStats;
/// Credits section title
///
/// In en, this message translates to:
/// **'CREDITS'**
String get endingCredits;
/// Thank you message
///
/// In en, this message translates to:
/// **'Thank you for playing!'**
String get endingThankYou;
/// Legend message
///
/// In en, this message translates to:
/// **'Your legend lives on...'**
String get endingLegendLivesOn;
/// Hall of fame message line 1
///
/// In en, this message translates to:
/// **'Your heroic deeds will be'**
String get endingHallOfFameLine1;
/// Hall of fame message line 2
///
/// In en, this message translates to:
/// **'remembered in the Hall of Fame'**
String get endingHallOfFameLine2;
/// Hall of fame button
///
/// In en, this message translates to:
/// **'HALL OF FAME'**
String get endingHallOfFameButton;
/// Skip button
///
/// In en, this message translates to:
/// **'SKIP'**
String get endingSkip;
/// Tap to skip hint
///
/// In en, this message translates to:
/// **'TAP TO SKIP'**
String get endingTapToSkip;
/// Hold to speed up scrolling hint
///
/// In en, this message translates to:
/// **'HOLD TO SPEED UP'**
String get endingHoldToSpeedUp;
/// Menu panel title
///
/// In en, this message translates to:
/// **'MENU'**
String get menuTitle;
/// Options menu title
///
/// In en, this message translates to:
/// **'OPTIONS'**
String get optionsTitle;
/// Sound dialog title
///
/// In en, this message translates to:
/// **'SOUND'**
String get soundTitle;
/// Control section title
///
/// In en, this message translates to:
/// **'CONTROL'**
String get controlSection;
/// Info section title
///
/// In en, this message translates to:
/// **'INFO'**
String get infoSection;
/// Settings section title
///
/// In en, this message translates to:
/// **'SETTINGS'**
String get settingsSection;
/// Save/Exit section title
///
/// In en, this message translates to:
/// **'SAVE / EXIT'**
String get saveExitSection;
/// OK button
///
/// In en, this message translates to:
/// **'OK'**
String get ok;
/// Recharge button
///
/// In en, this message translates to:
/// **'RECHARGE'**
String get rechargeButton;
/// Create button
///
/// In en, this message translates to:
/// **'CREATE'**
String get createButton;
/// Preview panel title
///
/// In en, this message translates to:
/// **'PREVIEW'**
String get previewTitle;
/// Name panel title
///
/// In en, this message translates to:
/// **'NAME'**
String get nameTitle;
/// Stats panel title
///
/// In en, this message translates to:
/// **'STATS'**
String get statsTitle;
/// Race panel title
///
/// In en, this message translates to:
/// **'RACE'**
String get raceTitle;
/// Class panel title
///
/// In en, this message translates to:
/// **'CLASS'**
String get classSection;
/// BGM volume label
///
/// In en, this message translates to:
/// **'BGM'**
String get bgmLabel;
/// SFX volume label
///
/// In en, this message translates to:
/// **'SFX'**
String get sfxLabel;
/// HP bar label
///
/// In en, this message translates to:
/// **'HP'**
String get hpLabel;
/// MP bar label
///
/// In en, this message translates to:
/// **'MP'**
String get mpLabel;
/// EXP bar label
///
/// In en, this message translates to:
/// **'EXP'**
String get expLabel;
/// Level up notification title
///
/// In en, this message translates to:
/// **'LEVEL UP!'**
String get notifyLevelUp;
/// Level notification subtitle
///
/// In en, this message translates to:
/// **'Level {level}'**
String notifyLevel(int level);
/// Quest complete notification title
///
/// In en, this message translates to:
/// **'QUEST COMPLETE!'**
String get notifyQuestComplete;
/// Prologue complete notification title
///
/// In en, this message translates to:
/// **'PROLOGUE COMPLETE!'**
String get notifyPrologueComplete;
/// Act complete notification title
///
/// In en, this message translates to:
/// **'ACT {number} COMPLETE!'**
String notifyActComplete(int number);
/// New spell notification title
///
/// In en, this message translates to:
/// **'NEW SPELL!'**
String get notifyNewSpell;
/// New equipment notification title
///
/// In en, this message translates to:
/// **'NEW EQUIPMENT!'**
String get notifyNewEquipment;
/// Boss defeated notification title
///
/// In en, this message translates to:
/// **'BOSS DEFEATED!'**
String get notifyBossDefeated;
/// Recharge rolls dialog title
///
/// In en, this message translates to:
/// **'RECHARGE ROLLS'**
String get rechargeRollsTitle;
/// Recharge rolls free user message
///
/// In en, this message translates to:
/// **'Recharge 5 rolls for free?'**
String get rechargeRollsFree;
/// Recharge rolls ad message
///
/// In en, this message translates to:
/// **'Watch an ad to recharge 5 rolls?'**
String get rechargeRollsAd;
/// Debug section title
///
/// In en, this message translates to:
/// **'DEBUG'**
String get debugTitle;
/// Debug cheats section title
///
/// In en, this message translates to:
/// **'DEBUG CHEATS'**
String get debugCheatsTitle;
/// Debug tools section title
///
/// In en, this message translates to:
/// **'DEBUG TOOLS'**
String get debugToolsTitle;
/// Developer tools header
///
/// In en, this message translates to:
/// **'DEVELOPER TOOLS'**
String get debugDeveloperTools;
/// Skip task cheat label
///
/// In en, this message translates to:
/// **'SKIP TASK (L+1)'**
String get debugSkipTask;
/// Skip task cheat description
///
/// In en, this message translates to:
/// **'Complete task instantly'**
String get debugSkipTaskDesc;
/// Skip quest cheat label
///
/// In en, this message translates to:
/// **'SKIP QUEST (Q!)'**
String get debugSkipQuest;
/// Skip quest cheat description
///
/// In en, this message translates to:
/// **'Complete quest instantly'**
String get debugSkipQuestDesc;
/// Skip act cheat label
///
/// In en, this message translates to:
/// **'SKIP ACT (P!)'**
String get debugSkipAct;
/// Skip act cheat description
///
/// In en, this message translates to:
/// **'Complete act instantly'**
String get debugSkipActDesc;
/// Create test character button
///
/// In en, this message translates to:
/// **'CREATE TEST CHARACTER'**
String get debugCreateTestCharacter;
/// Create test character description
///
/// In en, this message translates to:
/// **'Register Level 100 character to Hall of Fame'**
String get debugCreateTestCharacterDesc;
/// Create test character dialog title
///
/// In en, this message translates to:
/// **'CREATE TEST CHARACTER?'**
String get debugCreateTestCharacterTitle;
/// Create test character confirmation message
///
/// In en, this message translates to:
/// **'Current character will be converted to Level 100\nand registered to the Hall of Fame.\n\n⚠ Current save file will be deleted.\nThis action cannot be undone.'**
String get debugCreateTestCharacterMessage;
/// Debug turbo mode label
///
/// In en, this message translates to:
/// **'DEBUG: TURBO (20x)'**
String get debugTurbo;
/// IAP purchased debug toggle
///
/// In en, this message translates to:
/// **'IAP PURCHASED'**
String get debugIapPurchased;
/// IAP purchased debug description
///
/// In en, this message translates to:
/// **'ON: Behave as paid user (ads removed)'**
String get debugIapPurchasedDesc;
/// Offline hours debug label
///
/// In en, this message translates to:
/// **'OFFLINE HOURS'**
String get debugOfflineHours;
/// Offline hours debug description
///
/// In en, this message translates to:
/// **'Test return rewards (applies on restart)'**
String get debugOfflineHoursDesc;
/// Test character creation description
///
/// In en, this message translates to:
/// **'Modify current character to Level 100\nand register to the Hall of Fame.'**
String get debugTestCharacterDesc;
}
class _L10nDelegate extends LocalizationsDelegate<L10n> {
const _L10nDelegate();
@override
Future<L10n> load(Locale locale) {
return SynchronousFuture<L10n>(lookupL10n(locale));
}
@override
bool isSupported(Locale locale) =>
<String>['en', 'ja', 'ko', 'zh'].contains(locale.languageCode);
@override
bool shouldReload(_L10nDelegate old) => false;
}
L10n lookupL10n(Locale locale) {
// Lookup logic when only language code is specified.
switch (locale.languageCode) {
case 'en':
return L10nEn();
case 'ja':
return L10nJa();
case 'ko':
return L10nKo();
case 'zh':
return L10nZh();
}
throw FlutterError(
'L10n.delegate failed to load unsupported locale "$locale". This is likely '
'an issue with the localizations generation tool. Please file an issue '
'on GitHub with a reproducible sample app and the gen-l10n configuration '
'that was used.',
);
}