]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/intl.h
add wxVector(size_t size[, const value_type& value]) ctors
[wxWidgets.git] / interface / wx / intl.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: intl.h
e54c96f1 3// Purpose: interface of wxLocale
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
969daeea
FM
9
10// --- --- --- generated code begins here --- --- ---
11
12/**
13 The languages supported by wxLocale.
14
15 This enum is generated by misc/languages/genlang.py
16 When making changes, please put them into misc/languages/langtabl.txt
17*/
18enum wxLanguage
19{
20 /// User's default/preffered language as got from OS.
21 wxLANGUAGE_DEFAULT,
22
23 /// Unknown language, returned if wxLocale::GetSystemLanguage fails.
24 wxLANGUAGE_UNKNOWN,
25
26 wxLANGUAGE_ABKHAZIAN,
27 wxLANGUAGE_AFAR,
28 wxLANGUAGE_AFRIKAANS,
29 wxLANGUAGE_ALBANIAN,
30 wxLANGUAGE_AMHARIC,
31 wxLANGUAGE_ARABIC,
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,
49 wxLANGUAGE_ARMENIAN,
50 wxLANGUAGE_ASSAMESE,
51 wxLANGUAGE_AYMARA,
52 wxLANGUAGE_AZERI,
53 wxLANGUAGE_AZERI_CYRILLIC,
54 wxLANGUAGE_AZERI_LATIN,
55 wxLANGUAGE_BASHKIR,
56 wxLANGUAGE_BASQUE,
57 wxLANGUAGE_BELARUSIAN,
58 wxLANGUAGE_BENGALI,
59 wxLANGUAGE_BHUTANI,
60 wxLANGUAGE_BIHARI,
61 wxLANGUAGE_BISLAMA,
62 wxLANGUAGE_BRETON,
63 wxLANGUAGE_BULGARIAN,
64 wxLANGUAGE_BURMESE,
65 wxLANGUAGE_CAMBODIAN,
66 wxLANGUAGE_CATALAN,
67 wxLANGUAGE_CHINESE,
68 wxLANGUAGE_CHINESE_SIMPLIFIED,
69 wxLANGUAGE_CHINESE_TRADITIONAL,
70 wxLANGUAGE_CHINESE_HONGKONG,
71 wxLANGUAGE_CHINESE_MACAU,
72 wxLANGUAGE_CHINESE_SINGAPORE,
73 wxLANGUAGE_CHINESE_TAIWAN,
74 wxLANGUAGE_CORSICAN,
75 wxLANGUAGE_CROATIAN,
76 wxLANGUAGE_CZECH,
77 wxLANGUAGE_DANISH,
78 wxLANGUAGE_DUTCH,
79 wxLANGUAGE_DUTCH_BELGIAN,
80 wxLANGUAGE_ENGLISH,
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,
96 wxLANGUAGE_ESPERANTO,
97 wxLANGUAGE_ESTONIAN,
98 wxLANGUAGE_FAEROESE,
99 wxLANGUAGE_FARSI,
100 wxLANGUAGE_FIJI,
101 wxLANGUAGE_FINNISH,
102 wxLANGUAGE_FRENCH,
103 wxLANGUAGE_FRENCH_BELGIAN,
104 wxLANGUAGE_FRENCH_CANADIAN,
105 wxLANGUAGE_FRENCH_LUXEMBOURG,
106 wxLANGUAGE_FRENCH_MONACO,
107 wxLANGUAGE_FRENCH_SWISS,
108 wxLANGUAGE_FRISIAN,
109 wxLANGUAGE_GALICIAN,
110 wxLANGUAGE_GEORGIAN,
111 wxLANGUAGE_GERMAN,
112 wxLANGUAGE_GERMAN_AUSTRIAN,
113 wxLANGUAGE_GERMAN_BELGIUM,
114 wxLANGUAGE_GERMAN_LIECHTENSTEIN,
115 wxLANGUAGE_GERMAN_LUXEMBOURG,
116 wxLANGUAGE_GERMAN_SWISS,
117 wxLANGUAGE_GREEK,
118 wxLANGUAGE_GREENLANDIC,
119 wxLANGUAGE_GUARANI,
120 wxLANGUAGE_GUJARATI,
121 wxLANGUAGE_HAUSA,
122 wxLANGUAGE_HEBREW,
123 wxLANGUAGE_HINDI,
124 wxLANGUAGE_HUNGARIAN,
125 wxLANGUAGE_ICELANDIC,
126 wxLANGUAGE_INDONESIAN,
127 wxLANGUAGE_INTERLINGUA,
128 wxLANGUAGE_INTERLINGUE,
129 wxLANGUAGE_INUKTITUT,
130 wxLANGUAGE_INUPIAK,
131 wxLANGUAGE_IRISH,
132 wxLANGUAGE_ITALIAN,
133 wxLANGUAGE_ITALIAN_SWISS,
134 wxLANGUAGE_JAPANESE,
135 wxLANGUAGE_JAVANESE,
136 wxLANGUAGE_KANNADA,
137 wxLANGUAGE_KASHMIRI,
138 wxLANGUAGE_KASHMIRI_INDIA,
139 wxLANGUAGE_KAZAKH,
140 wxLANGUAGE_KERNEWEK,
141 wxLANGUAGE_KINYARWANDA,
142 wxLANGUAGE_KIRGHIZ,
143 wxLANGUAGE_KIRUNDI,
144 wxLANGUAGE_KONKANI,
145 wxLANGUAGE_KOREAN,
146 wxLANGUAGE_KURDISH,
147 wxLANGUAGE_LAOTHIAN,
148 wxLANGUAGE_LATIN,
149 wxLANGUAGE_LATVIAN,
150 wxLANGUAGE_LINGALA,
151 wxLANGUAGE_LITHUANIAN,
152 wxLANGUAGE_MACEDONIAN,
153 wxLANGUAGE_MALAGASY,
154 wxLANGUAGE_MALAY,
155 wxLANGUAGE_MALAYALAM,
156 wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM,
157 wxLANGUAGE_MALAY_MALAYSIA,
158 wxLANGUAGE_MALTESE,
159 wxLANGUAGE_MANIPURI,
160 wxLANGUAGE_MAORI,
161 wxLANGUAGE_MARATHI,
162 wxLANGUAGE_MOLDAVIAN,
163 wxLANGUAGE_MONGOLIAN,
164 wxLANGUAGE_NAURU,
165 wxLANGUAGE_NEPALI,
166 wxLANGUAGE_NEPALI_INDIA,
167 wxLANGUAGE_NORWEGIAN_BOKMAL,
168 wxLANGUAGE_NORWEGIAN_NYNORSK,
169 wxLANGUAGE_OCCITAN,
170 wxLANGUAGE_ORIYA,
171 wxLANGUAGE_OROMO,
172 wxLANGUAGE_PASHTO,
173 wxLANGUAGE_POLISH,
174 wxLANGUAGE_PORTUGUESE,
175 wxLANGUAGE_PORTUGUESE_BRAZILIAN,
176 wxLANGUAGE_PUNJABI,
177 wxLANGUAGE_QUECHUA,
178 wxLANGUAGE_RHAETO_ROMANCE,
179 wxLANGUAGE_ROMANIAN,
180 wxLANGUAGE_RUSSIAN,
181 wxLANGUAGE_RUSSIAN_UKRAINE,
182 wxLANGUAGE_SAMI,
183 wxLANGUAGE_SAMOAN,
184 wxLANGUAGE_SANGHO,
185 wxLANGUAGE_SANSKRIT,
186 wxLANGUAGE_SCOTS_GAELIC,
187 wxLANGUAGE_SERBIAN,
188 wxLANGUAGE_SERBIAN_CYRILLIC,
189 wxLANGUAGE_SERBIAN_LATIN,
190 wxLANGUAGE_SERBO_CROATIAN,
191 wxLANGUAGE_SESOTHO,
192 wxLANGUAGE_SETSWANA,
193 wxLANGUAGE_SHONA,
194 wxLANGUAGE_SINDHI,
195 wxLANGUAGE_SINHALESE,
196 wxLANGUAGE_SISWATI,
197 wxLANGUAGE_SLOVAK,
198 wxLANGUAGE_SLOVENIAN,
199 wxLANGUAGE_SOMALI,
200 wxLANGUAGE_SPANISH,
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,
222 wxLANGUAGE_SWAHILI,
223 wxLANGUAGE_SWEDISH,
224 wxLANGUAGE_SWEDISH_FINLAND,
225 wxLANGUAGE_TAGALOG,
226 wxLANGUAGE_TAJIK,
227 wxLANGUAGE_TAMIL,
228 wxLANGUAGE_TATAR,
229 wxLANGUAGE_TELUGU,
230 wxLANGUAGE_THAI,
231 wxLANGUAGE_TIBETAN,
232 wxLANGUAGE_TIGRINYA,
233 wxLANGUAGE_TONGA,
234 wxLANGUAGE_TSONGA,
235 wxLANGUAGE_TURKISH,
236 wxLANGUAGE_TURKMEN,
237 wxLANGUAGE_TWI,
238 wxLANGUAGE_UIGHUR,
239 wxLANGUAGE_UKRAINIAN,
240 wxLANGUAGE_URDU,
241 wxLANGUAGE_URDU_INDIA,
242 wxLANGUAGE_URDU_PAKISTAN,
243 wxLANGUAGE_UZBEK,
244 wxLANGUAGE_UZBEK_CYRILLIC,
245 wxLANGUAGE_UZBEK_LATIN,
246 wxLANGUAGE_VALENCIAN,
247 wxLANGUAGE_VIETNAMESE,
248 wxLANGUAGE_VOLAPUK,
249 wxLANGUAGE_WELSH,
250 wxLANGUAGE_WOLOF,
251 wxLANGUAGE_XHOSA,
252 wxLANGUAGE_YIDDISH,
253 wxLANGUAGE_YORUBA,
254 wxLANGUAGE_ZHUANG,
255 wxLANGUAGE_ZULU,
256
257 /// For custom, user-defined languages.
258 wxLANGUAGE_USER_DEFINED
259};
260
261// --- --- --- generated code ends here --- --- ---
262
263
264
265/**
266 wxLanguageInfo: encapsulates wxLanguage to OS native lang.desc.
267 translation information
268*/
269struct WXDLLIMPEXP_BASE wxLanguageInfo
270{
271 /// wxLanguage id. It should be greater than wxLANGUAGE_USER_DEFINED.
272 int Language;
273 wxString CanonicalName; //!< Canonical name, e.g. fr_FR.
274#ifdef __WXMSW__
275 wxUint32 WinLang, //!< Win32 language identifiers (LANG_xxxx, SUBLANG_xxxx).
276 WinSublang;
277#endif // __WXMSW__
278 wxString Description; //!< Human-readable name of the language.
279 wxLayoutDirection LayoutDirection;
280
281#ifdef __WXMSW__
282 /// Return the LCID corresponding to this language.
283 wxUint32 GetLCID() const;
284#endif // __WXMSW__
285
286 /// Return the locale name corresponding to this language usable with
287 /// setlocale() on the current system
288 wxString GetLocaleName() const;
289};
290
291
23324ae1
FM
292/**
293 @class wxLocale
7c913512 294
23324ae1
FM
295 wxLocale class encapsulates all language-dependent settings and is a
296 generalization of the C locale concept.
7c913512 297
23324ae1
FM
298 In wxWidgets this class manages message catalogs which contain the translations
299 of the strings used to the current language.
7c913512 300
969daeea
FM
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.
304
305 @beginWxPerlOnly
306 In wxPerl you can't use the '_' function name, so
7c913512
FM
307 the @c Wx::Locale module can export the @c gettext and
308 @c gettext_noop under any given name.
309
23324ae1 310 @code
969daeea 311 # this imports gettext ( equivalent to Wx::GetTranslation
23324ae1
FM
312 # and gettext_noop ( a noop )
313 # into your module
314 use Wx::Locale qw(:default);
7c913512 315
23324ae1 316 # ....
7c913512 317
23324ae1 318 # use the functions
cdbcf4c2 319 print gettext( "Panic!" );
7c913512 320
cdbcf4c2 321 button = Wx::Button-new( window, -1, gettext( "Label" ) );
23324ae1 322 @endcode
7c913512 323
23324ae1
FM
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:
7c913512 327
23324ae1 328 @code
23324ae1
FM
329 use Wx::Locale 'gettext' = 't',
330 'gettext_noop' = 'gettext_noop';
7c913512 331
23324ae1 332 # ...
7c913512 333
23324ae1 334 # use the functions
cdbcf4c2 335 print t( "Panic!!" );
7c913512 336
23324ae1
FM
337 # ...
338 @endcode
969daeea 339 @endWxPerlOnly
7c913512 340
23324ae1 341 @library{wxbase}
969daeea 342 @category{misc}
7c913512 343
89bb3f02 344 @see @ref overview_i18n, @ref page_samples_internat, wxXLocale
23324ae1 345*/
7c913512 346class wxLocale
23324ae1
FM
347{
348public:
969daeea
FM
349 /**
350 This is the default constructor and it does nothing to initialize the object:
351 Init() must be used to do that.
352 */
353 wxLocale();
354
355 /**
356 See Init() for parameters description.
357 */
358 wxLocale(int language,
359 int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING);
360
23324ae1
FM
361 /**
362 See Init() for parameters description.
969daeea 363
23324ae1
FM
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
969daeea 368 application and so all subsequent calls to ::wxGetTranslation() will try to
23324ae1
FM
369 translate the messages using the message catalogs for this locale.
370 */
7c913512
FM
371 wxLocale(const wxString& name,
372 const wxString& short = wxEmptyString,
373 const wxString& locale = wxEmptyString,
4cc4bfaf
FM
374 bool bLoadDefault = true,
375 bool bConvertEncoding = false);
23324ae1
FM
376
377 /**
378 The destructor, like the constructor, also has global side effects: the
969daeea 379 previously set locale is restored and so the changes described in
23324ae1
FM
380 Init() documentation are rolled back.
381 */
adaaa686 382 virtual ~wxLocale();
23324ae1
FM
383
384 //@{
385 /**
386 Add a catalog for use with the current locale: it is searched for in standard
387 places (current directory first, then the system one), but you may also prepend
969daeea
FM
388 additional directories to the search path with AddCatalogLookupPathPrefix().
389
390 All loaded catalogs will be used for message lookup by GetString() for
391 the current locale.
392
23324ae1
FM
393 Returns @true if catalog was successfully loaded, @false otherwise (which might
394 mean that the catalog is not found or that it isn't in the correct format).
969daeea 395
23324ae1 396 The second form of this method takes two additional arguments,
969daeea
FM
397 @a msgIdLanguage and @a msgIdCharset.
398
4cc4bfaf 399 @a msgIdLanguage specifies the language of "msgid" strings in source code
969daeea
FM
400 (i.e. arguments to GetString(), wxGetTranslation() and the _() macro).
401 It is used if AddCatalog() cannot find any catalog for current language:
402 if the language is same as source code language, then strings from source
403 code are used instead.
404
4cc4bfaf 405 @a msgIdCharset lets you specify the charset used for msgids in sources
969daeea
FM
406 in case they use 8-bit characters (e.g. German or French strings).
407 This argument has no effect in Unicode build, because literals in sources are
23324ae1
FM
408 Unicode strings; you have to use compiler-specific method of setting the right
409 charset when compiling with Unicode.
969daeea 410
23324ae1
FM
411 By default (i.e. when you use the first form), msgid strings are assumed
412 to be in English and written only using 7-bit ASCII characters.
969daeea
FM
413 If you have to deal with non-English strings or 8-bit characters in the
414 source code, see the instructions in @ref overview_nonenglish.
23324ae1
FM
415 */
416 bool AddCatalog(const wxString& domain);
969daeea 417 bool AddCatalog(const wxString& domain, wxLanguage msgIdLanguage,
7c913512 418 const wxString& msgIdCharset);
23324ae1
FM
419 //@}
420
421 /**
969daeea
FM
422 Add a prefix to the catalog lookup path: the message catalog files will
423 be looked up under prefix/lang/LC_MESSAGES, prefix/lang and prefix
23324ae1 424 (in this order).
969daeea 425
23324ae1
FM
426 This only applies to subsequent invocations of AddCatalog().
427 */
adaaa686 428 static void AddCatalogLookupPathPrefix(const wxString& prefix);
23324ae1
FM
429
430 /**
969daeea
FM
431 Adds custom, user-defined language to the database of known languages.
432 This database is used in conjunction with the first form of Init().
23324ae1
FM
433 */
434 static void AddLanguage(const wxLanguageInfo& info);
435
436 /**
437 This function may be used to find the language description structure for the
438 given locale, specified either as a two letter ISO language code (for example,
439 "pt"), a language code followed by the country code ("pt_BR") or a full, human
440 readable, language description ("Portuguese-Brazil").
969daeea 441
23324ae1 442 Returns the information for the given language or @NULL if this language
969daeea
FM
443 is unknown. Note that even if the returned pointer is valid, the caller
444 should @e not delete it.
3c4f71cc 445
4cc4bfaf 446 @see GetLanguageInfo()
23324ae1 447 */
4cc4bfaf 448 static wxLanguageInfo* FindLanguageInfo(const wxString& locale);
23324ae1
FM
449
450 /**
451 Returns the canonical form of current locale name. Canonical form is the
452 one that is used on UNIX systems: it is a two- or five-letter string in xx or
453 xx_YY format, where xx is ISO 639 code of language and YY is ISO 3166 code of
454 the country. Examples are "en", "en_GB", "en_US" or "fr_FR".
23324ae1 455 This form is internally used when looking up message catalogs.
23324ae1
FM
456 Compare GetSysName().
457 */
328f5751 458 wxString GetCanonicalName() const;
23324ae1
FM
459
460 /**
969daeea
FM
461 Returns the header value for header @a header.
462 The search for @a header is case sensitive. If an @a domain is passed,
463 this domain is searched. Else all domains will be searched until a
23324ae1 464 header has been found.
969daeea 465
23324ae1
FM
466 The return value is the value of the header if found. Else this will be empty.
467 */
468 wxString GetHeaderValue(const wxString& header,
328f5751 469 const wxString& domain = wxEmptyString) const;
23324ae1
FM
470
471 /**
e54c96f1 472 Returns wxLanguage() constant of current language.
969daeea 473
23324ae1
FM
474 Note that you can call this function only if you used the form of
475 Init() that takes wxLanguage argument.
476 */
328f5751 477 int GetLanguage() const;
23324ae1
FM
478
479 /**
969daeea
FM
480 Returns a pointer to wxLanguageInfo structure containing information about
481 the given language or @NULL if this language is unknown. Note that even if
482 the returned pointer is valid, the caller should @e not delete it.
483
484 See AddLanguage() for the wxLanguageInfo description.
485 As with Init(), @c wxLANGUAGE_DEFAULT has the special meaning if passed
486 as an argument to this function and in this case the result of
487 GetSystemLanguage() is used.
23324ae1 488 */
328f5751 489 static wxLanguageInfo* GetLanguageInfo(int lang) const;
23324ae1
FM
490
491 /**
492 Returns English name of the given language or empty string if this
493 language is unknown.
969daeea
FM
494
495 See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
23324ae1 496 */
328f5751 497 static wxString GetLanguageName(int lang) const;
23324ae1
FM
498
499 /**
969daeea
FM
500 Returns the locale name as passed to the constructor or Init().
501
502 This is a full, human-readable name, e.g. "English" or "French".
23324ae1 503 */
969daeea 504 const wxString& GetLocale() const;
23324ae1
FM
505
506 /**
507 Returns the current short name for the locale (as given to the constructor or
508 the Init() function).
509 */
969daeea 510 const wxString& GetName() const;
23324ae1 511
23324ae1 512 /**
969daeea 513 Retrieves the translation for a string in all loaded domains unless the @a domain
23324ae1 514 parameter is specified (and then only this catalog/domain is searched).
969daeea
FM
515
516 Returns original string if translation is not available (in this case an
517 error message is generated the first time a string is not found; use
518 wxLogNull to suppress it).
519
520 @remarks Domains are searched in the last to first order, i.e. catalogs
521 added later override those added before.
522 */
fadc2df6
FM
523 virtual const wxString& GetString(const wxString& origString,
524 const wxString& domain = wxEmptyString) const;
969daeea
FM
525
526 /**
527 Retrieves the translation for a string in all loaded domains unless the @a domain
528 parameter is specified (and then only this catalog/domain is searched).
529
530 Returns original string if translation is not available (in this case an
531 error message is generated the first time a string is not found; use
532 wxLogNull to suppress it).
533
534 This form is used when retrieving translation of string that has different
535 singular and plural form in English or different plural forms in some
536 other language.
537 It takes two extra arguments: @a origString parameter must contain the
538 singular form of the string to be converted.
539
23324ae1 540 It is also used as the key for the search in the catalog.
4cc4bfaf 541 The @a origString2 parameter is the plural form (in English).
969daeea
FM
542
543 The parameter @a n is used to determine the plural form.
544 If no message catalog is found @a origString is returned if 'n == 1',
545 otherwise @a origString2.
546
23324ae1 547 See GNU gettext manual for additional information on plural forms handling.
969daeea 548 This method is called by the wxGetTranslation() function and _() macro.
3c4f71cc 549
23324ae1 550 @remarks Domains are searched in the last to first order, i.e. catalogs
4cc4bfaf 551 added later override those added before.
23324ae1 552 */
7323ff1a
FM
553 virtual const wxString& GetString(const wxString& origString,
554 const wxString& origString2, size_t n,
555 const wxString& domain = wxEmptyString) const;
23324ae1
FM
556
557 /**
558 Returns current platform-specific locale name as passed to setlocale().
23324ae1
FM
559 Compare GetCanonicalName().
560 */
328f5751 561 wxString GetSysName() const;
23324ae1
FM
562
563 /**
564 Tries to detect the user's default font encoding.
969daeea
FM
565 Returns wxFontEncoding() value or @c wxFONTENCODING_SYSTEM if it
566 couldn't be determined.
23324ae1 567 */
328f5751 568 static wxFontEncoding GetSystemEncoding() const;
23324ae1
FM
569
570 /**
969daeea
FM
571 Tries to detect the name of the user's default font encoding.
572 This string isn't particularly useful for the application as its form is
573 platform-dependent and so you should probably use GetSystemEncoding() instead.
574
23324ae1
FM
575 Returns a user-readable string value or an empty string if it couldn't be
576 determined.
577 */
328f5751 578 static wxString GetSystemEncodingName() const;
23324ae1
FM
579
580 /**
581 Tries to detect the user's default language setting.
969daeea
FM
582 Returns wxLanguage value or @b wxLANGUAGE_UNKNOWN if the language-guessing
583 algorithm failed.
23324ae1 584 */
328f5751 585 static int GetSystemLanguage() const;
23324ae1 586
23324ae1 587 /**
969daeea
FM
588 Initializes the wxLocale instance.
589
590 The call of this function has several global side effects which you should
591 understand: first of all, the application locale is changed - note that
592 this will affect many of standard C library functions such as printf()
593 or strftime().
594 Second, this wxLocale object becomes the new current global locale for
595 the application and so all subsequent calls to wxGetTranslation() will
596 try to translate the messages using the message catalogs for this locale.
3c4f71cc 597
7c913512 598 @param language
4cc4bfaf 599 wxLanguage identifier of the locale.
969daeea
FM
600 @c wxLANGUAGE_DEFAULT has special meaning -- wxLocale will use system's
601 default language (see GetSystemLanguage()).
7c913512 602 @param flags
4cc4bfaf 603 Combination of the following:
969daeea
FM
604 - wxLOCALE_LOAD_DEFAULT: Load the message catalog for the given locale
605 containing the translations of standard wxWidgets messages
606 automatically.
607 - wxLOCALE_CONV_ENCODING: Automatically convert message catalogs to
608 platform's default encoding. Note that it will do only basic
609 conversion between well-known pair like iso8859-1 and windows-1252 or
610 iso8859-2 and windows-1250. See @ref overview_nonenglish for
611 detailed description of this behaviour.
612 Note that this flag is meaningless in Unicode build.
89bb3f02
FM
613
614 @return @true on success or @false if the given locale couldn't be set.
615 */
616 bool Init(int language = wxLANGUAGE_DEFAULT,
617 int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING);
618
619 /**
620 @deprecated
621 This form is deprecated, use the other one unless you know what you are doing.
622
4cc4bfaf
FM
623 @param name
624 The name of the locale. Only used in diagnostic messages.
625 @param short
626 The standard 2 letter locale abbreviation; it is used as the
627 directory prefix when looking for the message catalog files.
628 @param locale
969daeea
FM
629 The parameter for the call to setlocale().
630 Note that it is platform-specific.
4cc4bfaf 631 @param bLoadDefault
969daeea
FM
632 May be set to @false to prevent loading of the message catalog for the
633 given locale containing the translations of standard wxWidgets messages.
4cc4bfaf 634 This parameter would be rarely used in normal circumstances.
7c913512 635 @param bConvertEncoding
969daeea
FM
636 May be set to @true to do automatic conversion of message catalogs to
637 platform's native encoding. Note that it will do only basic conversion
638 between well-known pair like iso8859-1 and windows-1252 or iso8859-2
639 and windows-1250.
640 See @ref overview_nonenglish for detailed description of this behaviour.
969daeea 641 */
7323ff1a
FM
642 bool Init(const wxString& name, const wxString& short = wxEmptyString,
643 const wxString& locale = wxEmptyString, bool bLoadDefault = true,
4cc4bfaf 644 bool bConvertEncoding = false);
23324ae1
FM
645
646 /**
647 Check whether the operating system and/or C run time environment supports
648 this locale. For example in Windows 2000 and Windows XP, support for many
649 locales is not installed by default. Returns @true if the locale is
650 supported.
4cc4bfaf 651 The argument @a lang is the wxLanguage identifier. To obtain this for a
7c913512 652 given a two letter ISO language code, use
23324ae1
FM
653 FindLanguageInfo() to obtain its
654 wxLanguageInfo structure. See AddLanguage() for
655 the wxLanguageInfo description.
3c4f71cc 656
1e24c2af 657 @since 2.7.1.
23324ae1
FM
658 */
659 static bool IsAvailable(int lang);
660
661 /**
662 Check if the given catalog is loaded, and returns @true if it is.
969daeea
FM
663
664 According to GNU gettext tradition, each catalog normally corresponds to
665 'domain' which is more or less the application name.
666
667 @see AddCatalog()
23324ae1 668 */
43c48e1e 669 bool IsLoaded(const wxString& domain) const;
23324ae1
FM
670
671 /**
672 Returns @true if the locale could be set successfully.
673 */
328f5751 674 bool IsOk() const;
23324ae1
FM
675};
676
677
e54c96f1 678
e54c96f1 679
23324ae1
FM
680// ============================================================================
681// Global functions/macros
682// ============================================================================
683
3950d49c
BP
684/** @ingroup group_funcmacro_string */
685//@{
686
23324ae1 687/**
3950d49c
BP
688 This macro is identical to _() but for the plural variant of
689 wxGetTranslation().
690
d29a9a8a 691 @return A const wxString.
3950d49c
BP
692
693 @header{wx/intl.h}
23324ae1 694*/
3950d49c 695#define wxPLURAL(string, plural, n)
23324ae1
FM
696
697/**
3950d49c
BP
698 This macro doesn't do anything in the program code -- it simply expands to
699 the value of its argument.
700
23324ae1
FM
701 However it does have a purpose which is to mark the literal strings for the
702 extraction into the message catalog created by @c xgettext program. Usually
3950d49c
BP
703 this is achieved using _() but that macro not only marks the string for
704 extraction but also expands into a wxGetTranslation() call which means that
705 it cannot be used in some situations, notably for static array
23324ae1 706 initialization.
3950d49c 707
23324ae1
FM
708 Here is an example which should make it more clear: suppose that you have a
709 static array of strings containing the weekday names and which have to be
3950d49c
BP
710 translated (note that it is a bad example, really, as wxDateTime already
711 can be used to get the localized week day names already). If you write:
4cc4bfaf 712
23324ae1
FM
713 @code
714 static const char * const weekdays[] = { _("Mon"), ..., _("Sun") };
715 ...
716 // use weekdays[n] as usual
717 @endcode
7c913512 718
3950d49c
BP
719 The code wouldn't compile because the function calls are forbidden in the
720 array initializer. So instead you should do this:
4cc4bfaf 721
23324ae1
FM
722 @code
723 static const char * const weekdays[] = { wxTRANSLATE("Mon"), ...,
724 wxTRANSLATE("Sun") };
725 ...
726 // use wxGetTranslation(weekdays[n])
727 @endcode
7c913512 728
23324ae1 729 Note that although the code @b would compile if you simply omit
3950d49c
BP
730 wxTRANSLATE() in the above, it wouldn't work as expected because there
731 would be no translations for the weekday names in the program message
732 catalog and wxGetTranslation() wouldn't find them.
733
d29a9a8a 734 @return A const wxChar*.
3950d49c
BP
735
736 @header{wx/intl.h}
23324ae1 737*/
3950d49c 738#define wxTRANSLATE(string)
23324ae1
FM
739
740/**
3950d49c
BP
741 This function returns the translation of @a string in the current
742 @c locale(). If the string is not found in any of the loaded message
743 catalogs (see @ref overview_i18n), the original string is returned. In
744 debug build, an error message is logged -- this should help to find the
745 strings which were not yet translated. If @a domain is specified then only
746 that domain/catalog is searched for a matching string. As this function is
747 used very often, an alternative (and also common in Unix world) syntax is
748 provided: the _() macro is defined to do the same thing as
749 wxGetTranslation().
750
751 This function calls wxLocale::GetString().
752
753 @note This function is not suitable for literal strings in Unicode builds
754 since the literal strings must be enclosed into _T() or wxT() macro
755 which makes them unrecognised by @c xgettext, and so they are not
756 extracted to the message catalog. Instead, use the _() and wxPLURAL()
757 macro for all literal strings.
758
759 @see wxGetTranslation(const wxString&, const wxString&, size_t, const wxString&)
760
761 @header{wx/intl.h}
23324ae1 762*/
969daeea 763const wxString& wxGetTranslation(const wxString& string,
3950d49c 764 const wxString& domain = wxEmptyString);
23324ae1 765
23324ae1 766/**
3950d49c
BP
767 This is an overloaded version of
768 wxGetTranslation(const wxString&, const wxString&), please see its
769 documentation for general information.
770
771 This version is used when retrieving translation of string that has
772 different singular and plural forms in English or different plural forms in
773 some other language. Like wxGetTranslation(const wxString&,const wxString&),
774 the @a string parameter must contain the singular form of the string to be
775 converted and is used as the key for the search in the catalog. The
776 @a plural parameter is the plural form (in English). The parameter @a n is
777 used to determine the plural form. If no message catalog is found,
778 @a string is returned if "n == 1", otherwise @a plural is returned.
779
780 See GNU gettext Manual for additional information on plural forms handling:
781 <http://www.gnu.org/software/gettext/manual/gettext.html#Plural-forms>
782 For a shorter alternative see the wxPLURAL() macro.
783
784 This function calls wxLocale::GetString().
785
786 @header{wx/intl.h}
23324ae1 787*/
969daeea 788const wxString& wxGetTranslation(const wxString& string,
3950d49c
BP
789 const wxString& plural, size_t n,
790 const wxString& domain = wxEmptyString);
791
792/**
793 This macro expands into a call to wxGetTranslation(), so it marks the
794 message for the extraction by @c xgettext just as wxTRANSLATE() does, but
795 also returns the translation of the string for the current locale during
796 execution.
797
798 Don't confuse this with _T()!
799
800 @header{wx/intl.h}
801*/
969daeea 802const wxString& _(const wxString& string);
3950d49c 803
23324ae1
FM
804//@}
805