mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 09:33:05 +00:00
** WIP ** Improve handling of MUI/LANGID/... stuff
This should fix part of CORE-11785 ** WIP ** Continue massaging the MUI stuff AND actually start to remove GENERIC_LIST from the settings. Some stuff to see:7af2f717bc/base/setup/usetup/settings.c
8f2c4f7a6d
etc. ** WIP ** Continue with refactoring the settings retrival and limiting usage of GENERIC_LIST. See commits:829b0c63d9
67880e7352
(for keyboard layout) ande405ad257c
(a commit of mine)
This commit is contained in:
parent
afa515bfd0
commit
17c4299ff8
16 changed files with 1486 additions and 1117 deletions
|
@ -538,16 +538,8 @@ PrepareCopyInfFile(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add specific files depending of computer type */
|
/* Add specific files depending of computer type */
|
||||||
{
|
|
||||||
PGENERIC_LIST_ENTRY Entry;
|
|
||||||
Entry = GetCurrentListEntry(pSetupData->ComputerList);
|
|
||||||
ASSERT(Entry);
|
|
||||||
pSetupData->ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
|
||||||
ASSERT(pSetupData->ComputerType);
|
|
||||||
|
|
||||||
if (!ProcessComputerFiles(InfFile, pSetupData->ComputerType, &AdditionalSectionName))
|
if (!ProcessComputerFiles(InfFile, pSetupData->ComputerType, &AdditionalSectionName))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
if (AdditionalSectionName &&
|
if (AdditionalSectionName &&
|
||||||
!AddSectionToCopyQueue(pSetupData, InfFile,
|
!AddSectionToCopyQueue(pSetupData, InfFile,
|
||||||
|
@ -769,7 +761,7 @@ PrepareFileCopy(
|
||||||
InfFileSize,
|
InfFileSize,
|
||||||
NULL,
|
NULL,
|
||||||
INF_STYLE_WIN4,
|
INF_STYLE_WIN4,
|
||||||
pSetupData->LanguageId,
|
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||||
&ErrorLine);
|
&ErrorLine);
|
||||||
|
|
||||||
CabinetCleanup(&CabinetContext);
|
CabinetCleanup(&CabinetContext);
|
||||||
|
@ -792,7 +784,7 @@ PrepareFileCopy(
|
||||||
InfHandle = SpInfOpenInfFile(PathBuffer,
|
InfHandle = SpInfOpenInfFile(PathBuffer,
|
||||||
NULL,
|
NULL,
|
||||||
INF_STYLE_WIN4,
|
INF_STYLE_WIN4,
|
||||||
pSetupData->LanguageId,
|
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||||
&ErrorLine);
|
&ErrorLine);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -42,25 +42,22 @@
|
||||||
static
|
static
|
||||||
ULONG
|
ULONG
|
||||||
FindLanguageIndex(
|
FindLanguageIndex(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = 0;
|
ULONG lngIndex = 0;
|
||||||
|
|
||||||
if (LanguageId == NULL)
|
if (LanguageId == 0)
|
||||||
{
|
{
|
||||||
/* Default to en-US */
|
/* Default to en-US */
|
||||||
// return 0; // FIXME!!
|
// return 0; // FIXME!!
|
||||||
LanguageId = L"00000409";
|
LanguageId = 0x0409;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||||
{
|
|
||||||
return lngIndex;
|
return lngIndex;
|
||||||
}
|
++lngIndex;
|
||||||
|
|
||||||
lngIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -68,16 +65,15 @@ FindLanguageIndex(
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
IsLanguageAvailable(
|
IsLanguageAvailable(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = 0;
|
ULONG lngIndex = 0;
|
||||||
|
|
||||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
++lngIndex;
|
||||||
lngIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -86,7 +82,7 @@ IsLanguageAvailable(
|
||||||
|
|
||||||
KLID
|
KLID
|
||||||
MUIDefaultKeyboardLayout(
|
MUIDefaultKeyboardLayout(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||||
return MUILanguageList[lngIndex].MuiLayouts[0].LayoutID;
|
return MUILanguageList[lngIndex].MuiLayouts[0].LayoutID;
|
||||||
|
@ -94,7 +90,7 @@ MUIDefaultKeyboardLayout(
|
||||||
|
|
||||||
UINT
|
UINT
|
||||||
MUIGetOEMCodePage(
|
MUIGetOEMCodePage(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||||
return MUILanguageList[lngIndex].OEMCPage;
|
return MUILanguageList[lngIndex].OEMCPage;
|
||||||
|
@ -102,7 +98,7 @@ MUIGetOEMCodePage(
|
||||||
|
|
||||||
GEOID
|
GEOID
|
||||||
MUIGetGeoID(
|
MUIGetGeoID(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||||
return MUILanguageList[lngIndex].GeoID;
|
return MUILanguageList[lngIndex].GeoID;
|
||||||
|
@ -110,7 +106,7 @@ MUIGetGeoID(
|
||||||
|
|
||||||
const MUI_LAYOUTS*
|
const MUI_LAYOUTS*
|
||||||
MUIGetLayoutsList(
|
MUIGetLayoutsList(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
ULONG lngIndex = FindLanguageIndex(LanguageId);
|
||||||
return MUILanguageList[lngIndex].MuiLayouts;
|
return MUILanguageList[lngIndex].MuiLayouts;
|
||||||
|
@ -125,16 +121,14 @@ AddHotkeySettings(
|
||||||
IN PCWSTR LayoutHotkey)
|
IN PCWSTR LayoutHotkey)
|
||||||
{
|
{
|
||||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
UNICODE_STRING KeyName;
|
UNICODE_STRING Name;
|
||||||
UNICODE_STRING ValueName;
|
|
||||||
HANDLE KeyHandle;
|
HANDLE KeyHandle;
|
||||||
ULONG Disposition;
|
ULONG Disposition;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
RtlInitUnicodeString(&KeyName,
|
RtlInitUnicodeString(&Name, L".DEFAULT\\Keyboard Layout\\Toggle");
|
||||||
L".DEFAULT\\Keyboard Layout\\Toggle");
|
|
||||||
InitializeObjectAttributes(&ObjectAttributes,
|
InitializeObjectAttributes(&ObjectAttributes,
|
||||||
&KeyName,
|
&Name,
|
||||||
OBJ_CASE_INSENSITIVE,
|
OBJ_CASE_INSENSITIVE,
|
||||||
GetRootKeyByPredefKey(HKEY_USERS, NULL),
|
GetRootKeyByPredefKey(HKEY_USERS, NULL),
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -152,11 +146,9 @@ AddHotkeySettings(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlInitUnicodeString(&ValueName,
|
RtlInitUnicodeString(&Name, L"Hotkey");
|
||||||
L"Hotkey");
|
|
||||||
|
|
||||||
Status = NtSetValueKey(KeyHandle,
|
Status = NtSetValueKey(KeyHandle,
|
||||||
&ValueName,
|
&Name,
|
||||||
0,
|
0,
|
||||||
REG_SZ,
|
REG_SZ,
|
||||||
(PVOID)Hotkey,
|
(PVOID)Hotkey,
|
||||||
|
@ -168,11 +160,9 @@ AddHotkeySettings(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlInitUnicodeString(&ValueName,
|
RtlInitUnicodeString(&Name, L"Language Hotkey");
|
||||||
L"Language Hotkey");
|
|
||||||
|
|
||||||
Status = NtSetValueKey(KeyHandle,
|
Status = NtSetValueKey(KeyHandle,
|
||||||
&ValueName,
|
&Name,
|
||||||
0,
|
0,
|
||||||
REG_SZ,
|
REG_SZ,
|
||||||
(PVOID)LangHotkey,
|
(PVOID)LangHotkey,
|
||||||
|
@ -184,11 +174,9 @@ AddHotkeySettings(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlInitUnicodeString(&ValueName,
|
RtlInitUnicodeString(&Name, L"Layout Hotkey");
|
||||||
L"Layout Hotkey");
|
|
||||||
|
|
||||||
Status = NtSetValueKey(KeyHandle,
|
Status = NtSetValueKey(KeyHandle,
|
||||||
&ValueName,
|
&Name,
|
||||||
0,
|
0,
|
||||||
REG_SZ,
|
REG_SZ,
|
||||||
(PVOID)LayoutHotkey,
|
(PVOID)LayoutHotkey,
|
||||||
|
@ -289,7 +277,9 @@ AddKbLayoutsToRegistry(
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("NtCreateKey() failed (Status %lx)\n", Status);
|
DPRINT1("NtCreateKey() failed (Status %lx)\n", Status);
|
||||||
goto Quit;
|
// goto Quit;
|
||||||
|
NtClose(KeyHandle);
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
uCount = 0;
|
uCount = 0;
|
||||||
|
@ -360,18 +350,15 @@ Quit:
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
AddKeyboardLayouts(
|
AddKeyboardLayouts(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = 0;
|
ULONG lngIndex = 0;
|
||||||
|
|
||||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||||
{
|
|
||||||
return AddKbLayoutsToRegistry(MUILanguageList[lngIndex].MuiLayouts);
|
return AddKbLayoutsToRegistry(MUILanguageList[lngIndex].MuiLayouts);
|
||||||
}
|
++lngIndex;
|
||||||
|
|
||||||
lngIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -407,7 +394,7 @@ AddCodepageToRegistry(
|
||||||
&ObjectAttributes);
|
&ObjectAttributes);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("NtOpenKey() failed (Status %lx)\n", Status);
|
DPRINT1("NtOpenKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +411,7 @@ AddCodepageToRegistry(
|
||||||
(wcslen(Value)+1) * sizeof(WCHAR));
|
(wcslen(Value)+1) * sizeof(WCHAR));
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status);
|
DPRINT1("NtSetValueKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||||
goto Quit;
|
goto Quit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -441,7 +428,7 @@ AddCodepageToRegistry(
|
||||||
(wcslen(Value)+1) * sizeof(WCHAR));
|
(wcslen(Value)+1) * sizeof(WCHAR));
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status);
|
DPRINT1("NtSetValueKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||||
goto Quit;
|
goto Quit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,7 +445,7 @@ AddCodepageToRegistry(
|
||||||
(wcslen(Value)+1) * sizeof(WCHAR));
|
(wcslen(Value)+1) * sizeof(WCHAR));
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("NtSetValueKey() failed (Status %lx)\n", Status);
|
DPRINT1("NtSetValueKey(\"%wZ\") failed (Status %lx)\n", &Name, Status);
|
||||||
goto Quit;
|
goto Quit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,7 +495,7 @@ AddFontsSettingsToRegistry(
|
||||||
(wcslen(MuiSubFonts[uIndex].SubFontName)+1) * sizeof(WCHAR));
|
(wcslen(MuiSubFonts[uIndex].SubFontName)+1) * sizeof(WCHAR));
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = %d)\n", Status, uIndex);
|
DPRINT1("NtSetValueKey() failed (Status = %lx, uIndex = %u)\n", Status, uIndex);
|
||||||
NtClose(KeyHandle);
|
NtClose(KeyHandle);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -532,13 +519,13 @@ AddFontsSettingsToRegistry(
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
AddCodePage(
|
AddCodePage(
|
||||||
IN PCWSTR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = 0;
|
ULONG lngIndex = 0;
|
||||||
|
|
||||||
while (MUILanguageList[lngIndex].LanguageID != NULL)
|
while (MUILanguageList[lngIndex].LanguageID != 0)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(MUILanguageList[lngIndex].LanguageID, LanguageId) == 0)
|
if (MUILanguageList[lngIndex].LanguageID == LanguageId)
|
||||||
{
|
{
|
||||||
if (AddCodepageToRegistry(MUILanguageList[lngIndex].ACPage,
|
if (AddCodepageToRegistry(MUILanguageList[lngIndex].ACPage,
|
||||||
MUILanguageList[lngIndex].OEMCPage,
|
MUILanguageList[lngIndex].OEMCPage,
|
||||||
|
@ -553,7 +540,7 @@ AddCodePage(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lngIndex++;
|
++lngIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
/*
|
||||||
|
* See the intl.inf file map:
|
||||||
|
*
|
||||||
|
* ; List of locales.
|
||||||
|
* ; <LCID> = <Font>,<Font Substitute>
|
||||||
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
PCWSTR FontName;
|
PCWSTR FontName;
|
||||||
|
@ -7,6 +13,8 @@ typedef struct
|
||||||
} MUI_SUBFONT;
|
} MUI_SUBFONT;
|
||||||
|
|
||||||
typedef USHORT LANGID;
|
typedef USHORT LANGID;
|
||||||
|
// #define MAXUSHORT USHRT_MAX
|
||||||
|
// typedef DWORD LCID;
|
||||||
typedef ULONG KLID;
|
typedef ULONG KLID;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -29,7 +37,7 @@ typedef ULONG GEOID; // See winnls.h
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
PCWSTR LanguageID;
|
LCID LanguageID; // LocaleID;
|
||||||
UINT ACPage;
|
UINT ACPage;
|
||||||
UINT OEMCPage;
|
UINT OEMCPage;
|
||||||
UINT MACCPage;
|
UINT MACCPage;
|
||||||
|
@ -42,23 +50,23 @@ typedef struct
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
IsLanguageAvailable(
|
IsLanguageAvailable(
|
||||||
IN PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
||||||
KLID
|
KLID
|
||||||
MUIDefaultKeyboardLayout(
|
MUIDefaultKeyboardLayout(
|
||||||
IN PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
||||||
UINT
|
UINT
|
||||||
MUIGetOEMCodePage(
|
MUIGetOEMCodePage(
|
||||||
IN PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
||||||
GEOID
|
GEOID
|
||||||
MUIGetGeoID(
|
MUIGetGeoID(
|
||||||
IN PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
||||||
const MUI_LAYOUTS*
|
const MUI_LAYOUTS*
|
||||||
MUIGetLayoutsList(
|
MUIGetLayoutsList(
|
||||||
IN PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
AddKbLayoutsToRegistry(
|
AddKbLayoutsToRegistry(
|
||||||
|
@ -66,8 +74,8 @@ AddKbLayoutsToRegistry(
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
AddKeyboardLayouts(
|
AddKeyboardLayouts(
|
||||||
IN PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
AddCodePage(
|
AddCodePage(
|
||||||
IN PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
|
@ -411,432 +411,432 @@
|
||||||
|
|
||||||
const MUI_LANGUAGE MUILanguageList[] =
|
const MUI_LANGUAGE MUILanguageList[] =
|
||||||
{
|
{
|
||||||
/* Lang ID, ANSI CP, OEM CP, MAC CP, Language Name, GeoID, Fonts, KB Layouts */
|
/* LangID, ANSI CP, OEM CP, MAC CP, Language Name, GeoID, Fonts, KB Layouts */
|
||||||
#ifdef LANGUAGE_AF_ZA
|
#ifdef LANGUAGE_AF_ZA
|
||||||
{L"00000436", 1252, 850, 10000, L"Afrikaans", 209, LatinFonts, afZALayouts},
|
{0x00000436, 1252, 850, 10000, L"Afrikaans", 209, LatinFonts, afZALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SQ_AL
|
#ifdef LANGUAGE_SQ_AL
|
||||||
{L"0000041C", 1250, 852, 10029, L"Albanian (Albania)", 6, LatinFonts, sqALLayouts},
|
{0x0000041C, 1250, 852, 10029, L"Albanian (Albania)", 6, LatinFonts, sqALLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_SA
|
#ifdef LANGUAGE_AR_SA
|
||||||
{L"00000401", 1256, 720, 10004, L"Arabic (Saudi Arabia)", 205, UnicodeFonts, arSALayouts},
|
{0x00000401, 1256, 720, 10004, L"Arabic (Saudi Arabia)", 205, UnicodeFonts, arSALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_IQ
|
#ifdef LANGUAGE_AR_IQ
|
||||||
{L"00000801", 1256, 720, 10004, L"Arabic (Iraq)", 121, UnicodeFonts, arIQLayouts},
|
{0x00000801, 1256, 720, 10004, L"Arabic (Iraq)", 121, UnicodeFonts, arIQLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_EG
|
#ifdef LANGUAGE_AR_EG
|
||||||
{L"00000C01", 1256, 720, 10004, L"Arabic (Egypt)", 67, UnicodeFonts, arEGLayouts},
|
{0x00000C01, 1256, 720, 10004, L"Arabic (Egypt)", 67, UnicodeFonts, arEGLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_LY
|
#ifdef LANGUAGE_AR_LY
|
||||||
{L"00001001", 1256, 720, 10004, L"Arabic (Libya)", 148, UnicodeFonts, arLYLayouts},
|
{0x00001001, 1256, 720, 10004, L"Arabic (Libya)", 148, UnicodeFonts, arLYLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_DZ
|
#ifdef LANGUAGE_AR_DZ
|
||||||
{L"00001401", 1256, 720, 10004, L"Arabic (Algeria)", 4, UnicodeFonts, arDZLayouts},
|
{0x00001401, 1256, 720, 10004, L"Arabic (Algeria)", 4, UnicodeFonts, arDZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_MA
|
#ifdef LANGUAGE_AR_MA
|
||||||
{L"00001801", 1256, 720, 10004, L"Arabic (Morocco)", 149, UnicodeFonts, arMALayouts},
|
{0x00001801, 1256, 720, 10004, L"Arabic (Morocco)", 149, UnicodeFonts, arMALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_TN
|
#ifdef LANGUAGE_AR_TN
|
||||||
{L"00001C01", 1256, 720, 10004, L"Arabic (Tunisia)", 234, UnicodeFonts, arTNLayouts},
|
{0x00001C01, 1256, 720, 10004, L"Arabic (Tunisia)", 234, UnicodeFonts, arTNLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_OM
|
#ifdef LANGUAGE_AR_OM
|
||||||
{L"00002001", 1256, 720, 10004, L"Arabic (Oman)", 164, UnicodeFonts, arOMLayouts},
|
{0x00002001, 1256, 720, 10004, L"Arabic (Oman)", 164, UnicodeFonts, arOMLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_YE
|
#ifdef LANGUAGE_AR_YE
|
||||||
{L"00002401", 1256, 720, 10004, L"Arabic (Yemen)", 261, UnicodeFonts, arYELayouts},
|
{0x00002401, 1256, 720, 10004, L"Arabic (Yemen)", 261, UnicodeFonts, arYELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_SY
|
#ifdef LANGUAGE_AR_SY
|
||||||
{L"00002801", 1256, 720, 10004, L"Arabic (Syria)", 222, UnicodeFonts, arSYLayouts},
|
{0x00002801, 1256, 720, 10004, L"Arabic (Syria)", 222, UnicodeFonts, arSYLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_JO
|
#ifdef LANGUAGE_AR_JO
|
||||||
{L"00002C01", 1256, 720, 10004, L"Arabic (Jordan)", 126, UnicodeFonts, arJOLayouts},
|
{0x00002C01, 1256, 720, 10004, L"Arabic (Jordan)", 126, UnicodeFonts, arJOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_LB
|
#ifdef LANGUAGE_AR_LB
|
||||||
{L"00003001", 1256, 720, 10004, L"Arabic (Lebanon)", 139, UnicodeFonts, arLBLayouts},
|
{0x00003001, 1256, 720, 10004, L"Arabic (Lebanon)", 139, UnicodeFonts, arLBLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_KW
|
#ifdef LANGUAGE_AR_KW
|
||||||
{L"00003401", 1256, 720, 10004, L"Arabic (Kuwait)", 136, UnicodeFonts, arKWLayouts},
|
{0x00003401, 1256, 720, 10004, L"Arabic (Kuwait)", 136, UnicodeFonts, arKWLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_AE
|
#ifdef LANGUAGE_AR_AE
|
||||||
{L"00003801", 1256, 720, 10004, L"Arabic (U.A.E.)", 224, UnicodeFonts, arAELayouts},
|
{0x00003801, 1256, 720, 10004, L"Arabic (U.A.E.)", 224, UnicodeFonts, arAELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_BH
|
#ifdef LANGUAGE_AR_BH
|
||||||
{L"00003C01", 1256, 720, 10004, L"Arabic (Bahrain)", 17, UnicodeFonts, arBHLayouts},
|
{0x00003C01, 1256, 720, 10004, L"Arabic (Bahrain)", 17, UnicodeFonts, arBHLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_QA
|
#ifdef LANGUAGE_AR_QA
|
||||||
{L"00004001", 1256, 720, 10004, L"Arabic (Qatar)", 197, UnicodeFonts, arQALayouts},
|
{0x00004001, 1256, 720, 10004, L"Arabic (Qatar)", 197, UnicodeFonts, arQALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HY_AM
|
#ifdef LANGUAGE_HY_AM
|
||||||
{L"0000042B", 0, 1, 2, L"Armenian", 7, UnicodeFonts, hyAMLayouts},
|
{0x0000042B, 0, 1, 2, L"Armenian", 7, UnicodeFonts, hyAMLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AZ_AZ
|
#ifdef LANGUAGE_AZ_AZ
|
||||||
{L"0000082C", 1251, 866, 10007, L"Azeri (Cyrillic)", 5, CyrillicFonts, azAZLayouts},
|
{0x0000082C, 1251, 866, 10007, L"Azeri (Cyrillic)", 5, CyrillicFonts, azAZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AZ_AZ
|
#ifdef LANGUAGE_AZ_AZ
|
||||||
{L"0000042C", 1254, 857, 10081, L"Azeri (Latin)", 5, LatinFonts, azAZLayouts},
|
{0x0000042C, 1254, 857, 10081, L"Azeri (Latin)", 5, LatinFonts, azAZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EU_ES
|
#ifdef LANGUAGE_EU_ES
|
||||||
{L"0000042D", 1252, 850, 10000, L"Basque", 217, LatinFonts, euESLayouts},
|
{0x0000042D, 1252, 850, 10000, L"Basque", 217, LatinFonts, euESLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BE_BY
|
#ifdef LANGUAGE_BE_BY
|
||||||
{L"00000423", 1251, 866, 10007, L"Belarusian", 29, CyrillicFonts, beBYLayouts},
|
{0x00000423, 1251, 866, 10007, L"Belarusian", 29, CyrillicFonts, beBYLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BN_BD
|
#ifdef LANGUAGE_BN_BD
|
||||||
{L"00000845", 0, 1, 2, L"Bengali (Bangladesh)", 23, UnicodeFonts, bnBDLayouts},
|
{0x00000845, 0, 1, 2, L"Bengali (Bangladesh)", 23, UnicodeFonts, bnBDLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BN_IN
|
#ifdef LANGUAGE_BN_IN
|
||||||
{L"00000445", 0, 1, 2, L"Bengali (India)", 113, UnicodeFonts, bnINLayouts},
|
{0x00000445, 0, 1, 2, L"Bengali (India)", 113, UnicodeFonts, bnINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BG_BG
|
#ifdef LANGUAGE_BG_BG
|
||||||
{L"00000402", 1251, 866, 10007, L"Bulgarian", 35, CyrillicFonts, bgBGLayouts},
|
{0x00000402, 1251, 866, 10007, L"Bulgarian", 35, CyrillicFonts, bgBGLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MY_MM
|
#ifdef LANGUAGE_MY_MM
|
||||||
{L"00000455", 0, 1, 2, L"Burmese", 1, UnicodeFonts, myMMLayouts},
|
{0x00000455, 0, 1, 2, L"Burmese", 1, UnicodeFonts, myMMLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_CA_ES
|
#ifdef LANGUAGE_CA_ES
|
||||||
{L"00000403", 1252, 850, 10000, L"Catalan", 217, LatinFonts, caESLayouts},
|
{0x00000403, 1252, 850, 10000, L"Catalan", 217, LatinFonts, caESLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_TW
|
#ifdef LANGUAGE_ZH_TW
|
||||||
{L"00000404", 950, 950, 10008, L"Chinese (Taiwan)", 237, ChineseTraditionalFonts, zhTWLayouts},
|
{0x00000404, 950, 950, 10008, L"Chinese (Taiwan)", 237, ChineseTraditionalFonts, zhTWLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_CN
|
#ifdef LANGUAGE_ZH_CN
|
||||||
{L"00000804", 936, 936, 10008, L"Chinese (PRC)", 45, ChineseSimplifiedFonts, zhCNLayouts},
|
{0x00000804, 936, 936, 10008, L"Chinese (PRC)", 45, ChineseSimplifiedFonts, zhCNLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_HK
|
#ifdef LANGUAGE_ZH_HK
|
||||||
{L"00000C04", 950, 950, 10008, L"Chinese (Hong Kong S.A.R.)", 104, ChineseTraditionalFonts, zhHKLayouts},
|
{0x00000C04, 950, 950, 10008, L"Chinese (Hong Kong S.A.R.)", 104, ChineseTraditionalFonts, zhHKLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_SG
|
#ifdef LANGUAGE_ZH_SG
|
||||||
{L"00001004", 936, 936, 10008, L"Chinese (Singapore)", 215, ChineseSimplifiedFonts, zhSGLayouts},
|
{0x00001004, 936, 936, 10008, L"Chinese (Singapore)", 215, ChineseSimplifiedFonts, zhSGLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_MO
|
#ifdef LANGUAGE_ZH_MO
|
||||||
{L"00001404", 950, 950, 10002, L"Chinese (Macau S.A.R.)", 151, ChineseTraditionalFonts, zhMOLayouts},
|
{0x00001404, 950, 950, 10002, L"Chinese (Macau S.A.R.)", 151, ChineseTraditionalFonts, zhMOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HR_HR
|
#ifdef LANGUAGE_HR_HR
|
||||||
{L"0000041A", 1250, 852, 10029, L"Croatian", 108, LatinFonts, hrHRLayouts},
|
{0x0000041A, 1250, 852, 10029, L"Croatian", 108, LatinFonts, hrHRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_CS_CZ
|
#ifdef LANGUAGE_CS_CZ
|
||||||
{L"00000405", 1250, 852, 10029, L"Czech", 75, LatinFonts, csCZLayouts},
|
{0x00000405, 1250, 852, 10029, L"Czech", 75, LatinFonts, csCZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DA_DK
|
#ifdef LANGUAGE_DA_DK
|
||||||
{L"00000406", 1252, 850, 10000, L"Danish", 61, LatinFonts, daDKLayouts},
|
{0x00000406, 1252, 850, 10000, L"Danish", 61, LatinFonts, daDKLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DV_MV
|
#ifdef LANGUAGE_DV_MV
|
||||||
{L"00000465", 0, 1, 2, L"Dhivehi (Maldives)", 165, UnicodeFonts, dvMVLayouts},
|
{0x00000465, 0, 1, 2, L"Dhivehi (Maldives)", 165, UnicodeFonts, dvMVLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NL_NL
|
#ifdef LANGUAGE_NL_NL
|
||||||
{L"00000413", 1252, 850, 10000, L"Dutch (Netherlands)", 176, LatinFonts, nlNLLayouts},
|
{0x00000413, 1252, 850, 10000, L"Dutch (Netherlands)", 176, LatinFonts, nlNLLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NL_BE
|
#ifdef LANGUAGE_NL_BE
|
||||||
{L"00000813", 1252, 850, 10000, L"Dutch (Belgium)", 21, LatinFonts, nlBELayouts},
|
{0x00000813, 1252, 850, 10000, L"Dutch (Belgium)", 21, LatinFonts, nlBELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_US
|
#ifdef LANGUAGE_EN_US
|
||||||
{L"00000409", 1252, 437, 10000, L"English (United States)", 244, LatinFonts, enUSLayouts},
|
{0x00000409, 1252, 437, 10000, L"English (United States)", 244, LatinFonts, enUSLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_GB
|
#ifdef LANGUAGE_EN_GB
|
||||||
{L"00000809", 1252, 850, 10000, L"English (United Kingdom)", 242, LatinFonts, enGBLayouts},
|
{0x00000809, 1252, 850, 10000, L"English (United Kingdom)", 242, LatinFonts, enGBLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_AU
|
#ifdef LANGUAGE_EN_AU
|
||||||
{L"00000C09", 1252, 850, 10000, L"English (Australia)", 12, LatinFonts, enAULayouts},
|
{0x00000C09, 1252, 850, 10000, L"English (Australia)", 12, LatinFonts, enAULayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_CA
|
#ifdef LANGUAGE_EN_CA
|
||||||
{L"00001009", 1252, 850, 10000, L"English (Canada)", 39, LatinFonts, enCALayouts},
|
{0x00001009, 1252, 850, 10000, L"English (Canada)", 39, LatinFonts, enCALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_NZ
|
#ifdef LANGUAGE_EN_NZ
|
||||||
{L"00001409", 1252, 850, 10000, L"English (New Zealand)", 183, LatinFonts, enNZLayouts},
|
{0x00001409, 1252, 850, 10000, L"English (New Zealand)", 183, LatinFonts, enNZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_IE
|
#ifdef LANGUAGE_EN_IE
|
||||||
{L"00001809", 1252, 850, 10000, L"English (Ireland)", 68, LatinFonts, enIELayouts},
|
{0x00001809, 1252, 850, 10000, L"English (Ireland)", 68, LatinFonts, enIELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_ZA
|
#ifdef LANGUAGE_EN_ZA
|
||||||
{L"00001C09", 1252, 437, 10000, L"English (South Africa)", 209, LatinFonts, enZALayouts},
|
{0x00001C09, 1252, 437, 10000, L"English (South Africa)", 209, LatinFonts, enZALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_JM
|
#ifdef LANGUAGE_EN_JM
|
||||||
{L"00002009", 1252, 850, 10000, L"English (Jamaica)", 124, LatinFonts, enJMLayouts},
|
{0x00002009, 1252, 850, 10000, L"English (Jamaica)", 124, LatinFonts, enJMLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_CB
|
#ifdef LANGUAGE_EN_CB
|
||||||
{L"00002409", 1252, 850, 10000, L"English (Caribbean)", 1, LatinFonts, enCBLayouts},
|
{0x00002409, 1252, 850, 10000, L"English (Caribbean)", 1, LatinFonts, enCBLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_BZ
|
#ifdef LANGUAGE_EN_BZ
|
||||||
{L"00002809", 1252, 850, 10000, L"English (Belize)", 24, LatinFonts, enBZLayouts},
|
{0x00002809, 1252, 850, 10000, L"English (Belize)", 24, LatinFonts, enBZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_TT
|
#ifdef LANGUAGE_EN_TT
|
||||||
{L"00002C09", 1252, 850, 10000, L"English (Trinidad)", 225, LatinFonts, enTTLayouts},
|
{0x00002C09, 1252, 850, 10000, L"English (Trinidad)", 225, LatinFonts, enTTLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_ZW
|
#ifdef LANGUAGE_EN_ZW
|
||||||
{L"00003009", 1252, 437, 10000, L"English (Zimbabwe)", 264, LatinFonts, enZWLayouts},
|
{0x00003009, 1252, 437, 10000, L"English (Zimbabwe)", 264, LatinFonts, enZWLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_PH
|
#ifdef LANGUAGE_EN_PH
|
||||||
{L"00003409", 1252, 437, 10000, L"English (Philippines)", 201, LatinFonts, enPHLayouts},
|
{0x00003409, 1252, 437, 10000, L"English (Philippines)", 201, LatinFonts, enPHLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EO_AA
|
#ifdef LANGUAGE_EO_AA
|
||||||
{L"0000048F", 1252, 437, 10000, L"Esperanto", 1, LatinFonts, eoAALayouts},
|
{0x0000048F, 1252, 437, 10000, L"Esperanto", 1, LatinFonts, eoAALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ET_EE
|
#ifdef LANGUAGE_ET_EE
|
||||||
{L"00000425", 1252, 775, 10029, L"Estonian", 70, LatinFonts, etEELayouts},
|
{0x00000425, 1252, 775, 10029, L"Estonian", 70, LatinFonts, etEELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FO_FO
|
#ifdef LANGUAGE_FO_FO
|
||||||
{L"00000438", 1252, 850, 10079, L"Faeroese", 81, LatinFonts, foFOLayouts},
|
{0x00000438, 1252, 850, 10079, L"Faeroese", 81, LatinFonts, foFOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FA_IR
|
#ifdef LANGUAGE_FA_IR
|
||||||
{L"00000429", 1256, 720, 10004, L"Farsi", 116, UnicodeFonts, faIRLayouts},
|
{0x00000429, 1256, 720, 10004, L"Farsi", 116, UnicodeFonts, faIRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FI_FI
|
#ifdef LANGUAGE_FI_FI
|
||||||
{L"0000040B", 1252, 850, 10000, L"Finnish", 77, LatinFonts, fiFILayouts},
|
{0x0000040B, 1252, 850, 10000, L"Finnish", 77, LatinFonts, fiFILayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_CA
|
#ifdef LANGUAGE_FR_CA
|
||||||
{L"00000C0C", 1252, 850, 10000, L"French (Canada)", 39, LatinFonts, frCALayouts},
|
{0x00000C0C, 1252, 850, 10000, L"French (Canada)", 39, LatinFonts, frCALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_FR
|
#ifdef LANGUAGE_FR_FR
|
||||||
{L"0000040C", 1252, 850, 10000, L"French (France)", 84, LatinFonts, frFRLayouts},
|
{0x0000040C, 1252, 850, 10000, L"French (France)", 84, LatinFonts, frFRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_BE
|
#ifdef LANGUAGE_FR_BE
|
||||||
{L"0000080C", 1252, 850, 10000, L"French (Belgium)", 21, LatinFonts, frBELayouts},
|
{0x0000080C, 1252, 850, 10000, L"French (Belgium)", 21, LatinFonts, frBELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_CH
|
#ifdef LANGUAGE_FR_CH
|
||||||
{L"0000100C", 1252, 850, 10000, L"French (Switzerland)", 223, LatinFonts, frCHLayouts},
|
{0x0000100C, 1252, 850, 10000, L"French (Switzerland)", 223, LatinFonts, frCHLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_LU
|
#ifdef LANGUAGE_FR_LU
|
||||||
{L"0000140C", 1252, 850, 10000, L"French (Luxembourg)", 147, LatinFonts, frLULayouts},
|
{0x0000140C, 1252, 850, 10000, L"French (Luxembourg)", 147, LatinFonts, frLULayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_MC
|
#ifdef LANGUAGE_FR_MC
|
||||||
{L"0000180C", 1252, 850, 10000, L"French (Monaco)", 158, LatinFonts, frMCLayouts},
|
{0x0000180C, 1252, 850, 10000, L"French (Monaco)", 158, LatinFonts, frMCLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_GL_ES
|
#ifdef LANGUAGE_GL_ES
|
||||||
{L"00000456", 1252, 850, 10000, L"Galician (Spain)", 217, LatinFonts, glESLayouts},
|
{0x00000456, 1252, 850, 10000, L"Galician (Spain)", 217, LatinFonts, glESLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KA_GE
|
#ifdef LANGUAGE_KA_GE
|
||||||
{L"00000437", 0, 1, 2, L"Georgian", 88, UnicodeFonts, kaGELayouts},
|
{0x00000437, 0, 1, 2, L"Georgian", 88, UnicodeFonts, kaGELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_DE
|
#ifdef LANGUAGE_DE_DE
|
||||||
{L"00000407", 1252, 850, 10000, L"German (Germany)", 94, LatinFonts, deDELayouts},
|
{0x00000407, 1252, 850, 10000, L"German (Germany)", 94, LatinFonts, deDELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_CH
|
#ifdef LANGUAGE_DE_CH
|
||||||
{L"00000807", 1252, 850, 10000, L"German (Switzerland)", 223, LatinFonts, deCHLayouts},
|
{0x00000807, 1252, 850, 10000, L"German (Switzerland)", 223, LatinFonts, deCHLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_AT
|
#ifdef LANGUAGE_DE_AT
|
||||||
{L"00000C07", 1252, 850, 10000, L"German (Austria)", 14, LatinFonts, deATLayouts},
|
{0x00000C07, 1252, 850, 10000, L"German (Austria)", 14, LatinFonts, deATLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_LU
|
#ifdef LANGUAGE_DE_LU
|
||||||
{L"00001007", 1252, 850, 10000, L"German (Luxembourg)", 147, LatinFonts, deLULayouts},
|
{0x00001007, 1252, 850, 10000, L"German (Luxembourg)", 147, LatinFonts, deLULayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_LI
|
#ifdef LANGUAGE_DE_LI
|
||||||
{L"00001407", 1252, 850, 10000, L"German (Liechtenstein)", 145, LatinFonts, deLILayouts},
|
{0x00001407, 1252, 850, 10000, L"German (Liechtenstein)", 145, LatinFonts, deLILayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EL_GR
|
#ifdef LANGUAGE_EL_GR
|
||||||
{L"00000408", 1253, 737, 10006, L"Greek", 98, GreekFonts, elGRLayouts},
|
{0x00000408, 1253, 737, 10006, L"Greek", 98, GreekFonts, elGRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_GU_IN
|
#ifdef LANGUAGE_GU_IN
|
||||||
{L"00000447", 0, 1, 2, L"Gujarati (India)", 113, UnicodeFonts, guINLayouts},
|
{0x00000447, 0, 1, 2, L"Gujarati (India)", 113, UnicodeFonts, guINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HE_IL
|
#ifdef LANGUAGE_HE_IL
|
||||||
{L"0000040D", 1255, 862, 10005, L"Hebrew", 117, HebrewFonts, heILLayouts},
|
{0x0000040D, 1255, 862, 10005, L"Hebrew", 117, HebrewFonts, heILLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HI_IN
|
#ifdef LANGUAGE_HI_IN
|
||||||
{L"00000439", 1252, 437, 10000, L"Hindi", 113, HindiFonts, hiINLayouts },
|
{0x00000439, 1252, 437, 10000, L"Hindi", 113, HindiFonts, hiINLayouts },
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HU_HU
|
#ifdef LANGUAGE_HU_HU
|
||||||
{L"0000040E", 1250, 852, 10029, L"Hungarian", 109, LatinFonts, huHULayouts},
|
{0x0000040E, 1250, 852, 10029, L"Hungarian", 109, LatinFonts, huHULayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_IS_IS
|
#ifdef LANGUAGE_IS_IS
|
||||||
{L"0000040F", 1252, 850, 10079, L"Icelandic", 110, LatinFonts, isISLayouts},
|
{0x0000040F, 1252, 850, 10079, L"Icelandic", 110, LatinFonts, isISLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ID_ID
|
#ifdef LANGUAGE_ID_ID
|
||||||
{L"00000421", 1252, 850, 10079, L"Indonesian", 111, LatinFonts, idIDLayouts},
|
{0x00000421, 1252, 850, 10079, L"Indonesian", 111, LatinFonts, idIDLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_IT_IT
|
#ifdef LANGUAGE_IT_IT
|
||||||
{L"00000410", 1252, 850, 10000, L"Italian (Italy)", 118, LatinFonts, itITLayouts},
|
{0x00000410, 1252, 850, 10000, L"Italian (Italy)", 118, LatinFonts, itITLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_IT_CH
|
#ifdef LANGUAGE_IT_CH
|
||||||
{L"00000810", 1252, 850, 10000, L"Italian (Switzerland)", 223, LatinFonts, itCHLayouts},
|
{0x00000810, 1252, 850, 10000, L"Italian (Switzerland)", 223, LatinFonts, itCHLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_JA_JP
|
#ifdef LANGUAGE_JA_JP
|
||||||
{L"00000411", 932, 932, 10001, L"Japanese", 122, JapaneseFonts, jaJPLayouts},
|
{0x00000411, 932, 932, 10001, L"Japanese", 122, JapaneseFonts, jaJPLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KN_IN
|
#ifdef LANGUAGE_KN_IN
|
||||||
{L"0000044B", 1252, 437, 10079, L"Kannada (India)", 113, LatinFonts, knINLayouts},
|
{0x0000044B, 1252, 437, 10079, L"Kannada (India)", 113, LatinFonts, knINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KK_KZ
|
#ifdef LANGUAGE_KK_KZ
|
||||||
{L"0000043F", 1251, 866, 10007, L"Kazakh", 137, CyrillicFonts, kkKZLayouts},
|
{0x0000043F, 1251, 866, 10007, L"Kazakh", 137, CyrillicFonts, kkKZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KOK_IN
|
#ifdef LANGUAGE_KOK_IN
|
||||||
{L"00000457", 0, 437, 2, L"Konkani", 113, UnicodeFonts, kokINLayouts},
|
{0x00000457, 0, 437, 2, L"Konkani", 113, UnicodeFonts, kokINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KO_KR
|
#ifdef LANGUAGE_KO_KR
|
||||||
{L"00000412", 949, 949, 10003, L"Korean", 134, KoreanFonts, koKRLayouts},
|
{0x00000412, 949, 949, 10003, L"Korean", 134, KoreanFonts, koKRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KY_KG
|
#ifdef LANGUAGE_KY_KG
|
||||||
{L"00000440", 1251, 866, 10007, L"Kyrgyz (Kyrgyzstan)", 130, CyrillicFonts, kyKGLayouts},
|
{0x00000440, 1251, 866, 10007, L"Kyrgyz (Kyrgyzstan)", 130, CyrillicFonts, kyKGLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_LV_LV
|
#ifdef LANGUAGE_LV_LV
|
||||||
{L"00000426", 1257, 775, 10029, L"Latvian", 140, LatinFonts, lvLVLayouts},
|
{0x00000426, 1257, 775, 10029, L"Latvian", 140, LatinFonts, lvLVLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_LT_LT
|
#ifdef LANGUAGE_LT_LT
|
||||||
{L"00000427", 1257, 775, 10029, L"Lithuanian", 141, LatinFonts, ltLTLayouts},
|
{0x00000427, 1257, 775, 10029, L"Lithuanian", 141, LatinFonts, ltLTLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MK_MK
|
#ifdef LANGUAGE_MK_MK
|
||||||
{L"0000042F", 1251, 866, 10007, L"FYRO Macedonian", 19618, CyrillicFonts, mkMKLayouts},
|
{0x0000042F, 1251, 866, 10007, L"FYRO Macedonian", 19618, CyrillicFonts, mkMKLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MS_BN
|
#ifdef LANGUAGE_MS_BN
|
||||||
{L"0000083E", 1252, 850, 10000, L"Malay (Brunei Darussalam)", 37, LatinFonts, msBNLayouts},
|
{0x0000083E, 1252, 850, 10000, L"Malay (Brunei Darussalam)", 37, LatinFonts, msBNLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MS_MY
|
#ifdef LANGUAGE_MS_MY
|
||||||
{L"0000043E", 1252, 850, 10000, L"Malay (Malaysia)", 167, LatinFonts, msMYLayouts},
|
{0x0000043E, 1252, 850, 10000, L"Malay (Malaysia)", 167, LatinFonts, msMYLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MR_IN
|
#ifdef LANGUAGE_MR_IN
|
||||||
{L"0000044E", 0, 1, 2, L"Marathi", 113, UnicodeFonts, mrINLayouts},
|
{0x0000044E, 0, 1, 2, L"Marathi", 113, UnicodeFonts, mrINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MN_MN
|
#ifdef LANGUAGE_MN_MN
|
||||||
{L"00000450", 1251, 866, 10007, L"Mongolian (Mongolia)", 154, CyrillicFonts, mnMNLayouts},
|
{0x00000450, 1251, 866, 10007, L"Mongolian (Mongolia)", 154, CyrillicFonts, mnMNLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NB_NO
|
#ifdef LANGUAGE_NB_NO
|
||||||
{L"00000414", 1252, 850, 10000, L"Norwegian (Bokmal)", 177, LatinFonts, nbNOLayouts},
|
{0x00000414, 1252, 850, 10000, L"Norwegian (Bokmal)", 177, LatinFonts, nbNOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NN_NO
|
#ifdef LANGUAGE_NN_NO
|
||||||
{L"00000814", 1252, 850, 10000, L"Norwegian (Nynorsk)", 177, LatinFonts, nnNOLayouts},
|
{0x00000814, 1252, 850, 10000, L"Norwegian (Nynorsk)", 177, LatinFonts, nnNOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PL_PL
|
#ifdef LANGUAGE_PL_PL
|
||||||
{L"00000415", 1250, 852, 10029, L"Polish", 191, LatinFonts, plPLLayouts},
|
{0x00000415, 1250, 852, 10029, L"Polish", 191, LatinFonts, plPLLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PT_PT
|
#ifdef LANGUAGE_PT_PT
|
||||||
{L"00000816", 1252, 850, 10000, L"Portuguese (Portugal)", 193, LatinFonts, ptPTLayouts},
|
{0x00000816, 1252, 850, 10000, L"Portuguese (Portugal)", 193, LatinFonts, ptPTLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PT_BR
|
#ifdef LANGUAGE_PT_BR
|
||||||
{L"00000416", 1252, 850, 10000, L"Portuguese (Brazil)", 32, LatinFonts, ptBRLayouts},
|
{0x00000416, 1252, 850, 10000, L"Portuguese (Brazil)", 32, LatinFonts, ptBRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PA_IN
|
#ifdef LANGUAGE_PA_IN
|
||||||
{L"00000446", 0, 1, 2, L"Punjabi (India)", 113, UnicodeFonts, paINLayouts},
|
{0x00000446, 0, 1, 2, L"Punjabi (India)", 113, UnicodeFonts, paINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_RO_RO
|
#ifdef LANGUAGE_RO_RO
|
||||||
{L"00000418", 28606, 28606, 10029, L"Romanian", 200, LatinFonts, roROLayouts},
|
{0x00000418, 28606, 28606, 10029, L"Romanian", 200, LatinFonts, roROLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_RM_CH
|
#ifdef LANGUAGE_RM_CH
|
||||||
{L"00000417", 1252, 850, 10000, L"Romansh", 223, LatinFonts, rmCHLayouts},
|
{0x00000417, 1252, 850, 10000, L"Romansh", 223, LatinFonts, rmCHLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_RU_RU
|
#ifdef LANGUAGE_RU_RU
|
||||||
{L"00000419", 1251, 866, 10007, L"Russian", 203, CyrillicFonts, ruRULayouts},
|
{0x00000419, 1251, 866, 10007, L"Russian", 203, CyrillicFonts, ruRULayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SA_IN
|
#ifdef LANGUAGE_SA_IN
|
||||||
{L"0000044F", 0, 1, 2, L"Sanskrit", 113, UnicodeFonts, saINLayouts},
|
{0x0000044F, 0, 1, 2, L"Sanskrit", 113, UnicodeFonts, saINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SR_SP
|
#ifdef LANGUAGE_SR_SP
|
||||||
{L"00000C1A", 1251, 855, 10007, L"Serbian (Cyrillic)", 271, CyrillicFonts, srSPLayouts},
|
{0x00000C1A, 1251, 855, 10007, L"Serbian (Cyrillic)", 271, CyrillicFonts, srSPLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SR_SP
|
#ifdef LANGUAGE_SR_SP
|
||||||
{L"0000081A", 1250, 852, 10029, L"Serbian (Latin)", 271, LatinFonts, srSPLayouts},
|
{0x0000081A, 1250, 852, 10029, L"Serbian (Latin)", 271, LatinFonts, srSPLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SK_SK
|
#ifdef LANGUAGE_SK_SK
|
||||||
{L"0000041B", 1250, 852, 10029, L"Slovak", 143, LatinFonts, skSKLayouts},
|
{0x0000041B, 1250, 852, 10029, L"Slovak", 143, LatinFonts, skSKLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SL_SI
|
#ifdef LANGUAGE_SL_SI
|
||||||
{L"00000424", 1250, 852, 10029, L"Slovenian", 212, LatinFonts, slSILayouts},
|
{0x00000424, 1250, 852, 10029, L"Slovenian", 212, LatinFonts, slSILayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_ES
|
#ifdef LANGUAGE_ES_ES
|
||||||
{L"0000040A", 1252, 850, 10000, L"Spanish (Traditional Sort)", 217, LatinFonts, esESLayouts},
|
{0x0000040A, 1252, 850, 10000, L"Spanish (Traditional Sort)", 217, LatinFonts, esESLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_MX
|
#ifdef LANGUAGE_ES_MX
|
||||||
{L"0000080A", 1252, 850, 10000, L"Spanish (Mexico)", 166, LatinFonts, esMXLayouts},
|
{0x0000080A, 1252, 850, 10000, L"Spanish (Mexico)", 166, LatinFonts, esMXLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_ES
|
#ifdef LANGUAGE_ES_ES
|
||||||
{L"00000C0A", 1252, 850, 10000, L"Spanish (International Sort)", 217, LatinFonts, esESLayouts},
|
{0x00000C0A, 1252, 850, 10000, L"Spanish (International Sort)", 217, LatinFonts, esESLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_GT
|
#ifdef LANGUAGE_ES_GT
|
||||||
{L"0000100A", 1252, 850, 10000, L"Spanish (Guatemala)", 99, LatinFonts, esGTLayouts},
|
{0x0000100A, 1252, 850, 10000, L"Spanish (Guatemala)", 99, LatinFonts, esGTLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_CR
|
#ifdef LANGUAGE_ES_CR
|
||||||
{L"0000140A", 1252, 850, 10000, L"Spanish (Costa Rica)", 54, LatinFonts, esCRLayouts},
|
{0x0000140A, 1252, 850, 10000, L"Spanish (Costa Rica)", 54, LatinFonts, esCRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PA
|
#ifdef LANGUAGE_ES_PA
|
||||||
{L"0000180A", 1252, 850, 10000, L"Spanish (Panama)", 192, LatinFonts, esPALayouts},
|
{0x0000180A, 1252, 850, 10000, L"Spanish (Panama)", 192, LatinFonts, esPALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_DO
|
#ifdef LANGUAGE_ES_DO
|
||||||
{L"00001C0A", 1252, 850, 10000, L"Spanish (Dominican Republic)", 65, LatinFonts, esDOLayouts},
|
{0x00001C0A, 1252, 850, 10000, L"Spanish (Dominican Republic)", 65, LatinFonts, esDOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_VE
|
#ifdef LANGUAGE_ES_VE
|
||||||
{L"0000200A", 1252, 850, 10000, L"Spanish (Venezuela)", 249, LatinFonts, esVELayouts},
|
{0x0000200A, 1252, 850, 10000, L"Spanish (Venezuela)", 249, LatinFonts, esVELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_CO
|
#ifdef LANGUAGE_ES_CO
|
||||||
{L"0000240A", 1252, 850, 10000, L"Spanish (Colombia)", 51, LatinFonts, esCOLayouts},
|
{0x0000240A, 1252, 850, 10000, L"Spanish (Colombia)", 51, LatinFonts, esCOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PE
|
#ifdef LANGUAGE_ES_PE
|
||||||
{L"0000280A", 1252, 850, 10000, L"Spanish (Peru)", 187, LatinFonts, esPELayouts},
|
{0x0000280A, 1252, 850, 10000, L"Spanish (Peru)", 187, LatinFonts, esPELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_AR
|
#ifdef LANGUAGE_ES_AR
|
||||||
{L"00002C0A", 1252, 850, 10000, L"Spanish (Argentina)", 11, LatinFonts, esARLayouts},
|
{0x00002C0A, 1252, 850, 10000, L"Spanish (Argentina)", 11, LatinFonts, esARLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_EC
|
#ifdef LANGUAGE_ES_EC
|
||||||
{L"0000300A", 1252, 850, 10000, L"Spanish (Ecuador)", 66, LatinFonts, esECLayouts},
|
{0x0000300A, 1252, 850, 10000, L"Spanish (Ecuador)", 66, LatinFonts, esECLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_CL
|
#ifdef LANGUAGE_ES_CL
|
||||||
{L"0000340A", 1252, 850, 10000, L"Spanish (Chile)", 46, LatinFonts, esCLLayouts},
|
{0x0000340A, 1252, 850, 10000, L"Spanish (Chile)", 46, LatinFonts, esCLLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_UY
|
#ifdef LANGUAGE_ES_UY
|
||||||
{L"0000380A", 1252, 850, 10000, L"Spanish (Uruguay)", 246, LatinFonts, esUYLayouts},
|
{0x0000380A, 1252, 850, 10000, L"Spanish (Uruguay)", 246, LatinFonts, esUYLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PY
|
#ifdef LANGUAGE_ES_PY
|
||||||
{L"00003C0A", 1252, 850, 10000, L"Spanish (Paraguay)", 185, LatinFonts, esPYLayouts},
|
{0x00003C0A, 1252, 850, 10000, L"Spanish (Paraguay)", 185, LatinFonts, esPYLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_BO
|
#ifdef LANGUAGE_ES_BO
|
||||||
{L"0000400A", 1252, 850, 10000, L"Spanish (Bolivia)", 26, LatinFonts, esBOLayouts},
|
{0x0000400A, 1252, 850, 10000, L"Spanish (Bolivia)", 26, LatinFonts, esBOLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_SV
|
#ifdef LANGUAGE_ES_SV
|
||||||
{L"0000440A", 1252, 850, 10000, L"Spanish (El Salvador)", 72, LatinFonts, esSVLayouts},
|
{0x0000440A, 1252, 850, 10000, L"Spanish (El Salvador)", 72, LatinFonts, esSVLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_HN
|
#ifdef LANGUAGE_ES_HN
|
||||||
{L"0000480A", 1252, 850, 10000, L"Spanish (Honduras)", 106, LatinFonts, esHNLayouts},
|
{0x0000480A, 1252, 850, 10000, L"Spanish (Honduras)", 106, LatinFonts, esHNLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_NI
|
#ifdef LANGUAGE_ES_NI
|
||||||
{L"00004C0A", 1252, 850, 10000, L"Spanish (Nicaragua)", 182, LatinFonts, esNILayouts},
|
{0x00004C0A, 1252, 850, 10000, L"Spanish (Nicaragua)", 182, LatinFonts, esNILayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PR
|
#ifdef LANGUAGE_ES_PR
|
||||||
{L"0000500A", 1252, 850, 10000, L"Spanish (Puerto Rico)", 202, LatinFonts, esPRLayouts},
|
{0x0000500A, 1252, 850, 10000, L"Spanish (Puerto Rico)", 202, LatinFonts, esPRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SW_KE
|
#ifdef LANGUAGE_SW_KE
|
||||||
{L"00000441", 1252, 437, 10000, L"Swahili", 129, LatinFonts, swKELayouts},
|
{0x00000441, 1252, 437, 10000, L"Swahili", 129, LatinFonts, swKELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SV_SE
|
#ifdef LANGUAGE_SV_SE
|
||||||
{L"0000041D", 1252, 850, 10000, L"Swedish", 221, LatinFonts, svSELayouts},
|
{0x0000041D, 1252, 850, 10000, L"Swedish", 221, LatinFonts, svSELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SV_FI
|
#ifdef LANGUAGE_SV_FI
|
||||||
{L"0000081D", 1252, 850, 10000, L"Swedish (Finland)", 77, LatinFonts, svFILayouts},
|
{0x0000081D, 1252, 850, 10000, L"Swedish (Finland)", 77, LatinFonts, svFILayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SYR_SY
|
#ifdef LANGUAGE_SYR_SY
|
||||||
{L"0000045A", 0, 1, 2, L"Syriac (Syria)", 222, UnicodeFonts, syrSYLayouts},
|
{0x0000045A, 0, 1, 2, L"Syriac (Syria)", 222, UnicodeFonts, syrSYLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TA_IN
|
#ifdef LANGUAGE_TA_IN
|
||||||
{L"00000449", 0, 1, 2, L"Tamil", 113, UnicodeFonts, taINLayouts},
|
{0x00000449, 0, 1, 2, L"Tamil", 113, UnicodeFonts, taINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TT_TA
|
#ifdef LANGUAGE_TT_TA
|
||||||
{L"00000444", 1251, 866, 10007, L"Tatar", 1, CyrillicFonts, ttTALayouts},
|
{0x00000444, 1251, 866, 10007, L"Tatar", 1, CyrillicFonts, ttTALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TE_IN
|
#ifdef LANGUAGE_TE_IN
|
||||||
{L"0000044A", 0, 1, 2, L"Telugu (India)", 113, UnicodeFonts, teINLayouts},
|
{0x0000044A, 0, 1, 2, L"Telugu (India)", 113, UnicodeFonts, teINLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TH_TH
|
#ifdef LANGUAGE_TH_TH
|
||||||
{L"0000041E", 874, 874, 10021, L"Thai", 227, UnicodeFonts, thTHLayouts},
|
{0x0000041E, 874, 874, 10021, L"Thai", 227, UnicodeFonts, thTHLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TR_TR
|
#ifdef LANGUAGE_TR_TR
|
||||||
{L"0000041F", 1254, 857, 10081, L"Turkish", 235, LatinFonts, trTRLayouts},
|
{0x0000041F, 1254, 857, 10081, L"Turkish", 235, LatinFonts, trTRLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UK_UA
|
#ifdef LANGUAGE_UK_UA
|
||||||
{L"00000422", 1251, 866, 10017, L"Ukrainian", 241, CyrillicFonts, ukUALayouts},
|
{0x00000422, 1251, 866, 10017, L"Ukrainian", 241, CyrillicFonts, ukUALayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UR_PK
|
#ifdef LANGUAGE_UR_PK
|
||||||
{L"00000420", 1256, 720, 10004, L"Urdu", 190, UnicodeFonts, urPKLayouts},
|
{0x00000420, 1256, 720, 10004, L"Urdu", 190, UnicodeFonts, urPKLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UZ_UZ
|
#ifdef LANGUAGE_UZ_UZ
|
||||||
{L"00000443", 1254, 857, 10029, L"Uzbek (Latin)", 247, LatinFonts, uzUZLayouts},
|
{0x00000443, 1254, 857, 10029, L"Uzbek (Latin)", 247, LatinFonts, uzUZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UZ_UZ
|
#ifdef LANGUAGE_UZ_UZ
|
||||||
{L"00000843", 1251, 866, 10007, L"Uzbek (Cyrillic)", 247, CyrillicFonts, uzUZLayouts},
|
{0x00000843, 1251, 866, 10007, L"Uzbek (Cyrillic)", 247, CyrillicFonts, uzUZLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_VI_VN
|
#ifdef LANGUAGE_VI_VN
|
||||||
{L"0000042A", 1258, 1258, 10000, L"Vietnamese", 251, UnicodeFonts, viVNLayouts},
|
{0x0000042A, 1258, 1258, 10000, L"Vietnamese", 251, UnicodeFonts, viVNLayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_WA_BE
|
#ifdef LANGUAGE_WA_BE
|
||||||
{L"00000490", 1252, 850, 10000, L"Walon", 21, LatinFonts, waBELayouts},
|
{0x00000490, 1252, 850, 10000, L"Walon", 21, LatinFonts, waBELayouts},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZU_ZU
|
#ifdef LANGUAGE_ZU_ZU
|
||||||
{L"00000435", 1252, 850, 10000, L"Zulu", 1, LatinFonts, zuZULayouts},
|
{0x00000435, 1252, 850, 10000, L"Zulu", 1, LatinFonts, zuZULayouts},
|
||||||
#endif
|
#endif
|
||||||
{NULL, 0, 0, 0, NULL, 0, NULL, NULL}
|
{0, 0, 0, 0, NULL, 0, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -26,20 +26,105 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* Settings entries with simple 1:1 mapping */
|
/* Setting entries with simple 1:1 mapping */
|
||||||
typedef struct _GENENTRY
|
typedef struct _GENENTRY
|
||||||
{
|
{
|
||||||
PCWSTR Id;
|
union
|
||||||
|
{
|
||||||
|
PCWSTR Str;
|
||||||
|
ULONG_PTR Ul;
|
||||||
|
} Id;
|
||||||
PCWSTR Value;
|
PCWSTR Value;
|
||||||
} GENENTRY, *PGENENTRY;
|
} GENENTRY, *PGENENTRY;
|
||||||
|
|
||||||
|
#if 1
|
||||||
PGENERIC_LIST
|
PGENERIC_LIST
|
||||||
CreateComputerTypeList(
|
CreateComputerTypeList(
|
||||||
IN HINF InfFile);
|
_In_ HINF InfFile);
|
||||||
|
|
||||||
PGENERIC_LIST
|
PGENERIC_LIST
|
||||||
CreateDisplayDriverList(
|
CreateDisplayDriverList(
|
||||||
IN HINF InfFile);
|
_In_ HINF InfFile);
|
||||||
|
|
||||||
|
PGENERIC_LIST
|
||||||
|
CreateKeyboardDriverList(
|
||||||
|
_In_ HINF InfFile);
|
||||||
|
|
||||||
|
PGENERIC_LIST
|
||||||
|
CreateLanguageList(
|
||||||
|
_In_ HINF InfFile,
|
||||||
|
_Inout_ LANGID* DefaultLanguage);
|
||||||
|
|
||||||
|
PGENERIC_LIST
|
||||||
|
CreateKeyboardLayoutList(
|
||||||
|
_In_ HINF InfFile,
|
||||||
|
_In_ LANGID LanguageId,
|
||||||
|
_Out_ KLID* DefaultKBLayout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief
|
||||||
|
* Callback type for enumerating "Name=Value" entries from INF section.
|
||||||
|
*
|
||||||
|
* @param[in] KeyName
|
||||||
|
* The name of the key.
|
||||||
|
*
|
||||||
|
* @param[in] KeyValue
|
||||||
|
* The optional value of the key.
|
||||||
|
*
|
||||||
|
* @param[in] Parameter
|
||||||
|
* Optional parameter context for the callback.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* 0x00: Failure, stop the enumeration;
|
||||||
|
* 0x01: Add the entry and continue the enumeration;
|
||||||
|
* 0x02: Skip the entry but continue the enumeration.
|
||||||
|
**/
|
||||||
|
typedef UCHAR
|
||||||
|
(NTAPI *PENUM_ENTRY_PROC)(
|
||||||
|
_In_ PCWSTR KeyName,
|
||||||
|
_In_opt_ PCWSTR KeyValue,
|
||||||
|
/**/_In_ ULONG_PTR DefaultEntry,/**/ // PCWSTR DefaultKeyName
|
||||||
|
_In_opt_ PVOID Parameter);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
EnumComputerTypeEntries(
|
||||||
|
_In_ HINF InfFile,
|
||||||
|
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||||
|
_In_opt_ PVOID Parameter);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
EnumDisplayDriverEntries(
|
||||||
|
_In_ HINF InfFile,
|
||||||
|
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||||
|
_In_opt_ PVOID Parameter);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
EnumKeyboardDriverEntries(
|
||||||
|
_In_ HINF InfFile,
|
||||||
|
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||||
|
_In_opt_ PVOID Parameter);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
EnumLanguageEntries(
|
||||||
|
_In_ HINF InfFile,
|
||||||
|
_Out_ LANGID* DefaultLanguage,
|
||||||
|
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||||
|
_In_opt_ PVOID Parameter);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
EnumKeyboardLayoutEntries(
|
||||||
|
_In_ HINF InfFile,
|
||||||
|
_In_ LANGID LanguageId,
|
||||||
|
_Out_ KLID* DefaultKBLayout,
|
||||||
|
_In_ PENUM_ENTRY_PROC EnumEntryProc,
|
||||||
|
_In_opt_ PVOID Parameter);
|
||||||
|
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
GetDefaultLanguageIndex(VOID);
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
ProcessComputerFiles(
|
ProcessComputerFiles(
|
||||||
|
@ -52,28 +137,10 @@ ProcessDisplayRegistry(
|
||||||
_In_ HINF InfFile,
|
_In_ HINF InfFile,
|
||||||
_In_ PCWSTR DisplayType);
|
_In_ PCWSTR DisplayType);
|
||||||
|
|
||||||
PGENERIC_LIST
|
|
||||||
CreateKeyboardDriverList(
|
|
||||||
IN HINF InfFile);
|
|
||||||
|
|
||||||
PGENERIC_LIST
|
|
||||||
CreateKeyboardLayoutList(
|
|
||||||
IN HINF InfFile,
|
|
||||||
IN PCWSTR LanguageId,
|
|
||||||
OUT PWSTR DefaultKBLayout);
|
|
||||||
|
|
||||||
PGENERIC_LIST
|
|
||||||
CreateLanguageList(
|
|
||||||
IN HINF InfFile,
|
|
||||||
OUT PWSTR DefaultLanguage);
|
|
||||||
|
|
||||||
ULONG
|
|
||||||
GetDefaultLanguageIndex(VOID);
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
ProcessKeyboardLayoutRegistry(
|
ProcessKeyboardLayoutRegistry(
|
||||||
_In_ PCWSTR pszLayoutId,
|
_In_ KLID LayoutId,
|
||||||
_In_ PCWSTR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -83,7 +150,7 @@ ProcessKeyboardLayoutFiles(
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
ProcessLocaleRegistry(
|
ProcessLocaleRegistry(
|
||||||
_In_ PCWSTR LanguageId);
|
_In_ LCID LocaleId);
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
SetGeoID(
|
SetGeoID(
|
||||||
|
|
|
@ -50,7 +50,7 @@ CheckUnattendedSetup(
|
||||||
UnattendInf = SpInfOpenInfFile(UnattendInfPath,
|
UnattendInf = SpInfOpenInfFile(UnattendInfPath,
|
||||||
NULL,
|
NULL,
|
||||||
INF_STYLE_OLDNT,
|
INF_STYLE_OLDNT,
|
||||||
pSetupData->LanguageId,
|
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||||
&ErrorLine);
|
&ErrorLine);
|
||||||
if (UnattendInf == INVALID_HANDLE_VALUE)
|
if (UnattendInf == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
@ -179,10 +179,7 @@ CheckUnattendedSetup(
|
||||||
{
|
{
|
||||||
if (INF_GetData(&Context, NULL, &Value))
|
if (INF_GetData(&Context, NULL, &Value))
|
||||||
{
|
{
|
||||||
LONG Id = wcstol(Value, NULL, 16);
|
pSetupData->LocaleID = (LCID)wcstoul(Value, NULL, 16);
|
||||||
RtlStringCchPrintfW(pSetupData->LocaleID,
|
|
||||||
ARRAYSIZE(pSetupData->LocaleID),
|
|
||||||
L"%08lx", Id);
|
|
||||||
INF_FreeData(Value);
|
INF_FreeData(Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -572,7 +569,7 @@ LoadSetupInf(
|
||||||
SpInfOpenInfFile(FileNameBuffer,
|
SpInfOpenInfFile(FileNameBuffer,
|
||||||
NULL,
|
NULL,
|
||||||
INF_STYLE_WIN4,
|
INF_STYLE_WIN4,
|
||||||
pSetupData->LanguageId,
|
LANGIDFROMLCID(pSetupData->LocaleID),
|
||||||
&ErrorLine);
|
&ErrorLine);
|
||||||
if (pSetupData->SetupInf == INVALID_HANDLE_VALUE)
|
if (pSetupData->SetupInf == INVALID_HANDLE_VALUE)
|
||||||
return ERROR_LOAD_TXTSETUPSIF;
|
return ERROR_LOAD_TXTSETUPSIF;
|
||||||
|
@ -1096,41 +1093,6 @@ VOID
|
||||||
FinishSetup(
|
FinishSetup(
|
||||||
IN OUT PUSETUP_DATA pSetupData)
|
IN OUT PUSETUP_DATA pSetupData)
|
||||||
{
|
{
|
||||||
/* Destroy the computer settings list */
|
|
||||||
if (pSetupData->ComputerList != NULL)
|
|
||||||
{
|
|
||||||
DestroyGenericList(pSetupData->ComputerList, TRUE);
|
|
||||||
pSetupData->ComputerList = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Destroy the display settings list */
|
|
||||||
if (pSetupData->DisplayList != NULL)
|
|
||||||
{
|
|
||||||
DestroyGenericList(pSetupData->DisplayList, TRUE);
|
|
||||||
pSetupData->DisplayList = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Destroy the keyboard settings list */
|
|
||||||
if (pSetupData->KeyboardList != NULL)
|
|
||||||
{
|
|
||||||
DestroyGenericList(pSetupData->KeyboardList, TRUE);
|
|
||||||
pSetupData->KeyboardList = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Destroy the keyboard layout list */
|
|
||||||
if (pSetupData->LayoutList != NULL)
|
|
||||||
{
|
|
||||||
DestroyGenericList(pSetupData->LayoutList, TRUE);
|
|
||||||
pSetupData->LayoutList = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Destroy the languages list */
|
|
||||||
if (pSetupData->LanguageList != NULL)
|
|
||||||
{
|
|
||||||
DestroyGenericList(pSetupData->LanguageList, FALSE);
|
|
||||||
pSetupData->LanguageList = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Close the Setup INF */
|
/* Close the Setup INF */
|
||||||
SpInfCloseInfFile(pSetupData->SetupInf);
|
SpInfCloseInfFile(pSetupData->SetupInf);
|
||||||
}
|
}
|
||||||
|
@ -1148,7 +1110,6 @@ UpdateRegistry(
|
||||||
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
|
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
|
||||||
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
|
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
|
||||||
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
|
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
|
||||||
/**/IN PCWSTR SelectedLanguageId, /* HACK HACK! */
|
|
||||||
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL,
|
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL,
|
||||||
IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL)
|
IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL)
|
||||||
{
|
{
|
||||||
|
@ -1161,6 +1122,11 @@ UpdateRegistry(
|
||||||
BOOLEAN Success;
|
BOOLEAN Success;
|
||||||
BOOLEAN ShouldRepairRegistry = FALSE;
|
BOOLEAN ShouldRepairRegistry = FALSE;
|
||||||
BOOLEAN Delete;
|
BOOLEAN Delete;
|
||||||
|
LANGID SelectedLanguageId = LANGIDFROMLCID(pSetupData->LocaleID);
|
||||||
|
|
||||||
|
__debugbreak();
|
||||||
|
|
||||||
|
__debugbreak();
|
||||||
|
|
||||||
if (RepairUpdateFlag)
|
if (RepairUpdateFlag)
|
||||||
{
|
{
|
||||||
|
@ -1274,7 +1240,7 @@ DoUpdate:
|
||||||
|
|
||||||
if (!ImportRegistryFile(pSetupData->SourcePath.Buffer,
|
if (!ImportRegistryFile(pSetupData->SourcePath.Buffer,
|
||||||
File, Section,
|
File, Section,
|
||||||
pSetupData->LanguageId, Delete))
|
LANGIDFROMLCID(pSetupData->LocaleID), Delete))
|
||||||
{
|
{
|
||||||
DPRINT1("Importing %S failed\n", File);
|
DPRINT1("Importing %S failed\n", File);
|
||||||
INF_FreeData(File);
|
INF_FreeData(File);
|
||||||
|
@ -1288,14 +1254,6 @@ DoUpdate:
|
||||||
{
|
{
|
||||||
/* See the explanation for this test above */
|
/* See the explanation for this test above */
|
||||||
|
|
||||||
PGENERIC_LIST_ENTRY Entry;
|
|
||||||
PCWSTR LanguageId; // LocaleID;
|
|
||||||
|
|
||||||
Entry = GetCurrentListEntry(pSetupData->DisplayList);
|
|
||||||
ASSERT(Entry);
|
|
||||||
pSetupData->DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
|
||||||
ASSERT(pSetupData->DisplayType);
|
|
||||||
|
|
||||||
/* Update display registry settings */
|
/* Update display registry settings */
|
||||||
if (StatusRoutine) StatusRoutine(DisplaySettingsUpdate);
|
if (StatusRoutine) StatusRoutine(DisplaySettingsUpdate);
|
||||||
if (!ProcessDisplayRegistry(pSetupData->SetupInf, pSetupData->DisplayType))
|
if (!ProcessDisplayRegistry(pSetupData->SetupInf, pSetupData->DisplayType))
|
||||||
|
@ -1304,14 +1262,9 @@ DoUpdate:
|
||||||
goto Cleanup;
|
goto Cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
Entry = GetCurrentListEntry(pSetupData->LanguageList);
|
|
||||||
ASSERT(Entry);
|
|
||||||
LanguageId = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
|
||||||
ASSERT(LanguageId);
|
|
||||||
|
|
||||||
/* Set the locale */
|
/* Set the locale */
|
||||||
if (StatusRoutine) StatusRoutine(LocaleSettingsUpdate);
|
if (StatusRoutine) StatusRoutine(LocaleSettingsUpdate);
|
||||||
if (!ProcessLocaleRegistry(/*pSetupData->*/LanguageId))
|
if (!ProcessLocaleRegistry(pSetupData->LocaleID))
|
||||||
{
|
{
|
||||||
ErrorNumber = ERROR_UPDATE_LOCALESETTINGS;
|
ErrorNumber = ERROR_UPDATE_LOCALESETTINGS;
|
||||||
goto Cleanup;
|
goto Cleanup;
|
||||||
|
@ -1327,12 +1280,7 @@ DoUpdate:
|
||||||
|
|
||||||
if (!IsUnattendedSetup)
|
if (!IsUnattendedSetup)
|
||||||
{
|
{
|
||||||
Entry = GetCurrentListEntry(pSetupData->LayoutList);
|
/* Update keyboard layout settings with user overriden values */
|
||||||
ASSERT(Entry);
|
|
||||||
pSetupData->LayoutId = ((PGENENTRY)GetListEntryData(Entry))->Id;
|
|
||||||
ASSERT(pSetupData->LayoutId);
|
|
||||||
|
|
||||||
/* Update keyboard layout settings with user-overridden values */
|
|
||||||
// FIXME: Wouldn't it be better to do it all at once
|
// FIXME: Wouldn't it be better to do it all at once
|
||||||
// with the AddKeyboardLayouts() step?
|
// with the AddKeyboardLayouts() step?
|
||||||
if (StatusRoutine) StatusRoutine(KeybSettingsUpdate);
|
if (StatusRoutine) StatusRoutine(KeybSettingsUpdate);
|
||||||
|
@ -1370,7 +1318,7 @@ DoUpdate:
|
||||||
if (SubstSettings)
|
if (SubstSettings)
|
||||||
{
|
{
|
||||||
/* HACK */
|
/* HACK */
|
||||||
DoRegistryFontFixup(SubstSettings, wcstoul(SelectedLanguageId, NULL, 16));
|
DoRegistryFontFixup(SubstSettings, SelectedLanguageId);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,13 @@ extern HANDLE ProcessHeap;
|
||||||
#include "errorcode.h"
|
#include "errorcode.h"
|
||||||
#include "spapisup/fileqsup.h"
|
#include "spapisup/fileqsup.h"
|
||||||
#include "spapisup/infsupp.h"
|
#include "spapisup/infsupp.h"
|
||||||
#include "utils/linklist.h"
|
#include "utils/linklist.h" // FIXME: Is this still needed?
|
||||||
#include "utils/ntverrsrc.h"
|
#include "utils/ntverrsrc.h"
|
||||||
// #include "utils/arcname.h"
|
// #include "utils/arcname.h"
|
||||||
#include "utils/bldrsup.h"
|
#include "utils/bldrsup.h"
|
||||||
#include "utils/filesup.h"
|
#include "utils/filesup.h"
|
||||||
#include "utils/fsrec.h"
|
#include "utils/fsrec.h"
|
||||||
#include "utils/genlist.h"
|
#include "utils/genlist.h" // FIXME: May be moved to usetup only
|
||||||
#include "utils/inicache.h"
|
#include "utils/inicache.h"
|
||||||
#include "utils/partinfo.h"
|
#include "utils/partinfo.h"
|
||||||
#include "utils/partlist.h"
|
#include "utils/partlist.h"
|
||||||
|
@ -126,24 +126,14 @@ typedef struct _USETUP_DATA
|
||||||
LONG AutoPartition;
|
LONG AutoPartition;
|
||||||
LONG FsType;
|
LONG FsType;
|
||||||
|
|
||||||
/* Settings lists *****/
|
|
||||||
PGENERIC_LIST ComputerList;
|
|
||||||
PGENERIC_LIST DisplayList;
|
|
||||||
PGENERIC_LIST KeyboardList;
|
|
||||||
PGENERIC_LIST LayoutList;
|
|
||||||
PGENERIC_LIST LanguageList;
|
|
||||||
|
|
||||||
/* Settings *****/
|
/* Settings *****/
|
||||||
ARCHITECTURE_TYPE ArchType; //< Target architecture (MachineType)
|
ARCHITECTURE_TYPE ArchType; //< Target architecture (MachineType)
|
||||||
PCWSTR ComputerType;
|
PCWSTR ComputerType;
|
||||||
PCWSTR DisplayType;
|
PCWSTR DisplayType;
|
||||||
// PCWSTR KeyboardDriver;
|
PCWSTR KeyboardDriver;
|
||||||
// PCWSTR MouseDriver;
|
// PCWSTR MouseDriver;
|
||||||
PCWSTR LayoutId; // DefaultKBLayout
|
LCID LocaleID; // Or just LANGID LanguageId == LANGIDFROMLCID(LocaleID) ?
|
||||||
|
KLID LayoutId; // DefaultKBLayout
|
||||||
/* Other stuff *****/
|
|
||||||
WCHAR LocaleID[9];
|
|
||||||
LANGID LanguageId;
|
|
||||||
|
|
||||||
ULONG RequiredPartitionDiskSpace;
|
ULONG RequiredPartitionDiskSpace;
|
||||||
WCHAR InstallationDirectory[MAX_PATH];
|
WCHAR InstallationDirectory[MAX_PATH];
|
||||||
|
@ -241,7 +231,6 @@ UpdateRegistry(
|
||||||
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
|
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
|
||||||
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
|
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
|
||||||
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
|
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
|
||||||
/**/IN PCWSTR SelectedLanguageId, /* HACK HACK! */
|
|
||||||
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL,
|
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL,
|
||||||
IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL);
|
IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL);
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "reactos.h"
|
#include "reactos.h"
|
||||||
#include <winnls.h> // For GetUserDefaultLCID()
|
|
||||||
|
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <ndk/obfuncs.h>
|
#include <ndk/obfuncs.h>
|
||||||
|
@ -914,16 +913,16 @@ DeviceDlgProc(
|
||||||
SetWindowLongPtrW(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pSetupData);
|
SetWindowLongPtrW(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pSetupData);
|
||||||
|
|
||||||
hList = GetDlgItem(hwndDlg, IDC_COMPUTER);
|
hList = GetDlgItem(hwndDlg, IDC_COMPUTER);
|
||||||
InitGenericComboList(hList, pSetupData->USetupData.ComputerList, GetSettingDescription);
|
InitGenericComboList(hList, pSetupData->ComputerList, GetSettingDescription);
|
||||||
|
|
||||||
hList = GetDlgItem(hwndDlg, IDC_DISPLAY);
|
hList = GetDlgItem(hwndDlg, IDC_DISPLAY);
|
||||||
InitGenericComboList(hList, pSetupData->USetupData.DisplayList, GetSettingDescription);
|
InitGenericComboList(hList, pSetupData->DisplayList, GetSettingDescription);
|
||||||
|
|
||||||
hList = GetDlgItem(hwndDlg, IDC_KEYBOARD);
|
hList = GetDlgItem(hwndDlg, IDC_KEYBOARD);
|
||||||
InitGenericComboList(hList, pSetupData->USetupData.KeyboardList, GetSettingDescription);
|
InitGenericComboList(hList, pSetupData->KeyboardList, GetSettingDescription);
|
||||||
|
|
||||||
// hList = GetDlgItem(hwndDlg, IDC_KEYBOARD_LAYOUT);
|
// hList = GetDlgItem(hwndDlg, IDC_KEYBOARD_LAYOUT);
|
||||||
// InitGenericComboList(hList, pSetupData->USetupData.LayoutList, GetSettingDescription);
|
// InitGenericComboList(hList, pSetupData->LayoutList, GetSettingDescription);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -964,19 +963,19 @@ DeviceDlgProc(
|
||||||
case PSN_WIZNEXT: /* Set the selected data */
|
case PSN_WIZNEXT: /* Set the selected data */
|
||||||
{
|
{
|
||||||
hList = GetDlgItem(hwndDlg, IDC_COMPUTER);
|
hList = GetDlgItem(hwndDlg, IDC_COMPUTER);
|
||||||
SetCurrentListEntry(pSetupData->USetupData.ComputerList,
|
SetCurrentListEntry(pSetupData->ComputerList,
|
||||||
GetSelectedComboListItem(hList));
|
GetSelectedComboListItem(hList));
|
||||||
|
|
||||||
hList = GetDlgItem(hwndDlg, IDC_DISPLAY);
|
hList = GetDlgItem(hwndDlg, IDC_DISPLAY);
|
||||||
SetCurrentListEntry(pSetupData->USetupData.DisplayList,
|
SetCurrentListEntry(pSetupData->DisplayList,
|
||||||
GetSelectedComboListItem(hList));
|
GetSelectedComboListItem(hList));
|
||||||
|
|
||||||
hList = GetDlgItem(hwndDlg, IDC_KEYBOARD);
|
hList = GetDlgItem(hwndDlg, IDC_KEYBOARD);
|
||||||
SetCurrentListEntry(pSetupData->USetupData.KeyboardList,
|
SetCurrentListEntry(pSetupData->KeyboardList,
|
||||||
GetSelectedComboListItem(hList));
|
GetSelectedComboListItem(hList));
|
||||||
|
|
||||||
// hList = GetDlgItem(hwndDlg, IDC_KEYBOARD_LAYOUT);
|
// hList = GetDlgItem(hwndDlg, IDC_KEYBOARD_LAYOUT);
|
||||||
// SetCurrentListEntry(pSetupData->USetupData.LayoutList,
|
// SetCurrentListEntry(pSetupData->LayoutList,
|
||||||
// GetSelectedComboListItem(hList));
|
// GetSelectedComboListItem(hList));
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -1063,17 +1062,17 @@ SummaryDlgProc(
|
||||||
SetDlgItemTextW(hwndDlg, IDC_INSTALLSOURCE, L"n/a");
|
SetDlgItemTextW(hwndDlg, IDC_INSTALLSOURCE, L"n/a");
|
||||||
SetDlgItemTextW(hwndDlg, IDC_ARCHITECTURE, L"n/a");
|
SetDlgItemTextW(hwndDlg, IDC_ARCHITECTURE, L"n/a");
|
||||||
|
|
||||||
GetSettingDescription(GetCurrentListEntry(pSetupData->USetupData.ComputerList),
|
GetSettingDescription(GetCurrentListEntry(pSetupData->ComputerList),
|
||||||
CurrentItemText,
|
CurrentItemText,
|
||||||
ARRAYSIZE(CurrentItemText));
|
ARRAYSIZE(CurrentItemText));
|
||||||
SetDlgItemTextW(hwndDlg, IDC_COMPUTER, CurrentItemText);
|
SetDlgItemTextW(hwndDlg, IDC_COMPUTER, CurrentItemText);
|
||||||
|
|
||||||
GetSettingDescription(GetCurrentListEntry(pSetupData->USetupData.DisplayList),
|
GetSettingDescription(GetCurrentListEntry(pSetupData->DisplayList),
|
||||||
CurrentItemText,
|
CurrentItemText,
|
||||||
ARRAYSIZE(CurrentItemText));
|
ARRAYSIZE(CurrentItemText));
|
||||||
SetDlgItemTextW(hwndDlg, IDC_DISPLAY, CurrentItemText);
|
SetDlgItemTextW(hwndDlg, IDC_DISPLAY, CurrentItemText);
|
||||||
|
|
||||||
GetSettingDescription(GetCurrentListEntry(pSetupData->USetupData.KeyboardList),
|
GetSettingDescription(GetCurrentListEntry(pSetupData->KeyboardList),
|
||||||
CurrentItemText,
|
CurrentItemText,
|
||||||
ARRAYSIZE(CurrentItemText));
|
ARRAYSIZE(CurrentItemText));
|
||||||
SetDlgItemTextW(hwndDlg, IDC_KEYBOARD, CurrentItemText);
|
SetDlgItemTextW(hwndDlg, IDC_KEYBOARD, CurrentItemText);
|
||||||
|
@ -1997,7 +1996,6 @@ PrepareAndDoCopyThread(
|
||||||
pSetupData->RepairUpdateFlag,
|
pSetupData->RepairUpdateFlag,
|
||||||
pSetupData->PartitionList,
|
pSetupData->PartitionList,
|
||||||
InstallVolume->Info.DriveLetter,
|
InstallVolume->Info.DriveLetter,
|
||||||
pSetupData->SelectedLanguageId,
|
|
||||||
RegistryStatus,
|
RegistryStatus,
|
||||||
NULL /* SubstSettings */);
|
NULL /* SubstSettings */);
|
||||||
DBG_UNREFERENCED_PARAMETER(ErrorNumber);
|
DBG_UNREFERENCED_PARAMETER(ErrorNumber);
|
||||||
|
@ -2348,12 +2346,10 @@ RestartDlgProc(
|
||||||
BOOL LoadSetupData(
|
BOOL LoadSetupData(
|
||||||
IN OUT PSETUPDATA pSetupData)
|
IN OUT PSETUPDATA pSetupData)
|
||||||
{
|
{
|
||||||
|
BOOL ret = TRUE;
|
||||||
|
LANGID NewLanguageId = pSetupData->USetupData.LocaleID;
|
||||||
|
|
||||||
pSetupData->PartitionList = CreatePartitionList();
|
pSetupData->PartitionList = CreatePartitionList();
|
||||||
if (!pSetupData->PartitionList)
|
|
||||||
{
|
|
||||||
DPRINT1("Could not enumerate available disks; failing installation\n");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
pSetupData->NtOsInstallsList = CreateNTOSInstallationsList(pSetupData->PartitionList);
|
pSetupData->NtOsInstallsList = CreateNTOSInstallationsList(pSetupData->PartitionList);
|
||||||
if (!pSetupData->NtOsInstallsList)
|
if (!pSetupData->NtOsInstallsList)
|
||||||
|
@ -2361,79 +2357,20 @@ BOOL LoadSetupData(
|
||||||
|
|
||||||
/* Load the hardware, language and keyboard layout lists */
|
/* Load the hardware, language and keyboard layout lists */
|
||||||
|
|
||||||
pSetupData->USetupData.ComputerList = CreateComputerTypeList(pSetupData->USetupData.SetupInf);
|
pSetupData->ComputerList = CreateComputerTypeList(pSetupData->USetupData.SetupInf);
|
||||||
pSetupData->USetupData.DisplayList = CreateDisplayDriverList(pSetupData->USetupData.SetupInf);
|
pSetupData->DisplayList = CreateDisplayDriverList(pSetupData->USetupData.SetupInf);
|
||||||
pSetupData->USetupData.KeyboardList = CreateKeyboardDriverList(pSetupData->USetupData.SetupInf);
|
pSetupData->KeyboardList = CreateKeyboardDriverList(pSetupData->USetupData.SetupInf);
|
||||||
|
|
||||||
pSetupData->USetupData.LanguageList = CreateLanguageList(pSetupData->USetupData.SetupInf, pSetupData->DefaultLanguage);
|
pSetupData->LanguageList = CreateLanguageList(pSetupData->USetupData.SetupInf, &NewLanguageId);
|
||||||
|
|
||||||
/* If not unattended, overwrite language and locale with
|
|
||||||
* the current ones of the running ReactOS instance */
|
|
||||||
if (!IsUnattendedSetup)
|
|
||||||
{
|
|
||||||
LCID LocaleID = GetUserDefaultLCID();
|
|
||||||
|
|
||||||
StringCchPrintfW(pSetupData->DefaultLanguage,
|
|
||||||
_countof(pSetupData->DefaultLanguage),
|
|
||||||
L"%08lx", LocaleID);
|
|
||||||
|
|
||||||
StringCchPrintfW(pSetupData->USetupData.LocaleID,
|
|
||||||
_countof(pSetupData->USetupData.LocaleID),
|
|
||||||
L"%08lx", LocaleID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* new part */
|
/* new part */
|
||||||
pSetupData->SelectedLanguageId = pSetupData->DefaultLanguage;
|
pSetupData->USetupData.LocaleID = (LCID)NewLanguageId;
|
||||||
wcscpy(pSetupData->DefaultLanguage, pSetupData->USetupData.LocaleID); // FIXME: In principle, only when unattended.
|
|
||||||
pSetupData->USetupData.LanguageId = (LANGID)(wcstol(pSetupData->SelectedLanguageId, NULL, 16) & 0xFFFF);
|
|
||||||
|
|
||||||
pSetupData->USetupData.LayoutList = CreateKeyboardLayoutList(pSetupData->USetupData.SetupInf,
|
pSetupData->LayoutList = CreateKeyboardLayoutList(pSetupData->USetupData.SetupInf,
|
||||||
pSetupData->SelectedLanguageId,
|
LANGIDFROMLCID(pSetupData->USetupData.LocaleID),
|
||||||
pSetupData->DefaultKBLayout);
|
&pSetupData->USetupData.LayoutId);
|
||||||
|
|
||||||
/* If not unattended, overwrite keyboard layout with
|
return ret;
|
||||||
* the current one of the running ReactOS instance */
|
|
||||||
if (!IsUnattendedSetup)
|
|
||||||
{
|
|
||||||
C_ASSERT(_countof(pSetupData->DefaultKBLayout) >= KL_NAMELENGTH);
|
|
||||||
/* If the call fails, keep the default already stored in the buffer */
|
|
||||||
GetKeyboardLayoutNameW(pSetupData->DefaultKBLayout);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Change the default entries in the language and keyboard layout lists */
|
|
||||||
{
|
|
||||||
PGENERIC_LIST LanguageList = pSetupData->USetupData.LanguageList;
|
|
||||||
PGENERIC_LIST LayoutList = pSetupData->USetupData.LayoutList;
|
|
||||||
PGENERIC_LIST_ENTRY ListEntry;
|
|
||||||
|
|
||||||
/* Search for default language */
|
|
||||||
for (ListEntry = GetFirstListEntry(LanguageList); ListEntry;
|
|
||||||
ListEntry = GetNextListEntry(ListEntry))
|
|
||||||
{
|
|
||||||
PCWSTR LocaleId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
|
||||||
if (!_wcsicmp(pSetupData->DefaultLanguage, LocaleId))
|
|
||||||
{
|
|
||||||
DPRINT("found %S in LanguageList\n", LocaleId);
|
|
||||||
SetCurrentListEntry(LanguageList, ListEntry);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Search for default layout */
|
|
||||||
for (ListEntry = GetFirstListEntry(LayoutList); ListEntry;
|
|
||||||
ListEntry = GetNextListEntry(ListEntry))
|
|
||||||
{
|
|
||||||
PCWSTR pszLayoutId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
|
||||||
if (!_wcsicmp(pSetupData->DefaultKBLayout, pszLayoutId))
|
|
||||||
{
|
|
||||||
DPRINT("Found %S in LayoutList\n", pszLayoutId);
|
|
||||||
SetCurrentListEntry(LayoutList, ListEntry);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -149,17 +149,16 @@ typedef struct _SETUPDATA
|
||||||
PNTOS_INSTALLATION CurrentInstallation;
|
PNTOS_INSTALLATION CurrentInstallation;
|
||||||
PGENERIC_LIST NtOsInstallsList;
|
PGENERIC_LIST NtOsInstallsList;
|
||||||
|
|
||||||
|
/* Settings lists *****/ // FIXME: HACKHACK! Remove these!
|
||||||
|
PGENERIC_LIST ComputerList;
|
||||||
|
PGENERIC_LIST DisplayList;
|
||||||
|
PGENERIC_LIST KeyboardList;
|
||||||
|
PGENERIC_LIST LanguageList;
|
||||||
|
PGENERIC_LIST LayoutList;
|
||||||
|
|
||||||
/* Settings */
|
/* Settings */
|
||||||
LONG DestPartSize; // if partition doesn't exist, size of partition
|
LONG DestPartSize; // if partition doesn't exist, size of partition
|
||||||
|
|
||||||
/* txtsetup.sif data */
|
|
||||||
// LONG DefaultLang; // default language (table index)
|
|
||||||
// LONG DefaultKBLayout; // default keyboard layout (table index)
|
|
||||||
PCWSTR SelectedLanguageId;
|
|
||||||
WCHAR DefaultLanguage[20]; // Copy of string inside LanguageList
|
|
||||||
WCHAR DefaultKBLayout[20]; // Copy of string inside KeyboardList
|
|
||||||
|
|
||||||
} SETUPDATA, *PSETUPDATA;
|
} SETUPDATA, *PSETUPDATA;
|
||||||
|
|
||||||
extern HANDLE ProcessHeap;
|
extern HANDLE ProcessHeap;
|
||||||
|
|
|
@ -51,53 +51,50 @@ CHAR CharDoubleUpperRightCorner = 0xBB; /* double upper right corner */
|
||||||
CHAR CharDoubleLowerLeftCorner = 0xC8; /* double lower left corner */
|
CHAR CharDoubleLowerLeftCorner = 0xC8; /* double lower left corner */
|
||||||
CHAR CharDoubleLowerRightCorner = 0xBC; /* double lower right corner */
|
CHAR CharDoubleLowerRightCorner = 0xBC; /* double lower right corner */
|
||||||
|
|
||||||
|
|
||||||
|
LANGID SelectedLanguageId;
|
||||||
|
|
||||||
static
|
static
|
||||||
ULONG
|
ULONG
|
||||||
FindLanguageIndex(VOID)
|
FindLanguageIndex(VOID)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = 0;
|
ULONG lngIndex = 0;
|
||||||
|
|
||||||
if (SelectedLanguageId == NULL)
|
if (SelectedLanguageId == 0)
|
||||||
{
|
{
|
||||||
/* Default to en-US */
|
/* Default to en-US */
|
||||||
return 0; // FIXME!!
|
return 0; // FIXME!!
|
||||||
// SelectedLanguageId = L"00000409";
|
// SelectedLanguageId = 0x0409;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (ResourceList[lngIndex].MuiPages != NULL)
|
while (ResourceList[lngIndex].MuiPages != NULL)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(ResourceList[lngIndex].LanguageID, SelectedLanguageId) == 0)
|
if (ResourceList[lngIndex].LanguageID == SelectedLanguageId)
|
||||||
{
|
|
||||||
return lngIndex;
|
return lngIndex;
|
||||||
}
|
++lngIndex;
|
||||||
|
|
||||||
lngIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
IsLanguageAvailable(
|
IsLanguageAvailable(
|
||||||
PWCHAR LanguageId)
|
_In_ LANGID LanguageId)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = 0;
|
ULONG lngIndex = 0;
|
||||||
|
|
||||||
while (ResourceList[lngIndex].MuiPages != NULL)
|
while (ResourceList[lngIndex].MuiPages != NULL)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(ResourceList[lngIndex].LanguageID, LanguageId) == 0)
|
if (ResourceList[lngIndex].LanguageID == LanguageId)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
++lngIndex;
|
||||||
lngIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
const MUI_ENTRY *
|
const MUI_ENTRY *
|
||||||
FindMUIEntriesOfPage(
|
FindMUIEntriesOfPage(
|
||||||
|
@ -105,9 +102,9 @@ FindMUIEntriesOfPage(
|
||||||
{
|
{
|
||||||
ULONG muiIndex = 0;
|
ULONG muiIndex = 0;
|
||||||
ULONG lngIndex;
|
ULONG lngIndex;
|
||||||
const MUI_PAGE * Pages = NULL;
|
const MUI_PAGE* Pages;
|
||||||
|
|
||||||
lngIndex = max(FindLanguageIndex(), 0);
|
lngIndex = FindLanguageIndex();
|
||||||
Pages = ResourceList[lngIndex].MuiPages;
|
Pages = ResourceList[lngIndex].MuiPages;
|
||||||
|
|
||||||
while (Pages[muiIndex].MuiEntry != NULL)
|
while (Pages[muiIndex].MuiEntry != NULL)
|
||||||
|
@ -125,7 +122,7 @@ static
|
||||||
const MUI_ERROR *
|
const MUI_ERROR *
|
||||||
FindMUIErrorEntries(VOID)
|
FindMUIErrorEntries(VOID)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = max(FindLanguageIndex(), 0);
|
ULONG lngIndex = FindLanguageIndex();
|
||||||
return ResourceList[lngIndex].MuiErrors;
|
return ResourceList[lngIndex].MuiErrors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,11 +130,20 @@ static
|
||||||
const MUI_STRING *
|
const MUI_STRING *
|
||||||
FindMUIStringEntries(VOID)
|
FindMUIStringEntries(VOID)
|
||||||
{
|
{
|
||||||
ULONG lngIndex = max(FindLanguageIndex(), 0);
|
ULONG lngIndex = FindLanguageIndex();
|
||||||
return ResourceList[lngIndex].MuiStrings;
|
return ResourceList[lngIndex].MuiStrings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
VOID
|
||||||
|
MUISetCurrentLanguage(
|
||||||
|
_In_ LANGID LanguageId)
|
||||||
|
{
|
||||||
|
SelectedLanguageId = LanguageId;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
MUIClearPage(
|
MUIClearPage(
|
||||||
IN ULONG page)
|
IN ULONG page)
|
||||||
|
@ -267,7 +273,8 @@ MUIGetString(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(szErr, "Error: failed find string id %lu for language index %lu\n", Number, FindLanguageIndex());
|
sprintf(szErr, "Error: failed find string id %lu for language index %lu\n",
|
||||||
|
Number, FindLanguageIndex());
|
||||||
|
|
||||||
PopupError(szErr,
|
PopupError(szErr,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -540,10 +547,9 @@ SetConsoleCodePage(VOID)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
ULONG lngIndex = 0;
|
ULONG lngIndex = 0;
|
||||||
|
|
||||||
while (ResourceList[lngIndex].MuiPages != NULL)
|
while (ResourceList[lngIndex].MuiPages != NULL)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(ResourceList[lngIndex].LanguageID, SelectedLanguageId) == 0)
|
if (ResourceList[lngIndex].LanguageID == SelectedLanguageId)
|
||||||
{
|
{
|
||||||
wCodePage = ResourceList[lngIndex].OEMCPage;
|
wCodePage = ResourceList[lngIndex].OEMCPage;
|
||||||
SetConsoleOutputCP(wCodePage);
|
SetConsoleOutputCP(wCodePage);
|
||||||
|
|
|
@ -29,7 +29,7 @@ typedef struct
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
PCWSTR LanguageID;
|
LCID LanguageID; // LocaleID;
|
||||||
PCWSTR LanguageDescriptor;
|
PCWSTR LanguageDescriptor;
|
||||||
const MUI_PAGE * MuiPages;
|
const MUI_PAGE * MuiPages;
|
||||||
const MUI_ERROR * MuiErrors;
|
const MUI_ERROR * MuiErrors;
|
||||||
|
@ -39,7 +39,14 @@ typedef struct
|
||||||
#if 0
|
#if 0
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
IsLanguageAvailable(
|
IsLanguageAvailable(
|
||||||
PWCHAR LanguageId);
|
_In_ LANGID LanguageId);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern LANGID SelectedLanguageId;
|
||||||
|
#if 0
|
||||||
|
VOID
|
||||||
|
MUISetCurrentLanguage(
|
||||||
|
_In_ LANGID LanguageId);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -413,432 +413,432 @@
|
||||||
|
|
||||||
const MUI_LANGUAGE_RESOURCE ResourceList[] =
|
const MUI_LANGUAGE_RESOURCE ResourceList[] =
|
||||||
{
|
{
|
||||||
/* Lang ID, Language Name, Page strings, Error strings, Other strings */
|
/* LangID, Language Name, Page strings, Error strings, Other strings */
|
||||||
#ifdef LANGUAGE_AF_ZA
|
#ifdef LANGUAGE_AF_ZA
|
||||||
{L"00000436", L"Afrikaans", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000436, L"Afrikaans", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SQ_AL
|
#ifdef LANGUAGE_SQ_AL
|
||||||
{L"0000041C", L"Albanian (Albania)", sqALPages, sqALErrorEntries, sqALStrings},
|
{0x0000041C, L"Albanian (Albania)", sqALPages, sqALErrorEntries, sqALStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_SA
|
#ifdef LANGUAGE_AR_SA
|
||||||
{L"00000401", L"Arabic (Saudi Arabia)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000401, L"Arabic (Saudi Arabia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_IQ
|
#ifdef LANGUAGE_AR_IQ
|
||||||
{L"00000801", L"Arabic (Iraq)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000801, L"Arabic (Iraq)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_EG
|
#ifdef LANGUAGE_AR_EG
|
||||||
{L"00000C01", L"Arabic (Egypt)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000C01, L"Arabic (Egypt)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_LY
|
#ifdef LANGUAGE_AR_LY
|
||||||
{L"00001001", L"Arabic (Libya)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001001, L"Arabic (Libya)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_DZ
|
#ifdef LANGUAGE_AR_DZ
|
||||||
{L"00001401", L"Arabic (Algeria)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001401, L"Arabic (Algeria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_MA
|
#ifdef LANGUAGE_AR_MA
|
||||||
{L"00001801", L"Arabic (Morocco)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001801, L"Arabic (Morocco)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_TN
|
#ifdef LANGUAGE_AR_TN
|
||||||
{L"00001C01", L"Arabic (Tunisia)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001C01, L"Arabic (Tunisia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_OM
|
#ifdef LANGUAGE_AR_OM
|
||||||
{L"00002001", L"Arabic (Oman)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002001, L"Arabic (Oman)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_YE
|
#ifdef LANGUAGE_AR_YE
|
||||||
{L"00002401", L"Arabic (Yemen)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002401, L"Arabic (Yemen)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_SY
|
#ifdef LANGUAGE_AR_SY
|
||||||
{L"00002801", L"Arabic (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002801, L"Arabic (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_JO
|
#ifdef LANGUAGE_AR_JO
|
||||||
{L"00002C01", L"Arabic (Jordan)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002C01, L"Arabic (Jordan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_LB
|
#ifdef LANGUAGE_AR_LB
|
||||||
{L"00003001", L"Arabic (Lebanon)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00003001, L"Arabic (Lebanon)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_KW
|
#ifdef LANGUAGE_AR_KW
|
||||||
{L"00003401", L"Arabic (Kuwait)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00003401, L"Arabic (Kuwait)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_AE
|
#ifdef LANGUAGE_AR_AE
|
||||||
{L"00003801", L"Arabic (U.A.E.)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00003801, L"Arabic (U.A.E.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_BH
|
#ifdef LANGUAGE_AR_BH
|
||||||
{L"00003C01", L"Arabic (Bahrain)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00003C01, L"Arabic (Bahrain)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AR_QA
|
#ifdef LANGUAGE_AR_QA
|
||||||
{L"00004001", L"Arabic (Qatar)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00004001, L"Arabic (Qatar)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HY_AM
|
#ifdef LANGUAGE_HY_AM
|
||||||
{L"0000042B", L"Armenian", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000042B, L"Armenian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AZ_AZ
|
#ifdef LANGUAGE_AZ_AZ
|
||||||
{L"0000082C", L"Azeri (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000082C, L"Azeri (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_AZ_AZ
|
#ifdef LANGUAGE_AZ_AZ
|
||||||
{L"0000042C", L"Azeri (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000042C, L"Azeri (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EU_ES
|
#ifdef LANGUAGE_EU_ES
|
||||||
{L"0000042D", L"Basque", euESPages, euESErrorEntries, euESStrings},
|
{0x0000042D, L"Basque", euESPages, euESErrorEntries, euESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BE_BY
|
#ifdef LANGUAGE_BE_BY
|
||||||
{L"00000423", L"Belarusian", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000423, L"Belarusian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BN_BD
|
#ifdef LANGUAGE_BN_BD
|
||||||
{L"00000845", L"Bengali (Bangladesh)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
{0x00000845, L"Bengali (Bangladesh)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BN_IN
|
#ifdef LANGUAGE_BN_IN
|
||||||
{L"00000445", L"Bengali (India)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
{0x00000445, L"Bengali (India)", bnBDPages, bnBDErrorEntries, bnBDStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_BG_BG
|
#ifdef LANGUAGE_BG_BG
|
||||||
{L"00000402", L"Bulgarian", bgBGPages, bgBGErrorEntries, bgBGStrings},
|
{0x00000402, L"Bulgarian", bgBGPages, bgBGErrorEntries, bgBGStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MY_MM
|
#ifdef LANGUAGE_MY_MM
|
||||||
{L"00000455", L"Burmese", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000455, L"Burmese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_CA_ES
|
#ifdef LANGUAGE_CA_ES
|
||||||
{L"00000403", L"Catalan", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000403, L"Catalan", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_TW
|
#ifdef LANGUAGE_ZH_TW
|
||||||
{L"00000404", L"Chinese (Taiwan)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000404, L"Chinese (Taiwan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_CN
|
#ifdef LANGUAGE_ZH_CN
|
||||||
{L"00000804", L"Chinese (PRC)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000804, L"Chinese (PRC)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_HK
|
#ifdef LANGUAGE_ZH_HK
|
||||||
{L"00000C04", L"Chinese (Hong Kong S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000C04, L"Chinese (Hong Kong S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_SG
|
#ifdef LANGUAGE_ZH_SG
|
||||||
{L"00001004", L"Chinese (Singapore)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001004, L"Chinese (Singapore)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZH_MO
|
#ifdef LANGUAGE_ZH_MO
|
||||||
{L"00001404", L"Chinese (Macau S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001404, L"Chinese (Macau S.A.R.)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HR_HR
|
#ifdef LANGUAGE_HR_HR
|
||||||
{L"0000041A", L"Croatian", hrHRPages, hrHRErrorEntries, hrHRStrings},
|
{0x0000041A, L"Croatian", hrHRPages, hrHRErrorEntries, hrHRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_CS_CZ
|
#ifdef LANGUAGE_CS_CZ
|
||||||
{L"00000405", L"Czech", csCZPages, csCZErrorEntries, csCZStrings},
|
{0x00000405, L"Czech", csCZPages, csCZErrorEntries, csCZStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DA_DK
|
#ifdef LANGUAGE_DA_DK
|
||||||
{L"00000406", L"Danish", daDKPages, daDKErrorEntries, daDKStrings},
|
{0x00000406, L"Danish", daDKPages, daDKErrorEntries, daDKStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DV_MV
|
#ifdef LANGUAGE_DV_MV
|
||||||
{L"00000465", L"Dhivehi (Maldives)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000465, L"Dhivehi (Maldives)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NL_NL
|
#ifdef LANGUAGE_NL_NL
|
||||||
{L"00000413", L"Dutch (Netherlands)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
{0x00000413, L"Dutch (Netherlands)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NL_BE
|
#ifdef LANGUAGE_NL_BE
|
||||||
{L"00000813", L"Dutch (Belgium)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
{0x00000813, L"Dutch (Belgium)", nlNLPages, nlNLErrorEntries, nlNLStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_US
|
#ifdef LANGUAGE_EN_US
|
||||||
{L"00000409", L"English (United States)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000409, L"English (United States)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_GB
|
#ifdef LANGUAGE_EN_GB
|
||||||
{L"00000809", L"English (United Kingdom)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000809, L"English (United Kingdom)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_AU
|
#ifdef LANGUAGE_EN_AU
|
||||||
{L"00000C09", L"English (Australia)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000C09, L"English (Australia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_CA
|
#ifdef LANGUAGE_EN_CA
|
||||||
{L"00001009", L"English (Canada)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001009, L"English (Canada)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_NZ
|
#ifdef LANGUAGE_EN_NZ
|
||||||
{L"00001409", L"English (New Zealand)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001409, L"English (New Zealand)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_IE
|
#ifdef LANGUAGE_EN_IE
|
||||||
{L"00001809", L"English (Ireland)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001809, L"English (Ireland)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_ZA
|
#ifdef LANGUAGE_EN_ZA
|
||||||
{L"00001C09", L"English (South Africa)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00001C09, L"English (South Africa)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_JM
|
#ifdef LANGUAGE_EN_JM
|
||||||
{L"00002009", L"English (Jamaica)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002009, L"English (Jamaica)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_CB
|
#ifdef LANGUAGE_EN_CB
|
||||||
{L"00002409", L"English (Caribbean)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002409, L"English (Caribbean)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_BZ
|
#ifdef LANGUAGE_EN_BZ
|
||||||
{L"00002809", L"English (Belize)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002809, L"English (Belize)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_TT
|
#ifdef LANGUAGE_EN_TT
|
||||||
{L"00002C09", L"English (Trinidad)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00002C09, L"English (Trinidad)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_ZW
|
#ifdef LANGUAGE_EN_ZW
|
||||||
{L"00003009", L"English (Zimbabwe)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00003009, L"English (Zimbabwe)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EN_PH
|
#ifdef LANGUAGE_EN_PH
|
||||||
{L"00003409", L"English (Philippines)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00003409, L"English (Philippines)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EO_AA
|
#ifdef LANGUAGE_EO_AA
|
||||||
{L"0000048F", L"Esperanto", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000048F, L"Esperanto", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ET_EE
|
#ifdef LANGUAGE_ET_EE
|
||||||
{L"00000425", L"Estonian", etEEPages, etEEErrorEntries, etEEStrings},
|
{0x00000425, L"Estonian", etEEPages, etEEErrorEntries, etEEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FO_FO
|
#ifdef LANGUAGE_FO_FO
|
||||||
{L"00000438", L"Faeroese", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000438, L"Faeroese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FA_IR
|
#ifdef LANGUAGE_FA_IR
|
||||||
{L"00000429", L"Farsi", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000429, L"Farsi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FI_FI
|
#ifdef LANGUAGE_FI_FI
|
||||||
{L"0000040B", L"Finnish", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000040B, L"Finnish", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_CA
|
#ifdef LANGUAGE_FR_CA
|
||||||
{L"00000C0C", L"French (Canada)", frFRPages, frFRErrorEntries, frFRStrings},
|
{0x00000C0C, L"French (Canada)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_FR
|
#ifdef LANGUAGE_FR_FR
|
||||||
{L"0000040C", L"French (France)", frFRPages, frFRErrorEntries, frFRStrings},
|
{0x0000040C, L"French (France)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_BE
|
#ifdef LANGUAGE_FR_BE
|
||||||
{L"0000080C", L"French (Belgium)", frFRPages, frFRErrorEntries, frFRStrings},
|
{0x0000080C, L"French (Belgium)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_CH
|
#ifdef LANGUAGE_FR_CH
|
||||||
{L"0000100C", L"French (Switzerland)", frFRPages, frFRErrorEntries, frFRStrings},
|
{0x0000100C, L"French (Switzerland)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_LU
|
#ifdef LANGUAGE_FR_LU
|
||||||
{L"0000140C", L"French (Luxembourg)", frFRPages, frFRErrorEntries, frFRStrings},
|
{0x0000140C, L"French (Luxembourg)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_FR_MC
|
#ifdef LANGUAGE_FR_MC
|
||||||
{L"0000180C", L"French (Monaco)", frFRPages, frFRErrorEntries, frFRStrings},
|
{0x0000180C, L"French (Monaco)", frFRPages, frFRErrorEntries, frFRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_GL_ES
|
#ifdef LANGUAGE_GL_ES
|
||||||
{L"00000456", L"Galician (Spain)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000456, L"Galician (Spain)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KA_GE
|
#ifdef LANGUAGE_KA_GE
|
||||||
{L"00000437", L"Georgian", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000437, L"Georgian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_DE
|
#ifdef LANGUAGE_DE_DE
|
||||||
{L"00000407", L"German (Germany)", deDEPages, deDEErrorEntries, deDEStrings},
|
{0x00000407, L"German (Germany)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_CH
|
#ifdef LANGUAGE_DE_CH
|
||||||
{L"00000807", L"German (Switzerland)", deDEPages, deDEErrorEntries, deDEStrings},
|
{0x00000807, L"German (Switzerland)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_AT
|
#ifdef LANGUAGE_DE_AT
|
||||||
{L"00000C07", L"German (Austria)", deDEPages, deDEErrorEntries, deDEStrings},
|
{0x00000C07, L"German (Austria)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_LU
|
#ifdef LANGUAGE_DE_LU
|
||||||
{L"00001007", L"German (Luxembourg)", deDEPages, deDEErrorEntries, deDEStrings},
|
{0x00001007, L"German (Luxembourg)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_DE_LI
|
#ifdef LANGUAGE_DE_LI
|
||||||
{L"00001407", L"German (Liechtenstein)", deDEPages, deDEErrorEntries, deDEStrings},
|
{0x00001407, L"German (Liechtenstein)", deDEPages, deDEErrorEntries, deDEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_EL_GR
|
#ifdef LANGUAGE_EL_GR
|
||||||
{L"00000408", L"Greek", elGRPages, elGRErrorEntries, elGRStrings},
|
{0x00000408, L"Greek", elGRPages, elGRErrorEntries, elGRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_GU_IN
|
#ifdef LANGUAGE_GU_IN
|
||||||
{L"00000447", L"Gujarati (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000447, L"Gujarati (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HE_IL
|
#ifdef LANGUAGE_HE_IL
|
||||||
{L"0000040D", L"Hebrew", heILPages, heILErrorEntries, heILStrings},
|
{0x0000040D, L"Hebrew", heILPages, heILErrorEntries, heILStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HI_IN
|
#ifdef LANGUAGE_HI_IN
|
||||||
{L"00000439", L"Hindi", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000439, L"Hindi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_HU_HU
|
#ifdef LANGUAGE_HU_HU
|
||||||
{L"0000040E", L"Hungarian", huHUPages, huHUErrorEntries, huHUStrings},
|
{0x0000040E, L"Hungarian", huHUPages, huHUErrorEntries, huHUStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_IS_IS
|
#ifdef LANGUAGE_IS_IS
|
||||||
{L"0000040F", L"Icelandic", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000040F, L"Icelandic", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ID_ID
|
#ifdef LANGUAGE_ID_ID
|
||||||
{L"00000421", L"Indonesian", idIDPages, idIDErrorEntries, idIDStrings},
|
{0x00000421, L"Indonesian", idIDPages, idIDErrorEntries, idIDStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_IT_IT
|
#ifdef LANGUAGE_IT_IT
|
||||||
{L"00000410", L"Italian (Italy)", itITPages, itITErrorEntries, itITStrings},
|
{0x00000410, L"Italian (Italy)", itITPages, itITErrorEntries, itITStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_IT_CH
|
#ifdef LANGUAGE_IT_CH
|
||||||
{L"00000810", L"Italian (Switzerland)", itITPages, itITErrorEntries, itITStrings},
|
{0x00000810, L"Italian (Switzerland)", itITPages, itITErrorEntries, itITStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_JA_JP
|
#ifdef LANGUAGE_JA_JP
|
||||||
{L"00000411", L"Japanese", jaJPPages, jaJPErrorEntries, jaJPStrings},
|
{0x00000411, L"Japanese", jaJPPages, jaJPErrorEntries, jaJPStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KN_IN
|
#ifdef LANGUAGE_KN_IN
|
||||||
{L"0000044B", L"Kannada (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000044B, L"Kannada (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KK_KZ
|
#ifdef LANGUAGE_KK_KZ
|
||||||
{L"0000043F", L"Kazakh", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000043F, L"Kazakh", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KOK_IN
|
#ifdef LANGUAGE_KOK_IN
|
||||||
{L"00000457", L"Konkani", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000457, L"Konkani", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KO_KR
|
#ifdef LANGUAGE_KO_KR
|
||||||
{L"00000412", L"Korean", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000412, L"Korean", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_KY_KG
|
#ifdef LANGUAGE_KY_KG
|
||||||
{L"00000440", L"Kyrgyz (Kyrgyzstan)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000440, L"Kyrgyz (Kyrgyzstan)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_LV_LV
|
#ifdef LANGUAGE_LV_LV
|
||||||
{L"00000426", L"Latvian", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000426, L"Latvian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_LT_LT
|
#ifdef LANGUAGE_LT_LT
|
||||||
{L"00000427", L"Lithuanian", ltLTPages, ltLTErrorEntries, ltLTStrings},
|
{0x00000427, L"Lithuanian", ltLTPages, ltLTErrorEntries, ltLTStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MK_MK
|
#ifdef LANGUAGE_MK_MK
|
||||||
{L"0000042F", L"FYRO Macedonian", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000042F, L"FYRO Macedonian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MS_BN
|
#ifdef LANGUAGE_MS_BN
|
||||||
{L"0000083E", L"Malay (Brunei Darussalam)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000083E, L"Malay (Brunei Darussalam)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MS_MY
|
#ifdef LANGUAGE_MS_MY
|
||||||
{L"0000043E", L"Malay (Malaysia)", msMYPages, msMYErrorEntries, msMYStrings},
|
{0x0000043E, L"Malay (Malaysia)", msMYPages, msMYErrorEntries, msMYStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MR_IN
|
#ifdef LANGUAGE_MR_IN
|
||||||
{L"0000044E", L"Marathi", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000044E, L"Marathi", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_MN_MN
|
#ifdef LANGUAGE_MN_MN
|
||||||
{L"00000450", L"Mongolian (Mongolia)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000450, L"Mongolian (Mongolia)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NB_NO
|
#ifdef LANGUAGE_NB_NO
|
||||||
{L"00000414", L"Norwegian (Bokmal)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000414, L"Norwegian (Bokmal)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_NN_NO
|
#ifdef LANGUAGE_NN_NO
|
||||||
{L"00000814", L"Norwegian (Nynorsk)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000814, L"Norwegian (Nynorsk)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PL_PL
|
#ifdef LANGUAGE_PL_PL
|
||||||
{L"00000415", L"Polish", plPLPages, plPLErrorEntries, plPLStrings},
|
{0x00000415, L"Polish", plPLPages, plPLErrorEntries, plPLStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PT_BR
|
#ifdef LANGUAGE_PT_BR
|
||||||
{L"00000416", L"Portuguese (Brazil)", ptBRPages, ptBRErrorEntries, ptBRStrings},
|
{0x00000416, L"Portuguese (Brazil)", ptBRPages, ptBRErrorEntries, ptBRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PT_PT
|
#ifdef LANGUAGE_PT_PT
|
||||||
{L"00000816", L"Portuguese (Portugal)", ptPTPages, ptPTErrorEntries, ptPTStrings},
|
{0x00000816, L"Portuguese (Portugal)", ptPTPages, ptPTErrorEntries, ptPTStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_PA_IN
|
#ifdef LANGUAGE_PA_IN
|
||||||
{L"00000446", L"Punjabi (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000446, L"Punjabi (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_RO_RO
|
#ifdef LANGUAGE_RO_RO
|
||||||
{L"00000418", L"Romanian", roROPages, roROErrorEntries, roROStrings},
|
{0x00000418, L"Romanian", roROPages, roROErrorEntries, roROStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_RM_CH
|
#ifdef LANGUAGE_RM_CH
|
||||||
{L"00000417", L"Romansh", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000417, L"Romansh", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_RU_RU
|
#ifdef LANGUAGE_RU_RU
|
||||||
{L"00000419", L"Russian", ruRUPages, ruRUErrorEntries, ruRUStrings},
|
{0x00000419, L"Russian", ruRUPages, ruRUErrorEntries, ruRUStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SA_IN
|
#ifdef LANGUAGE_SA_IN
|
||||||
{L"0000044F", L"Sanskrit", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000044F, L"Sanskrit", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SR_SP
|
#ifdef LANGUAGE_SR_SP
|
||||||
{L"00000C1A", L"Serbian (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000C1A, L"Serbian (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SR_SP
|
#ifdef LANGUAGE_SR_SP
|
||||||
{L"0000081A", L"Serbian (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000081A, L"Serbian (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SK_SK
|
#ifdef LANGUAGE_SK_SK
|
||||||
{L"0000041B", L"Slovak", skSKPages, skSKErrorEntries, skSKStrings},
|
{0x0000041B, L"Slovak", skSKPages, skSKErrorEntries, skSKStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SL_SI
|
#ifdef LANGUAGE_SL_SI
|
||||||
{L"00000424", L"Slovenian", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000424, L"Slovenian", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_ES
|
#ifdef LANGUAGE_ES_ES
|
||||||
{L"0000040A", L"Spanish (Traditional Sort)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000040A, L"Spanish (Traditional Sort)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_MX
|
#ifdef LANGUAGE_ES_MX
|
||||||
{L"0000080A", L"Spanish (Mexico)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000080A, L"Spanish (Mexico)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_ES
|
#ifdef LANGUAGE_ES_ES
|
||||||
{L"00000C0A", L"Spanish (International Sort)", esESPages, esESErrorEntries, esESStrings},
|
{0x00000C0A, L"Spanish (International Sort)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_GT
|
#ifdef LANGUAGE_ES_GT
|
||||||
{L"0000100A", L"Spanish (Guatemala)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000100A, L"Spanish (Guatemala)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_CR
|
#ifdef LANGUAGE_ES_CR
|
||||||
{L"0000140A", L"Spanish (Costa Rica)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000140A, L"Spanish (Costa Rica)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PA
|
#ifdef LANGUAGE_ES_PA
|
||||||
{L"0000180A", L"Spanish (Panama)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000180A, L"Spanish (Panama)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_DO
|
#ifdef LANGUAGE_ES_DO
|
||||||
{L"00001C0A", L"Spanish (Dominican Republic)", esESPages, esESErrorEntries, esESStrings},
|
{0x00001C0A, L"Spanish (Dominican Republic)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_VE
|
#ifdef LANGUAGE_ES_VE
|
||||||
{L"0000200A", L"Spanish (Venezuela)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000200A, L"Spanish (Venezuela)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_CO
|
#ifdef LANGUAGE_ES_CO
|
||||||
{L"0000240A", L"Spanish (Colombia)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000240A, L"Spanish (Colombia)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PE
|
#ifdef LANGUAGE_ES_PE
|
||||||
{L"0000280A", L"Spanish (Peru)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000280A, L"Spanish (Peru)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_AR
|
#ifdef LANGUAGE_ES_AR
|
||||||
{L"00002C0A", L"Spanish (Argentina)", esESPages, esESErrorEntries, esESStrings},
|
{0x00002C0A, L"Spanish (Argentina)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_EC
|
#ifdef LANGUAGE_ES_EC
|
||||||
{L"0000300A", L"Spanish (Ecuador)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000300A, L"Spanish (Ecuador)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_CL
|
#ifdef LANGUAGE_ES_CL
|
||||||
{L"0000340A", L"Spanish (Chile)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000340A, L"Spanish (Chile)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_UY
|
#ifdef LANGUAGE_ES_UY
|
||||||
{L"0000380A", L"Spanish (Uruguay)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000380A, L"Spanish (Uruguay)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PY
|
#ifdef LANGUAGE_ES_PY
|
||||||
{L"00003C0A", L"Spanish (Paraguay)", esESPages, esESErrorEntries, esESStrings},
|
{0x00003C0A, L"Spanish (Paraguay)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_BO
|
#ifdef LANGUAGE_ES_BO
|
||||||
{L"0000400A", L"Spanish (Bolivia)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000400A, L"Spanish (Bolivia)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_SV
|
#ifdef LANGUAGE_ES_SV
|
||||||
{L"0000440A", L"Spanish (El Salvador)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000440A, L"Spanish (El Salvador)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_HN
|
#ifdef LANGUAGE_ES_HN
|
||||||
{L"0000480A", L"Spanish (Honduras)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000480A, L"Spanish (Honduras)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_NI
|
#ifdef LANGUAGE_ES_NI
|
||||||
{L"00004C0A", L"Spanish (Nicaragua)", esESPages, esESErrorEntries, esESStrings},
|
{0x00004C0A, L"Spanish (Nicaragua)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ES_PR
|
#ifdef LANGUAGE_ES_PR
|
||||||
{L"0000500A", L"Spanish (Puerto Rico)", esESPages, esESErrorEntries, esESStrings},
|
{0x0000500A, L"Spanish (Puerto Rico)", esESPages, esESErrorEntries, esESStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SW_KE
|
#ifdef LANGUAGE_SW_KE
|
||||||
{L"00000441", L"Swahili", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000441, L"Swahili", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SV_SE
|
#ifdef LANGUAGE_SV_SE
|
||||||
{L"0000041D", L"Swedish", svSEPages, svSEErrorEntries, svSEStrings},
|
{0x0000041D, L"Swedish", svSEPages, svSEErrorEntries, svSEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SV_FI
|
#ifdef LANGUAGE_SV_FI
|
||||||
{L"0000081D", L"Swedish (Finland)", svSEPages, svSEErrorEntries, svSEStrings},
|
{0x0000081D, L"Swedish (Finland)", svSEPages, svSEErrorEntries, svSEStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_SYR_SY
|
#ifdef LANGUAGE_SYR_SY
|
||||||
{L"0000045A", L"Syriac (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000045A, L"Syriac (Syria)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TA_IN
|
#ifdef LANGUAGE_TA_IN
|
||||||
{L"00000449", L"Tamil", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000449, L"Tamil", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TT_TA
|
#ifdef LANGUAGE_TT_TA
|
||||||
{L"00000444", L"Tatar", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000444, L"Tatar", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TE_IN
|
#ifdef LANGUAGE_TE_IN
|
||||||
{L"0000044A", L"Telugu (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000044A, L"Telugu (India)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TH_TH
|
#ifdef LANGUAGE_TH_TH
|
||||||
{L"0000041E", L"Thai", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000041E, L"Thai", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_TR_TR
|
#ifdef LANGUAGE_TR_TR
|
||||||
{L"0000041F", L"Turkish", trTRPages, trTRErrorEntries, trTRStrings},
|
{0x0000041F, L"Turkish", trTRPages, trTRErrorEntries, trTRStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UK_UA
|
#ifdef LANGUAGE_UK_UA
|
||||||
{L"00000422", L"Ukrainian", ukUAPages, ukUAErrorEntries, ukUAStrings},
|
{0x00000422, L"Ukrainian", ukUAPages, ukUAErrorEntries, ukUAStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UR_PK
|
#ifdef LANGUAGE_UR_PK
|
||||||
{L"00000420", L"Urdu", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000420, L"Urdu", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UZ_UZ
|
#ifdef LANGUAGE_UZ_UZ
|
||||||
{L"00000443", L"Uzbek (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000443, L"Uzbek (Latin)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_UZ_UZ
|
#ifdef LANGUAGE_UZ_UZ
|
||||||
{L"00000843", L"Uzbek (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000843, L"Uzbek (Cyrillic)", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_VI_VN
|
#ifdef LANGUAGE_VI_VN
|
||||||
{L"0000042A", L"Vietnamese", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x0000042A, L"Vietnamese", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_WA_BE
|
#ifdef LANGUAGE_WA_BE
|
||||||
{L"00000490", L"Walon", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000490, L"Walon", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
#ifdef LANGUAGE_ZU_ZU
|
#ifdef LANGUAGE_ZU_ZU
|
||||||
{L"00000435", L"Zulu", enUSPages, enUSErrorEntries, enUSStrings},
|
{0x00000435, L"Zulu", enUSPages, enUSErrorEntries, enUSStrings},
|
||||||
#endif
|
#endif
|
||||||
{NULL, NULL, NULL, NULL, NULL}
|
{0, NULL, NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
|
@ -63,11 +63,16 @@ static PPARTENTRY SystemPartition = NULL;
|
||||||
#define SystemVolume (SystemPartition->Volume)
|
#define SystemVolume (SystemPartition->Volume)
|
||||||
|
|
||||||
|
|
||||||
/* OTHER Stuff *****/
|
/* Settings lists *****/
|
||||||
|
PGENERIC_LIST ComputerList;
|
||||||
|
PGENERIC_LIST DisplayList;
|
||||||
|
PGENERIC_LIST KeyboardList;
|
||||||
|
PGENERIC_LIST LanguageList;
|
||||||
|
PGENERIC_LIST LayoutList;
|
||||||
|
|
||||||
PCWSTR SelectedLanguageId;
|
|
||||||
static WCHAR DefaultLanguage[20]; // Copy of string inside LanguageList
|
/* OTHER Stuff *****/
|
||||||
static WCHAR DefaultKBLayout[20]; // Copy of string inside KeyboardList
|
static LANGID DefaultLanguage;
|
||||||
|
|
||||||
static BOOLEAN RepairUpdateFlag = FALSE;
|
static BOOLEAN RepairUpdateFlag = FALSE;
|
||||||
|
|
||||||
|
@ -460,15 +465,16 @@ ConfirmQuit(PINPUT_RECORD Ir)
|
||||||
static VOID
|
static VOID
|
||||||
UpdateKBLayout(VOID)
|
UpdateKBLayout(VOID)
|
||||||
{
|
{
|
||||||
PGENERIC_LIST_ENTRY ListEntry;
|
|
||||||
KLID newLayout;
|
KLID newLayout;
|
||||||
|
|
||||||
newLayout = MUIDefaultKeyboardLayout(SelectedLanguageId);
|
newLayout = MUIDefaultKeyboardLayout(LANGIDFROMLCID(USetupData.LocaleID));
|
||||||
|
|
||||||
if (!USetupData.LayoutList)
|
if (!LayoutList)
|
||||||
{
|
{
|
||||||
USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, SelectedLanguageId, DefaultKBLayout);
|
LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf,
|
||||||
if (!USetupData.LayoutList)
|
LANGIDFROMLCID(USetupData.LocaleID),
|
||||||
|
&USetupData.LayoutId);
|
||||||
|
if (!LayoutList)
|
||||||
{
|
{
|
||||||
/* FIXME: Handle error! */
|
/* FIXME: Handle error! */
|
||||||
return;
|
return;
|
||||||
|
@ -478,14 +484,17 @@ UpdateKBLayout(VOID)
|
||||||
/* Search for default layout (if provided) */
|
/* Search for default layout (if provided) */
|
||||||
if (newLayout != 0)
|
if (newLayout != 0)
|
||||||
{
|
{
|
||||||
for (ListEntry = GetFirstListEntry(USetupData.LayoutList); ListEntry;
|
PGENERIC_LIST_ENTRY ListEntry;
|
||||||
|
KLID LayoutId;
|
||||||
|
|
||||||
|
for (ListEntry = GetFirstListEntry(LayoutList); ListEntry;
|
||||||
ListEntry = GetNextListEntry(ListEntry))
|
ListEntry = GetNextListEntry(ListEntry))
|
||||||
{
|
{
|
||||||
PCWSTR pszLayoutId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
LayoutId = (KLID)(((PGENENTRY)GetListEntryData(ListEntry))->Id.Ul);
|
||||||
KLID LayoutId = (KLID)(pszLayoutId ? wcstoul(pszLayoutId, NULL, 16) : 0);
|
|
||||||
if (newLayout == LayoutId)
|
if (newLayout == LayoutId)
|
||||||
{
|
{
|
||||||
SetCurrentListEntry(USetupData.LayoutList, ListEntry);
|
DPRINT("Found 0x%08lx in LayoutList\n", newLayout);
|
||||||
|
SetCurrentListEntry(LayoutList, ListEntry);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -543,16 +552,9 @@ GetNTOSInstallationName(
|
||||||
* QuitPage
|
* QuitPage
|
||||||
*
|
*
|
||||||
* SIDEEFFECTS
|
* SIDEEFFECTS
|
||||||
* Init Sdi
|
* Init PnpMgr
|
||||||
* Init USetupData.SourcePath
|
* Init USetupData
|
||||||
* Init USetupData.SourceRootPath
|
|
||||||
* Init USetupData.SourceRootDir
|
|
||||||
* Init USetupData.SetupInf
|
|
||||||
* Init USetupData.RequiredPartitionDiskSpace
|
|
||||||
* Init IsUnattendedSetup
|
* Init IsUnattendedSetup
|
||||||
* If unattended, init *List and sets the Codepage
|
|
||||||
* If unattended, init SelectedLanguageId
|
|
||||||
* If unattended, init USetupData.LanguageId
|
|
||||||
*
|
*
|
||||||
* RETURNS
|
* RETURNS
|
||||||
* Number of the next page.
|
* Number of the next page.
|
||||||
|
@ -561,8 +563,6 @@ static PAGE_NUMBER
|
||||||
SetupStartPage(PINPUT_RECORD Ir)
|
SetupStartPage(PINPUT_RECORD Ir)
|
||||||
{
|
{
|
||||||
ULONG Error;
|
ULONG Error;
|
||||||
PGENERIC_LIST_ENTRY ListEntry;
|
|
||||||
PCWSTR LocaleId;
|
|
||||||
|
|
||||||
MUIDisplayPage(SETUP_INIT_PAGE);
|
MUIDisplayPage(SETUP_INIT_PAGE);
|
||||||
|
|
||||||
|
@ -582,57 +582,9 @@ SetupStartPage(PINPUT_RECORD Ir)
|
||||||
if (WaitNoPendingInstallEvents(NULL) != STATUS_WAIT_0)
|
if (WaitNoPendingInstallEvents(NULL) != STATUS_WAIT_0)
|
||||||
DPRINT1("WaitNoPendingInstallEvents() failed to wait!\n");
|
DPRINT1("WaitNoPendingInstallEvents() failed to wait!\n");
|
||||||
|
|
||||||
|
/* Retrieve any supplemental options from the unattend file */
|
||||||
CheckUnattendedSetup(&USetupData);
|
CheckUnattendedSetup(&USetupData);
|
||||||
|
|
||||||
if (IsUnattendedSetup)
|
|
||||||
{
|
|
||||||
// TODO: Read options from inf
|
|
||||||
/* Load the hardware, language and keyboard layout lists */
|
|
||||||
|
|
||||||
USetupData.ComputerList = CreateComputerTypeList(USetupData.SetupInf);
|
|
||||||
USetupData.DisplayList = CreateDisplayDriverList(USetupData.SetupInf);
|
|
||||||
USetupData.KeyboardList = CreateKeyboardDriverList(USetupData.SetupInf);
|
|
||||||
|
|
||||||
USetupData.LanguageList = CreateLanguageList(USetupData.SetupInf, DefaultLanguage);
|
|
||||||
|
|
||||||
/* new part */
|
|
||||||
SelectedLanguageId = DefaultLanguage;
|
|
||||||
wcscpy(DefaultLanguage, USetupData.LocaleID);
|
|
||||||
USetupData.LanguageId = (LANGID)(wcstol(SelectedLanguageId, NULL, 16) & 0xFFFF);
|
|
||||||
|
|
||||||
USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, SelectedLanguageId, DefaultKBLayout);
|
|
||||||
|
|
||||||
/* first we hack LanguageList */
|
|
||||||
for (ListEntry = GetFirstListEntry(USetupData.LanguageList); ListEntry;
|
|
||||||
ListEntry = GetNextListEntry(ListEntry))
|
|
||||||
{
|
|
||||||
LocaleId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
|
||||||
if (!_wcsicmp(USetupData.LocaleID, LocaleId))
|
|
||||||
{
|
|
||||||
DPRINT("found %S in LanguageList\n", LocaleId);
|
|
||||||
SetCurrentListEntry(USetupData.LanguageList, ListEntry);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* now LayoutList */
|
|
||||||
for (ListEntry = GetFirstListEntry(USetupData.LayoutList); ListEntry;
|
|
||||||
ListEntry = GetNextListEntry(ListEntry))
|
|
||||||
{
|
|
||||||
LocaleId = ((PGENENTRY)GetListEntryData(ListEntry))->Id;
|
|
||||||
if (!_wcsicmp(USetupData.LocaleID, LocaleId))
|
|
||||||
{
|
|
||||||
DPRINT("found %S in LayoutList\n", LocaleId);
|
|
||||||
SetCurrentListEntry(USetupData.LayoutList, ListEntry);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SetConsoleCodePage();
|
|
||||||
|
|
||||||
return INSTALL_INTRO_PAGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return LANGUAGE_PAGE;
|
return LANGUAGE_PAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,10 +594,6 @@ SetupStartPage(PINPUT_RECORD Ir)
|
||||||
*
|
*
|
||||||
* Next pages: WelcomePage, QuitPage
|
* Next pages: WelcomePage, QuitPage
|
||||||
*
|
*
|
||||||
* SIDEEFFECTS
|
|
||||||
* Init SelectedLanguageId
|
|
||||||
* Init USetupData.LanguageId
|
|
||||||
*
|
|
||||||
* RETURNS
|
* RETURNS
|
||||||
* Number of the next page.
|
* Number of the next page.
|
||||||
*/
|
*/
|
||||||
|
@ -653,46 +601,49 @@ static PAGE_NUMBER
|
||||||
LanguagePage(PINPUT_RECORD Ir)
|
LanguagePage(PINPUT_RECORD Ir)
|
||||||
{
|
{
|
||||||
GENERIC_LIST_UI ListUi;
|
GENERIC_LIST_UI ListUi;
|
||||||
PCWSTR NewLanguageId;
|
|
||||||
BOOL RefreshPage = FALSE;
|
BOOL RefreshPage = FALSE;
|
||||||
|
|
||||||
/* Initialize the computer settings list */
|
/* Initialize the language settings list */
|
||||||
if (USetupData.LanguageList == NULL)
|
LANGID NewLanguageId = USetupData.LocaleID;
|
||||||
|
if (!LanguageList)
|
||||||
{
|
{
|
||||||
USetupData.LanguageList = CreateLanguageList(USetupData.SetupInf, DefaultLanguage);
|
LanguageList = CreateLanguageList(USetupData.SetupInf, &NewLanguageId);
|
||||||
if (USetupData.LanguageList == NULL)
|
if (!LanguageList)
|
||||||
{
|
{
|
||||||
PopupError("Setup failed to initialize available translations", NULL, NULL, POPUP_WAIT_NONE);
|
PopupError("Setup failed to initialize available translations", NULL, NULL, POPUP_WAIT_NONE);
|
||||||
return WELCOME_PAGE;
|
return WELCOME_PAGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectedLanguageId = DefaultLanguage;
|
USetupData.LocaleID = (LCID)NewLanguageId;
|
||||||
USetupData.LanguageId = 0;
|
/******/DefaultLanguage = LANGIDFROMLCID(USetupData.LocaleID);/*****/ // FIXME: Deprecate DefaultLanguage
|
||||||
|
SelectedLanguageId = LANGIDFROMLCID(USetupData.LocaleID); // FIXME: Should we keep SelectedLanguageId ?
|
||||||
|
|
||||||
/* Load the font */
|
/* Load the font */
|
||||||
SetConsoleCodePage();
|
SetConsoleCodePage();
|
||||||
UpdateKBLayout();
|
UpdateKBLayout();
|
||||||
|
|
||||||
|
|
||||||
|
if (IsUnattendedSetup)
|
||||||
|
return INSTALL_INTRO_PAGE;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there is no language or just a single one in the list,
|
* If there is no language or just a single one in the list,
|
||||||
* skip the language selection process altogether.
|
* skip the language selection process altogether.
|
||||||
*/
|
*/
|
||||||
if (GetNumberOfListEntries(USetupData.LanguageList) <= 1)
|
if (GetNumberOfListEntries(LanguageList) <= 1)
|
||||||
{
|
|
||||||
USetupData.LanguageId = (LANGID)(wcstol(SelectedLanguageId, NULL, 16) & 0xFFFF);
|
|
||||||
return WELCOME_PAGE;
|
return WELCOME_PAGE;
|
||||||
}
|
|
||||||
|
|
||||||
InitGenericListUi(&ListUi, USetupData.LanguageList, GetSettingDescription);
|
MUIDisplayPage(LANGUAGE_PAGE);
|
||||||
|
|
||||||
|
InitGenericListUi(&ListUi, LanguageList, GetSettingDescription);
|
||||||
DrawGenericList(&ListUi,
|
DrawGenericList(&ListUi,
|
||||||
2, 18,
|
2, 18,
|
||||||
xScreen - 3,
|
xScreen - 3,
|
||||||
yScreen - 3);
|
yScreen - 3);
|
||||||
|
|
||||||
ScrollToPositionGenericList(&ListUi, GetDefaultLanguageIndex());
|
// ScrollToPositionGenericList(&ListUi, GetDefaultLanguageIndex());
|
||||||
|
|
||||||
MUIDisplayPage(LANGUAGE_PAGE);
|
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
|
@ -732,17 +683,15 @@ LanguagePage(PINPUT_RECORD Ir)
|
||||||
}
|
}
|
||||||
else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
|
else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
|
||||||
{
|
{
|
||||||
ASSERT(GetNumberOfListEntries(USetupData.LanguageList) >= 1);
|
ASSERT(GetNumberOfListEntries(LanguageList) >= 1);
|
||||||
|
|
||||||
SelectedLanguageId =
|
SelectedLanguageId =
|
||||||
((PGENENTRY)GetListEntryData(GetCurrentListEntry(USetupData.LanguageList)))->Id;
|
(LCID)(((PGENENTRY)GetListEntryData(GetCurrentListEntry(LanguageList)))->Id.Ul);
|
||||||
|
|
||||||
USetupData.LanguageId = (LANGID)(wcstol(SelectedLanguageId, NULL, 16) & 0xFFFF);
|
USetupData.LocaleID = SelectedLanguageId;
|
||||||
|
|
||||||
if (wcscmp(SelectedLanguageId, DefaultLanguage))
|
if (SelectedLanguageId != DefaultLanguage)
|
||||||
{
|
|
||||||
UpdateKBLayout();
|
UpdateKBLayout();
|
||||||
}
|
|
||||||
|
|
||||||
/* Load the font */
|
/* Load the font */
|
||||||
SetConsoleCodePage();
|
SetConsoleCodePage();
|
||||||
|
@ -758,12 +707,12 @@ LanguagePage(PINPUT_RECORD Ir)
|
||||||
|
|
||||||
if (RefreshPage)
|
if (RefreshPage)
|
||||||
{
|
{
|
||||||
ASSERT(GetNumberOfListEntries(USetupData.LanguageList) >= 1);
|
ASSERT(GetNumberOfListEntries(LanguageList) >= 1);
|
||||||
|
|
||||||
NewLanguageId =
|
NewLanguageId =
|
||||||
((PGENENTRY)GetListEntryData(GetCurrentListEntry(USetupData.LanguageList)))->Id;
|
(LCID)(((PGENENTRY)GetListEntryData(GetCurrentListEntry(LanguageList)))->Id.Ul);
|
||||||
|
|
||||||
if (wcscmp(SelectedLanguageId, NewLanguageId))
|
if (SelectedLanguageId != NewLanguageId)
|
||||||
{
|
{
|
||||||
/* Clear the language page */
|
/* Clear the language page */
|
||||||
MUIClearPage(LANGUAGE_PAGE);
|
MUIClearPage(LANGUAGE_PAGE);
|
||||||
|
@ -773,14 +722,14 @@ LanguagePage(PINPUT_RECORD Ir)
|
||||||
/* Load the font */
|
/* Load the font */
|
||||||
SetConsoleCodePage();
|
SetConsoleCodePage();
|
||||||
|
|
||||||
|
/* Redraw language selection page in native language */
|
||||||
|
MUIDisplayPage(LANGUAGE_PAGE);
|
||||||
|
|
||||||
/* Redraw the list */
|
/* Redraw the list */
|
||||||
DrawGenericList(&ListUi,
|
DrawGenericList(&ListUi,
|
||||||
2, 18,
|
2, 18,
|
||||||
xScreen - 3,
|
xScreen - 3,
|
||||||
yScreen - 3);
|
yScreen - 3);
|
||||||
|
|
||||||
/* Redraw language selection page in native language */
|
|
||||||
MUIDisplayPage(LANGUAGE_PAGE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshPage = FALSE;
|
RefreshPage = FALSE;
|
||||||
|
@ -1201,10 +1150,10 @@ OemDriverPage(PINPUT_RECORD Ir)
|
||||||
* QuitPage
|
* QuitPage
|
||||||
*
|
*
|
||||||
* SIDEEFFECTS
|
* SIDEEFFECTS
|
||||||
* Init USetupData.ComputerList
|
* Init ComputerList
|
||||||
* Init USetupData.DisplayList
|
* Init DisplayList
|
||||||
* Init USetupData.KeyboardList
|
* Init KeyboardList
|
||||||
* Init USetupData.LayoutList
|
* Init LayoutList
|
||||||
*
|
*
|
||||||
* RETURNS
|
* RETURNS
|
||||||
* Number of the next page.
|
* Number of the next page.
|
||||||
|
@ -1212,65 +1161,78 @@ OemDriverPage(PINPUT_RECORD Ir)
|
||||||
static PAGE_NUMBER
|
static PAGE_NUMBER
|
||||||
DeviceSettingsPage(PINPUT_RECORD Ir)
|
DeviceSettingsPage(PINPUT_RECORD Ir)
|
||||||
{
|
{
|
||||||
|
PGENERIC_LIST_ENTRY Entry;
|
||||||
|
|
||||||
static ULONG Line = 16;
|
static ULONG Line = 16;
|
||||||
|
|
||||||
/* Initialize the computer settings list */
|
/* Initialize the computer settings list */
|
||||||
if (USetupData.ComputerList == NULL)
|
if (!ComputerList)
|
||||||
{
|
{
|
||||||
USetupData.ComputerList = CreateComputerTypeList(USetupData.SetupInf);
|
ComputerList = CreateComputerTypeList(USetupData.SetupInf);
|
||||||
if (USetupData.ComputerList == NULL)
|
if (!ComputerList)
|
||||||
{
|
{
|
||||||
MUIDisplayError(ERROR_LOAD_COMPUTER, Ir, POPUP_WAIT_ENTER);
|
MUIDisplayError(ERROR_LOAD_COMPUTER, Ir, POPUP_WAIT_ENTER);
|
||||||
return QUIT_PAGE;
|
return QUIT_PAGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Entry = GetCurrentListEntry(ComputerList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
|
||||||
/* Initialize the display settings list */
|
/* Initialize the display settings list */
|
||||||
if (USetupData.DisplayList == NULL)
|
if (!DisplayList)
|
||||||
{
|
{
|
||||||
USetupData.DisplayList = CreateDisplayDriverList(USetupData.SetupInf);
|
DisplayList = CreateDisplayDriverList(USetupData.SetupInf);
|
||||||
if (USetupData.DisplayList == NULL)
|
if (!DisplayList)
|
||||||
{
|
{
|
||||||
MUIDisplayError(ERROR_LOAD_DISPLAY, Ir, POPUP_WAIT_ENTER);
|
MUIDisplayError(ERROR_LOAD_DISPLAY, Ir, POPUP_WAIT_ENTER);
|
||||||
return QUIT_PAGE;
|
return QUIT_PAGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Entry = GetCurrentListEntry(DisplayList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
|
||||||
/* Initialize the keyboard settings list */
|
/* Initialize the keyboard settings list */
|
||||||
if (USetupData.KeyboardList == NULL)
|
if (!KeyboardList)
|
||||||
{
|
{
|
||||||
USetupData.KeyboardList = CreateKeyboardDriverList(USetupData.SetupInf);
|
KeyboardList = CreateKeyboardDriverList(USetupData.SetupInf);
|
||||||
if (USetupData.KeyboardList == NULL)
|
if (!KeyboardList)
|
||||||
{
|
{
|
||||||
MUIDisplayError(ERROR_LOAD_KEYBOARD, Ir, POPUP_WAIT_ENTER);
|
MUIDisplayError(ERROR_LOAD_KEYBOARD, Ir, POPUP_WAIT_ENTER);
|
||||||
return QUIT_PAGE;
|
return QUIT_PAGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Entry = GetCurrentListEntry(KeyboardList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.KeyboardDriver = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
|
||||||
/* Initialize the keyboard layout list */
|
/* Initialize the keyboard layout list */
|
||||||
if (!USetupData.LayoutList)
|
if (!LayoutList)
|
||||||
{
|
{
|
||||||
USetupData.LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf, SelectedLanguageId, DefaultKBLayout);
|
LayoutList = CreateKeyboardLayoutList(USetupData.SetupInf,
|
||||||
if (!USetupData.LayoutList)
|
LANGIDFROMLCID(USetupData.LocaleID),
|
||||||
|
&USetupData.LayoutId);
|
||||||
|
if (!LayoutList)
|
||||||
{
|
{
|
||||||
/* FIXME: report error */
|
/* FIXME: report error */
|
||||||
MUIDisplayError(ERROR_LOAD_KBLAYOUT, Ir, POPUP_WAIT_ENTER);
|
MUIDisplayError(ERROR_LOAD_KBLAYOUT, Ir, POPUP_WAIT_ENTER);
|
||||||
return QUIT_PAGE;
|
return QUIT_PAGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Entry = GetCurrentListEntry(LayoutList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.LayoutId = (KLID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||||
|
|
||||||
if (RepairUpdateFlag)
|
if (RepairUpdateFlag || IsUnattendedSetup)
|
||||||
return SELECT_PARTITION_PAGE;
|
return SELECT_PARTITION_PAGE;
|
||||||
|
|
||||||
// if (IsUnattendedSetup)
|
|
||||||
// return SELECT_PARTITION_PAGE;
|
|
||||||
|
|
||||||
MUIDisplayPage(DEVICE_SETTINGS_PAGE);
|
MUIDisplayPage(DEVICE_SETTINGS_PAGE);
|
||||||
|
|
||||||
DrawGenericListCurrentItem(USetupData.ComputerList, GetSettingDescription, 25, 11);
|
DrawGenericListCurrentItem(ComputerList, GetSettingDescription, 25, 11);
|
||||||
DrawGenericListCurrentItem(USetupData.DisplayList , GetSettingDescription, 25, 12);
|
DrawGenericListCurrentItem(DisplayList , GetSettingDescription, 25, 12);
|
||||||
DrawGenericListCurrentItem(USetupData.KeyboardList, GetSettingDescription, 25, 13);
|
DrawGenericListCurrentItem(KeyboardList, GetSettingDescription, 25, 13);
|
||||||
DrawGenericListCurrentItem(USetupData.LayoutList , GetSettingDescription, 25, 14);
|
DrawGenericListCurrentItem(LayoutList , GetSettingDescription, 25, 14);
|
||||||
|
|
||||||
CONSOLE_InvertTextXY(24, Line, 48, 1);
|
CONSOLE_InvertTextXY(24, Line, 48, 1);
|
||||||
|
|
||||||
|
@ -1325,7 +1287,30 @@ DeviceSettingsPage(PINPUT_RECORD Ir)
|
||||||
else if (Line == 14)
|
else if (Line == 14)
|
||||||
return LAYOUT_SETTINGS_PAGE;
|
return LAYOUT_SETTINGS_PAGE;
|
||||||
else if (Line == 16)
|
else if (Line == 16)
|
||||||
|
{
|
||||||
|
/* Retrieve the computer settings */
|
||||||
|
Entry = GetCurrentListEntry(ComputerList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
|
||||||
|
/* Retrieve the display settings */
|
||||||
|
Entry = GetCurrentListEntry(DisplayList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
|
||||||
|
/* Retrieve the keyboard settings */
|
||||||
|
Entry = GetCurrentListEntry(KeyboardList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.KeyboardDriver = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
|
||||||
|
/* Retrieve the keyboard layout */
|
||||||
|
Entry = GetCurrentListEntry(LayoutList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
USetupData.LayoutId = (KLID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||||
|
|
||||||
|
/* The user has accepted the settings; we continue installation */
|
||||||
return SELECT_PARTITION_PAGE;
|
return SELECT_PARTITION_PAGE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1412,7 +1397,7 @@ ComputerSettingsPage(PINPUT_RECORD Ir)
|
||||||
GENERIC_LIST_UI ListUi;
|
GENERIC_LIST_UI ListUi;
|
||||||
MUIDisplayPage(COMPUTER_SETTINGS_PAGE);
|
MUIDisplayPage(COMPUTER_SETTINGS_PAGE);
|
||||||
|
|
||||||
InitGenericListUi(&ListUi, USetupData.ComputerList, GetSettingDescription);
|
InitGenericListUi(&ListUi, ComputerList, GetSettingDescription);
|
||||||
DrawGenericList(&ListUi,
|
DrawGenericList(&ListUi,
|
||||||
2, 18,
|
2, 18,
|
||||||
xScreen - 3,
|
xScreen - 3,
|
||||||
|
@ -1438,7 +1423,7 @@ DisplaySettingsPage(PINPUT_RECORD Ir)
|
||||||
GENERIC_LIST_UI ListUi;
|
GENERIC_LIST_UI ListUi;
|
||||||
MUIDisplayPage(DISPLAY_SETTINGS_PAGE);
|
MUIDisplayPage(DISPLAY_SETTINGS_PAGE);
|
||||||
|
|
||||||
InitGenericListUi(&ListUi, USetupData.DisplayList, GetSettingDescription);
|
InitGenericListUi(&ListUi, DisplayList, GetSettingDescription);
|
||||||
DrawGenericList(&ListUi,
|
DrawGenericList(&ListUi,
|
||||||
2, 18,
|
2, 18,
|
||||||
xScreen - 3,
|
xScreen - 3,
|
||||||
|
@ -1464,7 +1449,7 @@ KeyboardSettingsPage(PINPUT_RECORD Ir)
|
||||||
GENERIC_LIST_UI ListUi;
|
GENERIC_LIST_UI ListUi;
|
||||||
MUIDisplayPage(KEYBOARD_SETTINGS_PAGE);
|
MUIDisplayPage(KEYBOARD_SETTINGS_PAGE);
|
||||||
|
|
||||||
InitGenericListUi(&ListUi, USetupData.KeyboardList, GetSettingDescription);
|
InitGenericListUi(&ListUi, KeyboardList, GetSettingDescription);
|
||||||
DrawGenericList(&ListUi,
|
DrawGenericList(&ListUi,
|
||||||
2, 18,
|
2, 18,
|
||||||
xScreen - 3,
|
xScreen - 3,
|
||||||
|
@ -1490,7 +1475,7 @@ LayoutSettingsPage(PINPUT_RECORD Ir)
|
||||||
GENERIC_LIST_UI ListUi;
|
GENERIC_LIST_UI ListUi;
|
||||||
MUIDisplayPage(LAYOUT_SETTINGS_PAGE);
|
MUIDisplayPage(LAYOUT_SETTINGS_PAGE);
|
||||||
|
|
||||||
InitGenericListUi(&ListUi, USetupData.LayoutList, GetSettingDescription);
|
InitGenericListUi(&ListUi, LayoutList, GetSettingDescription);
|
||||||
DrawGenericList(&ListUi,
|
DrawGenericList(&ListUi,
|
||||||
2, 18,
|
2, 18,
|
||||||
xScreen - 3,
|
xScreen - 3,
|
||||||
|
@ -3416,11 +3401,60 @@ RegistryPage(PINPUT_RECORD Ir)
|
||||||
|
|
||||||
MUIDisplayPage(REGISTRY_PAGE);
|
MUIDisplayPage(REGISTRY_PAGE);
|
||||||
|
|
||||||
|
/******************/
|
||||||
|
//
|
||||||
|
// TEMPTEMP : Sanity checks for lists consistency
|
||||||
|
//
|
||||||
|
{
|
||||||
|
PGENERIC_LIST_ENTRY Entry;
|
||||||
|
|
||||||
|
{
|
||||||
|
PCWSTR ComputerType;
|
||||||
|
Entry = GetCurrentListEntry(ComputerList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
ComputerType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
ASSERT(ComputerType);
|
||||||
|
ASSERT(USetupData.ComputerType == ComputerType);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
PCWSTR DisplayType;
|
||||||
|
Entry = GetCurrentListEntry(DisplayList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
DisplayType = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
ASSERT(DisplayType);
|
||||||
|
ASSERT(USetupData.DisplayType == DisplayType);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
PCWSTR KeyboardDriver;
|
||||||
|
Entry = GetCurrentListEntry(KeyboardList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
KeyboardDriver = ((PGENENTRY)GetListEntryData(Entry))->Id.Str;
|
||||||
|
ASSERT(KeyboardDriver);
|
||||||
|
ASSERT(USetupData.KeyboardDriver == KeyboardDriver);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
LCID LocaleId;
|
||||||
|
Entry = GetCurrentListEntry(LanguageList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
LocaleId = (LCID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||||
|
ASSERT(LocaleId != 0);
|
||||||
|
ASSERT(USetupData.LocaleID == LocaleId);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
KLID LayoutId;
|
||||||
|
Entry = GetCurrentListEntry(LayoutList);
|
||||||
|
ASSERT(Entry);
|
||||||
|
LayoutId = (KLID)(((PGENENTRY)GetListEntryData(Entry))->Id.Ul);
|
||||||
|
ASSERT(LayoutId != 0);
|
||||||
|
ASSERT(USetupData.LayoutId == LayoutId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/******************/
|
||||||
|
|
||||||
Error = UpdateRegistry(&USetupData,
|
Error = UpdateRegistry(&USetupData,
|
||||||
RepairUpdateFlag,
|
RepairUpdateFlag,
|
||||||
PartitionList,
|
PartitionList,
|
||||||
InstallVolume->Info.DriveLetter,
|
InstallVolume->Info.DriveLetter,
|
||||||
SelectedLanguageId,
|
|
||||||
RegistryStatus,
|
RegistryStatus,
|
||||||
&s_SubstSettings);
|
&s_SubstSettings);
|
||||||
if (Error != ERROR_SUCCESS)
|
if (Error != ERROR_SUCCESS)
|
||||||
|
@ -4075,6 +4109,8 @@ RunUSetup(VOID)
|
||||||
return STATUS_APP_INIT_FAILURE;
|
return STATUS_APP_INIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__debugbreak();
|
||||||
|
|
||||||
/* Initialize Setup, phase 0 */
|
/* Initialize Setup, phase 0 */
|
||||||
InitializeSetup(&USetupData, 0);
|
InitializeSetup(&USetupData, 0);
|
||||||
USetupData.ErrorRoutine = USetupErrorRoutine;
|
USetupData.ErrorRoutine = USetupErrorRoutine;
|
||||||
|
@ -4234,6 +4270,33 @@ RunUSetup(VOID)
|
||||||
/* Terminate the user-mode PnP manager */
|
/* Terminate the user-mode PnP manager */
|
||||||
TerminateUserModePnpManager();
|
TerminateUserModePnpManager();
|
||||||
|
|
||||||
|
/* Destroy the settings lists */
|
||||||
|
if (ComputerList)
|
||||||
|
{
|
||||||
|
DestroyGenericList(ComputerList, TRUE);
|
||||||
|
ComputerList = NULL;
|
||||||
|
}
|
||||||
|
if (DisplayList)
|
||||||
|
{
|
||||||
|
DestroyGenericList(DisplayList, TRUE);
|
||||||
|
DisplayList = NULL;
|
||||||
|
}
|
||||||
|
if (KeyboardList)
|
||||||
|
{
|
||||||
|
DestroyGenericList(KeyboardList, TRUE);
|
||||||
|
KeyboardList = NULL;
|
||||||
|
}
|
||||||
|
if (LanguageList)
|
||||||
|
{
|
||||||
|
DestroyGenericList(LanguageList, FALSE);
|
||||||
|
LanguageList = NULL;
|
||||||
|
}
|
||||||
|
if (LayoutList)
|
||||||
|
{
|
||||||
|
DestroyGenericList(LayoutList, TRUE);
|
||||||
|
LayoutList = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Setup has finished */
|
/* Setup has finished */
|
||||||
FinishSetup(&USetupData);
|
FinishSetup(&USetupData);
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,13 @@
|
||||||
|
|
||||||
extern HANDLE ProcessHeap;
|
extern HANDLE ProcessHeap;
|
||||||
extern BOOLEAN IsUnattendedSetup;
|
extern BOOLEAN IsUnattendedSetup;
|
||||||
extern PCWSTR SelectedLanguageId;
|
|
||||||
|
/* Settings lists *****/
|
||||||
|
extern PGENERIC_LIST ComputerList;
|
||||||
|
extern PGENERIC_LIST DisplayList;
|
||||||
|
extern PGENERIC_LIST KeyboardList;
|
||||||
|
extern PGENERIC_LIST LanguageList;
|
||||||
|
extern PGENERIC_LIST LayoutList;
|
||||||
|
|
||||||
typedef enum _PAGE_NUMBER
|
typedef enum _PAGE_NUMBER
|
||||||
{
|
{
|
||||||
|
|
|
@ -223,8 +223,10 @@ OsLoadOptions = "/FASTDETECT /NOGUIBOOT /NODEBUG"
|
||||||
AnsiCodepage = c_1252.nls
|
AnsiCodepage = c_1252.nls
|
||||||
OemCodepage = c_437.nls
|
OemCodepage = c_437.nls
|
||||||
UnicodeCasetable = l_intl.nls
|
UnicodeCasetable = l_intl.nls
|
||||||
DefaultLayout = 00000409
|
;DefaultLayout = 00000409
|
||||||
DefaultLanguage = 00000409
|
DefaultLayout = 0000041A
|
||||||
|
;DefaultLanguage = 00000409
|
||||||
|
DefaultLanguage = 0000040C
|
||||||
|
|
||||||
[Computer.NTx86]
|
[Computer.NTx86]
|
||||||
pci_up = "Standard PC Uniprocessor"
|
pci_up = "Standard PC Uniprocessor"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue