]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/intl.h
Apply patch (plus some additional changes) upgrading Scintilla to version 2.03. ...
[wxWidgets.git] / interface / wx / intl.h
index 5339b0617d0a04eae19dbdadeaa52dd6c4c860a9..b0e0567fcb11e2c5e2a650c078c6758d7b374fc5 100644 (file)
@@ -48,6 +48,7 @@ enum wxLanguage
     wxLANGUAGE_ARABIC_YEMEN,
     wxLANGUAGE_ARMENIAN,
     wxLANGUAGE_ASSAMESE,
+    wxLANGUAGE_ASTURIAN,
     wxLANGUAGE_AYMARA,
     wxLANGUAGE_AZERI,
     wxLANGUAGE_AZERI_CYRILLIC,
@@ -263,32 +264,155 @@ enum wxLanguage
 
 
 /**
-    wxLanguageInfo: encapsulates wxLanguage to OS native lang.desc.
-                    translation information
+    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 indentifier 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 WXDLLIMPEXP_BASE wxLanguageInfo
 {
-    /// wxLanguage id. It should be greater than wxLANGUAGE_USER_DEFINED.
+    /// ::wxLanguage id.
+    /// It should be greater than @c wxLANGUAGE_USER_DEFINED when defining your own
+    /// language info structure.
     int Language;
-    wxString CanonicalName;         //!< Canonical name, e.g. fr_FR.
-#ifdef __WXMSW__
-    wxUint32 WinLang,               //!< Win32 language identifiers (LANG_xxxx, SUBLANG_xxxx).
-             WinSublang;
-#endif // __WXMSW__
-    wxString Description;           //!< Human-readable name of the 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;
 
-#ifdef __WXMSW__
     /// Return the LCID corresponding to this language.
+    /// @onlyfor{wxmsw}
     wxUint32 GetLCID() const;
-#endif // __WXMSW__
 
     /// Return the locale name corresponding to this language usable with
-    /// setlocale() on the current system
+    /// @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
 
@@ -339,9 +463,9 @@ struct WXDLLIMPEXP_BASE wxLanguageInfo
     @endWxPerlOnly
 
     @library{wxbase}
-    @category{misc}
+    @category{cfg}
 
-    @see @ref overview_internationalization, @ref page_samples_internat, wxXLocale
+    @see @ref overview_i18n, @ref page_samples_internat, wxXLocale
 */
 class wxLocale
 {
@@ -381,7 +505,6 @@ public:
     */
     virtual ~wxLocale();
 
-    //@{
     /**
         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
@@ -390,33 +513,50 @@ public:
         All loaded catalogs will be used for message lookup by GetString() 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,
-        @a msgIdLanguage and @a msgIdCharset.
-
-        @a msgIdLanguage specifies the language of "msgid" strings in source code
-        (i.e. arguments to GetString(), wxGetTranslation() and the _() 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.
-
-        @a 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
+        In this overload, @c 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 @ref overview_nonenglish.
+
+        @return
+            @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).
     */
     bool AddCatalog(const wxString& domain);
+
+    /**
+        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 AddCatalogLookupPathPrefix().
+
+        All loaded catalogs will be used for message lookup by GetString() for
+        the current locale.
+
+        This overload takes two additional arguments, @a msgIdLanguage and @a msgIdCharset.
+
+        @param domain
+            The catalog domain to add.
+
+        @param msgIdLanguage
+            Specifies the language of "msgid" strings in source code
+            (i.e. arguments to GetString(), wxGetTranslation() and the _() 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.
+
+        @param 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.
+
+        @return
+            @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).
+    */
     bool AddCatalog(const wxString& domain, wxLanguage msgIdLanguage,
                     const wxString& msgIdCharset);
-    //@}
 
     /**
         Add a prefix to the catalog lookup path: the message catalog files will
@@ -445,7 +585,7 @@ public:
 
         @see GetLanguageInfo()
     */
-    static wxLanguageInfo* FindLanguageInfo(const wxString& locale);
+    static const wxLanguageInfo* FindLanguageInfo(const wxString& locale);
 
     /**
         Returns the canonical form of current locale name. Canonical form is the
@@ -469,10 +609,10 @@ public:
                             const wxString& domain = wxEmptyString) const;
 
     /**
-        Returns wxLanguage() constant of current language.
+        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.
+        Init() that takes ::wxLanguage argument.
     */
     int GetLanguage() const;
 
@@ -486,7 +626,7 @@ public:
         as an argument to this function and in this case the result of
         GetSystemLanguage() is used.
     */
-    static wxLanguageInfo* GetLanguageInfo(int lang) const;
+    static const wxLanguageInfo* GetLanguageInfo(int lang);
 
     /**
         Returns English name of the given language or empty string if this
@@ -494,7 +634,7 @@ public:
 
         See GetLanguageInfo() for a remark about special meaning of @c wxLANGUAGE_DEFAULT.
     */
-    static wxString GetLanguageName(int lang) const;
+    static wxString GetLanguageName(int lang);
 
     /**
         Returns the locale name as passed to the constructor or Init().
@@ -520,8 +660,8 @@ public:
         @remarks Domains are searched in the last to first order, i.e. catalogs
                  added later override those added before.
     */
-    const wxString& GetString(const wxString& origString,
-                              const wxString& domain = wxEmptyString) const;
+    virtual const wxString& GetString(const wxString& origString,
+                                      const wxString& domain = wxEmptyString) const;
 
     /**
         Retrieves the translation for a string in all loaded domains unless the @a domain
@@ -550,10 +690,9 @@ public:
         @remarks Domains are searched in the last to first order, i.e. catalogs
                  added later override those added before.
     */
-    const wxString& GetString(const wxString& origString,
-                              const wxString& origString2,
-                              size_t n,
-                              const wxString& domain = wxEmptyString) const;
+    virtual const wxString& GetString(const wxString& origString,
+                                      const wxString& origString2, size_t n,
+                                      const wxString& domain = wxEmptyString) const;
 
     /**
         Returns current platform-specific locale name as passed to setlocale().
@@ -566,7 +705,7 @@ public:
         Returns wxFontEncoding() value or @c wxFONTENCODING_SYSTEM if it
         couldn't be determined.
     */
-    static wxFontEncoding GetSystemEncoding() const;
+    static wxFontEncoding GetSystemEncoding();
 
     /**
         Tries to detect the name of the user's default font encoding.
@@ -576,14 +715,32 @@ public:
         Returns a user-readable string value or an empty string if it couldn't be
         determined.
     */
-    static wxString GetSystemEncodingName() const;
+    static wxString GetSystemEncodingName();
 
     /**
         Tries to detect the user's default language setting.
-        Returns wxLanguage value or @b wxLANGUAGE_UNKNOWN if the language-guessing
+
+        Returns the ::wxLanguage value or @c wxLANGUAGE_UNKNOWN if the language-guessing
         algorithm failed.
     */
-    static int GetSystemLanguage() const;
+    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.
@@ -597,7 +754,7 @@ public:
         try to translate the messages using the message catalogs for this locale.
 
         @param language
-            wxLanguage identifier of the locale.
+            ::wxLanguage identifier of the locale.
             @c wxLANGUAGE_DEFAULT has special meaning -- wxLocale will use system's
             default language (see GetSystemLanguage()).
         @param flags
@@ -611,6 +768,16 @@ public:
               iso8859-2 and windows-1250. See @ref overview_nonenglish for
               detailed description of this behaviour.
               Note that this flag is meaningless in Unicode build.
+
+        @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 | wxLOCALE_CONV_ENCODING);
+
+    /**
+        @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 short
@@ -629,20 +796,9 @@ public:
             between well-known pair like iso8859-1 and windows-1252 or iso8859-2
             and windows-1250.
             See @ref overview_nonenglish for detailed description of this behaviour.
-
-        @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 | wxLOCALE_CONV_ENCODING);
-
-    /**
-        @deprecated
-        This form is deprecated, use the other one unless you know what you are doing.
     */
-    bool Init(const wxString& name,
-              const wxString& short = wxEmptyString,
-              const wxString& locale = wxEmptyString,
-              bool bLoadDefault = true,
+    bool Init(const wxString& name, const wxString& short = wxEmptyString,
+              const wxString& locale = wxEmptyString, bool bLoadDefault = true,
               bool bConvertEncoding = false);
 
     /**
@@ -650,11 +806,11 @@ public:
         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.
+
+        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.
     */
@@ -668,7 +824,7 @@ public:
 
         @see AddCatalog()
     */
-    bool IsLoaded(const char* domain) const;
+    bool IsLoaded(const wxString& domain) const;
 
     /**
         Returns @true if the locale could be set successfully.
@@ -683,7 +839,7 @@ public:
 // Global functions/macros
 // ============================================================================
 
-/** @ingroup group_funcmacro_string */
+/** @addtogroup group_funcmacro_string */
 //@{
 
 /**