i18npool/inc/i18npool/languagetag.hxx | 29 ++++++++++++++++ i18npool/source/languagetag/languagetag.cxx | 48 ++++++++++++++++++++++++++++ sal/inc/sal/log-areas.dox | 7 +++- svx/inc/svx/svdglob.hxx | 13 ------- vcl/generic/fontmanager/fontconfig.cxx | 3 + 5 files changed, 87 insertions(+), 13 deletions(-)
New commits: commit 4090979ce0502d808b540305c89030fb9b59eeb9 Author: Eike Rathke <er...@redhat.com> Date: Mon Feb 18 17:49:41 2013 +0100 ditched class SdrResId and some forward leftovers Change-Id: I700f6c860ad41c6ab3426d1988631f1c5bf30533 diff --git a/svx/inc/svx/svdglob.hxx b/svx/inc/svx/svdglob.hxx index 1f8b9a1..dbec676 100644 --- a/svx/inc/svx/svdglob.hxx +++ b/svx/inc/svx/svdglob.hxx @@ -20,7 +20,7 @@ #ifndef _SVDGLOB_HXX #define _SVDGLOB_HXX -#include <tools/resid.hxx> +#include <sal/config.h> #include <tools/string.hxx> #include <svx/svxdllapi.h> @@ -29,22 +29,11 @@ // forward declaration //************************************************************ -class Link; class ResMgr; -class SdrEngineDefaults; - -//************************************************************ -// Defines -//************************************************************ // Get the resource manager for the app ResMgr* ImpGetResMgr(); -class SdrResId: ResId { -public: - SdrResId(sal_uInt16 nId): ResId(nId,*ImpGetResMgr()) {} -}; - // ResourceCache for frequently used strings. // Global string resources with the IDs from // SDR_StringCacheBegin (256) to SDR_StringCacheEnd commit 8d23b47454043122b61b2e1dc08d84ee09e1a081 Author: Eike Rathke <er...@redhat.com> Date: Sat Feb 16 02:29:18 2013 +0100 added LanguageTag::getFallbackStrings() Change-Id: Ia597cb184e0402e776cde50967541f008e22d4c9 diff --git a/i18npool/inc/i18npool/languagetag.hxx b/i18npool/inc/i18npool/languagetag.hxx index 3394c1b..324fcd3 100644 --- a/i18npool/inc/i18npool/languagetag.hxx +++ b/i18npool/inc/i18npool/languagetag.hxx @@ -16,6 +16,8 @@ #include <i18npool/i18npooldllapi.h> #include <i18npool/lang.h> +#include <vector> + typedef struct _rtl_Locale rtl_Locale; // as in rtl/locale.h @@ -212,6 +214,25 @@ public: */ LanguageTag & makeFallback(); + /** Return a vector of fall-back strings. + + In order: + full BCP 47 tag, same as getBcp47() + lll-Ssss-CC + lll-Ssss + lll-CC + lll + + Only strings that differ from a higher order are included, for example + if there is no script the elements will be bcp47, lll-CC, lll; if the + bcp47 string is identical to lll-CC then only lll-CC, lll. + + Note that lll is only ISO 639-1/2 alpha code and CC is only ISO 3166 + alpha code. If the region can not be expressed as ISO 3166 then no -CC + tags are included. + */ + ::std::vector< OUString > getFallbackStrings() const; + /* Test equality of two LangageTag. */ bool operator==( const LanguageTag & rLanguageTag ) const; diff --git a/i18npool/source/languagetag/languagetag.cxx b/i18npool/source/languagetag/languagetag.cxx index 31b1ae0..33b2c57 100644 --- a/i18npool/source/languagetag/languagetag.cxx +++ b/i18npool/source/languagetag/languagetag.cxx @@ -1003,6 +1003,46 @@ LanguageTag & LanguageTag::makeFallback() } +::std::vector< OUString > LanguageTag::getFallbackStrings() const +{ + ::std::vector< OUString > aVec; + OUString aLanguage( getLanguage()); + OUString aCountry( getCountry()); + if (isIsoLocale()) + { + if (!aCountry.isEmpty()) + aVec.push_back( aLanguage + "-" + aCountry); + aVec.push_back( aLanguage); + return aVec; + } + aVec.push_back( getBcp47()); + OUString aTmp; + if (hasScript()) + { + OUString aScript( getScript()); + if (!aCountry.isEmpty()) + { + aTmp = aLanguage + "-" + aScript + "-" + aCountry; + if (aTmp != aVec[0]) + aVec.push_back( aTmp); + } + aTmp = aLanguage + "-" + aScript; + if (aTmp != aVec[0]) + aVec.push_back( aTmp); + } + if (!aCountry.isEmpty()) + { + aTmp = aLanguage + "-" + aCountry; + if (aTmp != aVec[0]) + aVec.push_back( aTmp); + } + aTmp = aLanguage; + if (aTmp != aVec[0]) + aVec.push_back( aTmp); + return aVec; +} + + bool LanguageTag::operator==( const LanguageTag & rLanguageTag ) const { // Compare full language tag strings but SYSTEM unresolved. commit ca04dec8b9670d936395771da43818f00e670482 Author: Eike Rathke <er...@redhat.com> Date: Sat Feb 16 00:49:29 2013 +0100 added LanguageTag::hasScript() Change-Id: If9eaca46ef8daa544ee208444f79423122b10739 diff --git a/i18npool/inc/i18npool/languagetag.hxx b/i18npool/inc/i18npool/languagetag.hxx index bb86b72..3394c1b 100644 --- a/i18npool/inc/i18npool/languagetag.hxx +++ b/i18npool/inc/i18npool/languagetag.hxx @@ -127,6 +127,8 @@ public: /** Get ISO 15924 script code, if not the default script according to BCP 47. For default script an empty string is returned. + @see hasScript() + Always resolves an empty tag to the system locale. */ rtl::OUString getScript() const; @@ -134,6 +136,8 @@ public: /** Get combined language and script code, separated by '-' if non-default script, if default script only language. + @see hasScript() + Always resolves an empty tag to the system locale. */ rtl::OUString getLanguageAndScript() const; @@ -152,6 +156,10 @@ public: */ rtl::OUString getRegion() const; + /** If language tag has a non-default script specified. + */ + bool hasScript() const; + /** If language tag is a locale that can be expressed using only ISO 639 language codes and ISO 3166 country codes, thus is convertible to a conforming Locale struct without using extension mechanisms. diff --git a/i18npool/source/languagetag/languagetag.cxx b/i18npool/source/languagetag/languagetag.cxx index bab2443..31b1ae0 100644 --- a/i18npool/source/languagetag/languagetag.cxx +++ b/i18npool/source/languagetag/languagetag.cxx @@ -898,6 +898,14 @@ rtl::OUString LanguageTag::getRegion() const } +bool LanguageTag::hasScript() const +{ + if (!mbCachedScript) + getScript(); + return !maCachedScript.isEmpty(); +} + + bool LanguageTag::cacheSimpleLSC() { OUString aLanguage, aScript, aCountry; commit ad8f56fd333dfaf0eb97d6a3c314899a8085782c Author: Eike Rathke <er...@redhat.com> Date: Fri Feb 15 23:05:18 2013 +0100 added i18n section Change-Id: I98a22066c711b56494f327ef40f45c37472ec888 diff --git a/sal/inc/sal/log-areas.dox b/sal/inc/sal/log-areas.dox index 1c821b1..e1422ca 100644 --- a/sal/inc/sal/log-areas.dox +++ b/sal/inc/sal/log-areas.dox @@ -103,7 +103,12 @@ certain functionality. @section i18npool -@li @c i18npool.langtag +@li @c i18npool - general i18npool +@li @c i18npool.langtag - language tags + +@section i18n + +@li @c i18n - module independent i18n related, e.g. language tag usage @section jvmfwk commit 60bcda43450fcbc345f2547d457ad201907b0547 Author: Eike Rathke <er...@redhat.com> Date: Fri Feb 15 17:13:53 2013 +0100 localizedsorter::bestname: info for non-ISO locale and comment Until fontconfig will support language tags. Change-Id: I831d066e91c00e62651409a0f9e6c8ed52b39150 diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx index 67506d8..9c6abe1 100644 --- a/vcl/generic/fontmanager/fontconfig.cxx +++ b/vcl/generic/fontmanager/fontconfig.cxx @@ -291,6 +291,9 @@ namespace FcChar8* localizedsorter::bestname(const std::vector<lang_and_element> &elements) { FcChar8* candidate = elements.begin()->second; + /* FIXME-BCP47: once fontconfig supports language tags this + * language-territory stuff needs to be changed! */ + SAL_INFO_IF( !maLoc.isIsoLocale(), "i18n", "localizedsorter::bestname - not an ISO locale"); rtl::OString sLangMatch(rtl::OUStringToOString(maLoc.getLanguage().toAsciiLowerCase(), RTL_TEXTENCODING_UTF8)); rtl::OString sFullMatch = sLangMatch; sFullMatch += OString('-'); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits