![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить, что винда русифицирована?
@ac © (2004-02-19 08:01:00)Как определить, что винда русифицирована?
DVM (2004-02-22 19:07:00) [1]
> А это какая библиотека?
kernel32.dll
@ac (2004-02-22 08:02:00) [2]GetSystemDefaultUILanguage
А это какая библиотека?
Игорь Шевченко (2004-02-19 10:44:00) [3]GetSystemDefaultUILanguage для Win2k и выше.
или
function TOSData.GetOSLanguage: String;
var
SystemLocale : String;
begin
SystemLocale := '';
with TRegistry.Create(KEY_READ) do
try
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey('SYSTEM\CurrentControlSet\Control\Nls\Language',
false) then begin
if ValueExists('InstallLanguage') then
SystemLocale := ReadString('InstallLanguage')
else
SystemLocale := ReadString('Default');
CloseKey();
end;
finally
Free();
end;
Result := HSGetLocaleLanguageName(SystemLocale);
end;
{ Для определения языка в NT-системах предпочтительней вызывать Unicode-версию
GetLocaleInfo }
function HSGetLocaleLanguageName (Locale : Cardinal) : String;
var
tmp : array[0..255] of char;
tmpW : array[0..255] of WideChar;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
GetLocaleInfoW(Locale, LOCALE_SLANGUAGE, tmpW, SizeOf(tmpW));
Result := WideCharToString(tmpW);
end else begin
GetLocaleInfo(Locale, LOCALE_SLANGUAGE, tmp, SizeOf(tmp));
Result := tmp;
end;
end;
function HSGetLocaleLanguageName (SLocale : String) : String;
var
I : Integer;
Locale : Cardinal;
begin
Locale := 0;
for I:=1 to 4 do
Locale := (Locale shl 4) + Cardinal(Byte(SLocale[I]) - $30);
Result := HSGetLocaleLanguageName (Locale);
end;