diff options
Diffstat (limited to 'common/util.cpp')
-rw-r--r-- | common/util.cpp | 68 |
1 files changed, 45 insertions, 23 deletions
diff --git a/common/util.cpp b/common/util.cpp index 533795ca9e..d9e51c6be2 100644 --- a/common/util.cpp +++ b/common/util.cpp @@ -107,29 +107,29 @@ bool parseBool(const Common::String &val, bool &valAsBool) { const LanguageDescription g_languages[] = { - { "zh-cn", "Chinese (China)", ZH_CNA }, - { "zh", "Chinese (Taiwan)", ZH_TWN }, - { "cz", "Czech", CZ_CZE }, - { "nl", "Dutch", NL_NLD }, - { "en", "English", EN_ANY }, // Generic English (when only one game version exist) - { "gb", "English (GB)", EN_GRB }, - { "us", "English (US)", EN_USA }, - { "fr", "French", FR_FRA }, - { "de", "German", DE_DEU }, - { "gr", "Greek", GR_GRE }, - { "he", "Hebrew", HE_ISR }, - { "hb", "Hebrew", HE_ISR }, // Deprecated - { "hu", "Hungarian", HU_HUN }, - { "it", "Italian", IT_ITA }, - { "jp", "Japanese", JA_JPN }, - { "kr", "Korean", KO_KOR }, - { "nb", "Norwegian Bokm\xE5l", NB_NOR }, - { "pl", "Polish", PL_POL }, - { "br", "Portuguese", PT_BRA }, - { "ru", "Russian", RU_RUS }, - { "es", "Spanish", ES_ESP }, - { "se", "Swedish", SE_SWE }, - { 0, 0, UNK_LANG } + { "zh-cn", "zh_CN", "Chinese (China)", ZH_CNA }, + { "zh", "zh_TW", "Chinese (Taiwan)", ZH_TWN }, + { "cz", "cs_CZ", "Czech", CZ_CZE }, + { "nl", "nl_NL", "Dutch", NL_NLD }, + { "en", "en", "English", EN_ANY }, // Generic English (when only one game version exist) + { "gb", "en_GB", "English (GB)", EN_GRB }, + { "us", "en_US", "English (US)", EN_USA }, + { "fr", "fr_FR", "French", FR_FRA }, + { "de", "de_DE", "German", DE_DEU }, + { "gr", "el_GR", "Greek", GR_GRE }, + { "he", "he_IL", "Hebrew", HE_ISR }, + { "hb", "he_IL", "Hebrew", HE_ISR }, // Deprecated + { "hu", "hu_HU", "Hungarian", HU_HUN }, + { "it", "it_IT", "Italian", IT_ITA }, + { "jp", "ja_JP", "Japanese", JA_JPN }, + { "kr", "ko_KR", "Korean", KO_KOR }, + { "nb", "nb_NO", "Norwegian Bokm\xE5l", NB_NOR }, // TODO Someone should verify the unix locale + { "pl", "pl_PL", "Polish", PL_POL }, + { "br", "pt_BR", "Portuguese", PT_BRA }, + { "ru", "ru_RU", "Russian", RU_RUS }, + { "es", "es_ES", "Spanish", ES_ESP }, + { "se", "sv_SE", "Swedish", SE_SWE }, + { 0, 0, 0, UNK_LANG } }; Language parseLanguage(const String &str) { @@ -145,6 +145,19 @@ Language parseLanguage(const String &str) { return UNK_LANG; } +Language parseLanguageFromLocale(const char *locale) { + if (!locale || !*locale) + return UNK_LANG; + + const LanguageDescription *l = g_languages; + for (; l->code; ++l) { + if (!strcmp(l->unixLocale, locale)) + return l->id; + } + + return UNK_LANG; +} + const char *getLanguageCode(Language id) { const LanguageDescription *l = g_languages; for (; l->code; ++l) { @@ -154,6 +167,15 @@ const char *getLanguageCode(Language id) { return 0; } +const char *getLanguageLocale(Language id) { + const LanguageDescription *l = g_languages; + for (; l->code; ++l) { + if (l->id == id) + return l->unixLocale; + } + return 0; +} + const char *getLanguageDescription(Language id) { const LanguageDescription *l = g_languages; for (; l->code; ++l) { |