Update language database and move support for it to wxUILocale

Update the language database from the canonical sources:

- It now includes most locales supported by Windows 10.
- It now also has the following attributes for each entry:
 - BCP 47-like locale tag.
 - Reference to canonical name for generic language entries.
 - Language name in this language itself.
- Also add data file with list of language script identifiers and
  aliases based on ISO 15924.
- And update genlang.py to handle all the new attributes and data.

Also move database-related methods of wxLocale to wxUILocale and
just redirect wxLocale methods to the new wxUILocale ones (they are
still preserved for compatibility).

Closes https://github.com/wxWidgets/wxWidgets/pull/2594
This commit is contained in:
utelle
2021-11-23 00:20:10 +01:00
committed by Vadim Zeitlin
parent 1a4a0eee48
commit deef116a09
13 changed files with 4117 additions and 1411 deletions

View File

@@ -238,8 +238,8 @@ public:
wxString GetHeaderValue(const wxString& header,
const wxString& domain = wxEmptyString) const;
// These two methods are for internal use only. First one creates
// ms_languagesDB if it doesn't already exist, second one destroys
// These two methods are for internal use only. First one creates the
// global language database if it doesn't already exist, second one destroys
// it.
static void CreateLanguagesDB();
static void DestroyLanguagesDB();
@@ -251,10 +251,6 @@ private:
const wxString& shortName,
int language);
// copy default table of languages from global static array to
// m_langugagesInfo, called by InitLanguagesDB
static void InitLanguagesDB();
// This method is trivial and just initializes the member fields to default
// values.
void DoCommonInit();

View File

@@ -39,242 +39,901 @@ enum wxLanguage
wxLANGUAGE_ABKHAZIAN,
wxLANGUAGE_AFAR,
wxLANGUAGE_AFAR_DJIBOUTI,
wxLANGUAGE_AFAR_ERITREA,
wxLANGUAGE_AFAR_ETHIOPIA,
wxLANGUAGE_AFRIKAANS,
wxLANGUAGE_AFRIKAANS_NAMIBIA,
wxLANGUAGE_AFRIKAANS_SOUTH_AFRICA,
wxLANGUAGE_AGHEM,
wxLANGUAGE_AGHEM_CAMEROON,
wxLANGUAGE_AKAN,
wxLANGUAGE_AKAN_GHANA,
wxLANGUAGE_ALBANIAN,
wxLANGUAGE_ALBANIAN_ALBANIA,
wxLANGUAGE_ALBANIAN_KOSOVO,
wxLANGUAGE_ALBANIAN_NORTH_MACEDONIA,
wxLANGUAGE_ALSATIAN_FRANCE,
wxLANGUAGE_AMHARIC,
wxLANGUAGE_AMHARIC_ETHIOPIA,
wxLANGUAGE_ARABIC,
wxLANGUAGE_ARABIC_ALGERIA,
wxLANGUAGE_ARABIC_BAHRAIN,
wxLANGUAGE_ARABIC_CHAD,
wxLANGUAGE_ARABIC_COMOROS,
wxLANGUAGE_ARABIC_DJIBOUTI,
wxLANGUAGE_ARABIC_EGYPT,
wxLANGUAGE_ARABIC_ERITREA,
wxLANGUAGE_ARABIC_IRAQ,
wxLANGUAGE_ARABIC_ISRAEL,
wxLANGUAGE_ARABIC_JORDAN,
wxLANGUAGE_ARABIC_KUWAIT,
wxLANGUAGE_ARABIC_LEBANON,
wxLANGUAGE_ARABIC_LIBYA,
wxLANGUAGE_ARABIC_MAURITANIA,
wxLANGUAGE_ARABIC_MOROCCO,
wxLANGUAGE_ARABIC_OMAN,
wxLANGUAGE_ARABIC_PALESTINIAN_AUTHORITY,
wxLANGUAGE_ARABIC_QATAR,
wxLANGUAGE_ARABIC_SAUDI_ARABIA,
wxLANGUAGE_ARABIC_SOMALIA,
wxLANGUAGE_ARABIC_SOUTH_SUDAN,
wxLANGUAGE_ARABIC_SUDAN,
wxLANGUAGE_ARABIC_SYRIA,
wxLANGUAGE_ARABIC_TUNISIA,
wxLANGUAGE_ARABIC_UAE,
wxLANGUAGE_ARABIC_WORLD,
wxLANGUAGE_ARABIC_YEMEN,
wxLANGUAGE_ARMENIAN,
wxLANGUAGE_ARMENIAN_ARMENIA,
wxLANGUAGE_ASSAMESE,
wxLANGUAGE_ASSAMESE_INDIA,
wxLANGUAGE_ASTURIAN,
wxLANGUAGE_ASTURIAN_SPAIN,
wxLANGUAGE_ASU,
wxLANGUAGE_ASU_TANZANIA,
wxLANGUAGE_AYMARA,
wxLANGUAGE_AZERI,
wxLANGUAGE_AZERI_CYRILLIC,
wxLANGUAGE_AZERI_LATIN,
wxLANGUAGE_AZERBAIJANI,
wxLANGUAGE_AZERBAIJANI_CYRILLIC,
wxLANGUAGE_AZERBAIJANI_CYRILLIC_AZERBAIJAN,
wxLANGUAGE_AZERBAIJANI_LATIN,
wxLANGUAGE_AZERBAIJANI_LATIN_AZERBAIJAN,
wxLANGUAGE_BAFIA,
wxLANGUAGE_BAFIA_CAMEROON,
wxLANGUAGE_BAMANANKAN,
wxLANGUAGE_BAMANANKAN_LATIN,
wxLANGUAGE_BAMANANKAN_LATIN_MALI,
wxLANGUAGE_BANGLA,
wxLANGUAGE_BANGLA_BANGLADESH,
wxLANGUAGE_BANGLA_INDIA,
wxLANGUAGE_BASAA,
wxLANGUAGE_BASAA_CAMEROON,
wxLANGUAGE_BASHKIR,
wxLANGUAGE_BASHKIR_RUSSIA,
wxLANGUAGE_BASQUE,
wxLANGUAGE_BASQUE_SPAIN,
wxLANGUAGE_BELARUSIAN,
wxLANGUAGE_BENGALI,
wxLANGUAGE_BHUTANI,
wxLANGUAGE_BELARUSIAN_BELARUS,
wxLANGUAGE_BEMBA,
wxLANGUAGE_BEMBA_ZAMBIA,
wxLANGUAGE_BENA,
wxLANGUAGE_BENA_TANZANIA,
wxLANGUAGE_BIHARI,
wxLANGUAGE_BISLAMA,
wxLANGUAGE_BLIN,
wxLANGUAGE_BLIN_ERITREA,
wxLANGUAGE_BODO,
wxLANGUAGE_BODO_INDIA,
wxLANGUAGE_BOSNIAN,
wxLANGUAGE_BOSNIAN_CYRILLIC,
wxLANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_BOSNIAN_LATIN,
wxLANGUAGE_BOSNIAN_LATIN_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_BRETON,
wxLANGUAGE_BRETON_FRANCE,
wxLANGUAGE_BULGARIAN,
wxLANGUAGE_BULGARIAN_BULGARIA,
wxLANGUAGE_BURMESE,
wxLANGUAGE_BURMESE_MYANMAR,
wxLANGUAGE_CATALAN,
wxLANGUAGE_CATALAN_ANDORRA,
wxLANGUAGE_CATALAN_FRANCE,
wxLANGUAGE_CATALAN_ITALY,
wxLANGUAGE_CATALAN_SPAIN,
wxLANGUAGE_CEBUANO,
wxLANGUAGE_CEBUANO_LATIN,
wxLANGUAGE_CEBUANO_LATIN_PHILIPPINES,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_ARABIC,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_ARABIC_MOROCCO,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN_ALGERIA,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN_MOROCCO,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_TIFINAGH,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_TIFINAGH_MOROCCO,
wxLANGUAGE_CENTRAL_KURDISH,
wxLANGUAGE_CENTRAL_KURDISH_IRAQ,
wxLANGUAGE_CHAKMA,
wxLANGUAGE_CHAKMA_CHAKMA,
wxLANGUAGE_CHAKMA_CHAKMA_BANGLADESH,
wxLANGUAGE_CHAKMA_CHAKMA_INDIA,
wxLANGUAGE_CHECHEN,
wxLANGUAGE_CHECHEN_RUSSIA,
wxLANGUAGE_CHEROKEE,
wxLANGUAGE_CHEROKEE_CHEROKEE,
wxLANGUAGE_CHEROKEE_US,
wxLANGUAGE_CHIGA,
wxLANGUAGE_CHIGA_UGANDA,
wxLANGUAGE_CHINESE,
wxLANGUAGE_CHINESE_SIMPLIFIED,
wxLANGUAGE_CHINESE_TRADITIONAL,
wxLANGUAGE_CHINESE_CHINA,
wxLANGUAGE_CHINESE_HONGKONG,
wxLANGUAGE_CHINESE_MACAU,
wxLANGUAGE_CHINESE_MACAO,
wxLANGUAGE_CHINESE_SIMPLIFIED_EXPLICIT,
wxLANGUAGE_CHINESE_SIMPLIFIED_HONGKONG,
wxLANGUAGE_CHINESE_SIMPLIFIED_MACAO,
wxLANGUAGE_CHINESE_SINGAPORE,
wxLANGUAGE_CHINESE_TAIWAN,
wxLANGUAGE_CHINESE_TRADITIONAL_EXPLICIT,
wxLANGUAGE_CHURCH_SLAVIC,
wxLANGUAGE_CHURCH_SLAVIC_RUSSIA,
wxLANGUAGE_COLOGNIAN,
wxLANGUAGE_COLOGNIAN_GERMANY,
wxLANGUAGE_CORNISH,
wxLANGUAGE_CORNISH_UK,
wxLANGUAGE_CORSICAN,
wxLANGUAGE_CORSICAN_FRANCE,
wxLANGUAGE_CROATIAN,
wxLANGUAGE_CROATIAN_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_CROATIAN_CROATIA,
wxLANGUAGE_CZECH,
wxLANGUAGE_CZECH_CZECHIA,
wxLANGUAGE_DANISH,
wxLANGUAGE_DANISH_DENMARK,
wxLANGUAGE_DANISH_GREENLAND,
wxLANGUAGE_DARI,
wxLANGUAGE_DARI_AFGHANISTAN,
wxLANGUAGE_DIVEHI,
wxLANGUAGE_DIVEHI_MALDIVES,
wxLANGUAGE_DUALA,
wxLANGUAGE_DUALA_CAMEROON,
wxLANGUAGE_DUTCH,
wxLANGUAGE_DUTCH_ARUBA,
wxLANGUAGE_DUTCH_BELGIAN,
wxLANGUAGE_DUTCH_BONAIRE_SINT_EUSTATIUS_AND_SABA,
wxLANGUAGE_DUTCH_CURACAO,
wxLANGUAGE_DUTCH_NETHERLANDS,
wxLANGUAGE_DUTCH_SINT_MAARTEN,
wxLANGUAGE_DUTCH_SURINAME,
wxLANGUAGE_DZONGKHA,
wxLANGUAGE_DZONGKHA_BHUTAN,
wxLANGUAGE_EDO,
wxLANGUAGE_EDO_NIGERIA,
wxLANGUAGE_EMBU,
wxLANGUAGE_EMBU_KENYA,
wxLANGUAGE_ENGLISH,
wxLANGUAGE_ENGLISH_UK,
wxLANGUAGE_ENGLISH_US,
wxLANGUAGE_ENGLISH_AMERICAN_SAMOA,
wxLANGUAGE_ENGLISH_ANGUILLA,
wxLANGUAGE_ENGLISH_ANTIGUA_AND_BARBUDA,
wxLANGUAGE_ENGLISH_AUSTRALIA,
wxLANGUAGE_ENGLISH_AUSTRIA,
wxLANGUAGE_ENGLISH_BAHAMAS,
wxLANGUAGE_ENGLISH_BARBADOS,
wxLANGUAGE_ENGLISH_BELGIUM,
wxLANGUAGE_ENGLISH_BELIZE,
wxLANGUAGE_ENGLISH_BERMUDA,
wxLANGUAGE_ENGLISH_BOTSWANA,
wxLANGUAGE_ENGLISH_BRITISH_INDIAN_OCEAN_TERRITORY,
wxLANGUAGE_ENGLISH_BRITISH_VIRGIN_ISLANDS,
wxLANGUAGE_ENGLISH_BURUNDI,
wxLANGUAGE_ENGLISH_CAMEROON,
wxLANGUAGE_ENGLISH_CANADA,
wxLANGUAGE_ENGLISH_CARIBBEAN,
wxLANGUAGE_ENGLISH_CARIBBEAN_CB,
wxLANGUAGE_ENGLISH_CAYMAN_ISLANDS,
wxLANGUAGE_ENGLISH_CHRISTMAS_ISLAND,
wxLANGUAGE_ENGLISH_COCOS_KEELING_ISLANDS,
wxLANGUAGE_ENGLISH_COOK_ISLANDS,
wxLANGUAGE_ENGLISH_CYPRUS,
wxLANGUAGE_ENGLISH_DENMARK,
wxLANGUAGE_ENGLISH_DOMINICA,
wxLANGUAGE_ENGLISH_EIRE,
wxLANGUAGE_ENGLISH_ERITREA,
wxLANGUAGE_ENGLISH_ESWATINI,
wxLANGUAGE_ENGLISH_EUROPE,
wxLANGUAGE_ENGLISH_FALKLAND_ISLANDS,
wxLANGUAGE_ENGLISH_FIJI,
wxLANGUAGE_ENGLISH_FINLAND,
wxLANGUAGE_ENGLISH_GAMBIA,
wxLANGUAGE_ENGLISH_GERMANY,
wxLANGUAGE_ENGLISH_GHANA,
wxLANGUAGE_ENGLISH_GIBRALTAR,
wxLANGUAGE_ENGLISH_GRENADA,
wxLANGUAGE_ENGLISH_GUAM,
wxLANGUAGE_ENGLISH_GUERNSEY,
wxLANGUAGE_ENGLISH_GUYANA,
wxLANGUAGE_ENGLISH_HONG_KONG_SAR,
wxLANGUAGE_ENGLISH_INDIA,
wxLANGUAGE_ENGLISH_INDONESIA,
wxLANGUAGE_ENGLISH_ISLE_OF_MAN,
wxLANGUAGE_ENGLISH_ISRAEL,
wxLANGUAGE_ENGLISH_JAMAICA,
wxLANGUAGE_ENGLISH_JERSEY,
wxLANGUAGE_ENGLISH_KENYA,
wxLANGUAGE_ENGLISH_KIRIBATI,
wxLANGUAGE_ENGLISH_LESOTHO,
wxLANGUAGE_ENGLISH_LIBERIA,
wxLANGUAGE_ENGLISH_MACAO_SAR,
wxLANGUAGE_ENGLISH_MADAGASCAR,
wxLANGUAGE_ENGLISH_MALAWI,
wxLANGUAGE_ENGLISH_MALAYSIA,
wxLANGUAGE_ENGLISH_MALTA,
wxLANGUAGE_ENGLISH_MARSHALL_ISLANDS,
wxLANGUAGE_ENGLISH_MAURITIUS,
wxLANGUAGE_ENGLISH_MICRONESIA,
wxLANGUAGE_ENGLISH_MONTSERRAT,
wxLANGUAGE_ENGLISH_NAMIBIA,
wxLANGUAGE_ENGLISH_NAURU,
wxLANGUAGE_ENGLISH_NETHERLANDS,
wxLANGUAGE_ENGLISH_NEW_ZEALAND,
wxLANGUAGE_ENGLISH_NIGERIA,
wxLANGUAGE_ENGLISH_NIUE,
wxLANGUAGE_ENGLISH_NORFOLK_ISLAND,
wxLANGUAGE_ENGLISH_NORTHERN_MARIANA_ISLANDS,
wxLANGUAGE_ENGLISH_PAKISTAN,
wxLANGUAGE_ENGLISH_PALAU,
wxLANGUAGE_ENGLISH_PAPUA_NEW_GUINEA,
wxLANGUAGE_ENGLISH_PHILIPPINES,
wxLANGUAGE_ENGLISH_PITCAIRN_ISLANDS,
wxLANGUAGE_ENGLISH_PUERTO_RICO,
wxLANGUAGE_ENGLISH_RWANDA,
wxLANGUAGE_ENGLISH_SAMOA,
wxLANGUAGE_ENGLISH_SEYCHELLES,
wxLANGUAGE_ENGLISH_SIERRA_LEONE,
wxLANGUAGE_ENGLISH_SINGAPORE,
wxLANGUAGE_ENGLISH_SINT_MAARTEN,
wxLANGUAGE_ENGLISH_SLOVENIA,
wxLANGUAGE_ENGLISH_SOLOMON_ISLANDS,
wxLANGUAGE_ENGLISH_SOUTH_AFRICA,
wxLANGUAGE_ENGLISH_SOUTH_SUDAN,
wxLANGUAGE_ENGLISH_ST_HELENA_ASCENSION_TRISTAN_DA_CUNHA,
wxLANGUAGE_ENGLISH_ST_KITTS_AND_NEVIS,
wxLANGUAGE_ENGLISH_ST_LUCIA,
wxLANGUAGE_ENGLISH_ST_VINCENT_AND_GRENADINES,
wxLANGUAGE_ENGLISH_SUDAN,
wxLANGUAGE_ENGLISH_SWEDEN,
wxLANGUAGE_ENGLISH_SWITZERLAND,
wxLANGUAGE_ENGLISH_TANZANIA,
wxLANGUAGE_ENGLISH_TOKELAU,
wxLANGUAGE_ENGLISH_TONGA,
wxLANGUAGE_ENGLISH_TRINIDAD,
wxLANGUAGE_ENGLISH_TURKS_AND_CAICOS_ISLANDS,
wxLANGUAGE_ENGLISH_TUVALU,
wxLANGUAGE_ENGLISH_UGANDA,
wxLANGUAGE_ENGLISH_UK,
wxLANGUAGE_ENGLISH_UNITED_ARAB_EMIRATES,
wxLANGUAGE_ENGLISH_US,
wxLANGUAGE_ENGLISH_US_OUTLYING_ISLANDS,
wxLANGUAGE_ENGLISH_US_VIRGIN_ISLANDS,
wxLANGUAGE_ENGLISH_VANUATU,
wxLANGUAGE_ENGLISH_WORLD,
wxLANGUAGE_ENGLISH_ZAMBIA,
wxLANGUAGE_ENGLISH_ZIMBABWE,
wxLANGUAGE_ESPERANTO,
wxLANGUAGE_ESPERANTO_WORLD,
wxLANGUAGE_ESTONIAN,
wxLANGUAGE_ESTONIAN_ESTONIA,
wxLANGUAGE_EWE,
wxLANGUAGE_EWE_GHANA,
wxLANGUAGE_EWE_TOGO,
wxLANGUAGE_EWONDO,
wxLANGUAGE_EWONDO_CAMEROON,
wxLANGUAGE_FAEROESE,
wxLANGUAGE_FAEROESE_DENMARK,
wxLANGUAGE_FAEROESE_FAROE_ISLANDS,
wxLANGUAGE_FARSI,
wxLANGUAGE_FIJI,
wxLANGUAGE_FILIPINO,
wxLANGUAGE_FILIPINO_PHILIPPINES,
wxLANGUAGE_FINNISH,
wxLANGUAGE_FINNISH_FINLAND,
wxLANGUAGE_FRENCH,
wxLANGUAGE_FRENCH_ALGERIA,
wxLANGUAGE_FRENCH_BELGIAN,
wxLANGUAGE_FRENCH_BENIN,
wxLANGUAGE_FRENCH_BURKINA_FASO,
wxLANGUAGE_FRENCH_BURUNDI,
wxLANGUAGE_FRENCH_CAMEROON,
wxLANGUAGE_FRENCH_CANADIAN,
wxLANGUAGE_FRENCH_CARIBBEAN,
wxLANGUAGE_FRENCH_CENTRAL_AFRICAN_REPUBLIC,
wxLANGUAGE_FRENCH_CHAD,
wxLANGUAGE_FRENCH_COMOROS,
wxLANGUAGE_FRENCH_CONGO,
wxLANGUAGE_FRENCH_CONGO_DRC,
wxLANGUAGE_FRENCH_COTE_DIVOIRE,
wxLANGUAGE_FRENCH_DJIBOUTI,
wxLANGUAGE_FRENCH_EQUATORIAL_GUINEA,
wxLANGUAGE_FRENCH_FRANCE,
wxLANGUAGE_FRENCH_FRENCH_GUIANA,
wxLANGUAGE_FRENCH_FRENCH_POLYNESIA,
wxLANGUAGE_FRENCH_GABON,
wxLANGUAGE_FRENCH_GUADELOUPE,
wxLANGUAGE_FRENCH_GUINEA,
wxLANGUAGE_FRENCH_HAITI,
wxLANGUAGE_FRENCH_LUXEMBOURG,
wxLANGUAGE_FRENCH_MADAGASCAR,
wxLANGUAGE_FRENCH_MALI,
wxLANGUAGE_FRENCH_MARTINIQUE,
wxLANGUAGE_FRENCH_MAURITANIA,
wxLANGUAGE_FRENCH_MAURITIUS,
wxLANGUAGE_FRENCH_MAYOTTE,
wxLANGUAGE_FRENCH_MONACO,
wxLANGUAGE_FRENCH_MOROCCO,
wxLANGUAGE_FRENCH_NEW_CALEDONIA,
wxLANGUAGE_FRENCH_NIGER,
wxLANGUAGE_FRENCH_REUNION,
wxLANGUAGE_FRENCH_RWANDA,
wxLANGUAGE_FRENCH_SENEGAL,
wxLANGUAGE_FRENCH_SEYCHELLES,
wxLANGUAGE_FRENCH_ST_BARTHELEMY,
wxLANGUAGE_FRENCH_ST_MARTIN,
wxLANGUAGE_FRENCH_ST_PIERRE_AND_MIQUELON,
wxLANGUAGE_FRENCH_SWISS,
wxLANGUAGE_FRENCH_SYRIA,
wxLANGUAGE_FRENCH_TOGO,
wxLANGUAGE_FRENCH_TUNISIA,
wxLANGUAGE_FRENCH_VANUATU,
wxLANGUAGE_FRENCH_WALLIS_AND_FUTUNA,
wxLANGUAGE_FRISIAN,
wxLANGUAGE_FRISIAN_NETHERLANDS,
wxLANGUAGE_FRIULIAN,
wxLANGUAGE_FRIULIAN_ITALY,
wxLANGUAGE_FULAH,
wxLANGUAGE_FULAH_LATIN,
wxLANGUAGE_FULAH_LATIN_BURKINA_FASO,
wxLANGUAGE_FULAH_LATIN_CAMEROON,
wxLANGUAGE_FULAH_LATIN_GAMBIA,
wxLANGUAGE_FULAH_LATIN_GHANA,
wxLANGUAGE_FULAH_LATIN_GUINEA,
wxLANGUAGE_FULAH_LATIN_GUINEA_BISSAU,
wxLANGUAGE_FULAH_LATIN_LIBERIA,
wxLANGUAGE_FULAH_LATIN_MAURITANIA,
wxLANGUAGE_FULAH_LATIN_NIGER,
wxLANGUAGE_FULAH_LATIN_NIGERIA,
wxLANGUAGE_FULAH_LATIN_SENEGAL,
wxLANGUAGE_FULAH_LATIN_SIERRA_LEONE,
wxLANGUAGE_GALICIAN,
wxLANGUAGE_GALICIAN_SPAIN,
wxLANGUAGE_GANDA,
wxLANGUAGE_GANDA_UGANDA,
wxLANGUAGE_GEORGIAN,
wxLANGUAGE_GEORGIAN_GEORGIA,
wxLANGUAGE_GERMAN,
wxLANGUAGE_GERMAN_AUSTRIAN,
wxLANGUAGE_GERMAN_BELGIUM,
wxLANGUAGE_GERMAN_GERMANY,
wxLANGUAGE_GERMAN_ITALY,
wxLANGUAGE_GERMAN_LIECHTENSTEIN,
wxLANGUAGE_GERMAN_LUXEMBOURG,
wxLANGUAGE_GERMAN_SWISS,
wxLANGUAGE_GREEK,
wxLANGUAGE_GREEK_CYPRUS,
wxLANGUAGE_GREEK_GREECE,
wxLANGUAGE_GREENLANDIC,
wxLANGUAGE_GUARANI,
wxLANGUAGE_GUARANI_PARAGUAY,
wxLANGUAGE_GUJARATI,
wxLANGUAGE_GUJARATI_INDIA,
wxLANGUAGE_GUSII,
wxLANGUAGE_GUSII_KENYA,
wxLANGUAGE_HAUSA,
wxLANGUAGE_HAUSA_LATIN,
wxLANGUAGE_HAUSA_LATIN_GHANA,
wxLANGUAGE_HAUSA_LATIN_NIGER,
wxLANGUAGE_HAUSA_LATIN_NIGERIA,
wxLANGUAGE_HAWAIIAN,
wxLANGUAGE_HAWAIIAN_US,
wxLANGUAGE_HEBREW,
wxLANGUAGE_HEBREW_ISRAEL,
wxLANGUAGE_HINDI,
wxLANGUAGE_HINDI_INDIA,
wxLANGUAGE_HUNGARIAN,
wxLANGUAGE_HUNGARIAN_HUNGARY,
wxLANGUAGE_IBIBIO,
wxLANGUAGE_IBIBIO_NIGERIA,
wxLANGUAGE_ICELANDIC,
wxLANGUAGE_ICELANDIC_ICELAND,
wxLANGUAGE_IGBO,
wxLANGUAGE_IGBO_NIGERIA,
wxLANGUAGE_INDONESIAN,
wxLANGUAGE_INDONESIAN_INDONESIA,
wxLANGUAGE_INTERLINGUA,
wxLANGUAGE_INTERLINGUA_WORLD,
wxLANGUAGE_INTERLINGUE,
wxLANGUAGE_INUKTITUT,
wxLANGUAGE_INUKTITUT_LATIN,
wxLANGUAGE_INUKTITUT_LATIN_CANADA,
wxLANGUAGE_INUKTITUT_SYLLABICS,
wxLANGUAGE_INUKTITUT_SYLLABICS_CANADA,
wxLANGUAGE_INUPIAK,
wxLANGUAGE_IRISH,
wxLANGUAGE_IRISH_IRELAND,
wxLANGUAGE_ITALIAN,
wxLANGUAGE_ITALIAN_ITALY,
wxLANGUAGE_ITALIAN_SAN_MARINO,
wxLANGUAGE_ITALIAN_SWISS,
wxLANGUAGE_ITALIAN_VATICAN_CITY,
wxLANGUAGE_JAPANESE,
wxLANGUAGE_JAPANESE_JAPAN,
wxLANGUAGE_JAVANESE,
wxLANGUAGE_JAVANESE_INDONESIA,
wxLANGUAGE_JAVANESE_JAVANESE,
wxLANGUAGE_JAVANESE_JAVANESE_INDONESIA,
wxLANGUAGE_JOLA_FONYI,
wxLANGUAGE_JOLA_FONYI_SENEGAL,
wxLANGUAGE_KABUVERDIANU,
wxLANGUAGE_KABUVERDIANU_CABO_VERDE,
wxLANGUAGE_KABYLE,
wxLANGUAGE_KABYLE_ALGERIA,
wxLANGUAGE_KAKO,
wxLANGUAGE_KAKO_CAMEROON,
wxLANGUAGE_KALAALLISUT,
wxLANGUAGE_KALENJIN,
wxLANGUAGE_KALENJIN_KENYA,
wxLANGUAGE_KAMBA,
wxLANGUAGE_KAMBA_KENYA,
wxLANGUAGE_KANNADA,
wxLANGUAGE_KANNADA_INDIA,
wxLANGUAGE_KANURI,
wxLANGUAGE_KANURI_LATIN,
wxLANGUAGE_KANURI_NIGERIA,
wxLANGUAGE_KASHMIRI,
wxLANGUAGE_KASHMIRI_DEVANAGARI,
wxLANGUAGE_KASHMIRI_DEVANAGARI_INDIA,
wxLANGUAGE_KASHMIRI_INDIA,
wxLANGUAGE_KASHMIRI_PERSO_ARABIC,
wxLANGUAGE_KASHMIRI_PERSO_ARABIC_INDIA,
wxLANGUAGE_KAZAKH,
wxLANGUAGE_KERNEWEK,
wxLANGUAGE_KAZAKH_KAZAKHSTAN,
wxLANGUAGE_KHMER,
wxLANGUAGE_KHMER_CAMBODIA,
wxLANGUAGE_KICHE,
wxLANGUAGE_KICHE_GUATEMALA,
wxLANGUAGE_KICHE_LATIN,
wxLANGUAGE_KIKUYU,
wxLANGUAGE_KIKUYU_KENYA,
wxLANGUAGE_KINYARWANDA,
wxLANGUAGE_KINYARWANDA_RWANDA,
wxLANGUAGE_KIRGHIZ,
wxLANGUAGE_KIRGHIZ_KYRGYZSTAN,
wxLANGUAGE_KIRUNDI,
wxLANGUAGE_KIRUNDI_BURUNDI,
wxLANGUAGE_KONKANI,
wxLANGUAGE_KONKANI_INDIA,
wxLANGUAGE_KOREAN,
wxLANGUAGE_KOREAN_KOREA,
wxLANGUAGE_KOREAN_NORTH_KOREA,
wxLANGUAGE_KOYRABORO_SENNI,
wxLANGUAGE_KOYRABORO_SENNI_MALI,
wxLANGUAGE_KOYRA_CHIINI,
wxLANGUAGE_KOYRA_CHIINI_MALI,
wxLANGUAGE_KURDISH,
wxLANGUAGE_KURDISH_PERSO_ARABIC_IRAN,
wxLANGUAGE_KWASIO,
wxLANGUAGE_KWASIO_CAMEROON,
wxLANGUAGE_LAKOTA,
wxLANGUAGE_LAKOTA_US,
wxLANGUAGE_LANGI,
wxLANGUAGE_LANGI_TANZANIA,
wxLANGUAGE_LAOTHIAN,
wxLANGUAGE_LAOTHIAN_LAOS,
wxLANGUAGE_LATIN,
wxLANGUAGE_LATIN_WORLD,
wxLANGUAGE_LATVIAN,
wxLANGUAGE_LATVIAN_LATVIA,
wxLANGUAGE_LINGALA,
wxLANGUAGE_LINGALA_ANGOLA,
wxLANGUAGE_LINGALA_CENTRAL_AFRICAN_REPUBLIC,
wxLANGUAGE_LINGALA_CONGO,
wxLANGUAGE_LINGALA_CONGO_DRC,
wxLANGUAGE_LITHUANIAN,
wxLANGUAGE_LITHUANIAN_LITHUANIA,
wxLANGUAGE_LOWER_SORBIAN,
wxLANGUAGE_LOWER_SORBIAN_GERMANY,
wxLANGUAGE_LOW_GERMAN,
wxLANGUAGE_LOW_GERMAN_GERMANY,
wxLANGUAGE_LOW_GERMAN_NETHERLANDS,
wxLANGUAGE_LUBA_KATANGA,
wxLANGUAGE_LUBA_KATANGA_CONGO_DRC,
wxLANGUAGE_LUO,
wxLANGUAGE_LUO_KENYA,
wxLANGUAGE_LUXEMBOURGISH,
wxLANGUAGE_LUXEMBOURGISH_LUXEMBOURG,
wxLANGUAGE_LUYIA,
wxLANGUAGE_LUYIA_KENYA,
wxLANGUAGE_MACEDONIAN,
wxLANGUAGE_MACEDONIAN_NORTH_MACEDONIA,
wxLANGUAGE_MACHAME,
wxLANGUAGE_MACHAME_TANZANIA,
wxLANGUAGE_MAKHUWA_MEETTO,
wxLANGUAGE_MAKHUWA_MEETTO_MOZAMBIQUE,
wxLANGUAGE_MAKONDE,
wxLANGUAGE_MAKONDE_TANZANIA,
wxLANGUAGE_MALAGASY,
wxLANGUAGE_MALAGASY_MADAGASCAR,
wxLANGUAGE_MALAY,
wxLANGUAGE_MALAYALAM,
wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM,
wxLANGUAGE_MALAYALAM_INDIA,
wxLANGUAGE_MALAY_BRUNEI,
wxLANGUAGE_MALAY_MALAYSIA,
wxLANGUAGE_MALAY_SINGAPORE,
wxLANGUAGE_MALTESE,
wxLANGUAGE_MALTESE_MALTA,
wxLANGUAGE_MANIPURI,
wxLANGUAGE_MANIPURI_INDIA,
wxLANGUAGE_MANX,
wxLANGUAGE_MANX_ISLE_OF_MAN,
wxLANGUAGE_MAORI,
wxLANGUAGE_MAORI_NEW_ZEALAND,
wxLANGUAGE_MAPUCHE,
wxLANGUAGE_MAPUCHE_CHILE,
wxLANGUAGE_MARATHI,
wxLANGUAGE_MARATHI_INDIA,
wxLANGUAGE_MASAI,
wxLANGUAGE_MASAI_KENYA,
wxLANGUAGE_MASAI_TANZANIA,
wxLANGUAGE_MAZANDERANI,
wxLANGUAGE_MAZANDERANI_IRAN,
wxLANGUAGE_MERU,
wxLANGUAGE_MERU_KENYA,
wxLANGUAGE_META,
wxLANGUAGE_META_CAMEROON,
wxLANGUAGE_MOHAWK,
wxLANGUAGE_MOHAWK_CANADA,
wxLANGUAGE_MOLDAVIAN,
wxLANGUAGE_MONGOLIAN,
wxLANGUAGE_MONGOLIAN_CYRILLIC,
wxLANGUAGE_MONGOLIAN_MONGOLIA,
wxLANGUAGE_MONGOLIAN_TRADITIONAL,
wxLANGUAGE_MONGOLIAN_TRADITIONAL_CHINA,
wxLANGUAGE_MONGOLIAN_TRADITIONAL_MONGOLIA,
wxLANGUAGE_MORISYEN,
wxLANGUAGE_MORISYEN_MAURITIUS,
wxLANGUAGE_MUNDANG,
wxLANGUAGE_MUNDANG_CAMEROON,
wxLANGUAGE_NAMA,
wxLANGUAGE_NAMA_NAMIBIA,
wxLANGUAGE_NAURU,
wxLANGUAGE_NEPALI,
wxLANGUAGE_NEPALI_INDIA,
wxLANGUAGE_NEPALI_NEPAL,
wxLANGUAGE_NGIEMBOON,
wxLANGUAGE_NGIEMBOON_CAMEROON,
wxLANGUAGE_NGOMBA,
wxLANGUAGE_NGOMBA_CAMEROON,
wxLANGUAGE_NKO,
wxLANGUAGE_NKO_GUINEA,
wxLANGUAGE_NORTHERN_LURI,
wxLANGUAGE_NORTHERN_LURI_IRAN,
wxLANGUAGE_NORTHERN_LURI_IRAQ,
wxLANGUAGE_NORTH_NDEBELE,
wxLANGUAGE_NORTH_NDEBELE_ZIMBABWE,
wxLANGUAGE_NORWEGIAN,
wxLANGUAGE_NORWEGIAN_BOKMAL,
wxLANGUAGE_NORWEGIAN_BOKMAL_NORWAY,
wxLANGUAGE_NORWEGIAN_BOKMAL_SVALBARD_AND_JAN_MAYEN,
wxLANGUAGE_NORWEGIAN_NYNORSK,
wxLANGUAGE_NORWEGIAN_NYNORSK_NORWAY,
wxLANGUAGE_NUER,
wxLANGUAGE_NUER_SOUTH_SUDAN,
wxLANGUAGE_NYANKOLE,
wxLANGUAGE_NYANKOLE_UGANDA,
wxLANGUAGE_OCCITAN,
wxLANGUAGE_ORIYA,
wxLANGUAGE_OCCITAN_FRANCE,
wxLANGUAGE_ODIA,
wxLANGUAGE_ODIA_INDIA,
wxLANGUAGE_OROMO,
wxLANGUAGE_OROMO_ETHIOPIA,
wxLANGUAGE_OROMO_KENYA,
wxLANGUAGE_OSSETIC,
wxLANGUAGE_OSSETIC_GEORGIA,
wxLANGUAGE_OSSETIC_RUSSIA,
wxLANGUAGE_PAPIAMENTO,
wxLANGUAGE_PAPIAMENTO_CARIBBEAN,
wxLANGUAGE_PASHTO,
wxLANGUAGE_PASHTO_AFGHANISTAN,
wxLANGUAGE_PASHTO_PAKISTAN,
wxLANGUAGE_PERSIAN_IRAN,
wxLANGUAGE_POLISH,
wxLANGUAGE_POLISH_POLAND,
wxLANGUAGE_PORTUGUESE,
wxLANGUAGE_PORTUGUESE_ANGOLA,
wxLANGUAGE_PORTUGUESE_BRAZILIAN,
wxLANGUAGE_PORTUGUESE_CABO_VERDE,
wxLANGUAGE_PORTUGUESE_EQUATORIAL_GUINEA,
wxLANGUAGE_PORTUGUESE_GUINEA_BISSAU,
wxLANGUAGE_PORTUGUESE_LUXEMBOURG,
wxLANGUAGE_PORTUGUESE_MACAO_SAR,
wxLANGUAGE_PORTUGUESE_MOZAMBIQUE,
wxLANGUAGE_PORTUGUESE_PORTUGAL,
wxLANGUAGE_PORTUGUESE_SAO_TOME_AND_PRINCIPE,
wxLANGUAGE_PORTUGUESE_SWITZERLAND,
wxLANGUAGE_PORTUGUESE_TIMOR_LESTE,
wxLANGUAGE_PRUSSIAN,
wxLANGUAGE_PRUSSIAN_WORLD,
wxLANGUAGE_PUNJABI,
wxLANGUAGE_PUNJABI_ARABIC,
wxLANGUAGE_PUNJABI_GURMUKHI,
wxLANGUAGE_PUNJABI_INDIA,
wxLANGUAGE_PUNJABI_PAKISTAN,
wxLANGUAGE_QUECHUA,
wxLANGUAGE_QUECHUA_BOLIVIA,
wxLANGUAGE_QUECHUA_ECUADOR,
wxLANGUAGE_QUECHUA_MACRO,
wxLANGUAGE_QUECHUA_PERU,
wxLANGUAGE_RHAETO_ROMANCE,
wxLANGUAGE_RHAETO_ROMANCE_SWITZERLAND,
wxLANGUAGE_ROMANIAN,
wxLANGUAGE_ROMANIAN_MOLDOVA,
wxLANGUAGE_ROMANIAN_ROMANIA,
wxLANGUAGE_ROMBO,
wxLANGUAGE_ROMBO_TANZANIA,
wxLANGUAGE_RUSSIAN,
wxLANGUAGE_RUSSIAN_BELARUS,
wxLANGUAGE_RUSSIAN_KAZAKHSTAN,
wxLANGUAGE_RUSSIAN_KYRGYZSTAN,
wxLANGUAGE_RUSSIAN_MOLDOVA,
wxLANGUAGE_RUSSIAN_RUSSIA,
wxLANGUAGE_RUSSIAN_UKRAINE,
wxLANGUAGE_RWA,
wxLANGUAGE_RWA_TANZANIA,
wxLANGUAGE_SAHO,
wxLANGUAGE_SAHO_ERITREA,
wxLANGUAGE_SAKHA,
wxLANGUAGE_SAKHA_RUSSIA,
wxLANGUAGE_SAMBURU,
wxLANGUAGE_SAMBURU_KENYA,
wxLANGUAGE_SAMI,
wxLANGUAGE_SAMI_FINLAND,
wxLANGUAGE_SAMI_INARI,
wxLANGUAGE_SAMI_INARI_FINLAND,
wxLANGUAGE_SAMI_LULE,
wxLANGUAGE_SAMI_LULE_NORWAY,
wxLANGUAGE_SAMI_LULE_SWEDEN,
wxLANGUAGE_SAMI_NORWAY,
wxLANGUAGE_SAMI_SKOLT,
wxLANGUAGE_SAMI_SKOLT_FINLAND,
wxLANGUAGE_SAMI_SOUTHERN,
wxLANGUAGE_SAMI_SOUTHERN_NORWAY,
wxLANGUAGE_SAMI_SOUTHERN_SWEDEN,
wxLANGUAGE_SAMI_SWEDEN,
wxLANGUAGE_SAMOAN,
wxLANGUAGE_SANGHO,
wxLANGUAGE_SANGHO_CENTRAL_AFRICAN_REPUBLIC,
wxLANGUAGE_SANGU,
wxLANGUAGE_SANGU_TANZANIA,
wxLANGUAGE_SANSKRIT,
wxLANGUAGE_SANSKRIT_INDIA,
wxLANGUAGE_SCOTS_GAELIC,
wxLANGUAGE_SCOTS_GAELIC_UK,
wxLANGUAGE_SENA,
wxLANGUAGE_SENA_MOZAMBIQUE,
wxLANGUAGE_SERBIAN,
wxLANGUAGE_SERBIAN_CYRILLIC,
wxLANGUAGE_SERBIAN_CYRILLIC_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_SERBIAN_CYRILLIC_KOSOVO,
wxLANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO,
wxLANGUAGE_SERBIAN_CYRILLIC_SERBIA,
wxLANGUAGE_SERBIAN_CYRILLIC_YU,
wxLANGUAGE_SERBIAN_LATIN,
wxLANGUAGE_SERBIAN_LATIN_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_SERBIAN_LATIN_KOSOVO,
wxLANGUAGE_SERBIAN_LATIN_MONTENEGRO,
wxLANGUAGE_SERBIAN_LATIN_SERBIA,
wxLANGUAGE_SERBIAN_LATIN_YU,
wxLANGUAGE_SERBIAN_SERBIA,
wxLANGUAGE_SERBIAN_YU,
wxLANGUAGE_SERBO_CROATIAN,
wxLANGUAGE_SESOTHO,
wxLANGUAGE_SESOTHO_LESOTHO,
wxLANGUAGE_SESOTHO_SA_LEBOA,
wxLANGUAGE_SESOTHO_SA_LEBOA_SOUTH_AFRICA,
wxLANGUAGE_SESOTHO_SOUTH_AFRICA,
wxLANGUAGE_SETSWANA,
wxLANGUAGE_SETSWANA_BOTSWANA,
wxLANGUAGE_SETSWANA_SOUTH_AFRICA,
wxLANGUAGE_SHAMBALA,
wxLANGUAGE_SHAMBALA_TANZANIA,
wxLANGUAGE_SHONA,
wxLANGUAGE_SHONA_LATIN,
wxLANGUAGE_SHONA_LATIN_ZIMBABWE,
wxLANGUAGE_SINDHI,
wxLANGUAGE_SINDHI_ARABIC,
wxLANGUAGE_SINDHI_DEVANAGARI,
wxLANGUAGE_SINDHI_DEVANAGARI_INDIA,
wxLANGUAGE_SINDHI_PAKISTAN,
wxLANGUAGE_SINHALESE,
wxLANGUAGE_SINHALESE_SRI_LANKA,
wxLANGUAGE_SISWATI,
wxLANGUAGE_SISWATI_ESWATINI,
wxLANGUAGE_SISWATI_SOUTH_AFRICA,
wxLANGUAGE_SLOVAK,
wxLANGUAGE_SLOVAK_SLOVAKIA,
wxLANGUAGE_SLOVENIAN,
wxLANGUAGE_SLOVENIAN_SLOVENIA,
wxLANGUAGE_SOGA,
wxLANGUAGE_SOGA_UGANDA,
wxLANGUAGE_SOMALI,
wxLANGUAGE_SOMALI_DJIBOUTI,
wxLANGUAGE_SOMALI_ETHIOPIA,
wxLANGUAGE_SOMALI_KENYA,
wxLANGUAGE_SOMALI_SOMALIA,
wxLANGUAGE_SOUTH_NDEBELE,
wxLANGUAGE_SOUTH_NDEBELE_SOUTH_AFRICA,
wxLANGUAGE_SPANISH,
wxLANGUAGE_SPANISH_ARGENTINA,
wxLANGUAGE_SPANISH_BELIZE,
wxLANGUAGE_SPANISH_BOLIVIA,
wxLANGUAGE_SPANISH_BRAZIL,
wxLANGUAGE_SPANISH_CHILE,
wxLANGUAGE_SPANISH_COLOMBIA,
wxLANGUAGE_SPANISH_COSTA_RICA,
wxLANGUAGE_SPANISH_CUBA,
wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC,
wxLANGUAGE_SPANISH_ECUADOR,
wxLANGUAGE_SPANISH_EL_SALVADOR,
wxLANGUAGE_SPANISH_EQUATORIAL_GUINEA,
wxLANGUAGE_SPANISH_GUATEMALA,
wxLANGUAGE_SPANISH_HONDURAS,
wxLANGUAGE_SPANISH_LATIN_AMERICA,
wxLANGUAGE_SPANISH_MEXICAN,
wxLANGUAGE_SPANISH_MODERN,
wxLANGUAGE_SPANISH_NICARAGUA,
wxLANGUAGE_SPANISH_PANAMA,
wxLANGUAGE_SPANISH_PARAGUAY,
wxLANGUAGE_SPANISH_PERU,
wxLANGUAGE_SPANISH_PHILIPPINES,
wxLANGUAGE_SPANISH_PUERTO_RICO,
wxLANGUAGE_SPANISH_SPAIN,
wxLANGUAGE_SPANISH_URUGUAY,
wxLANGUAGE_SPANISH_US,
wxLANGUAGE_SPANISH_VENEZUELA,
wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT,
wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT_TIFINAGH,
wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT_TIFINAGH_MOROCCO,
wxLANGUAGE_SUNDANESE,
wxLANGUAGE_SWAHILI,
wxLANGUAGE_SWAHILI_CONGO_DRC,
wxLANGUAGE_SWAHILI_KENYA,
wxLANGUAGE_SWAHILI_TANZANIA,
wxLANGUAGE_SWAHILI_UGANDA,
wxLANGUAGE_SWEDISH,
wxLANGUAGE_SWEDISH_ALAND_ISLANDS,
wxLANGUAGE_SWEDISH_FINLAND,
wxLANGUAGE_SWEDISH_SWEDEN,
wxLANGUAGE_SWISS_GERMAN,
wxLANGUAGE_SWISS_GERMAN_LIECHTENSTEIN,
wxLANGUAGE_SWISS_GERMAN_SWITZERLAND,
wxLANGUAGE_SYRIAC,
wxLANGUAGE_SYRIAC_SYRIA,
wxLANGUAGE_TACHELHIT,
wxLANGUAGE_TACHELHIT_LATIN,
wxLANGUAGE_TACHELHIT_LATIN_MOROCCO,
wxLANGUAGE_TACHELHIT_TIFINAGH,
wxLANGUAGE_TACHELHIT_TIFINAGH_MOROCCO,
wxLANGUAGE_TAGALOG,
wxLANGUAGE_TAITA,
wxLANGUAGE_TAITA_KENYA,
wxLANGUAGE_TAJIK,
wxLANGUAGE_TAJIK_CYRILLIC,
wxLANGUAGE_TAJIK_CYRILLIC_TAJIKISTAN,
wxLANGUAGE_TAMIL,
wxLANGUAGE_TAMIL_INDIA,
wxLANGUAGE_TAMIL_MALAYSIA,
wxLANGUAGE_TAMIL_SINGAPORE,
wxLANGUAGE_TAMIL_SRI_LANKA,
wxLANGUAGE_TASAWAQ,
wxLANGUAGE_TASAWAQ_NIGER,
wxLANGUAGE_TATAR,
wxLANGUAGE_TATAR_RUSSIA,
wxLANGUAGE_TELUGU,
wxLANGUAGE_TELUGU_INDIA,
wxLANGUAGE_TESO,
wxLANGUAGE_TESO_KENYA,
wxLANGUAGE_TESO_UGANDA,
wxLANGUAGE_THAI,
wxLANGUAGE_THAI_THAILAND,
wxLANGUAGE_TIBETAN,
wxLANGUAGE_TIBETAN_CHINA,
wxLANGUAGE_TIBETAN_INDIA,
wxLANGUAGE_TIGRE,
wxLANGUAGE_TIGRE_ERITREA,
wxLANGUAGE_TIGRINYA,
wxLANGUAGE_TIGRINYA_ERITREA,
wxLANGUAGE_TIGRINYA_ETHIOPIA,
wxLANGUAGE_TONGA,
wxLANGUAGE_TONGA_TONGA,
wxLANGUAGE_TSONGA,
wxLANGUAGE_TSONGA_SOUTH_AFRICA,
wxLANGUAGE_TURKISH,
wxLANGUAGE_TURKISH_CYPRUS,
wxLANGUAGE_TURKISH_TURKEY,
wxLANGUAGE_TURKMEN,
wxLANGUAGE_TURKMEN_TURKMENISTAN,
wxLANGUAGE_TWI,
wxLANGUAGE_UIGHUR,
wxLANGUAGE_UIGHUR_CHINA,
wxLANGUAGE_UKRAINIAN,
wxLANGUAGE_UKRAINIAN_UKRAINE,
wxLANGUAGE_UPPER_SORBIAN,
wxLANGUAGE_UPPER_SORBIAN_GERMANY,
wxLANGUAGE_URDU,
wxLANGUAGE_URDU_INDIA,
wxLANGUAGE_URDU_PAKISTAN,
wxLANGUAGE_UZBEK,
wxLANGUAGE_UZBEK_CYRILLIC,
wxLANGUAGE_UZBEK_CYRILLIC_UZBEKISTAN,
wxLANGUAGE_UZBEK_LATIN,
wxLANGUAGE_UZBEK_LATIN_UZBEKISTAN,
wxLANGUAGE_UZBEK_PERSO_ARABIC,
wxLANGUAGE_UZBEK_PERSO_ARABIC_AFGHANISTAN,
wxLANGUAGE_VAI,
wxLANGUAGE_VAI_LATIN,
wxLANGUAGE_VAI_LATIN_LIBERIA,
wxLANGUAGE_VAI_VAI,
wxLANGUAGE_VAI_VAI_LIBERIA,
wxLANGUAGE_VALENCIAN,
wxLANGUAGE_VENDA,
wxLANGUAGE_VENDA_SOUTH_AFRICA,
wxLANGUAGE_VIETNAMESE,
wxLANGUAGE_VIETNAMESE_VIETNAM,
wxLANGUAGE_VOLAPUK,
wxLANGUAGE_VOLAPUK_WORLD,
wxLANGUAGE_VUNJO,
wxLANGUAGE_VUNJO_TANZANIA,
wxLANGUAGE_WALSER,
wxLANGUAGE_WALSER_SWITZERLAND,
wxLANGUAGE_WELSH,
wxLANGUAGE_WELSH_UK,
wxLANGUAGE_WOLAYTTA,
wxLANGUAGE_WOLAYTTA_ETHIOPIA,
wxLANGUAGE_WOLOF,
wxLANGUAGE_WOLOF_SENEGAL,
wxLANGUAGE_XHOSA,
wxLANGUAGE_XHOSA_SOUTH_AFRICA,
wxLANGUAGE_YANGBEN,
wxLANGUAGE_YANGBEN_CAMEROON,
wxLANGUAGE_YI,
wxLANGUAGE_YIDDISH,
wxLANGUAGE_YIDDISH_WORLD,
wxLANGUAGE_YI_CHINA,
wxLANGUAGE_YORUBA,
wxLANGUAGE_YORUBA_BENIN,
wxLANGUAGE_YORUBA_NIGERIA,
wxLANGUAGE_ZARMA,
wxLANGUAGE_ZARMA_NIGER,
wxLANGUAGE_ZHUANG,
wxLANGUAGE_ZULU,
wxLANGUAGE_ZULU_SOUTH_AFRICA,
/// For custom, user-defined languages.
wxLANGUAGE_USER_DEFINED,
/// Synonyms.
wxLANGUAGE_AZERI = wxLANGUAGE_AZERBAIJANI,
wxLANGUAGE_AZERI_CYRILLIC = wxLANGUAGE_AZERBAIJANI_CYRILLIC,
wxLANGUAGE_AZERI_LATIN = wxLANGUAGE_AZERBAIJANI_LATIN,
wxLANGUAGE_BENGALI = wxLANGUAGE_BANGLA,
wxLANGUAGE_BENGALI_BANGLADESH = wxLANGUAGE_BANGLA_BANGLADESH,
wxLANGUAGE_BENGALI_INDIA = wxLANGUAGE_BANGLA_INDIA,
wxLANGUAGE_BHUTANI = wxLANGUAGE_DZONGKHA,
wxLANGUAGE_CHINESE_SIMPLIFIED = wxLANGUAGE_CHINESE_CHINA,
wxLANGUAGE_CHINESE_TRADITIONAL = wxLANGUAGE_CHINESE_TAIWAN,
wxLANGUAGE_CHINESE_MACAU = wxLANGUAGE_CHINESE_MACAO,
wxLANGUAGE_KERNEWEK = wxLANGUAGE_CORNISH,
wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM = wxLANGUAGE_MALAY_BRUNEI,
wxLANGUAGE_ORIYA = wxLANGUAGE_ODIA,
wxLANGUAGE_ORIYA_INDIA = wxLANGUAGE_ODIA_INDIA,
wxLANGUAGE_SPANISH_MODERN = wxLANGUAGE_SPANISH,
/// Obsolete synonym.
wxLANGUAGE_CAMBODIAN = wxLANGUAGE_KHMER

View File

@@ -82,12 +82,17 @@ enum wxLocaleInfo
struct WXDLLIMPEXP_BASE wxLanguageInfo
{
int Language; // wxLanguage id
wxString LocaleTag; // Tag of locale in BCP 47-like notation
wxString CanonicalName; // Canonical name, e.g. fr_FR
wxString CanonicalRef; // Canonical reference including region,
// if the name specifies the language only, e.g. fr_FR for fr;
// empty, if region is unknown or already part of the name.
#ifdef __WINDOWS__
wxUint32 WinLang, // Win32 language identifiers
WinSublang;
#endif // __WINDOWS__
wxString Description; // human-readable name of the language
wxString Description; // human-readable name of the language in English
wxString DescriptionNative; // human-readable name of the language in native language
wxLayoutDirection LayoutDirection;
#ifdef __WINDOWS__

View File

@@ -138,11 +138,59 @@ public:
// its dtor is not virtual.
~wxUILocale();
// Try to get user's (or OS's) preferred language setting.
// Return wxLANGUAGE_UNKNOWN if language-guessing algorithm failed
static int GetSystemLanguage();
// Retrieve the language info struct for the given language
//
// Returns NULL if no info found, pointer must *not* be deleted by caller
static const wxLanguageInfo* GetLanguageInfo(int lang);
// Returns language name in English or empty string if the language
// is not in database
static wxString GetLanguageName(int lang);
// Returns ISO code ("canonical name") of language or empty string if the
// language is not in database
static wxString GetLanguageCanonicalName(int lang);
// Find the language for the given locale string which may be either a
// canonical ISO 2 letter language code ("xx"), a language code followed by
// the country code ("xx_XX") or a Windows full language name ("Xxxxx...")
//
// Returns NULL if no info found, pointer must *not* be deleted by caller
static const wxLanguageInfo* FindLanguageInfo(const wxString& locale);
// Add custom language to the list of known languages.
// Notes: 1) wxLanguageInfo contains platform-specific data
// 2) must be called before Init to have effect
static void AddLanguage(const wxLanguageInfo& info);
// These two methods are for internal use only. First one creates the
// global language database if it doesn't already exist, second one destroys
// it.
static void CreateLanguagesDB();
static void DestroyLanguagesDB();
// These two methods are for internal use only.
// wxLocaleIdent expects script identifiers as listed in ISO 15924.
// However, directory names for translation catalogs follow the
// Unix convention, using script aliases as listed in ISO 15924.
// First one converts a script name to its alias, second converts
// a script alias to its corresponding script name.
// Both methods return empty strings, if the script name or alias
// couldn't be found.
static wxString GetScriptAliasFromName(const wxString& scriptName);
static wxString GetScriptNameFromAlias(const wxString& scriptAlias);
private:
// This ctor is private and exists only for implementation reasons.
// It takes ownership of the provided pointer.
explicit wxUILocale(wxUILocaleImpl* impl = NULL) : m_impl(impl) { }
// Creates the global tables of languages and scripts called by CreateLanguagesDB
static void InitLanguagesDB();
static wxUILocale ms_current;

View File

@@ -33,9 +33,26 @@ struct wxLanguageInfo
/// language info structure.
int Language;
/**
Tag for locale in BCP 47-like notation.
@since 3.1.6
*/
wxString LocaleTag;
/// Canonical name of the language, e.g. @c fr_FR.
wxString CanonicalName;
/**
Canonical reference including region.
Set, if the name specifies the language only, e.g. fr_FR for fr.
Empty, if region is unknown or already part of the name.
@since 3.1.6
*/
wxString CanonicalRef;
//@{
/**
Win32 language identifiers (LANG_xxxx, SUBLANG_xxxx).
@@ -45,9 +62,16 @@ struct wxLanguageInfo
wxUint32 WinLang, WinSublang;
//@}
/// Human-readable name of the language.
/// Human-readable name of the language in English.
wxString Description;
/**
Human-readable name of the language in this language itself.
@since 3.1.6
*/
wxString DescriptionNative;
/// The layout direction used for this language.
wxLayoutDirection LayoutDirection;

View File

@@ -24,242 +24,901 @@ enum wxLanguage
wxLANGUAGE_ABKHAZIAN,
wxLANGUAGE_AFAR,
wxLANGUAGE_AFAR_DJIBOUTI,
wxLANGUAGE_AFAR_ERITREA,
wxLANGUAGE_AFAR_ETHIOPIA,
wxLANGUAGE_AFRIKAANS,
wxLANGUAGE_AFRIKAANS_NAMIBIA,
wxLANGUAGE_AFRIKAANS_SOUTH_AFRICA,
wxLANGUAGE_AGHEM,
wxLANGUAGE_AGHEM_CAMEROON,
wxLANGUAGE_AKAN,
wxLANGUAGE_AKAN_GHANA,
wxLANGUAGE_ALBANIAN,
wxLANGUAGE_ALBANIAN_ALBANIA,
wxLANGUAGE_ALBANIAN_KOSOVO,
wxLANGUAGE_ALBANIAN_NORTH_MACEDONIA,
wxLANGUAGE_ALSATIAN_FRANCE,
wxLANGUAGE_AMHARIC,
wxLANGUAGE_AMHARIC_ETHIOPIA,
wxLANGUAGE_ARABIC,
wxLANGUAGE_ARABIC_ALGERIA,
wxLANGUAGE_ARABIC_BAHRAIN,
wxLANGUAGE_ARABIC_CHAD,
wxLANGUAGE_ARABIC_COMOROS,
wxLANGUAGE_ARABIC_DJIBOUTI,
wxLANGUAGE_ARABIC_EGYPT,
wxLANGUAGE_ARABIC_ERITREA,
wxLANGUAGE_ARABIC_IRAQ,
wxLANGUAGE_ARABIC_ISRAEL,
wxLANGUAGE_ARABIC_JORDAN,
wxLANGUAGE_ARABIC_KUWAIT,
wxLANGUAGE_ARABIC_LEBANON,
wxLANGUAGE_ARABIC_LIBYA,
wxLANGUAGE_ARABIC_MAURITANIA,
wxLANGUAGE_ARABIC_MOROCCO,
wxLANGUAGE_ARABIC_OMAN,
wxLANGUAGE_ARABIC_PALESTINIAN_AUTHORITY,
wxLANGUAGE_ARABIC_QATAR,
wxLANGUAGE_ARABIC_SAUDI_ARABIA,
wxLANGUAGE_ARABIC_SOMALIA,
wxLANGUAGE_ARABIC_SOUTH_SUDAN,
wxLANGUAGE_ARABIC_SUDAN,
wxLANGUAGE_ARABIC_SYRIA,
wxLANGUAGE_ARABIC_TUNISIA,
wxLANGUAGE_ARABIC_UAE,
wxLANGUAGE_ARABIC_WORLD,
wxLANGUAGE_ARABIC_YEMEN,
wxLANGUAGE_ARMENIAN,
wxLANGUAGE_ARMENIAN_ARMENIA,
wxLANGUAGE_ASSAMESE,
wxLANGUAGE_ASSAMESE_INDIA,
wxLANGUAGE_ASTURIAN,
wxLANGUAGE_ASTURIAN_SPAIN,
wxLANGUAGE_ASU,
wxLANGUAGE_ASU_TANZANIA,
wxLANGUAGE_AYMARA,
wxLANGUAGE_AZERI,
wxLANGUAGE_AZERI_CYRILLIC,
wxLANGUAGE_AZERI_LATIN,
wxLANGUAGE_AZERBAIJANI,
wxLANGUAGE_AZERBAIJANI_CYRILLIC,
wxLANGUAGE_AZERBAIJANI_CYRILLIC_AZERBAIJAN,
wxLANGUAGE_AZERBAIJANI_LATIN,
wxLANGUAGE_AZERBAIJANI_LATIN_AZERBAIJAN,
wxLANGUAGE_BAFIA,
wxLANGUAGE_BAFIA_CAMEROON,
wxLANGUAGE_BAMANANKAN,
wxLANGUAGE_BAMANANKAN_LATIN,
wxLANGUAGE_BAMANANKAN_LATIN_MALI,
wxLANGUAGE_BANGLA,
wxLANGUAGE_BANGLA_BANGLADESH,
wxLANGUAGE_BANGLA_INDIA,
wxLANGUAGE_BASAA,
wxLANGUAGE_BASAA_CAMEROON,
wxLANGUAGE_BASHKIR,
wxLANGUAGE_BASHKIR_RUSSIA,
wxLANGUAGE_BASQUE,
wxLANGUAGE_BASQUE_SPAIN,
wxLANGUAGE_BELARUSIAN,
wxLANGUAGE_BENGALI,
wxLANGUAGE_BHUTANI,
wxLANGUAGE_BELARUSIAN_BELARUS,
wxLANGUAGE_BEMBA,
wxLANGUAGE_BEMBA_ZAMBIA,
wxLANGUAGE_BENA,
wxLANGUAGE_BENA_TANZANIA,
wxLANGUAGE_BIHARI,
wxLANGUAGE_BISLAMA,
wxLANGUAGE_BLIN,
wxLANGUAGE_BLIN_ERITREA,
wxLANGUAGE_BODO,
wxLANGUAGE_BODO_INDIA,
wxLANGUAGE_BOSNIAN,
wxLANGUAGE_BOSNIAN_CYRILLIC,
wxLANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_BOSNIAN_LATIN,
wxLANGUAGE_BOSNIAN_LATIN_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_BRETON,
wxLANGUAGE_BRETON_FRANCE,
wxLANGUAGE_BULGARIAN,
wxLANGUAGE_BULGARIAN_BULGARIA,
wxLANGUAGE_BURMESE,
wxLANGUAGE_BURMESE_MYANMAR,
wxLANGUAGE_CATALAN,
wxLANGUAGE_CATALAN_ANDORRA,
wxLANGUAGE_CATALAN_FRANCE,
wxLANGUAGE_CATALAN_ITALY,
wxLANGUAGE_CATALAN_SPAIN,
wxLANGUAGE_CEBUANO,
wxLANGUAGE_CEBUANO_LATIN,
wxLANGUAGE_CEBUANO_LATIN_PHILIPPINES,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_ARABIC,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_ARABIC_MOROCCO,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN_ALGERIA,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_LATIN_MOROCCO,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_TIFINAGH,
wxLANGUAGE_CENTRAL_ATLAS_TAMAZIGHT_TIFINAGH_MOROCCO,
wxLANGUAGE_CENTRAL_KURDISH,
wxLANGUAGE_CENTRAL_KURDISH_IRAQ,
wxLANGUAGE_CHAKMA,
wxLANGUAGE_CHAKMA_CHAKMA,
wxLANGUAGE_CHAKMA_CHAKMA_BANGLADESH,
wxLANGUAGE_CHAKMA_CHAKMA_INDIA,
wxLANGUAGE_CHECHEN,
wxLANGUAGE_CHECHEN_RUSSIA,
wxLANGUAGE_CHEROKEE,
wxLANGUAGE_CHEROKEE_CHEROKEE,
wxLANGUAGE_CHEROKEE_US,
wxLANGUAGE_CHIGA,
wxLANGUAGE_CHIGA_UGANDA,
wxLANGUAGE_CHINESE,
wxLANGUAGE_CHINESE_SIMPLIFIED,
wxLANGUAGE_CHINESE_TRADITIONAL,
wxLANGUAGE_CHINESE_CHINA,
wxLANGUAGE_CHINESE_HONGKONG,
wxLANGUAGE_CHINESE_MACAU,
wxLANGUAGE_CHINESE_MACAO,
wxLANGUAGE_CHINESE_SIMPLIFIED_EXPLICIT,
wxLANGUAGE_CHINESE_SIMPLIFIED_HONGKONG,
wxLANGUAGE_CHINESE_SIMPLIFIED_MACAO,
wxLANGUAGE_CHINESE_SINGAPORE,
wxLANGUAGE_CHINESE_TAIWAN,
wxLANGUAGE_CHINESE_TRADITIONAL_EXPLICIT,
wxLANGUAGE_CHURCH_SLAVIC,
wxLANGUAGE_CHURCH_SLAVIC_RUSSIA,
wxLANGUAGE_COLOGNIAN,
wxLANGUAGE_COLOGNIAN_GERMANY,
wxLANGUAGE_CORNISH,
wxLANGUAGE_CORNISH_UK,
wxLANGUAGE_CORSICAN,
wxLANGUAGE_CORSICAN_FRANCE,
wxLANGUAGE_CROATIAN,
wxLANGUAGE_CROATIAN_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_CROATIAN_CROATIA,
wxLANGUAGE_CZECH,
wxLANGUAGE_CZECH_CZECHIA,
wxLANGUAGE_DANISH,
wxLANGUAGE_DANISH_DENMARK,
wxLANGUAGE_DANISH_GREENLAND,
wxLANGUAGE_DARI,
wxLANGUAGE_DARI_AFGHANISTAN,
wxLANGUAGE_DIVEHI,
wxLANGUAGE_DIVEHI_MALDIVES,
wxLANGUAGE_DUALA,
wxLANGUAGE_DUALA_CAMEROON,
wxLANGUAGE_DUTCH,
wxLANGUAGE_DUTCH_ARUBA,
wxLANGUAGE_DUTCH_BELGIAN,
wxLANGUAGE_DUTCH_BONAIRE_SINT_EUSTATIUS_AND_SABA,
wxLANGUAGE_DUTCH_CURACAO,
wxLANGUAGE_DUTCH_NETHERLANDS,
wxLANGUAGE_DUTCH_SINT_MAARTEN,
wxLANGUAGE_DUTCH_SURINAME,
wxLANGUAGE_DZONGKHA,
wxLANGUAGE_DZONGKHA_BHUTAN,
wxLANGUAGE_EDO,
wxLANGUAGE_EDO_NIGERIA,
wxLANGUAGE_EMBU,
wxLANGUAGE_EMBU_KENYA,
wxLANGUAGE_ENGLISH,
wxLANGUAGE_ENGLISH_UK,
wxLANGUAGE_ENGLISH_US,
wxLANGUAGE_ENGLISH_AMERICAN_SAMOA,
wxLANGUAGE_ENGLISH_ANGUILLA,
wxLANGUAGE_ENGLISH_ANTIGUA_AND_BARBUDA,
wxLANGUAGE_ENGLISH_AUSTRALIA,
wxLANGUAGE_ENGLISH_AUSTRIA,
wxLANGUAGE_ENGLISH_BAHAMAS,
wxLANGUAGE_ENGLISH_BARBADOS,
wxLANGUAGE_ENGLISH_BELGIUM,
wxLANGUAGE_ENGLISH_BELIZE,
wxLANGUAGE_ENGLISH_BERMUDA,
wxLANGUAGE_ENGLISH_BOTSWANA,
wxLANGUAGE_ENGLISH_BRITISH_INDIAN_OCEAN_TERRITORY,
wxLANGUAGE_ENGLISH_BRITISH_VIRGIN_ISLANDS,
wxLANGUAGE_ENGLISH_BURUNDI,
wxLANGUAGE_ENGLISH_CAMEROON,
wxLANGUAGE_ENGLISH_CANADA,
wxLANGUAGE_ENGLISH_CARIBBEAN,
wxLANGUAGE_ENGLISH_CARIBBEAN_CB,
wxLANGUAGE_ENGLISH_CAYMAN_ISLANDS,
wxLANGUAGE_ENGLISH_CHRISTMAS_ISLAND,
wxLANGUAGE_ENGLISH_COCOS_KEELING_ISLANDS,
wxLANGUAGE_ENGLISH_COOK_ISLANDS,
wxLANGUAGE_ENGLISH_CYPRUS,
wxLANGUAGE_ENGLISH_DENMARK,
wxLANGUAGE_ENGLISH_DOMINICA,
wxLANGUAGE_ENGLISH_EIRE,
wxLANGUAGE_ENGLISH_ERITREA,
wxLANGUAGE_ENGLISH_ESWATINI,
wxLANGUAGE_ENGLISH_EUROPE,
wxLANGUAGE_ENGLISH_FALKLAND_ISLANDS,
wxLANGUAGE_ENGLISH_FIJI,
wxLANGUAGE_ENGLISH_FINLAND,
wxLANGUAGE_ENGLISH_GAMBIA,
wxLANGUAGE_ENGLISH_GERMANY,
wxLANGUAGE_ENGLISH_GHANA,
wxLANGUAGE_ENGLISH_GIBRALTAR,
wxLANGUAGE_ENGLISH_GRENADA,
wxLANGUAGE_ENGLISH_GUAM,
wxLANGUAGE_ENGLISH_GUERNSEY,
wxLANGUAGE_ENGLISH_GUYANA,
wxLANGUAGE_ENGLISH_HONG_KONG_SAR,
wxLANGUAGE_ENGLISH_INDIA,
wxLANGUAGE_ENGLISH_INDONESIA,
wxLANGUAGE_ENGLISH_ISLE_OF_MAN,
wxLANGUAGE_ENGLISH_ISRAEL,
wxLANGUAGE_ENGLISH_JAMAICA,
wxLANGUAGE_ENGLISH_JERSEY,
wxLANGUAGE_ENGLISH_KENYA,
wxLANGUAGE_ENGLISH_KIRIBATI,
wxLANGUAGE_ENGLISH_LESOTHO,
wxLANGUAGE_ENGLISH_LIBERIA,
wxLANGUAGE_ENGLISH_MACAO_SAR,
wxLANGUAGE_ENGLISH_MADAGASCAR,
wxLANGUAGE_ENGLISH_MALAWI,
wxLANGUAGE_ENGLISH_MALAYSIA,
wxLANGUAGE_ENGLISH_MALTA,
wxLANGUAGE_ENGLISH_MARSHALL_ISLANDS,
wxLANGUAGE_ENGLISH_MAURITIUS,
wxLANGUAGE_ENGLISH_MICRONESIA,
wxLANGUAGE_ENGLISH_MONTSERRAT,
wxLANGUAGE_ENGLISH_NAMIBIA,
wxLANGUAGE_ENGLISH_NAURU,
wxLANGUAGE_ENGLISH_NETHERLANDS,
wxLANGUAGE_ENGLISH_NEW_ZEALAND,
wxLANGUAGE_ENGLISH_NIGERIA,
wxLANGUAGE_ENGLISH_NIUE,
wxLANGUAGE_ENGLISH_NORFOLK_ISLAND,
wxLANGUAGE_ENGLISH_NORTHERN_MARIANA_ISLANDS,
wxLANGUAGE_ENGLISH_PAKISTAN,
wxLANGUAGE_ENGLISH_PALAU,
wxLANGUAGE_ENGLISH_PAPUA_NEW_GUINEA,
wxLANGUAGE_ENGLISH_PHILIPPINES,
wxLANGUAGE_ENGLISH_PITCAIRN_ISLANDS,
wxLANGUAGE_ENGLISH_PUERTO_RICO,
wxLANGUAGE_ENGLISH_RWANDA,
wxLANGUAGE_ENGLISH_SAMOA,
wxLANGUAGE_ENGLISH_SEYCHELLES,
wxLANGUAGE_ENGLISH_SIERRA_LEONE,
wxLANGUAGE_ENGLISH_SINGAPORE,
wxLANGUAGE_ENGLISH_SINT_MAARTEN,
wxLANGUAGE_ENGLISH_SLOVENIA,
wxLANGUAGE_ENGLISH_SOLOMON_ISLANDS,
wxLANGUAGE_ENGLISH_SOUTH_AFRICA,
wxLANGUAGE_ENGLISH_SOUTH_SUDAN,
wxLANGUAGE_ENGLISH_ST_HELENA_ASCENSION_TRISTAN_DA_CUNHA,
wxLANGUAGE_ENGLISH_ST_KITTS_AND_NEVIS,
wxLANGUAGE_ENGLISH_ST_LUCIA,
wxLANGUAGE_ENGLISH_ST_VINCENT_AND_GRENADINES,
wxLANGUAGE_ENGLISH_SUDAN,
wxLANGUAGE_ENGLISH_SWEDEN,
wxLANGUAGE_ENGLISH_SWITZERLAND,
wxLANGUAGE_ENGLISH_TANZANIA,
wxLANGUAGE_ENGLISH_TOKELAU,
wxLANGUAGE_ENGLISH_TONGA,
wxLANGUAGE_ENGLISH_TRINIDAD,
wxLANGUAGE_ENGLISH_TURKS_AND_CAICOS_ISLANDS,
wxLANGUAGE_ENGLISH_TUVALU,
wxLANGUAGE_ENGLISH_UGANDA,
wxLANGUAGE_ENGLISH_UK,
wxLANGUAGE_ENGLISH_UNITED_ARAB_EMIRATES,
wxLANGUAGE_ENGLISH_US,
wxLANGUAGE_ENGLISH_US_OUTLYING_ISLANDS,
wxLANGUAGE_ENGLISH_US_VIRGIN_ISLANDS,
wxLANGUAGE_ENGLISH_VANUATU,
wxLANGUAGE_ENGLISH_WORLD,
wxLANGUAGE_ENGLISH_ZAMBIA,
wxLANGUAGE_ENGLISH_ZIMBABWE,
wxLANGUAGE_ESPERANTO,
wxLANGUAGE_ESPERANTO_WORLD,
wxLANGUAGE_ESTONIAN,
wxLANGUAGE_ESTONIAN_ESTONIA,
wxLANGUAGE_EWE,
wxLANGUAGE_EWE_GHANA,
wxLANGUAGE_EWE_TOGO,
wxLANGUAGE_EWONDO,
wxLANGUAGE_EWONDO_CAMEROON,
wxLANGUAGE_FAEROESE,
wxLANGUAGE_FAEROESE_DENMARK,
wxLANGUAGE_FAEROESE_FAROE_ISLANDS,
wxLANGUAGE_FARSI,
wxLANGUAGE_FIJI,
wxLANGUAGE_FILIPINO,
wxLANGUAGE_FILIPINO_PHILIPPINES,
wxLANGUAGE_FINNISH,
wxLANGUAGE_FINNISH_FINLAND,
wxLANGUAGE_FRENCH,
wxLANGUAGE_FRENCH_ALGERIA,
wxLANGUAGE_FRENCH_BELGIAN,
wxLANGUAGE_FRENCH_BENIN,
wxLANGUAGE_FRENCH_BURKINA_FASO,
wxLANGUAGE_FRENCH_BURUNDI,
wxLANGUAGE_FRENCH_CAMEROON,
wxLANGUAGE_FRENCH_CANADIAN,
wxLANGUAGE_FRENCH_CARIBBEAN,
wxLANGUAGE_FRENCH_CENTRAL_AFRICAN_REPUBLIC,
wxLANGUAGE_FRENCH_CHAD,
wxLANGUAGE_FRENCH_COMOROS,
wxLANGUAGE_FRENCH_CONGO,
wxLANGUAGE_FRENCH_CONGO_DRC,
wxLANGUAGE_FRENCH_COTE_DIVOIRE,
wxLANGUAGE_FRENCH_DJIBOUTI,
wxLANGUAGE_FRENCH_EQUATORIAL_GUINEA,
wxLANGUAGE_FRENCH_FRANCE,
wxLANGUAGE_FRENCH_FRENCH_GUIANA,
wxLANGUAGE_FRENCH_FRENCH_POLYNESIA,
wxLANGUAGE_FRENCH_GABON,
wxLANGUAGE_FRENCH_GUADELOUPE,
wxLANGUAGE_FRENCH_GUINEA,
wxLANGUAGE_FRENCH_HAITI,
wxLANGUAGE_FRENCH_LUXEMBOURG,
wxLANGUAGE_FRENCH_MADAGASCAR,
wxLANGUAGE_FRENCH_MALI,
wxLANGUAGE_FRENCH_MARTINIQUE,
wxLANGUAGE_FRENCH_MAURITANIA,
wxLANGUAGE_FRENCH_MAURITIUS,
wxLANGUAGE_FRENCH_MAYOTTE,
wxLANGUAGE_FRENCH_MONACO,
wxLANGUAGE_FRENCH_MOROCCO,
wxLANGUAGE_FRENCH_NEW_CALEDONIA,
wxLANGUAGE_FRENCH_NIGER,
wxLANGUAGE_FRENCH_REUNION,
wxLANGUAGE_FRENCH_RWANDA,
wxLANGUAGE_FRENCH_SENEGAL,
wxLANGUAGE_FRENCH_SEYCHELLES,
wxLANGUAGE_FRENCH_ST_BARTHELEMY,
wxLANGUAGE_FRENCH_ST_MARTIN,
wxLANGUAGE_FRENCH_ST_PIERRE_AND_MIQUELON,
wxLANGUAGE_FRENCH_SWISS,
wxLANGUAGE_FRENCH_SYRIA,
wxLANGUAGE_FRENCH_TOGO,
wxLANGUAGE_FRENCH_TUNISIA,
wxLANGUAGE_FRENCH_VANUATU,
wxLANGUAGE_FRENCH_WALLIS_AND_FUTUNA,
wxLANGUAGE_FRISIAN,
wxLANGUAGE_FRISIAN_NETHERLANDS,
wxLANGUAGE_FRIULIAN,
wxLANGUAGE_FRIULIAN_ITALY,
wxLANGUAGE_FULAH,
wxLANGUAGE_FULAH_LATIN,
wxLANGUAGE_FULAH_LATIN_BURKINA_FASO,
wxLANGUAGE_FULAH_LATIN_CAMEROON,
wxLANGUAGE_FULAH_LATIN_GAMBIA,
wxLANGUAGE_FULAH_LATIN_GHANA,
wxLANGUAGE_FULAH_LATIN_GUINEA,
wxLANGUAGE_FULAH_LATIN_GUINEA_BISSAU,
wxLANGUAGE_FULAH_LATIN_LIBERIA,
wxLANGUAGE_FULAH_LATIN_MAURITANIA,
wxLANGUAGE_FULAH_LATIN_NIGER,
wxLANGUAGE_FULAH_LATIN_NIGERIA,
wxLANGUAGE_FULAH_LATIN_SENEGAL,
wxLANGUAGE_FULAH_LATIN_SIERRA_LEONE,
wxLANGUAGE_GALICIAN,
wxLANGUAGE_GALICIAN_SPAIN,
wxLANGUAGE_GANDA,
wxLANGUAGE_GANDA_UGANDA,
wxLANGUAGE_GEORGIAN,
wxLANGUAGE_GEORGIAN_GEORGIA,
wxLANGUAGE_GERMAN,
wxLANGUAGE_GERMAN_AUSTRIAN,
wxLANGUAGE_GERMAN_BELGIUM,
wxLANGUAGE_GERMAN_GERMANY,
wxLANGUAGE_GERMAN_ITALY,
wxLANGUAGE_GERMAN_LIECHTENSTEIN,
wxLANGUAGE_GERMAN_LUXEMBOURG,
wxLANGUAGE_GERMAN_SWISS,
wxLANGUAGE_GREEK,
wxLANGUAGE_GREEK_CYPRUS,
wxLANGUAGE_GREEK_GREECE,
wxLANGUAGE_GREENLANDIC,
wxLANGUAGE_GUARANI,
wxLANGUAGE_GUARANI_PARAGUAY,
wxLANGUAGE_GUJARATI,
wxLANGUAGE_GUJARATI_INDIA,
wxLANGUAGE_GUSII,
wxLANGUAGE_GUSII_KENYA,
wxLANGUAGE_HAUSA,
wxLANGUAGE_HAUSA_LATIN,
wxLANGUAGE_HAUSA_LATIN_GHANA,
wxLANGUAGE_HAUSA_LATIN_NIGER,
wxLANGUAGE_HAUSA_LATIN_NIGERIA,
wxLANGUAGE_HAWAIIAN,
wxLANGUAGE_HAWAIIAN_US,
wxLANGUAGE_HEBREW,
wxLANGUAGE_HEBREW_ISRAEL,
wxLANGUAGE_HINDI,
wxLANGUAGE_HINDI_INDIA,
wxLANGUAGE_HUNGARIAN,
wxLANGUAGE_HUNGARIAN_HUNGARY,
wxLANGUAGE_IBIBIO,
wxLANGUAGE_IBIBIO_NIGERIA,
wxLANGUAGE_ICELANDIC,
wxLANGUAGE_ICELANDIC_ICELAND,
wxLANGUAGE_IGBO,
wxLANGUAGE_IGBO_NIGERIA,
wxLANGUAGE_INDONESIAN,
wxLANGUAGE_INDONESIAN_INDONESIA,
wxLANGUAGE_INTERLINGUA,
wxLANGUAGE_INTERLINGUA_WORLD,
wxLANGUAGE_INTERLINGUE,
wxLANGUAGE_INUKTITUT,
wxLANGUAGE_INUKTITUT_LATIN,
wxLANGUAGE_INUKTITUT_LATIN_CANADA,
wxLANGUAGE_INUKTITUT_SYLLABICS,
wxLANGUAGE_INUKTITUT_SYLLABICS_CANADA,
wxLANGUAGE_INUPIAK,
wxLANGUAGE_IRISH,
wxLANGUAGE_IRISH_IRELAND,
wxLANGUAGE_ITALIAN,
wxLANGUAGE_ITALIAN_ITALY,
wxLANGUAGE_ITALIAN_SAN_MARINO,
wxLANGUAGE_ITALIAN_SWISS,
wxLANGUAGE_ITALIAN_VATICAN_CITY,
wxLANGUAGE_JAPANESE,
wxLANGUAGE_JAPANESE_JAPAN,
wxLANGUAGE_JAVANESE,
wxLANGUAGE_JAVANESE_INDONESIA,
wxLANGUAGE_JAVANESE_JAVANESE,
wxLANGUAGE_JAVANESE_JAVANESE_INDONESIA,
wxLANGUAGE_JOLA_FONYI,
wxLANGUAGE_JOLA_FONYI_SENEGAL,
wxLANGUAGE_KABUVERDIANU,
wxLANGUAGE_KABUVERDIANU_CABO_VERDE,
wxLANGUAGE_KABYLE,
wxLANGUAGE_KABYLE_ALGERIA,
wxLANGUAGE_KAKO,
wxLANGUAGE_KAKO_CAMEROON,
wxLANGUAGE_KALAALLISUT,
wxLANGUAGE_KALENJIN,
wxLANGUAGE_KALENJIN_KENYA,
wxLANGUAGE_KAMBA,
wxLANGUAGE_KAMBA_KENYA,
wxLANGUAGE_KANNADA,
wxLANGUAGE_KANNADA_INDIA,
wxLANGUAGE_KANURI,
wxLANGUAGE_KANURI_LATIN,
wxLANGUAGE_KANURI_NIGERIA,
wxLANGUAGE_KASHMIRI,
wxLANGUAGE_KASHMIRI_DEVANAGARI,
wxLANGUAGE_KASHMIRI_DEVANAGARI_INDIA,
wxLANGUAGE_KASHMIRI_INDIA,
wxLANGUAGE_KASHMIRI_PERSO_ARABIC,
wxLANGUAGE_KASHMIRI_PERSO_ARABIC_INDIA,
wxLANGUAGE_KAZAKH,
wxLANGUAGE_KERNEWEK,
wxLANGUAGE_KAZAKH_KAZAKHSTAN,
wxLANGUAGE_KHMER,
wxLANGUAGE_KHMER_CAMBODIA,
wxLANGUAGE_KICHE,
wxLANGUAGE_KICHE_GUATEMALA,
wxLANGUAGE_KICHE_LATIN,
wxLANGUAGE_KIKUYU,
wxLANGUAGE_KIKUYU_KENYA,
wxLANGUAGE_KINYARWANDA,
wxLANGUAGE_KINYARWANDA_RWANDA,
wxLANGUAGE_KIRGHIZ,
wxLANGUAGE_KIRGHIZ_KYRGYZSTAN,
wxLANGUAGE_KIRUNDI,
wxLANGUAGE_KIRUNDI_BURUNDI,
wxLANGUAGE_KONKANI,
wxLANGUAGE_KONKANI_INDIA,
wxLANGUAGE_KOREAN,
wxLANGUAGE_KOREAN_KOREA,
wxLANGUAGE_KOREAN_NORTH_KOREA,
wxLANGUAGE_KOYRABORO_SENNI,
wxLANGUAGE_KOYRABORO_SENNI_MALI,
wxLANGUAGE_KOYRA_CHIINI,
wxLANGUAGE_KOYRA_CHIINI_MALI,
wxLANGUAGE_KURDISH,
wxLANGUAGE_KURDISH_PERSO_ARABIC_IRAN,
wxLANGUAGE_KWASIO,
wxLANGUAGE_KWASIO_CAMEROON,
wxLANGUAGE_LAKOTA,
wxLANGUAGE_LAKOTA_US,
wxLANGUAGE_LANGI,
wxLANGUAGE_LANGI_TANZANIA,
wxLANGUAGE_LAOTHIAN,
wxLANGUAGE_LAOTHIAN_LAOS,
wxLANGUAGE_LATIN,
wxLANGUAGE_LATIN_WORLD,
wxLANGUAGE_LATVIAN,
wxLANGUAGE_LATVIAN_LATVIA,
wxLANGUAGE_LINGALA,
wxLANGUAGE_LINGALA_ANGOLA,
wxLANGUAGE_LINGALA_CENTRAL_AFRICAN_REPUBLIC,
wxLANGUAGE_LINGALA_CONGO,
wxLANGUAGE_LINGALA_CONGO_DRC,
wxLANGUAGE_LITHUANIAN,
wxLANGUAGE_LITHUANIAN_LITHUANIA,
wxLANGUAGE_LOWER_SORBIAN,
wxLANGUAGE_LOWER_SORBIAN_GERMANY,
wxLANGUAGE_LOW_GERMAN,
wxLANGUAGE_LOW_GERMAN_GERMANY,
wxLANGUAGE_LOW_GERMAN_NETHERLANDS,
wxLANGUAGE_LUBA_KATANGA,
wxLANGUAGE_LUBA_KATANGA_CONGO_DRC,
wxLANGUAGE_LUO,
wxLANGUAGE_LUO_KENYA,
wxLANGUAGE_LUXEMBOURGISH,
wxLANGUAGE_LUXEMBOURGISH_LUXEMBOURG,
wxLANGUAGE_LUYIA,
wxLANGUAGE_LUYIA_KENYA,
wxLANGUAGE_MACEDONIAN,
wxLANGUAGE_MACEDONIAN_NORTH_MACEDONIA,
wxLANGUAGE_MACHAME,
wxLANGUAGE_MACHAME_TANZANIA,
wxLANGUAGE_MAKHUWA_MEETTO,
wxLANGUAGE_MAKHUWA_MEETTO_MOZAMBIQUE,
wxLANGUAGE_MAKONDE,
wxLANGUAGE_MAKONDE_TANZANIA,
wxLANGUAGE_MALAGASY,
wxLANGUAGE_MALAGASY_MADAGASCAR,
wxLANGUAGE_MALAY,
wxLANGUAGE_MALAYALAM,
wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM,
wxLANGUAGE_MALAYALAM_INDIA,
wxLANGUAGE_MALAY_BRUNEI,
wxLANGUAGE_MALAY_MALAYSIA,
wxLANGUAGE_MALAY_SINGAPORE,
wxLANGUAGE_MALTESE,
wxLANGUAGE_MALTESE_MALTA,
wxLANGUAGE_MANIPURI,
wxLANGUAGE_MANIPURI_INDIA,
wxLANGUAGE_MANX,
wxLANGUAGE_MANX_ISLE_OF_MAN,
wxLANGUAGE_MAORI,
wxLANGUAGE_MAORI_NEW_ZEALAND,
wxLANGUAGE_MAPUCHE,
wxLANGUAGE_MAPUCHE_CHILE,
wxLANGUAGE_MARATHI,
wxLANGUAGE_MARATHI_INDIA,
wxLANGUAGE_MASAI,
wxLANGUAGE_MASAI_KENYA,
wxLANGUAGE_MASAI_TANZANIA,
wxLANGUAGE_MAZANDERANI,
wxLANGUAGE_MAZANDERANI_IRAN,
wxLANGUAGE_MERU,
wxLANGUAGE_MERU_KENYA,
wxLANGUAGE_META,
wxLANGUAGE_META_CAMEROON,
wxLANGUAGE_MOHAWK,
wxLANGUAGE_MOHAWK_CANADA,
wxLANGUAGE_MOLDAVIAN,
wxLANGUAGE_MONGOLIAN,
wxLANGUAGE_MONGOLIAN_CYRILLIC,
wxLANGUAGE_MONGOLIAN_MONGOLIA,
wxLANGUAGE_MONGOLIAN_TRADITIONAL,
wxLANGUAGE_MONGOLIAN_TRADITIONAL_CHINA,
wxLANGUAGE_MONGOLIAN_TRADITIONAL_MONGOLIA,
wxLANGUAGE_MORISYEN,
wxLANGUAGE_MORISYEN_MAURITIUS,
wxLANGUAGE_MUNDANG,
wxLANGUAGE_MUNDANG_CAMEROON,
wxLANGUAGE_NAMA,
wxLANGUAGE_NAMA_NAMIBIA,
wxLANGUAGE_NAURU,
wxLANGUAGE_NEPALI,
wxLANGUAGE_NEPALI_INDIA,
wxLANGUAGE_NEPALI_NEPAL,
wxLANGUAGE_NGIEMBOON,
wxLANGUAGE_NGIEMBOON_CAMEROON,
wxLANGUAGE_NGOMBA,
wxLANGUAGE_NGOMBA_CAMEROON,
wxLANGUAGE_NKO,
wxLANGUAGE_NKO_GUINEA,
wxLANGUAGE_NORTHERN_LURI,
wxLANGUAGE_NORTHERN_LURI_IRAN,
wxLANGUAGE_NORTHERN_LURI_IRAQ,
wxLANGUAGE_NORTH_NDEBELE,
wxLANGUAGE_NORTH_NDEBELE_ZIMBABWE,
wxLANGUAGE_NORWEGIAN,
wxLANGUAGE_NORWEGIAN_BOKMAL,
wxLANGUAGE_NORWEGIAN_BOKMAL_NORWAY,
wxLANGUAGE_NORWEGIAN_BOKMAL_SVALBARD_AND_JAN_MAYEN,
wxLANGUAGE_NORWEGIAN_NYNORSK,
wxLANGUAGE_NORWEGIAN_NYNORSK_NORWAY,
wxLANGUAGE_NUER,
wxLANGUAGE_NUER_SOUTH_SUDAN,
wxLANGUAGE_NYANKOLE,
wxLANGUAGE_NYANKOLE_UGANDA,
wxLANGUAGE_OCCITAN,
wxLANGUAGE_ORIYA,
wxLANGUAGE_OCCITAN_FRANCE,
wxLANGUAGE_ODIA,
wxLANGUAGE_ODIA_INDIA,
wxLANGUAGE_OROMO,
wxLANGUAGE_OROMO_ETHIOPIA,
wxLANGUAGE_OROMO_KENYA,
wxLANGUAGE_OSSETIC,
wxLANGUAGE_OSSETIC_GEORGIA,
wxLANGUAGE_OSSETIC_RUSSIA,
wxLANGUAGE_PAPIAMENTO,
wxLANGUAGE_PAPIAMENTO_CARIBBEAN,
wxLANGUAGE_PASHTO,
wxLANGUAGE_PASHTO_AFGHANISTAN,
wxLANGUAGE_PASHTO_PAKISTAN,
wxLANGUAGE_PERSIAN_IRAN,
wxLANGUAGE_POLISH,
wxLANGUAGE_POLISH_POLAND,
wxLANGUAGE_PORTUGUESE,
wxLANGUAGE_PORTUGUESE_ANGOLA,
wxLANGUAGE_PORTUGUESE_BRAZILIAN,
wxLANGUAGE_PORTUGUESE_CABO_VERDE,
wxLANGUAGE_PORTUGUESE_EQUATORIAL_GUINEA,
wxLANGUAGE_PORTUGUESE_GUINEA_BISSAU,
wxLANGUAGE_PORTUGUESE_LUXEMBOURG,
wxLANGUAGE_PORTUGUESE_MACAO_SAR,
wxLANGUAGE_PORTUGUESE_MOZAMBIQUE,
wxLANGUAGE_PORTUGUESE_PORTUGAL,
wxLANGUAGE_PORTUGUESE_SAO_TOME_AND_PRINCIPE,
wxLANGUAGE_PORTUGUESE_SWITZERLAND,
wxLANGUAGE_PORTUGUESE_TIMOR_LESTE,
wxLANGUAGE_PRUSSIAN,
wxLANGUAGE_PRUSSIAN_WORLD,
wxLANGUAGE_PUNJABI,
wxLANGUAGE_PUNJABI_ARABIC,
wxLANGUAGE_PUNJABI_GURMUKHI,
wxLANGUAGE_PUNJABI_INDIA,
wxLANGUAGE_PUNJABI_PAKISTAN,
wxLANGUAGE_QUECHUA,
wxLANGUAGE_QUECHUA_BOLIVIA,
wxLANGUAGE_QUECHUA_ECUADOR,
wxLANGUAGE_QUECHUA_MACRO,
wxLANGUAGE_QUECHUA_PERU,
wxLANGUAGE_RHAETO_ROMANCE,
wxLANGUAGE_RHAETO_ROMANCE_SWITZERLAND,
wxLANGUAGE_ROMANIAN,
wxLANGUAGE_ROMANIAN_MOLDOVA,
wxLANGUAGE_ROMANIAN_ROMANIA,
wxLANGUAGE_ROMBO,
wxLANGUAGE_ROMBO_TANZANIA,
wxLANGUAGE_RUSSIAN,
wxLANGUAGE_RUSSIAN_BELARUS,
wxLANGUAGE_RUSSIAN_KAZAKHSTAN,
wxLANGUAGE_RUSSIAN_KYRGYZSTAN,
wxLANGUAGE_RUSSIAN_MOLDOVA,
wxLANGUAGE_RUSSIAN_RUSSIA,
wxLANGUAGE_RUSSIAN_UKRAINE,
wxLANGUAGE_RWA,
wxLANGUAGE_RWA_TANZANIA,
wxLANGUAGE_SAHO,
wxLANGUAGE_SAHO_ERITREA,
wxLANGUAGE_SAKHA,
wxLANGUAGE_SAKHA_RUSSIA,
wxLANGUAGE_SAMBURU,
wxLANGUAGE_SAMBURU_KENYA,
wxLANGUAGE_SAMI,
wxLANGUAGE_SAMI_FINLAND,
wxLANGUAGE_SAMI_INARI,
wxLANGUAGE_SAMI_INARI_FINLAND,
wxLANGUAGE_SAMI_LULE,
wxLANGUAGE_SAMI_LULE_NORWAY,
wxLANGUAGE_SAMI_LULE_SWEDEN,
wxLANGUAGE_SAMI_NORWAY,
wxLANGUAGE_SAMI_SKOLT,
wxLANGUAGE_SAMI_SKOLT_FINLAND,
wxLANGUAGE_SAMI_SOUTHERN,
wxLANGUAGE_SAMI_SOUTHERN_NORWAY,
wxLANGUAGE_SAMI_SOUTHERN_SWEDEN,
wxLANGUAGE_SAMI_SWEDEN,
wxLANGUAGE_SAMOAN,
wxLANGUAGE_SANGHO,
wxLANGUAGE_SANGHO_CENTRAL_AFRICAN_REPUBLIC,
wxLANGUAGE_SANGU,
wxLANGUAGE_SANGU_TANZANIA,
wxLANGUAGE_SANSKRIT,
wxLANGUAGE_SANSKRIT_INDIA,
wxLANGUAGE_SCOTS_GAELIC,
wxLANGUAGE_SCOTS_GAELIC_UK,
wxLANGUAGE_SENA,
wxLANGUAGE_SENA_MOZAMBIQUE,
wxLANGUAGE_SERBIAN,
wxLANGUAGE_SERBIAN_CYRILLIC,
wxLANGUAGE_SERBIAN_CYRILLIC_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_SERBIAN_CYRILLIC_KOSOVO,
wxLANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO,
wxLANGUAGE_SERBIAN_CYRILLIC_SERBIA,
wxLANGUAGE_SERBIAN_CYRILLIC_YU,
wxLANGUAGE_SERBIAN_LATIN,
wxLANGUAGE_SERBIAN_LATIN_BOSNIA_AND_HERZEGOVINA,
wxLANGUAGE_SERBIAN_LATIN_KOSOVO,
wxLANGUAGE_SERBIAN_LATIN_MONTENEGRO,
wxLANGUAGE_SERBIAN_LATIN_SERBIA,
wxLANGUAGE_SERBIAN_LATIN_YU,
wxLANGUAGE_SERBIAN_SERBIA,
wxLANGUAGE_SERBIAN_YU,
wxLANGUAGE_SERBO_CROATIAN,
wxLANGUAGE_SESOTHO,
wxLANGUAGE_SESOTHO_LESOTHO,
wxLANGUAGE_SESOTHO_SA_LEBOA,
wxLANGUAGE_SESOTHO_SA_LEBOA_SOUTH_AFRICA,
wxLANGUAGE_SESOTHO_SOUTH_AFRICA,
wxLANGUAGE_SETSWANA,
wxLANGUAGE_SETSWANA_BOTSWANA,
wxLANGUAGE_SETSWANA_SOUTH_AFRICA,
wxLANGUAGE_SHAMBALA,
wxLANGUAGE_SHAMBALA_TANZANIA,
wxLANGUAGE_SHONA,
wxLANGUAGE_SHONA_LATIN,
wxLANGUAGE_SHONA_LATIN_ZIMBABWE,
wxLANGUAGE_SINDHI,
wxLANGUAGE_SINDHI_ARABIC,
wxLANGUAGE_SINDHI_DEVANAGARI,
wxLANGUAGE_SINDHI_DEVANAGARI_INDIA,
wxLANGUAGE_SINDHI_PAKISTAN,
wxLANGUAGE_SINHALESE,
wxLANGUAGE_SINHALESE_SRI_LANKA,
wxLANGUAGE_SISWATI,
wxLANGUAGE_SISWATI_ESWATINI,
wxLANGUAGE_SISWATI_SOUTH_AFRICA,
wxLANGUAGE_SLOVAK,
wxLANGUAGE_SLOVAK_SLOVAKIA,
wxLANGUAGE_SLOVENIAN,
wxLANGUAGE_SLOVENIAN_SLOVENIA,
wxLANGUAGE_SOGA,
wxLANGUAGE_SOGA_UGANDA,
wxLANGUAGE_SOMALI,
wxLANGUAGE_SOMALI_DJIBOUTI,
wxLANGUAGE_SOMALI_ETHIOPIA,
wxLANGUAGE_SOMALI_KENYA,
wxLANGUAGE_SOMALI_SOMALIA,
wxLANGUAGE_SOUTH_NDEBELE,
wxLANGUAGE_SOUTH_NDEBELE_SOUTH_AFRICA,
wxLANGUAGE_SPANISH,
wxLANGUAGE_SPANISH_ARGENTINA,
wxLANGUAGE_SPANISH_BELIZE,
wxLANGUAGE_SPANISH_BOLIVIA,
wxLANGUAGE_SPANISH_BRAZIL,
wxLANGUAGE_SPANISH_CHILE,
wxLANGUAGE_SPANISH_COLOMBIA,
wxLANGUAGE_SPANISH_COSTA_RICA,
wxLANGUAGE_SPANISH_CUBA,
wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC,
wxLANGUAGE_SPANISH_ECUADOR,
wxLANGUAGE_SPANISH_EL_SALVADOR,
wxLANGUAGE_SPANISH_EQUATORIAL_GUINEA,
wxLANGUAGE_SPANISH_GUATEMALA,
wxLANGUAGE_SPANISH_HONDURAS,
wxLANGUAGE_SPANISH_LATIN_AMERICA,
wxLANGUAGE_SPANISH_MEXICAN,
wxLANGUAGE_SPANISH_MODERN,
wxLANGUAGE_SPANISH_NICARAGUA,
wxLANGUAGE_SPANISH_PANAMA,
wxLANGUAGE_SPANISH_PARAGUAY,
wxLANGUAGE_SPANISH_PERU,
wxLANGUAGE_SPANISH_PHILIPPINES,
wxLANGUAGE_SPANISH_PUERTO_RICO,
wxLANGUAGE_SPANISH_SPAIN,
wxLANGUAGE_SPANISH_URUGUAY,
wxLANGUAGE_SPANISH_US,
wxLANGUAGE_SPANISH_VENEZUELA,
wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT,
wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT_TIFINAGH,
wxLANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT_TIFINAGH_MOROCCO,
wxLANGUAGE_SUNDANESE,
wxLANGUAGE_SWAHILI,
wxLANGUAGE_SWAHILI_CONGO_DRC,
wxLANGUAGE_SWAHILI_KENYA,
wxLANGUAGE_SWAHILI_TANZANIA,
wxLANGUAGE_SWAHILI_UGANDA,
wxLANGUAGE_SWEDISH,
wxLANGUAGE_SWEDISH_ALAND_ISLANDS,
wxLANGUAGE_SWEDISH_FINLAND,
wxLANGUAGE_SWEDISH_SWEDEN,
wxLANGUAGE_SWISS_GERMAN,
wxLANGUAGE_SWISS_GERMAN_LIECHTENSTEIN,
wxLANGUAGE_SWISS_GERMAN_SWITZERLAND,
wxLANGUAGE_SYRIAC,
wxLANGUAGE_SYRIAC_SYRIA,
wxLANGUAGE_TACHELHIT,
wxLANGUAGE_TACHELHIT_LATIN,
wxLANGUAGE_TACHELHIT_LATIN_MOROCCO,
wxLANGUAGE_TACHELHIT_TIFINAGH,
wxLANGUAGE_TACHELHIT_TIFINAGH_MOROCCO,
wxLANGUAGE_TAGALOG,
wxLANGUAGE_TAITA,
wxLANGUAGE_TAITA_KENYA,
wxLANGUAGE_TAJIK,
wxLANGUAGE_TAJIK_CYRILLIC,
wxLANGUAGE_TAJIK_CYRILLIC_TAJIKISTAN,
wxLANGUAGE_TAMIL,
wxLANGUAGE_TAMIL_INDIA,
wxLANGUAGE_TAMIL_MALAYSIA,
wxLANGUAGE_TAMIL_SINGAPORE,
wxLANGUAGE_TAMIL_SRI_LANKA,
wxLANGUAGE_TASAWAQ,
wxLANGUAGE_TASAWAQ_NIGER,
wxLANGUAGE_TATAR,
wxLANGUAGE_TATAR_RUSSIA,
wxLANGUAGE_TELUGU,
wxLANGUAGE_TELUGU_INDIA,
wxLANGUAGE_TESO,
wxLANGUAGE_TESO_KENYA,
wxLANGUAGE_TESO_UGANDA,
wxLANGUAGE_THAI,
wxLANGUAGE_THAI_THAILAND,
wxLANGUAGE_TIBETAN,
wxLANGUAGE_TIBETAN_CHINA,
wxLANGUAGE_TIBETAN_INDIA,
wxLANGUAGE_TIGRE,
wxLANGUAGE_TIGRE_ERITREA,
wxLANGUAGE_TIGRINYA,
wxLANGUAGE_TIGRINYA_ERITREA,
wxLANGUAGE_TIGRINYA_ETHIOPIA,
wxLANGUAGE_TONGA,
wxLANGUAGE_TONGA_TONGA,
wxLANGUAGE_TSONGA,
wxLANGUAGE_TSONGA_SOUTH_AFRICA,
wxLANGUAGE_TURKISH,
wxLANGUAGE_TURKISH_CYPRUS,
wxLANGUAGE_TURKISH_TURKEY,
wxLANGUAGE_TURKMEN,
wxLANGUAGE_TURKMEN_TURKMENISTAN,
wxLANGUAGE_TWI,
wxLANGUAGE_UIGHUR,
wxLANGUAGE_UIGHUR_CHINA,
wxLANGUAGE_UKRAINIAN,
wxLANGUAGE_UKRAINIAN_UKRAINE,
wxLANGUAGE_UPPER_SORBIAN,
wxLANGUAGE_UPPER_SORBIAN_GERMANY,
wxLANGUAGE_URDU,
wxLANGUAGE_URDU_INDIA,
wxLANGUAGE_URDU_PAKISTAN,
wxLANGUAGE_UZBEK,
wxLANGUAGE_UZBEK_CYRILLIC,
wxLANGUAGE_UZBEK_CYRILLIC_UZBEKISTAN,
wxLANGUAGE_UZBEK_LATIN,
wxLANGUAGE_UZBEK_LATIN_UZBEKISTAN,
wxLANGUAGE_UZBEK_PERSO_ARABIC,
wxLANGUAGE_UZBEK_PERSO_ARABIC_AFGHANISTAN,
wxLANGUAGE_VAI,
wxLANGUAGE_VAI_LATIN,
wxLANGUAGE_VAI_LATIN_LIBERIA,
wxLANGUAGE_VAI_VAI,
wxLANGUAGE_VAI_VAI_LIBERIA,
wxLANGUAGE_VALENCIAN,
wxLANGUAGE_VENDA,
wxLANGUAGE_VENDA_SOUTH_AFRICA,
wxLANGUAGE_VIETNAMESE,
wxLANGUAGE_VIETNAMESE_VIETNAM,
wxLANGUAGE_VOLAPUK,
wxLANGUAGE_VOLAPUK_WORLD,
wxLANGUAGE_VUNJO,
wxLANGUAGE_VUNJO_TANZANIA,
wxLANGUAGE_WALSER,
wxLANGUAGE_WALSER_SWITZERLAND,
wxLANGUAGE_WELSH,
wxLANGUAGE_WELSH_UK,
wxLANGUAGE_WOLAYTTA,
wxLANGUAGE_WOLAYTTA_ETHIOPIA,
wxLANGUAGE_WOLOF,
wxLANGUAGE_WOLOF_SENEGAL,
wxLANGUAGE_XHOSA,
wxLANGUAGE_XHOSA_SOUTH_AFRICA,
wxLANGUAGE_YANGBEN,
wxLANGUAGE_YANGBEN_CAMEROON,
wxLANGUAGE_YI,
wxLANGUAGE_YIDDISH,
wxLANGUAGE_YIDDISH_WORLD,
wxLANGUAGE_YI_CHINA,
wxLANGUAGE_YORUBA,
wxLANGUAGE_YORUBA_BENIN,
wxLANGUAGE_YORUBA_NIGERIA,
wxLANGUAGE_ZARMA,
wxLANGUAGE_ZARMA_NIGER,
wxLANGUAGE_ZHUANG,
wxLANGUAGE_ZULU,
wxLANGUAGE_ZULU_SOUTH_AFRICA,
/// For custom, user-defined languages.
wxLANGUAGE_USER_DEFINED,
/// Synonyms.
wxLANGUAGE_AZERI = wxLANGUAGE_AZERBAIJANI,
wxLANGUAGE_AZERI_CYRILLIC = wxLANGUAGE_AZERBAIJANI_CYRILLIC,
wxLANGUAGE_AZERI_LATIN = wxLANGUAGE_AZERBAIJANI_LATIN,
wxLANGUAGE_BENGALI = wxLANGUAGE_BANGLA,
wxLANGUAGE_BENGALI_BANGLADESH = wxLANGUAGE_BANGLA_BANGLADESH,
wxLANGUAGE_BENGALI_INDIA = wxLANGUAGE_BANGLA_INDIA,
wxLANGUAGE_BHUTANI = wxLANGUAGE_DZONGKHA,
wxLANGUAGE_CHINESE_SIMPLIFIED = wxLANGUAGE_CHINESE_CHINA,
wxLANGUAGE_CHINESE_TRADITIONAL = wxLANGUAGE_CHINESE_TAIWAN,
wxLANGUAGE_CHINESE_MACAU = wxLANGUAGE_CHINESE_MACAO,
wxLANGUAGE_KERNEWEK = wxLANGUAGE_CORNISH,
wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM = wxLANGUAGE_MALAY_BRUNEI,
wxLANGUAGE_ORIYA = wxLANGUAGE_ODIA,
wxLANGUAGE_ORIYA_INDIA = wxLANGUAGE_ODIA_INDIA,
wxLANGUAGE_SPANISH_MODERN = wxLANGUAGE_SPANISH,
/// Obsolete synonym.
wxLANGUAGE_CAMBODIAN = wxLANGUAGE_KHMER

View File

@@ -189,6 +189,69 @@ public:
conventions.
*/
bool IsSupported() const;
/**
Adds custom, user-defined language to the database of known languages.
This database is used in conjunction with the first form of Init().
*/
static void AddLanguage(const wxLanguageInfo& info);
/**
This function may be used to find the language description structure for the
given locale, specified either as a two letter ISO language code (for example,
"pt"), a language code followed by the country code ("pt_BR") or a full, human
readable, language description ("Portuguese-Brazil").
Returns the information for the given language or @NULL if this language
is unknown. Note that even if the returned pointer is valid, the caller
should @e not delete it.
@see GetLanguageInfo()
*/
static const wxLanguageInfo* FindLanguageInfo(const wxString& locale);
/**
Returns a pointer to wxLanguageInfo structure containing information about
the given language or @NULL if this language is unknown. Note that even if
the returned pointer is valid, the caller should @e not delete it.
See AddLanguage() for the wxLanguageInfo description.
As with Init(), @c wxLANGUAGE_DEFAULT has the special meaning if passed
as an argument to this function and in this case the result of
GetSystemLanguage() is used.
*/
static const wxLanguageInfo* GetLanguageInfo(int lang);
/**
Returns English name of the given language or empty string if this
language is unknown.
See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
*/
static wxString GetLanguageName(int lang);
/**
Returns canonical name (see GetCanonicalName()) of the given language
or empty string if this language is unknown.
See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
*/
static wxString GetLanguageCanonicalName(int lang);
/**
Tries to detect the user's default locale setting.
Returns the ::wxLanguage value or @c wxLANGUAGE_UNKNOWN if the language-guessing
algorithm failed.
@note This function works with @em locales and returns the user's default
locale. This may be, and usually is, the same as their preferred UI
language, but it's not the same thing. Use wxTranslation to obtain
@em language information.
@see wxTranslations::GetBestTranslation().
*/
static int GetSystemLanguage();
};
/**

View File

@@ -1,5 +1,28 @@
Run the genlang.py script from the top level wxWidgets directory to update
include/wx/language.h (wxLanguage enum), interface/wx/language.h (its
documentation) and src/common/languageinfo.cpp (conversion tables) with the data
from langtabl.txt.
Run the genlang.py script from the top level wxWidgets directory to
update include/wx/language.h (wxLanguage enum), interface/wx/language.h
(its documentation) and src/common/languageinfo.cpp (conversion tables)
with the data from langtabl.txt and scripttabl.txt.
langtabl.txt contains a tabular list of language entries. Each entry
contains
- a symbolic language identifier used in enum wxLanguage,
- a BCP 47-like locale identifier,
- a Unix locale identifier,
- a Unix locale identifier including a region id (if the default Unix
locale identifier does not include a region identifier) (mainly for
compatibility with wxWidgets version below 3.1.6),
- numeric Windows language identifier (1),
- numeric Windows sublanguage identifier (1),
- language and region description in English
- language and region description in native language.
scripttabl.txt contains a list of 4-letter script codes and their
aliases (English) based on the ISO 15924 standard (2), restricted to
entries for which aliases are defined. This list is used in wxWidgets
to convert between script code used in BCP 47-like identifiers and
script modifiers used in Unix locale names. The data in (2) can be used
to update scripttabl.txt if necessary.
(1) used on Windows only, deprecated by Microsoft
(2) http://www.unicode.org/iso15924/iso15924-codes.html

View File

@@ -10,22 +10,37 @@ import os
import string
import sys
def ReadScriptTable():
scripttable = []
try:
f = open('misc/languages/scripttabl.txt')
except:
print("Did you run the script from top-level wxWidgets directory?")
raise
for i in f.readlines():
ispl = i.split()
scripttable.append((ispl[0], ispl[1]))
f.close()
return scripttable
def ReadTable():
table = []
try:
f = open('misc/languages/langtabl.txt')
except:
print "Did you run the script from top-level wxWidgets directory?"
print("Did you run the script from top-level wxWidgets directory?")
raise
for i in f.readlines():
ispl = i.split()
table.append((ispl[0], ispl[1], ispl[2], ispl[3], ispl[4], string.join(ispl[5:])))
table.append((ispl[0], ispl[1], ispl[2], ispl[3], ispl[4], ispl[5], ispl[6], string.join(ispl[7:])))
f.close()
return table
def WriteEnum(f, table):
def WriteEnum(f, table, scripttable):
f.write("""
/**
The languages supported by wxLocale.
@@ -51,6 +66,22 @@ enum wxLanguage
/// For custom, user-defined languages.
wxLANGUAGE_USER_DEFINED,
/// Synonyms.
wxLANGUAGE_AZERI = wxLANGUAGE_AZERBAIJANI,
wxLANGUAGE_AZERI_CYRILLIC = wxLANGUAGE_AZERBAIJANI_CYRILLIC,
wxLANGUAGE_AZERI_LATIN = wxLANGUAGE_AZERBAIJANI_LATIN,
wxLANGUAGE_BENGALI = wxLANGUAGE_BANGLA,
wxLANGUAGE_BENGALI_BANGLADESH = wxLANGUAGE_BANGLA_BANGLADESH,
wxLANGUAGE_BENGALI_INDIA = wxLANGUAGE_BANGLA_INDIA,
wxLANGUAGE_BHUTANI = wxLANGUAGE_DZONGKHA,
wxLANGUAGE_CHINESE_SIMPLIFIED = wxLANGUAGE_CHINESE_CHINA,
wxLANGUAGE_CHINESE_TRADITIONAL = wxLANGUAGE_CHINESE_TAIWAN,
wxLANGUAGE_CHINESE_MACAU = wxLANGUAGE_CHINESE_MACAO,
wxLANGUAGE_KERNEWEK = wxLANGUAGE_CORNISH,
wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM = wxLANGUAGE_MALAY_BRUNEI,
wxLANGUAGE_ORIYA = wxLANGUAGE_ODIA,
wxLANGUAGE_ORIYA_INDIA = wxLANGUAGE_ODIA_INDIA,
wxLANGUAGE_SPANISH_MODERN = wxLANGUAGE_SPANISH,
/// Obsolete synonym.
wxLANGUAGE_CAMBODIAN = wxLANGUAGE_KHMER
@@ -59,37 +90,33 @@ enum wxLanguage
""")
def WriteTable(f, table):
all_langs = []
all_sublangs = []
def WriteTable(f, table, scripttable):
sctable = ''
for i in scripttable:
scname = '"%s"' % i[0]
scalias = '"%s"' % i[1]
sctable += ' SCMAP(%s, %s)\n' % (scname, scalias)
lngtable = ''
ifdefs = ''
for i in table:
ican = '"%s"' % i[1]
ibcp47 = '"%s"' % i[1]
ican = '"%s"' % i[2]
if ican == '"-"': ican = '""'
ilang = i[2]
icanbase = '"%s"' % i[3]
if icanbase == '"-"': icanbase = '""'
ilang = i[4]
if ilang == '-': ilang = '0'
isublang = i[3]
isublang = i[5]
if isublang == '-': isublang = '0'
if (i[4] == "LTR") :
if (i[6] == "LTR") :
ilayout = "wxLayout_LeftToRight"
elif (i[4] == "RTL"):
elif (i[6] == "RTL"):
ilayout = "wxLayout_RightToLeft"
else:
print "ERROR: Invalid value for the layout direction";
lngtable += ' LNG(%-38s %-7s, %-15s, %-34s, %s, %s)\n' % \
((i[0]+','), ican, ilang, isublang, ilayout, i[5])
if ilang not in all_langs: all_langs.append(ilang)
if isublang not in all_sublangs: all_sublangs.append(isublang)
for s in all_langs:
if s != '0':
ifdefs += '#ifndef %s\n#define %s (0)\n#endif\n' % (s, s)
for s in all_sublangs:
if s != '0' and s != 'SUBLANG_DEFAULT':
ifdefs += '#ifndef %s\n#define %s SUBLANG_DEFAULT\n#endif\n' % (s, s)
lngtable += ' LNG(%-60s %-17s, %-28s, %-15s, %-4s, %-4s, %s, %s)\n' % \
((i[0]+','), ibcp47, ican, icanbase, ilang, isublang, ilayout, i[7])
f.write("""
// This table is generated by misc/languages/genlang.py
@@ -104,27 +131,36 @@ def WriteTable(f, table):
#define SETWINLANG(info,lang,sublang) \\
info.WinLang = lang, info.WinSublang = sublang;
%s
#endif // __WIN32__
#define LNG(wxlang, canonical, winlang, winsublang, layout, desc) \\
info.Language = wxlang; \\
info.CanonicalName = wxT(canonical); \\
info.LayoutDirection = layout; \\
info.Description = wxT(desc); \\
SETWINLANG(info, winlang, winsublang) \\
#define LNG(wxlang, bcp47tag, canonical, canonicalref, winlang, winsublang, layout, desc, descnative) \\
info.Language = wxlang; \\
info.LocaleTag = wxT(bcp47tag); \\
info.CanonicalName = wxT(canonical); \\
info.CanonicalRef = wxT(canonicalref); \\
info.LayoutDirection = layout; \\
info.Description = wxString::FromUTF8(desc); \\
info.DescriptionNative = wxString::FromUTF8(descnative); \\
SETWINLANG(info, winlang, winsublang) \\
AddLanguage(info);
void wxLocale::InitLanguagesDB()
{
wxLanguageInfo info;
#define SCMAP(scname, scalias) \\
gs_scmap_name2alias[wxT(scname)] = wxT(scalias); \\
gs_scmap_alias2name[wxT(scalias)] = wxT(scname);
void wxUILocale::InitLanguagesDB()
{
wxLanguageInfo info;
// Known languages
%s
// Known language scripts
%s
}
#undef LNG
#undef SCMAP
""" % (ifdefs, lngtable))
""" % (lngtable,sctable))
def ReplaceGeneratedPartOfFile(fname, func):
@@ -147,7 +183,7 @@ def ReplaceGeneratedPartOfFile(fname, func):
print 'Unexpected starting comment.'
betweenBeginAndEnd = 1
fout.write(l)
func(fout, table)
func(fout, table, scripttable)
elif l == '// --- --- --- generated code ends here --- --- ---\n':
if not betweenBeginAndEnd:
print 'End comment found before the starting one?'
@@ -164,10 +200,13 @@ def ReplaceGeneratedPartOfFile(fname, func):
os.remove(fnameNew)
sys.exit(1)
fout.close()
fin.close()
os.remove(fname)
os.rename(fnameNew, fname)
table = ReadTable()
scripttable = ReadScriptTable()
ReplaceGeneratedPartOfFile('include/wx/language.h', WriteEnum)
ReplaceGeneratedPartOfFile('interface/wx/language.h', WriteEnum)
ReplaceGeneratedPartOfFile('src/common/languageinfo.cpp', WriteTable)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,159 @@
Adlm adlam
Aghb caucasian_albanian
Ahom ahom
Arab arabic
Armi imperial_aramaic
Armn armenian
Avst avestan
Bali balinese
Bamu bamum
Bass bassa_vah
Batk batak
Beng bengali
Bhks bhaiksuki
Bopo bopomofo
Brah brahmi
Brai braille
Bugi buginese
Buhd buhid
Cakm chakma
Cans canadian_aboriginal
Cari carian
Cham cham
Cher cherokee
Chrs chorasmian
Copt coptic
Cprt cypriot
Cyrl cyrillic
Deva devanagari
Diak dives_akuru
Dogr dogra
Dsrt deseret
Dupl duployan
Egyp egyptian_hieroglyphs
Elba elbasan
Elym elymaic
Ethi ethiopic
Geok georgian
Geor georgian
Glag glagolitic
Gong gunjala_gondi
Gonm masaram_gondi
Goth gothic
Gran grantha
Grek greek
Gujr gujarati
Guru gurmukhi
Hang hangul
Hani han
Hano hanunoo
Hatr hatran
Hebr hebrew
Hira hiragana
Hluw anatolian_hieroglyphs
Hmng pahawh_hmong
Hmnp nyiakeng_puachue_hmong
Hrkt katakana_or_hiragana
Hung old_hungarian
Ital old_italic
Java javanese
Kali kayah_li
Kana katakana
Khar kharoshthi
Khmr khmer
Khoj khojki
Kits khitan_small_script
Knda kannada
Kthi kaithi
Lana tai_tham
Laoo lao
Latn latin
Lepc lepcha
Limb limbu
Lina linear_a
Linb linear_b
Lisu lisu
Lyci lycian
Lydi lydian
Mahj mahajani
Maka makasar
Mand mandaic
Mani manichaean
Marc marchen
Medf medefaidrin
Mend mende_kikakui
Merc meroitic_cursive
Mero meroitic_hieroglyphs
Mlym malayalam
Modi modi
Mong mongolian
Mroo mro
Mtei meetei_mayek
Mult multani
Mymr myanmar
Nand nandinagari
Narb old_north_arabian
Nbat nabataean
Newa newa
Nkoo nko
Nshu nushu
Ogam ogham
Olck ol_chiki
Orkh old_turkic
Orya oriya
Osge osage
Osma osmanya
Palm palmyrene
Pauc pau_cin_hau
Perm old_permic
Phag phags_pa
Phli inscriptional_pahlavi
Phlp psalter_pahlavi
Phnx phoenician
Plrd miao
Prti inscriptional_parthian
Rjng rejang
Rohg hanifi_rohingya
Runr runic
Samr samaritan
Sarb old_south_arabian
Saur saurashtra
Sgnw signwriting
Shaw shavian
Shrd sharada
Sidd siddham
Sind khudawadi
Sinh sinhala
Sogd sogdian
Sogo old_sogdian
Sora sora_sompeng
Soyo soyombo
Sund sundanese
Sylo syloti_nagri
Syrc syriac
Tagb tagbanwa
Takr takri
Tale tai_le
Talu new_tai_lue
Taml tamil
Tang tangut
Tavt tai_viet
Telu telugu
Tfng tifinagh
Tglg tagalog
Thaa thaana
Thai thai
Tibt tibetan
Tirh tirhuta
Ugar ugaritic
Vaii vai
Wara warang_citi
Wcho wancho
Xpeo old_persian
Xsux cuneiform
Yezi yezidi
Yiii yi
Zanb zanabazar_square
Zinh inherited
Zyyy common
Zzzz unknown

View File

@@ -126,15 +126,7 @@ const char* wxLanguageInfo::TrySetLocale() const
// CRT (check by calling setlocale()).
if ( wxGetWinVersion() >= wxWinVersion_Vista )
{
if ( ::GetLocaleInfo(lcid, LOCALE_SNAME, buffer, WXSIZEOF(buffer)) )
{
locale = buffer;
}
else
{
wxLogLastError(wxT("GetLocaleInfo(LOCALE_SNAME)"));
}
locale = LocaleTag;
const char* const retloc = wxSetlocale(LC_ALL, locale);
if ( retloc )
return retloc;
@@ -167,7 +159,7 @@ const char* wxLanguageInfo::TrySetLocale() const
const char* wxLanguageInfo::TrySetLocale() const
{
return wxSetlocale(LC_ALL, CanonicalName);
return wxSetlocale(LC_ALL, CanonicalRef.empty() ? CanonicalName : CanonicalRef);
}
#endif // __WINDOWS__/!__WINDOWS__
@@ -191,7 +183,7 @@ wxString wxLanguageInfo::GetLocaleName() const
}
// ----------------------------------------------------------------------------
// wxLocale
// wxUILocale / wxLocale
// ----------------------------------------------------------------------------
static wxLanguageInfos gs_languagesDB;
@@ -199,12 +191,13 @@ static bool gs_languagesDBInitialized = false;
const wxLanguageInfos& wxGetLanguageInfos()
{
wxLocale::CreateLanguagesDB();
wxUILocale::CreateLanguagesDB();
return gs_languagesDB;
}
/*static*/ void wxLocale::CreateLanguagesDB()
/*static*/
void wxUILocale::CreateLanguagesDB()
{
if (!gs_languagesDBInitialized)
{
@@ -214,7 +207,8 @@ const wxLanguageInfos& wxGetLanguageInfos()
}
}
/*static*/ void wxLocale::DestroyLanguagesDB()
/*static*/
void wxUILocale::DestroyLanguagesDB()
{
if (gs_languagesDBInitialized)
{
@@ -223,6 +217,344 @@ const wxLanguageInfos& wxGetLanguageInfos()
}
}
namespace
{
#if defined(__UNIX__) && !defined(__WXOSX__)
// Small helper function: get the value of the given environment variable and
// return true only if the variable was found and has non-empty value.
inline bool wxGetNonEmptyEnvVar(const wxString& name, wxString* value)
{
return wxGetEnv(name, value) && !value->empty();
}
#endif
} // anonymous namespace
/*static*/
int wxUILocale::GetSystemLanguage()
{
CreateLanguagesDB();
// init i to avoid compiler warning
size_t i = 0,
count = gs_languagesDB.size();
#ifdef __WXOSX__
wxCFRef<CFLocaleRef> userLocaleRef(CFLocaleCopyCurrent());
// because the locale identifier (kCFLocaleIdentifier) is formatted a little bit differently, eg
// az_Cyrl_AZ@calendar=buddhist;currency=JPY we just recreate the base info as expected by wx here
wxCFStringRef str(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleLanguageCode)));
const wxString langPrefix = str.AsString() + "_";
str.reset(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode)));
const wxString langFull = langPrefix + str.AsString();
int langOnlyMatchIndex = wxNOT_FOUND;
for (i = 0; i < count; i++)
{
const wxString& fullname = gs_languagesDB[i].CanonicalName;
if (langFull == fullname)
{
// Exact match, no need to look any further.
break;
}
if (fullname.StartsWith(langPrefix))
{
// Matched just the language, keep looking, but we'll keep this if
// we don't find an exact match later.
langOnlyMatchIndex = i;
}
}
if (i == count && langOnlyMatchIndex != wxNOT_FOUND)
i = langOnlyMatchIndex;
#elif defined(__UNIX__)
// first get the string identifying the language from the environment
wxString langFull;
if (!wxGetNonEmptyEnvVar(wxS("LC_ALL"), &langFull) &&
!wxGetNonEmptyEnvVar(wxS("LC_MESSAGES"), &langFull) &&
!wxGetNonEmptyEnvVar(wxS("LANG"), &langFull))
{
// no language specified, treat it as English
return wxLANGUAGE_ENGLISH_US;
}
// the language string has the following form
//
// lang[_LANG][.encoding][@modifier]
//
// (see environ(5) in the Open Unix specification)
//
// where lang is the primary language, LANG is a sublang/territory,
// encoding is the charset to use and modifier "allows the user to select
// a specific instance of localization data within a single category"
//
// for example, the following strings are valid:
// fr
// fr_FR
// de_DE.iso88591
// de_DE@euro
// de_DE.iso88591@euro
// for now we don't use the encoding, although we probably should (doing
// translations of the msg catalogs on the fly as required) (TODO)
//
// we need the modified for languages like Valencian: ca_ES@valencia
// though, remember it
wxString modifier;
size_t posModifier = langFull.find_first_of(wxS("@"));
if (posModifier != wxString::npos)
modifier = langFull.Mid(posModifier);
size_t posEndLang = langFull.find_first_of(wxS("@."));
if (posEndLang != wxString::npos)
{
langFull.Truncate(posEndLang);
}
if (langFull == wxS("C") || langFull == wxS("POSIX"))
{
// default C locale is English too
return wxLANGUAGE_ENGLISH_US;
}
// do we have just the language (or sublang too)?
const bool justLang = langFull.find('_') == wxString::npos;
// 0. Make sure the lang is according to latest ISO 639
// (this is necessary because glibc uses iw and in instead
// of he and id respectively).
// the language itself (second part is the dialect/sublang)
wxString langOrig = ExtractLang(langFull);
wxString lang;
if (langOrig == wxS("iw"))
lang = wxS("he");
else if (langOrig == wxS("in"))
lang = wxS("id");
else if (langOrig == wxS("ji"))
lang = wxS("yi");
else if (langOrig == wxS("no_NO"))
lang = wxS("nb_NO");
else if (langOrig == wxS("no_NY"))
lang = wxS("nn_NO");
else if (langOrig == wxS("no"))
lang = wxS("nb_NO");
else
lang = langOrig;
// did we change it?
if (lang != langOrig)
{
langFull = lang + ExtractNotLang(langFull);
}
// 1. Try to find the language either as is:
// a) With modifier if set
if (!modifier.empty())
{
wxString langFullWithModifier = langFull + modifier;
for (i = 0; i < count; i++)
{
if (gs_languagesDB[i].CanonicalName == langFullWithModifier)
break;
}
}
// b) Without modifier
if (modifier.empty() || i == count)
{
for (i = 0; i < count; i++)
{
if (gs_languagesDB[i].CanonicalName == langFull)
break;
}
}
// 2. If langFull is of the form xx_YY, try to find xx:
if (i == count && !justLang)
{
for (i = 0; i < count; i++)
{
if (ExtractLang(gs_languagesDB[i].CanonicalName) == lang)
{
break;
}
}
}
// 3. If langFull is of the form xx, try to find any xx_YY record:
if (i == count && justLang)
{
for (i = 0; i < count; i++)
{
if (ExtractLang(gs_languagesDB[i].CanonicalName) == langFull)
{
break;
}
}
}
if (i == count)
{
// In addition to the format above, we also can have full language
// names in LANG env var - for example, SuSE is known to use
// LANG="german" - so check for use of non-standard format and try to
// find the name in verbose description.
for (i = 0; i < count; i++)
{
if (gs_languagesDB[i].Description.CmpNoCase(langFull) == 0)
{
break;
}
}
}
#elif defined(__WIN32__)
const LANGID langid = ::GetUserDefaultUILanguage();
if (langid != LOCALE_CUSTOM_UI_DEFAULT)
{
wxUint32 lang = PRIMARYLANGID(langid);
wxUint32 sublang = SUBLANGID(langid);
for (i = 0; i < count; i++)
{
if (gs_languagesDB[i].WinLang == lang &&
gs_languagesDB[i].WinSublang == sublang)
{
break;
}
}
}
//else: leave wxlang == wxLANGUAGE_UNKNOWN
#endif // Unix/Win32
if (i < count)
{
// we did find a matching entry, use it
return gs_languagesDB[i].Language;
}
// no info about this language in the database
return wxLANGUAGE_UNKNOWN;
}
/* static */
void wxUILocale::AddLanguage(const wxLanguageInfo& info)
{
CreateLanguagesDB();
gs_languagesDB.push_back(info);
}
/* static */
const wxLanguageInfo* wxUILocale::GetLanguageInfo(int lang)
{
CreateLanguagesDB();
// calling GetLanguageInfo(wxLANGUAGE_DEFAULT) is a natural thing to do, so
// make it work
if (lang == wxLANGUAGE_DEFAULT)
lang = GetSystemLanguage();
if (lang == wxLANGUAGE_UNKNOWN)
return NULL;
const size_t count = gs_languagesDB.size();
for (size_t i = 0; i < count; i++)
{
if (gs_languagesDB[i].Language == lang)
return &gs_languagesDB[i];
}
return NULL;
}
/* static */
wxString wxUILocale::GetLanguageName(int lang)
{
wxString string;
if (lang == wxLANGUAGE_DEFAULT || lang == wxLANGUAGE_UNKNOWN)
return string;
const wxLanguageInfo* info = GetLanguageInfo(lang);
if (info)
string = info->Description;
return string;
}
/* static */
wxString wxUILocale::GetLanguageCanonicalName(int lang)
{
wxString string;
if (lang == wxLANGUAGE_DEFAULT || lang == wxLANGUAGE_UNKNOWN)
return string;
const wxLanguageInfo* info = GetLanguageInfo(lang);
if (info)
string = info->CanonicalName;
return string;
}
/* static */
const wxLanguageInfo* wxUILocale::FindLanguageInfo(const wxString& locale)
{
CreateLanguagesDB();
const wxLanguageInfo* infoRet = NULL;
const size_t count = gs_languagesDB.size();
for (size_t i = 0; i < count; i++)
{
const wxLanguageInfo* info = &gs_languagesDB[i];
if (wxStricmp(locale, info->CanonicalName) == 0 ||
wxStricmp(locale, info->Description) == 0)
{
// exact match, stop searching
infoRet = info;
break;
}
if (wxStricmp(locale, info->CanonicalName.BeforeFirst(wxS('_'))) == 0)
{
// a match -- but maybe we'll find an exact one later, so continue
// looking
//
// OTOH, maybe we had already found a language match and in this
// case don't overwrite it because the entry for the default
// country always appears first in gs_languagesDB
if (!infoRet)
infoRet = info;
}
}
return infoRet;
}
// ----------------------------------------------------------------------------
// wxLocale
// ----------------------------------------------------------------------------
/*static*/
void wxLocale::CreateLanguagesDB()
{
wxUILocale::CreateLanguagesDB();
}
/*static*/
void wxLocale::DestroyLanguagesDB()
{
wxUILocale::DestroyLanguagesDB();
}
void wxLocale::DoCommonInit()
{
@@ -466,230 +798,10 @@ bool wxLocale::Init(int lang, int flags)
#endif
}
namespace
/*static*/
int wxLocale::GetSystemLanguage()
{
#if defined(__UNIX__) && !defined(__WXOSX__)
// Small helper function: get the value of the given environment variable and
// return true only if the variable was found and has non-empty value.
inline bool wxGetNonEmptyEnvVar(const wxString& name, wxString* value)
{
return wxGetEnv(name, value) && !value->empty();
}
#endif
} // anonymous namespace
/*static*/ int wxLocale::GetSystemLanguage()
{
CreateLanguagesDB();
// init i to avoid compiler warning
size_t i = 0,
count = gs_languagesDB.size();
#ifdef __WXOSX__
wxCFRef<CFLocaleRef> userLocaleRef(CFLocaleCopyCurrent());
// because the locale identifier (kCFLocaleIdentifier) is formatted a little bit differently, eg
// az_Cyrl_AZ@calendar=buddhist;currency=JPY we just recreate the base info as expected by wx here
wxCFStringRef str(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleLanguageCode)));
const wxString langPrefix = str.AsString() + "_";
str.reset(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode)));
const wxString langFull = langPrefix + str.AsString();
int langOnlyMatchIndex = wxNOT_FOUND;
for ( i = 0; i < count; i++ )
{
const wxString& fullname = gs_languagesDB[i].CanonicalName;
if ( langFull == fullname )
{
// Exact match, no need to look any further.
break;
}
if ( fullname.StartsWith(langPrefix) )
{
// Matched just the language, keep looking, but we'll keep this if
// we don't find an exact match later.
langOnlyMatchIndex = i;
}
}
if ( i == count && langOnlyMatchIndex != wxNOT_FOUND )
i = langOnlyMatchIndex;
#elif defined(__UNIX__)
// first get the string identifying the language from the environment
wxString langFull;
if (!wxGetNonEmptyEnvVar(wxS("LC_ALL"), &langFull) &&
!wxGetNonEmptyEnvVar(wxS("LC_MESSAGES"), &langFull) &&
!wxGetNonEmptyEnvVar(wxS("LANG"), &langFull))
{
// no language specified, treat it as English
return wxLANGUAGE_ENGLISH_US;
}
// the language string has the following form
//
// lang[_LANG][.encoding][@modifier]
//
// (see environ(5) in the Open Unix specification)
//
// where lang is the primary language, LANG is a sublang/territory,
// encoding is the charset to use and modifier "allows the user to select
// a specific instance of localization data within a single category"
//
// for example, the following strings are valid:
// fr
// fr_FR
// de_DE.iso88591
// de_DE@euro
// de_DE.iso88591@euro
// for now we don't use the encoding, although we probably should (doing
// translations of the msg catalogs on the fly as required) (TODO)
//
// we need the modified for languages like Valencian: ca_ES@valencia
// though, remember it
wxString modifier;
size_t posModifier = langFull.find_first_of(wxS("@"));
if ( posModifier != wxString::npos )
modifier = langFull.Mid(posModifier);
size_t posEndLang = langFull.find_first_of(wxS("@."));
if ( posEndLang != wxString::npos )
{
langFull.Truncate(posEndLang);
}
if ( langFull == wxS("C") || langFull == wxS("POSIX") )
{
// default C locale is English too
return wxLANGUAGE_ENGLISH_US;
}
// do we have just the language (or sublang too)?
const bool justLang = langFull.find('_') == wxString::npos;
// 0. Make sure the lang is according to latest ISO 639
// (this is necessary because glibc uses iw and in instead
// of he and id respectively).
// the language itself (second part is the dialect/sublang)
wxString langOrig = ExtractLang(langFull);
wxString lang;
if ( langOrig == wxS("iw"))
lang = wxS("he");
else if (langOrig == wxS("in"))
lang = wxS("id");
else if (langOrig == wxS("ji"))
lang = wxS("yi");
else if (langOrig == wxS("no_NO"))
lang = wxS("nb_NO");
else if (langOrig == wxS("no_NY"))
lang = wxS("nn_NO");
else if (langOrig == wxS("no"))
lang = wxS("nb_NO");
else
lang = langOrig;
// did we change it?
if ( lang != langOrig )
{
langFull = lang + ExtractNotLang(langFull);
}
// 1. Try to find the language either as is:
// a) With modifier if set
if ( !modifier.empty() )
{
wxString langFullWithModifier = langFull + modifier;
for ( i = 0; i < count; i++ )
{
if ( gs_languagesDB[i].CanonicalName == langFullWithModifier )
break;
}
}
// b) Without modifier
if ( modifier.empty() || i == count )
{
for ( i = 0; i < count; i++ )
{
if ( gs_languagesDB[i].CanonicalName == langFull )
break;
}
}
// 2. If langFull is of the form xx_YY, try to find xx:
if ( i == count && !justLang )
{
for ( i = 0; i < count; i++ )
{
if ( ExtractLang(gs_languagesDB[i].CanonicalName) == lang )
{
break;
}
}
}
// 3. If langFull is of the form xx, try to find any xx_YY record:
if ( i == count && justLang )
{
for ( i = 0; i < count; i++ )
{
if ( ExtractLang(gs_languagesDB[i].CanonicalName) == langFull )
{
break;
}
}
}
if ( i == count )
{
// In addition to the format above, we also can have full language
// names in LANG env var - for example, SuSE is known to use
// LANG="german" - so check for use of non-standard format and try to
// find the name in verbose description.
for ( i = 0; i < count; i++ )
{
if (gs_languagesDB[i].Description.CmpNoCase(langFull) == 0)
{
break;
}
}
}
#elif defined(__WIN32__)
const LANGID langid = ::GetUserDefaultUILanguage();
if ( langid != LOCALE_CUSTOM_UI_DEFAULT )
{
wxUint32 lang = PRIMARYLANGID(langid);
wxUint32 sublang = SUBLANGID(langid);
for ( i = 0; i < count; i++ )
{
if (gs_languagesDB[i].WinLang == lang &&
gs_languagesDB[i].WinSublang == sublang)
{
break;
}
}
}
//else: leave wxlang == wxLANGUAGE_UNKNOWN
#endif // Unix/Win32
if ( i < count )
{
// we did find a matching entry, use it
return gs_languagesDB[i].Language;
}
// no info about this language in the database
return wxLANGUAGE_UNKNOWN;
return wxUILocale::GetSystemLanguage();
}
// ----------------------------------------------------------------------------
@@ -708,25 +820,25 @@ wxString wxLocale::GetSystemEncodingName()
#if defined(__WIN32__)
// FIXME: what is the error return value for GetACP()?
const UINT codepage = ::GetACP();
switch ( codepage )
switch (codepage)
{
case 65001:
encname = "UTF-8";
break;
case 65001:
encname = "UTF-8";
break;
default:
encname.Printf(wxS("windows-%u"), codepage);
default:
encname.Printf(wxS("windows-%u"), codepage);
}
#elif defined(__WXMAC__)
encname = wxCFStringRef::AsString(
CFStringGetNameOfEncoding(CFStringGetSystemEncoding())
);
CFStringGetNameOfEncoding(CFStringGetSystemEncoding())
);
#elif defined(__UNIX_LIKE__)
#if defined(HAVE_LANGINFO_H) && defined(CODESET)
// GNU libc provides current character set this way (this conforms
// to Unix98)
char *oldLocale = strdup(setlocale(LC_CTYPE, NULL));
char* oldLocale = strdup(setlocale(LC_CTYPE, NULL));
setlocale(LC_CTYPE, "");
encname = wxString::FromAscii(nl_langinfo(CODESET));
setlocale(LC_CTYPE, oldLocale);
@@ -738,24 +850,24 @@ wxString wxLocale::GetSystemEncodingName()
// if we can't get at the character set directly, try to see if it's in
// the environment variables (in most cases this won't work, but I was
// out of ideas)
char *lang = getenv( "LC_ALL");
char *dot = lang ? strchr(lang, '.') : NULL;
char* lang = getenv("LC_ALL");
char* dot = lang ? strchr(lang, '.') : NULL;
if (!dot)
{
lang = getenv( "LC_CTYPE" );
if ( lang )
dot = strchr(lang, '.' );
lang = getenv("LC_CTYPE");
if (lang)
dot = strchr(lang, '.');
}
if (!dot)
{
lang = getenv( "LANG");
if ( lang )
lang = getenv("LANG");
if (lang)
dot = strchr(lang, '.');
}
if ( dot )
if (dot)
{
encname = wxString::FromAscii( dot+1 );
encname = wxString::FromAscii(dot + 1);
}
}
#endif // Win32/Unix
@@ -769,47 +881,47 @@ wxFontEncoding wxLocale::GetSystemEncoding()
#if defined(__WIN32__)
const UINT codepage = ::GetACP();
switch ( codepage )
switch (codepage)
{
case 1250:
case 1251:
case 1252:
case 1253:
case 1254:
case 1255:
case 1256:
case 1257:
case 1258:
return (wxFontEncoding)(wxFONTENCODING_CP1250 + codepage - 1250);
case 1250:
case 1251:
case 1252:
case 1253:
case 1254:
case 1255:
case 1256:
case 1257:
case 1258:
return (wxFontEncoding)(wxFONTENCODING_CP1250 + codepage - 1250);
case 1361:
return wxFONTENCODING_CP1361;
case 1361:
return wxFONTENCODING_CP1361;
case 874:
return wxFONTENCODING_CP874;
case 874:
return wxFONTENCODING_CP874;
case 932:
return wxFONTENCODING_CP932;
case 932:
return wxFONTENCODING_CP932;
case 936:
return wxFONTENCODING_CP936;
case 936:
return wxFONTENCODING_CP936;
case 949:
return wxFONTENCODING_CP949;
case 949:
return wxFONTENCODING_CP949;
case 950:
return wxFONTENCODING_CP950;
case 950:
return wxFONTENCODING_CP950;
case 65001:
return wxFONTENCODING_UTF8;
case 65001:
return wxFONTENCODING_UTF8;
}
#elif defined(__WXMAC__)
CFStringEncoding encoding = 0 ;
encoding = CFStringGetSystemEncoding() ;
return wxMacGetFontEncFromSystemEnc( encoding ) ;
CFStringEncoding encoding = 0;
encoding = CFStringGetSystemEncoding();
return wxMacGetFontEncFromSystemEnc(encoding);
#elif defined(__UNIX_LIKE__) && wxUSE_FONTMAP
const wxString encname = GetSystemEncodingName();
if ( !encname.empty() )
if (!encname.empty())
{
wxFontEncoding enc = wxFontMapperBase::GetEncodingFromName(encname);
@@ -818,7 +930,7 @@ wxFontEncoding wxLocale::GetSystemEncoding()
// don't even try to use it in this case
#if !wxUSE_UNICODE && \
((defined(__WXGTK__) && !defined(__WXGTK20__)) || defined(__WXMOTIF__))
if ( enc == wxFONTENCODING_UTF8 )
if (enc == wxFONTENCODING_UTF8)
{
// the most similar supported encoding...
enc = wxFONTENCODING_ISO8859_1;
@@ -829,13 +941,13 @@ wxFontEncoding wxLocale::GetSystemEncoding()
// (a.k.a. US-ASCII) which is arguably a bug but keep it like this for
// backwards compatibility and just take care to not return
// wxFONTENCODING_DEFAULT from here as this surely doesn't make sense
if ( enc == wxFONTENCODING_DEFAULT )
if (enc == wxFONTENCODING_DEFAULT)
{
// we don't have wxFONTENCODING_ASCII, so use the closest one
return wxFONTENCODING_ISO8859_1;
}
if ( enc != wxFONTENCODING_MAX )
if (enc != wxFONTENCODING_MAX)
{
return enc;
}
@@ -849,97 +961,31 @@ wxFontEncoding wxLocale::GetSystemEncoding()
/* static */
void wxLocale::AddLanguage(const wxLanguageInfo& info)
{
CreateLanguagesDB();
gs_languagesDB.push_back(info);
wxUILocale::AddLanguage(info);
}
/* static */
const wxLanguageInfo *wxLocale::GetLanguageInfo(int lang)
const wxLanguageInfo* wxLocale::GetLanguageInfo(int lang)
{
CreateLanguagesDB();
// calling GetLanguageInfo(wxLANGUAGE_DEFAULT) is a natural thing to do, so
// make it work
if ( lang == wxLANGUAGE_DEFAULT )
lang = GetSystemLanguage();
if ( lang == wxLANGUAGE_UNKNOWN )
return NULL;
const size_t count = gs_languagesDB.size();
for ( size_t i = 0; i < count; i++ )
{
if ( gs_languagesDB[i].Language == lang )
return &gs_languagesDB[i];
}
return NULL;
return wxUILocale::GetLanguageInfo(lang);
}
/* static */
wxString wxLocale::GetLanguageName(int lang)
{
wxString string;
if ( lang == wxLANGUAGE_DEFAULT || lang == wxLANGUAGE_UNKNOWN )
return string;
const wxLanguageInfo *info = GetLanguageInfo(lang);
if (info)
string = info->Description;
return string;
return wxUILocale::GetLanguageName(lang);
}
/* static */
wxString wxLocale::GetLanguageCanonicalName(int lang)
{
wxString string;
if ( lang == wxLANGUAGE_DEFAULT || lang == wxLANGUAGE_UNKNOWN )
return string;
const wxLanguageInfo *info = GetLanguageInfo(lang);
if (info)
string = info->CanonicalName;
return string;
return wxUILocale::GetLanguageCanonicalName(lang);
}
/* static */
const wxLanguageInfo *wxLocale::FindLanguageInfo(const wxString& locale)
const wxLanguageInfo* wxLocale::FindLanguageInfo(const wxString& locale)
{
CreateLanguagesDB();
const wxLanguageInfo *infoRet = NULL;
const size_t count = gs_languagesDB.size();
for ( size_t i = 0; i < count; i++ )
{
const wxLanguageInfo *info = &gs_languagesDB[i];
if ( wxStricmp(locale, info->CanonicalName) == 0 ||
wxStricmp(locale, info->Description) == 0 )
{
// exact match, stop searching
infoRet = info;
break;
}
if ( wxStricmp(locale, info->CanonicalName.BeforeFirst(wxS('_'))) == 0 )
{
// a match -- but maybe we'll find an exact one later, so continue
// looking
//
// OTOH, maybe we had already found a language match and in this
// case don't overwrite it because the entry for the default
// country always appears first in gs_languagesDB
if ( !infoRet )
infoRet = info;
}
}
return infoRet;
return wxUILocale::FindLanguageInfo(locale);
}
wxString wxLocale::GetSysName() const

File diff suppressed because it is too large Load Diff