]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/intl.h
Fixed bug: wxPropertyGridInterface::SetPropertyReadOnly() with wxPG_DONT_RECURSE...
[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{
336aecf1 20 /// User's default/preferred language as got from OS.
969daeea
FM
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
f045c7f5
FM
265/**
266 This is the layout direction stored in wxLanguageInfo and returned by
51c0d02b
FM
267 wxApp::GetLayoutDirection(), wxWindow::GetLayoutDirection(),
268 wxDC::GetLayoutDirection() for RTL (right-to-left) languages support.
f045c7f5
FM
269*/
270enum wxLayoutDirection
271{
272 wxLayout_Default,
273 wxLayout_LeftToRight,
274 wxLayout_RightToLeft
275};
276
969daeea 277/**
fc79419b
FM
278 Encapsulates a ::wxLanguage indentifier together with OS-specific information
279 related to that language.
969daeea
FM
280*/
281struct WXDLLIMPEXP_BASE wxLanguageInfo
282{
89a7e1ff 283 /// ::wxLanguage id.
fc79419b
FM
284 /// It should be greater than @c wxLANGUAGE_USER_DEFINED when defining your own
285 /// language info structure.
969daeea 286 int Language;
9a6fda22
FM
287
288 /// Canonical name of the language, e.g. @c fr_FR.
289 wxString CanonicalName;
290
291 //@{
292 /**
293 Win32 language identifiers (LANG_xxxx, SUBLANG_xxxx).
294
295 @onlyfor{wxmsw}
296 */
297 wxUint32 WinLang, WinSublang;
298 //@}
299
300 /// Human-readable name of the language.
301 wxString Description;
302
303 /// The layout direction used for this language.
969daeea
FM
304 wxLayoutDirection LayoutDirection;
305
969daeea 306 /// Return the LCID corresponding to this language.
9a6fda22 307 /// @onlyfor{wxmsw}
969daeea 308 wxUint32 GetLCID() const;
969daeea
FM
309
310 /// Return the locale name corresponding to this language usable with
9a6fda22 311 /// @c setlocale() on the current system.
969daeea
FM
312 wxString GetLocaleName() const;
313};
314
315
fc79419b 316/**
89a7e1ff
VZ
317 The category of locale settings.
318
319 @see wxLocale::GetInfo()
fc79419b
FM
320*/
321enum wxLocaleCategory
322{
89a7e1ff 323 /// Number formatting.
fc79419b
FM
324 wxLOCALE_CAT_NUMBER,
325
89a7e1ff 326 /// Date/time formatting.
fc79419b
FM
327 wxLOCALE_CAT_DATE,
328
89a7e1ff 329 /// Monetary values formatting.
fc79419b
FM
330 wxLOCALE_CAT_MONEY,
331
89a7e1ff
VZ
332 /**
333 Default category for the wxLocaleInfo value.
334
335 This category can be used for values which only make sense for a single
336 category, e.g. wxLOCALE_SHORT_DATE_FMT which can only be used with
337 wxLOCALE_CAT_DATE. As this is the default value of the second parameter
338 of wxLocale::GetInfo(), wxLOCALE_CAT_DATE can be omitted when asking
339 for wxLOCALE_SHORT_DATE_FMT value.
340
341 @since 2.9.0
342 */
343 wxLOCALE_CAT_DEFAULT
fc79419b
FM
344};
345
346/**
347 The values understood by wxLocale::GetInfo().
ea0022d3
FM
348
349 Note that for the @c wxLOCALE_*_FMT constants (the date and time formats),
350 the strings returned by wxLocale::GetInfo() use strftime() or,
351 equivalently, wxDateTime::Format() format. If the relevant format
352 couldn't be determined, an empty string is returned -- there is no
353 fallback value so that the application could determine the best course
354 of actions itself in such case.
355
356 All of these values are used with @c wxLOCALE_CAT_DATE in wxLocale::GetInfo() or,
357 more typically, with @c wxLOCALE_CAT_DEFAULT as they only apply to a single category.
fc79419b
FM
358*/
359enum wxLocaleInfo
360{
89a7e1ff
VZ
361 /**
362 The thousands separator.
363
364 This value can be used with either wxLOCALE_CAT_NUMBER or
365 wxLOCALE_CAT_MONEY categories.
366 */
fc79419b
FM
367 wxLOCALE_THOUSANDS_SEP,
368
89a7e1ff
VZ
369 /**
370 The character used as decimal point.
371
372 This value can be used with either wxLOCALE_CAT_NUMBER or
373 wxLOCALE_CAT_MONEY categories.
374 */
375 wxLOCALE_DECIMAL_POINT,
376
89a7e1ff
VZ
377 /**
378 Short date format.
379
380 Notice that short and long date formats may be the same under POSIX
ea0022d3 381 systems currently but may, and typically are, different under MSW or OS X.
89a7e1ff
VZ
382
383 @since 2.9.0
384 */
385 wxLOCALE_SHORT_DATE_FMT,
386
387 /**
388 Long date format.
389
390 @since 2.9.0
391 */
392 wxLOCALE_LONG_DATE_FMT,
393
394 /**
395 Date and time format.
396
397 @since 2.9.0
398 */
399 wxLOCALE_DATE_TIME_FMT,
400
401 /**
402 Time format.
403
404 @since 2.9.0
405 */
406 wxLOCALE_TIME_FMT
fc79419b
FM
407};
408
409
23324ae1
FM
410/**
411 @class wxLocale
7c913512 412
23324ae1
FM
413 wxLocale class encapsulates all language-dependent settings and is a
414 generalization of the C locale concept.
7c913512 415
23324ae1
FM
416 In wxWidgets this class manages message catalogs which contain the translations
417 of the strings used to the current language.
7c913512 418
969daeea
FM
419 For a list of the supported languages, please see ::wxLanguage enum values.
420 These constants may be used to specify the language in wxLocale::Init and
421 are returned by wxLocale::GetSystemLanguage.
422
423 @beginWxPerlOnly
424 In wxPerl you can't use the '_' function name, so
7c913512
FM
425 the @c Wx::Locale module can export the @c gettext and
426 @c gettext_noop under any given name.
427
23324ae1 428 @code
969daeea 429 # this imports gettext ( equivalent to Wx::GetTranslation
23324ae1
FM
430 # and gettext_noop ( a noop )
431 # into your module
432 use Wx::Locale qw(:default);
7c913512 433
23324ae1 434 # ....
7c913512 435
23324ae1 436 # use the functions
cdbcf4c2 437 print gettext( "Panic!" );
7c913512 438
cdbcf4c2 439 button = Wx::Button-new( window, -1, gettext( "Label" ) );
23324ae1 440 @endcode
7c913512 441
23324ae1
FM
442 If you need to translate a lot of strings, then adding gettext( ) around
443 each one is a long task ( that is why _( ) was introduced ), so just choose
444 a shorter name for gettext:
7c913512 445
23324ae1 446 @code
23324ae1
FM
447 use Wx::Locale 'gettext' = 't',
448 'gettext_noop' = 'gettext_noop';
7c913512 449
23324ae1 450 # ...
7c913512 451
23324ae1 452 # use the functions
cdbcf4c2 453 print t( "Panic!!" );
7c913512 454
23324ae1
FM
455 # ...
456 @endcode
969daeea 457 @endWxPerlOnly
7c913512 458
23324ae1 459 @library{wxbase}
3c99e2fd 460 @category{cfg}
7c913512 461
89bb3f02 462 @see @ref overview_i18n, @ref page_samples_internat, wxXLocale
23324ae1 463*/
7c913512 464class wxLocale
23324ae1
FM
465{
466public:
969daeea
FM
467 /**
468 This is the default constructor and it does nothing to initialize the object:
469 Init() must be used to do that.
470 */
471 wxLocale();
472
473 /**
474 See Init() for parameters description.
475 */
476 wxLocale(int language,
477 int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING);
478
23324ae1
FM
479 /**
480 See Init() for parameters description.
969daeea 481
23324ae1
FM
482 The call of this function has several global side effects which you should
483 understand: first of all, the application locale is changed - note that this
484 will affect many of standard C library functions such as printf() or strftime().
485 Second, this wxLocale object becomes the new current global locale for the
969daeea 486 application and so all subsequent calls to ::wxGetTranslation() will try to
23324ae1
FM
487 translate the messages using the message catalogs for this locale.
488 */
7c913512
FM
489 wxLocale(const wxString& name,
490 const wxString& short = wxEmptyString,
491 const wxString& locale = wxEmptyString,
4cc4bfaf
FM
492 bool bLoadDefault = true,
493 bool bConvertEncoding = false);
23324ae1
FM
494
495 /**
496 The destructor, like the constructor, also has global side effects: the
969daeea 497 previously set locale is restored and so the changes described in
23324ae1
FM
498 Init() documentation are rolled back.
499 */
adaaa686 500 virtual ~wxLocale();
23324ae1 501
23324ae1
FM
502 /**
503 Add a catalog for use with the current locale: it is searched for in standard
504 places (current directory first, then the system one), but you may also prepend
969daeea
FM
505 additional directories to the search path with AddCatalogLookupPathPrefix().
506
507 All loaded catalogs will be used for message lookup by GetString() for
508 the current locale.
509
a0a4c5aa 510 In this overload, @c msgid strings are assumed
23324ae1 511 to be in English and written only using 7-bit ASCII characters.
969daeea
FM
512 If you have to deal with non-English strings or 8-bit characters in the
513 source code, see the instructions in @ref overview_nonenglish.
a0a4c5aa
FM
514
515 @return
516 @true if catalog was successfully loaded, @false otherwise (which might
517 mean that the catalog is not found or that it isn't in the correct format).
23324ae1
FM
518 */
519 bool AddCatalog(const wxString& domain);
a0a4c5aa
FM
520
521 /**
522 Add a catalog for use with the current locale: it is searched for in standard
523 places (current directory first, then the system one), but you may also prepend
524 additional directories to the search path with AddCatalogLookupPathPrefix().
525
526 All loaded catalogs will be used for message lookup by GetString() for
527 the current locale.
528
529 This overload takes two additional arguments, @a msgIdLanguage and @a msgIdCharset.
530
e2c4ccaf
FM
531 @param domain
532 The catalog domain to add.
533
a0a4c5aa
FM
534 @param msgIdLanguage
535 Specifies the language of "msgid" strings in source code
536 (i.e. arguments to GetString(), wxGetTranslation() and the _() macro).
537 It is used if AddCatalog() cannot find any catalog for current language:
538 if the language is same as source code language, then strings from source
539 code are used instead.
540
541 @param msgIdCharset
542 Lets you specify the charset used for msgids in sources
543 in case they use 8-bit characters (e.g. German or French strings).
544 This argument has no effect in Unicode build, because literals in sources are
545 Unicode strings; you have to use compiler-specific method of setting the right
546 charset when compiling with Unicode.
547
548 @return
549 @true if catalog was successfully loaded, @false otherwise (which might
550 mean that the catalog is not found or that it isn't in the correct format).
551 */
969daeea 552 bool AddCatalog(const wxString& domain, wxLanguage msgIdLanguage,
7c913512 553 const wxString& msgIdCharset);
23324ae1
FM
554
555 /**
969daeea
FM
556 Add a prefix to the catalog lookup path: the message catalog files will
557 be looked up under prefix/lang/LC_MESSAGES, prefix/lang and prefix
23324ae1 558 (in this order).
969daeea 559
23324ae1
FM
560 This only applies to subsequent invocations of AddCatalog().
561 */
adaaa686 562 static void AddCatalogLookupPathPrefix(const wxString& prefix);
23324ae1
FM
563
564 /**
969daeea
FM
565 Adds custom, user-defined language to the database of known languages.
566 This database is used in conjunction with the first form of Init().
23324ae1
FM
567 */
568 static void AddLanguage(const wxLanguageInfo& info);
569
570 /**
571 This function may be used to find the language description structure for the
572 given locale, specified either as a two letter ISO language code (for example,
573 "pt"), a language code followed by the country code ("pt_BR") or a full, human
574 readable, language description ("Portuguese-Brazil").
969daeea 575
23324ae1 576 Returns the information for the given language or @NULL if this language
969daeea
FM
577 is unknown. Note that even if the returned pointer is valid, the caller
578 should @e not delete it.
3c4f71cc 579
4cc4bfaf 580 @see GetLanguageInfo()
23324ae1 581 */
382f12e4 582 static const wxLanguageInfo* FindLanguageInfo(const wxString& locale);
23324ae1
FM
583
584 /**
585 Returns the canonical form of current locale name. Canonical form is the
586 one that is used on UNIX systems: it is a two- or five-letter string in xx or
587 xx_YY format, where xx is ISO 639 code of language and YY is ISO 3166 code of
588 the country. Examples are "en", "en_GB", "en_US" or "fr_FR".
23324ae1 589 This form is internally used when looking up message catalogs.
23324ae1
FM
590 Compare GetSysName().
591 */
328f5751 592 wxString GetCanonicalName() const;
23324ae1
FM
593
594 /**
969daeea
FM
595 Returns the header value for header @a header.
596 The search for @a header is case sensitive. If an @a domain is passed,
597 this domain is searched. Else all domains will be searched until a
23324ae1 598 header has been found.
969daeea 599
23324ae1
FM
600 The return value is the value of the header if found. Else this will be empty.
601 */
602 wxString GetHeaderValue(const wxString& header,
328f5751 603 const wxString& domain = wxEmptyString) const;
23324ae1
FM
604
605 /**
d5c8403a 606 Returns the ::wxLanguage constant of current language.
969daeea 607
23324ae1 608 Note that you can call this function only if you used the form of
d5c8403a 609 Init() that takes ::wxLanguage argument.
23324ae1 610 */
328f5751 611 int GetLanguage() const;
23324ae1
FM
612
613 /**
969daeea
FM
614 Returns a pointer to wxLanguageInfo structure containing information about
615 the given language or @NULL if this language is unknown. Note that even if
616 the returned pointer is valid, the caller should @e not delete it.
617
618 See AddLanguage() for the wxLanguageInfo description.
619 As with Init(), @c wxLANGUAGE_DEFAULT has the special meaning if passed
620 as an argument to this function and in this case the result of
621 GetSystemLanguage() is used.
23324ae1 622 */
57bf907d 623 static const wxLanguageInfo* GetLanguageInfo(int lang);
23324ae1
FM
624
625 /**
626 Returns English name of the given language or empty string if this
627 language is unknown.
969daeea
FM
628
629 See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
23324ae1 630 */
57bf907d 631 static wxString GetLanguageName(int lang);
23324ae1
FM
632
633 /**
969daeea
FM
634 Returns the locale name as passed to the constructor or Init().
635
636 This is a full, human-readable name, e.g. "English" or "French".
23324ae1 637 */
969daeea 638 const wxString& GetLocale() const;
23324ae1
FM
639
640 /**
641 Returns the current short name for the locale (as given to the constructor or
642 the Init() function).
643 */
969daeea 644 const wxString& GetName() const;
23324ae1 645
23324ae1 646 /**
969daeea 647 Retrieves the translation for a string in all loaded domains unless the @a domain
23324ae1 648 parameter is specified (and then only this catalog/domain is searched).
969daeea
FM
649
650 Returns original string if translation is not available (in this case an
651 error message is generated the first time a string is not found; use
652 wxLogNull to suppress it).
653
654 @remarks Domains are searched in the last to first order, i.e. catalogs
655 added later override those added before.
656 */
fadc2df6
FM
657 virtual const wxString& GetString(const wxString& origString,
658 const wxString& domain = wxEmptyString) const;
969daeea
FM
659
660 /**
661 Retrieves the translation for a string in all loaded domains unless the @a domain
662 parameter is specified (and then only this catalog/domain is searched).
663
664 Returns original string if translation is not available (in this case an
665 error message is generated the first time a string is not found; use
666 wxLogNull to suppress it).
667
668 This form is used when retrieving translation of string that has different
669 singular and plural form in English or different plural forms in some
670 other language.
671 It takes two extra arguments: @a origString parameter must contain the
672 singular form of the string to be converted.
673
23324ae1 674 It is also used as the key for the search in the catalog.
4cc4bfaf 675 The @a origString2 parameter is the plural form (in English).
969daeea
FM
676
677 The parameter @a n is used to determine the plural form.
678 If no message catalog is found @a origString is returned if 'n == 1',
679 otherwise @a origString2.
680
23324ae1 681 See GNU gettext manual for additional information on plural forms handling.
969daeea 682 This method is called by the wxGetTranslation() function and _() macro.
3c4f71cc 683
23324ae1 684 @remarks Domains are searched in the last to first order, i.e. catalogs
4cc4bfaf 685 added later override those added before.
23324ae1 686 */
7323ff1a
FM
687 virtual const wxString& GetString(const wxString& origString,
688 const wxString& origString2, size_t n,
689 const wxString& domain = wxEmptyString) const;
23324ae1
FM
690
691 /**
692 Returns current platform-specific locale name as passed to setlocale().
23324ae1
FM
693 Compare GetCanonicalName().
694 */
328f5751 695 wxString GetSysName() const;
23324ae1
FM
696
697 /**
698 Tries to detect the user's default font encoding.
969daeea
FM
699 Returns wxFontEncoding() value or @c wxFONTENCODING_SYSTEM if it
700 couldn't be determined.
23324ae1 701 */
57bf907d 702 static wxFontEncoding GetSystemEncoding();
23324ae1
FM
703
704 /**
969daeea
FM
705 Tries to detect the name of the user's default font encoding.
706 This string isn't particularly useful for the application as its form is
707 platform-dependent and so you should probably use GetSystemEncoding() instead.
708
23324ae1
FM
709 Returns a user-readable string value or an empty string if it couldn't be
710 determined.
711 */
57bf907d 712 static wxString GetSystemEncodingName();
23324ae1
FM
713
714 /**
715 Tries to detect the user's default language setting.
89a7e1ff 716
fc79419b 717 Returns the ::wxLanguage value or @c wxLANGUAGE_UNKNOWN if the language-guessing
969daeea 718 algorithm failed.
23324ae1 719 */
57bf907d 720 static int GetSystemLanguage();
23324ae1 721
fc79419b
FM
722 /**
723 Get the values of the given locale-dependent datum.
724
89a7e1ff
VZ
725 This function returns the value of the locale-specific option specified
726 by the given @a index.
727
728 @param index
729 One of the elements of wxLocaleInfo enum.
730 @param cat
731 The category to use with the given index or wxLOCALE_CAT_DEFAULT if
732 the index can only apply to a single category.
733 @return
734 The option value or empty string if the function failed.
fc79419b 735 */
89a7e1ff
VZ
736 static wxString GetInfo(wxLocaleInfo index,
737 wxLocaleCategory cat = wxLOCALE_CAT_DEFAULT);
fc79419b 738
23324ae1 739 /**
969daeea
FM
740 Initializes the wxLocale instance.
741
742 The call of this function has several global side effects which you should
743 understand: first of all, the application locale is changed - note that
744 this will affect many of standard C library functions such as printf()
745 or strftime().
746 Second, this wxLocale object becomes the new current global locale for
747 the application and so all subsequent calls to wxGetTranslation() will
748 try to translate the messages using the message catalogs for this locale.
3c4f71cc 749
7c913512 750 @param language
d5c8403a 751 ::wxLanguage identifier of the locale.
969daeea
FM
752 @c wxLANGUAGE_DEFAULT has special meaning -- wxLocale will use system's
753 default language (see GetSystemLanguage()).
7c913512 754 @param flags
4cc4bfaf 755 Combination of the following:
969daeea
FM
756 - wxLOCALE_LOAD_DEFAULT: Load the message catalog for the given locale
757 containing the translations of standard wxWidgets messages
758 automatically.
759 - wxLOCALE_CONV_ENCODING: Automatically convert message catalogs to
760 platform's default encoding. Note that it will do only basic
761 conversion between well-known pair like iso8859-1 and windows-1252 or
762 iso8859-2 and windows-1250. See @ref overview_nonenglish for
763 detailed description of this behaviour.
764 Note that this flag is meaningless in Unicode build.
89bb3f02
FM
765
766 @return @true on success or @false if the given locale couldn't be set.
767 */
768 bool Init(int language = wxLANGUAGE_DEFAULT,
769 int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING);
770
771 /**
772 @deprecated
773 This form is deprecated, use the other one unless you know what you are doing.
774
4cc4bfaf
FM
775 @param name
776 The name of the locale. Only used in diagnostic messages.
777 @param short
778 The standard 2 letter locale abbreviation; it is used as the
779 directory prefix when looking for the message catalog files.
780 @param locale
969daeea
FM
781 The parameter for the call to setlocale().
782 Note that it is platform-specific.
4cc4bfaf 783 @param bLoadDefault
969daeea
FM
784 May be set to @false to prevent loading of the message catalog for the
785 given locale containing the translations of standard wxWidgets messages.
4cc4bfaf 786 This parameter would be rarely used in normal circumstances.
7c913512 787 @param bConvertEncoding
969daeea
FM
788 May be set to @true to do automatic conversion of message catalogs to
789 platform's native encoding. Note that it will do only basic conversion
790 between well-known pair like iso8859-1 and windows-1252 or iso8859-2
791 and windows-1250.
792 See @ref overview_nonenglish for detailed description of this behaviour.
969daeea 793 */
7323ff1a
FM
794 bool Init(const wxString& name, const wxString& short = wxEmptyString,
795 const wxString& locale = wxEmptyString, bool bLoadDefault = true,
4cc4bfaf 796 bool bConvertEncoding = false);
23324ae1
FM
797
798 /**
799 Check whether the operating system and/or C run time environment supports
800 this locale. For example in Windows 2000 and Windows XP, support for many
801 locales is not installed by default. Returns @true if the locale is
802 supported.
d5c8403a
FM
803
804 The argument @a lang is the ::wxLanguage identifier. To obtain this for a
805 given a two letter ISO language code, use FindLanguageInfo() to obtain its
806 wxLanguageInfo structure.
807 See AddLanguage() for the wxLanguageInfo description.
3c4f71cc 808
1e24c2af 809 @since 2.7.1.
23324ae1
FM
810 */
811 static bool IsAvailable(int lang);
812
813 /**
814 Check if the given catalog is loaded, and returns @true if it is.
969daeea
FM
815
816 According to GNU gettext tradition, each catalog normally corresponds to
817 'domain' which is more or less the application name.
818
819 @see AddCatalog()
23324ae1 820 */
43c48e1e 821 bool IsLoaded(const wxString& domain) const;
23324ae1
FM
822
823 /**
824 Returns @true if the locale could be set successfully.
825 */
328f5751 826 bool IsOk() const;
23324ae1
FM
827};
828
829
e54c96f1 830
e54c96f1 831
23324ae1
FM
832// ============================================================================
833// Global functions/macros
834// ============================================================================
835
b21126db 836/** @addtogroup group_funcmacro_string */
3950d49c
BP
837//@{
838
23324ae1 839/**
3950d49c
BP
840 This macro is identical to _() but for the plural variant of
841 wxGetTranslation().
842
d29a9a8a 843 @return A const wxString.
3950d49c
BP
844
845 @header{wx/intl.h}
23324ae1 846*/
3950d49c 847#define wxPLURAL(string, plural, n)
23324ae1
FM
848
849/**
3950d49c
BP
850 This macro doesn't do anything in the program code -- it simply expands to
851 the value of its argument.
852
23324ae1
FM
853 However it does have a purpose which is to mark the literal strings for the
854 extraction into the message catalog created by @c xgettext program. Usually
3950d49c
BP
855 this is achieved using _() but that macro not only marks the string for
856 extraction but also expands into a wxGetTranslation() call which means that
857 it cannot be used in some situations, notably for static array
23324ae1 858 initialization.
3950d49c 859
23324ae1
FM
860 Here is an example which should make it more clear: suppose that you have a
861 static array of strings containing the weekday names and which have to be
3950d49c
BP
862 translated (note that it is a bad example, really, as wxDateTime already
863 can be used to get the localized week day names already). If you write:
4cc4bfaf 864
23324ae1
FM
865 @code
866 static const char * const weekdays[] = { _("Mon"), ..., _("Sun") };
867 ...
868 // use weekdays[n] as usual
869 @endcode
7c913512 870
3950d49c
BP
871 The code wouldn't compile because the function calls are forbidden in the
872 array initializer. So instead you should do this:
4cc4bfaf 873
23324ae1
FM
874 @code
875 static const char * const weekdays[] = { wxTRANSLATE("Mon"), ...,
876 wxTRANSLATE("Sun") };
877 ...
878 // use wxGetTranslation(weekdays[n])
879 @endcode
7c913512 880
23324ae1 881 Note that although the code @b would compile if you simply omit
3950d49c
BP
882 wxTRANSLATE() in the above, it wouldn't work as expected because there
883 would be no translations for the weekday names in the program message
884 catalog and wxGetTranslation() wouldn't find them.
885
d29a9a8a 886 @return A const wxChar*.
3950d49c
BP
887
888 @header{wx/intl.h}
23324ae1 889*/
3950d49c 890#define wxTRANSLATE(string)
23324ae1
FM
891
892/**
3950d49c
BP
893 This function returns the translation of @a string in the current
894 @c locale(). If the string is not found in any of the loaded message
895 catalogs (see @ref overview_i18n), the original string is returned. In
896 debug build, an error message is logged -- this should help to find the
897 strings which were not yet translated. If @a domain is specified then only
898 that domain/catalog is searched for a matching string. As this function is
899 used very often, an alternative (and also common in Unix world) syntax is
900 provided: the _() macro is defined to do the same thing as
901 wxGetTranslation().
902
903 This function calls wxLocale::GetString().
904
905 @note This function is not suitable for literal strings in Unicode builds
906 since the literal strings must be enclosed into _T() or wxT() macro
907 which makes them unrecognised by @c xgettext, and so they are not
908 extracted to the message catalog. Instead, use the _() and wxPLURAL()
909 macro for all literal strings.
910
911 @see wxGetTranslation(const wxString&, const wxString&, size_t, const wxString&)
912
913 @header{wx/intl.h}
23324ae1 914*/
969daeea 915const wxString& wxGetTranslation(const wxString& string,
3950d49c 916 const wxString& domain = wxEmptyString);
23324ae1 917
23324ae1 918/**
3950d49c
BP
919 This is an overloaded version of
920 wxGetTranslation(const wxString&, const wxString&), please see its
921 documentation for general information.
922
923 This version is used when retrieving translation of string that has
924 different singular and plural forms in English or different plural forms in
925 some other language. Like wxGetTranslation(const wxString&,const wxString&),
926 the @a string parameter must contain the singular form of the string to be
927 converted and is used as the key for the search in the catalog. The
928 @a plural parameter is the plural form (in English). The parameter @a n is
929 used to determine the plural form. If no message catalog is found,
930 @a string is returned if "n == 1", otherwise @a plural is returned.
931
932 See GNU gettext Manual for additional information on plural forms handling:
933 <http://www.gnu.org/software/gettext/manual/gettext.html#Plural-forms>
934 For a shorter alternative see the wxPLURAL() macro.
935
936 This function calls wxLocale::GetString().
937
938 @header{wx/intl.h}
23324ae1 939*/
969daeea 940const wxString& wxGetTranslation(const wxString& string,
3950d49c
BP
941 const wxString& plural, size_t n,
942 const wxString& domain = wxEmptyString);
943
944/**
945 This macro expands into a call to wxGetTranslation(), so it marks the
946 message for the extraction by @c xgettext just as wxTRANSLATE() does, but
947 also returns the translation of the string for the current locale during
948 execution.
949
950 Don't confuse this with _T()!
951
952 @header{wx/intl.h}
953*/
969daeea 954const wxString& _(const wxString& string);
3950d49c 955
23324ae1
FM
956//@}
957