mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 09:24:11 +00:00
[INTL]
Set the system default language and codepages. CORE-10075 svn path=/trunk/; revision=69207
This commit is contained in:
parent
a7e5f0c49e
commit
8a0491589a
|
@ -213,7 +213,7 @@ InitLanguagesList(HWND hwndDlg)
|
|||
EnumSystemLocales(LocalesEnumProc, LCID_SUPPORTED);
|
||||
|
||||
/* Select current locale */
|
||||
GetLocaleInfo(GetUserDefaultLCID(), LOCALE_SLANGUAGE, langSel, sizeof(langSel)/sizeof(TCHAR));
|
||||
GetLocaleInfo(GetSystemDefaultLCID(), LOCALE_SLANGUAGE, langSel, sizeof(langSel)/sizeof(TCHAR));
|
||||
|
||||
SendMessage(hLangList, CB_SELECTSTRING, -1, (LPARAM)langSel);
|
||||
}
|
||||
|
@ -282,6 +282,63 @@ SetNonUnicodeLang(HWND hwnd, LCID lcid)
|
|||
SetupCloseInfFile(hFontInf);
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
VOID
|
||||
SaveSystemSettings(
|
||||
LCID lcid)
|
||||
{
|
||||
TCHAR ACPPage[9];
|
||||
TCHAR OEMPage[9];
|
||||
HKEY langKey;
|
||||
DWORD ret;
|
||||
WCHAR value[5];
|
||||
DWORD valuesize;
|
||||
|
||||
ret = GetLocaleInfo(MAKELCID(lcid, SORT_DEFAULT), LOCALE_IDEFAULTCODEPAGE, OEMPage, sizeof(OEMPage)/sizeof(TCHAR));
|
||||
if (ret == 0)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_OEM_CODE_PAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = GetLocaleInfo(MAKELCID(lcid, SORT_DEFAULT), LOCALE_IDEFAULTANSICODEPAGE, ACPPage, sizeof(ACPPage)/sizeof(TCHAR));
|
||||
if (ret == 0)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_ANSI_CODE_PAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Set codepages */
|
||||
ret = RegOpenKey(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\Control\\NLS\\CodePage"), &langKey);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_NLS_CODE_REG);
|
||||
return;
|
||||
}
|
||||
|
||||
RegSetValueEx(langKey, _T("OEMCP"), 0, REG_SZ, (BYTE *)OEMPage, (_tcslen(OEMPage) +1 ) * sizeof(TCHAR));
|
||||
RegSetValueEx(langKey, _T("ACP"), 0, REG_SZ, (BYTE *)ACPPage, (_tcslen(ACPPage) +1 ) * sizeof(TCHAR));
|
||||
|
||||
RegCloseKey(langKey);
|
||||
|
||||
|
||||
wsprintf(value, _T("%04hX"), LANGIDFROMLCID(lcid));
|
||||
valuesize = (_tcslen(value) + 1) * sizeof(TCHAR);
|
||||
|
||||
/* Set language */
|
||||
ret = RegOpenKey(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\Control\\NLS\\Language"), &langKey);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_NLS_KEY_REG);
|
||||
return;
|
||||
}
|
||||
|
||||
RegSetValueEx(langKey, _T("Default"), 0, REG_SZ, (BYTE *)value, valuesize);
|
||||
RegCloseKey(langKey);
|
||||
}
|
||||
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
AdvancedPageProc(HWND hwndDlg,
|
||||
|
@ -332,6 +389,7 @@ AdvancedPageProc(HWND hwndDlg,
|
|||
break;
|
||||
|
||||
SetNonUnicodeLang(hwndDlg, lcid);
|
||||
SaveSystemSettings(lcid);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -353,22 +353,6 @@ SaveCurrentLocale(
|
|||
DWORD valuesize;
|
||||
DWORD i;
|
||||
|
||||
#if 0
|
||||
ret = GetLocaleInfo(MAKELCID(lcid, SORT_DEFAULT), LOCALE_IDEFAULTCODEPAGE, OEMPage, sizeof(OEMPage)/sizeof(TCHAR));
|
||||
if (ret == 0)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_OEM_CODE_PAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = GetLocaleInfo(MAKELCID(lcid, SORT_DEFAULT), LOCALE_IDEFAULTANSICODEPAGE, ACPPage, sizeof(ACPPage)/sizeof(TCHAR));
|
||||
if (ret == 0)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_ANSI_CODE_PAGE);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
ret = RegOpenKeyExW(HKEY_CURRENT_USER, L"Control Panel\\International",
|
||||
0, KEY_READ | KEY_WRITE, &localeKey);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
|
@ -405,47 +389,6 @@ SaveCurrentLocale(
|
|||
/* Set the new locale for the current process */
|
||||
NtSetDefaultLocale(TRUE, pGlobalData->lcid);
|
||||
|
||||
#if 0
|
||||
ret = RegOpenKey(HKEY_USERS, _T(".DEFAULT\\Control Panel\\International"), &localeKey);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_DEF_INT_KEY_REG);
|
||||
return;
|
||||
}
|
||||
|
||||
wsprintf(value, _T("%08X"), (DWORD)lcid);
|
||||
valuesize = (_tcslen(value) + 1) * sizeof(TCHAR);
|
||||
|
||||
RegSetValueEx(localeKey, _T("Locale"), 0, REG_SZ, (BYTE *)value, valuesize);
|
||||
RegCloseKey(localeKey);
|
||||
|
||||
// Set language
|
||||
ret = RegOpenKey(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\Control\\NLS\\Language"), &langKey);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_NLS_KEY_REG);
|
||||
return;
|
||||
}
|
||||
|
||||
RegSetValueEx(langKey, _T("Default"), 0, REG_SZ, (BYTE *)value, valuesize );
|
||||
RegSetValueEx(langKey, _T("InstallLanguage"), 0, REG_SZ, (BYTE *)value, valuesize );
|
||||
|
||||
RegCloseKey(langKey);
|
||||
|
||||
|
||||
/* Set language */
|
||||
ret = RegOpenKey(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\Control\\NLS\\CodePage"), &langKey);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
PrintErrorMsgBox(IDS_ERROR_NLS_CODE_REG);
|
||||
return;
|
||||
}
|
||||
|
||||
RegSetValueExW(langKey, _T("OEMCP"), 0, REG_SZ, (BYTE *)OEMPage, (_tcslen(OEMPage) +1 ) * sizeof(TCHAR));
|
||||
RegSetValueExW(langKey, _T("ACP"), 0, REG_SZ, (BYTE *)ACPPage, (_tcslen(ACPPage) +1 ) * sizeof(TCHAR));
|
||||
|
||||
RegCloseKey(langKey);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Location enumerate procedure */
|
||||
|
@ -660,7 +603,6 @@ GeneralPageProc(HWND hwndDlg,
|
|||
}
|
||||
|
||||
AddNewKbLayoutsByLcid(pGlobalData->lcid);
|
||||
SetNonUnicodeLang(hwndDlg, pGlobalData->lcid);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue