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
///
中文,
}