Как программно определить языковую версию ОС?
От: AntonSC  
Дата: 30.03.05 09:55
Оценка:
Знаем, что в англоязычной ОС можно изменить язык и местоположение, например, Россия, и тогда в реестре
HKEY_CURRENT_USER\Control Panel\International\Locale будет равен 419.

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

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

30.03.05 14:59: Перенесено модератором из 'Пользовательский интерфейс: проектирование, usability' — оффтоп — Sinclair
Антон
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 >>
Re[2]: Как программно определить языковую версию ОС?
От: mkopachev  
Дата: 30.03.05 11:19
Оценка:
Вдогонку

var
  PFix: Pointer;
  FixSize: DWORD;
  Temp: Cardinal;
  LangIDS: PWORD;
  LangIDLng: DWORD;
  IsRussian: Boolean;


С уважением Михаил Копачев
... << RSDN@Home 1.1.4 @@subversion >>
Re[2]: Как программно определить языковую версию ОС?
От: AntonSC  
Дата: 30.03.05 11:25
Оценка:
Здравствуйте, Михаил!

Спасибо за Вашу мгновенную реакцию на мой вопрос! Теперь стало понятно, например, что при запуске SP1Eng в русскоязычной ОС WinXP также проверяется такой файл kernel32.dll на языковую версию ОС...
Антон
Re[2]: Как программно определить языковую версию ОС?
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 30.03.05 16:08
Оценка:
Здравствуйте, mkopachev, Вы писали:

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

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

как насчет винды с MUI
Автор: Odi$$ey
Дата: 07.12.04
?
Re[3]: Как программно определить языковую версию ОС?
От: Alex Alexandrov США  
Дата: 30.03.05 18:58
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, mkopachev, Вы писали:


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

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

OE>как насчет винды с MUI
Автор: Odi$$ey
Дата: 07.12.04
?


GetUserDefaultUILanguage ?
[ Posted via RSDN@Home 1.1.4 beta 4 (303) listening to Сказки — Кошкин дом ]
It's kind of fun to do the impossible (Walt Disney)
Re[3]: Как программно определить языковую версию ОС?
От: mkopachev  
Дата: 31.03.05 07:53
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, mkopachev, Вы писали:


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

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

OE>как насчет винды с MUI
Автор: Odi$$ey
Дата: 07.12.04
?


А мне по барабану что написано на кнопках — у меня программа — сервер, и мне важно именно то от какой версии винды (русской или английской) системные библиотеки.

Знаешь более хороший способ определения языка оси — поделись ?

С уважением Михаил Копачев
... << RSDN@Home 1.1.4 @@subversion >>
Re[4]: Как программно определить языковую версию ОС?
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 31.03.05 08:13
Оценка:
Здравствуйте, mkopachev, Вы писали:

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

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

OE>>как насчет винды с MUI
Автор: Odi$$ey
Дата: 07.12.04
?


M> А мне по барабану что написано на кнопках


дык вопрос-то
Автор: AntonSC
Дата: 30.03.05
был именно про кнопку Пуск
Re[5]: Как программно определить языковую версию ОС?
От: mkopachev  
Дата: 31.03.05 09:39
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, mkopachev, Вы писали:


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

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

OE>>>как насчет винды с MUI
Автор: Odi$$ey
Дата: 07.12.04
?


M>> А мне по барабану что написано на кнопках


OE>дык вопрос-то
Автор: AntonSC
Дата: 30.03.05
был именно про кнопку Пуск


Я вообще-то смотрю больше на сабж, чем на то что следует за словом НАПРИМЕР
... << RSDN@Home 1.1.4 @@subversion >>
Re[3]: Как программно определить языковую версию ОС?
От: Pavel Dvorkin Россия  
Дата: 31.03.05 09:51
Оценка: :)
Здравствуйте, Odi$$ey, Вы писали:


OE>как насчет винды с MUI
Автор: Odi$$ey
Дата: 07.12.04
?


Чтоб я не знал эту MUI никогда! Я сейчас занятия веду по администрированию W2003 сервера. Так поставили у нас эту MUI. Кто такие "Domain Admins" — я знаю, а на "Администраторы домена" — у меня реакция не та, да и искать их все время не там пытаюсь. Кроме того, при наличии группы "Администраторы домена" присутствует группа "DnsAdmins", и эта смесь английского с русским меня из себя выводит .

Словом, решили в MUI поставить обратно англиийский. Что, думаете "Администраторы домена" стали "Domain Admins" ? Черта с два. Так и осталась группа "Администраторы домена" . Тогда в отчаянии деинсталлировали MUI совсем, но "Администраторы домена" и после этого в "Domain Admins" превращаться не захотели.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.