new locales code checked in
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -44,15 +44,290 @@ | ||||
| // ---------------------------------------------------------------------------- | ||||
| class WXDLLEXPORT wxLocale; | ||||
| class WXDLLEXPORT wxMsgCatalog; | ||||
| class WXDLLEXPORT wxLanguageInfoArray; | ||||
|  | ||||
| // ============================================================================ | ||||
| // locale support | ||||
| // ============================================================================ | ||||
|  | ||||
|  | ||||
| // ---------------------------------------------------------------------------- | ||||
| // wxLanguage: defines all supported languages | ||||
| // ---------------------------------------------------------------------------- | ||||
|  | ||||
|  | ||||
| // This enum is generated by misc/languages/genlang.py | ||||
| // When making changes, please put them into misc/languages/langtabl.txt | ||||
| enum wxLanguage | ||||
| { | ||||
|     // user's default/preffered language as got from OS: | ||||
|     wxLANGUAGE_DEFAULT,  | ||||
|     // unknown language, if wxLocale::GetSystemLanguage fails: | ||||
|     wxLANGUAGE_UNKNOWN,  | ||||
|      | ||||
|     wxLANGUAGE_ABKHAZIAN, | ||||
|     wxLANGUAGE_AFAR, | ||||
|     wxLANGUAGE_AFRIKAANS, | ||||
|     wxLANGUAGE_ALBANIAN, | ||||
|     wxLANGUAGE_AMHARIC, | ||||
|     wxLANGUAGE_ARABIC, | ||||
|     wxLANGUAGE_ARABIC_ALGERIA, | ||||
|     wxLANGUAGE_ARABIC_BAHRAIN, | ||||
|     wxLANGUAGE_ARABIC_EGYPT, | ||||
|     wxLANGUAGE_ARABIC_IRAQ, | ||||
|     wxLANGUAGE_ARABIC_JORDAN, | ||||
|     wxLANGUAGE_ARABIC_KUWAIT, | ||||
|     wxLANGUAGE_ARABIC_LEBANON, | ||||
|     wxLANGUAGE_ARABIC_LIBYA, | ||||
|     wxLANGUAGE_ARABIC_MOROCCO, | ||||
|     wxLANGUAGE_ARABIC_OMAN, | ||||
|     wxLANGUAGE_ARABIC_QATAR, | ||||
|     wxLANGUAGE_ARABIC_SAUDI_ARABIA, | ||||
|     wxLANGUAGE_ARABIC_SUDAN, | ||||
|     wxLANGUAGE_ARABIC_SYRIA, | ||||
|     wxLANGUAGE_ARABIC_TUNISIA, | ||||
|     wxLANGUAGE_ARABIC_UAE, | ||||
|     wxLANGUAGE_ARABIC_YEMEN, | ||||
|     wxLANGUAGE_ARMENIAN, | ||||
|     wxLANGUAGE_ASSAMESE, | ||||
|     wxLANGUAGE_AYMARA, | ||||
|     wxLANGUAGE_AZERI, | ||||
|     wxLANGUAGE_AZERI_CYRILLIC, | ||||
|     wxLANGUAGE_AZERI_LATIN, | ||||
|     wxLANGUAGE_BASHKIR, | ||||
|     wxLANGUAGE_BASQUE, | ||||
|     wxLANGUAGE_BELARUSIAN, | ||||
|     wxLANGUAGE_BENGALI, | ||||
|     wxLANGUAGE_BHUTANI, | ||||
|     wxLANGUAGE_BIHARI, | ||||
|     wxLANGUAGE_BISLAMA, | ||||
|     wxLANGUAGE_BRETON, | ||||
|     wxLANGUAGE_BULGARIAN, | ||||
|     wxLANGUAGE_BURMESE, | ||||
|     wxLANGUAGE_CAMBODIAN, | ||||
|     wxLANGUAGE_CATALAN, | ||||
|     wxLANGUAGE_CHINESE, | ||||
|     wxLANGUAGE_CHINESE_SIMPLIFIED, | ||||
|     wxLANGUAGE_CHINESE_TRADITIONAL, | ||||
|     wxLANGUAGE_CHINESE_HONGKONG, | ||||
|     wxLANGUAGE_CHINESE_MACAU, | ||||
|     wxLANGUAGE_CHINESE_SINGAPORE, | ||||
|     wxLANGUAGE_CHINESE_TAIWAN, | ||||
|     wxLANGUAGE_CORSICAN, | ||||
|     wxLANGUAGE_CROATIAN, | ||||
|     wxLANGUAGE_CZECH, | ||||
|     wxLANGUAGE_DANISH, | ||||
|     wxLANGUAGE_DUTCH, | ||||
|     wxLANGUAGE_DUTCH_BELGIAN, | ||||
|     wxLANGUAGE_ENGLISH, | ||||
|     wxLANGUAGE_ENGLISH_UK, | ||||
|     wxLANGUAGE_ENGLISH_US, | ||||
|     wxLANGUAGE_ENGLISH_AUSTRALIA, | ||||
|     wxLANGUAGE_ENGLISH_BELIZE, | ||||
|     wxLANGUAGE_ENGLISH_BOTSWANA, | ||||
|     wxLANGUAGE_ENGLISH_CANADA, | ||||
|     wxLANGUAGE_ENGLISH_CARIBBEAN, | ||||
|     wxLANGUAGE_ENGLISH_DENMARK, | ||||
|     wxLANGUAGE_ENGLISH_EIRE, | ||||
|     wxLANGUAGE_ENGLISH_JAMAICA, | ||||
|     wxLANGUAGE_ENGLISH_NEW_ZEALAND, | ||||
|     wxLANGUAGE_ENGLISH_PHILIPPINES, | ||||
|     wxLANGUAGE_ENGLISH_SOUTH_AFRICA, | ||||
|     wxLANGUAGE_ENGLISH_TRINIDAD, | ||||
|     wxLANGUAGE_ENGLISH_ZIMBABWE, | ||||
|     wxLANGUAGE_ESPERANTO, | ||||
|     wxLANGUAGE_ESTONIAN, | ||||
|     wxLANGUAGE_FAEROESE, | ||||
|     wxLANGUAGE_FARSI, | ||||
|     wxLANGUAGE_FIJI, | ||||
|     wxLANGUAGE_FINNISH, | ||||
|     wxLANGUAGE_FRENCH, | ||||
|     wxLANGUAGE_FRENCH_BELGIAN, | ||||
|     wxLANGUAGE_FRENCH_CANADIAN, | ||||
|     wxLANGUAGE_FRENCH_LUXEMBOURG, | ||||
|     wxLANGUAGE_FRENCH_MONACO, | ||||
|     wxLANGUAGE_FRENCH_SWISS, | ||||
|     wxLANGUAGE_FRISIAN, | ||||
|     wxLANGUAGE_GALICIAN, | ||||
|     wxLANGUAGE_GEORGIAN, | ||||
|     wxLANGUAGE_GERMAN, | ||||
|     wxLANGUAGE_GERMAN_AUSTRIAN, | ||||
|     wxLANGUAGE_GERMAN_BELGIUM, | ||||
|     wxLANGUAGE_GERMAN_LIECHTENSTEIN, | ||||
|     wxLANGUAGE_GERMAN_LUXEMBOURG, | ||||
|     wxLANGUAGE_GERMAN_SWISS, | ||||
|     wxLANGUAGE_GREEK, | ||||
|     wxLANGUAGE_GREENLANDIC, | ||||
|     wxLANGUAGE_GUARANI, | ||||
|     wxLANGUAGE_GUJARATI, | ||||
|     wxLANGUAGE_HAUSA, | ||||
|     wxLANGUAGE_HEBREW, | ||||
|     wxLANGUAGE_HINDI, | ||||
|     wxLANGUAGE_HUNGARIAN, | ||||
|     wxLANGUAGE_ICELANDIC, | ||||
|     wxLANGUAGE_INDONESIAN, | ||||
|     wxLANGUAGE_INTERLINGUA, | ||||
|     wxLANGUAGE_INTERLINGUE, | ||||
|     wxLANGUAGE_INUKTITUT, | ||||
|     wxLANGUAGE_INUPIAK, | ||||
|     wxLANGUAGE_IRISH, | ||||
|     wxLANGUAGE_ITALIAN, | ||||
|     wxLANGUAGE_ITALIAN_SWISS, | ||||
|     wxLANGUAGE_JAPANESE, | ||||
|     wxLANGUAGE_JAVANESE, | ||||
|     wxLANGUAGE_KANNADA, | ||||
|     wxLANGUAGE_KASHMIRI, | ||||
|     wxLANGUAGE_KASHMIRI_INDIA, | ||||
|     wxLANGUAGE_KAZAKH, | ||||
|     wxLANGUAGE_KERNEWEK, | ||||
|     wxLANGUAGE_KINYARWANDA, | ||||
|     wxLANGUAGE_KIRGHIZ, | ||||
|     wxLANGUAGE_KIRUNDI, | ||||
|     wxLANGUAGE_KONKANI, | ||||
|     wxLANGUAGE_KOREAN, | ||||
|     wxLANGUAGE_KURDISH, | ||||
|     wxLANGUAGE_LAOTHIAN, | ||||
|     wxLANGUAGE_LATIN, | ||||
|     wxLANGUAGE_LATVIAN, | ||||
|     wxLANGUAGE_LINGALA, | ||||
|     wxLANGUAGE_LITHUANIAN, | ||||
|     wxLANGUAGE_MACEDONIAN, | ||||
|     wxLANGUAGE_MALAGASY, | ||||
|     wxLANGUAGE_MALAY, | ||||
|     wxLANGUAGE_MALAYALAM, | ||||
|     wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM, | ||||
|     wxLANGUAGE_MALAY_MALAYSIA, | ||||
|     wxLANGUAGE_MALTESE, | ||||
|     wxLANGUAGE_MANIPURI, | ||||
|     wxLANGUAGE_MAORI, | ||||
|     wxLANGUAGE_MARATHI, | ||||
|     wxLANGUAGE_MOLDAVIAN, | ||||
|     wxLANGUAGE_MONGOLIAN, | ||||
|     wxLANGUAGE_NAURU, | ||||
|     wxLANGUAGE_NEPALI, | ||||
|     wxLANGUAGE_NEPALI_INDIA, | ||||
|     wxLANGUAGE_NORWEGIAN_BOKMAL, | ||||
|     wxLANGUAGE_NORWEGIAN_NYNORSK, | ||||
|     wxLANGUAGE_OCCITAN, | ||||
|     wxLANGUAGE_ORIYA, | ||||
|     wxLANGUAGE_OROMO, | ||||
|     wxLANGUAGE_PASHTO, | ||||
|     wxLANGUAGE_POLISH, | ||||
|     wxLANGUAGE_PORTUGUESE, | ||||
|     wxLANGUAGE_PORTUGUESE_BRAZILIAN, | ||||
|     wxLANGUAGE_PUNJABI, | ||||
|     wxLANGUAGE_QUECHUA, | ||||
|     wxLANGUAGE_RHAETO_ROMANCE, | ||||
|     wxLANGUAGE_ROMANIAN, | ||||
|     wxLANGUAGE_RUSSIAN, | ||||
|     wxLANGUAGE_RUSSIAN_UKRAINE, | ||||
|     wxLANGUAGE_SAMOAN, | ||||
|     wxLANGUAGE_SANGHO, | ||||
|     wxLANGUAGE_SANSKRIT, | ||||
|     wxLANGUAGE_SCOTS_GAELIC, | ||||
|     wxLANGUAGE_SERBIAN, | ||||
|     wxLANGUAGE_SERBIAN_CYRILLIC, | ||||
|     wxLANGUAGE_SERBIAN_LATIN, | ||||
|     wxLANGUAGE_SERBO_CROATIAN, | ||||
|     wxLANGUAGE_SESOTHO, | ||||
|     wxLANGUAGE_SETSWANA, | ||||
|     wxLANGUAGE_SHONA, | ||||
|     wxLANGUAGE_SINDHI, | ||||
|     wxLANGUAGE_SINHALESE, | ||||
|     wxLANGUAGE_SISWATI, | ||||
|     wxLANGUAGE_SLOVAK, | ||||
|     wxLANGUAGE_SLOVENIAN, | ||||
|     wxLANGUAGE_SOMALI, | ||||
|     wxLANGUAGE_SPANISH, | ||||
|     wxLANGUAGE_SPANISH_ARGENTINA, | ||||
|     wxLANGUAGE_SPANISH_BOLIVIA, | ||||
|     wxLANGUAGE_SPANISH_CHILE, | ||||
|     wxLANGUAGE_SPANISH_COLOMBIA, | ||||
|     wxLANGUAGE_SPANISH_COSTA_RICA, | ||||
|     wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC, | ||||
|     wxLANGUAGE_SPANISH_ECUADOR, | ||||
|     wxLANGUAGE_SPANISH_EL_SALVADOR, | ||||
|     wxLANGUAGE_SPANISH_GUATEMALA, | ||||
|     wxLANGUAGE_SPANISH_HONDURAS, | ||||
|     wxLANGUAGE_SPANISH_MEXICAN, | ||||
|     wxLANGUAGE_SPANISH_MODERN, | ||||
|     wxLANGUAGE_SPANISH_NICARAGUA, | ||||
|     wxLANGUAGE_SPANISH_PANAMA, | ||||
|     wxLANGUAGE_SPANISH_PARAGUAY, | ||||
|     wxLANGUAGE_SPANISH_PERU, | ||||
|     wxLANGUAGE_SPANISH_PUERTO_RICO, | ||||
|     wxLANGUAGE_SPANISH_URUGUAY, | ||||
|     wxLANGUAGE_SPANISH_US, | ||||
|     wxLANGUAGE_SPANISH_VENEZUELA, | ||||
|     wxLANGUAGE_SUNDANESE, | ||||
|     wxLANGUAGE_SWAHILI, | ||||
|     wxLANGUAGE_SWEDISH, | ||||
|     wxLANGUAGE_SWEDISH_FINLAND, | ||||
|     wxLANGUAGE_TAGALOG, | ||||
|     wxLANGUAGE_TAJIK, | ||||
|     wxLANGUAGE_TAMIL, | ||||
|     wxLANGUAGE_TATAR, | ||||
|     wxLANGUAGE_TELUGU, | ||||
|     wxLANGUAGE_THAI, | ||||
|     wxLANGUAGE_TIBETAN, | ||||
|     wxLANGUAGE_TIGRINYA, | ||||
|     wxLANGUAGE_TONGA, | ||||
|     wxLANGUAGE_TSONGA, | ||||
|     wxLANGUAGE_TURKISH, | ||||
|     wxLANGUAGE_TURKMEN, | ||||
|     wxLANGUAGE_TWI, | ||||
|     wxLANGUAGE_UIGHUR, | ||||
|     wxLANGUAGE_UKRAINIAN, | ||||
|     wxLANGUAGE_URDU, | ||||
|     wxLANGUAGE_URDU_INDIA, | ||||
|     wxLANGUAGE_URDU_PAKISTAN, | ||||
|     wxLANGUAGE_UZBEK, | ||||
|     wxLANGUAGE_UZBEK_CYRILLIC, | ||||
|     wxLANGUAGE_UZBEK_LATIN, | ||||
|     wxLANGUAGE_VIETNAMESE, | ||||
|     wxLANGUAGE_VOLAPUK, | ||||
|     wxLANGUAGE_WELSH, | ||||
|     wxLANGUAGE_WOLOF, | ||||
|     wxLANGUAGE_XHOSA, | ||||
|     wxLANGUAGE_YIDDISH, | ||||
|     wxLANGUAGE_YORUBA, | ||||
|     wxLANGUAGE_ZHUANG, | ||||
|     wxLANGUAGE_ZULU, | ||||
|  | ||||
|     // for custom, user-defined languages: | ||||
|     wxLANGUAGE_USER_DEFINED | ||||
| }; | ||||
|  | ||||
| // ---------------------------------------------------------------------------- | ||||
| // wxLanguageInfo: encapsulates wxLanguage to OS native lang.desc. | ||||
| //                 translation information | ||||
| // ---------------------------------------------------------------------------- | ||||
|  | ||||
| struct WXDLLEXPORT wxLanguageInfo | ||||
| { | ||||
|     int Language;                   // wxLanguage id | ||||
|     wxString CanonicalName;         // Canonical name, e.g. fr_FR | ||||
| #ifdef __WIN32__ | ||||
|     wxUint32 WinLang, WinSublang;   // Win32 language identifiers | ||||
| #endif | ||||
|     wxString Description;           // human-readable name of the language | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| // ---------------------------------------------------------------------------- | ||||
| // wxLocale: encapsulates all language dependent settings, including current | ||||
| //           message catalogs, date, time and currency formats (TODO) &c | ||||
| // ---------------------------------------------------------------------------- | ||||
|  | ||||
| enum wxLocaleInitFlags | ||||
| { | ||||
|     wxLOCALE_LOAD_DEFAULT  = 0x0001,     // load wxwin.mo? | ||||
|     wxLOCALE_CONV_ENCODING = 0x0002      // convert encoding on the fly? | ||||
| }; | ||||
|  | ||||
|  | ||||
| class WXDLLEXPORT wxLocale | ||||
| { | ||||
| public: | ||||
| @@ -67,22 +342,49 @@ public: | ||||
|              const wxChar *szLocale = (const wxChar *) NULL,     // locale (for setlocale) | ||||
|              bool bLoadDefault = TRUE,                           // preload wxstd.mo? | ||||
|              bool bConvertEncoding = FALSE)                      // convert Win<->Unix if neccessary? | ||||
|         { Init(szName, szShort, szLocale, bLoadDefault, bConvertEncoding); } | ||||
|         {  | ||||
|             m_languagesDB = NULL; | ||||
|             Init(szName, szShort, szLocale, bLoadDefault, bConvertEncoding);  | ||||
|         } | ||||
|  | ||||
|     wxLocale(int language,    // wxLanguage identifier | ||||
|              int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING) | ||||
|         { Init(language, flags); } | ||||
|  | ||||
|         // the same as a function (returns TRUE on success) | ||||
|     bool Init(const wxChar *szName, | ||||
|               const wxChar *szShort = (const wxChar *) NULL, | ||||
|               const wxChar *szLocale = (const wxChar *) NULL, | ||||
|               bool bLoadDefault = TRUE, | ||||
|               bool bConvertEncoding = FALSE); | ||||
|  | ||||
|     bool Init(int language = wxLANGUAGE_DEFAULT, | ||||
|               int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING); | ||||
|         // restores old locale | ||||
|     ~wxLocale(); | ||||
|      | ||||
|     // Try to get user's (or OS's) prefered language setting. | ||||
|     // Return wxLanguage value or wxLANGUAGE_UNKNOWN if language-guessing | ||||
|     // algorithm failed | ||||
|     int GetSystemLanguage() const; | ||||
|  | ||||
|     // return TRUE if the locale was set successfully | ||||
|     bool IsOk() const { return m_pszOldLocale != NULL; } | ||||
|  | ||||
|     // returns locale name | ||||
|     const wxChar *GetLocale() const { return m_strLocale; } | ||||
|      | ||||
|     // return current locale wxLanguage value | ||||
|     int GetLanguage() const { return m_language; } | ||||
|  | ||||
|     // return locale name to be passed to setlocale()     | ||||
|     wxString GetSysName() const; | ||||
|  | ||||
|     // return 'canonical' name, i.e. in the form of xx[_YY], where xx is  | ||||
|     // language code according to ISO 639 and YY is country name | ||||
|     // as specified by ISO 3166. | ||||
|     wxString GetCanonicalName() const { return m_strShort; } | ||||
|      | ||||
|     // add a prefix to the catalog lookup path: the message catalog files will be | ||||
|     // looked up under prefix/<lang>/LC_MESSAGES, prefix/LC_MESSAGES and prefix | ||||
|     // (in this order). | ||||
| @@ -101,6 +403,11 @@ public: | ||||
|  | ||||
|     // check if the given catalog is loaded | ||||
|     bool IsLoaded(const wxChar *szDomain) const; | ||||
|      | ||||
|     // 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 | ||||
|     void AddLanguage(const wxLanguageInfo& info); | ||||
|  | ||||
|     // retrieve the translation for a string in all loaded domains unless | ||||
|     // the szDomain parameter is specified (and then only this domain is | ||||
| @@ -121,16 +428,23 @@ public: | ||||
| private: | ||||
|     // find catalog by name in a linked list, return NULL if !found | ||||
|     wxMsgCatalog  *FindCatalog(const wxChar *szDomain) const; | ||||
|      | ||||
|     // copy default table of languages from global static array to | ||||
|     // m_langugagesInfo     | ||||
|     void InitLanguagesDB(); | ||||
|  | ||||
|     wxString       m_strLocale,       // this locale name | ||||
|                    m_strShort;        // short name for the locale | ||||
|     int            m_language;        // this locale wxLanguage value | ||||
|  | ||||
|     const wxChar  *m_pszOldLocale;    // previous locale from setlocale() | ||||
|     wxLocale      *m_pOldLocale;      // previous wxLocale | ||||
|  | ||||
|     wxMsgCatalog  *m_pMsgCat;         // pointer to linked list of catalogs | ||||
|  | ||||
|      | ||||
|     bool           m_bConvertEncoding; | ||||
|  | ||||
|     wxLanguageInfoArray *m_languagesDB; | ||||
| }; | ||||
|  | ||||
| // ---------------------------------------------------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user