| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: intl.h
- // Purpose: interface of wxLocale
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- This is the layout direction stored in wxLanguageInfo and returned by
- wxApp::GetLayoutDirection(), wxWindow::GetLayoutDirection(),
- wxDC::GetLayoutDirection() for RTL (right-to-left) languages support.
- */
- enum wxLayoutDirection
- {
- wxLayout_Default,
- wxLayout_LeftToRight,
- wxLayout_RightToLeft
- };
- /**
- Encapsulates a ::wxLanguage identifier together with OS-specific information
- related to that language.
- @beginWxPerlOnly
- In wxPerl @c Wx::LanguageInfo has only one method:
- - Wx::LanguageInfo->new(language, canonicalName, WinLang, WinSubLang, Description)
- @endWxPerlOnly
- */
- struct wxLanguageInfo
- {
- /// ::wxLanguage id.
- /// It should be greater than @c wxLANGUAGE_USER_DEFINED when defining your own
- /// language info structure.
- int Language;
- /// Canonical name of the language, e.g. @c fr_FR.
- wxString CanonicalName;
- //@{
- /**
- Win32 language identifiers (LANG_xxxx, SUBLANG_xxxx).
- @onlyfor{wxmsw}
- */
- wxUint32 WinLang, WinSublang;
- //@}
- /// Human-readable name of the language.
- wxString Description;
- /// The layout direction used for this language.
- wxLayoutDirection LayoutDirection;
- /// Return the LCID corresponding to this language.
- /// @onlyfor{wxmsw}
- wxUint32 GetLCID() const;
- /// Return the locale name corresponding to this language usable with
- /// @c setlocale() on the current system.
- wxString GetLocaleName() const;
- };
- /**
- The category of locale settings.
- @see wxLocale::GetInfo()
- */
- enum wxLocaleCategory
- {
- /// Number formatting.
- wxLOCALE_CAT_NUMBER,
- /// Date/time formatting.
- wxLOCALE_CAT_DATE,
- /// Monetary values formatting.
- wxLOCALE_CAT_MONEY,
- /**
- Default category for the wxLocaleInfo value.
- This category can be used for values which only make sense for a single
- category, e.g. wxLOCALE_SHORT_DATE_FMT which can only be used with
- wxLOCALE_CAT_DATE. As this is the default value of the second parameter
- of wxLocale::GetInfo(), wxLOCALE_CAT_DATE can be omitted when asking
- for wxLOCALE_SHORT_DATE_FMT value.
- @since 2.9.0
- */
- wxLOCALE_CAT_DEFAULT
- };
- /**
- The values understood by wxLocale::GetInfo().
-
- Note that for the @c wxLOCALE_*_FMT constants (the date and time formats),
- the strings returned by wxLocale::GetInfo() use strftime() or,
- equivalently, wxDateTime::Format() format. If the relevant format
- couldn't be determined, an empty string is returned -- there is no
- fallback value so that the application could determine the best course
- of actions itself in such case.
- All of these values are used with @c wxLOCALE_CAT_DATE in wxLocale::GetInfo() or,
- more typically, with @c wxLOCALE_CAT_DEFAULT as they only apply to a single category.
- */
- enum wxLocaleInfo
- {
- /**
- The thousands separator.
- This value can be used with either wxLOCALE_CAT_NUMBER or
- wxLOCALE_CAT_MONEY categories.
- */
- wxLOCALE_THOUSANDS_SEP,
- /**
- The character used as decimal point.
- This value can be used with either wxLOCALE_CAT_NUMBER or
- wxLOCALE_CAT_MONEY categories.
- */
- wxLOCALE_DECIMAL_POINT,
- /**
- Short date format.
- Notice that short and long date formats may be the same under POSIX
- systems currently but may, and typically are, different under MSW or OS X.
- @since 2.9.0
- */
- wxLOCALE_SHORT_DATE_FMT,
- /**
- Long date format.
- @since 2.9.0
- */
- wxLOCALE_LONG_DATE_FMT,
- /**
- Date and time format.
- @since 2.9.0
- */
- wxLOCALE_DATE_TIME_FMT,
- /**
- Time format.
- @since 2.9.0
- */
- wxLOCALE_TIME_FMT
- };
- /**
- @class wxLocale
- wxLocale class encapsulates all language-dependent settings and is a
- generalization of the C locale concept.
- In wxWidgets this class manages current locale. It also initializes and
- activates wxTranslations object that manages message catalogs.
- For a list of the supported languages, please see ::wxLanguage enum values.
- These constants may be used to specify the language in wxLocale::Init and
- are returned by wxLocale::GetSystemLanguage.
- @beginWxPerlOnly
- In wxPerl you can't use the '_' function name, so
- the @c Wx::Locale module can export the @c gettext and
- @c gettext_noop under any given name.
- @code
- # 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" ) );
- @endcode
- 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:
- @code
- use Wx::Locale 'gettext' = 't',
- 'gettext_noop' = 'gettext_noop';
- # ...
- # use the functions
- print t( "Panic!!" );
- # ...
- @endcode
- @endWxPerlOnly
- @library{wxbase}
- @category{cfg}
- @see @ref overview_i18n, @ref page_samples_internat, wxXLocale, wxTranslations
- */
- class wxLocale
- {
- public:
- /**
- This is the default constructor and it does nothing to initialize the object:
- Init() must be used to do that.
- */
- wxLocale();
- /**
- See Init() for parameters description.
- */
- wxLocale(int language, int flags = wxLOCALE_LOAD_DEFAULT);
- /**
- See Init() 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.
- */
- wxLocale(const wxString& name,
- const wxString& shortName = wxEmptyString,
- const wxString& locale = wxEmptyString,
- bool bLoadDefault = true);
- /**
- The destructor, like the constructor, also has global side effects: the
- previously set locale is restored and so the changes described in
- Init() documentation are rolled back.
- */
- virtual ~wxLocale();
- /**
- Calls wxTranslations::AddCatalog(const wxString&).
- */
- bool AddCatalog(const wxString& domain);
- /**
- Calls wxTranslations::AddCatalog(const wxString&, wxLanguage).
- */
- bool AddCatalog(const wxString& domain, wxLanguage msgIdLanguage);
- /**
- Calls wxTranslations::AddCatalog(const wxString&, wxLanguage, const wxString&).
- */
- bool AddCatalog(const wxString& domain, wxLanguage msgIdLanguage,
- const wxString& msgIdCharset);
- /**
- Calls wxFileTranslationsLoader::AddCatalogLookupPathPrefix().
- */
- static void AddCatalogLookupPathPrefix(const wxString& prefix);
- /**
- Adds custom, user-defined language to the database of known languages.
- This database is used in conjunction with the first form of Init().
- */
- static void AddLanguage(const wxLanguageInfo& info);
- /**
- 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 @NULL if this language
- is unknown. Note that even if the returned pointer is valid, the caller
- should @e not delete it.
- @see GetLanguageInfo()
- */
- static const wxLanguageInfo* FindLanguageInfo(const wxString& locale);
- /**
- 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 GetSysName().
- */
- wxString GetCanonicalName() const;
- /**
- Calls wxTranslations::GetHeaderValue().
- */
- wxString GetHeaderValue(const wxString& header,
- const wxString& domain = wxEmptyString) const;
- /**
- Returns the ::wxLanguage constant of current language.
- Note that you can call this function only if you used the form of
- Init() that takes ::wxLanguage argument.
- */
- int GetLanguage() const;
- /**
- Returns a pointer to wxLanguageInfo structure containing information about
- the given language or @NULL if this language is unknown. Note that even if
- the returned pointer is valid, the caller should @e not delete it.
- See AddLanguage() for the wxLanguageInfo description.
- As with Init(), @c wxLANGUAGE_DEFAULT has the special meaning if passed
- as an argument to this function and in this case the result of
- GetSystemLanguage() is used.
- */
- static const wxLanguageInfo* GetLanguageInfo(int lang);
- /**
- Returns English name of the given language or empty string if this
- language is unknown.
- See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
- */
- static wxString GetLanguageName(int lang);
- /**
- Returns canonical name (see GetCanonicalName()) of the given language
- or empty string if this language is unknown.
- See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
- @since 2.9.1
- */
- static wxString GetLanguageCanonicalName(int lang);
- /**
- Returns the locale name as passed to the constructor or Init().
- This is a full, human-readable name, e.g. "English" or "French".
- */
- const wxString& GetLocale() const;
- /**
- Returns the current short name for the locale (as given to the constructor or
- the Init() function).
- */
- const wxString& GetName() const;
- /**
- Calls wxGetTranslation(const wxString&, const wxString&).
- */
- virtual const wxString& GetString(const wxString& origString,
- const wxString& domain = wxEmptyString) const;
- /**
- Calls wxGetTranslation(const wxString&, const wxString&, unsigned, const wxString&).
- */
- virtual const wxString& GetString(const wxString& origString,
- const wxString& origString2, unsigned n,
- const wxString& domain = wxEmptyString) const;
- /**
- Returns current platform-specific locale name as passed to setlocale().
- Compare GetCanonicalName().
- */
- wxString GetSysName() const;
- /**
- Tries to detect the user's default font encoding.
- Returns wxFontEncoding() value or @c wxFONTENCODING_SYSTEM if it
- couldn't be determined.
- */
- static wxFontEncoding GetSystemEncoding();
- /**
- 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 GetSystemEncoding() instead.
- Returns a user-readable string value or an empty string if it couldn't be
- determined.
- */
- static wxString GetSystemEncodingName();
- /**
- Tries to detect the user's default locale setting.
- Returns the ::wxLanguage value or @c wxLANGUAGE_UNKNOWN if the language-guessing
- algorithm failed.
- @note This function works with @em locales and returns the user's default
- locale. This may be, and usually is, the same as their preferred UI
- language, but it's not the same thing. Use wxTranslation to obtain
- @em language information.
- @see wxTranslations::GetBestTranslation().
- */
- static int GetSystemLanguage();
- /**
- Get the values of the given locale-dependent datum.
- This function returns the value of the locale-specific option specified
- by the given @a index.
- @param index
- One of the elements of wxLocaleInfo enum.
- @param cat
- The category to use with the given index or wxLOCALE_CAT_DEFAULT if
- the index can only apply to a single category.
- @return
- The option value or empty string if the function failed.
- */
- static wxString GetInfo(wxLocaleInfo index,
- wxLocaleCategory cat = wxLOCALE_CAT_DEFAULT);
- /**
- Initializes the wxLocale instance.
- 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.
- @param language
- ::wxLanguage identifier of the locale.
- @c wxLANGUAGE_DEFAULT has special meaning -- wxLocale will use system's
- default language (see GetSystemLanguage()).
- @param flags
- Combination of the following:
- - wxLOCALE_LOAD_DEFAULT: Load the message catalog for the given locale
- containing the translations of standard wxWidgets messages
- automatically.
- - wxLOCALE_DONT_LOAD_DEFAULT: Negation of wxLOCALE_LOAD_DEFAULT.
- @return @true on success or @false if the given locale couldn't be set.
- */
- bool Init(int language = wxLANGUAGE_DEFAULT,
- int flags = wxLOCALE_LOAD_DEFAULT);
- /**
- @deprecated
- This form is deprecated, use the other one unless you know what you are doing.
- @param name
- The name of the locale. Only used in diagnostic messages.
- @param shortName
- The standard 2 letter locale abbreviation; it is used as the
- directory prefix when looking for the message catalog files.
- @param locale
- The parameter for the call to setlocale().
- Note that it is platform-specific.
- @param 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.
- */
- bool Init(const wxString& name, const wxString& shortName = wxEmptyString,
- const wxString& locale = wxEmptyString, bool bLoadDefault = true);
- /**
- 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 @a lang is the ::wxLanguage identifier. To obtain this for a
- given a two letter ISO language code, use FindLanguageInfo() to obtain its
- wxLanguageInfo structure.
- See AddLanguage() for the wxLanguageInfo description.
- @since 2.7.1.
- */
- static bool IsAvailable(int lang);
- /**
- Calls wxTranslations::IsLoaded().
- */
- bool IsLoaded(const wxString& domain) const;
- /**
- Returns @true if the locale could be set successfully.
- */
- bool IsOk() const;
- };
|