]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/locale.tex
added copy constr
[wxWidgets.git] / docs / latex / wx / locale.tex
1 \section{\class{wxLocale}}\label{wxlocale}
2
3 wxLocale class encapsulates all language-dependent settings and is a
4 generalization of the C locale concept.
5
6 In wxWidgets this class manages message catalogs which contain the translations
7 of the strings used to the current language.
8
9 \perlnote{In wxPerl you can't use the '\_' function name, so
10 the {\tt Wx::Locale} module can export the {\tt gettext} and
11 {\tt gettext\_noop} under any given name.
12
13 \begin{verbatim}
14 # this imports gettext ( equivalent to Wx::GetTranslation
15 # and gettext_noop ( a noop )
16 # into your module
17 use Wx::Locale qw(:default);
18
19 # ....
20
21 # use the functions
22 print gettext( ``Panic!'' );
23
24 button = Wx::Button->new( window, -1, gettext( ``Label'' ) );
25 \end{verbatim}
26
27 If you need to translate a lot of strings, then adding gettext( ) around
28 each one is a long task ( that is why \_( ) was introduced ), so just choose
29 a shorter name for gettext:
30
31 \begin{verbatim}
32 #
33 use Wx::Locale 'gettext' => 't',
34 'gettext_noop' => 'gettext_noop';
35
36 # ...
37
38 # use the functions
39 print t( ``Panic!!'' );
40
41 # ...
42 \end{verbatim}
43 }%
44
45 \wxheading{Derived from}
46
47 No base class
48
49 \wxheading{See also}
50
51 \helpref{Internationalization overview}{internationalization},\\
52 \helpref{Internat sample}{sampleinternat}
53
54 \wxheading{Include files}
55
56 <wx/intl.h>
57
58 \wxheading{Library}
59
60 \helpref{wxBase}{librarieslist}
61
62
63 \latexignore{\rtfignore{\wxheading{Members}}}
64
65
66
67 \membersection{Supported languages}\label{wxlanguage}
68
69 See \helpref{list of recognized language constants}{languagecodes}.
70 These constants may be used to specify the language
71 in \helpref{Init}{wxlocaleinit} and are returned by
72 \helpref{GetSystemLanguage}{wxlocalegetsystemlanguage}:
73
74
75 \membersection{wxLocale::wxLocale}\label{wxlocaledefctor}
76
77 \func{}{wxLocale}{\void}
78
79 This is the default constructor and it does nothing to initialize the object:
80 \helpref{Init()}{wxlocaleinit} must be used to do that.
81
82 \func{}{wxLocale}{\param{int }{language}, \param{int }{flags =
83 wxLOCALE\_LOAD\_DEFAULT | wxLOCALE\_CONV\_ENCODING}}
84
85 See \helpref{Init()}{wxlocaleinit} for parameters description.
86
87 \func{}{wxLocale}{\param{const wxString\& }{name}, \param{const wxString\& }{short = wxEmptyString}, \param{const wxString\& }{locale = wxEmptyString}, \param{bool }{bLoadDefault = true}, \param{bool }{bConvertEncoding = false}}
88
89 See \helpref{Init()}{wxlocaleinit} for parameters description.
90
91 The call of this function has several global side effects which you should
92 understand: first of all, the application locale is changed - note that this
93 will affect many of standard C library functions such as printf() or strftime().
94 Second, this wxLocale object becomes the new current global locale for the
95 application and so all subsequent calls to wxGetTranslation() will try to
96 translate the messages using the message catalogs for this locale.
97
98
99
100 \membersection{wxLocale::\destruct{wxLocale}}\label{wxlocaledtor}
101
102 \func{}{\destruct{wxLocale}}{\void}
103
104 The destructor, like the constructor, also has global side effects: the previously
105 set locale is restored and so the changes described in
106 \helpref{Init}{wxlocaleinit} documentation are rolled back.
107
108
109 \membersection{wxLocale::AddCatalog}\label{wxlocaleaddcatalog}
110
111 \func{bool}{AddCatalog}{\param{const wxString\& }{domain}}
112
113 \func{bool}{AddCatalog}{\param{const wxString\& }{domain}, \param{wxLanguage}{msgIdLanguage}, \param{const wxString\& }{msgIdCharset}}
114
115 Add a catalog for use with the current locale: it is searched for in standard
116 places (current directory first, then the system one), but you may also prepend
117 additional directories to the search path with
118 \helpref{AddCatalogLookupPathPrefix()}{wxlocaleaddcataloglookuppathprefix}.
119
120 All loaded catalogs will be used for message lookup by
121 \helpref{GetString()}{wxlocalegetstring} for the current locale.
122
123 Returns true if catalog was successfully loaded, false otherwise (which might
124 mean that the catalog is not found or that it isn't in the correct format).
125
126 The second form of this method takes two additional arguments,
127 \arg{msgIdLanguage} and \arg{msgIdCharset}.
128
129 \arg{msgIdLanguage} specifies the language of "msgid" strings in source code
130 (i.e. arguments to \helpref{GetString}{wxlocalegetstring},
131 \helpref{wxGetTranslation}{wxgettranslation} and the
132 \helpref{\_()}{underscore} macro). It is used if AddCatalog cannot find any
133 catalog for current language: if the language is same as source code language,
134 then strings from source code are used instead.
135
136 \arg{msgIdCharset} lets you specify the charset used for msgids in sources
137 in case they use 8-bit characters (e.g. German or French strings). This
138 argument has no effect in Unicode build, because literals in sources are
139 Unicode strings; you have to use compiler-specific method of setting the right
140 charset when compiling with Unicode.
141
142 By default (i.e. when you use the first form), msgid strings are assumed
143 to be in English and written only using 7-bit ASCII characters.
144
145 If you have to deal with non-English strings or 8-bit characters in the source
146 code, see the instructions in
147 \helpref{Writing non-English applications}{nonenglishoverview}.
148
149
150 \membersection{wxLocale::AddCatalogLookupPathPrefix}\label{wxlocaleaddcataloglookuppathprefix}
151
152 \func{void}{AddCatalogLookupPathPrefix}{\param{const wxString\& }{prefix}}
153
154 Add a prefix to the catalog lookup path: the message catalog files will be
155 looked up under prefix/<lang>/LC\_MESSAGES, prefix/<lang> and prefix
156 (in this order).
157
158 This only applies to subsequent invocations of AddCatalog().
159
160 \membersection{wxLocale::AddLanguage}\label{wxlocaleaddlanguage}
161
162 \func{static void}{AddLanguage}{\param{const wxLanguageInfo\& }{info}}
163
164 Adds custom, user-defined language to the database of known languages. This
165 database is used in conjunction with the first form of
166 \helpref{Init}{wxlocaleinit}.
167
168 wxLanguageInfo is defined as follows:
169
170 \begin{verbatim}
171 struct WXDLLEXPORT wxLanguageInfo
172 {
173 int Language; // wxLanguage id
174 wxString CanonicalName; // Canonical name, e.g. fr_FR
175 #ifdef __WIN32__
176 wxUint32 WinLang, WinSublang; // Win32 language identifiers
177 // (LANG_xxxx, SUBLANG_xxxx)
178 #endif
179 wxString Description; // human-readable name of the language
180 };
181 \end{verbatim}
182
183
184 {\it Language} should be greater than wxLANGUAGE\_USER\_DEFINED.
185
186 \perlnote{In wxPerl Wx::LanguageInfo has only one method:\par
187 Wx::LanguageInfo->new( language, canonicalName, WinLang, WinSubLang, Description )}
188
189
190 \membersection{wxLocale::FindLanguageInfo}\label{wxlocalefindlanguageinfo}
191
192 \func{static wxLanguageInfo *}{FindLanguageInfo}{\param{const wxString\& }{locale}}
193
194 This function may be used to find the language description structure for the
195 given locale, specified either as a two letter ISO language code (for example,
196 "pt"), a language code followed by the country code ("pt\_BR") or a full, human
197 readable, language description ("Portuguese-Brazil").
198
199 Returns the information for the given language or {\tt NULL} if this language
200 is unknown. Note that even if the returned pointer is valid, the caller should
201 {\it not} delete it.
202
203 \wxheading{See also}
204
205 \helpref{GetLanguageInfo}{wxlocalegetlanguageinfo}
206
207
208 \membersection{wxLocale::GetCanonicalName}\label{wxlocalegetcanonicalname}
209
210 \constfunc{wxString}{GetCanonicalName}{\void}
211
212 Returns the canonical form of current locale name. Canonical form is the
213 one that is used on UNIX systems: it is a two- or five-letter string in xx or
214 xx\_YY format, where xx is ISO 639 code of language and YY is ISO 3166 code of
215 the country. Examples are "en", "en\_GB", "en\_US" or "fr\_FR".
216
217 This form is internally used when looking up message catalogs.
218
219 Compare \helpref{GetSysName}{wxlocalegetsysname}.
220
221
222
223
224 \membersection{wxLocale::GetLanguage}\label{wxlocalegetlanguage}
225
226 \constfunc{int}{GetLanguage}{\void}
227
228 Returns \helpref{wxLanguage}{wxlanguage} constant of current language.
229 Note that you can call this function only if you used the form of
230 \helpref{Init}{wxlocaleinit} that takes wxLanguage argument.
231
232
233 \membersection{wxLocale::GetLanguageInfo}\label{wxlocalegetlanguageinfo}
234
235 \constfunc{static wxLanguageInfo *}{GetLanguageInfo}{\param{int }{lang}}
236
237 Returns a pointer to wxLanguageInfo structure containing information about the
238 given language or {\tt NULL} if this language is unknown. Note that even if the
239 returned pointer is valid, the caller should {\it not} delete it.
240
241 See \helpref{AddLanguage}{wxlocaleaddlanguage} for the wxLanguageInfo
242 description.
243
244 As with \helpref{Init}{wxlocaleinit}, \texttt{wxLANGUAGE\_DEFAULT} has the
245 special meaning if passed as an argument to this function and in this case the
246 result of \helpref{GetSystemLanguage()}{wxlocalegetsystemlanguage} is used.
247
248
249 \membersection{wxLocale::GetLanguageName}\label{wxlocalegetlanguagename}
250
251 \constfunc{static wxString}{GetLanguageName}{\param{int }{lang}}
252
253 Returns English name of the given language or empty string if this
254 language is unknown.
255
256 See \helpref{GetLanguageInfo}{wxlocalegetlanguageinfo} for a remark about
257 special meaning of \texttt{wxLANGUAGE\_DEFAULT}.
258
259
260 \membersection{wxLocale::GetLocale}\label{wxlocalegetlocale}
261
262 \constfunc{const wxString\& }{GetLocale}{\void}
263
264 Returns the locale name as passed to the constructor or
265 \helpref{Init()}{wxlocaleinit}. This is full, human-readable name,
266 e.g. "English" or "French".
267
268
269
270 \membersection{wxLocale::GetName}\label{wxlocalegetname}
271
272 \constfunc{const wxString\& }{GetName}{\void}
273
274 Returns the current short name for the locale (as given to the constructor or
275 the Init() function).
276
277
278 \membersection{wxLocale::GetString}\label{wxlocalegetstring}
279
280 \constfunc{const wxString\& }{GetString}{\param{const wxString\& }{origString}, \param{const wxString\& }{domain = wxEmptyString}}
281
282 \constfunc{const wxString\& }{GetString}{\param{const wxString\& }{origString}, \param{const wxString\& }{origString2}, \param{size\_t }{n}, \param{const wxString\& }{domain = NULL}}
283
284 Retrieves the translation for a string in all loaded domains unless the szDomain
285 parameter is specified (and then only this catalog/domain is searched).
286
287 Returns original string if translation is not available
288 (in this case an error message is generated the first time
289 a string is not found; use \helpref{wxLogNull}{wxlogoverview} to suppress it).
290
291 The second form is used when retrieving translation of string that has
292 different singular and plural form in English or different plural forms in some
293 other language. It takes two extra arguments: \arg{origString}
294 parameter must contain the singular form of the string to be converted.
295 It is also used as the key for the search in the catalog.
296 The \arg{origString2} parameter is the plural form (in English).
297 The parameter \arg{n} is used to determine the plural form. If no
298 message catalog is found \arg{origString} is returned if `n == 1',
299 otherwise \arg{origString2}.
300 See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150} for additional information on plural forms handling.
301
302 This method is called by the \helpref{wxGetTranslation}{wxgettranslation}
303 function and \helpref{\_()}{underscore} macro.
304
305 \wxheading{Remarks}
306
307 Domains are searched in the last to first order, i.e. catalogs
308 added later override those added before.
309
310
311 \membersection{wxLocale::GetHeaderValue}\label{wxlocalegetheadervalue}
312
313 \constfunc{wxString}{GetHeaderValue}{\param{const wxString\& }{header}, \param{const wxString\& }{domain = wxEmptyString}}
314
315 Returns the header value for header \arg{header}. The search for \arg{header} is case sensitive. If an \arg{domain}
316 is passed, this domain is searched. Else all domains will be searched until a header has been found.
317 The return value is the value of the header if found. Else this will be empty.
318
319 \membersection{wxLocale::GetSysName}\label{wxlocalegetsysname}
320
321 \constfunc{wxString}{GetSysName}{\void}
322
323 Returns current platform-specific locale name as passed to setlocale().
324
325 Compare \helpref{GetCanonicalName}{wxlocalegetcanonicalname}.
326
327
328
329 \membersection{wxLocale::GetSystemEncoding}\label{wxlocalegetsystemencoding}
330
331 \constfunc{static wxFontEncoding}{GetSystemEncoding}{\void}
332
333 Tries to detect the user's default font encoding.
334 Returns \helpref{wxFontEncoding}{wxfont} value or
335 {\bf wxFONTENCODING\_SYSTEM} if it couldn't be determined.
336
337
338 \membersection{wxLocale::GetSystemEncodingName}\label{wxlocalegetsystemencodingname}
339
340 \constfunc{static wxString}{GetSystemEncodingName}{\void}
341
342 Tries to detect the name of the user's default font encoding. This string isn't
343 particularly useful for the application as its form is platform-dependent and
344 so you should probably use
345 \helpref{GetSystemEncoding}{wxlocalegetsystemencoding} instead.
346
347 Returns a user-readable string value or an empty string if it couldn't be
348 determined.
349
350
351 \membersection{wxLocale::GetSystemLanguage}\label{wxlocalegetsystemlanguage}
352
353 \constfunc{static int}{GetSystemLanguage}{\void}
354
355 Tries to detect the user's default language setting.
356 Returns \helpref{wxLanguage}{wxlanguage} value or
357 {\bf wxLANGUAGE\_UNKNOWN} if the language-guessing algorithm failed.
358
359
360
361 \membersection{wxLocale::Init}\label{wxlocaleinit}
362
363
364 \func{bool}{Init}{\param{int }{language = wxLANGUAGE\_DEFAULT}, \param{int }{flags =
365 wxLOCALE\_LOAD\_DEFAULT | wxLOCALE\_CONV\_ENCODING}}
366
367 \func{bool}{Init}{\param{const wxString\& }{name}, \param{const wxString\& }{short = wxEmptyString}, \param{const wxString\& }{locale = wxEmptyString}, \param{bool }{bLoadDefault = true}, \param{bool }{bConvertEncoding = false}}
368
369 The second form is deprecated, use the first one unless you know what you are
370 doing.
371
372
373 \wxheading{Parameters}
374
375 \docparam{language}{\helpref{wxLanguage}{wxlanguage} identifier of the locale.
376 wxLANGUAGE\_DEFAULT has special meaning -- wxLocale will use system's default
377 language (see \helpref{GetSystemLanguage}{wxlocalegetsystemlanguage}).}
378
379 \docparam{flags}{Combination of the following:
380
381
382 \begin{twocollist}\itemsep=0pt
383 \twocolitem{\windowstyle{wxLOCALE\_LOAD\_DEFAULT}}{Load the message catalog
384 for the given locale containing the translations of standard wxWidgets messages
385 automatically.}
386 \twocolitem{\windowstyle{wxLOCALE\_CONV\_ENCODING}}{Automatically convert message
387 catalogs to platform's default encoding. Note that it will do only basic
388 conversion between well-known pair like iso8859-1 and windows-1252 or
389 iso8859-2 and windows-1250. See \helpref{Writing non-English applications}{nonenglishoverview} for detailed
390 description of this behaviour. Note that this flag is meaningless in Unicode build.}
391 \end{twocollist}
392 }
393
394 \docparam{name}{The name of the locale. Only used in diagnostic messages.}
395
396 \docparam{short}{The standard 2 letter locale abbreviation; it is used as the
397 directory prefix when looking for the message catalog files.}
398
399 \docparam{locale}{The parameter for the call to setlocale(). Note that it is
400 platform-specific.}
401
402 \docparam{bLoadDefault}{May be set to false to prevent loading of the message catalog
403 for the given locale containing the translations of standard wxWidgets messages.
404 This parameter would be rarely used in normal circumstances.}
405
406 \docparam{bConvertEncoding}{May be set to true to do automatic conversion of message
407 catalogs to platform's native encoding. Note that it will do only basic
408 conversion between well-known pair like iso8859-1 and windows-1252 or
409 iso8859-2 and windows-1250.
410 See \helpref{Writing non-English applications}{nonenglishoverview} for detailed
411 description of this behaviour.}
412
413
414 The call of this function has several global side effects which you should
415 understand: first of all, the application locale is changed - note that this
416 will affect many of standard C library functions such as printf() or strftime().
417 Second, this wxLocale object becomes the new current global locale for the
418 application and so all subsequent calls to
419 \helpref{wxGetTranslation()}{wxgettranslation} will try to
420 translate the messages using the message catalogs for this locale.
421
422 Returns true on success or false if the given locale couldn't be set.
423
424
425 \membersection{wxLocale::IsAvailable}\label{wxlocaleisavailable}
426
427 \func{static bool}{IsAvailable}{\param{int }{lang}}
428
429 Check whether the operating system and/or C run time environment supports
430 this locale. For example in Windows 2000 and Windows XP, support for many
431 locales is not installed by default. Returns \true if the locale is
432 supported.
433
434 The argument \arg{lang} is the wxLanguage identifier. To obtain this for a
435 given a two letter ISO language code, use
436 \helpref{FindLanguageInfo}{wxlocalefindlanguageinfo} to obtain its
437 wxLanguageInfo structure. See \helpref{AddLanguage}{wxlocaleaddlanguage} for
438 the wxLanguageInfo description.
439
440 \newsince{2.7.1}.
441
442
443 \membersection{wxLocale::IsLoaded}\label{wxlocaleisloaded}
444
445 \constfunc{bool}{IsLoaded}{\param{const char* }{domain}}
446
447 Check if the given catalog is loaded, and returns true if it is.
448
449 According to GNU gettext tradition, each catalog
450 normally corresponds to 'domain' which is more or less the application name.
451
452 See also: \helpref{AddCatalog}{wxlocaleaddcatalog}
453
454
455 \membersection{wxLocale::IsOk}\label{wxlocaleisok}
456
457 \constfunc{bool}{IsOk}{\void}
458
459 Returns true if the locale could be set successfully.
460