Пример создания мультиязычной формы

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

Создание ресурсов

  1. Создайте объект «Ресурсы». Выполните команду «Создать > Среда разработки > Ресурсы» в контекстном меню навигатора объектов. Будет открыто окно редактора ресурсов:

Изначально в ресурсах присутствует язык, который совпадает с языком репозитория по умолчанию. В примере это русский язык.

  1. Добавьте язык, на который будет переведена форма. Выполните команду «Файл > Добавить язык» в главном меню ресурсов. Будет открыт диалог:

  1. В списке «Выберите язык» выберите значение «Английский (США)» и нажмите кнопку «ОК». В ресурсы будет добавлен новый язык.

  2. Сохраните ресурсы. Выполните команду «Файл > Сохранить» в главном меню ресурсов. Будет открыт диалог «Сохранение ресурсов»:

    1. В поле «Имя объекта» укажите наименование ресурсов: «ResForAppl».

    2. В поле «Идентификатор» укажите идентификатор ресурсов: «ResForAppl».

    3. Выберите папку в репозитории, в которой будут храниться ресурсы.

Таким образом, в репозитории будут созданы ресурсы для работы с двумя языками.

Создание формы

  1. Создайте форму. Выполните команду «Создать > Среда разработки > Форма» в контекстном меню навигатора объектов. Будет открыт диалог «Создание объекта»:

    1. В поле «Наименование» укажите наименование формы: «LngForm».

    2. В поле «Идентификатор» укажите идентификатор формы: «Lng».

После нажатия кнопки «ОК» будет открыто окно среды разработки.

  1. Перейдите в инспектор объектов и найдите свойство Resources:

  1. Выделите свойство Resources и нажмите кнопку . Будет открыт диалог «Выбор ресурсов».

  2. Укажите ранее созданные ресурсы «ResForAppl» и нажмите кнопку «ОК». После этого в инспекторе объектов у всех визуальных компонентов к свойствам, имеющим строковый тип данных, будет добавлен дополнительный атрибут «ResourcesID». Значение данного атрибута будет формироваться автоматически:

  1. Разместите на форме следующие компоненты:

    1. GroupBox.

    2. На компонент GroupBox поместите два компонента RadioButton.

    3. Ниже компонента GroupBox поместите компонент ImageBox.

Форма будет выглядеть следующим образом:

  1. В инспектор объектов задайте значение свойства Text для формы и компонентов:

Наименование компонента Значение свойства Text
LngForm Смена языка
GroupBox1 Язык
RadioButton1 Русский
RadioButton2 Английский

Таким образом, после создания форма будет иметь следующий вид:

Перевод ресурсов

  1. В навигаторе объектов перейдите к созданным ресурсам «ResForAppl». Дважды щёлкните по ним или выполните команду «Редактировать» в контекстном меню. Ресурсы будут открыты для редактирования.

  2. Выберите язык перевода. На панели инструментов в списке языков выберите значение «Английский (США)»:

В редакторе ресурсов будет отображен столбец для перевода на английский язык:

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

  1. Задайте значения элементов для языка перевода. Перейдите в соответствующую ячейку строки элемента и введите перевод. Перевод элементов представлен в таблице:

Идентификатор элемента Значение для языка по умолчанию (Русский) Значение для языка перевода (Английский (США))
LngForm.LngForm Смена языка Change language
LngForm.GroupBox1 Язык Language
GroupBox1.RadioButton1 Русский Russian
GroupBox1.RadioButton2 Английский English
  1. Добавьте в ресурсы графический элемент для языка по умолчанию:

    1. Перейдите на вкладку «Изображение»;

    2. Нажмите кнопку на панели инструментов. Будет открыт стандартный диалог открытия файла.

    3. Выберите изображение, добавляемое в ресурсы.

  2. Измените идентификатор изображения:

    1. Дважды щёлкните по нему. Идентификатор будет переведен в режим редактирования.

    2. Введите идентификатор: «IMG_1».

    3. Нажмите клавишу ENTER или щёлкните по свободному пространству на вкладке.

  1. Добавьте изображение для языка перевода:

    1. Дважды щёлкните по элементу «[Изображение]», расположенному в столбце «Английский (США)». Будет открыт диалог «Редактирование изображения».

    2. Нажмите кнопку «Изменить». Будет открыт стандартный диалог открытия файла.

    3. Выберите изображение, добавляемое в ресурсы.

  2. Сохраните ресурсы. Выполните команду «Файл > Сохранить» в главном меню ресурсов.

Таким образом, будет выполнен перевод ресурсов.

Настройка формы

  1. В навигаторе объектов перейдите к созданной форме «LngForm». Дважды щёлкните по ней или выполните команду «Редактировать» в контекстном меню. Форма будет открыта в среде разработки.

  2. Добавьте ссылки на системные сборки «IO» и «Metabase»:

    1. Выполните команду «Сборка > Редактировать ссылки» в главном меню среды разработки.

    2. В отобразившемся диалоге на вкладке «Системные сборки» установите флажки напротив соответствующих сборок.

  3. Для компонентов RadioButton1 и RadioButton2 создайте общий обработчик события OnClick:

    1. В инспекторе объектов выберите компонент RadioButton1 и перейдите на вкладку «События».

    2. Дважды щелкните по ячейке, соответствующей событию OnClick. Будет создан обработчик события с наименованием «RadioButton1OnClick».

    3. На вкладке «События» измените наименование обработчика на «RadioButtonOnClick».

    4. В инспекторе объектов выберите компонент RadioButton2.

    5. Для события OnClick выберите обработчик с наименованием «RadioButtonOnClick».

Текст обработчика приведен ниже. В обработчике производится проверка выбранного переключателя и установка соответствующего языка и ресурсов.

  1. Для формы создайте обработчик события OnCreate:

    1. В инспекторе объектов выберите форму и перейдите на вкладку «События».

    2. Дважды щелкните по ячейке, соответствующей событию OnCreate. Будет создан обработчик события с наименованием «LNGFormOnCreate».

Текст обработчика приведен ниже. В обработчике вызывается событие OnClick для RadioButton1.

Таким образом, при запуске формы подписи компонентов и изображение в ImageBox1 будут соответствовать значению элементов ресурсов для русского языка.

Полный код формы:

Class LNGForm: Form
    GroupBox1: GroupBox;
    RadioButton1: RadioButton;
    RadioButton2: RadioButton;
    ImageBox1: ImageBox;

    Sub LNGFormOnCreate(Sender: Object; Args: IEventArgs);
    Begin
        RadioButton1.Checked := True;
        RadioButtonOnClick(RadioButton1, Null);
    End Sub LNGFormOnCreate;

    Sub RadioButtonOnClick(Sender: Object; Args: IMouseEventArgs);
    Var
        MB: IMetabase;
        Res: IResourceObject;
        ResSt: IResourceStrings;
    Begin
        MB := MetabaseClass.Active;
        If (Sender As IRadioButton) = RadioButton1 Then
            MB.CurrentLocale := LocaleCodeID.Russian;
        Else
            MB.CurrentLocale := LocaleCodeID.English_UnitedStates;
        End If;
        Res := Self.Resources;
        ResSt := Res.Locales.CurrentLocale.Strings;
        Self.Text := ResSt.Value("LNGForm.LNGForm");
        GroupBox1.Text := ResSt.Value("LNGForm.GroupBox1");
        RadioButton1.Text := ResSt.Value("LNGForm.RadioButton1");
        RadioButton2.Text := ResSt.Value("LNGForm.RadioButton2");
        ImageBox1.LoadImageFromStream(Res.Binaries.Value("IMG_1"));
    End Sub RadioButtonOnClick;

End Class LNGForm;

Запуск формы

Для запуска формы нажмите клавишу F9.

Вид формы при запуске или при установке переключателя «Русский»/«Russian»:

Вид формы при установке переключателя «Английский»/«English»:

См. также:

Разработка мультиязычных приложений