Почитываю иногда форум и до сих пор поражаюсь как изощрятся люди при решении простейших задач.
Здравствуйте.
Мультиязычная поддержка минимально должна распространяться на простые объекты, шаблоны (все экземпляры изменяются одинаковым образом), шаблонные окна и сообщения пользователя.
Для описания мультиязычной поддержки используется текстовый файл. Первая строка содержит названия поддерживаемых языков. Далее следуют группы, включающие строку с именем и свойством объекта простого или входящего в шаблон или номер строки формата сообщения. Далее в группу входит несколько строк (да хоть 100, если не устанете их редактировать) с вариантами текста на различных языках. Простые объекты модифицируются непосредственно, объекты шаблона посредством единой строки-параметра, а сообщения просто заносятся в глобальный массив.
Поддерживаются следующие классы/объекты TM_Control (Caption, Hint), TM_Window (Title), TM_Field и TM_Text (Text), TM_Button (States[].Caption), TM_ComboBox (Clear, AddItem()), TM_Table (Title, запись столбца, запись строки), шаблоны и шаблонные окна.
Создание мультиязычной поддержки достаточно трудозатратно и содержит много рутины.
Пример на 3-языка и примерно 1000 объектов во вложении. Для оценки временных характеристик большего проекта можно просто размножить содержимое текстового файла.
В проекте используется функция FormatStr для разделения сообщения на текстовую часть и подставляемые значения, по мотивам:
Реализовал свою простенькую функцию FormatStr.