Формулировка проблемы. В связи с расширением рынков сбыта платформы необходимо реализовать возможность перевода системы на другие языки. Также необходима возможность добавления языковой панели во всех настраиваемых сущностях системы. Например: при создании типа документа вводить название не только на фиксированном количестве языков (казахский, русский, английский), но и на настроенных других.
Связанные задачи: 0300.
Решение. Новый подраздел Конфигуратора «Настройки системы» - «Региональные настройки» - «Переводы» должен содержать:
условия фильтра;
таблицу с пагинатором и значениями переводов согласно настроенного фильтра:
Тип
- объект перевода, соответствует
названию сущности;
По умолчанию
- перевод на локали по
умолчанию;
далее список столбцов с кодами языков, приведенных к верхнему регистру (порядок определяется настройками раздела "Языки") - переводы на соответствующих языках.
Фильтр к таблице является многосложным, возможно задать одно или несколько условий:
Фильтр по объектам
Только непереведенные
Поиск по языку
Выпадающий список "Фильтр по объектам" содержит список реализованных объектов:
Все типы
Дело
(не удаляется)
Шаблон номера
(не удаляется)
Журнал
(не удаляется)
Тип документа
(не удаляется)
Шаблон документа
(удаляется)
Фильтр потоков работ
(удаляется)
Диалог создания
(удаляется)
Категория нагрузок
(не удаляется)
Создание документов
(удаляется)
Категория рисков
(не удаляется)
Группа
(удаляется)
Роль
(удаляется)
Свойство
(удаляется)
Классификатор
(удаляется)
Шаблон системных показателей
(не удаляется)
Пункт создания
(не удаляется)
Внешний модуль
(удаляется)
Сотрудники
(не удаляется)
Встроенный отчет
(не удаляется)
Пользовательский отчет
(не удаляется)
Должность
(не удаляется)
Тип должности
(не удаляется)
Подразделение
(не удаляется)
Удаленная компания
(не удаляется)
Сообщение
Примечание.
Справочники, а также основанные на них приоритеты и процессы в редакторе ресурсов не отображаются. Их редактирование необходимо осуществлять только из соответствующего раздела конфигуратора.
Пометка "удаляется" означает, что удаленная сущность удаляет за собой и все переводы, в редакторе ресурсов они отображаться более не будут.
Пометка "не удаляется", в свою очередь, показывает, что сущность фактически не удаляется (как правило, это действие скрытия), ее переводы будут продолжать отображаться в редакторе ресурсов.
Данный фильтр позволяет отобразить все переводы конкретного объекта. Первый пункт "Все типы" является группирующим элементом. Последний пункт "Сообщение" соответствует статичным переводам системы.
Включенный флажок "Только непереведенные" соответствует атрибуту измененности = false, иначе отображаются все переводы, независимо от значения атрибута измененности.
Выпадающий список "Поиск по языку" содержит локаль по умолчанию (выбрано по умолчанию) и список кодов показываемых локалей. Справа от него отображается поле ввода. Поиск осуществляется по всем страницам таблицы по нажатию на клавишу «Enter» либо на иконку лупы и работает по принципу "Содержит". Placeholder поля:
Поиск
Пустая строка поиска отключает "Поиск по языку", фильтр по объектам и атрибуту измененности осуществляется по всем локалям.
В свою очередь, наличие поисковой строки включает "Поиск по языку", фильтр по объектам и атрибуту измененности осуществляется только в выбранной в выпадающем списке локали.
Примеры использования фильтров.
Объект: дела, только непереведенные: да, язык: по умолчанию, поиск: пустой запрос. Результат - отображаются все дела, имеющие хотя бы один перевод с атрибутом измененности = false в любой из локалей.
Объект: все типы, только непереведенные: нет, язык: по умолчанию, поиск: "внутренний журнал". Результат - отображаются только полные вхождения поисковой строки "внутренний журнал" во всех объектах в локали по умолчанию.
Если в запрос выше включить флажок "Только непереведенные", то результатом такой фильтрации будет пустая таблица, т.к. в локали по умолчанию отсутствуют переводы с атрибутом измененности = false.
Если в таблице строк больше, чем высота экрана, тогда в таблице должен появиться вертикальный скролл. Ширина всех столбцов изменяемая, но не сохраняемая. Действие «drag-and-drop» отсутствует. Сортировка отсутствует, при этом таблица всегда отсортирована: сначала в порядке следования сущностей, между собой - в алфавитном порядке переводов по умолчанию.
На одной странице отображается максимум 30 записей. Переход к конкретной / последующим / предыдущим страницам осуществляется с помощью пагинатора.
Страница, которая содержит менее 30 строк, не должна дополняться значениями из предыдущей страницы.
Например. Всего записей 35. Первая страница отображает записи 1-30, вторая (последняя) страница отображает записи 31-35 (а не 5-35).
Формат отображения текущей страницы: A / B
, где А
- это номер текущей страницы, В - общее количество страниц.
По нажатию на данную область становится доступным поле ввода, которое содержит только номер текущей страницы. Значение в поле ввода выделено, доступен ввод только цифр 0-9. Ввод заканчивается нажатием клавиши Enter.
В случае, если номер введенной страницы выходит за рамки общего количества страниц (от 1 до В), активной должна остаться текущая страница.
Примечание.
В рамках текущей реализации пагинатор будет старого образца. Описанный и нарисованный в текущих макетах пагинатор будет реализован позднее.
Содержимое таблицы "Редактор ресурсов" - собранные в одном месте все переводы системы. Отсюда же доступно их редактирование. Переводы в редакторе ресурсов и непосредственно в настройках объекта (за исключением "сообщений") отображают и применяют одинаковые значения (т.е. изменение перевода в редакторе ресурсов автоматически отобразится и в настройках объекта, и наоборот).
Отображение значения перевода в таблице зависит от его атрибута измененности:
атрибут измененности = false: значение перевода является плейсхолдером (серая подпись внутри поля ввода);
атрибут измененности = true: значение перевода является значением поля ввода (черным текстом, не плейсхолдером).
Все ячейки, кроме столбца "Тип", могут находиться в двух состояних: в режиме просмотра (по умолчанию) и в режиме редактирования. В режиме редактирования одновременно не может находиться более одной ячейки. Если ячейка находится в режиме редактирования, то это означает, что она в данный момент является и выделенной. При наведении мышкой на любую ячейку таблицы в режиме просмотра должен отображаться тултип, отображающий полное значение ячейки.
Для объектов "Сообщение" переводы в локали по умолчанию недоступны для редактирования.
Режим просмотра -> режим редактирования
Для выделенной ячейки нажатие клавиши «Enter» должно переводить ячейку в режим редактирования, выделяется ее содержимое.
Режим редактирования -> режим просмотра
Для редактируемой ячейки нажатие клавиши «Esc» либо потеря фокуса на ячейке должны переводить ячейку в режим просмотра без сохранения внесенных изменений. Нажатие клавиши «Enter» должно приводить к сохранению внесенных изменений с учетом правил валидации, описанных ниже.
Валидация перевода при сохранении (на нажатие клавиши «Enter»): если поле содержит пустое значение либо одни пробелы, ячейка переходит в режим просмотра, в котором отображается плейсхолдер с переводом из локали по умолчанию.
Кроме того, на поле ввода присутствует ограничение по количеству сохраняемых символов (кроме справочников): 255. Если ввести больше - при сохранении текст обрежется до 255-го символа включительно и сохранится именно такое значение.
Контекстное меню и удаление строк отсутствует.
Сохранение всех изменений на сервере происходит каждый раз по нажатию на кнопку «Enter».
Все сохраненные переводы должны использоваться во всей системе во всех местах платформы, где используется данный объект или сообщение.