using System; namespace PKHeX.Core; /// /// Language code & string asset loading. /// public static class GameLanguage { public const string DefaultLanguage = "en"; // English public static int DefaultLanguageIndex => Array.IndexOf(LanguageCodes, DefaultLanguage); public static string Language2Char(int lang) => lang > LanguageCodes.Length ? DefaultLanguage : LanguageCodes[lang]; public static int LanguageCount => LanguageCodes.Length; /// /// Gets the language from the requested 2-char code. /// /// 2 character language code /// Index of the language code; if not a valid language code, returns the . public static int GetLanguageIndex(string lang) { int l = Array.IndexOf(LanguageCodes, lang); return l < 0 ? DefaultLanguageIndex : l; } /// /// Language codes supported for loading string resources /// /// private static readonly string[] LanguageCodes = { "ja", "en", "fr", "it", "de", "es", "ko", "zh", "zh2" }; /// /// Pokétransporter location names, ordered per index of /// private static readonly string[] ptransp = { "ポケシフター", "Poké Transfer", "Poké Fret", "Pokétrasporto", "Poképorter", "Pokétransfer", "포케시프터", "宝可传送", "寶可傳送" }; public static string GetTransporterName(int index) { if ((uint)index >= ptransp.Length) index = 2; return ptransp[index]; } public static string GetTransporterName(string lang) => GetTransporterName(GetLanguageIndex(lang)); public static string[] GetStrings(string ident, string lang, string type = "text") { string[] data = Util.GetStringList(ident, lang, type); if (data.Length == 0) data = Util.GetStringList(ident, DefaultLanguage, type); return data; } } public enum ProgramLanguage { /// /// Japanese /// 日本語, /// /// English /// English, /// /// French /// Français, /// /// Italian /// Italiano, /// /// German /// Deutsch, /// /// Spanish /// Español, /// /// Korean /// 한국어, /// /// Chinese /// 中文, }