Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Лиза от 15 Октября 2026, 17:50:06

Название: Мультиязычность проекта
Отправлено: Лиза от 15 Октября 2026, 17:50:06
Добрый день, может у кого-то есть интересные идеи реализации мультиязычности проекта.
Вариант привязки переменной языка к Var или VarEx не подходит, я их задействую для видимости и цвета.
Есть идея перебора по именам элементов проекта, но тоже как-то трудозатратно. Существуют ли еще способы?
Название: Re: Мультиязычность проекта
Отправлено: Simple_Scada от 16 Октября 2026, 11:11:20
Здравствуйте.

Цитировать
Есть идея перебора по именам элементов проекта
Да, можно использовать этот вариант. Например, через скрипт изменять текст, подписи, подсказки объектов и т.д. Следует учитывать, что изменить текст сообщений не получится даже через скрипты – они всегда отображаются в том же виде, в котором были добавлены в БД. Также, изменение любых свойств объектов будет отображаться на всех клиентах. К примеру, если на одном клиенте вызвали скрипт изменения языка, то эти изменения отобразятся на всех клиентах.
Название: Re: Мультиязычность проекта
Отправлено: pan2000 от 19 Октября 2026, 08:58:02
Почитываю иногда форум и до сих пор поражаюсь как изощрятся люди при решении простейших задач.

   Здравствуйте.

  Мультиязычная поддержка минимально должна распространяться на простые объекты, шаблоны (все экземпляры изменяются одинаковым образом), шаблонные окна и сообщения пользователя.
  Для описания мультиязычной поддержки используется текстовый файл. Первая строка содержит названия поддерживаемых языков. Далее следуют группы, включающие строку с именем и свойством объекта простого или входящего в шаблон или номер строки формата сообщения. Далее в группу входит несколько строк (да хоть 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.