add language native names
This commit is contained in:
+151
-153
@@ -299,162 +299,160 @@ RString ConvertUTF8ToACP( RString s )
|
||||
|
||||
#endif
|
||||
|
||||
static map<RString,RString> g_mapLangToName2Letter;
|
||||
static void InitLanguages()
|
||||
{
|
||||
if( !g_mapLangToName2Letter.empty() )
|
||||
return;
|
||||
|
||||
{
|
||||
map<RString,RString> &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<RString,RString>::const_iterator it = g_mapLangToName2Letter.find(sName);
|
||||
if( it != g_mapLangToName2Letter.end() )
|
||||
return it->second;
|
||||
return "";
|
||||
void GetLanguageInfos( vector<LanguageInfo> &vAddTo )
|
||||
{
|
||||
for( int i=0; i<ARRAYSIZE(g_langs); i++ )
|
||||
{
|
||||
// Only use languages in the intersection of Windows languages
|
||||
// and languages that had native forms on the site listed above.
|
||||
// Obscure languages are dropped so that they don't clutter up the
|
||||
// smtools UI.
|
||||
if( g_langs[i].szNativeName == RString() )
|
||||
continue;
|
||||
vAddTo.push_back( g_langs[i] );
|
||||
}
|
||||
}
|
||||
|
||||
RString join( const RString &sDeliminator, const vector<RString> &sSource)
|
||||
|
||||
@@ -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<LanguageInfo> &vAddTo );
|
||||
RString GetLanguageNameFromISO639Code( RString sName );
|
||||
|
||||
// Splits a RString into an vector<RString> according the Delimitor.
|
||||
|
||||
@@ -273,7 +273,7 @@ void ThemeManager::LoadThemeMetrics( deque<Theme> &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_ )
|
||||
|
||||
Reference in New Issue
Block a user