Описание пользователя
Глава 4. Перевод интерфейса пользователя RDS
§4.7. Перевод автокомпилируемых моделей
Описываются особенности перевода текстов интерфейса пользователя в моделях блоков, обслуживаемых стандартными модулями автокомпиляции.
§4.7.1. Встраивание переводов в автокомпилируемые модели
Описывается создание в автокомпилируемых моделях текстов сразу на нескольких языках.
В автокомпилируемых моделях тексты на разных языках могут храниться не только в отдельных двоичных файлах, но и в самих файлах моделей. Эти тексты можно переводить через процедуру экспорта/импорта, похожую на описанную в §4.4 (формат файлов тот же), либо сразу вводить через интерфейс редактора модели при ее создании. Ниже рассматриваются оба способа.
В автокомпилируемой модели к интерфейсу пользователя можно отнести только окно настройки блока, создаваемое средствами редактора модели, и, возможно, какие-то сообщения, выводимые пользователю в отдельных окнах. Перевод сообщений описывается ниже, сначала рассмотрим перевод элементов окна настройки.
В редакторе модели рядом с полями редактирования элементов окна настройки, которые требуют перевода, располагаются кнопки с многоточием, нажатие которых позволяет ввести тексты элементов на разных языках (разумеется, языки уже должны быть добавлены в RDS). Всего таких элементов четыре:
- заголовок самого окна (рис. 507);
- названия вкладок (рис. 508);
- заголовки полей ввода и надписи (рис. 509, левее и выше);
- варианты выбора для выпадающих списков (рис. 509, правее и ниже).
Рис. 507. Кнопка задания заголовка окна настроек на разных языках
Рис. 508. Кнопка задания названия вкладки на разных языках
Рис. 509. Кнопки задания текстов на разных языках для заголовка поля ввода (левее и выше)
и списка вариантов выпадающего списка (правее и ниже)
При нажатии на любую из этих кнопок открывается окно (рис. 510), разделенное по вертикали на две части. В верхней части окна можно включить флажок «» и указать имя двоичного файла с переводами, сформированного по какому-либо (вручную созданному для модели или группы моделей) файлу описания рассмотренным ранее способом, а также имя группы и имя объекта для данного текста (их произвольно выбирает разработчик модели). В этом случае текст параметра для автокомпилируемой модели будет загружаться из файла перевода точно так же, как и другие тексты интерфейса пользователя RDS. Текст для языка «по умолчанию» (русского) при этом вводится в нижней часи окна.
Рис. 510. Окно задания текстов на разных языках
Если флажок «» не установлен, все тексты для имеющихся в данный момент языков вводятся в нижней части окна. В левой нижней части располагается список существующих языков (включая вариант «по умолчанию»), а в правой нижней – поле ввода текста для выбранного в списке слева языка. В файле модели будут сохранены все введенные тексты, при этом в «основном» интерфейсе редактора модели, изображенном на рисунках выше, будет отображаться и редактироваться значение для текущего языка.
При изменении языка интерфейса пользователя RDS в файле модели ничего автоматически изменено не будет. Но при следующей загрузке схемы с этой моделью модуль автокомпиляции обнаружит, что DLL для модели была скомпилирована раньше изменения языка. Это приведет к тому, что DLL модели будет перекомпилирована, и в момент формирования текста программы для компиляции в этот текст будут записаны строки для текущего, т.е. нового, языка.
Во многих случаях текстовые константы (строки в кавычках) используются непосредственно в тексте программы модели. Допустим, где-то в программе при выполнении (или невыполнении) какого-то условия пользователю выдается окно с сообщением при помощи вызова функции Windows API MessageBox или соответствующей ей функции RDS rdsMessageBox:
rdsMessageBox("Выберите режим работы","Ошибка", MB_OK|MB_ICONWARNING);
Здесь строки «Выберите режим работы» и «Ошибка» встроены непосредственно в программу модели и не будут зависеть от текущего языка. Для того, чтобы такие строки тоже можно было переводить, в модель можно вводить текстовые константы с разными текстами для разных языков, которые в программе используются по именам. Для ввода или редактирования этих текстовых констант в редакторе модели служит пункт меню «». При его выборе открывается окно, изображенное на рис. 511.
Рис. 511. Окно работы с текстовыми константами
Большую часть окна занимает список констант формата «имя = значение», справа находятся кнопки для добавления, изменения и удаления констант. При добавлении константы или редактировании уже существующей открывается окно, изображенное на рис. 512.
Рис. 512. Редактирование текстов константы
В верхней части окна располагается поле для ввода имени константы, которое будет использоваться в программе модели. Это имя должно удовлетворять правилам языка программирования C, не должно совпадать с именами других используемых в модели объектов (переменных блока, настроечных параметров и т.п.), а также не должно начинаться с букв «rds», чтобы не пересекаться со служебными функциями и константами.
Ниже слева находится список существующих языков вместе с вариантом «по умолчанию», как в похожем окне задания текстов для элементов окна настройки блока. Справа – многострочное поле для ввода текста значения константы для выбранного в списке слева языка. В нижней левой части окна находится выпадающий список «», в котором можно выбрать разделитель строк для многострочных констант: либо LF («\n»), либо CRLF («\r\n»). Какую именно комбинацию выбрать, зависит от того, для чего константа будет применяться, это должен решать создатель модели.
На рис. 511 в список введены две константы с именами USER_MESSAGE и USER_MESSAGE_CAPTION. Приведенный выше вызов функции вывода сообщения с использованием этих констант будет выглядеть так:
rdsMessageBox(USER_MESSAGE,USER_MESSAGE_CAPTION, MB_OK|MB_ICONWARNING);
При формировании текста программы для компиляции модели для каждой из этих констант будет автоматически вставлен оператор #define со значением для текущего языка, поэтому при смене языка и перекомпиляции модели текст сообщения будет автоматически изменяться.