diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2009-09-17 11:26:03 +0000 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2009-09-17 11:26:03 +0000 |
commit | 7cdfb45ff9ef956cd472f863e65bc5b24ea61180 (patch) | |
tree | a33851096248aa1454db46abf64c839101ef182d | |
parent | 00fc98176877bf7d18b21e4cc19ba508728ccd98 (diff) |
CWS-TOOLING: integrate CWS defaultdoclang
2009-08-21 14:44:21 +0200 cmc r275260 : CWS-TOOLING: rebase CWS defaultdoclang to trunk@275001 (milestone: DEV300:m55)
2009-08-10 17:43:32 +0200 cmc r274833 : CWS-TOOLING: rebase CWS defaultdoclang to trunk@274622 (milestone: DEV300:m54)
2009-07-24 11:46:58 +0200 cmc r274297 : CWS-TOOLING: rebase CWS defaultdoclang to trunk@274203 (milestone: DEV300:m53)
2009-07-10 12:22:16 +0200 cmc r273884 : #i99577# tweak the widths a bit
2009-07-08 15:17:58 +0200 cmc r273834 : #i99577 tidy up indentation
2009-07-04 16:09:18 +0200 cmc r273721 : #i99577# a "default" document language that reflects what the locale language is
-rw-r--r-- | i18npool/inc/i18npool/mslangid.hxx | 10 | ||||
-rw-r--r-- | i18npool/source/isolang/mslangid.cxx | 55 | ||||
-rw-r--r-- | svtools/source/config/lingucfg.cxx | 54 | ||||
-rw-r--r-- | svtools/source/numbers/numfmuno.cxx | 2 |
4 files changed, 77 insertions, 44 deletions
diff --git a/i18npool/inc/i18npool/mslangid.hxx b/i18npool/inc/i18npool/mslangid.hxx index 7cc5e6bd8926..27688cd995dc 100644 --- a/i18npool/inc/i18npool/mslangid.hxx +++ b/i18npool/inc/i18npool/mslangid.hxx @@ -216,6 +216,9 @@ public: static LanguageType getRealLanguageWithoutConfig( LanguageType nLang ); + static LanguageType resolveSystemLanguageByScriptType( LanguageType nLang, sal_Int16 nType ); + + /** Whether locale has a Right-To-Left orientation. */ static bool isRightToLeft( LanguageType nLang ); @@ -246,6 +249,9 @@ public: configuration! */ static void setConfiguredSystemLanguage( LanguageType nLang ); static void setConfiguredSystemUILanguage( LanguageType nLang ); + static void setConfiguredWesternFallback( LanguageType nLang ); + static void setConfiguredComplexFallback( LanguageType nLang ); + static void setConfiguredAsianFallback( LanguageType nLang ); // --------------------------------------------------------------------------- @@ -274,6 +280,10 @@ private: static LanguageType nConfiguredSystemLanguage; static LanguageType nConfiguredSystemUILanguage; + static LanguageType nConfiguredWesternFallback; + static LanguageType nConfiguredAsianFallback; + static LanguageType nConfiguredComplexFallback; + static LanguageType getPlatformSystemLanguage(); static LanguageType getPlatformSystemUILanguage(); diff --git a/i18npool/source/isolang/mslangid.cxx b/i18npool/source/isolang/mslangid.cxx index 668bc1641f06..d6a8f547c677 100644 --- a/i18npool/source/isolang/mslangid.cxx +++ b/i18npool/source/isolang/mslangid.cxx @@ -41,6 +41,9 @@ LanguageType MsLangId::nConfiguredSystemLanguage = LANGUAGE_SYSTEM; LanguageType MsLangId::nConfiguredSystemUILanguage = LANGUAGE_SYSTEM; +LanguageType MsLangId::nConfiguredWesternFallback = LANGUAGE_SYSTEM; +LanguageType MsLangId::nConfiguredAsianFallback = LANGUAGE_SYSTEM; +LanguageType MsLangId::nConfiguredComplexFallback = LANGUAGE_SYSTEM; // static void MsLangId::setConfiguredSystemLanguage( LanguageType nLang ) @@ -55,6 +58,23 @@ void MsLangId::setConfiguredSystemUILanguage( LanguageType nLang ) nConfiguredSystemUILanguage = nLang; } +// static +void MsLangId::setConfiguredWesternFallback( LanguageType nLang ) +{ + nConfiguredWesternFallback = nLang; +} + +// static +void MsLangId::setConfiguredAsianFallback( LanguageType nLang ) +{ + nConfiguredAsianFallback = nLang; +} + +// static +void MsLangId::setConfiguredComplexFallback( LanguageType nLang ) +{ + nConfiguredComplexFallback = nLang; +} // static inline LanguageType MsLangId::simplifySystemLanguages( LanguageType nLang ) @@ -120,6 +140,41 @@ LanguageType MsLangId::getRealLanguage( LanguageType nLang ) // static +LanguageType MsLangId::resolveSystemLanguageByScriptType( LanguageType nLang, sal_Int16 nType ) +{ + if (nLang == LANGUAGE_NONE) + return nLang; + + nLang = getRealLanguage(nLang); + if (nType != ::com::sun::star::i18n::ScriptType::WEAK && getScriptType(nLang) != nType) + { + switch(nType) + { + case ::com::sun::star::i18n::ScriptType::ASIAN: + if (nConfiguredAsianFallback == LANGUAGE_SYSTEM) + nLang = LANGUAGE_CHINESE_SIMPLIFIED; + else + nLang = nConfiguredComplexFallback; + break; + case ::com::sun::star::i18n::ScriptType::COMPLEX: + if (nConfiguredComplexFallback == LANGUAGE_SYSTEM) + nLang = LANGUAGE_HINDI; + else + nLang = nConfiguredComplexFallback; + break; + default: + if (nConfiguredWesternFallback == LANGUAGE_SYSTEM) + nLang = LANGUAGE_ENGLISH_US; + else + nLang = nConfiguredWesternFallback; + break; + break; + } + } + return nLang; +} + +// static void MsLangId::convertLanguageToLocale( LanguageType nLang, ::com::sun::star::lang::Locale & rLocale ) { diff --git a/svtools/source/config/lingucfg.cxx b/svtools/source/config/lingucfg.cxx index 263ced16cd50..2b4e4d482c3f 100644 --- a/svtools/source/config/lingucfg.cxx +++ b/svtools/source/config/lingucfg.cxx @@ -72,27 +72,6 @@ static osl::Mutex & GetOwnMutex() /////////////////////////////////////////////////////////////////////////// -static lang::Locale lcl_CreateLocale( LanguageType eLang ) -{ - lang::Locale aLocale; - if ( eLang != LANGUAGE_NONE ) - MsLangId::convertLanguageToLocale( eLang, aLocale ); - - return aLocale; -} - - -static INT16 lcl_LocaleToLanguage( const lang::Locale& rLocale ) -{ - // empty Locale -> LANGUAGE_NONE - if ( rLocale.Language.getLength() == 0 ) - return LANGUAGE_NONE; - - // Variant of Locale is ignored - return MsLangId::convertLocaleToLanguage( rLocale ); -} - - static BOOL lcl_SetLocale( INT16 &rLanguage, const uno::Any &rVal ) { BOOL bSucc = FALSE; @@ -100,41 +79,31 @@ static BOOL lcl_SetLocale( INT16 &rLanguage, const uno::Any &rVal ) lang::Locale aNew; if (rVal >>= aNew) // conversion successful? { - INT16 nNew = lcl_LocaleToLanguage( aNew ); + INT16 nNew = MsLangId::convertLocaleToLanguage( aNew ); if (nNew != rLanguage) { rLanguage = nNew; bSucc = TRUE; } } - return bSucc; } -static inline INT16 lcl_CfgLocaleStrToLanguage( const OUString &rCfgLocaleStr ) -{ - INT16 nRes = LANGUAGE_NONE; - if (0 != rCfgLocaleStr.getLength()) - nRes = MsLangId::convertIsoStringToLanguage( rCfgLocaleStr ); - return nRes; -} - - static inline const OUString lcl_LanguageToCfgLocaleStr( INT16 nLanguage ) { OUString aRes; - if (LANGUAGE_NONE != nLanguage) + if (LANGUAGE_SYSTEM != nLanguage) aRes = MsLangId::convertLanguageToIsoString( nLanguage ); return aRes; } -static void lcl_CfgAnyToLanguage( const uno::Any &rVal, INT16& rLanguage ) +static INT16 lcl_CfgAnyToLanguage( const uno::Any &rVal ) { OUString aTmp; - if ((rVal >>= aTmp) && 0 != aTmp.getLength()) - rLanguage = MsLangId::convertIsoStringToLanguage( aTmp ); + rVal >>= aTmp; + return (aTmp.getLength() == 0) ? LANGUAGE_SYSTEM : MsLangId::convertIsoStringToLanguage( aTmp ); } @@ -143,7 +112,6 @@ static void lcl_CfgAnyToLanguage( const uno::Any &rVal, INT16& rLanguage ) SvtLinguOptions::SvtLinguOptions() { nDefaultLanguage = LANGUAGE_NONE; - nDefaultLanguage_CJK = LANGUAGE_NONE; nDefaultLanguage_CTL = LANGUAGE_NONE; @@ -428,19 +396,19 @@ uno::Any SvtLinguConfigItem::GetProperty( INT32 nPropertyHandle ) const } case UPH_DEFAULT_LOCALE : { - lang::Locale aLocale( lcl_CreateLocale( rOpt.nDefaultLanguage ) ); + lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage, false ) ); aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 )); break; } case UPH_DEFAULT_LOCALE_CJK : { - lang::Locale aLocale( lcl_CreateLocale( rOpt.nDefaultLanguage_CJK ) ); + lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage_CJK, false ) ); aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 )); break; } case UPH_DEFAULT_LOCALE_CTL : { - lang::Locale aLocale( lcl_CreateLocale( rOpt.nDefaultLanguage_CTL ) ); + lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage_CTL, false ) ); aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 )); break; } @@ -654,7 +622,7 @@ BOOL SvtLinguConfigItem::LoadOptions( const uno::Sequence< OUString > &rProperyN switch ( nPropertyHandle ) { case UPH_DEFAULT_LOCALE : - { rOpt.bRODefaultLanguage = pROStates[i]; lcl_CfgAnyToLanguage( rVal, rOpt.nDefaultLanguage ); } break; + { rOpt.bRODefaultLanguage = pROStates[i]; rOpt.nDefaultLanguage = lcl_CfgAnyToLanguage( rVal ); } break; case UPH_ACTIVE_DICTIONARIES : { rOpt.bROActiveDics = pROStates[i]; rVal >>= rOpt.aActiveDics; } break; case UPH_IS_USE_DICTIONARY_LIST : @@ -662,9 +630,9 @@ BOOL SvtLinguConfigItem::LoadOptions( const uno::Sequence< OUString > &rProperyN case UPH_IS_IGNORE_CONTROL_CHARACTERS : { rOpt.bROIsIgnoreControlCharacters = pROStates[i]; rVal >>= rOpt.bIsIgnoreControlCharacters; } break; case UPH_DEFAULT_LOCALE_CJK : - { rOpt.bRODefaultLanguage_CJK = pROStates[i]; lcl_CfgAnyToLanguage( rVal, rOpt.nDefaultLanguage_CJK ); } break; + { rOpt.bRODefaultLanguage_CJK = pROStates[i]; rOpt.nDefaultLanguage_CJK = lcl_CfgAnyToLanguage( rVal ); } break; case UPH_DEFAULT_LOCALE_CTL : - { rOpt.bRODefaultLanguage_CTL = pROStates[i]; lcl_CfgAnyToLanguage( rVal, rOpt.nDefaultLanguage_CTL ); } break; + { rOpt.bRODefaultLanguage_CTL = pROStates[i]; rOpt.nDefaultLanguage_CTL = lcl_CfgAnyToLanguage( rVal ); } break; case UPH_IS_SPELL_UPPER_CASE : { rOpt.bROIsSpellUpperCase = pROStates[i]; rVal >>= rOpt.bIsSpellUpperCase; } break; diff --git a/svtools/source/numbers/numfmuno.cxx b/svtools/source/numbers/numfmuno.cxx index 7417367ec124..d65a2fd696ce 100644 --- a/svtools/source/numbers/numfmuno.cxx +++ b/svtools/source/numbers/numfmuno.cxx @@ -774,7 +774,7 @@ uno::Any SAL_CALL SvNumberFormatObj::getPropertyValue( const rtl::OUString& aPro else if (aString.EqualsAscii( PROPERTYNAME_LOCALE )) { lang::Locale aLocale( MsLangId::convertLanguageToLocale( - pFormat->GetLanguage())); + pFormat->GetLanguage())); aRet <<= aLocale; } else if (aString.EqualsAscii( PROPERTYNAME_TYPE )) |