Пишу софтину, планируется, что она будет коммерческой, но для русскоговорящей аудитории я хочу сделать ее бесплатной. В msdn нашел три функции, определяющие текущий язык пользователя: GetUserDefaultUILanguage, GetUserDefaultLangID и GetSystemDefaultLangID, но чтение документации не дало мне четкого понимания, от чего зависят возвращаемые ими значения. Собственно вопрос знатокам: от чего зависят возвращаемые данными функциями значения и может ли пользователь какими-либо настройками системы их менять?
Здравствуйте, Aniskin, Вы писали:
A>Пишу софтину, планируется, что она будет коммерческой, но для русскоговорящей аудитории я хочу сделать ее бесплатной. В msdn нашел три функции, определяющие текущий язык пользователя: GetUserDefaultUILanguage, GetUserDefaultLangID и GetSystemDefaultLangID, но чтение документации не дало мне четкого понимания, от чего зависят возвращаемые ими значения. Собственно вопрос знатокам: от чего зависят возвращаемые данными функциями значения и может ли пользователь какими-либо настройками системы их менять?
Первая это язык интерфейса винды, меняется пакетом MUI. Остальное кодовая страница ANSI, соответственно для текущего пользователя (Language for non-Unicode programs) и дефолтового пользователя (Default user account settings\ololo). Ушанку, имхо, лучше всего детектить по LangID. Ибо есть умники работающие в неправославной винде, но LangID у них все равно задан русский — некрасиво выглядят ??????????? в неюникодных программах, которых еще много.
Здравствуйте, Аноним, Вы писали:
А>Первая это язык интерфейса винды, меняется пакетом 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).
Здравствуйте, Aniskin, Вы писали:
A>Пишу софтину, планируется, что она будет коммерческой, но для русскоговорящей аудитории я хочу сделать ее бесплатной. В msdn нашел три функции, определяющие текущий язык пользователя: GetUserDefaultUILanguage, GetUserDefaultLangID и GetSystemDefaultLangID, но чтение документации не дало мне четкого понимания, от чего зависят возвращаемые ими значения. Собственно вопрос знатокам: от чего зависят возвращаемые данными функциями значения и может ли пользователь какими-либо настройками системы их менять?
Кстати, можно еще и вдобавок по TimeZone информацию получать... Вот уж редко у кого в пределах нашей большой родины стоит время по Гринвичу или тихоокеанское. Правда, все-таки стоит определять именно "вдобавок" — как-то давно в одной фриваре сделал выбор локализации по умолчанию именно по TimeZone... Ух, индусы атакуйе письма раз в неделю по сей день, на тему "дайте аглицкую локализацию" (а она в софтину встроена была, остальные языки сбоку в файлах текстовых лежали). Т.е. в общем-то метод не очень надежный, но в довесок может что-то и давать.
Здравствуйте, Аноним, Вы писали:
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. Галка "Параметры для стандартной учетной записи" не влияет ни на что. Или я что то не так делаю.