Folyamatos lokalizáció¶
Olyan infrastruktúra áll rendelkezésre, amely biztosítja, hogy a fordítások szorosan kövessék a fejlesztést. Így a fordítók folyamatosan dolgozhatnak a fordításokon, ahelyett hogy a kiadás előtt kellene egyszerre nagy mennyiségű új szöveget lefordítaniuk.
Lásd még
Az alapvető integrációs lehetőségeket a fejlesztési folyamattal az Integráció a Weblate-tel dokumentáció ismerteti.
A folyamat a következő:
A fejlesztők módosításokat hajtanak végre, majd feltöltik azokat a VCS (verziókezelő) tárolóba.
Igény esetén frissítik a fordítási fájlokat, lásd: Új szövegek bevezetése.
A Weblate letölti a változásokat a VCS (verziókezelő) tárolóból, feldolgozza a fordítási fájlokat és frissíti az adatbázisát, lásd: Tárolók frissítése.
A fordítók a Weblate webes felületén keresztül vagy offline módosítások feltöltésével végzik a fordításokat.
Amint a fordítók elkészülnek, a Weblate véglegesíti a módosításokat a helyi tárolóban (lásd: Késleltetett véglegesítések (Lazy commits)).
A változások visszatöltésre kerülnek a forrás tárolóba, lásd: Változások feltöltése Weblate-ből.
Tipp
Nincs feltétlenül szükség külső kódtárolóra, a Weblate használható Helyi fájlok módban is, amikor a tároló csak a Weblate-en belül létezik.
Tárolók frissítése¶
Érdemes beállítani valamilyen módszert a háttérrendszeri tárolók frissítésére az eredeti forrásból.
Használhatja a Értesítési hookok funkciót, hogy integrálódjon a legnépszerűbb kódtároló szolgáltatásokkal:
A működéshez a projektben is engedélyezni kell a Hookok engedélyezése funkciót.
Frissítést manuálisan is indíthat a tárolókezelő felületen,vagy a REST API illetve a Weblate kliens parancssori eszköz használatával
Engedélyezze az
AUTO_UPDATEbeállítást, hogy automatikusan frissítse az összes összetevőt a Weblate példányábanFuttassa a
updategitparancsot (egy adott projekt kiválasztásával vagy a--allopcióval az összes projekt frissítéséhez)
Amikor a Weblate frissíti a tárolót, a frissítés utáni kiegészítők is automatikusan lefutnak, lásd: Kiegészítők.
Ütközések (merge conflict) elkerülése¶
A Weblate-ben fellépő összeolvasztási ütközések (merge conflicts) akkor fordulnak elő, ha ugyanazt a fájlt módosítják Weblate-ben és azon kívül is. A helyzettől függően többféle módszer is segíthet ennek kezelésében:
Ütközések elkerülése azzal, hogy a fordítási fájlokat kizárólag Weblate-ben szerkeszti
Ütközések elkerülése Weblate zárolásával külső módosítások idejére
Ütközések elkerülése azzal, hogy a fordítási fájlokat kizárólag Weblate-ben szerkeszti¶
Ha elkerüli a Weblate-en kívüli módosításokat, különösen egynyelvű fájlok esetén, akkor az új szövegeket közvetlenül a Weblate-ben lehet hozzáadni, és a teljes fájlszerkesztés ott történhet. Kétnyelvű fájloknál általában valamilyen üzenetkinyerési folyamat állítja elő a lefordítható fájlokat a forráskódból. Ez sokszor két lépésre bontható:
Az első lépés során sablon (például gettext POT fájl) készül, például az xgettext programmal.
A második lépés a sablon összeolvasztása a meglévő fordításokkal (például a gettext PO-fájlok frissítése az msgmerge használatával).
A második lépést a Weblate-en belül is el lehet végezni, így biztosítva, hogy minden függő változtatás beépüljön a művelet előtt.
Ütközések elkerülése Weblate zárolásával külső módosítások idejére¶
Weblate integrálása a frissítési folyamatába úgy, hogy előtte kényszeríti a Weblate-et minden függő módosítás feltöltésére, majd zárolja a fordítást, amíg kívülről változtatásokat végez. Ehhez használhatja a REST API segítségével történő távoli vezérlést.
Az ilyen frissítési szkript például így nézhet ki:
# Lock Weblate translation
wlc lock
# Push changes from Weblate to upstream repository
wlc push
# Pull changes from upstream repository to your local copy
git pull
# Update translation files, this example is for Django
./manage.py makemessages --keep-pot -a
git commit -m 'Locale updates' -- locale
# Push changes to upstream repository
git push
# Tell Weblate to pull changes (not needed if Weblate follows your repo
# automatically)
wlc pull
# Unlock translations
wlc unlock
Ha több összetevő osztozik ugyanazon a tárolón, mindegyiket külön zárolni kell:
wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj
Megjegyzés
A példa a Weblate kliens eszközt használja, amely API-kulcsokat igényel a Weblate távoli vezérléséhez. A Weblate kliens helyett bármilyen HTTP kliens (például curl) is használható, lásd: Weblate REST API.
Ütközések elkerülése Git műveletekre fókuszálva¶
Még akkor is felléphetnek ütközések, ha csak a Weblate végzi a fordítási fájlok módosítását, például ha használja a Git véglegesítések összevonása kiegészítőt vagy ha a Egyesítési mód beállítása Rebase értékre van állítva, illetve ha Weblate-en kívül squash műveletet végez. (módosítási kérelmek (pull request) összevonása egy véglegesítésbe (commit)).
Ebben az esetben az ütközések oka más: a Weblate-ben történtek módosítások azután, hogy a Weblate véglegesítéseit már összevonták. Ez gyakran akkor fordul elő, ha az összeolvasztás nem automatizált, és napokig vagy hetekig manuális ellenőrzésre vár. Ilyenkor a Git nem tudja felismerni a Weblate változtatásait és megtagadja a rebase műveletet.
Ennek kezelésére vagy minimalizálni kell a Weblate-ben függőben lévő változtatások számát, amikor egy módosítási kérelmet (pull request) összevon vagy teljesen elkerülheti az ütközéseket azzal, hogy nem vonja össze a változtatásokat egyetlen véglegesítésbe (commitba) (azaz nem végez squash-olást).
Ennek kezelésére a következő lehetőségek állnak rendelkezésre:
Ne használja sem a Git véglegesítések összevonása kiegészítőt, sem a squash összeolvasztási módszert. Ezek a fő okai annak, hogy a Git nem ismeri fel a változtatásokat.
Hagyja, hogy a Weblate véglegesítse a függő változtatásokat még a módosítási kérelem (pull request) összeolvasztása előtt. Így a módosítási kérelem frissül az összes változással, és a két tároló szinkronban marad.
Használja a Weblate beépített felülvizsgálati funkcióit (lásd: Fordítási munkafolyamatok), így automatikusan összeolvaszthatja a GitHub módosítási kérelmeket (pull requests), amint a CI tesztek sikeresen lefutottak.
Használjon Weblate zárolást, hogy elkerülje a változtatásokat a GitHub módosítási kérelem (pull request) felülvizsgálata közben.
Lásd még
Változások automatikus fogadása a GitHubról¶
A Weblate natív támogatást nyújt a GitHubhoz.
Ha a Hosted Weblate szolgáltatást használja, a javasolt megoldás a Weblate alkalmazás telepítése. Így megfelelően beállított környezetet kap, minimális konfigurációval. Ez az alkalmazás a változások visszatöltésére is használható.
Ahhoz, hogy minden feltöltési (push) művelet után értesítést kapjon egy GitHub tárolóból, adjon hozzá Weblate Webhook-ot a tároló beállításainál (Webhooks), az alábbi képnek megfelelően:
A Payload URL (adatküldési URL) a Weblate címe után /hooks/github/ útvonallal bővül, például Hosted Weblate esetén: https://hosted.weblate.org/hooks/github/.
A többi beállítás maradhat az alapértelmezett értékeken (a Weblate mindkét tartalomtípust kezeli, és csak a push eseményt használja).
Változások automatikus fogadása Bitbucket-ről¶
A Weblate támogatja a Bitbucket webhook-okat. Hozzon létre egy webhook-ot, amely a tárolóba történő feltöltés (push) eseményre indul, és amely a Weblate telepítésén a /hooks/bitbucket/ URL-re irányít (például https://hosted.weblate.org/hooks/bitbucket/).
Változások automatikus fogadása GitLab-ról¶
A Weblate támogatja a GitLab webhook-okat. Adjon hozzá egy projekt webhook-ot, amely a /hooks/gitlab/ URL-re mutat a Weblate telepítésén (például https://hosted.weblate.org/hooks/gitlab/).
Változások automatikus fogadása Pagure-ról¶
A Weblate támogatja a Pagure webhook-okat. Hozzon létre egy webhook-ot, amely a /hooks/pagure/ URL-re mutat a Weblate telepítésén (például https://hosted.weblate.org/hooks/pagure/). Ezt az Activate Web-hooks menüpontban, a Project options alatt teheti meg:
Azure Repos: automatikus változásfogadás¶
A Weblate támogatja az Azure Repos webhook-okat. Hozzon létre egy webhook-ot a Code pushed (kód feltöltésre került) eseményre, amely a /hooks/azure/ URL-re mutat a Weblate telepítésén (például https://hosted.weblate.org/hooks/azure/). Ezt a Service hooks alatt, a Project settings résznél tudja beállítani.
Változások automatikus fogadása Gitea Repos-ról¶
A Weblate támogatja a Gitea webhook-okat. Adjon hozzá egy Gitea Webhook-ot a Push events (feltöltési) eseményre, amely a /hooks/gitea/ URL-re mutat a Weblate telepítésén (például https://hosted.weblate.org/hooks/gitea/). Ezt a tároló Settings részében, a Webhooks alatt lehet megtenni.
Változások automatikus fogadása Gitee Repos-ról¶
A Weblate támogatja a Gitee webhook-okat. Adjon hozzá egy WebHook-ot a Push (feltöltés) eseményre, amely a /hooks/gitee/ URL-re mutat a Weblate telepítésén (például https://hosted.weblate.org/hooks/gitee/). Ezt a tároló Management részében, a WebHooks alatt tudja megtenni.
Tárolók éjszakai automatikus frissítése¶
A Weblate éjszakánként automatikusan letölti a távoli tárolók frissítéseit, hogy a későbbi változások összeolvasztása gyorsabb legyen. Opcionálisan engedélyezheti az éjszakai összeolvasztást is az AUTO_UPDATE bekapcsolásával.
Változások feltöltése Weblate-ből¶
Minden fordítási összetevőhöz beállítható egy feltöltési URL (lásd: Tároló feltöltési URL), így a Weblate képes lesz visszaküldeni a módosításokat a távoli tárolóba. A Weblate alapértelmezetten minden véglegesítés után automatikusan feltölti a változásokat (lásd: Feltöltés véglegesítéskor (Push on commit)). Ha nem szeretné, hogy a feltöltés automatikus legyen, manuálisan is indíthatja a Tároló karbantartás alatt vagy az API-n keresztül, például a wlc push paranccsal.
A feltöltési lehetőségek a használt Verziókezelő integráció típusától függően változnak, részletesebben lásd az adott fejezetben.
Ha nem szeretne közvetlen feltöltést a Weblate-ből, támogatott a GitHub módosítási kérelmek (pull request), GitLab egyesítési kérelmek (merge request), Gitea módosítási kérelmek (pull request), Pagure egyesítési kérelmek (merge request), Azure DevOps egyesítési kérelmek (pull request) módosítási kérelmek (pull requests) vagy Gerrit felülvizsgálatok használata is. Ezeket úgy aktiválhatja, hogy GitHub, GitLab, Gitea, Gerrit, Azure DevOps vagy Pagure értéket választ a Verziókezelő rendszer beállításban az (összetevőnél).
Összességében a következő lehetőségek érhetők el Git, Mercurial, GitHub, GitLab, Gitea, Pagure, Azure DevOps, Bitbucket Data Center és Bitbucket Cloud esetén:
Kívánt beállítás |
|||
|---|---|---|---|
Nincs feltöltés (No push) |
üres |
üres |
|
Közvetlen feltöltés (Push directly) |
SSH URL |
üres |
|
Feltöltés külön ágra (Push to separate branch) |
SSH URL |
Ágnév megadása (Branch name) |
|
Nincs feltöltés (No push) |
üres |
üres |
|
Közvetlen feltöltés (Push directly) |
SSH URL |
üres |
|
Feltöltés külön ágra (Push to separate branch) |
SSH URL |
Ágnév megadása (Branch name) |
|
GitHub módosítási kérelem külső másolatból (pull request from fork) |
üres |
üres |
|
GitHub módosítási kérelem saját ágról (pull request from branch) |
SSH URL [1] |
Ágnév megadása (Branch name) |
|
GitLab egyesítési kérelem külső másolatból (merge request from fork) |
üres |
üres |
|
GitLab egyesítési kérelem saját ágról (merge request from branch) |
SSH URL [1] |
Ágnév megadása (Branch name) |
|
Gitea egyesítési kérelem külső másolatból (merge request from fork) |
üres |
üres |
|
Gitea egyesítési kérelem saját ágról (merge request from branch) |
SSH URL [1] |
Ágnév megadása (Branch name) |
|
Pagure egyesítési kérelem külső másolatból (merge request from fork) |
üres |
üres |
|
Pagure egyesítési kérelem saját ágról (merge request from branch) |
SSH URL [1] |
Ágnév megadása (Branch name) |
|
Azure DevOps módosítási kérelem külső másolatból (pull request from fork) |
üres |
üres |
|
Azure DevOps módosítási kérelem saját ágról (pull request from branch) |
SSH URL [1] |
Ágnév megadása (Branch name) |
|
Bitbucket Data Center módosítási kérelem külső másolatból (pull request from fork) |
üres |
üres |
|
Bitbucket Data Center módosítási kérelem saját ágról (pull request from branch) |
SSH URL [1] |
Ágnév megadása (Branch name) |
|
Bitbucket Cloud módosítási kérelem külső másolatból (pull request from fork) |
üres |
üres |
|
Bitbucket Cloud módosítási kérelem saját ágról (pull request from branch) |
SSH URL [1] |
Ágnév megadása (Branch name) |
Megjegyzés
A Weblate-ben be lehet állítani, hogy minden véglegesítés után automatikusan töltse fel a változásokat; ezt a Feltöltés véglegesítéskor (Push on commit) beállítással lehet elérni.
Lásd még
SSH kulcsok beállításához lásd: Tárolók elérése, a Weblate véglegesítési döntéseiről pedig a Késleltetett véglegesítések (Lazy commits) szakaszban talál további információt.
Védett ágak (Protected branches)¶
Ha Weblate-et védett ágon használ, konfigurálható, hogy módosítási kérelmeken (pull request) keresztül történjenek a fordítások felülvizsgálatai (ez problémás lehet, ha a célnyelvet nem ismeri). Alternatív megoldásként felmentheti a Weblate-felhasználót ez alól a korlátozás alól, és közvetlenül feltöltheti a változtatásokat.
Például GitHub-on ezt a tároló beállításainál lehet megadni:
Kapcsolattartás másokkal¶
A Weblate egyszerűvé teszi az együttműködést az API használatával.
Lásd még
Késleltetett véglegesítések (Lazy commits)¶
A Weblate viselkedése az, hogy azonos szerzőtől származó módosításokat lehetőség szerint egyetlen véglegesítésbe vonja össze. Ez jelentősen csökkenti a véglegesítések számát, de ha a VCS (verziókezelő) tárolót szinkronban szeretné tartani (például összeolvasztás előtt), előfordulhat, hogy manuálisan kell kérni a véglegesítést. Alapértelmezés szerint ezt a Kezelők csoport teheti meg, lásd: Jogosultságok listája.
Ebben a módban a változtatások véglegesítése az alábbi esetekben történik meg:
Valaki más módosít egy már megváltoztatott szöveget.
Egy forráság (upstream) összeolvasztás történik.
Kifejezett kérés érkezik a véglegesítésre.
Fájlletöltés történik.
A változás régebbi, mint az összetevő beállításnál megadott Változások kora véglegesítéshez időszak.
Tipp
A véglegesítések minden összetevőhöz külön jönnek létre, tehát ha sok összetevője van, így is sok véglegesítést fog látni. Ilyenkor érdemes lehet a Git véglegesítések összevonása kiegészítőt használni.
Ha gyakrabban szeretné a változtatásokat véglegesíteni, korosodási ellenőrzés nélkül, ütemezhet rendszeres feladatot. Ez a A Django adminisztrációs felület felületén, az Időzített feladatok menüpontban végezhető el. Először hozzon létre egy Időközt (például 120 másodperc). Ezután adjon hozzá új időzített feladatot, válassza a weblate.trans.tasks.commit_pending értéket a Feladat mezőben, {„hours”: 0} Kulcsszó argumentummal, valamint a kívánt időközzel.
Tároló kezelése szkriptekkel¶
A Weblate és a tároló közötti egyedi integrációkhoz a Kiegészítők használhatóak. További információért lásd: Parancsfájlok futtatása kiegészítőből, ahol bemutatjuk, hogyan lehet külső szkripteket végrehajtani kiegészítőkön keresztül.
Fordítások egységesítése összetevők között¶
Ha több fordítási összetevője van, érdemes lehet biztosítani, hogy az azonos szövegek ugyanazt a fordítást kapják. Erre többféle megoldás is létezik.
Fordítási terjesztés¶
Ha a Fordítások terjesztésének engedélyezése beállítás engedélyezve van (ami alapértelmezés szerint így van, lásd: Összetevőkonfiguráció), akkor az új fordítások automatikusan megjelennek minden olyan összetevőben, ahol a szövegek megegyeznek. Az ilyen módon terjesztett fordítások minden összetevőben a fordítást végző felhasználó nevéhez lesznek rögzítve.
Propagation preconditions:
All components have to reside in a single project (linking component is not enough).
Engedélyezze a Fordítások terjesztésének engedélyezése beállítást a megfelelő szövegek fordításainak automatikus újrahasznosításához.
Fontos: az egynyelvű fordítási formátumok esetében a kulcsoknak is egyezniük kell a fordítás terjesztéséhez, erre figyeljen a fordítási kulcsok létrehozásakor.
The strings are propagated while translating, strings loaded from the repository are not propagated.
Javaslat
This feature currently has limitations, and we want to make it more universal. Please share your feedback at https://github.com/WeblateOrg/weblate/issues/3166.
Konzisztencia-ellenőrzés¶
A Nem egységes ellenőrzés akkor jelez hibát, ha a szövegek eltérnek egymástól. Ez a funkció lehetőséget ad arra, hogy manuálisan felülvizsgálja az eltéréseket, és kiválassza a helyes fordítást.
Automatikus fordítás¶
Más összetevőkön alapuló automatikus fordítással szinkronban tartható a fordítások állapota az egyes összetevők között. Ez a folyamat manuálisan is elindítható (lásd: Automatikus fordítás) vagy automatikusan is lefuttatható a tároló frissítésekor kiegészítő segítségével (lásd: Automatikus fordítás).