diff options
author | Herbert Duerr [hdu] <duerr@sun.com> | 2010-03-09 11:38:53 +0100 |
---|---|---|
committer | Herbert Duerr [hdu] <duerr@sun.com> | 2010-03-09 11:38:53 +0100 |
commit | 176b670a1142752950dddfab4bda587c8e8c3bf5 (patch) | |
tree | f129e4411167da9831a879832047a2229730acf1 /vcl | |
parent | 155791b70804fb83964c66db1c283c0b4e1ea19d (diff) |
##i101552# use default CJK language determined from the registry
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/win/source/gdi/salgdi3.cxx | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/vcl/win/source/gdi/salgdi3.cxx b/vcl/win/source/gdi/salgdi3.cxx index 42509649ca3f..c991d1db2be0 100644 --- a/vcl/win/source/gdi/salgdi3.cxx +++ b/vcl/win/source/gdi/salgdi3.cxx @@ -379,17 +379,34 @@ static Unicode2LangType aLangFromCodeChart[]= { // get language matching to the missing char LanguageType MapCharToLanguage( sal_UCS4 uChar ) { - // entries marked with default-CJK should get replaced with a default-CJK language + // entries marked with default-CJK get replaced with the prefered CJK language static bool bFirst = true; if( bFirst ) { bFirst = false; - // TODO: use the default-CJK language instead - // TODO: use default language determined by #i97086# - // when the setting from Tools->Options->LangSettings->Languages becomes available here + + // use method suggested in #i97086# to determnine the systems default language + // TODO: move into i18npool or sal/osl/w32/nlsupport.c + LanguageType nDefaultLang = 0; + HKEY hKey = NULL; + LONG lResult = ::RegOpenKeyExA( HKEY_LOCAL_MACHINE, + "SYSTEM\\CurrentControlSet\\Control\\Nls\\Language", + 0, KEY_QUERY_VALUE, &hKey ); + char aKeyValBuf[16]; + DWORD nKeyValSize = sizeof(aKeyValBuf); + if( ERROR_SUCCESS == lResult ) + lResult = RegQueryValueExA( hKey, "Default", NULL, NULL, (LPBYTE)aKeyValBuf, &nKeyValSize ); + aKeyValBuf[ sizeof(aKeyValBuf)-1 ] = '\0'; + if( ERROR_SUCCESS == lResult ) + nDefaultLang = (LanguageType)rtl_str_toInt32( aKeyValBuf, 16 ); + + // TODO: use the default-CJK language selected in + // Tools->Options->LangSettings->Languages when it becomes available here + if( !nDefaultLang ) + nDefaultLang = Application::GetSettings().GetUILanguage(); + LanguageType nDefaultCJK = LANGUAGE_CHINESE; - const LanguageType nUILang = Application::GetSettings().GetUILanguage(); - switch( nUILang ) + switch( nDefaultLang ) { case LANGUAGE_JAPANESE: case LANGUAGE_KOREAN: @@ -399,13 +416,14 @@ LanguageType MapCharToLanguage( sal_UCS4 uChar ) case LANGUAGE_CHINESE_SINGAPORE: case LANGUAGE_CHINESE_HONGKONG: case LANGUAGE_CHINESE_MACAU: - nDefaultCJK = nUILang; + nDefaultCJK = nDefaultLang; break; default: nDefaultCJK = LANGUAGE_CHINESE; break; } + // change the marked entries to prefered language static const int nCount = (sizeof(aLangFromCodeChart) / sizeof(*aLangFromCodeChart)); for( int i = 0; i < nCount; ++i ) { |