From 8cee59b5218956f1cbfda13c10024d3322decd5d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 18 Feb 2008 23:43:29 +0000 Subject: [PATCH] honour locale modifiers such a @valencia in system locale (patch 1896444) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/intl.cpp | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/common/intl.cpp b/src/common/intl.cpp index b224acf2d7..62967e53c7 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -1996,8 +1996,13 @@ void wxLocale::AddCatalogLookupPathPrefix(const wxString& prefix) // for now we don't use the encoding, although we probably should (doing // translations of the msg catalogs on the fly as required) (TODO) // - // we don't use the modifiers neither but we probably should translate - // "euro" into iso885915 + // we need the modified for languages like Valencian: ca_ES@valencia + // though, remember it + wxString modifier; + size_t posModifier = langFull.find_first_of(wxS("@")); + if ( posModifier != wxString::npos ) + modifier = langFull.Mid(posModifier); + size_t posEndLang = langFull.find_first_of(wxS("@.")); if ( posEndLang != wxString::npos ) { @@ -2043,11 +2048,24 @@ void wxLocale::AddCatalogLookupPathPrefix(const wxString& prefix) } // 1. Try to find the language either as is: - for ( i = 0; i < count; i++ ) + // a) With modifier if set + if ( !modifier.empty() ) { - if ( ms_languagesDB->Item(i).CanonicalName == langFull ) + wxString langFullWithModifier = langFull + modifier; + for ( i = 0; i < count; i++ ) { - break; + if ( ms_languagesDB->Item(i).CanonicalName == langFullWithModifier ) + break; + } + } + + // b) Without modifier + if ( modifier.empty() || i == count ) + { + for ( i = 0; i < count; i++ ) + { + if ( ms_languagesDB->Item(i).CanonicalName == langFull ) + break; } } -- 2.45.2