Re: Как программно определить языковую версию ОС?
От: mkopachev  
Дата: 30.03.05 11:16
Оценка:
Здравствуйте, AntonSC, Вы писали:

ASC>Знаем, что в англоязычной ОС можно изменить язык и местоположение, например, Россия, и тогда в реестре

ASC>HKEY_CURRENT_USER\Control Panel\International\Locale будет равен 419.

ASC>Но как программно определить языковую версию ОС? Например, вместо надписи на кнопке "Пуск" английское слово "Start",хотя там Locale = 419.


ASC>Заранее спасибо!


Посмотреить на то, какая локализация у ресурсов версии например в kernel32.

  {Получаем языки, которые прописаны в kernel32}
  FixSize := GetFileVersionInfoSize('kernel32.dll', Temp);
  GetMem(PFix, FixSize);
  IsRussian := FALSE;
  try
    if GetFileVersionInfo('kernel32.dll', Temp, FixSize, PFix)
    then begin
      {Извлекаем ресурс с языками}
      if VerQueryValue(PFix, '\VarFileInfo\Translation', Pointer(LangIDS), LangIDLng)
      then begin
        {Проверяем наличие в библиотеке информации с русским языком}
        while LangIDLng > 0 do begin
          IsRussian := IsRussian or ((LangIDS^ and $FFFF) = $0419);
          Inc(LangIDS);
          Dec(LangIDLng, SizeOf(LangIDS^));
        end;
      end;
    end;
  except
      ...
  end;


P.S. Выдрал из живого проекта — работает

С уважением Михаил Копачев
... << RSDN@Home 1.1.4 @@subversion >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.