Задача [0592]: Мультиязычность объектов конфигурации

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

Связанные задачи:

Используется:

Решение:

Задачу разделим следующим образом:

Реестры

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

При обновлении текущее значение поля должно стать значением локали по умолчанию.

В раздел "Переводы" в выпадающий список "Фильтр по объектам" необходимо добавить объект "Реестр" после объекта "Категория рисков", в котором будут храниться переводы названий реестров. При скрытии реестра переводы будут продолжать отображаться в редакторе ресурсов.

Во-вторых, необходимо доработать экспорт реестров и выгружать значение мультиязычного поля "Наименование реестра" вместо значения поля "Наименование реестра".

В-третьих, необходимо доработать API метод rest/api/registry/list, добавив в него необязательный входной параметр:

В массиве JSON в качестве параметра registryName необходимо возвращать название реестра в соответствующей локали.

Также необходимо доработать API метод rest/api/registry/info, добавив в него необязательный входной параметр:

В строке JSON в качестве параметра name необходимо возвращать название реестра в соответствующей локали.

Действие по документу реестра

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

При обновлении текущее значение поля должно стать значением локали по умолчанию.

В раздел "Переводы" в выпадающий список "Фильтр по объектам" необходимо добавить объект "Действия по документу реестра" после объекта "Реестры", в котором будут храниться переводы действий по документу реестра. При скрытии реестра данные переводы будут продолжать отображаться в редакторе ресурсов.

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

Подпись полей реестра (заголовки)

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

Рисунок 60. Мультиязычное поле ввода в таблице "Поля формы реестра"

Мультиязычное поле ввода в таблице "Поля формы реестра"

При обновлении текущее значение поля должно стать значением локали по умолчанию.

В раздел "Переводы" в выпадающий список "Фильтр по объектам" необходимо добавить объект "Подпись полей реестра" после объекта "Действия по документу реестра", в которой будут храниться переводы названий полей реестров. При скрытии реестра данные переводы будут продолжать отображаться в редакторе ресурсов.

Во-вторых, необходимо доработать экспорт реестров и выгружать значение мультиязычного поля "Название поля" вместо значения поля "Название поля".

В-третьих, необходимо доработать API метод rest/api/registry/info: в строке JSON в качестве параметра label возвращать название поля реестра в соответствующей локали (доработка данного метода).

Компонент формы "Неизменяемый текст"

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

Рисунок 61. Вкладка "Переводы"

Вкладка "Переводы"

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

Переводы компонента формы "Неизменяемый текст" в редакторе ресурсов не отображаются. Их редактирование необходимо осуществлять только из соответствующего раздела конфигуратора.

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

В-третьих, необходимо доработать API методы:

  • rest/api/asforms/form/{formID}

  • rest/api/asforms/form_ext

Для компонента формы "Неизменяемый текст" в параметре label должно возвращаться последнее сохраненное значение компонента. Также необходимо возвращать массив translations, который содержит переводы данного компонента. Массив состоит из следующих параметров:

  • localeID - код локали,

  • text - текст перевода,

  • editByUser - признак изменения текста перевода пользователем. Возвращает одно из значений:

    • true - текст был изменен,

    • false - текст не менялся.

Пример возвращаемого описания компонента формы "Неизменяемый текст":

{
    "properties":
        [
             {
                 "id": "cmp-1",
                 "type": "label",
                 "config": {},
                 "label": "Неизменяемый текст 1",
                 "translations": 
                    [
                        {
                            "localeID" :"c",
                            "text":"Неизменяемый текст 1",
                            "editByUser": true
                        },
                        {
                            "localeID":"en",
                            "text":"11111",
                            "editByUser": true
                        },
                        {
                            "localeID":"ru",
                            "text":"22222",
                            "editByUser": true
                        },
                        {
                            "localeID":"kk",
                            "text":"Неизменяемый текст 1",
                            "editByUser": false
                        }
                    ],
                 "style": 
                    {
                    "align": "left",
                    "font": "Arial",
                    "fontsize": "12"
                    }
            }
        ]
        
}