add language native names

This commit is contained in:
Chris Danford
2005-12-28 05:43:26 +00:00
parent 45082d0a74
commit 0249ef8d3d
3 changed files with 159 additions and 154 deletions
+151 -153
View File
@@ -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)
+7
View File
@@ -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.
+1 -1
View File
@@ -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_ )