diff options
-rw-r--r-- | i18npool/inc/i18npool/languagetag.hxx | 15 | ||||
-rw-r--r-- | i18npool/source/languagetag/languagetag.cxx | 14 |
2 files changed, 29 insertions, 0 deletions
diff --git a/i18npool/inc/i18npool/languagetag.hxx b/i18npool/inc/i18npool/languagetag.hxx index 5666fd158600..552110dc4366 100644 --- a/i18npool/inc/i18npool/languagetag.hxx +++ b/i18npool/inc/i18npool/languagetag.hxx @@ -95,6 +95,21 @@ public: */ LanguageType getLanguageType( bool bResolveSystem = true ) const; + /** Obtain ISO strings for language and country. + + This is a convenience method for places that so far use only language and + country to replace the MsLangId::convert...IsoNames...() calls. Avoid + use in new code. + + ATTENTION! May return empty strings if the language tag is not + expressable in valid ISO codes! + + @see isIsoLocale() + + Always resolves an empty tag to the system locale. + */ + void getIsoLanguageCountry( rtl::OUString& rLanguage, rtl::OUString& rCountry ) const; + /** Get ISO 639 language code, or BCP 47 language. Always resolves an empty tag to the system locale. diff --git a/i18npool/source/languagetag/languagetag.cxx b/i18npool/source/languagetag/languagetag.cxx index 3e655ee87bb3..f863ae2ca7b1 100644 --- a/i18npool/source/languagetag/languagetag.cxx +++ b/i18npool/source/languagetag/languagetag.cxx @@ -618,6 +618,20 @@ LanguageType LanguageTag::getLanguageType( bool bResolveSystem ) const } +void LanguageTag::getIsoLanguageCountry( rtl::OUString& rLanguage, rtl::OUString& rCountry ) const +{ + if (!isIsoLocale()) + { + rLanguage = OUString(); + rCountry = OUString(); + return; + } + // After isIsoLocale() it's safe to call getLanguage() for ISO code. + rLanguage = getLanguage(); + rCountry = getCountry(); +} + + namespace { |