Перевод
TailSocks переводится на Hosted Weblate. Переводчики работают в браузере, с машинными подсказками для начала; Weblate присылает результат в этот репозиторий пулл-реквестами. Исходный язык — английский, русский ведётся вместе с ним, все остальные приходят из Weblate.
Переводчикам
Заголовок раздела «Переводчикам»Откройте проект на Hosted Weblate, выберите язык (или начните новый) и переводите. Строки, которые являются названиями брендов или протоколов — Taildrop, Taildrive, MagicDNS, DNS, Serve, Funnel, — и технические заготовки вроде адресов помечены как непереводимые и не показываются.
Несколько договорённостей:
- Плейсхолдеры сохраняйте в точности:
%1$s,%2$d,\n. - Пишите коротко. Пояснения на экране свёрнуты до одной-двух строк; перевод вдвое длиннее английского обрежется.
- «Tailscale» и названия его продуктов не переводятся; приложение — неофициальный клиент и никогда не «приложение Tailscale».
Настройка проекта (сопровождающему, один раз)
Заголовок раздела «Настройка проекта (сопровождающему, один раз)»-
Создать проект на hosted.weblate.org → Add new translation project. Название
TailSocks, слагtailsocks, сайт — репозиторий на GitHub. Лицензия перевода: BSD-3-Clause, та же, что у кода, — стоящая по умолчанию Proprietary закрывает бесплатный план Libre. Проект начинается в пробном периоде; когда он создан, попросите план Libre (для открытых проектов со свободной лицензией) на его странице оплаты. -
Основной компонент, From version control:
- Репозиторий:
https://github.com/bropines/tailsocks.git, веткаmain. - Система контроля версий: GitHub pull request («Запрос на принятие изменений в GitHub»). Затем примите предложение перенести компонент в GitHub-приложение Hosted Weblate: оно пушит ветки с переводами и открывает пулл-реквесты, так что в
mainничего не попадает без просмотра. - Формат файлов: Android String Resource.
- Маска файлов:
app/src/main/res/values-*/strings.xml - Базовый файл:
app/src/main/res/values/strings.xml - Шаблон для новых переводов: тот же базовый файл. Стиль кодов языков: Android.
- Репозиторий:
-
Остальные файлы строк — экраны держат свои строки в
strings_<область>.xmlрядом сstrings.xml. Добавьте основному компоненту аддон Component discovery:- Регулярное выражение:
app/src/main/res/values-(?P<language>[^/]*)/(?P<component>strings_[^/]*)\.xml - Имя компонента:
{{ component }} - Базовый файл:
app/src/main/res/values/{{ component }}.xml, он же шаблон новых переводов. - Формат: Android String Resource.
- Регулярное выражение:
-
Уведомления о новых пушах приходят через GitHub-приложение. Только без него: Settings → Webhooks → Add webhook этого репозитория, адрес
https://hosted.weblate.org/hooks/github/, типapplication/json, только событие push. -
Аддоны, которые стоит включить: Cleanup translation files (убирает строки, удалённые из исходника) и Squash Git commits (один коммит на язык в каждом PR).
-
Бейдж для README, когда проект появится:
[](https://hosted.weblate.org/engage/tailsocks/)
Разработчикам, добавляющим строки
Заголовок раздела «Разработчикам, добавляющим строки»Каждую новую строку добавляйте на английском в values/ и на русском в values-ru/; остальное придёт из Weblate. Экрану с большим числом строк заведите свой strings_<область>.xml, а не раздувайте strings.xml. Помечайте строку translatable="false" только если в ней нет языка: название бренда или протокола, адрес, формат без слов.