Часто задаваемые вопросы¶
Конфигурация¶
Как создать автоматизированный рабочий процесс?¶
Weblate может выполнить все действия, связанные с переводом, в полуавтоматическом режиме. Если вы дадите ему доступ на отправку изменений в ваш репозиторий, переводы смогут в нём появляться без запроса подтверждения, если только не возникнут конфликты слияния.
Настройте свой Git-репозиторий так, чтобы он сообщал Weblate, когда происходят какие-либо изменения; для получения информации о том, как это сделать, смотрите раздел Обработчики уведомлений.
Set a push URL at your Настройки компонента in Weblate, this allows Weblate to push changes to your repository.
Turn on Отправлять при коммите on your Настройки компонента in Weblate, this will make Weblate push changes to your repository whenever they happen at Weblate.
Как получить доступ к репозиториям по SSH?¶
Информацию о настройке SSH-ключей смотрите в разделе Доступ к репозиториям.
Как исправить в переводах конфликты слияния?¶
Merge conflicts happen from time to time when the translation file is changed in both Weblate and the upstream repository concurrently. You can usually avoid this by merging Weblate translations prior to making changes in the translation files (e.g. before running msgmerge). Just tell Weblate to commit all pending translations (you can do it in Repository maintenance in the Operations menu) and merge the repository (if automatic push is not on).
Если вы уже столкнулись с конфликтом слияния, самый простой способ решить все конфликты локально на вашей машине - это добавить Weblate в качестве удалённого репозитория, совершить объединение с вышестоящим репозиторием и исправить все конфликты. После того как вы вернёте отправленные изменения, Weblate сможет использовать объединённую версию без каких-либо других специальных действий.
Примечание
Depending on your setup, access to the Weblate repository might require authentication. When using the built-in Экспортер Git in Weblate, you authenticate with your username and the API key.
# Open an existing checkout of the upstream repository or perform a fresh one:
git clone UPSTREAM_REPOSITORY_URL
cd REPO
# Commit all pending changes in Weblate, you can do this in the UI as well:
wlc commit
# Lock the translation in Weblate, again this can be done in the UI as well:
wlc lock
# Add Weblate as remote:
git remote add weblate https://hosted.weblate.org/git/project/component/
# You might need to include credentials in some cases:
git remote add weblate https://username:APIKEY@hosted.weblate.org/git/project/component/
# Update weblate remote:
git remote update weblate
# Merge Weblate changes:
git merge weblate/main
# Resolve conflicts:
edit …
git add …
…
git commit
# Rebase changes (if Weblate is configured to do rebases)
git rebase origin/main
# Push changes to upstream repository, Weblate will fetch merge from there:
git push
# Open Weblate for translation:
wlc unlock
Если вы используете в Weblate несколько ветвей, то же самое вы можете сделать со всеми ними:
# Add and update Weblate remotes
git remote add weblate-one https://hosted.weblate.org/git/project/one/
git remote add weblate-second https://hosted.weblate.org/git/project/second/
git remote update weblate-one weblate-second
# Merge QA_4_7 branch:
git checkout QA_4_7
git merge weblate-one/QA_4_7
... # Resolve conflicts
git commit
# Merge main branch:
git checkout main
git merge weblates-second/main
... # Resolve conflicts
git commit
# Push changes to the upstream repository, Weblate will fetch the merge from there:
git push
В случае использования файлов PO gettext’а существует способ полуавтоматического исправления конфликтов:
Извлеките и сохраните локальный клон Git-репозитория Weblate. Также возьмите второй свежий локальный клон вышестоящего Git-репозитория (то есть, вам нужно две копии вышестоящего Git-репозитория: нетронутая и рабочая):
# Add remote:
git remote add weblate /path/to/weblate/snapshot/
# Update Weblate remote:
git remote update weblate
# Merge Weblate changes:
git merge weblate/main
# Resolve conflicts in the PO files:
for PO in `find . -name '*.po'` ; do
msgcat --use-first /path/to/weblate/snapshot/$PO\
/path/to/upstream/snapshot/$PO -o $PO.merge
msgmerge --previous --lang=${PO%.po} $PO.merge domain.pot -o $PO
rm $PO.merge
git add $PO
done
git commit
# Push changes to the upstream repository, Weblate will fetch merge from there:
git push
Как мне сразу перевести несколько веток?¶
Weblate supports pushing translation changes within one Настройки проекта. For every Настройки компонента which has it turned on (the default behavior), the change made is automatically propagated to others. This way translations are kept synchronized even if the branches themselves have already diverged quite a lot, and it is not possible to simply merge translation changes between them.
После вливания изменений из Weblate, вам, возможно, придётся объединить эти ветви (в зависимости от вашего рабочего процесса разработки) для устранения различий:
git merge -s ours origin/maintenance
Как переводить многоплатформенные проекты?¶
Weblate поддерживает широкий диапазон форматов файлов (смотрите раздел Форматы файлов локализации) и самым простым подходом является использование родного формата для каждой платформы.
Once you have added all platform translation files as components in one project (see Добавление проектов и компонентов перевода), you can utilize the translation propagation feature (turned on by default, and can be turned off in the Настройки компонента) to translate strings for all platforms at once.
Как экспортировать используемый Weblate репозиторий Git?¶
Репозиторий ничем таким не выделяется, он живёт в каталоге DATA_DIR и называется vcs/<проект>/<компонент>/. Если у вас есть SSH-доступ к этой машине, вы можете работать с репозиторием напрямую.
Для анонимного доступа вы можете запустить Git-сервер и позволить ему открыть репозиторий во внешний мир.
В качестве альтернативы вы можете использовать Экспортер Git изнутри Weblate для автоматизации этого процесса.
Какие есть способы для отправки изменений в вышестоящий репозиторий?¶
В значительной степени это зависит от вашей установки, в этом плане Weblate достаточно гибок. Вот несколько примеров используемых с Weblate’ом рабочих процессов:
Weblate автоматически отправляет и вливает изменения (смотрите раздел Как создать автоматизированный рабочий процесс?).
Вы вручную приказываете Weblate отправить изменения (ему нужны права доступа на отправку изменений в вышестоящий репозиторий).
Кто-то вручную вливает изменения из git-репозитория Weblate в вышестоящий репозиторий.
Кто-то переписывает созданную Weblate историю (например, устраняя коммиты слияния), объединяет изменения и приказывает Weblate’у сбросить содержимое в вышестоящий репозиторий.
Конечно, вы можете смешивать все эти рабочие процессы по своему усмотрению.
Как мне ограничить Weblate доступом только к переводам, не раскрывая ему при этом исходный код?¶
Для отделения переводов от исходного кода вы можете использовать подмодули git, при этом вы по-прежнему держите их под контролем версий.
Создайте репозиторий с вашими файлами перевода.
Добавьте его в качестве подмодуля к своему коду:
git submodule add git@example.com:project-translations.git path/to/translations
Свяжите Weblate с этим репозиторием, ему больше не нужен доступ к репозиторию, содержащему ваш исходный код.
Вы можете обновлять основной репозиторий переводами из Weblate, выполняя команду:
git submodule update --remote path/to/translations
Для получения более подробной информации обратитесь к документации по подмодулям git.
Как мне проверить, правильно ли настроен мой Weblate?¶
Weblate включает в себя набор проверок конфигурации, которые можно посмотреть, перейдите по ссылке Отчёт о производительности в интерфейсе администратора, или напрямую откройте адрес /manage/performance/.
Почему все коммиты от имени Weblate имеют электронную почту <noreply@weblate.org>?¶
Weblate uses Weblate <noreply@weblate.org> as the default committer for all
commits, which is configured by DEFAULT_COMMITER_EMAIL and
DEFAULT_COMMITER_NAME. This is a technical identifier showing that
the commit was processed through Weblate.
However, the author of each commit is correctly recorded as the individual user who made the translation (when using Git). This means you can see who actually translated each string by examining the commit author field. The same applies to Mercurial; only Subversion does not have this capability.
Примечание
In Git, there is a distinction between the committer (who created the commit object) and the author (who made the changes). Weblate acts as the committer while preserving individual translator attribution as authors.
For commits where authorship cannot be determined (such as automated changes
from anonymous suggestions or machine translation results), the author is set
to the anonymous user. You can configure the anonymous user’s name and e-mail
in ANONYMOUS_USER_NAME.
См. также
Как переместить файлы в репозитории без потери истории в Weblate?¶
Чтобы сохранить историю, комментарии или снимки экрана, связанные со строками после изменения расположения файлов, необходимо убедиться, что эти строки никогда не удаляются в Weblate. Такие удаления могут произойти в случае, когда репозиторий Weblate обновился, но конфигурация компонента по-прежнему указывает на старые файлы. Это заставляет Weblate предположить, что он должен удалить все переводы.
Решением этой проблемы является выполнение операции в синхронизации с Weblate:
Заблокируйте затронутый компонент в Weblate.
Коммит ожидающих изменений в репозиторий Weblate.
Отключите получение веб-обработчиков в Настройки проекта; это не позволяет Weblate сразу увидеть изменения в репозитории.
Внесите необходимые изменения в репозиторий (например, используя git mv), отправьте их в вышестоящий репозиторий.
Измените Настройки компонента, чтобы он соответствовал новым настройкам; при изменении конфигурации Weblate получит обновлённый репозиторий и заметит изменённые местоположения, сохраняя при этом существующие строки.
Разблокируйте компонент и повторно включите обработчики в конфигурации проекта.
Подсказка
Резервные копии на уровне проекта might be useful to perform prior to such disrupting changes.
Использование¶
Как мне отрецензировать переводы других переводчиков?¶
В Weblate доступно на выбор несколько вариантов рабочего процесса, основанные на рецензировании, смотреть раздел Рабочие процессы перевода.
You can subscribe to any changes made in Уведомления and then check others contributions as they come in by e-mail.
В нижней части представления перевода имеется инструмент рецензирования, с помощью которого можно просматривать переводы, выполненные другими пользователями с заданной даты.
См. также
Как мне предоставить обратную связь по исходной строке?¶
На контекстных вкладках, расположенных ниже перевода, вы можете использовать вкладку Комментарии для предоставления обратной связи по исходной строке или для её обсуждения с другими переводчиками.
Как я могу использовать при переводе уже существующие переводы?¶
Благодаря разделяемой памяти переводов могут быть использованы все переводы, загруженные в Weblate.
Вы можете импортировать в Weblate свою уже существующую память переводов из файлов.
Используйте функциональность импорта для загрузки компендиума в качестве переводов, предложений или переводов, нуждающихся в рецензировании. Это лучший подход для одноразового перевода с использованием компендиума или аналогичной базы данных переводов.
Вы можете настроить tmserver для всех имеющихся у вас баз данных и позволить Weblate использовать их. Это хорошо, если вы хотите использовать его несколько раз во время перевода.
Другим вариантом является перенос всех связанных проектов на один экземпляр Weblate, что позволит автоматически подбирать переводы из других проектов.
Обновляет ли Weblate помимо самих переводов также и файлы перевода?¶
Weblate пытается свести к минимуму изменения в файлах перевода. Для некоторых форматов файлов это, к сожалению, может привести к переформатированию файла. Если вы хотите, чтобы файл был отформатирован по-вашему, пожалуйста, используйте для этого обработчик pre-commit.
См. также
How do I merge updated POT file with PO translations?¶
See Обновление файлов языка перевода for information on updating PO files when the POT template changes.
Откуда берутся определения языка и как я могу добавить свои собственные определения?¶
Базовый набор определений языка входит в состав Weblate и Translate-toolkit. Он охватывает более 150 языков и включает информацию о множественных формах или направлении текста.
Вы можете определять свои собственные языки в интерфейсе администратора. Для этого вам нужно просто ввести необходимую информацию о них.
См. также
Может ли Weblate подсветить изменения в строке «на правку»?¶
Weblate поддерживает такую подсветку, однако, чтобы показать различия, ему нужны данные.
К примеру, для PO-файлов Gettext при обновлении PO-файлов необходимо в вызов команды msgmerge передать параметр --previous:
msgmerge --previous -U po/cs.po po/phpmyadmin.pot
Для одноязычных переводов Weblate может найти предыдущую строку по её идентификатору, поэтому различия он показывает автоматически.
Почему Weblate до сих пор показывает старые строки перевода, хотя я уже обновил шаблон?¶
Weblate не пытается манипулировать файлами перевода никаким другим способом, кроме как разрешения переводчикам их переводить. Поэтому он также не обновляет переводимые файлы при изменении шаблона или исходного кода. Вам просто нужно сделать это вручную и внести изменения в репозиторий, после чего Weblate автоматически подхватит изменения.
Примечание
Обычно перед обновлением файлов перевода полезно влить изменения, сделанные в Weblate, в основной репозиторий, так как в противном случае вы, вероятно, столкнётесь с некоторыми конфликтами при слиянии.
Как справиться с переименованием файлов перевода?¶
При переименовании файлов в репозитории может случиться так, что Weblate воспримет это как удаление и добавление файлов. Это может привести к потере истории строк, комментариев и предложений.
Чтобы избежать этого, выполните переименование в следующие шаги:
Заблокируйте компонент перевода в Управление локальным хранилищем системы контроля версий (VCS).
Зафиксируйте ожидающие изменения в Управление локальным хранилищем системы контроля версий (VCS).
Объедините изменения Weblate с вышестоящим репозиторием.
Отключите получение обновлений через обработчики, используя Включить обработчики.
Выполните переименование файлов в репозитории.
Обновите конфигурацию компонента, чтобы она соответствовала новым именам файлов.
Включите обработчики обновлений и разблокируйте компонент.
Подсказка
Резервные копии на уровне проекта might be useful to perform prior to such disrupting changes.
Решение проблем¶
Запросы иногда завершаются с ошибкой «слишком много открытых файлов» (“too many open files”)¶
Такое иногда случается, когда ваш Git-репозиторий слишком разрастается и у вас их очень много. Сжатие Git-репозиториев улучшит эту ситуацию.
Простейший способ это сделать — запустить следующий скрипт:
# Go to DATA_DIR directory
cd data/vcs
# Compress all Git repositories
for d in */* ; do
pushd $d
git gc
popd
done
См. также
При доступе к сайту я получаю ошибку «Плохой запрос (400)» (“Bad Request (400)”)¶
Скорее всего это вызвано неправильной настройкой параметра ALLOWED_HOSTS. Он должен содержать все имена хостов, с которых вы хотите получать доступ к вашему Weblate’у. Например:
ALLOWED_HOSTS = ["weblate.example.com", "weblate", "localhost"]
См. также
Что означает сообщение «Есть больше файлов для одного языка (en)»?¶
Обычно такое происходит, когда у вас есть файл перевода для исходного языка. Weblate отслеживает исходные строки и резервирует для этого язык оригинала. Дополнительный файл для того же самого языка не обрабатывается.
Если требуется перевод на исходный язык, измените Исходный язык в настройках компонента. Возможно, вы захотите использовать «Английский (для разработчиков)» в качестве исходного языка или использовать Контроль качества исходных строк.
Если файл перевода для исходного языка не нужен, пожалуйста, удалите его из репозитория.
In case the translation file for the source language is needed, but should be ignored by Weblate, please adjust the Языковой фильтр to exclude it.
Подсказка
Вы также можете получить аналогичное сообщение об ошибке и для других языков. В таком случае, скорее всего, причина будет в том, что несколько разных файлов отображаются на один язык в Weblate.
Это может быть вызвано тем, что используются устаревшие коды языков одновременно с новыми (ja и jp для японского) или используется одновременно код, привязанный к стране, и основной (ru и ru_RU). Смотрите подробности в разделе «Разбор кодов языков».
Возможности¶
Поддерживает ли Weblate другие системы контроля версий, кроме Git и Mercurial?¶
В настоящее время Weblate не имеет родной поддержки ни для чего, кроме Git (с расширенной поддержкой Запрос на извлечение в GitHub, Gerrit и Subversion) и Mercurial, но вполне возможно дописать поддержку и других систем контроля версий.
Кроме того, Weblate поддерживает операции, не требующие системы контроля версий, смотрите раздел Локальные файлы.
Примечание
Для родной поддержки других систем контроля версий Weblate требует использования распределённых СКВ, и, вероятно, может быть настроен на работу с любой системой, помимо Git или Mercurial, но кто-то должен эту поддержку реализовать.
См. также
Как Weblate сообщает о том, кто какую строку перевёл?¶
Каждое изменение, сделанное через Weblate, фиксируется в системе контроля версий под именем переводчика. Таким образом, каждое изменение имеет надлежащее авторство, и вы можете отследить его с помощью стандартных инструментов СКВ, которые вы используете для кода.
Кроме того, если формат файла перевода это поддерживает, он обновляет заголовки файлов и включает в них имя переводчика.
См. также
Почему Weblate принудительно показывает все PO-файлы в одном дереве?¶
Weblate был спроектирован таким образом, что каждый PO-файл представляется одним компонентом. Это выгодно переводчиками, поскольку они знают, что они переводят на самом деле.
Изменено в версии 4.2: Переводчики могут переводить все компоненты одного проекта на один конкретный язык как единое целое.
Почему Weblate использует такие коды языков, как sr_Latn или zh_Hant?¶
Это коды языков, определяемые RFC 5646, чтобы лучше показать, что это и в самом деле разные языки, вместо ранее ошибочно используемых модификаторов (для вариантов @latin) или кодов стран (для китайского языка).
Weblate по-прежнему понимает старые коды языков и сопоставляет их с текущими — например, sr@latin будет обрабатываться как sr_Latn, а zh@CN — как zh_Hans.
Примечание
Weblate по умолчанию использует коды языков в стиле POSIX с подчёркиванием, подробнее см. в Определение языков.