Навигация:
<< >> Оглавление Указатель

Описание пользователя

Глава 4. Перевод интерфейса пользователя RDS

§4.7. Перевод автокомпилируемых моделей

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

§4.7.1. Встраивание переводов в автокомпилируемые модели

Описывается создание в автокомпилируемых моделях текстов сразу на нескольких языках.

В автокомпилируемых моделях тексты на разных языках могут храниться не только в отдельных двоичных файлах, но и в самих файлах моделей. Эти тексты можно переводить через процедуру экспорта/импорта, похожую на описанную в §4.4 (формат файлов тот же), либо сразу вводить через интерфейс редактора модели при ее создании. Ниже рассматриваются оба способа.

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

В редакторе модели рядом с полями редактирования элементов окна настройки, которые требуют перевода, располагаются кнопки с многоточием, нажатие которых позволяет ввести тексты элементов на разных языках (разумеется, языки уже должны быть добавлены в RDS). Всего таких элементов четыре:

Кнопка задания заголовка окна настроек на разных языках

Рис. 507. Кнопка задания заголовка окна настроек на разных языках

Кнопка задания названия вкладки на разных языках

Рис. 508. Кнопка задания названия вкладки на разных языках

Кнопки задания текстов на разных языках для заголовка поля ввода (левее и выше) и списка вариантов выпадающего списка (правее и ниже)

Рис. 509. Кнопки задания текстов на разных языках для заголовка поля ввода (левее и выше)
и списка вариантов выпадающего списка (правее и ниже)

При нажатии на любую из этих кнопок открывается окно (рис. 510), разделенное по вертикали на две части. В верхней части окна можно включить флажок «загружать из файла переводов» и указать имя двоичного файла с переводами, сформированного по какому-либо (вручную созданному для модели или группы моделей) файлу описания рассмотренным ранее способом, а также имя группы и имя объекта для данного текста (их произвольно выбирает разработчик модели). В этом случае текст параметра для автокомпилируемой модели будет загружаться из файла перевода точно так же, как и другие тексты интерфейса пользователя RDS. Текст для языка «по умолчанию» (русского) при этом вводится в нижней часи окна.

Окно задания текстов на разных языках

Рис. 510. Окно задания текстов на разных языках

Если флажок «загружать из файла переводов» не установлен, все тексты для имеющихся в данный момент языков вводятся в нижней части окна. В левой нижней части располагается список существующих языков (включая вариант «по умолчанию»), а в правой нижней – поле ввода текста для выбранного в списке слева языка. В файле модели будут сохранены все введенные тексты, при этом в «основном» интерфейсе редактора модели, изображенном на рисунках выше, будет отображаться и редактироваться значение для текущего языка.

При изменении языка интерфейса пользователя RDS в файле модели ничего автоматически изменено не будет. Но при следующей загрузке схемы с этой моделью модуль автокомпиляции обнаружит, что DLL для модели была скомпилирована раньше изменения языка. Это приведет к тому, что DLL модели будет перекомпилирована, и в момент формирования текста программы для компиляции в этот текст будут записаны строки для текущего, т.е. нового, языка.

Во многих случаях текстовые константы (строки в кавычках) используются непосредственно в тексте программы модели. Допустим, где-то в программе при выполнении (или невыполнении) какого-то условия пользователю выдается окно с сообщением при помощи вызова функции Windows API MessageBox или соответствующей ей функции RDS rdsMessageBox:

  ("Выберите режим работы","Ошибка",
                |);

Здесь строки «Выберите режим работы» и «Ошибка» встроены непосредственно в программу модели и не будут зависеть от текущего языка. Для того, чтобы такие строки тоже можно было переводить, в модель можно вводить текстовые константы с разными текстами для разных языков, которые в программе используются по именам. Для ввода или редактирования этих текстовых констант в редакторе модели служит пункт меню «модель | текстовые константы». При его выборе открывается окно, изображенное на рис. 511.

Окно работы с текстовыми константами

Рис. 511. Окно работы с текстовыми константами

Большую часть окна занимает список констант формата «имя = значение», справа находятся кнопки для добавления, изменения и удаления констант. При добавлении константы или редактировании уже существующей открывается окно, изображенное на рис. 512.

Редактирование текстов константы

Рис. 512. Редактирование текстов константы

В верхней части окна располагается поле для ввода имени константы, которое будет использоваться в программе модели. Это имя должно удовлетворять правилам языка программирования C, не должно совпадать с именами других используемых в модели объектов (переменных блока, настроечных параметров и т.п.), а также не должно начинаться с букв «rds», чтобы не пересекаться со служебными функциями и константами.

Ниже слева находится список существующих языков вместе с вариантом «по умолчанию», как в похожем окне задания текстов для элементов окна настройки блока. Справа – многострочное поле для ввода текста значения константы для выбранного в списке слева языка. В нижней левой части окна находится выпадающий список «перевод строки», в котором можно выбрать разделитель строк для многострочных констант: либо LF («\n»), либо CRLF («\r\n»). Какую именно комбинацию выбрать, зависит от того, для чего константа будет применяться, это должен решать создатель модели.

На рис. 511 в список введены две константы с именами USER_MESSAGE и USER_MESSAGE_CAPTION. Приведенный выше вызов функции вывода сообщения с использованием этих констант будет выглядеть так:

  (USER_MESSAGE,USER_MESSAGE_CAPTION,
                |);

При формировании текста программы для компиляции модели для каждой из этих констант будет автоматически вставлен оператор #define со значением для текущего языка, поэтому при смене языка и перекомпиляции модели текст сообщения будет автоматически изменяться.


<< >> Оглавление Указатель