Вопрос

У меня есть несколько больших MFC-приложений, и о конвертации их в какой-либо другой формат не может быть и речи.Мы расширяемся на другие рынки и хотели бы, чтобы приложения работали на других языках и культурах.

До сих пор я встречал редкие ссылки на то, что делать с Visual C++ версии 6, с одним упоминанием о том, что более поздние версии MFC имеют дополнительные соответствующие функции.Поиск в MSDN дает мне инструкции о том, как преобразовать приложения в Unicode, что мы уже сделали.В MSDN я ничего не нашел о том, как сделать языки многоязычными, когда они поддерживают Unicode, только несколько старых вещей с использованием Google и одну книгу об интернационализации с использованием VC++6.(Сейчас мы используем Visual Studio 2008 в XP и Vista.)

Я не претендую на силу моего Google-фу и был бы рад, если бы мне указали на то, что я пропустил.

Разумно ли использовать методы VC++6 или стоит использовать более поздние возможности?

Если мне придется использовать функции позже, где я могу найти ссылку на них?

Есть ли что-то, о чем мне следует беспокоиться, кроме установки локали, преобразования всех строк в ресурсы и дублирования ресурсов на разных языках?

Я могу найти больше информации об интернационализации .NET, но у меня нет опыта работы с .NET.Что я там найду применимого к VC++ и MFC?

Редактировать:Я только что столкнулся с трудностями при попытке поместить строки Unicode в ресурс таблицы строк.(Насколько я могу судить, строки Unicode необходимо вводить в файл .rc с помощью текстового редактора в форме L «0x0034».Я не нашел способа сделать это в редакторе ресурсов.) Есть какие-нибудь советы по этому поводу?Какой-нибудь другой ресурс, который я могу использовать в VS2008, используя VC++ и MFC?

Редактировать:Кто-то на форуме Microsoft предложил мне открыть вызывающий ошибку файл .rc в Блокноте и сохранить его в Unicode.К сожалению, это, похоже, не исправляет диалоги, хотя таблица строк, похоже, работает на японском языке.

Это было полезно?

Решение

Для интернационализации приложения требуется гораздо больше, чем просто перевод «строк».

Большую часть вашего пользовательского интерфейса необходимо будет обновить, чтобы учесть различную длину текста и языковую ориентацию (иврит, китайский, арабский и т. д.).

Некоторые изображения также необходимо будет изменить, чтобы они соответствовали другой культуре (к сожалению, у меня нет примера для этого), либо фигуративность другая, либо цвета не соответствуют местным спецификациям.

Мы используем такой инструмент, как appПереводчик чтобы помочь нам выполнить косметическую локализацию (переформатирование пользовательского интерфейса) и использовать профессионального технического переводчика строк.

Другие советы

Вы также можете создать dll только для ресурсов.

Видеть Как создать локализованные библиотеки DLL ресурсов для приложения MFC Больше подробностей.

Вы можете интернационализировать свое приложение следующими способами.

После того, как вы преобразовали приложение в Юникод (вы уже это сделали), все строки должны быть загружены из таблицы строк.

  1. Для каждого языка нужно изменить таблицу строк и скомпилировать

  2. Еще один способ — сохранить XML-файл, содержащий все строки в локализованном формате.Загрузите XML и строки в зависимости от языка.

Вот моя статья CodeProject, в которой описан очень «эффективный при кодировании» метод извлечения строк из таблицы строк (требуется для переводимых текстов):http://www.codeproject.com/KB/string/stringtable.aspx

Вот еще один класс, который поможет вашему приложению выбрать правильный язык пользовательского интерфейса.Это также поможет вам создать меню выбора языка:http://www.codeproject.com/KB/locale/LanguageMenu.aspx

И последнее, но не менее важное: appTranslator — это инструмент, который помогает вам переводить пользовательский интерфейс вашего приложения, определять, какие изменения были внесены в ресурсы со времени последней версии, создавать переведенные exe-файлы или библиотеки DLL ресурсов и многое другое:http://www.apptranslator.com

(Примечание:Я автор appTranslator.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top