Можно ли перевести коды системных ошибок на конкретный язык?
Я могу только пройти MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
в FormatMessage
. В противном случае вызов функции завершается с 15100 (Загрузчику ресурсов не удалось найти файл MUI).
Где хранятся системные сообщения об ошибках? Почему я не могу загрузить сообщение в локали, отличной от системной?
В основном MUI обозначает многоязычный пользовательский интерфейс. Это языковые пакеты. В окнах по умолчанию их не получить. Вместо этого они должны установить
Ниже ссылка поможет вам в отношении закупок.
https://support.microsoft.com/en-us/help/14236/language-packs
По умолчанию вышеупомянутая страница отображается для Windows 10. есть вариант выпадающего меню для других версий окон.
Если у вас возникли проблемы с приведенной выше ссылкой, поищите в Google языковой пакет MUI для Windows 10 или любой другой версии.
Используйте ноль для идентификатора языка, а не MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
, затем FormatMessage
выберет ресурс на основе идентификатора языка потока или использует GetUserDefaultLangID
,
FormatMessage документация:
DWORD WINAPI FormatMessage( _In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Out_ LPTSTR lpBuffer, _In_ DWORD nSize, _In_opt_ va_list *Arguments );
dwLanguageId
:Если вы передаете конкретный LANGID в этом параметре,
FormatMessage
будут
вернуть сообщение только для этого LANGID. Если функция не может найти
сообщение для этого LANGID устанавливает Last-Error в
ERROR_RESOURCE_LANG_NOT_FOUND
, Если вы проходите в ноль,
FormatMessage
ищет сообщение для LANGID в следующем
порядок:
- Нейтральный язык
- LANGID потока, основанный на значении локали потока
- LANGID пользователя по умолчанию на основе значения локали пользователя по умолчанию
- Системный LANGID по умолчанию на основе значения локали системы по умолчанию
- Американский английский