Поширені питання та відповіді на них

Налаштування

Як створити автоматизовану процедуру?

Weblate може обробляти усі завдання, які пов’язано із перекладом, у напівавтоматичному режимі. Якщо ви надасте Weblate доступ до запису до вашого репозиторію, переклад відбуватиметься без вашого втручання, якщо не станеться якихось конфліктів об’єднання.

  1. Налаштуйте ваше репозиторій Git так, щоб Weblate отримував сповіщення при кожній зміні, див. скрипти сповіщення, щоб дізнатися більше про те, як це зробити.

  2. Установіть адресу запису у розділі складника у Weblate, це надасть змогу Weblate записувати зміни до вашого репозиторію.

  3. Увімкніть запис після внеску <component-push_on_commit> у параметрах вашого складника на Weblate — Weblate записуватиме зміни до вашого репозиторію, коли вони траплятимуться на Weblate.

Як отримувати доступ до репозиторію за допомогою SSH?

Будь ласка, ознайомтеся із розділом Доступ до репозиторіїв, щоб дізнатися більше про налаштовування ключів SSH.

Як виправляти конфлікти об’єднання у перекладах?

Час від часу трапляються конфлікти об’єднання, коли зміни до файла вносяться одночасно на Weblate і у основному репозиторії коду. Зазвичай, цих конфліктів можна уникнути об’єднанням перекладів Weblate з репозиторієм до внесення змін до файлів перекладів (наприклад, до запуску msgmerge). Просто накажіть Weblate вносити усі переклади з черги (зробити це можна за допомогою пункту Супровід репозиторію у меню Управління) і виконайте об’єднання коду з репозиторієм (якщо не увімкнено автоматичний запис).

Якщо ви вже маєте конфлікт об’єднання, найпростішим способом вирішити проблему є усування усіх конфліктів локально на вашій робочій станції — просто додайте Weblate як віддалений репозиторій, об’єднайте його із основною гілкою розробки і виправте усі конфлікти. Щойно ви запишете зміни до основного репозиторію, Weblate зможе використовувати об’єднану версію без будь-яких інших додаткових дій.

Примітка

Залежно від конфігурації, доступ до репозиторію Weblate може потребувати проходження розпізнавання. При використанні вбудованого засобу експортування до git у Weblate розпізнавання виконуватиметься за вашим іменем користувача та ключем до програмного інтерфейсу.

# 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

# 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 передбачено підтримку запису змін у перекладах у межах одних налаштувань проєкту. Для кожних налаштувань складника, для якого ввімкнено запис (типова поведінка), внесені зміни автоматично поширюються на інші складники. У такий спосіб підтримується синхронізація перекладів, навіть якщо гілки значно різняться, і просте об’єднання файлів перекладів між ними є неможливим.

Щойно зміни з Weblate буде об’єднано, ви можете, вам, ймовірно, слід об’єднати ці гілки (залежно від вашої типової процедури розробки), відкинувши різниці:

git merge -s ours origin/maintenance

Як налаштувати переклад багатоплатформових проєктів?

У Weblate передбачено підтримку широкого діапазону форматів файлів (див. Підтримувані формати файлів), і найпростішим підходом є використання природного формату для кожної з платформ.

Після додавання всіх файлів перекладу для платформи як складників до одного проєкту (див. Додавання проєктів і складників перекладу) ви можете скористатися можливістю поширення перекладів (типово увімкнено, можна вимкнути на рівні Налаштовування складників) для перекладу рядків для всіх платформ одночасно.

Як експортувати репозиторій Git, який використовує Weblate?

У цьому репозиторії немає нічого особливого — воно зберігається у каталозі DATA_DIR і має назву vcs/<проєкт>/<складник>/. Якщо ви маєте SSH-доступ до відповідного комп’ютера, ви можете використовувати репозиторій безпосередньо.

Для анонімного доступу вам варто запустити сервер Git і налаштувати його на обслуговування репозиторію для всіх інших користувачів.

Крім того, ви можете скористатися Засіб експортування Git у Weblate для автоматизації процесу.

Якими є варіанти надсилання змін назад до основного репозиторію?

Це значним чином залежить від ваших налаштувань — Weblate є доволі гнучким у цьому сенсі. Ось приклади деяких варіантів робочого процесу, яким можна скористатися у Weblate:

  • Weblate автоматично надсилає і об’єднує зміни (див. Як створити автоматизовану процедуру?).

  • Ви наказуєте Weblate надіслати зміни вручну (це потребує доступ до запису до основного репозиторію).

  • Хтось вручну об’єднує зміни з репозиторію git Weblate до основного репозиторію.

  • Хтось перезаписує журнал, який створюється Weblate (наприклад, шляхом вилучення внесків із об’єднанням), об’єднує зміни і повідомляє Weblate, що слід відновити початковий стан у основному репозиторії.

Звичайно ж, ви можете використовувати будь-яке поєднання описаних вище варіантів.

Як обмежити доступ Weblate лише перекладами без надання системі доступу до початкового коду?

Ви можете скористатися командою git submodule для відокремлення перекладів від початкового коду, лишаючи їх під керуванням системи керування версіями.

  1. Створіть репозиторій із вашими файлами перекладів.

  2. Додайте його як підлеглий модуль до вашого коду:

    git submodule add git@example.com:project-translations.git path/to/translations
    
  3. Пов’яжіть Weblate із цим репозиторієм — йому більше не знадобиться доступ до репозиторію, яке містить ваш початковий код.

  4. Ви можете оновлювати основне репозиторію додаванням перекладів з Weblate за допомогою такої команди:

    git submodule update --remote path/to/translations
    

Щоб дізнатися більше, будь ласка, ознайомтеся із документацією до git submodule.

Як перевірити, чи правильно налаштовано мій Weblate?

До складу Weblate включено набір перевірок налаштувань, підсумки яких можна бачити у адміністративному інтерфейсі — достатньо перейти за посиланням Звіт щодо швидкодії у адміністративному інтерфейсі або відкрити адресу, яка завершуватиметься /manage/performance/, безпосередньо.

Чому усі внески підписано Weblate <noreply@weblate.org>?

Типове ім’я автора внеску, визначається DEFAULT_COMMITER_EMAIL і DEFAULT_COMMITER_NAME.

Автором же кожного внеску (якщо у відповідній системі керування версіями передбачено підтримку авторів внесків) буде належним чином записано — ним буде користувач, яким виконано переклад.

Для внесків із невідомим авторством (наприклад, анонімних пропозицій або результатів комп’ютерного перекладу) авторство належатиме анонімному користувачеві (див. ANONYMOUS_USER_NAME). Ви можете змінити ім’я та адресу електронної пошти за допомогою інтерфейсу керування.

Як пересунути файли у сховищі без втрати журналу у Weblate?

Щоб зберегти журнал, коментарі або знімки вікон, які пов’язано із рядками, після зміни розташування файлів, вам слід забезпечити неможливість вилучення рядків на Weblate. Такі вилучення можуть статися, якщо сховище Weblate оновлено, але налаштування складника все ще вказує на старі файли. У таких ситуаціях Weblate припускає, що слід вилучити всі переклади.

Рішення полягає у виконанні синхронної дії у Weblate:

  1. Заблокуйте відповідний складник у Weblate.

  2. Внесіть усі зміни з черги і об’єднайте їх зі змінами в основному сховищі.

  3. Вимкніть скрипти отримання проєкту; це запобігатиме негайному виявленню змін у сховищі з боку Weblate.

  4. Внесіть усі потрібні вам зміни до сховища (наприклад, за допомогою git mv), запишіть їх до основного сховища.

  5. Внесіть зміни до складника так, щоб все збігалося із новою конфігурацією. Після зміни налаштувань Weblate отримає оновлене сховище і зареєструє змінені місця, зберігши наявні рядки.

  6. Розблокуйте складник і повторно увімкніть скрипти у налаштуваннях проєкту.

Користування

Як рецензувати переклади інших користувачів?

  • У Weblate передбачено підтримку кількох робочих процесів з рецензування, див. Процеси перекладу.

  • Ви можете підписатися на усі зміни у розділі Сповіщення, а потім перевіряти внески інших учасників перекладу, коли сповіщення надходитимуть вам електронною поштою.

  • Передбачено особливий інструмент, панель його розташовано у нижній частині панелі перекладу. На цій панелі ви можете вибрати навігацію перекладами, які виконано іншими користувачами, починаючи з вказаної дати.

Дивись також

Процеси перекладу

Як надавати відгуки щодо початкового рядка?

На контекстних вкладках під перекладом ви можете скористатися вкладкою Коментарі, щоб надати відгук щодо початкового рядка або обговорити його із іншими перекладачами.

Як скористатися наявними перекладами під час перекладу?

  • Усі переклади у межах Weblate можна використовувати завдяки спільній пам’яті перекладів.

  • Ви можете імпортувати до Weblate наявні файли пам’яті перекладів.

  • Скористайтеся функціональними можливостями з імпортування для завантаження компіляції перекладів, пропозицій або перекладів, які потребують рецензування. Це оптимальний підхід для одноразового перекладу на основі компіляції або подібної бази даних перекладів.

  • Ви можете налаштувати tmserver із усіма базами даних перекладів, які у вас є, і надати змогу Weblate користуватися ними. Це корисно, якщо ви хочете скористатися ними декілька разів під час перекладу.

  • Іншим варіантом є переклад усіх пов’язаних перекладів в одному екземплярі Weblate, що забезпечить автоматичне поширення перекладів з одного складника до інших.

Чи оновлює Weblate файли перекладів між перекладами?

Weblate намагається звести до мінімуму зміни у файлах перекладів. Для деяких форматів файлів це, на жаль, може призвести до переформатування файла. Якщо ви хочете зберегти бажане для вас форматування, будь ласка, скористайтеся для цього скриптом попередньої обробки даних.

Звідки беруться визначення мов і як можна додати власне визначення?

Базовий набір визначень мов включено у пакунки Weblate і Translate-toolkit. У цьому наборі є дані понад 150 мов разом із даними щодо форм множини та напрямку запису тексту.

Ви можете визначати власні мови за допомогою адміністративного інтерфейсу — вам достатньо вказати дані щодо цієї мови.

Дивись також

Визначення мов

Чи може Weblate підсвічувати зміни у неточно перекладеному рядку?

У Weblate передбачено підтримку цієї можливості, але програмі потрібні дані для показу відмінностей.

Для файлів PO Gettext вам слід передати параметр --previous до команди msgmerge при оновленні файлів PO. Приклад:

msgmerge --previous -U po/cs.po po/phpmyadmin.pot

Для одномовних перекладів Weblate може знаходити попередній рядок за ідентифікатором, тому програма показує різниці автоматично.

Чому Weblate показує застарілі рядки перекладу, хоча шаблон перекладу було оновлено?

Weblate не виконує ніяких дій із файлами перекладу, окрім надання перекладачам можливості перекладати ці файли. Тому файли перекладів не буде оновлено, якщо буде оновлено шаблон або початковий код, на основі якого формується шаблон. Вам просто слід зробити це вручну і записати зміни до репозиторію, Weblate підхопить зміни автоматично.

Примітка

Зазвичай, варто об’єднувати зміни, які було внесено у Weblate до оновлення файлів перекладу, інакше, зазвичай, виникатимуть конфлікти, які доведеться усувати.

Наприклад, із файлами PO gettext ви можете оновити файли перекладів за допомогою програми msgmerge:

msgmerge -U locale/cs/LC_MESSAGES/django.mo locale/django.pot

Якщо ви хочете, щоб оновлення відбувалося автоматично, ви можете встановити додаток Оновити файли po, порівнявши із pot (msgmerge).

Вирішення проблем

Іноді запити не виконуються із повідомленням про помилку «відкрито забагато файлів»

Таке трапляється, якщо ваш репозиторій Git розростається й у вас стає забагато файлів. Стискання репозиторію Git має усунути проблему.

Найпростішим способом зробити це є така команда:

# Go to DATA_DIR directory
cd data/vcs
# Compress all Git repositories
for d in */* ; do
    pushd $d
    git gc
    popd
done

Дивись також

DATA_DIR

При спробі доступу до сайта браузер показує повідомлення про помилку «Bad Request (400)»

Найімовірнішою причиною є помилкове значення змінної ALLOWED_HOSTS. У цій змінній має містити список усіх назв вузлів, яким ви хочете дозволити доступ до вашого Weblate. Приклад:

ALLOWED_HOSTS = ["weblate.example.com", "weblate", "localhost"]

Що означає повідомлення «Знайдено кілька файлів для однієї мови (en)»?

Таке типово трапляється, якщо у вас є файл перекладу початковою мовою. Weblate стежить за початковими рядками і резервує для цього каталог початкової мови. Додатковий файл початковою мовою не обробляється.

  • Якщо переклад початковою мовою є бажаним, будь ласка, змініть початкову мову <component-source_language>`у налаштуваннях складника. Вам варто скористатися `English (Developer) як початковою мовою або використати Шлюз якості для початкових рядків.

  • Якщо файл перекладу для початкової мови є непотрібним, будь ласка вилучіть його з репозиторію.

  • Якщо файл перекладу для початкової мови є бажаним, але Weblate має його ігнорувати, будь ласка, скоригуйте Фільтр мов, щоб виключити його.

Підказка

Ви можете отримати подібне повідомлення про помилку і для інших мов. У такому випадку найімовірнішою причиною є те, що з однією мовою у Weblate пов’язано кілька файлів.

Це може бути наслідком того, що паралельно використано застарілі і нові коди мов (ja і jp для японської) або паралельно вжито код мови із кодом країни і загальний код (fr і fr_FR). Докладніше про це у розділі Обробка кодів мов.

Можливості

Чи передбачено у Weblate підтримку інших систем керування версіями, окрім Git і Mercurial?

У поточній версії Weblate не передбачено вбудованої підтримки нічого, окрім Git (із розширеною підтримкою Запити щодо злиття GitHub, Gerrit і Subversion) та ref:vcs-mercurial. Втім, можливе написання модулів для інших систем керування версіями.

Крім того, ви можете скористатися Віддалені допоміжні засоби Git у Git для доступу до інших систем керування версіями.

Крім того, у Weblate передбачено підтримку дій без системи керування версіями, див. Локальні файли.

Примітка

Для вбудованої підтримки інших систем керування версіями 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, із підкреслюваннями. Див. Визначення мов, щоб дізнатися більше.