Вниз
Скачать: 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.029 c
15-1160137481
oldman
2006-10-06 16:24
2006.10.29
Завтра Россия-Израиль. Ваши ставки?


3-1157456213
Mishenka
2006-09-05 15:36
2006.10.29
Как в запросе сделать сортировку по нескольким полям?


15-1159942976
PHPcoder
2006-10-04 10:22
2006.10.29
Отловить вращение колесика.


2-1161018380
Kolan
2006-10-16 21:06
2006.10.29
Как передать объект в виде Integer, а затем это число ..


1-1158675326
buzz
2006-09-19 18:15
2006.10.29
Загадка для знатоков VCL




   Наверх