Просто возникла идея перевода текста для элемента "Текст" и подсказок для всех остальных элементов.
Можно создать файл, где в строке прописать что то на подобии:
ID; текст на рус;текст на анг.;подсказка на рус; подсказка на анг
Text1; Старт; Start; Готовность к старту;Start ready
Field23;x; x; Введите значение; Enter value
А дальше (для сокращения кода) узнаем ID элемента и если он есть в списке меняем в зависимости от языка. Как бы хотелось в пару строк вложиться. Но пока работает только прямое присваивание.
Глобальный модуль:
interface
procedure OpenFileLang(nameFile:string);
implementation
procedure OpenFileLang(nameFile:string);
begin
TextFileOpen(nameFile, '', fomReset, fcpUTF8);
//как бы прописываем все элементы у которых надо перевести подсказки и текст.
Text1.Text := TextFileReadLn;
Text1.Hint := TextFileReadLn;
Text2.Text := TextFileReadLn;
Text2.Hint := TextFileReadLn;
TextFileClose;
end;
end.
Универсальный, но надо предварительно в строгом соответствии подготовить соответствующие файлы:
begin
if not FileExists('lang_ru.txt', '') then Exit;
if not FileExists('lang_eng.txt', '') then Exit;
if not FileExists('lang_X.txt', '') then Exit;
if Sender is TM_Object then // проверяем, что Sender это объект
with Sender as TM_Object do // приводим Sender к типу "TM_Object"
begin
if bLangNumber.Value = 0 then
OpenFileLang('lang_X.txt');
if bLangNumber.Value = 1 then
OpenFileLang('lang_ru.txt');
if bLangNumber.Value = 2 then
OpenFileLang('lang_eng.txt');
end;
end.
В принципе это можно было бы провернуть и с сообщениями. Дополнительно обрабатывать каждое состояние. То что в базу будет писаться то русский то английский, ну так мы же язык меняли не просто так. Ну а так как менять текст сообщения нельзя, то как бы и все.
Да что то ручками надо было бы писать самому, но как бы что бы это был встроенный механизм самой скады. Механизм по созданию таблицы для имени переменной и ее ID прекрасно работает.