Как проще всего сделать многоязычный интерфейс (c++ Builder 6)

  • Автор темы WishMaster
  • Дата начала
W

WishMaster

Есть программа, сделанная в C++ Builder 6 с украинским интерфейсом. Сейчас мне нужно организовать английский и русский языки. Как я себе это представляю – программа ставится по умолчанию с каким-либо языком (либо можно выбрать в инсталляторе). После этого можно выбрать в настройках любой язык.
Я только один раз делал программу с несколькими языками и тогда просто при изменении языка менял из программы надписи на всех элементах, а также проверял какой сейчас язык при выводе определенных сообщений. Но это конечно все не правильно и для программ по больше не годится – не хочется засорять код всякой чепухней.
Подскажите, пожалуйста, как можно легче всего сделать то, что мне нужно (не хочется долго париться – времени в обрез)? Чтобы в будущем можно было легко добавить и другие языки в программу. Как это делают опытные люди?
Заранее благодарен за все советы :)
 
A

Aleksey

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

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

Естественно, в вашем случае весь код придется перелопатить, но это придется сделать в любом случае. К тому же есть и другие способы, в частности и стандартный, предлагаемый самим Builder-ом (искать в сторону Localization).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!