summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorHerbert Duerr [hdu] <duerr@sun.com>2010-03-09 11:38:53 +0100
committerHerbert Duerr [hdu] <duerr@sun.com>2010-03-09 11:38:53 +0100
commit176b670a1142752950dddfab4bda587c8e8c3bf5 (patch)
treef129e4411167da9831a879832047a2229730acf1 /vcl
parent155791b70804fb83964c66db1c283c0b4e1ea19d (diff)
##i101552# use default CJK language determined from the registry
Diffstat (limited to 'vcl')
-rw-r--r--vcl/win/source/gdi/salgdi3.cxx32
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 )
{