Локалізація 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)

Зміна мови платформи

  • перехід у налаштування платформи

  • перехід на вкладку Загальне

  • на цій вкладці обрати нову мову із запропонованих та зберегти зміни

  • прийняти зміни та дочекатись редеплою control-plane-console з новою env змінною.

  • сторінки тепер завантажуються новою мовою

Інтерфейси адміністратора

Зміна мови платформи:

platform locale edit

Перегляд мови платформи

platform locale view

Міграція існуючих платформ при оновленні

Усі існуючи екземпляри платформи не будуть мати змінної у values.yaml. Для цього випадку значення за замовчуванням - українська мова (uk). Таким чином ніяких змін для міграції вносити не потрібно.

Технічне рішення

Експертизи

  • Devops

  • BE (Go)

  • FE

Технології

  • goi18n для перекладу golang частини та її шаблонів

  • vue-i18n для перекладу у vue додатку

Високорівневий дизайн рішення

localization platform
Figure 1. Передача мови платформи
cluster-mgmt/deploy-templates/values.yaml
global:
  language: uk
control-plane-console/deploy-templates/templates/admin_console_deployment.yaml
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 які бачить користувач у селектори перекладу.

Особливості файлів з перекладом

  • Бекенд та фронтенд використовують одні й ті самі файли перекладу у форматі JSON.

  • Файли зберігаються у репозиторії control-plane-console

  • Файли перекладу потрапляють в артефакт vue додатку

  • Мова передається у vue додаток через go template variable

Поза скоупом

  • Адміністратор платформи чи адміністратор реєстру обирає свою індивідуальну мову інтерфейсу