1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/intl.h 3 // Purpose: Internationalization and localisation for wxWidgets 4 // Author: Vadim Zeitlin 5 // Modified by: Michael N. Filippov <michael@idisys.iae.nsk.su> 6 // (2003/09/30 - plural forms support) 7 // Created: 29/01/98 8 // RCS-ID: $Id: intl.h 61872 2009-09-09 22:37:05Z VZ $ 9 // Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr> 10 // Licence: wxWindows licence 11 ///////////////////////////////////////////////////////////////////////////// 12 13 // WARNING: Parts of this file are generated. See misc/languages/README for 14 // details. 15 16 #ifndef _WX_INTL_H_ 17 #define _WX_INTL_H_ 18 19 #include "wx/defs.h" 20 #include "wx/string.h" 21 22 // Make wxLayoutDirection enum available without need for wxUSE_INTL so wxWindow, wxApp 23 // and other classes are not distrubed by wxUSE_INTL 24 25 enum wxLayoutDirection 26 { 27 wxLayout_Default, 28 wxLayout_LeftToRight, 29 wxLayout_RightToLeft 30 }; 31 32 #if wxUSE_INTL 33 34 #include "wx/fontenc.h" 35 36 // ============================================================================ 37 // global decls 38 // ============================================================================ 39 40 // ---------------------------------------------------------------------------- 41 // macros 42 // ---------------------------------------------------------------------------- 43 44 // gettext() style macros (notice that xgettext should be invoked with 45 // --keyword="_" --keyword="wxPLURAL:1,2" options 46 // to extract the strings from the sources) 47 #ifndef WXINTL_NO_GETTEXT_MACRO 48 #define _(s) wxGetTranslation(wxT(s)) 49 #define wxPLURAL(sing, plur, n) wxGetTranslation(wxT(sing), wxT(plur), n) 50 #endif 51 52 // another one which just marks the strings for extraction, but doesn't 53 // perform the translation (use -kwxTRANSLATE with xgettext!) 54 #define wxTRANSLATE(str) wxT(str) 55 56 // ---------------------------------------------------------------------------- 57 // forward decls 58 // ---------------------------------------------------------------------------- 59 60 class WXDLLIMPEXP_FWD_BASE wxLocale; 61 class WXDLLIMPEXP_FWD_BASE wxLanguageInfoArray; 62 class wxMsgCatalog; 63 64 // ============================================================================ 65 // locale support 66 // ============================================================================ 67 68 // ---------------------------------------------------------------------------- 69 // wxLanguage: defines all supported languages 70 // ---------------------------------------------------------------------------- 71 72 // --- --- --- generated code begins here --- --- --- 73 74 // This enum is generated by misc/languages/genlang.py 75 // When making changes, please put them into misc/languages/langtabl.txt 76 enum wxLanguage 77 { 78 // user's default/preffered language as got from OS: 79 wxLANGUAGE_DEFAULT, 80 // unknown language, if wxLocale::GetSystemLanguage fails: 81 wxLANGUAGE_UNKNOWN, 82 83 wxLANGUAGE_ABKHAZIAN, 84 wxLANGUAGE_AFAR, 85 wxLANGUAGE_AFRIKAANS, 86 wxLANGUAGE_ALBANIAN, 87 wxLANGUAGE_AMHARIC, 88 wxLANGUAGE_ARABIC, 89 wxLANGUAGE_ARABIC_ALGERIA, 90 wxLANGUAGE_ARABIC_BAHRAIN, 91 wxLANGUAGE_ARABIC_EGYPT, 92 wxLANGUAGE_ARABIC_IRAQ, 93 wxLANGUAGE_ARABIC_JORDAN, 94 wxLANGUAGE_ARABIC_KUWAIT, 95 wxLANGUAGE_ARABIC_LEBANON, 96 wxLANGUAGE_ARABIC_LIBYA, 97 wxLANGUAGE_ARABIC_MOROCCO, 98 wxLANGUAGE_ARABIC_OMAN, 99 wxLANGUAGE_ARABIC_QATAR, 100 wxLANGUAGE_ARABIC_SAUDI_ARABIA, 101 wxLANGUAGE_ARABIC_SUDAN, 102 wxLANGUAGE_ARABIC_SYRIA, 103 wxLANGUAGE_ARABIC_TUNISIA, 104 wxLANGUAGE_ARABIC_UAE, 105 wxLANGUAGE_ARABIC_YEMEN, 106 wxLANGUAGE_ARMENIAN, 107 wxLANGUAGE_ASSAMESE, 108 wxLANGUAGE_AYMARA, 109 wxLANGUAGE_AZERI, 110 wxLANGUAGE_AZERI_CYRILLIC, 111 wxLANGUAGE_AZERI_LATIN, 112 wxLANGUAGE_BASHKIR, 113 wxLANGUAGE_BASQUE, 114 wxLANGUAGE_BELARUSIAN, 115 wxLANGUAGE_BENGALI, 116 wxLANGUAGE_BHUTANI, 117 wxLANGUAGE_BIHARI, 118 wxLANGUAGE_BISLAMA, 119 wxLANGUAGE_BRETON, 120 wxLANGUAGE_BULGARIAN, 121 wxLANGUAGE_BURMESE, 122 wxLANGUAGE_CAMBODIAN, 123 wxLANGUAGE_CATALAN, 124 wxLANGUAGE_CHINESE, 125 wxLANGUAGE_CHINESE_SIMPLIFIED, 126 wxLANGUAGE_CHINESE_TRADITIONAL, 127 wxLANGUAGE_CHINESE_HONGKONG, 128 wxLANGUAGE_CHINESE_MACAU, 129 wxLANGUAGE_CHINESE_SINGAPORE, 130 wxLANGUAGE_CHINESE_TAIWAN, 131 wxLANGUAGE_CORSICAN, 132 wxLANGUAGE_CROATIAN, 133 wxLANGUAGE_CZECH, 134 wxLANGUAGE_DANISH, 135 wxLANGUAGE_DUTCH, 136 wxLANGUAGE_DUTCH_BELGIAN, 137 wxLANGUAGE_ENGLISH, 138 wxLANGUAGE_ENGLISH_UK, 139 wxLANGUAGE_ENGLISH_US, 140 wxLANGUAGE_ENGLISH_AUSTRALIA, 141 wxLANGUAGE_ENGLISH_BELIZE, 142 wxLANGUAGE_ENGLISH_BOTSWANA, 143 wxLANGUAGE_ENGLISH_CANADA, 144 wxLANGUAGE_ENGLISH_CARIBBEAN, 145 wxLANGUAGE_ENGLISH_DENMARK, 146 wxLANGUAGE_ENGLISH_EIRE, 147 wxLANGUAGE_ENGLISH_JAMAICA, 148 wxLANGUAGE_ENGLISH_NEW_ZEALAND, 149 wxLANGUAGE_ENGLISH_PHILIPPINES, 150 wxLANGUAGE_ENGLISH_SOUTH_AFRICA, 151 wxLANGUAGE_ENGLISH_TRINIDAD, 152 wxLANGUAGE_ENGLISH_ZIMBABWE, 153 wxLANGUAGE_ESPERANTO, 154 wxLANGUAGE_ESTONIAN, 155 wxLANGUAGE_FAEROESE, 156 wxLANGUAGE_FARSI, 157 wxLANGUAGE_FIJI, 158 wxLANGUAGE_FINNISH, 159 wxLANGUAGE_FRENCH, 160 wxLANGUAGE_FRENCH_BELGIAN, 161 wxLANGUAGE_FRENCH_CANADIAN, 162 wxLANGUAGE_FRENCH_LUXEMBOURG, 163 wxLANGUAGE_FRENCH_MONACO, 164 wxLANGUAGE_FRENCH_SWISS, 165 wxLANGUAGE_FRISIAN, 166 wxLANGUAGE_GALICIAN, 167 wxLANGUAGE_GEORGIAN, 168 wxLANGUAGE_GERMAN, 169 wxLANGUAGE_GERMAN_AUSTRIAN, 170 wxLANGUAGE_GERMAN_BELGIUM, 171 wxLANGUAGE_GERMAN_LIECHTENSTEIN, 172 wxLANGUAGE_GERMAN_LUXEMBOURG, 173 wxLANGUAGE_GERMAN_SWISS, 174 wxLANGUAGE_GREEK, 175 wxLANGUAGE_GREENLANDIC, 176 wxLANGUAGE_GUARANI, 177 wxLANGUAGE_GUJARATI, 178 wxLANGUAGE_HAUSA, 179 wxLANGUAGE_HEBREW, 180 wxLANGUAGE_HINDI, 181 wxLANGUAGE_HUNGARIAN, 182 wxLANGUAGE_ICELANDIC, 183 wxLANGUAGE_INDONESIAN, 184 wxLANGUAGE_INTERLINGUA, 185 wxLANGUAGE_INTERLINGUE, 186 wxLANGUAGE_INUKTITUT, 187 wxLANGUAGE_INUPIAK, 188 wxLANGUAGE_IRISH, 189 wxLANGUAGE_ITALIAN, 190 wxLANGUAGE_ITALIAN_SWISS, 191 wxLANGUAGE_JAPANESE, 192 wxLANGUAGE_JAVANESE, 193 wxLANGUAGE_KANNADA, 194 wxLANGUAGE_KASHMIRI, 195 wxLANGUAGE_KASHMIRI_INDIA, 196 wxLANGUAGE_KAZAKH, 197 wxLANGUAGE_KERNEWEK, 198 wxLANGUAGE_KINYARWANDA, 199 wxLANGUAGE_KIRGHIZ, 200 wxLANGUAGE_KIRUNDI, 201 wxLANGUAGE_KONKANI, 202 wxLANGUAGE_KOREAN, 203 wxLANGUAGE_KURDISH, 204 wxLANGUAGE_LAOTHIAN, 205 wxLANGUAGE_LATIN, 206 wxLANGUAGE_LATVIAN, 207 wxLANGUAGE_LINGALA, 208 wxLANGUAGE_LITHUANIAN, 209 wxLANGUAGE_MACEDONIAN, 210 wxLANGUAGE_MALAGASY, 211 wxLANGUAGE_MALAY, 212 wxLANGUAGE_MALAYALAM, 213 wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM, 214 wxLANGUAGE_MALAY_MALAYSIA, 215 wxLANGUAGE_MALTESE, 216 wxLANGUAGE_MANIPURI, 217 wxLANGUAGE_MAORI, 218 wxLANGUAGE_MARATHI, 219 wxLANGUAGE_MOLDAVIAN, 220 wxLANGUAGE_MONGOLIAN, 221 wxLANGUAGE_NAURU, 222 wxLANGUAGE_NEPALI, 223 wxLANGUAGE_NEPALI_INDIA, 224 wxLANGUAGE_NORWEGIAN_BOKMAL, 225 wxLANGUAGE_NORWEGIAN_NYNORSK, 226 wxLANGUAGE_OCCITAN, 227 wxLANGUAGE_ORIYA, 228 wxLANGUAGE_OROMO, 229 wxLANGUAGE_PASHTO, 230 wxLANGUAGE_POLISH, 231 wxLANGUAGE_PORTUGUESE, 232 wxLANGUAGE_PORTUGUESE_BRAZILIAN, 233 wxLANGUAGE_PUNJABI, 234 wxLANGUAGE_QUECHUA, 235 wxLANGUAGE_RHAETO_ROMANCE, 236 wxLANGUAGE_ROMANIAN, 237 wxLANGUAGE_RUSSIAN, 238 wxLANGUAGE_RUSSIAN_UKRAINE, 239 wxLANGUAGE_SAMOAN, 240 wxLANGUAGE_SANGHO, 241 wxLANGUAGE_SANSKRIT, 242 wxLANGUAGE_SCOTS_GAELIC, 243 wxLANGUAGE_SERBIAN, 244 wxLANGUAGE_SERBIAN_CYRILLIC, 245 wxLANGUAGE_SERBIAN_LATIN, 246 wxLANGUAGE_SERBO_CROATIAN, 247 wxLANGUAGE_SESOTHO, 248 wxLANGUAGE_SETSWANA, 249 wxLANGUAGE_SHONA, 250 wxLANGUAGE_SINDHI, 251 wxLANGUAGE_SINHALESE, 252 wxLANGUAGE_SISWATI, 253 wxLANGUAGE_SLOVAK, 254 wxLANGUAGE_SLOVENIAN, 255 wxLANGUAGE_SOMALI, 256 wxLANGUAGE_SPANISH, 257 wxLANGUAGE_SPANISH_ARGENTINA, 258 wxLANGUAGE_SPANISH_BOLIVIA, 259 wxLANGUAGE_SPANISH_CHILE, 260 wxLANGUAGE_SPANISH_COLOMBIA, 261 wxLANGUAGE_SPANISH_COSTA_RICA, 262 wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC, 263 wxLANGUAGE_SPANISH_ECUADOR, 264 wxLANGUAGE_SPANISH_EL_SALVADOR, 265 wxLANGUAGE_SPANISH_GUATEMALA, 266 wxLANGUAGE_SPANISH_HONDURAS, 267 wxLANGUAGE_SPANISH_MEXICAN, 268 wxLANGUAGE_SPANISH_MODERN, 269 wxLANGUAGE_SPANISH_NICARAGUA, 270 wxLANGUAGE_SPANISH_PANAMA, 271 wxLANGUAGE_SPANISH_PARAGUAY, 272 wxLANGUAGE_SPANISH_PERU, 273 wxLANGUAGE_SPANISH_PUERTO_RICO, 274 wxLANGUAGE_SPANISH_URUGUAY, 275 wxLANGUAGE_SPANISH_US, 276 wxLANGUAGE_SPANISH_VENEZUELA, 277 wxLANGUAGE_SUNDANESE, 278 wxLANGUAGE_SWAHILI, 279 wxLANGUAGE_SWEDISH, 280 wxLANGUAGE_SWEDISH_FINLAND, 281 wxLANGUAGE_TAGALOG, 282 wxLANGUAGE_TAJIK, 283 wxLANGUAGE_TAMIL, 284 wxLANGUAGE_TATAR, 285 wxLANGUAGE_TELUGU, 286 wxLANGUAGE_THAI, 287 wxLANGUAGE_TIBETAN, 288 wxLANGUAGE_TIGRINYA, 289 wxLANGUAGE_TONGA, 290 wxLANGUAGE_TSONGA, 291 wxLANGUAGE_TURKISH, 292 wxLANGUAGE_TURKMEN, 293 wxLANGUAGE_TWI, 294 wxLANGUAGE_UIGHUR, 295 wxLANGUAGE_UKRAINIAN, 296 wxLANGUAGE_URDU, 297 wxLANGUAGE_URDU_INDIA, 298 wxLANGUAGE_URDU_PAKISTAN, 299 wxLANGUAGE_UZBEK, 300 wxLANGUAGE_UZBEK_CYRILLIC, 301 wxLANGUAGE_UZBEK_LATIN, 302 wxLANGUAGE_VIETNAMESE, 303 wxLANGUAGE_VOLAPUK, 304 wxLANGUAGE_WELSH, 305 wxLANGUAGE_WOLOF, 306 wxLANGUAGE_XHOSA, 307 wxLANGUAGE_YIDDISH, 308 wxLANGUAGE_YORUBA, 309 wxLANGUAGE_ZHUANG, 310 wxLANGUAGE_ZULU, 311 312 // for custom, user-defined languages: 313 wxLANGUAGE_USER_DEFINED 314 315 316 #if wxABI_VERSION >= 20808 317 // For binary compatibility, we can't put new items in their normal 318 // position in the enum, because it would change other values. We have to 319 // put it somewhere well outside normal range -- the particular value used 320 // is arbitrary: 321 , wxLANGUAGE_VALENCIAN = 0x1fffffff, 322 wxLANGUAGE_SAMI 323 #endif 324 }; 325 326 // --- --- --- generated code ends here --- --- --- 327 328 // ---------------------------------------------------------------------------- 329 // wxLanguageInfo: encapsulates wxLanguage to OS native lang.desc. 330 // translation information 331 // ---------------------------------------------------------------------------- 332 333 struct WXDLLIMPEXP_BASE wxLanguageInfo 334 { 335 int Language; // wxLanguage id 336 wxString CanonicalName; // Canonical name, e.g. fr_FR 337 #ifdef __WIN32__ 338 wxUint32 WinLang, // Win32 language identifiers 339 WinSublang; 340 #endif // __WIN32__ 341 wxString Description; // human-readable name of the language 342 wxLayoutDirection LayoutDirection; 343 }; 344 345 // ---------------------------------------------------------------------------- 346 // wxLocaleCategory: the category of locale settings 347 // ---------------------------------------------------------------------------- 348 349 enum wxLocaleCategory 350 { 351 // (any) numbers 352 wxLOCALE_CAT_NUMBER, 353 354 // date/time 355 wxLOCALE_CAT_DATE, 356 357 // monetary value 358 wxLOCALE_CAT_MONEY, 359 360 wxLOCALE_CAT_MAX 361 }; 362 363 // ---------------------------------------------------------------------------- 364 // wxLocaleInfo: the items understood by wxLocale::GetInfo() 365 // ---------------------------------------------------------------------------- 366 367 enum wxLocaleInfo 368 { 369 // the thounsands separator 370 wxLOCALE_THOUSANDS_SEP, 371 372 // the character used as decimal point 373 wxLOCALE_DECIMAL_POINT 374 375 }; 376 377 // ---------------------------------------------------------------------------- 378 // wxLocale: encapsulates all language dependent settings, including current 379 // message catalogs, date, time and currency formats (TODO) &c 380 // ---------------------------------------------------------------------------- 381 382 enum wxLocaleInitFlags 383 { 384 wxLOCALE_LOAD_DEFAULT = 0x0001, // load wxwin.mo? 385 wxLOCALE_CONV_ENCODING = 0x0002 // convert encoding on the fly? 386 }; 387 388 class WXDLLIMPEXP_BASE wxLocale 389 { 390 public: 391 // ctor & dtor 392 // ----------- 393 394 // call Init() if you use this ctor wxLocale()395 wxLocale() { DoCommonInit(); } 396 397 // the ctor has a side effect of changing current locale 398 wxLocale(const wxChar *szName, // name (for messages) 399 const wxChar *szShort = (const wxChar *) NULL, // dir prefix (for msg files) 400 const wxChar *szLocale = (const wxChar *) NULL, // locale (for setlocale) 401 bool bLoadDefault = true, // preload wxstd.mo? 402 bool bConvertEncoding = false) // convert Win<->Unix if necessary? 403 { 404 DoCommonInit(); 405 406 Init(szName, szShort, szLocale, bLoadDefault, bConvertEncoding); 407 } 408 409 wxLocale(int language, // wxLanguage id or custom language 410 int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING) 411 { 412 DoCommonInit(); 413 414 Init(language, flags); 415 } 416 417 // the same as a function (returns true on success) 418 bool Init(const wxChar *szName, 419 const wxChar *szShort = (const wxChar *) NULL, 420 const wxChar *szLocale = (const wxChar *) NULL, 421 bool bLoadDefault = true, 422 bool bConvertEncoding = false); 423 424 // same as second ctor (returns true on success) 425 bool Init(int language = wxLANGUAGE_DEFAULT, 426 int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING); 427 428 // restores old locale 429 virtual ~wxLocale(); 430 431 // Try to get user's (or OS's) preferred language setting. 432 // Return wxLANGUAGE_UNKNOWN if language-guessing algorithm failed 433 static int GetSystemLanguage(); 434 435 // get the encoding used by default for text on this system, returns 436 // wxFONTENCODING_SYSTEM if it couldn't be determined 437 static wxFontEncoding GetSystemEncoding(); 438 439 // get the string describing the system encoding, return empty string if 440 // couldn't be determined 441 static wxString GetSystemEncodingName(); 442 443 // get the values of the given locale-dependent datum: the current locale 444 // is used, the US default value is returned if everything else fails 445 static wxString GetInfo(wxLocaleInfo index, wxLocaleCategory cat); 446 447 // return true if the locale was set successfully IsOk()448 bool IsOk() const { return m_pszOldLocale != NULL; } 449 450 // returns locale name GetLocale()451 const wxChar *GetLocale() const { return m_strLocale; } 452 453 // return current locale wxLanguage value GetLanguage()454 int GetLanguage() const { return m_language; } 455 456 // return locale name to be passed to setlocale() 457 wxString GetSysName() const; 458 459 // return 'canonical' name, i.e. in the form of xx[_YY], where xx is 460 // language code according to ISO 639 and YY is country name 461 // as specified by ISO 3166. GetCanonicalName()462 wxString GetCanonicalName() const { return m_strShort; } 463 464 // add a prefix to the catalog lookup path: the message catalog files will be 465 // looked up under prefix/<lang>/LC_MESSAGES, prefix/LC_MESSAGES and prefix 466 // (in this order). 467 // 468 // This only applies to subsequent invocations of AddCatalog()! 469 static void AddCatalogLookupPathPrefix(const wxString& prefix); 470 471 // add a catalog: it's searched for in standard places (current directory 472 // first, system one after), but the you may prepend additional directories to 473 // the search path with AddCatalogLookupPathPrefix(). 474 // 475 // The loaded catalog will be used for message lookup by GetString(). 476 // 477 // Returns 'true' if it was successfully loaded 478 bool AddCatalog(const wxChar *szDomain); 479 bool AddCatalog(const wxChar *szDomain, 480 wxLanguage msgIdLanguage, const wxChar *msgIdCharset); 481 482 // check if the given locale is provided by OS and C run time 483 static bool IsAvailable(int lang); 484 485 // check if the given catalog is loaded 486 bool IsLoaded(const wxChar *szDomain) const; 487 488 // Retrieve the language info struct for the given language 489 // 490 // Returns NULL if no info found, pointer must *not* be deleted by caller 491 static const wxLanguageInfo *GetLanguageInfo(int lang); 492 493 // Returns language name in English or empty string if the language 494 // is not in database 495 static wxString GetLanguageName(int lang); 496 497 // Find the language for the given locale string which may be either a 498 // canonical ISO 2 letter language code ("xx"), a language code followed by 499 // the country code ("xx_XX") or a Windows full language name ("Xxxxx...") 500 // 501 // Returns NULL if no info found, pointer must *not* be deleted by caller 502 static const wxLanguageInfo *FindLanguageInfo(const wxString& locale); 503 504 // Add custom language to the list of known languages. 505 // Notes: 1) wxLanguageInfo contains platform-specific data 506 // 2) must be called before Init to have effect 507 static void AddLanguage(const wxLanguageInfo& info); 508 509 // retrieve the translation for a string in all loaded domains unless 510 // the szDomain parameter is specified (and then only this domain is 511 // searched) 512 // n - additional parameter for PluralFormsParser 513 // 514 // return original string if translation is not available 515 // (in this case an error message is generated the first time 516 // a string is not found; use wxLogNull to suppress it) 517 // 518 // domains are searched in the last to first order, i.e. catalogs 519 // added later override those added before. 520 virtual const wxChar *GetString(const wxChar *szOrigString, 521 const wxChar *szDomain = NULL) const; 522 // plural form version of the same: 523 virtual const wxChar *GetString(const wxChar *szOrigString, 524 const wxChar *szOrigString2, 525 size_t n, 526 const wxChar *szDomain = NULL) const; 527 528 // Returns the current short name for the locale GetName()529 const wxString& GetName() const { return m_strShort; } 530 531 // return the contents of .po file header 532 wxString GetHeaderValue( const wxChar* szHeader, 533 const wxChar* szDomain = NULL ) const; 534 535 // These two methods are for internal use only. First one creates 536 // ms_languagesDB if it doesn't already exist, second one destroys 537 // it. 538 static void CreateLanguagesDB(); 539 static void DestroyLanguagesDB(); 540 541 private: 542 // find catalog by name in a linked list, return NULL if !found 543 wxMsgCatalog *FindCatalog(const wxChar *szDomain) const; 544 545 // copy default table of languages from global static array to 546 // m_langugagesInfo, called by InitLanguagesDB 547 static void InitLanguagesDB(); 548 549 // initialize the member fields to default values 550 void DoCommonInit(); 551 552 wxString m_strLocale, // this locale name 553 m_strShort; // short name for the locale 554 int m_language; // this locale wxLanguage value 555 556 const wxChar *m_pszOldLocale; // previous locale from setlocale() 557 wxLocale *m_pOldLocale; // previous wxLocale 558 559 wxMsgCatalog *m_pMsgCat; // pointer to linked list of catalogs 560 561 bool m_bConvertEncoding; 562 563 bool m_initialized; 564 565 static wxLanguageInfoArray *ms_languagesDB; 566 567 DECLARE_NO_COPY_CLASS(wxLocale) 568 }; 569 570 // ---------------------------------------------------------------------------- 571 // global functions 572 // ---------------------------------------------------------------------------- 573 574 // get the current locale object (note that it may be NULL!) 575 extern WXDLLIMPEXP_BASE wxLocale* wxGetLocale(); 576 577 // get the translation of the string in the current locale 578 inline const wxChar * 579 wxGetTranslation(const wxChar *sz, const wxChar* domain = NULL) 580 { 581 wxLocale *pLoc = wxGetLocale(); 582 if (pLoc) 583 return pLoc->GetString(sz, domain); 584 else 585 return sz; 586 } 587 588 inline const wxChar * 589 wxGetTranslation(const wxChar *sz1, const wxChar *sz2, 590 size_t n, 591 const wxChar *domain = NULL) 592 { 593 wxLocale *pLoc = wxGetLocale(); 594 if (pLoc) 595 return pLoc->GetString(sz1, sz2, n, domain); 596 else 597 return n == 1 ? sz1 : sz2; 598 } 599 600 #else // !wxUSE_INTL 601 602 // the macros should still be defined - otherwise compilation would fail 603 604 #if !defined(WXINTL_NO_GETTEXT_MACRO) 605 #if !defined(_) 606 #define _(s) (wxT(s)) 607 #endif 608 #define wxPLURAL(sing, plur, n) ((n) == 1 ? wxT(sing) : wxT(plur)) 609 #endif 610 611 #define wxTRANSLATE(str) wxT(str) 612 613 inline const wxChar * 614 wxGetTranslation(const wxChar *sz, const wxChar * WXUNUSED(domain) = NULL) 615 { 616 return sz; 617 } 618 619 #endif // wxUSE_INTL/!wxUSE_INTL 620 621 // define this one just in case it occurs somewhere (instead of preferred 622 // wxTRANSLATE) too 623 #if !defined(WXINTL_NO_GETTEXT_MACRO) 624 #if !defined(gettext_noop) 625 #define gettext_noop(str) wxT(str) 626 #endif 627 #if !defined(N_) 628 #define N_(s) wxT(s) 629 #endif 630 #endif 631 632 #endif // _WX_INTL_H_ 633