1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxLocale
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
10 // --- --- --- generated code begins here --- --- ---
13 The languages supported by wxLocale.
15 This enum is generated by misc/languages/genlang.py
16 When making changes, please put them into misc/languages/langtabl.txt
20 /// User's default/preffered language as got from OS.
23 /// Unknown language, returned if wxLocale::GetSystemLanguage fails.
32 wxLANGUAGE_ARABIC_ALGERIA
,
33 wxLANGUAGE_ARABIC_BAHRAIN
,
34 wxLANGUAGE_ARABIC_EGYPT
,
35 wxLANGUAGE_ARABIC_IRAQ
,
36 wxLANGUAGE_ARABIC_JORDAN
,
37 wxLANGUAGE_ARABIC_KUWAIT
,
38 wxLANGUAGE_ARABIC_LEBANON
,
39 wxLANGUAGE_ARABIC_LIBYA
,
40 wxLANGUAGE_ARABIC_MOROCCO
,
41 wxLANGUAGE_ARABIC_OMAN
,
42 wxLANGUAGE_ARABIC_QATAR
,
43 wxLANGUAGE_ARABIC_SAUDI_ARABIA
,
44 wxLANGUAGE_ARABIC_SUDAN
,
45 wxLANGUAGE_ARABIC_SYRIA
,
46 wxLANGUAGE_ARABIC_TUNISIA
,
47 wxLANGUAGE_ARABIC_UAE
,
48 wxLANGUAGE_ARABIC_YEMEN
,
53 wxLANGUAGE_AZERI_CYRILLIC
,
54 wxLANGUAGE_AZERI_LATIN
,
57 wxLANGUAGE_BELARUSIAN
,
68 wxLANGUAGE_CHINESE_SIMPLIFIED
,
69 wxLANGUAGE_CHINESE_TRADITIONAL
,
70 wxLANGUAGE_CHINESE_HONGKONG
,
71 wxLANGUAGE_CHINESE_MACAU
,
72 wxLANGUAGE_CHINESE_SINGAPORE
,
73 wxLANGUAGE_CHINESE_TAIWAN
,
79 wxLANGUAGE_DUTCH_BELGIAN
,
81 wxLANGUAGE_ENGLISH_UK
,
82 wxLANGUAGE_ENGLISH_US
,
83 wxLANGUAGE_ENGLISH_AUSTRALIA
,
84 wxLANGUAGE_ENGLISH_BELIZE
,
85 wxLANGUAGE_ENGLISH_BOTSWANA
,
86 wxLANGUAGE_ENGLISH_CANADA
,
87 wxLANGUAGE_ENGLISH_CARIBBEAN
,
88 wxLANGUAGE_ENGLISH_DENMARK
,
89 wxLANGUAGE_ENGLISH_EIRE
,
90 wxLANGUAGE_ENGLISH_JAMAICA
,
91 wxLANGUAGE_ENGLISH_NEW_ZEALAND
,
92 wxLANGUAGE_ENGLISH_PHILIPPINES
,
93 wxLANGUAGE_ENGLISH_SOUTH_AFRICA
,
94 wxLANGUAGE_ENGLISH_TRINIDAD
,
95 wxLANGUAGE_ENGLISH_ZIMBABWE
,
103 wxLANGUAGE_FRENCH_BELGIAN
,
104 wxLANGUAGE_FRENCH_CANADIAN
,
105 wxLANGUAGE_FRENCH_LUXEMBOURG
,
106 wxLANGUAGE_FRENCH_MONACO
,
107 wxLANGUAGE_FRENCH_SWISS
,
112 wxLANGUAGE_GERMAN_AUSTRIAN
,
113 wxLANGUAGE_GERMAN_BELGIUM
,
114 wxLANGUAGE_GERMAN_LIECHTENSTEIN
,
115 wxLANGUAGE_GERMAN_LUXEMBOURG
,
116 wxLANGUAGE_GERMAN_SWISS
,
118 wxLANGUAGE_GREENLANDIC
,
124 wxLANGUAGE_HUNGARIAN
,
125 wxLANGUAGE_ICELANDIC
,
126 wxLANGUAGE_INDONESIAN
,
127 wxLANGUAGE_INTERLINGUA
,
128 wxLANGUAGE_INTERLINGUE
,
129 wxLANGUAGE_INUKTITUT
,
133 wxLANGUAGE_ITALIAN_SWISS
,
138 wxLANGUAGE_KASHMIRI_INDIA
,
141 wxLANGUAGE_KINYARWANDA
,
151 wxLANGUAGE_LITHUANIAN
,
152 wxLANGUAGE_MACEDONIAN
,
155 wxLANGUAGE_MALAYALAM
,
156 wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM
,
157 wxLANGUAGE_MALAY_MALAYSIA
,
162 wxLANGUAGE_MOLDAVIAN
,
163 wxLANGUAGE_MONGOLIAN
,
166 wxLANGUAGE_NEPALI_INDIA
,
167 wxLANGUAGE_NORWEGIAN_BOKMAL
,
168 wxLANGUAGE_NORWEGIAN_NYNORSK
,
174 wxLANGUAGE_PORTUGUESE
,
175 wxLANGUAGE_PORTUGUESE_BRAZILIAN
,
178 wxLANGUAGE_RHAETO_ROMANCE
,
181 wxLANGUAGE_RUSSIAN_UKRAINE
,
186 wxLANGUAGE_SCOTS_GAELIC
,
188 wxLANGUAGE_SERBIAN_CYRILLIC
,
189 wxLANGUAGE_SERBIAN_LATIN
,
190 wxLANGUAGE_SERBO_CROATIAN
,
195 wxLANGUAGE_SINHALESE
,
198 wxLANGUAGE_SLOVENIAN
,
201 wxLANGUAGE_SPANISH_ARGENTINA
,
202 wxLANGUAGE_SPANISH_BOLIVIA
,
203 wxLANGUAGE_SPANISH_CHILE
,
204 wxLANGUAGE_SPANISH_COLOMBIA
,
205 wxLANGUAGE_SPANISH_COSTA_RICA
,
206 wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC
,
207 wxLANGUAGE_SPANISH_ECUADOR
,
208 wxLANGUAGE_SPANISH_EL_SALVADOR
,
209 wxLANGUAGE_SPANISH_GUATEMALA
,
210 wxLANGUAGE_SPANISH_HONDURAS
,
211 wxLANGUAGE_SPANISH_MEXICAN
,
212 wxLANGUAGE_SPANISH_MODERN
,
213 wxLANGUAGE_SPANISH_NICARAGUA
,
214 wxLANGUAGE_SPANISH_PANAMA
,
215 wxLANGUAGE_SPANISH_PARAGUAY
,
216 wxLANGUAGE_SPANISH_PERU
,
217 wxLANGUAGE_SPANISH_PUERTO_RICO
,
218 wxLANGUAGE_SPANISH_URUGUAY
,
219 wxLANGUAGE_SPANISH_US
,
220 wxLANGUAGE_SPANISH_VENEZUELA
,
221 wxLANGUAGE_SUNDANESE
,
224 wxLANGUAGE_SWEDISH_FINLAND
,
239 wxLANGUAGE_UKRAINIAN
,
241 wxLANGUAGE_URDU_INDIA
,
242 wxLANGUAGE_URDU_PAKISTAN
,
244 wxLANGUAGE_UZBEK_CYRILLIC
,
245 wxLANGUAGE_UZBEK_LATIN
,
246 wxLANGUAGE_VALENCIAN
,
247 wxLANGUAGE_VIETNAMESE
,
257 /// For custom, user-defined languages.
258 wxLANGUAGE_USER_DEFINED
261 // --- --- --- generated code ends here --- --- ---
266 wxLanguageInfo: encapsulates wxLanguage to OS native lang.desc.
267 translation information
269 struct WXDLLIMPEXP_BASE wxLanguageInfo
271 /// wxLanguage id. It should be greater than wxLANGUAGE_USER_DEFINED.
273 wxString CanonicalName
; //!< Canonical name, e.g. fr_FR.
275 wxUint32 WinLang
, //!< Win32 language identifiers (LANG_xxxx, SUBLANG_xxxx).
278 wxString Description
; //!< Human-readable name of the language.
279 wxLayoutDirection LayoutDirection
;
282 /// Return the LCID corresponding to this language.
283 wxUint32
GetLCID() const;
286 /// Return the locale name corresponding to this language usable with
287 /// setlocale() on the current system
288 wxString
GetLocaleName() const;
295 wxLocale class encapsulates all language-dependent settings and is a
296 generalization of the C locale concept.
298 In wxWidgets this class manages message catalogs which contain the translations
299 of the strings used to the current language.
301 For a list of the supported languages, please see ::wxLanguage enum values.
302 These constants may be used to specify the language in wxLocale::Init and
303 are returned by wxLocale::GetSystemLanguage.
306 In wxPerl you can't use the '_' function name, so
307 the @c Wx::Locale module can export the @c gettext and
308 @c gettext_noop under any given name.
311 # this imports gettext ( equivalent to Wx::GetTranslation
312 # and gettext_noop ( a noop )
314 use Wx::Locale qw(:default);
319 print gettext( "Panic!" );
321 button = Wx::Button-new( window, -1, gettext( "Label" ) );
324 If you need to translate a lot of strings, then adding gettext( ) around
325 each one is a long task ( that is why _( ) was introduced ), so just choose
326 a shorter name for gettext:
329 use Wx::Locale 'gettext' = 't',
330 'gettext_noop' = 'gettext_noop';
335 print t( "Panic!!" );
344 @see @ref overview_i18n, @ref page_samples_internat, wxXLocale
350 This is the default constructor and it does nothing to initialize the object:
351 Init() must be used to do that.
356 See Init() for parameters description.
358 wxLocale(int language
,
359 int flags
= wxLOCALE_LOAD_DEFAULT
| wxLOCALE_CONV_ENCODING
);
362 See Init() for parameters description.
364 The call of this function has several global side effects which you should
365 understand: first of all, the application locale is changed - note that this
366 will affect many of standard C library functions such as printf() or strftime().
367 Second, this wxLocale object becomes the new current global locale for the
368 application and so all subsequent calls to ::wxGetTranslation() will try to
369 translate the messages using the message catalogs for this locale.
371 wxLocale(const wxString
& name
,
372 const wxString
& short = wxEmptyString
,
373 const wxString
& locale
= wxEmptyString
,
374 bool bLoadDefault
= true,
375 bool bConvertEncoding
= false);
378 The destructor, like the constructor, also has global side effects: the
379 previously set locale is restored and so the changes described in
380 Init() documentation are rolled back.
385 Add a catalog for use with the current locale: it is searched for in standard
386 places (current directory first, then the system one), but you may also prepend
387 additional directories to the search path with AddCatalogLookupPathPrefix().
389 All loaded catalogs will be used for message lookup by GetString() for
392 In this overload, @c msgid strings are assumed
393 to be in English and written only using 7-bit ASCII characters.
394 If you have to deal with non-English strings or 8-bit characters in the
395 source code, see the instructions in @ref overview_nonenglish.
398 @true if catalog was successfully loaded, @false otherwise (which might
399 mean that the catalog is not found or that it isn't in the correct format).
401 bool AddCatalog(const wxString
& domain
);
404 Add a catalog for use with the current locale: it is searched for in standard
405 places (current directory first, then the system one), but you may also prepend
406 additional directories to the search path with AddCatalogLookupPathPrefix().
408 All loaded catalogs will be used for message lookup by GetString() for
411 This overload takes two additional arguments, @a msgIdLanguage and @a msgIdCharset.
414 Specifies the language of "msgid" strings in source code
415 (i.e. arguments to GetString(), wxGetTranslation() and the _() macro).
416 It is used if AddCatalog() cannot find any catalog for current language:
417 if the language is same as source code language, then strings from source
418 code are used instead.
421 Lets you specify the charset used for msgids in sources
422 in case they use 8-bit characters (e.g. German or French strings).
423 This argument has no effect in Unicode build, because literals in sources are
424 Unicode strings; you have to use compiler-specific method of setting the right
425 charset when compiling with Unicode.
428 @true if catalog was successfully loaded, @false otherwise (which might
429 mean that the catalog is not found or that it isn't in the correct format).
431 bool AddCatalog(const wxString
& domain
, wxLanguage msgIdLanguage
,
432 const wxString
& msgIdCharset
);
435 Add a prefix to the catalog lookup path: the message catalog files will
436 be looked up under prefix/lang/LC_MESSAGES, prefix/lang and prefix
439 This only applies to subsequent invocations of AddCatalog().
441 static void AddCatalogLookupPathPrefix(const wxString
& prefix
);
444 Adds custom, user-defined language to the database of known languages.
445 This database is used in conjunction with the first form of Init().
447 static void AddLanguage(const wxLanguageInfo
& info
);
450 This function may be used to find the language description structure for the
451 given locale, specified either as a two letter ISO language code (for example,
452 "pt"), a language code followed by the country code ("pt_BR") or a full, human
453 readable, language description ("Portuguese-Brazil").
455 Returns the information for the given language or @NULL if this language
456 is unknown. Note that even if the returned pointer is valid, the caller
457 should @e not delete it.
459 @see GetLanguageInfo()
461 static wxLanguageInfo
* FindLanguageInfo(const wxString
& locale
);
464 Returns the canonical form of current locale name. Canonical form is the
465 one that is used on UNIX systems: it is a two- or five-letter string in xx or
466 xx_YY format, where xx is ISO 639 code of language and YY is ISO 3166 code of
467 the country. Examples are "en", "en_GB", "en_US" or "fr_FR".
468 This form is internally used when looking up message catalogs.
469 Compare GetSysName().
471 wxString
GetCanonicalName() const;
474 Returns the header value for header @a header.
475 The search for @a header is case sensitive. If an @a domain is passed,
476 this domain is searched. Else all domains will be searched until a
477 header has been found.
479 The return value is the value of the header if found. Else this will be empty.
481 wxString
GetHeaderValue(const wxString
& header
,
482 const wxString
& domain
= wxEmptyString
) const;
485 Returns wxLanguage() constant of current language.
487 Note that you can call this function only if you used the form of
488 Init() that takes wxLanguage argument.
490 int GetLanguage() const;
493 Returns a pointer to wxLanguageInfo structure containing information about
494 the given language or @NULL if this language is unknown. Note that even if
495 the returned pointer is valid, the caller should @e not delete it.
497 See AddLanguage() for the wxLanguageInfo description.
498 As with Init(), @c wxLANGUAGE_DEFAULT has the special meaning if passed
499 as an argument to this function and in this case the result of
500 GetSystemLanguage() is used.
502 static wxLanguageInfo
* GetLanguageInfo(int lang
) const;
505 Returns English name of the given language or empty string if this
508 See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
510 static wxString
GetLanguageName(int lang
) const;
513 Returns the locale name as passed to the constructor or Init().
515 This is a full, human-readable name, e.g. "English" or "French".
517 const wxString
& GetLocale() const;
520 Returns the current short name for the locale (as given to the constructor or
521 the Init() function).
523 const wxString
& GetName() const;
526 Retrieves the translation for a string in all loaded domains unless the @a domain
527 parameter is specified (and then only this catalog/domain is searched).
529 Returns original string if translation is not available (in this case an
530 error message is generated the first time a string is not found; use
531 wxLogNull to suppress it).
533 @remarks Domains are searched in the last to first order, i.e. catalogs
534 added later override those added before.
536 virtual const wxString
& GetString(const wxString
& origString
,
537 const wxString
& domain
= wxEmptyString
) const;
540 Retrieves the translation for a string in all loaded domains unless the @a domain
541 parameter is specified (and then only this catalog/domain is searched).
543 Returns original string if translation is not available (in this case an
544 error message is generated the first time a string is not found; use
545 wxLogNull to suppress it).
547 This form is used when retrieving translation of string that has different
548 singular and plural form in English or different plural forms in some
550 It takes two extra arguments: @a origString parameter must contain the
551 singular form of the string to be converted.
553 It is also used as the key for the search in the catalog.
554 The @a origString2 parameter is the plural form (in English).
556 The parameter @a n is used to determine the plural form.
557 If no message catalog is found @a origString is returned if 'n == 1',
558 otherwise @a origString2.
560 See GNU gettext manual for additional information on plural forms handling.
561 This method is called by the wxGetTranslation() function and _() macro.
563 @remarks Domains are searched in the last to first order, i.e. catalogs
564 added later override those added before.
566 virtual const wxString
& GetString(const wxString
& origString
,
567 const wxString
& origString2
, size_t n
,
568 const wxString
& domain
= wxEmptyString
) const;
571 Returns current platform-specific locale name as passed to setlocale().
572 Compare GetCanonicalName().
574 wxString
GetSysName() const;
577 Tries to detect the user's default font encoding.
578 Returns wxFontEncoding() value or @c wxFONTENCODING_SYSTEM if it
579 couldn't be determined.
581 static wxFontEncoding
GetSystemEncoding() const;
584 Tries to detect the name of the user's default font encoding.
585 This string isn't particularly useful for the application as its form is
586 platform-dependent and so you should probably use GetSystemEncoding() instead.
588 Returns a user-readable string value or an empty string if it couldn't be
591 static wxString
GetSystemEncodingName() const;
594 Tries to detect the user's default language setting.
595 Returns wxLanguage value or @b wxLANGUAGE_UNKNOWN if the language-guessing
598 static int GetSystemLanguage() const;
601 Initializes the wxLocale instance.
603 The call of this function has several global side effects which you should
604 understand: first of all, the application locale is changed - note that
605 this will affect many of standard C library functions such as printf()
607 Second, this wxLocale object becomes the new current global locale for
608 the application and so all subsequent calls to wxGetTranslation() will
609 try to translate the messages using the message catalogs for this locale.
612 wxLanguage identifier of the locale.
613 @c wxLANGUAGE_DEFAULT has special meaning -- wxLocale will use system's
614 default language (see GetSystemLanguage()).
616 Combination of the following:
617 - wxLOCALE_LOAD_DEFAULT: Load the message catalog for the given locale
618 containing the translations of standard wxWidgets messages
620 - wxLOCALE_CONV_ENCODING: Automatically convert message catalogs to
621 platform's default encoding. Note that it will do only basic
622 conversion between well-known pair like iso8859-1 and windows-1252 or
623 iso8859-2 and windows-1250. See @ref overview_nonenglish for
624 detailed description of this behaviour.
625 Note that this flag is meaningless in Unicode build.
627 @return @true on success or @false if the given locale couldn't be set.
629 bool Init(int language
= wxLANGUAGE_DEFAULT
,
630 int flags
= wxLOCALE_LOAD_DEFAULT
| wxLOCALE_CONV_ENCODING
);
634 This form is deprecated, use the other one unless you know what you are doing.
637 The name of the locale. Only used in diagnostic messages.
639 The standard 2 letter locale abbreviation; it is used as the
640 directory prefix when looking for the message catalog files.
642 The parameter for the call to setlocale().
643 Note that it is platform-specific.
645 May be set to @false to prevent loading of the message catalog for the
646 given locale containing the translations of standard wxWidgets messages.
647 This parameter would be rarely used in normal circumstances.
648 @param bConvertEncoding
649 May be set to @true to do automatic conversion of message catalogs to
650 platform's native encoding. Note that it will do only basic conversion
651 between well-known pair like iso8859-1 and windows-1252 or iso8859-2
653 See @ref overview_nonenglish for detailed description of this behaviour.
655 bool Init(const wxString
& name
, const wxString
& short = wxEmptyString
,
656 const wxString
& locale
= wxEmptyString
, bool bLoadDefault
= true,
657 bool bConvertEncoding
= false);
660 Check whether the operating system and/or C run time environment supports
661 this locale. For example in Windows 2000 and Windows XP, support for many
662 locales is not installed by default. Returns @true if the locale is
664 The argument @a lang is the wxLanguage identifier. To obtain this for a
665 given a two letter ISO language code, use
666 FindLanguageInfo() to obtain its
667 wxLanguageInfo structure. See AddLanguage() for
668 the wxLanguageInfo description.
672 static bool IsAvailable(int lang
);
675 Check if the given catalog is loaded, and returns @true if it is.
677 According to GNU gettext tradition, each catalog normally corresponds to
678 'domain' which is more or less the application name.
682 bool IsLoaded(const wxString
& domain
) const;
685 Returns @true if the locale could be set successfully.
693 // ============================================================================
694 // Global functions/macros
695 // ============================================================================
697 /** @ingroup group_funcmacro_string */
701 This macro is identical to _() but for the plural variant of
704 @return A const wxString.
708 #define wxPLURAL(string, plural, n)
711 This macro doesn't do anything in the program code -- it simply expands to
712 the value of its argument.
714 However it does have a purpose which is to mark the literal strings for the
715 extraction into the message catalog created by @c xgettext program. Usually
716 this is achieved using _() but that macro not only marks the string for
717 extraction but also expands into a wxGetTranslation() call which means that
718 it cannot be used in some situations, notably for static array
721 Here is an example which should make it more clear: suppose that you have a
722 static array of strings containing the weekday names and which have to be
723 translated (note that it is a bad example, really, as wxDateTime already
724 can be used to get the localized week day names already). If you write:
727 static const char * const weekdays[] = { _("Mon"), ..., _("Sun") };
729 // use weekdays[n] as usual
732 The code wouldn't compile because the function calls are forbidden in the
733 array initializer. So instead you should do this:
736 static const char * const weekdays[] = { wxTRANSLATE("Mon"), ...,
737 wxTRANSLATE("Sun") };
739 // use wxGetTranslation(weekdays[n])
742 Note that although the code @b would compile if you simply omit
743 wxTRANSLATE() in the above, it wouldn't work as expected because there
744 would be no translations for the weekday names in the program message
745 catalog and wxGetTranslation() wouldn't find them.
747 @return A const wxChar*.
751 #define wxTRANSLATE(string)
754 This function returns the translation of @a string in the current
755 @c locale(). If the string is not found in any of the loaded message
756 catalogs (see @ref overview_i18n), the original string is returned. In
757 debug build, an error message is logged -- this should help to find the
758 strings which were not yet translated. If @a domain is specified then only
759 that domain/catalog is searched for a matching string. As this function is
760 used very often, an alternative (and also common in Unix world) syntax is
761 provided: the _() macro is defined to do the same thing as
764 This function calls wxLocale::GetString().
766 @note This function is not suitable for literal strings in Unicode builds
767 since the literal strings must be enclosed into _T() or wxT() macro
768 which makes them unrecognised by @c xgettext, and so they are not
769 extracted to the message catalog. Instead, use the _() and wxPLURAL()
770 macro for all literal strings.
772 @see wxGetTranslation(const wxString&, const wxString&, size_t, const wxString&)
776 const wxString
& wxGetTranslation(const wxString
& string
,
777 const wxString
& domain
= wxEmptyString
);
780 This is an overloaded version of
781 wxGetTranslation(const wxString&, const wxString&), please see its
782 documentation for general information.
784 This version is used when retrieving translation of string that has
785 different singular and plural forms in English or different plural forms in
786 some other language. Like wxGetTranslation(const wxString&,const wxString&),
787 the @a string parameter must contain the singular form of the string to be
788 converted and is used as the key for the search in the catalog. The
789 @a plural parameter is the plural form (in English). The parameter @a n is
790 used to determine the plural form. If no message catalog is found,
791 @a string is returned if "n == 1", otherwise @a plural is returned.
793 See GNU gettext Manual for additional information on plural forms handling:
794 <http://www.gnu.org/software/gettext/manual/gettext.html#Plural-forms>
795 For a shorter alternative see the wxPLURAL() macro.
797 This function calls wxLocale::GetString().
801 const wxString
& wxGetTranslation(const wxString
& string
,
802 const wxString
& plural
, size_t n
,
803 const wxString
& domain
= wxEmptyString
);
806 This macro expands into a call to wxGetTranslation(), so it marks the
807 message for the extraction by @c xgettext just as wxTRANSLATE() does, but
808 also returns the translation of the string for the current locale during
811 Don't confuse this with _T()!
815 const wxString
& _(const wxString
& string
);