Интернационализация с использованием ресурсов MSWin (диалог / меню / строки) - PullRequest
3 голосов
/ 28 марта 2011

Мне интересно, какой подход к людям i18n оказался полезным для элементов Windows, которые обычно включаются в собственное приложение C ++ / WTL MSWin через компилятор ресурсов?

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

У меня также был некоторый опыт работы с GNU gettext, который, кажется, делает намного лучше, отделяя интересы разработчика от проблем переводчика. К сожалению, я думаю, что использование GNU gettext в среде Windows будет означать отказ от полезных инструментов, которые встроены в Visual Studio для создания меню приложений и диалогов и т. Д. Будем признательны за любые предложения о том, как это можно преодолеть.

Одна особая проблема, с которой я столкнулся, заключается в том, что MSWin не имеет / не использует никаких менеджеров компоновки (о которых я знаю). Это означает, что перевод диалогового окна на другой язык, вероятно, потребует изменения размеров диалогового окна, чтобы учесть любое увеличение или уменьшение требований к пространству текста из-за перевода.

Буду также признателен за любые другие предложения о подходе.

1 Ответ

1 голос
/ 28 марта 2011

Сама Windows не имеет менеджеров компоновки, но некоторые библиотеки пользовательского интерфейса для использования с Windows.Просто для одного очевидного примера, Qt делает i18n немного проще, чем работать с Win32 API напрямую.У него есть менеджеры для сетки, потока и т. Д. Он также имеет классы для непосредственной поддержки перевода, включая класс QTranslator, который будет искать переводы в файле перевода, прямую поддержку преобразования между различными текстовыми представлениями и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...