Вниз
Скачать: CL | DM;

Обнаружение русской версии Windows.   Найти похожие ветки 

← →
AlexanderMS ©   (2006-10-13 16:07) [0]

Cкажите, пожалуйста, как программно узнать, что программа запущена под русской версией Windows? Мне нужно, чтобы в этом случае при первом запуске моё "двуязычное" приложение меняло язык интерфейса на русский.


← →
Игорь Шевченко ©   (2006-10-13 16:14) [1]


{ Для определения языка в 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;

function 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;


А можно проще: HSGetLocaleLanguageName(GetSystemDefaultUILanguage());


← →
han_malign ©   (2006-10-13 16:34) [2]

а можно еще проще:
HSGetLocaleLanguageName(LOCALE_SYSTEM_DEFAULT);
хотя лучше, все же - общепринятый "управляемый" вариант - GetThreadLocale
и, скажем, с LOCALE_SENGLANGUAGE или LOCALE_SISO639LANGNAME вместо LOCALE_SLANGUAGE (и независимо от платформы ANSII версию использовать(GetLocaleInfo/GetLocaleInfoA))

З.Ы. LOCALE_SISO639LANGNAME - абревиатура(rus,eng,...) - можно использовать непосредственно как расширение языкового файла.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
2-1160897410
weeeeee
2006-10-15 11:30
2006.10.29
Нормализовать строку


2-1160908532
PeterBuild
2006-10-15 14:35
2006.10.29
Програмный запуск командной строки


2-1160628341
LaDy-ekat
2006-10-12 08:45
2006.10.29
ADO & Access


2-1160739574
i-am-vladko
2006-10-13 15:39
2006.10.29
WinAPI на OnShow


1-1157690774
Roma K
2006-09-08 08:46
2006.10.29
Ввод текта в окне чужего приложения




   Наверх