git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			457 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			457 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \section{\class{wxLocale}}\label{wxlocale}
 | |
| 
 | |
| wxLocale class encapsulates all language-dependent settings and is a
 | |
| generalization of the C locale concept.
 | |
| 
 | |
| In wxWidgets this class manages message catalogs which contain the translations
 | |
| of the strings used to the current language.
 | |
| 
 | |
| \perlnote{In wxPerl you can't use the '\_' function name, so
 | |
| the {\tt Wx::Locale} module can export the {\tt gettext} and 
 | |
| {\tt gettext\_noop} under any given name. 
 | |
| 
 | |
| \begin{verbatim}
 | |
|   # this imports gettext ( equivalent to Wx::GetTranslation
 | |
|   # and gettext_noop ( a noop )
 | |
|   # into your module
 | |
|   use Wx::Locale qw(:default);
 | |
| 
 | |
|   # ....
 | |
| 
 | |
|   # use the functions
 | |
|   print gettext( ``Panic!'' ); 
 | |
| 
 | |
|   button = Wx::Button->new( window, -1, gettext( ``Label'' ) );
 | |
| \end{verbatim}
 | |
| 
 | |
| If you need to translate a lot of strings, then adding gettext( ) around
 | |
| each one is a long task ( that is why \_( ) was introduced ), so just choose
 | |
| a shorter name for gettext:
 | |
| 
 | |
| \begin{verbatim}
 | |
|   #
 | |
|   use Wx::Locale 'gettext' => 't',
 | |
|                  'gettext_noop' => 'gettext_noop';
 | |
| 
 | |
|   # ...
 | |
| 
 | |
|   # use the functions
 | |
|   print t( ``Panic!!'' );
 | |
| 
 | |
|   # ...
 | |
| \end{verbatim}
 | |
| }%
 | |
| 
 | |
| \wxheading{Derived from}
 | |
| 
 | |
| No base class
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{Internationalization overview}{internationalization},\\
 | |
| \helpref{Internat sample}{sampleinternat}
 | |
| 
 | |
| \wxheading{Include files}
 | |
| 
 | |
| <wx/intl.h>
 | |
| 
 | |
| 
 | |
| \latexignore{\rtfignore{\wxheading{Members}}}
 | |
| 
 | |
| 
 | |
| 
 | |
| \membersection{Supported languages}\label{wxlanguage}
 | |
| 
 | |
| See \helpref{list of recognized language constants}{languagecodes}.
 | |
| These constants may be used to specify the language
 | |
| in \helpref{Init}{wxlocaleinit} and are returned by 
 | |
| \helpref{GetSystemLanguage}{wxlocalegetsystemlanguage}:
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::wxLocale}\label{wxlocaledefctor}
 | |
| 
 | |
| \func{}{wxLocale}{\void}
 | |
| 
 | |
| This is the default constructor and it does nothing to initialize the object: 
 | |
| \helpref{Init()}{wxlocaleinit} must be used to do that.
 | |
| 
 | |
| \func{}{wxLocale}{\param{int }{language}, \param{int }{flags =
 | |
|                           wxLOCALE\_LOAD\_DEFAULT | wxLOCALE\_CONV\_ENCODING}}
 | |
| 
 | |
| See \helpref{Init()}{wxlocaleinit} for parameters description.
 | |
| 
 | |
| \func{}{wxLocale}{\param{const wxString\& }{name}, \param{const wxString\& }{short = wxEmptyString}, \param{const wxString\& }{locale = wxEmptyString}, \param{bool }{bLoadDefault = true}, \param{bool }{bConvertEncoding = false}}
 | |
| 
 | |
| See \helpref{Init()}{wxlocaleinit} for parameters description.
 | |
| 
 | |
| The call of this function has several global side effects which you should
 | |
| understand: first of all, the application locale is changed - note that this
 | |
| will affect many of standard C library functions such as printf() or strftime().
 | |
| Second, this wxLocale object becomes the new current global locale for the
 | |
| application and so all subsequent calls to wxGetTranslation() will try to
 | |
| translate the messages using the message catalogs for this locale.
 | |
| 
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::\destruct{wxLocale}}\label{wxlocaledtor}
 | |
| 
 | |
| \func{}{\destruct{wxLocale}}{\void}
 | |
| 
 | |
| The destructor, like the constructor, also has global side effects: the previously
 | |
| set locale is restored and so the changes described in 
 | |
| \helpref{Init}{wxlocaleinit} documentation are rolled back.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::AddCatalog}\label{wxlocaleaddcatalog}
 | |
| 
 | |
| \func{bool}{AddCatalog}{\param{const wxString\& }{domain}}
 | |
| 
 | |
| \func{bool}{AddCatalog}{\param{const wxString\& }{domain}, \param{wxLanguage}{msgIdLanguage}, \param{const wxString\& }{msgIdCharset}}
 | |
| 
 | |
| Add a catalog for use with the current locale: it is searched for in standard
 | |
| places (current directory first, then the system one), but you may also prepend
 | |
| additional directories to the search path with 
 | |
| \helpref{AddCatalogLookupPathPrefix()}{wxlocaleaddcataloglookuppathprefix}.
 | |
| 
 | |
| All loaded catalogs will be used for message lookup by
 | |
| \helpref{GetString()}{wxlocalegetstring} for the current locale.
 | |
| 
 | |
| Returns true if catalog was successfully loaded, false otherwise (which might
 | |
| mean that the catalog is not found or that it isn't in the correct format).
 | |
| 
 | |
| The second form of this method takes two additional arguments,
 | |
| \arg{msgIdLanguage} and \arg{msgIdCharset}.
 | |
| 
 | |
| \arg{msgIdLanguage} specifies the language of "msgid" strings in source code
 | |
| (i.e. arguments to \helpref{GetString}{wxlocalegetstring},
 | |
| \helpref{wxGetTranslation}{wxgettranslation} and the 
 | |
| \helpref{\_()}{underscore} macro). It is used if AddCatalog cannot find any
 | |
| catalog for current language: if the language is same as source code language,
 | |
| then strings from source code are used instead. 
 | |
| 
 | |
| \arg{msgIdCharset} lets you specify the charset used for msgids in sources
 | |
| in case they use 8-bit characters (e.g. German or French strings).  This
 | |
| argument has no effect in Unicode build, because literals in sources are
 | |
| Unicode strings; you have to use compiler-specific method of setting the right
 | |
| charset when compiling with Unicode.
 | |
| 
 | |
| By default (i.e. when you use the first form), msgid strings are assumed
 | |
| to be in English and written only using 7-bit ASCII characters.
 | |
| 
 | |
| If you have to deal with non-English strings or 8-bit characters in the source
 | |
| code, see the instructions in 
 | |
| \helpref{Writing non-English applications}{nonenglishoverview}.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::AddCatalogLookupPathPrefix}\label{wxlocaleaddcataloglookuppathprefix}
 | |
| 
 | |
| \func{void}{AddCatalogLookupPathPrefix}{\param{const wxString\& }{prefix}}
 | |
| 
 | |
| Add a prefix to the catalog lookup path: the message catalog files will be
 | |
| looked up under prefix/<lang>/LC\_MESSAGES, prefix/<lang> and prefix
 | |
| (in this order).
 | |
| 
 | |
| This only applies to subsequent invocations of AddCatalog().
 | |
| 
 | |
| \membersection{wxLocale::AddLanguage}\label{wxlocaleaddlanguage}
 | |
| 
 | |
| \func{static void}{AddLanguage}{\param{const wxLanguageInfo\& }{info}}
 | |
| 
 | |
| Adds custom, user-defined language to the database of known languages. This
 | |
| database is used in conjunction with the first form of 
 | |
| \helpref{Init}{wxlocaleinit}. 
 | |
| 
 | |
| wxLanguageInfo is defined as follows:
 | |
| 
 | |
| \begin{verbatim}
 | |
| struct WXDLLEXPORT wxLanguageInfo
 | |
| {
 | |
|     int Language;                   // wxLanguage id
 | |
|     wxString CanonicalName;         // Canonical name, e.g. fr_FR
 | |
| #ifdef __WIN32__
 | |
|     wxUint32 WinLang, WinSublang;   // Win32 language identifiers
 | |
|                                     // (LANG_xxxx, SUBLANG_xxxx)
 | |
| #endif
 | |
|     wxString Description;           // human-readable name of the language
 | |
| };
 | |
| \end{verbatim}
 | |
| 
 | |
| 
 | |
| {\it Language} should be greater than wxLANGUAGE\_USER\_DEFINED.
 | |
| 
 | |
| \perlnote{In wxPerl Wx::LanguageInfo has only one method:\par
 | |
| Wx::LanguageInfo->new( language, canonicalName, WinLang, WinSubLang, Description )}
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::FindLanguageInfo}\label{wxlocalefindlanguageinfo}
 | |
| 
 | |
| \func{static wxLanguageInfo *}{FindLanguageInfo}{\param{const wxString\& }{locale}}
 | |
| 
 | |
| This function may be used to find the language description structure for the
 | |
| given locale, specified either as a two letter ISO language code (for example,
 | |
| "pt"), a language code followed by the country code ("pt\_BR") or a full, human
 | |
| readable, language description ("Portuguese-Brazil").
 | |
| 
 | |
| Returns the information for the given language or {\tt NULL} if this language
 | |
| is unknown. Note that even if the returned pointer is valid, the caller should
 | |
| {\it not} delete it.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{GetLanguageInfo}{wxlocalegetlanguageinfo}
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetCanonicalName}\label{wxlocalegetcanonicalname}
 | |
| 
 | |
| \constfunc{wxString}{GetCanonicalName}{\void}
 | |
| 
 | |
| Returns the canonical form of current locale name. Canonical form is the
 | |
| one that is used on UNIX systems: it is a two- or five-letter string in xx or
 | |
| xx\_YY format, where xx is ISO 639 code of language and YY is ISO 3166 code of
 | |
| the country. Examples are "en", "en\_GB", "en\_US" or "fr\_FR".
 | |
| 
 | |
| This form is internally used when looking up message catalogs.
 | |
| 
 | |
| Compare \helpref{GetSysName}{wxlocalegetsysname}.
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetLanguage}\label{wxlocalegetlanguage}
 | |
| 
 | |
| \constfunc{int}{GetLanguage}{\void}
 | |
| 
 | |
| Returns \helpref{wxLanguage}{wxlanguage} constant of current language.
 | |
| Note that you can call this function only if you used the form of
 | |
| \helpref{Init}{wxlocaleinit} that takes wxLanguage argument.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetLanguageInfo}\label{wxlocalegetlanguageinfo}
 | |
| 
 | |
| \constfunc{static wxLanguageInfo *}{GetLanguageInfo}{\param{int }{lang}}
 | |
| 
 | |
| Returns a pointer to wxLanguageInfo structure containing information about the
 | |
| given language or {\tt NULL} if this language is unknown. Note that even if the
 | |
| returned pointer is valid, the caller should {\it not} delete it.
 | |
| 
 | |
| See \helpref{AddLanguage}{wxlocaleaddlanguage} for the wxLanguageInfo
 | |
| description.
 | |
| 
 | |
| As with \helpref{Init}{wxlocaleinit}, \texttt{wxLANGUAGE\_DEFAULT} has the
 | |
| special meaning if passed as an argument to this function and in this case the
 | |
| result of \helpref{GetSystemLanguage()}{wxlocalegetsystemlanguage} is used.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetLanguageName}\label{wxlocalegetlanguagename}
 | |
| 
 | |
| \constfunc{static wxString}{GetLanguageName}{\param{int }{lang}}
 | |
| 
 | |
| Returns English name of the given language or empty string if this
 | |
| language is unknown.
 | |
| 
 | |
| See \helpref{GetLanguageInfo}{wxlocalegetlanguageinfo} for a remark about
 | |
| special meaning of \texttt{wxLANGUAGE\_DEFAULT}.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetLocale}\label{wxlocalegetlocale}
 | |
| 
 | |
| \constfunc{const wxString\& }{GetLocale}{\void}
 | |
| 
 | |
| Returns the locale name as passed to the constructor or 
 | |
| \helpref{Init()}{wxlocaleinit}. This is full, human-readable name,
 | |
| e.g. "English" or "French".
 | |
| 
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetName}\label{wxlocalegetname}
 | |
| 
 | |
| \constfunc{const wxString\& }{GetName}{\void}
 | |
| 
 | |
| Returns the current short name for the locale (as given to the constructor or
 | |
| the Init() function).
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetString}\label{wxlocalegetstring}
 | |
| 
 | |
| \constfunc{const wxString\& }{GetString}{\param{const wxString\& }{origString}, \param{const wxString\& }{domain = wxEmptyString}}
 | |
| 
 | |
| \constfunc{const wxString\& }{GetString}{\param{const wxString\& }{origString}, \param{const wxString\& }{origString2}, \param{size\_t }{n}, \param{const wxString\& }{domain = NULL}}
 | |
| 
 | |
| Retrieves the translation for a string in all loaded domains unless the szDomain
 | |
| parameter is specified (and then only this catalog/domain is searched).
 | |
| 
 | |
| Returns original string if translation is not available
 | |
| (in this case an error message is generated the first time
 | |
| a string is not found; use \helpref{wxLogNull}{wxlogoverview} to suppress it).
 | |
| 
 | |
| The second form is used when retrieving translation of string that has
 | |
| different singular and plural form in English or different plural forms in some
 | |
| other language. It takes two extra arguments: \arg{origString}
 | |
| parameter must contain the singular form of the string to be converted.
 | |
| It is also used as the key for the search in the catalog.
 | |
| The \arg{origString2} parameter is the plural form (in English).
 | |
| The parameter \arg{n} is used to determine the plural form.  If no
 | |
| message catalog is found \arg{origString} is returned if `n == 1',
 | |
| otherwise \arg{origString2}.
 | |
| See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150} for additional information on plural forms handling.
 | |
| 
 | |
| This method is called by the \helpref{wxGetTranslation}{wxgettranslation}
 | |
| function and \helpref{\_()}{underscore} macro.
 | |
| 
 | |
| \wxheading{Remarks}
 | |
| 
 | |
| Domains are searched in the last to first order, i.e. catalogs
 | |
| added later override those added before.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetHeaderValue}\label{wxlocalegetheadervalue}
 | |
| 
 | |
| \constfunc{wxString}{GetHeaderValue}{\param{const wxString\& }{header}, \param{const wxString\& }{domain = wxEmptyString}}
 | |
| 
 | |
| Returns the header value for header \arg{header}. The search for \arg{header} is case sensitive. If an \arg{domain}
 | |
| is passed, this domain is searched. Else all domains will be searched until a header has been found.
 | |
| The return value is the value of the header if found. Else this will be empty.
 | |
| 
 | |
| \membersection{wxLocale::GetSysName}\label{wxlocalegetsysname}
 | |
| 
 | |
| \constfunc{wxString}{GetSysName}{\void}
 | |
| 
 | |
| Returns current platform-specific locale name as passed to setlocale().
 | |
| 
 | |
| Compare \helpref{GetCanonicalName}{wxlocalegetcanonicalname}.
 | |
| 
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetSystemEncoding}\label{wxlocalegetsystemencoding}
 | |
| 
 | |
| \constfunc{static wxFontEncoding}{GetSystemEncoding}{\void}
 | |
| 
 | |
| Tries to detect the user's default font encoding.
 | |
| Returns \helpref{wxFontEncoding}{wxfont} value or 
 | |
| {\bf wxFONTENCODING\_SYSTEM} if it couldn't be determined.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetSystemEncodingName}\label{wxlocalegetsystemencodingname}
 | |
| 
 | |
| \constfunc{static wxString}{GetSystemEncodingName}{\void}
 | |
| 
 | |
| Tries to detect the name of the user's default font encoding. This string isn't
 | |
| particularly useful for the application as its form is platform-dependent and
 | |
| so you should probably use 
 | |
| \helpref{GetSystemEncoding}{wxlocalegetsystemencoding} instead.
 | |
| 
 | |
| Returns a user-readable string value or an empty string if it couldn't be
 | |
| determined.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::GetSystemLanguage}\label{wxlocalegetsystemlanguage}
 | |
| 
 | |
| \constfunc{static int}{GetSystemLanguage}{\void}
 | |
| 
 | |
| Tries to detect the user's default language setting.
 | |
| Returns \helpref{wxLanguage}{wxlanguage} value or 
 | |
|  {\bf wxLANGUAGE\_UNKNOWN} if the language-guessing algorithm failed.
 | |
| 
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::Init}\label{wxlocaleinit}
 | |
| 
 | |
| 
 | |
| \func{bool}{Init}{\param{int }{language = wxLANGUAGE\_DEFAULT}, \param{int }{flags =
 | |
|                           wxLOCALE\_LOAD\_DEFAULT | wxLOCALE\_CONV\_ENCODING}}
 | |
| 
 | |
| \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}}
 | |
| 
 | |
| The second form is deprecated, use the first one unless you know what you are
 | |
| doing. 
 | |
| 
 | |
| 
 | |
| \wxheading{Parameters}
 | |
| 
 | |
| \docparam{language}{\helpref{wxLanguage}{wxlanguage} identifier of the locale. 
 | |
| wxLANGUAGE\_DEFAULT has special meaning -- wxLocale will use system's default 
 | |
| language (see \helpref{GetSystemLanguage}{wxlocalegetsystemlanguage}).}
 | |
| 
 | |
| \docparam{flags}{Combination of the following:
 | |
| 
 | |
| 
 | |
| \begin{twocollist}\itemsep=0pt
 | |
| \twocolitem{\windowstyle{wxLOCALE\_LOAD\_DEFAULT}}{Load the message catalog
 | |
| for the given locale containing the translations of standard wxWidgets messages
 | |
| automatically.}
 | |
| \twocolitem{\windowstyle{wxLOCALE\_CONV\_ENCODING}}{Automatically convert message
 | |
| catalogs to platform's default encoding. Note that it will do only basic 
 | |
| conversion between well-known pair like iso8859-1 and windows-1252 or
 | |
| iso8859-2 and windows-1250. See \helpref{Writing non-English applications}{nonenglishoverview} for detailed
 | |
| description of this behaviour. Note that this flag is meaningless in Unicode build.}
 | |
| \end{twocollist}
 | |
| }
 | |
| 
 | |
| \docparam{name}{The name of the locale. Only used in diagnostic messages.}
 | |
| 
 | |
| \docparam{short}{The standard 2 letter locale abbreviation; it is used as the
 | |
| directory prefix when looking for the message catalog files.}
 | |
| 
 | |
| \docparam{locale}{The parameter for the call to setlocale(). Note that it is
 | |
| platform-specific.}
 | |
| 
 | |
| \docparam{bLoadDefault}{May be set to false to prevent loading of the message catalog
 | |
| for the given locale containing the translations of standard wxWidgets messages.
 | |
| This parameter would be rarely used in normal circumstances.}
 | |
| 
 | |
| \docparam{bConvertEncoding}{May be set to true to do automatic conversion of message
 | |
| catalogs to platform's native encoding. Note that it will do only basic 
 | |
| conversion between well-known pair like iso8859-1 and windows-1252 or
 | |
| iso8859-2 and windows-1250. 
 | |
| See \helpref{Writing non-English applications}{nonenglishoverview} for detailed
 | |
| description of this behaviour.}
 | |
| 
 | |
| 
 | |
| The call of this function has several global side effects which you should
 | |
| understand: first of all, the application locale is changed - note that this
 | |
| will affect many of standard C library functions such as printf() or strftime().
 | |
| Second, this wxLocale object becomes the new current global locale for the
 | |
| application and so all subsequent calls to
 | |
| \helpref{wxGetTranslation()}{wxgettranslation} will try to
 | |
| translate the messages using the message catalogs for this locale.
 | |
| 
 | |
| Returns true on success or false if the given locale couldn't be set.
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::IsAvailable}\label{wxlocaleisavailable}
 | |
| 
 | |
| \func{static bool}{IsAvailable}{\param{int }{lang}}
 | |
| 
 | |
| Check whether the operating system and/or C run time environment supports
 | |
| this locale. For example in Windows 2000 and Windows XP, support for many
 | |
| locales is not installed by default. Returns \true if the locale is
 | |
| supported.
 | |
| 
 | |
| The argument \arg{lang} is the wxLanguage identifier. To obtain this for a
 | |
| given a two letter ISO language code, use 
 | |
| \helpref{FindLanguageInfo}{wxlocalefindlanguageinfo} to obtain its
 | |
| wxLanguageInfo structure. See \helpref{AddLanguage}{wxlocaleaddlanguage} for
 | |
| the wxLanguageInfo description.
 | |
| 
 | |
| \newsince{2.7.1}. 
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::IsLoaded}\label{wxlocaleisloaded}
 | |
| 
 | |
| \constfunc{bool}{IsLoaded}{\param{const char* }{domain}}
 | |
| 
 | |
| Check if the given catalog is loaded, and returns true if it is.
 | |
| 
 | |
| According to GNU gettext tradition, each catalog
 | |
| normally corresponds to 'domain' which is more or less the application name.
 | |
| 
 | |
| See also: \helpref{AddCatalog}{wxlocaleaddcatalog}
 | |
| 
 | |
| 
 | |
| \membersection{wxLocale::IsOk}\label{wxlocaleisok}
 | |
| 
 | |
| \constfunc{bool}{IsOk}{\void}
 | |
| 
 | |
| Returns true if the locale could be set successfully.
 | |
| 
 |