]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/translation.h
Minor corrections to wxFont size-changing methods.
[wxWidgets.git] / interface / wx / translation.h
index cec4db149acb6271b3e3da0eda2cd7a213a6c2f4..fc1c35a2299ba985c6df385f6539dcf1d2835c24 100644 (file)
@@ -58,7 +58,7 @@ public:
 
         Deletes previous loader and takes ownership of @a loader.
 
-        @see wxTranslationsLoader, wxFileTranslationsLoader
+        @see wxTranslationsLoader, wxFileTranslationsLoader, wxResourceTranslationsLoader
      */
     void SetLoader(wxTranslationsLoader *loader);
 
@@ -169,20 +169,6 @@ public:
      */
     bool IsLoaded(const wxString& domain) const;
 
-    /**
-        Directly loads catalog from a file.
-
-        It is caller's responsibility to ensure that the catalog contains
-        correct language. This function is primarily intended for
-        wxTranslationsLoader implementations.
-
-        @param filename  Name of the MO file to load.
-        @param domain    Domain to load the translations into (typically
-                         matches file's basename).
-     */
-    bool LoadCatalogFile(const wxString& filename,
-                         const wxString& domain = wxEmptyString);
-
     /**
         Retrieves the translation for a string in all loaded domains unless the @a domain
         parameter is specified (and then only this catalog/domain is searched).
@@ -226,7 +212,7 @@ public:
     */
     const wxString& GetString(const wxString& origString,
                               const wxString& origString2,
-                              size_t n,
+                              unsigned n,
                               const wxString& domain = wxEmptyString) const;
 
     /**
@@ -251,7 +237,7 @@ public:
 
     Implementations must implement the LoadCatalog() method.
 
-    @see wxFileTranslationsLoader
+    @see wxFileTranslationsLoader, wxResourceTranslationsLoader
 
     @since 2.9.1
  */
@@ -264,10 +250,10 @@ public:
     /**
         Called to load requested catalog.
 
-        If the catalog is found, LoadCatalog() should call LoadCatalogFile()
-        on @a translations to add the translation.
+        If the catalog is found, LoadCatalog() should create wxMsgCatalog
+        instance with its data and return it. The caller will take ownership
+        of the catalog.
 
-        @param translations  wxTranslations requesting loading.
         @param domain        Domain to load.
         @param lang          Language to look for. This is "canonical name"
                              (see wxLocale::GetCanonicalName()), i.e. ISO 639
@@ -275,10 +261,10 @@ public:
                              additional modifiers (e.g. "fr", "en_GB" or
                              "ca@valencia").
 
-        @return @true on successful load, @false otherwise
+        @return Loaded catalog or NULL on failure.
      */
-    virtual bool LoadCatalog(wxTranslations *translations,
-                             const wxString& domain, const wxString& lang) = 0;
+    virtual wxMsgCatalog *LoadCatalog(const wxString& domain,
+                                      const wxString& lang) = 0;
 };
 
 /**
@@ -308,6 +294,88 @@ public:
     static void AddCatalogLookupPathPrefix(const wxString& prefix);
 };
 
+/**
+    This loader makes it possible to load translations from Windows
+    resources.
+
+    If you wish to store translation MO files in resources, you have to
+    enable this loader before calling wxTranslations::AddCatalog() or
+    wxLocale::AddCatalog():
+
+    @code
+    wxTranslations::Get()->SetLoader(new wxResourceTranslationsLoader);
+    @endcode
+
+    Translations are stored in resources as compiled MO files, with type
+    set to "MOFILE" (unless you override GetResourceType()) and name
+    consisting of the domain, followed by underscore, followed by language
+    identification. For example, the relevant part of .rc file would look
+    like this:
+
+    @code
+    myapp_de     MOFILE   "catalogs/de/myapp.mo"
+    myapp_fr     MOFILE   "catalogs/fr/myapp.mo"
+    myapp_en_GB  MOFILE   "catalogs/en_GB/myapp.mo"
+    @endcode
+
+    This class is only available on Windows.
+
+    @since 2.9.1
+ */
+class wxResourceTranslationsLoader : public wxTranslationsLoader
+{
+protected:
+    /**
+        Returns resource type to use for translations.
+
+        Default type is "MOFILE".
+     */
+    virtual wxString GetResourceType() const;
+
+    /**
+        Returns handle of the module to load resources from.
+
+        By default, the main executable is used.
+     */
+    virtual WXHINSTANCE GetModule() const;
+};
+
+
+/**
+    Represents a loaded translations message catalog.
+
+    This class should only be used directly by wxTranslationsLoader
+    implementations.
+
+    @since 2.9.1
+ */
+class wxMsgCatalog
+{
+public:
+    /**
+        Creates catalog loaded from a MO file.
+
+        @param filename  Path to the MO file to load.
+        @param domain    Catalog's domain. This typically matches
+                         the @a filename.
+
+        @return Successfully loaded catalog or NULL on failure.
+     */
+    static wxMsgCatalog *CreateFromFile(const wxString& filename,
+                                        const wxString& domain);
+
+    /**
+        Creates catalog from MO file data in memory buffer.
+
+        @param data      Data in MO file format.
+        @param domain    Catalog's domain. This typically matches
+                         the @a filename.
+
+        @return Successfully loaded catalog or NULL on failure.
+     */
+    static wxMsgCatalog *CreateFromData(const wxScopedCharBuffer& data,
+                                        const wxString& domain);
+};
 
 
 // ============================================================================
@@ -389,7 +457,7 @@ public:
           extracted to the message catalog. Instead, use the _() and wxPLURAL()
           macro for all literal strings.
 
-    @see wxGetTranslation(const wxString&, const wxString&, size_t, const wxString&)
+    @see wxGetTranslation(const wxString&, const wxString&, unsigned, const wxString&)
 
     @header{wx/intl.h}
 */
@@ -419,7 +487,7 @@ const wxString& wxGetTranslation(const wxString& string,
     @header{wx/intl.h}
 */
 const wxString& wxGetTranslation(const wxString& string,
-                                 const wxString& plural, size_t n,
+                                 const wxString& plural, unsigned n,
                                  const wxString& domain = wxEmptyString);
 
 /**