localization

Локализация киоска и админки, коды ошибок бэкенда, форматы дат. Использовать при добавлении любой строки интерфейса, новой ошибки или работе с frontend/src/shared/i18n.ts.

SKILL.md

GitHub

Локализация

Язык интерфейса — украинский (переключается в админке), язык кода и комментариев — русский.

  • Ни одной строки интерфейса в компонентах. Все тексты — в frontend/src/shared/i18n.ts, оба языка (uk, ru) правятся одновременно. Язык хранится в настройках устройства, а не в браузере: киоск обслуживает покупателей, а не владельца ноутбука.
  • Бэкенд не отдаёт готовые фразы об ошибках. Он возвращает коды из app/errors.py (print.paper_out, scale.no_link, …), интерфейс переводит их через translateError. Новая ошибка = код в errors.py + ключ в обоих словарях.
  • Точка в ключе словаря — разделитель пути в vue-i18n, поэтому коды хранятся с подчёркиванием (print_paper_out), а translateError делает замену.
  • Единственный текст, который переводит бэкенд, — надписи на этикетке (app/services/i18n.py): они впечатываются в растр, фронтенд их не видит.
  • Даты и время форматируются через localeTag(), а не зашитым ru-RU.

Перенос строки в сообщении задаётся самим текстом ( в строке перевода), а не шириной экрана: тост киоска печатает его как есть (white-space: pre-line, выравнивание по центру). Так «Закінчився папір» и «Покличте співробітника магазину» стоят двумя строками, где их и рвут по смыслу, а не там, куда придётся.