Создание международной заявки на MFC - PullRequest
3 голосов
/ 18 февраля 2009

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

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

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

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

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

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

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

Edit: я только что столкнулся с трудностями, пытаясь поместить строки Unicode в ресурс String Table. (Насколько я могу судить, строки Unicode нужно вводить в файл .rc с помощью текстового редактора в форме L "0x0034". Я не нашел способ редактора ресурсов сделать это.) Какие-нибудь советы по этому поводу? Любой другой ресурс, который я могу использовать в VS2008, используя VC ++ и MFC?

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

Ответы [ 4 ]

3 голосов
/ 18 февраля 2009

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

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

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

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

2 голосов
/ 18 февраля 2009

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

См. Как создать библиотеки локализованных ресурсов для приложения MFC для получения дополнительной информации.

1 голос
/ 18 февраля 2009

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

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

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

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

0 голосов
/ 22 февраля 2009

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

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

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

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

...