]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/intl.h
wxToolTip for MSW implementation (it has several problems right now, but it
[wxWidgets.git] / include / wx / intl.h
index b0089447ac2192864c1b4abfee0ad184582aaad4..3edc2edb9a31c2bc963324f5855699bc81143c58 100644 (file)
 // ----------------------------------------------------------------------------
 
 // # adjust if necessary
-typedef unsigned char uint8;
-typedef unsigned long uint32;
+typedef unsigned char size_t8;
+typedef unsigned long size_t32;
 
 // ----------------------------------------------------------------------------
 // macros
 // ----------------------------------------------------------------------------
 
 // gettext() style macro
+#ifndef WXINTL_NO_GETTEXT_MACRO
 #define   _(str)  wxGetTranslation(str)
+#endif
 
 // ----------------------------------------------------------------------------
 // forward decls
 // ----------------------------------------------------------------------------
 class WXDLLEXPORT wxLocale;
 class WXDLLEXPORT wxMsgCatalog;
-
-// ----------------------------------------------------------------------------
-// global functions
-// ----------------------------------------------------------------------------
-extern wxLocale* WXDLLEXPORT wxGetLocale();
-inline const char* wxGetTranslation(const char *sz);
+extern WXDLLEXPORT_DATA(wxLocale *) g_pLocale;
 
 // ============================================================================
 // locale support
@@ -62,20 +59,37 @@ class WXDLLEXPORT wxLocale
 {
 public:
   // ctor & dtor
+    // call Init() if you use this ctor
+  wxLocale();
     // the ctor has a side effect of changing current locale
-    wxLocale(const char *szName,              // name (for messages)
-             const char *szShort = NULL,      // dir prefix (for msg files)
-             const char *szLocale = NULL,     // locale (for setlocale)
-             bool bLoadDefault = TRUE);       // preload wxstd.mo?
+  wxLocale(const char *szName,              // name (for messages)
+           const char *szShort = (const char *) NULL,      // dir prefix (for msg files)
+           const char *szLocale = (const char *) NULL,     // locale (for setlocale)
+           bool bLoadDefault = TRUE)        // preload wxstd.mo?
+    { Init(szName, szShort, szLocale, bLoadDefault); }
+    // the same as a function (returns TRUE on success)
+  bool Init(const char *szName,
+            const char *szShort = (const char *) NULL,
+            const char *szLocale = (const char *) NULL,
+            bool bLoadDefault = TRUE);
     // restores old locale
  ~wxLocale();
 
   // returns locale name
   const char *GetLocale() const { return m_strLocale; }
 
+  // add a prefix to the catalog lookup path: the message catalog files will be
+  // looked up under prefix/<lang>/LC_MESSAGES, prefix/LC_MESSAGES and prefix
+  // (in this order).
+  //
+  // This only applies to subsequent invocations of AddCatalog()!
+  static void AddCatalogLookupPathPrefix(const wxString& prefix);
+  
   // add a catalog: it's searched for in standard places (current directory 
-  // first, system one after). It will be used for message lookup by
-  // GetString().
+  // first, system one after), but the you may prepend additional directories to
+  // the search path with AddCatalogLookupPathPrefix().
+  //
+  // The loaded catalog will be used for message lookup by GetString().
   //
   // Returns 'true' if it was successfully loaded
   bool AddCatalog(const char *szDomain);
@@ -94,9 +108,11 @@ public:
   // domains are searched in the last to first order, i.e. catalogs
   // added later override those added before.
   const char *GetString(const char *szOrigString, 
-                        const char *szDomain = NULL) const;
+                        const char *szDomain = (const char *) NULL) const;
 
-private:
+  // Returns the current short name for the locale
+  wxString const &GetName() const { return m_strShort; }
+ private:
   // find catalog by name in a linked list, return NULL if !found
   wxMsgCatalog  *FindCatalog(const char *szDomain) const;
 
@@ -110,50 +126,16 @@ private:
 };
 
 // ----------------------------------------------------------------------------
-// inline functions
+// global functions
 // ----------------------------------------------------------------------------
+WXDLLEXPORT wxLocale* wxGetLocale();
 
 // get the translation of the string in the current locale  
 inline const char *wxGetTranslation(const char *sz)
 {
   wxLocale *pLoc = wxGetLocale();
-  return pLoc == NULL ? sz : pLoc->GetString(sz);
+  return pLoc == (wxLocale *) NULL ? sz : pLoc->GetString(sz);
 }
 
-// ============================================================================
-// optional features
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// wxTString: automatically translates strings to current language
-// ----------------------------------------------------------------------------
-
-// this feature should be enabled by defining WX_USE_AUTOTRANS, if it's not
-// done no automatic translation is performed
-#if  USE_AUTOTRANS
-  class WXDLLEXPORT wxTString
-  {
-  public:
-    // NB: different ctors do different things!
-      // does translation
-    wxTString(const char *sz) : m_pcsz(wxGetTranslation(sz)) { }
-      // no translation
-    wxTString(const wxString& s) : m_pcsz(s) { }
-
-    // NB: no copy ctor, it must be a POD so that we can pass it
-    //     to vararg functions (and it's not needed anyhow)
-    
-    // implicit conversion
-    operator const char *() const { return m_pcsz; }
-
-  private:
-    const char *m_pcsz;
-  };
-#else   //!USE_AUTOTRANS
-  #define wxTString   wxString
-#endif  //USE_AUTOTRANS
-
-#define TRANSSTRING_DEFINED
-  
 #endif
-       // __INTLH__
+       // _WX_INTLH__