localization
Локализация киоска и админки, коды ошибок бэкенда, форматы дат. Использовать при добавлении любой строки интерфейса, новой ошибки или работе с frontend/src/shared/i18n.ts.
Files1
View on GitHubSKILL.md.claude/skills/localization/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,
выравнивание по центру). Так «Закінчився папір» и «Покличте співробітника магазину»
стоят двумя строками, где их и рвут по смыслу, а не там, куда придётся.