mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +00:00
Make intl.cpl really switch InstallLanguage and Default entries of NLS\Language key. Problem with freeldr solved in hacky way - it writes now e.g. "0409" and not "00000409", as it generally should.
svn path=/trunk/; revision=15049
This commit is contained in:
parent
ecba32de75
commit
c72be4b69c
1 changed files with 34 additions and 34 deletions
|
@ -83,40 +83,43 @@ CreateLanguagesList(HWND hwnd)
|
|||
(LPARAM)langSel);
|
||||
}
|
||||
|
||||
/*
|
||||
static VOID
|
||||
ShowLanguagesList(HWND hwnd)
|
||||
// Sets new locale
|
||||
void SetNewLocale(LCID lcid)
|
||||
{
|
||||
TIME_ZONE_INFORMATION TimeZoneInfo;
|
||||
PTIMEZONE_ENTRY Entry;
|
||||
DWORD dwIndex;
|
||||
DWORD i;
|
||||
// HKCU\\Control Panel\\International\\Locale = 0409 (type=0)
|
||||
// HKLM,"SYSTEM\CurrentControlSet\Control\NLS\Language","Default",0x00000000,"0409" (type=0)
|
||||
// HKLM,"SYSTEM\CurrentControlSet\Control\NLS\Language","InstallLanguage",0x00000000,"0409" (type=0)
|
||||
|
||||
GetTimeZoneInformation(&TimeZoneInfo);
|
||||
// Set locale
|
||||
HKEY localeKey;
|
||||
HKEY langKey;
|
||||
DWORD ret;
|
||||
TCHAR value[9];
|
||||
|
||||
dwIndex = 0;
|
||||
i = 0;
|
||||
Entry = TimeZoneListHead;
|
||||
while (Entry != NULL)
|
||||
ret = RegOpenKeyW(HKEY_CURRENT_USER, L"Control Panel\\International", &localeKey);
|
||||
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
SendMessageW(hwnd,
|
||||
CB_ADDSTRING,
|
||||
0,
|
||||
(LPARAM)Entry->Description);
|
||||
|
||||
if (!wcscmp(Entry->StandardName, TimeZoneInfo.StandardName))
|
||||
dwIndex = i;
|
||||
|
||||
i++;
|
||||
Entry = Entry->Next;
|
||||
// some serious error
|
||||
//TODO: Tell user about it
|
||||
return;
|
||||
}
|
||||
|
||||
SendMessageW(hwnd,
|
||||
CB_SETCURSEL,
|
||||
(WPARAM)dwIndex,
|
||||
0);
|
||||
wsprintf(value, L"%04x", (DWORD)lcid);
|
||||
|
||||
RegSetValueExW(localeKey, L"Locale", 0, REG_SZ, (BYTE *)value, sizeof(value));
|
||||
RegCloseKey(localeKey);
|
||||
|
||||
// Set language
|
||||
ret = RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\NLS\\Language", &langKey);
|
||||
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
RegSetValueExW(langKey, L"Default", 0, REG_SZ, (BYTE *)value, sizeof(value));
|
||||
RegSetValueExW(langKey, L"InstallLanguage", 0, REG_SZ, (BYTE *)value, sizeof(value));
|
||||
RegCloseKey(langKey);
|
||||
}
|
||||
*/
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
|
@ -150,7 +153,6 @@ LocalePageProc(HWND hwndDlg,
|
|||
// Apply changes
|
||||
LCID NewLcid;
|
||||
int iCurSel;
|
||||
char tmp[100];
|
||||
|
||||
// Acquire new value
|
||||
iCurSel = SendMessageW(hList,
|
||||
|
@ -169,10 +171,8 @@ LocalePageProc(HWND hwndDlg,
|
|||
break;
|
||||
|
||||
|
||||
//TOOD: Actually set new locale
|
||||
|
||||
sprintf(tmp, "%x, cursel=%d", NewLcid, iCurSel);
|
||||
MessageBoxA(hwndDlg, tmp, "debug", MB_OK);
|
||||
// Actually set new locale
|
||||
SetNewLocale(NewLcid);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue