Разница между Get*Default*Lang* функциями
От: Aniskin  
Дата: 27.12.10 16:56
Оценка: +1
Пишу софтину, планируется, что она будет коммерческой, но для русскоговорящей аудитории я хочу сделать ее бесплатной. В msdn нашел три функции, определяющие текущий язык пользователя: GetUserDefaultUILanguage, GetUserDefaultLangID и GetSystemDefaultLangID, но чтение документации не дало мне четкого понимания, от чего зависят возвращаемые ими значения. Собственно вопрос знатокам: от чего зависят возвращаемые данными функциями значения и может ли пользователь какими-либо настройками системы их менять?
Re: Разница между Get*Default*Lang* функциями
От: Аноним  
Дата: 27.12.10 17:42
Оценка: 2 (1)
Здравствуйте, Aniskin, Вы писали:

A>Пишу софтину, планируется, что она будет коммерческой, но для русскоговорящей аудитории я хочу сделать ее бесплатной. В msdn нашел три функции, определяющие текущий язык пользователя: GetUserDefaultUILanguage, GetUserDefaultLangID и GetSystemDefaultLangID, но чтение документации не дало мне четкого понимания, от чего зависят возвращаемые ими значения. Собственно вопрос знатокам: от чего зависят возвращаемые данными функциями значения и может ли пользователь какими-либо настройками системы их менять?


Первая это язык интерфейса винды, меняется пакетом MUI. Остальное кодовая страница ANSI, соответственно для текущего пользователя (Language for non-Unicode programs) и дефолтового пользователя (Default user account settings\ololo). Ушанку, имхо, лучше всего детектить по LangID. Ибо есть умники работающие в неправославной винде, но LangID у них все равно задан русский — некрасиво выглядят ??????????? в неюникодных программах, которых еще много.
Re[2]: Разница между Get*Default*Lang* функциями
От: Aniskin  
Дата: 28.12.10 06:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Первая это язык интерфейса винды, меняется пакетом MUI. Остальное кодовая страница ANSI, соответственно для текущего пользователя (Language for non-Unicode programs) и дефолтового пользователя (Default user account settings\ololo). Ушанку, имхо, лучше всего детектить по LangID. Ибо есть умники работающие в неправославной винде, но LangID у них все равно задан русский — некрасиво выглядят ??????????? в неюникодных программах, которых еще много.


Если я правильно понимаю, то
GetUserDefaultUILanguage возвращает язык MUI,
GetUserDefaultLangID возвращает язык Windows (всегда совпадает с GetUserDefaultUILanguage?),
GetSystemDefaultLangID возвращает язык для неуникодовых приложений.
Re[3]: Разница между Get*Default*Lang* функциями
От: Аноним  
Дата: 28.12.10 08:03
Оценка:
Здравствуйте, Aniskin, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


А>>Первая это язык интерфейса винды, меняется пакетом MUI. Остальное кодовая страница ANSI, соответственно для текущего пользователя (Language for non-Unicode programs) и дефолтового пользователя (Default user account settings\ololo). Ушанку, имхо, лучше всего детектить по LangID. Ибо есть умники работающие в неправославной винде, но LangID у них все равно задан русский — некрасиво выглядят ??????????? в неюникодных программах, которых еще много.


A>Если я правильно понимаю, то

Не совсем.
A>GetUserDefaultUILanguage возвращает язык MUI,
MUI может не стоять.
A>GetUserDefaultLangID возвращает язык Windows (всегда совпадает с GetUserDefaultUILanguage?),
A>GetSystemDefaultLangID возвращает язык для неуникодовых приложений.
Оба задаются в Regional and Language Options на странице Advanced (в XP).
Re: Разница между Get*Default*Lang* функциями
От: Carc Россия https://vk.com/gosha_mazov
Дата: 28.12.10 11:19
Оценка:
Здравствуйте, Aniskin, Вы писали:

A>Пишу софтину, планируется, что она будет коммерческой, но для русскоговорящей аудитории я хочу сделать ее бесплатной. В msdn нашел три функции, определяющие текущий язык пользователя: GetUserDefaultUILanguage, GetUserDefaultLangID и GetSystemDefaultLangID, но чтение документации не дало мне четкого понимания, от чего зависят возвращаемые ими значения. Собственно вопрос знатокам: от чего зависят возвращаемые данными функциями значения и может ли пользователь какими-либо настройками системы их менять?

Кстати, можно еще и вдобавок по TimeZone информацию получать... Вот уж редко у кого в пределах нашей большой родины стоит время по Гринвичу или тихоокеанское. Правда, все-таки стоит определять именно "вдобавок" — как-то давно в одной фриваре сделал выбор локализации по умолчанию именно по TimeZone... Ух, индусы атакуйе письма раз в неделю по сей день, на тему "дайте аглицкую локализацию" (а она в софтину встроена была, остальные языки сбоку в файлах текстовых лежали). Т.е. в общем-то метод не очень надежный, но в довесок может что-то и давать.
Aml Pages Home
Re[4]: Разница между Get*Default*Lang* функциями
От: Aniskin  
Дата: 28.12.10 13:21
Оценка:
Здравствуйте, Аноним, Вы писали:

A>>GetUserDefaultUILanguage возвращает язык MUI,

А>MUI может не стоять.

Согласен. В этой ситуации "the function retrieves the default computer user interface language". Что понимается под default computer user interface language и совпадает ли он с GetUserDefaultLangID?

A>>GetUserDefaultLangID возвращает язык Windows (всегда совпадает с GetUserDefaultUILanguage?),

A>>GetSystemDefaultLangID возвращает язык для неуникодовых приложений.
А>Оба задаются в Regional and Language Options на странице Advanced (в XP).

У меня на вкладке "Дополнительно" есть "Язык программ, не поддерживающих Юникод" с комбобоксом, "Кодовые страницы таблиц преобразования" и "Параметры для стандартной учетной записи" с галкой "Применить эти параметры для текущей учетной записи и для стандартного профиля пользователя". Изменение языка в разделе "Язык программ, не поддерживающих Юникод" изменеяет возвращаемое значение GetSystemDefaultLangID и _не меняет_ значение GetUserDefaultLangID. Галка "Параметры для стандартной учетной записи" не влияет ни на что. Или я что то не так делаю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.