Вниз
Скачать: 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.026 c
15-1160303268
kaif
2006-10-08 14:27
2006.10.29
Клубная культура


2-1160988097
dera
2006-10-16 12:41
2006.10.29
Как работать с TStringList?


6-1149090403
oleg_
2006-05-31 19:46
2006.10.29
Нагрузка на idhttpserver приводит к ошибке


1-1158305304
DmitriyG.
2006-09-15 11:28
2006.10.29
Добавить текст в Hint


2-1160993503
Megabyte
2006-10-16 14:11
2006.10.29
Показ XML-файла в читабельном виде




   Наверх