]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/intl.cpp
Implemented (for GTK+) and tested dataview_context_menu event
[wxWidgets.git] / src / common / intl.cpp
index a1e7d4d0b8441aa868765385b6abd643e2f3bbb7..9ebb5edcd56ef0253af98c22793b8cf2fb9ec82f 100644 (file)
@@ -76,7 +76,7 @@
     #include "wx/mac/private.h"  // includes mac headers
 #endif
 
-#if defined(__WXOSX__)
+#if defined(__DARWIN__)
        #include "wx/mac/corefoundation/cfref.h"
        #include <CoreFoundation/CFLocale.h>
        #include "wx/mac/corefoundation/cfstring.h"
@@ -1036,8 +1036,7 @@ wxString GetMsgCatalogSubdirs(const wxString& prefix, const wxString& lang)
     //    breaking apps after they are recompiled against the latest wx
     // b) it makes it possible to package app's support files in the same
     //    way on all target platforms
-    wxString pathPrefix;
-    pathPrefix << prefix << wxFILE_SEP_PATH << lang;
+    const wxString pathPrefix = wxFileName(prefix, lang).GetFullPath();
 
     wxString searchPath;
     searchPath.reserve(4*pathPrefix.length());
@@ -1931,9 +1930,20 @@ void wxLocale::AddCatalogLookupPathPrefix(const wxString& prefix)
     size_t i = 0,
            count = ms_languagesDB->GetCount();
 
-#if defined(__UNIX__) && !defined(__WXMAC__)
+#if defined(__UNIX__)
     // first get the string identifying the language from the environment
     wxString langFull;
+#ifdef __WXMAC__
+    wxCFRef<CFLocaleRef> userLocaleRef(CFLocaleCopyCurrent());
+    
+    // because the locale identifier (kCFLocaleIdentifier) is formatted a little bit differently, eg 
+    // az_Cyrl_AZ@calendar=buddhist;currency=JPY we just recreate the base info as expected by wx here
+    
+    wxCFStringRef str(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleLanguageCode)));
+    langFull = str.AsString()+"_";
+    str.reset(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode)));
+    langFull += str.AsString();
+#else
     if (!wxGetEnv(wxT("LC_ALL"), &langFull) &&
         !wxGetEnv(wxT("LC_MESSAGES"), &langFull) &&
         !wxGetEnv(wxT("LANG"), &langFull))
@@ -1947,6 +1957,7 @@ void wxLocale::AddCatalogLookupPathPrefix(const wxString& prefix)
         // default C locale is English too
         return wxLANGUAGE_ENGLISH_US;
     }
+#endif
 
     // the language string has the following form
     //
@@ -2059,292 +2070,6 @@ void wxLocale::AddCatalogLookupPathPrefix(const wxString& prefix)
             }
         }
     }
-#elif defined(__WXMAC__)
-    const wxChar * lc = NULL ;
-    long lang = GetScriptVariable( smSystemScript, smScriptLang) ;
-    switch( GetScriptManagerVariable( smRegionCode ) ) {
-      case verUS :
-        lc = wxT("en_US") ;
-        break ;
-      case verFrance :
-        lc = wxT("fr_FR") ;
-        break ;
-      case verBritain :
-        lc = wxT("en_GB") ;
-        break ;
-      case verGermany :
-        lc = wxT("de_DE") ;
-        break ;
-      case verItaly :
-        lc = wxT("it_IT") ;
-        break ;
-      case verNetherlands :
-        lc = wxT("nl_NL") ;
-        break ;
-      case verFlemish :
-        lc = wxT("nl_BE") ;
-        break ;
-      case verSweden :
-        lc = wxT("sv_SE" );
-        break ;
-      case verSpain :
-        lc = wxT("es_ES" );
-        break ;
-      case verDenmark :
-        lc = wxT("da_DK") ;
-        break ;
-      case verPortugal :
-        lc = wxT("pt_PT") ;
-        break ;
-      case verFrCanada:
-        lc = wxT("fr_CA") ;
-        break ;
-      case verNorway:
-        lc = wxT("nb_NO") ;
-        break ;
-      case verIsrael:
-        lc = wxT("iw_IL") ;
-        break ;
-      case verJapan:
-        lc = wxT("ja_JP") ;
-        break ;
-      case verAustralia:
-        lc = wxT("en_AU") ;
-        break ;
-      case verArabic:
-        lc = wxT("ar") ;
-        break ;
-      case verFinland:
-        lc = wxT("fi_FI") ;
-        break ;
-      case verFrSwiss:
-        lc = wxT("fr_CH") ;
-        break ;
-      case verGrSwiss:
-        lc = wxT("de_CH") ;
-        break ;
-      case verGreece:
-        lc = wxT("el_GR") ;
-        break ;
-      case verIceland:
-        lc = wxT("is_IS") ;
-        break ;
-      case verMalta:
-        lc = wxT("mt_MT") ;
-        break ;
-      case verCyprus:
-      // _CY is not part of wx, so we have to translate according to the system language
-        if ( lang == langGreek ) {
-          lc = wxT("el_GR") ;
-        }
-        else if ( lang == langTurkish ) {
-          lc = wxT("tr_TR") ;
-        }
-        break ;
-      case verTurkey:
-        lc = wxT("tr_TR") ;
-        break ;
-      case verYugoCroatian:
-        lc = wxT("hr_HR") ;
-        break ;
-      case verIndiaHindi:
-        lc = wxT("hi_IN") ;
-        break ;
-      case verPakistanUrdu:
-        lc = wxT("ur_PK") ;
-        break ;
-      case verTurkishModified:
-        lc = wxT("tr_TR") ;
-        break ;
-      case verItalianSwiss:
-        lc = wxT("it_CH") ;
-        break ;
-      case verInternational:
-        lc = wxT("en") ;
-        break ;
-      case verRomania:
-        lc = wxT("ro_RO") ;
-        break ;
-      case verGreecePoly:
-        lc = wxT("el_GR") ;
-        break ;
-      case verLithuania:
-        lc = wxT("lt_LT") ;
-        break ;
-      case verPoland:
-        lc = wxT("pl_PL") ;
-        break ;
-      case verMagyar :
-      case verHungary:
-        lc = wxT("hu_HU") ;
-        break ;
-      case verEstonia:
-        lc = wxT("et_EE") ;
-        break ;
-      case verLatvia:
-        lc = wxT("lv_LV") ;
-        break ;
-      case verSami:
-        // not known
-        break ;
-      case verFaroeIsl:
-        lc = wxT("fo_FO") ;
-        break ;
-      case verIran:
-        lc = wxT("fa_IR") ;
-        break ;
-      case verRussia:
-        lc = wxT("ru_RU") ;
-        break ;
-       case verIreland:
-        lc = wxT("ga_IE") ;
-        break ;
-      case verKorea:
-        lc = wxT("ko_KR") ;
-        break ;
-      case verChina:
-        lc = wxT("zh_CN") ;
-        break ;
-      case verTaiwan:
-        lc = wxT("zh_TW") ;
-        break ;
-      case verThailand:
-        lc = wxT("th_TH") ;
-        break ;
-      case verCzech:
-        lc = wxT("cs_CZ") ;
-        break ;
-      case verSlovak:
-        lc = wxT("sk_SK") ;
-        break ;
-      case verBengali:
-        lc = wxT("bn") ;
-        break ;
-      case verByeloRussian:
-        lc = wxT("be_BY") ;
-        break ;
-      case verUkraine:
-        lc = wxT("uk_UA") ;
-        break ;
-      case verGreeceAlt:
-        lc = wxT("el_GR") ;
-        break ;
-      case verSerbian:
-        lc = wxT("sr_YU") ;
-        break ;
-      case verSlovenian:
-        lc = wxT("sl_SI") ;
-        break ;
-      case verMacedonian:
-        lc = wxT("mk_MK") ;
-        break ;
-      case verCroatia:
-        lc = wxT("hr_HR") ;
-        break ;
-      case verBrazil:
-        lc = wxT("pt_BR ") ;
-        break ;
-      case verBulgaria:
-        lc = wxT("bg_BG") ;
-        break ;
-      case verCatalonia:
-        lc = wxT("ca_ES") ;
-        break ;
-      case verScottishGaelic:
-        lc = wxT("gd") ;
-        break ;
-      case verManxGaelic:
-        lc = wxT("gv") ;
-        break ;
-      case verBreton:
-        lc = wxT("br") ;
-        break ;
-      case verNunavut:
-        lc = wxT("iu_CA") ;
-        break ;
-      case verWelsh:
-        lc = wxT("cy") ;
-        break ;
-      case verIrishGaelicScript:
-        lc = wxT("ga_IE") ;
-        break ;
-      case verEngCanada:
-        lc = wxT("en_CA") ;
-        break ;
-      case verBhutan:
-        lc = wxT("dz_BT") ;
-        break ;
-      case verArmenian:
-        lc = wxT("hy_AM") ;
-        break ;
-      case verGeorgian:
-        lc = wxT("ka_GE") ;
-        break ;
-      case verSpLatinAmerica:
-        lc = wxT("es_AR") ;
-        break ;
-      case verTonga:
-        lc = wxT("to_TO" );
-        break ;
-      case verFrenchUniversal:
-        lc = wxT("fr_FR") ;
-        break ;
-      case verAustria:
-        lc = wxT("de_AT") ;
-        break ;
-      case verGujarati:
-        lc = wxT("gu_IN") ;
-        break ;
-      case verPunjabi:
-        lc = wxT("pa") ;
-        break ;
-      case verIndiaUrdu:
-        lc = wxT("ur_IN") ;
-        break ;
-      case verVietnam:
-        lc = wxT("vi_VN") ;
-        break ;
-      case verFrBelgium:
-        lc = wxT("fr_BE") ;
-        break ;
-      case verUzbek:
-        lc = wxT("uz_UZ") ;
-        break ;
-      case verSingapore:
-        lc = wxT("zh_SG") ;
-        break ;
-      case verNynorsk:
-        lc = wxT("nn_NO") ;
-        break ;
-      case verAfrikaans:
-        lc = wxT("af_ZA") ;
-        break ;
-      case verEsperanto:
-        lc = wxT("eo") ;
-        break ;
-      case verMarathi:
-        lc = wxT("mr_IN") ;
-        break ;
-      case verTibetan:
-        lc = wxT("bo") ;
-        break ;
-      case verNepal:
-        lc = wxT("ne_NP") ;
-        break ;
-      case verGreenland:
-        lc = wxT("kl_GL") ;
-        break ;
-      default :
-        break ;
-   }
-  for ( i = 0; i < count; i++ )
-  {
-      if ( ms_languagesDB->Item(i).CanonicalName == lc )
-      {
-          break;
-      }
-  }
-
 #elif defined(__WIN32__)
     LCID lcid = GetUserDefaultLCID();
     if ( lcid != 0 )
@@ -2902,7 +2627,7 @@ wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory WXUNUSED(cat))
     return str;
 }
 
-#elif defined(__WXOSX__)
+#elif defined(__DARWIN__)
 
 /* static */
 wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory WXUNUSED(cat))
@@ -2923,12 +2648,12 @@ wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory WXUNUSED(cat))
             wxFAIL_MSG( "Unknown locale info" );
     }
 
-    wxMacCFStringHolder
+    wxCFStringRef
         str(CFStringCreateCopy(NULL, static_cast<CFStringRef>(cfstr)));
     return str.AsString();
 }
 
-#else // !__WXMSW__ && !__WXMAC__
+#else // !__WXMSW__ && !__DARWIN__
 
 /* static */
 wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat)