Локалізація control-plane
Загальний опис
Адміністратор повинен мати можливість обрати мову для інтерфейсів платформи. Наразі це тільки control-plane-console.
Функціональні сценарії
-
Управління налаштуванням мови платформи.
-
Перегляд та використання інтерфейсу control plane console у обраній мові.
Загальні принципи та положення
-
Мову обирає адміністратор платформи для всіх користувачів control-plane-console.
-
Користувачі control-plane-console не можуть змінювати себе мову індивідуально.
-
Застосування змін потребує оновлення файлів (helm конфігурація) у git та пере-розгортання cp консолі
-
Зараз необхідно додати дві мови - англійську та українську
-
За замовчуванням обрано англійську
-
Для існуючих екземплярів платформи значення мови не буде обрано. Необхідно інтерпретувати це значення як українську для зворотної сумісності.
-
-
Кожній мові відповідає своя локаль. Локаль впливає на формати дат тощо.
-
Для української мови - Україна.
-
Для англійської - Сполучені Штати.
-
-
Переклади зберігаються у вигляді файлів у JSON-форматі стандартизованої структури
Компоненти системи та їх призначення в рамках дизайну рішення
У даному розділі наведено перелік компонент системи, які задіяні або потребують змін в рамках реалізації функціональних вимог.
| Підсистема | Компонент | Опис змін |
|---|---|---|
Підсистема управління Платформою та Реєстрами |
control-plane-console |
Розширення інтерфейсу управління платформою налаштуванням мови. Додавання механізму зміни мови у control-plane-console. Фактичний переклад на дві мови - англійська та українська. |
Сценарії використання (user flow)
Міграція існуючих платформ при оновленні
Усі існуючи екземпляри платформи не будуть мати змінної у values.yaml. Для цього випадку значення за замовчуванням - українська мова (uk). Таким чином ніяких змін для міграції вносити не потрібно.
Технічне рішення
Високорівневий дизайн рішення
global:
language: uk
env:
- name: LANGUAGE
value: {{ .Values.global.language }}
План розробки
-
Додати нову вкладку в налаштування платформи -
Загальне -
Додати на цю вкладку можливість вибору мови та обробити запит на оновлення цієї змінної (у
values.yaml)-
Доступні дві мови - English (en) та Українська (uk)
-
Зберігати необхідно саме HTML language codes
-
-
Зробити змінну обраної мови доступною для control-plane-console як environment variable (control-plane-console вже зараз пере розгортається після змін у gerrit платформи).
-
Для кожної мови використовувати відповідну локаль (uk - Україна, en - United States)
-
Значення мови за замовчуванням у разі порожнього значення env змінної -
uk -
З використанням бібліотеки
goi18nдодати механізм перемикання мов у golang додаток. Файли перекладів зберігаються у json. -
Трансформувати усі тексти які бачить користувач у селектори перекладу. Перетворення стосується як запитів на golang backend так і сторінок які рендеряться з використанням шаблонізатора
go -
Додати у vue frontend бібліотеку перекладу (
vue-i18n) та механізм перемикання перекладів на основі обраної мови (потрапляє у додаток із шаблонізатораgo). Json файли перекладів ті ж самі що і для golang. -
Трансформувати усі тексти vue frontend які бачить користувач у селектори перекладу.
Поза скоупом
-
Адміністратор платформи чи адміністратор реєстру обирає свою індивідуальну мову інтерфейсу
Відмінності реалізації від дизайну
Логіка вибору і застосування мови при операціях з платформою:
-
при розгортанні платформи з нуля мова обирається шляхом сетапу енв змінної з мовою PLATFORM_LANGUAGE, після цього виконується пуш в репозиторій cluster-mgmt
-
при апдейті платформи використовується поточне значення мови з values чарту control-plane-console
-
отримані значення записуються у customValues.yaml файл + перевикористовується існуючий підхід по передачі значень з цього файлу в деплоймент control-plane