Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: 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 вся ветка

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.034 c
3-1157456549
pic509
2006-09-05 15:42
2006.10.29
"Залипание" данных при вызове Хранимой процедуры


3-1157098001
Fostr
2006-09-01 12:06
2006.10.29
Проблема с обработкой запроса


2-1160716862
yel
2006-10-13 09:21
2006.10.29
Memo с картинками


2-1160906180
C@N
2006-10-15 13:56
2006.10.29
ScroolBars в Memo


15-1160105487
MBo
2006-10-06 07:31
2006.10.29
О Delphi 2007 aka Highlander





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский