Фильтрация языков в консольном приложении MUI
Консольное приложение MUI может поддерживать системные параметры или параметры конкретного приложения для языков пользовательского интерфейса. В этом разделе рассматривается фильтрация языков для этого типа приложения.
Ограничить количество отображаемых языков
В отличие от графического окна, консоль Windows не может отображать сложные письменности, такие как арабская, иврит, персидская, хинди, урду, тайская и многие другие. Поэтому многие языки пользовательского интерфейса не могут отображаться консолью в любых обстоятельствах.
Консоль может отображать только символы из единственной кодовой страницы OEM , ассоциированной с текущим языком для не-Юникод приложений. Для каждой кодовой страницы OEM консоль использует определенный шрифт, и это может не обеспечить полное покрытие для этой кодовой страницы.
Эти ограничения, связанные с консолью, снижают количество языков пользовательского интерфейса, которые консоль может отображать на определенном компьютере. Например, если текущий язык для приложений, отличных от Юникода, является японским, пользователь пытается отобразить немецкий текст в консоли, символы с umlauts не отображаются правильно. Если текущий язык для программ, не поддерживающих Юникод, — немецкий, и пользователь хочет вывести японский текст в консоли, результаты оказываются намного хуже, текст становится почти непонятным.
Заметка
При предоставлении поддержки консоли для приложений MUI следует помнить, что консоль предоставляет только ограниченную поддержку редакторов методов ввода .
Настройка языка выходных данных консоли
В Windows Vista и более поздних версиях консольное приложение задает язык для поддержки отображения консоли путем вызова SetThreadPreferredUILanguages. В этом вызове приложение передает MUI_CONSOLE_FILTER в параметре dwFlags и NULL для pwszLanguagesBuffer. Альтернативой является вызов SetThreadUILanguage с идентификатором языка 0. Этот параметр приводит к выбору языка, который лучше всего поддерживает экран консоли.
В Windows XP приложение может задать только язык вывода консоли, вызвав SetThreadUILanguage с идентификатором языка 0.
Связанные разделы