LANG_RUSSIAN (0x19) + SUBLANG_RUSSIAN_RUSSIA (0x01) = 0x0419. Как?
От: Aniskin  
Дата: 17.05.17 19:30
Оценка:
В программе все строки, используемые в UI, вынесены в отдельную dll. Эта dll компилируется скриптом. Сначала создается RC файл, а затем вызывается RC.exe, на выходе dll со строками. Изначально строки были на английском и русском языках, RC файлы выглядел следующим образом:

#include "ntdef.h"

LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
...
END

LANGUAGE LANG_RUSSIAN,SUBLANG_RUSSIAN_RUSSIA
STRINGTABLE
BEGIN
...
END

И все было хорошо, пока не нашелся доброволец перевести мою программу на Brazilian Portuguese (PT-BR). Для него (и для других потенциальных переводчиков) я сделал специальную програмку для перевода строк, которая формирует файл для скрипта. В этом файле помимо строк также передается код его текущего языка UI, получаемый через GetThreadUILanguage, а в старых ОС через GetUserDefaultLangID. Этот код я планировал вставлять в строку LANGUAGE. И в файле переводчика было значение 0x0416, что должно соответствовать LANG_PORTUGUESE (0x16) + SUBLANG_PORTUGUESE_BRAZILIAN (0x01).

И собственно вопрос — как из 0x0416 получить 0x16 и 0x01? Или я как то не правильно получаю текущий язык пользователя? Я конечно могу ручками сделать case, но хочется автоматизации.
Re: LANG_RUSSIAN (0x19) + SUBLANG_RUSSIAN_RUSSIA (0x01) = 0x0419. Как?
От: Aniskin  
Дата: 17.05.17 20:03
Оценка:
A>как

Извиняюсь за тупой вопрос, решил. Все время ошибочно думал, что LANG и SUBLANG имеют размерность 2 байта, что не соответствует действительности.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.