Русский перевод интерфейса и схемы, падежи, выкладка через релиз
Словарь схемы 0.16.25 (7250 строк), ru.json, ручные правки падежей, перевод ключа name только в меню, release.sh для выкладки в релиз current. Claude-Session: https://claude.ai/code/session_01BFaqS6mH9sa99RWghq2j46
Этот коммит содержится в:
@@ -0,0 +1,28 @@
|
||||
# Stalwart WebUI на русском, оформление StackWorks
|
||||
|
||||
Форк [stalwartlabs/webui](https://github.com/stalwartlabs/webui) (AGPL-3.0) для почтового сервера
|
||||
StackWorks mail.stackworks.ru. Отличия от оригинала:
|
||||
|
||||
- язык всегда русский: `src/i18n/ru.json` для строк самого интерфейса и `src/i18n/schema-ru.json`
|
||||
для схемы, которую присылает сервер (названия разделов, полей, описания); перевод схемы делает
|
||||
`src/i18n/schemaRu.ts` прямо при загрузке, ключ `name` переводится только в меню (layouts),
|
||||
в остальных местах это идентификаторы полей и значений;
|
||||
- оформление StackWorks: палитра и шрифты в `src/index.css`, логотип в `src/components/common/Logo.tsx`,
|
||||
тёмные верхняя полоса и боковое меню (классы sw-top, sw-aside, sw-active).
|
||||
|
||||
## Перевод
|
||||
|
||||
Рабочие файлы в `i18n-work/`: схема сервера `schema-0.16.25.json`, части перевода `part*.ru.json`,
|
||||
ручные правки `overrides.ru.json` (падежи названий: единственное число в винительном для
|
||||
«Создать/Изменить/Удалить …», множественное в родительном для «Показано 1-9 из …»),
|
||||
глоссарий `GLOSSARY.md`. Склейка: `python3 i18n-work/merge.py`.
|
||||
|
||||
После обновления сервера Stalwart новые строки схемы останутся английскими: выгрузить новую
|
||||
схему (`/api/schema/...` из браузера), найти строки без перевода, перевести и пересобрать.
|
||||
|
||||
## Выкладка
|
||||
|
||||
`./release.sh` собирает интерфейс и выкладывает `webui.zip` в релиз `current` этого репозитория.
|
||||
Сервер берёт его по адресу из `x:Application.resourceUrl`:
|
||||
https://git.stackworks.ru/viktor/stalwart-webui-ru/releases/download/current/webui.zip
|
||||
и обновляет раз в 30 дней или сразу по действию `x:Action/set {"@type":"UpdateApps"}`.
|
||||
Ссылка в новой задаче
Block a user