diff --git a/stepmania/src/RageUtil.cpp b/stepmania/src/RageUtil.cpp index 15f96285d6..4f1ee4963c 100644 --- a/stepmania/src/RageUtil.cpp +++ b/stepmania/src/RageUtil.cpp @@ -299,162 +299,160 @@ RString ConvertUTF8ToACP( RString s ) #endif -static map g_mapLangToName2Letter; -static void InitLanguages() -{ - if( !g_mapLangToName2Letter.empty() ) - return; - - { - map &m = g_mapLangToName2Letter; - m["AA"] = "Afar"; - m["AB"] = "Abkhazian"; - m["AF"] = "Afrikaans"; - m["AM"] = "Amharic"; - m["AR"] = "Arabic"; - m["AS"] = "Assamese"; - m["AY"] = "Aymara"; - m["AZ"] = "Azerbaijani"; - m["BA"] = "Bashkir"; - m["BE"] = "Byelorussian"; - m["BG"] = "Bulgarian"; - m["BH"] = "Bihari"; - m["BI"] = "Bislama"; - m["BN"] = "Bengali"; - m["BO"] = "Tibetan"; - m["BR"] = "Breton"; - m["CA"] = "Catalan"; - m["CO"] = "Corsican"; - m["CS"] = "Czech"; - m["CY"] = "Welsh"; - m["DA"] = "Danish"; - m["DE"] = "German"; - m["DZ"] = "Bhutani"; - m["EL"] = "Greek"; - m["EN"] = "English"; - m["EO"] = "Esperanto"; - m["ES"] = "Spanish"; - m["ET"] = "Estonian"; - m["EU"] = "Basque"; - m["FA"] = "Persian"; - m["FI"] = "Finnish"; - m["FJ"] = "Fiji"; - m["FO"] = "Faeroese"; - m["FR"] = "French"; - m["FY"] = "Frisian"; - m["GA"] = "Irish"; - m["GD"] = "Gaelic"; - m["GL"] = "Galician"; - m["GN"] = "Guarani"; - m["GU"] = "Gujarati"; - m["HA"] = "Hausa"; - m["HI"] = "Hindi"; - m["HR"] = "Croatian"; - m["HU"] = "Hungarian"; - m["HY"] = "Armenian"; - m["IA"] = "Interlingua"; - m["IE"] = "Interlingue"; - m["IK"] = "Inupiak"; - m["IN"] = "Indonesian"; - m["IS"] = "Icelandic"; - m["IT"] = "Italian"; - m["IW"] = "Hebrew"; - m["JA"] = "Japanese"; - m["JI"] = "Yiddish"; - m["JW"] = "Javanese"; - m["KA"] = "Georgian"; - m["KK"] = "Kazakh"; - m["KL"] = "Greenlandic"; - m["KM"] = "Cambodian"; - m["KN"] = "Kannada"; - m["KO"] = "Korean"; - m["KS"] = "Kashmiri"; - m["KU"] = "Kurdish"; - m["KY"] = "Kirghiz"; - m["LA"] = "Latin"; - m["LN"] = "Lingala"; - m["LO"] = "Laothian"; - m["LT"] = "Lithuanian"; - m["LV"] = "Latvian"; - m["MG"] = "Malagasy"; - m["MI"] = "Maori"; - m["MK"] = "Macedonian"; - m["ML"] = "Malayalam"; - m["MN"] = "Mongolian"; - m["MO"] = "Moldavian"; - m["MR"] = "Marathi"; - m["MS"] = "Malay"; - m["MT"] = "Maltese"; - m["MY"] = "Burmese"; - m["NA"] = "Nauru"; - m["NE"] = "Nepali"; - m["NL"] = "Dutch"; - m["NO"] = "Norwegian"; - m["OC"] = "Occitan"; - m["OM"] = "Oromo"; - m["OR"] = "Oriya"; - m["PA"] = "Punjabi"; - m["PL"] = "Polish"; - m["PS"] = "Pashto"; - m["PT"] = "Portuguese"; - m["QU"] = "Quechua"; - m["RM"] = "Rhaeto-Romance"; - m["RN"] = "Kirundi"; - m["RO"] = "Romanian"; - m["RU"] = "Russian"; - m["RW"] = "Kinyarwanda"; - m["SA"] = "Sanskrit"; - m["SD"] = "Sindhi"; - m["SG"] = "Sangro"; - m["SH"] = "Serbo-Croatian"; - m["SI"] = "Singhalese"; - m["SK"] = "Slovak"; - m["SL"] = "Slovenian"; - m["SM"] = "Samoan"; - m["SN"] = "Shona"; - m["SO"] = "Somali"; - m["SQ"] = "Albanian"; - m["SR"] = "Serbian"; - m["SS"] = "Siswati"; - m["ST"] = "Sesotho"; - m["SU"] = "Sudanese"; - m["SV"] = "Swedish"; - m["SW"] = "Swahili"; - m["TA"] = "Tamil"; - m["TE"] = "Tegulu"; - m["TG"] = "Tajik"; - m["TH"] = "Thai"; - m["TI"] = "Tigrinya"; - m["TK"] = "Turkmen"; - m["TL"] = "Tagalog"; - m["TN"] = "Setswana"; - m["TO"] = "Tonga"; - m["TR"] = "Turkish"; - m["TS"] = "Tsonga"; - m["TT"] = "Tatar"; - m["TW"] = "Twi"; - m["UK"] = "Ukrainian"; - m["UR"] = "Urdu"; - m["UZ"] = "Uzbek"; - m["VI"] = "Vietnamese"; - m["VO"] = "Volapuk"; - m["WO"] = "Wolof"; - m["XH"] = "Xhosa"; - m["YO"] = "Yoruba"; - m["ZH"] = "Chinese"; - m["ZU"] = "Zulu"; - } -} - +// native forms: http://people.w3.org/rishida/names/languages.html /* We don't use 3-letter codes, so we don't bother supporting them. */ -RString GetLanguageNameFromISO639Code( RString sName ) +static const LanguageInfo g_langs[] = { - InitLanguages(); + {"AA", "Afar", ""}, + {"AB", "Abkhazian", "аҧсуа бызшәа"}, + {"AF", "Afrikaans", "Afrikaans"}, + {"AM", "Amharic", ""}, + {"AR", "Arabic", "العربية"}, + {"AS", "Assamese", ""}, + {"AY", "Aymara", ""}, + {"AZ", "Azerbaijani", "azərbaycan"}, + {"BA", "Bashkir", ""}, + {"BE", "Byelorussian", "Беларуская"}, + {"BG", "Bulgarian", "Български"}, + {"BH", "Bihari", ""}, + {"BI", "Bislama", ""}, + {"BN", "Bengali", ""}, + {"BO", "Tibetan", ""}, + {"BR", "Breton", ""}, + {"CA", "Catalan", "Català"}, + {"CO", "Corsican", ""}, + {"CS", "Czech", "čeština"}, + {"CY", "Welsh", "Cymraeg"}, + {"DA", "Danish", "Dansk"}, + {"DE", "German", "Deutsch"}, + {"DZ", "Bhutani", ""}, + {"EL", "Greek", "Ελληνικά"}, + {"EN", "English", "English"}, + {"EO", "Esperanto", ""}, + {"ES", "Spanish", "Español"}, + {"ET", "Estonian", "Eesti"}, + {"EU", "Basque", "euskera"}, + {"FA", "Persian", "فارسی"}, + {"FI", "Finnish", "Suomi"}, + {"FJ", "Fiji", ""}, + {"FO", "Faeroese", ""}, + {"FR", "French", "français"}, + {"FY", "Frisian", ""}, + {"GA", "Irish", "Gaeilge"}, + {"GD", "Gaelic", ""}, + {"GL", "Galician", "Galego"}, + {"GN", "Guarani", ""}, + {"GU", "Gujarati", ""}, + {"HA", "Hausa", "Hausa"}, + {"HI", "Hindi", "हिंदी"}, + {"HR", "Croatian", "Hrvatski"}, + {"HU", "Hungarian", "Magyar"}, + {"HY", "Armenian", "Հայերեն"}, + {"IA", "Interlingua", ""}, + {"IE", "Interlingue", ""}, + {"IK", "Inupiak", ""}, + {"IN", "Indonesian", "Bahasa indonesia"}, //"ID"? + {"IS", "Icelandic", "Íslenska"}, + {"IT", "Italian", "italiano"}, + {"IW", "Hebrew", "עברית"}, //"HE"? + {"JA", "Japanese", "日本語"}, + {"JI", "Yiddish", ""}, + {"JW", "Javanese", ""}, + {"KA", "Georgian", ""}, + {"KK", "Kazakh", "Қазақ"}, + {"KL", "Greenlandic", ""}, + {"KM", "Cambodian", ""}, + {"KN", "Kannada", "ಕನ್ನಡ"}, + {"KO", "Korean", "한국어"}, + {"KS", "Kashmiri", ""}, + {"KU", "Kurdish", ""}, + {"KY", "Kirghiz", "Кыргыз"}, + {"LA", "Latin", ""}, + {"LN", "Lingala", ""}, + {"LO", "Laothian", ""}, + {"LT", "Lithuanian", "Lietuviškai"}, + {"LV", "Latvian", "Latviešu"}, + {"MG", "Malagasy", ""}, + {"MI", "Maori", ""}, + {"MK", "Macedonian", "Македонски"}, + {"ML", "Malayalam", ""}, + {"MN", "Mongolian", ""}, + {"MO", "Moldavian", ""}, + {"MR", "Marathi", ""}, + {"MS", "Malay", "Bahasa melayu"}, + {"MT", "Maltese", "Malti"}, + {"MY", "Burmese", ""}, + {"NA", "Nauru", ""}, + {"NE", "Nepali", ""}, + {"NL", "Dutch", "Nederlands"}, + {"NO", "Norwegian", "Norsk"}, + {"OC", "Occitan", ""}, + {"OM", "Oromo", ""}, + {"OR", "Oriya", ""}, + {"PA", "Punjabi", ""}, + {"PL", "Polish", "Polski"}, + {"PS", "Pashto", "پښتو"}, + {"PT", "Portuguese", "português"}, + {"QU", "Quechua", ""}, + {"RM", "Rhaeto-Romance", ""}, + {"RN", "Kirundi", "Kirundi"}, + {"RO", "Romanian", "Română"}, + {"RU", "Russian", "Pyccĸий"}, + {"RW", "Kinyarwanda", "Kinyarwanda"}, + {"SA", "Sanskrit", ""}, + {"SD", "Sindhi", ""}, + {"SG", "Sangro", ""}, + {"SH", "Serbo-Croatian", ""}, + {"SI", "Singhalese", ""}, + {"SK", "Slovak", "Slovenčina"}, + {"SL", "Slovenian", "Slovenščina"}, + {"SM", "Samoan", ""}, + {"SN", "Shona", ""}, + {"SO", "Somali", "Somali"}, + {"SQ", "Albanian", "Shqip"}, + {"SR", "Serbian", "Srpski"}, + {"SS", "Siswati", ""}, + {"ST", "Sesotho", ""}, + {"SU", "Sudanese", ""}, + {"SV", "Swedish", "svenska"}, + {"SW", "Swahili", "Kiswahili"}, + {"TA", "Tamil", ""}, + {"TE", "Tegulu", "తెలుగు"}, + {"TG", "Tajik", ""}, + {"TH", "Thai", "ภาษาไทย"}, + {"TI", "Tigrinya", ""}, + {"TK", "Turkmen", ""}, + {"TL", "Tagalog", ""}, + {"TN", "Setswana", ""}, + {"TO", "Tonga", ""}, + {"TR", "Turkish", "Tϋrkçe"}, + {"TS", "Tsonga", ""}, + {"TT", "Tatar", ""}, + {"TW", "Twi", ""}, + {"UK", "Ukrainian", "Українська"}, + {"UR", "Urdu", "اردو"}, + {"UZ", "Uzbek", "o'zbek"}, + {"VI", "Vietnamese", "Tiếng Việt"}, + {"VO", "Volapuk", ""}, + {"WO", "Wolof", "Wolof"}, + {"XH", "Xhosa", "isiXhosa"}, //"XS"? + {"YO", "Yoruba", "Yorùbá"}, + {"ZH", "Chinese", "中文"}, + {"ZU", "Zulu", "isiZulu"}, +}; - map::const_iterator it = g_mapLangToName2Letter.find(sName); - if( it != g_mapLangToName2Letter.end() ) - return it->second; - return ""; +void GetLanguageInfos( vector &vAddTo ) +{ + for( int i=0; i &sSource) diff --git a/stepmania/src/RageUtil.h b/stepmania/src/RageUtil.h index 6dbc250361..ce80841934 100644 --- a/stepmania/src/RageUtil.h +++ b/stepmania/src/RageUtil.h @@ -280,6 +280,13 @@ RString WStringToRString( const wstring &sString ); RString WcharToUTF8( wchar_t c ); wstring RStringToWstring( const RString &sString ); +struct LanguageInfo +{ + const char *szIso639Code; + const char *szEnglishName; + const char *szNativeName; // empty string if not available +}; +void GetLanguageInfos( vector &vAddTo ); RString GetLanguageNameFromISO639Code( RString sName ); // Splits a RString into an vector according the Delimitor. diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 39b9233c24..fb6ae489c7 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -273,7 +273,7 @@ void ThemeManager::LoadThemeMetrics( deque &theme, const RString &sThemeN RString ThemeManager::GetDefaultLanguage() { RString sLangCode = HOOKS->GetPreferredLanguage(); - return GetLanguageNameFromISO639Code( sLangCode ); + return sLangCode; } void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RString &sLanguage_ )