Nepretržitá lokalizácia¶
Existuje infraštruktúra, ktorá zabezpečuje, že váš preklad úzko nadväzuje na vývoj. Týmto spôsobom môžu prekladatelia pracovať na prekladoch po celý čas, namiesto práce cez obrovské množstvo nového textu tesne pred vydaním.
Viď aj
Integrácia s Weblate popisuje základné spôsoby integrácie vášho vývoja s Weblate. Integrácie s platformami na hosťovanie kódu uvádza kroky nastavenia špecifické pre poskytovateľov bežných stránok na hosťovanie kódu.
Toto je proces:
Vývojári vykonávajú zmeny a odosielajú ich do repozitára VCS.
Voliteľne sa aktualizujú prekladové súbory, pozrite Zavádzanie nových reťazcov.
Weblate sťahuje zmeny z repozitára VCS, analyzuje prekladové súbory a aktualizuje svoju databázu, pozrite Aktualizácia repozitárov.
Prekladatelia odovzdávajú preklady pomocou webového rozhrania Weblate alebo nahrávajú offline zmeny.
Akonáhle prekladatelia skončia, Weblate zapíše zmeny do lokálneho repozitára (pozrite Lenivé zápisy).
Zmeny sa odošlú späť do upstream repozitára (pozri Odosielanie zmien z Weblate).
Rada
Hlavná stránka na hosťovanie kódu nie je nevyhnutná, môžete používať Weblate s Lokálne súbory, kde sa repozitár nachádza iba vo vnútri Weblate.
Aktualizácia repozitárov¶
Mali by ste nastaviť spôsob aktualizácie backendových repozitárov z ich zdroja.
Použite Háky notifikácií na integráciu s väčšinou bežných služieb na hosťovanie kódu, pozrite Integrácie s platformami na hosťovanie kódu. Aby to fungovalo, musíte tiež povoliť Povoliť háky. Doručenia hákov aktualizujú komponenty, ktorých URL repozitára sa zhoduje s obsahom webhooku; pozrite Zhodné ciele webhookov.
Manuálne spustiť aktualizáciu buď v správe repozitára alebo pomocou REST API Weblate alebo Klient Weblate
Povoľte
AUTO_UPDATEna automatickú aktualizáciu všetkých komponentov vo vašej inštancii WeblateVykonajte
updategit(s výberom projektu alebo--allna aktualizáciu všetkých)
Vždy, keď Weblate aktualizuje repozitár, spustia sa doplnky po aktualizácii, pozri Doplnky.
Zhodné ciele webhookov¶
Webhooky foriem aktualizujú komponenty, ktorých Repozitár zdrojového kódu sa presne zhoduje s URL repozitára z obsahu webhooku (HTTPS alebo SSH podľa hlásenia foriem, plus bežné varianty ako koncová lomka).
Generic forge webhook endpoints are compatibility interfaces, and ordinary
repository deliveries are not cryptographically authenticated. Legacy GitHub
App deliveries containing installation data are an exception: the generic
GitHub endpoint verifies their signature using
GITHUB_LEGACY_APP_WEBHOOK_SECRET. Repository matching does not apply
project or component access control because webhooks also need to update private
projects and
restricted components. Their JSON responses
include diagnostic counts for repository, branch, and enabled-hook matches.
Successful responses also include the full project/component slugs and absolute
API URLs of updated components. Supplying a matching repository URL can
therefore confirm that a repository is registered and reveal these identifiers.
Components managed through an authenticated integration are excluded from generic webhook matching and its diagnostic counts. Currently this applies to the GitHub (via Weblate GitHub app) VCS backend. These components receive notifications only through their dedicated tokenized and signed GitHub App webhook URL. Future authenticated integrations are expected to use the same separation.
The returned API URLs do not grant access to the components. The web interface and API continue to enforce normal access control, and webhook responses do not include repository content, translations, or credentials. Where available, prefer an authenticated integration such as URL webhooku aplikácie.
Zmenené vo verzii 2026.9: Záložné zhody pre hostiteľa a príponu cesty boli odstránené. Ak sa aktualizácie zastavia, zosúlaďte Repozitár zdrojového kódu s URL z obsahu webhooku foriem.
Vyhýbanie sa konfliktom pri zlúčení¶
Konflikty pri zlúčení z Weblate vznikajú, keď bol ten istý súbor zmenený vo Weblate aj mimo neho. V závislosti od situácie existuje niekoľko prístupov, ktoré tu môžu pomôcť:
Vyhýbanie sa konfliktom pri zlúčení zmenou prekladových súborov iba vo Weblate
Vyhýbanie sa konfliktom pri zlúčení uzamknutím Weblate počas vykonávania externých zmien
Vyhýbanie sa konfliktom pri zlúčení zameraním sa na operácie Git
Vyhýbanie sa konfliktom pri zlúčení zmenou prekladových súborov iba vo Weblate¶
Vyhýbaniu sa úpravám mimo Weblate je jednoduché pri jednojazyčných súboroch — môžete pridávať nové reťazce vo Weblate a nechať celé editovanie súborov tam. Pri dvojjazyčných súboroch zvyčajne existuje nejaký proces extrakcie správ na generovanie preložiteľných súborov zo zdrojového kódu. V niektorých prípadoch sa to dá rozdeliť na dve časti:
Extrakcia generuje šablónu (napríklad gettext POT sa generuje pomocou xgettext).
Ďalší proces ju zlúči do skutočných prekladov (gettext PO súbory sa aktualizujú pomocou msgmerge).
Druhý krok môžete vykonať vo Weblate a zabezpečí, že všetky čakajúce zmeny budú zahrnuté pred touto operáciou.
Vyhýbanie sa konfliktom pri zlúčení uzamknutím Weblate počas vykonávania externých zmien¶
Integrácia Weblate do vášho procesu aktualizácie tak, aby vyprázdnil zmeny pred aktualizáciou súborov mimo Weblate, dá sa dosiahnuť použitím REST API Weblate na prinútenie Weblate odoslať všetky čakajúce zmeny a uzamknúť preklad, zatiaľ čo vykonávate zmeny na vašej strane.
Skript na vykonávanie aktualizácií môže vyzerať takto:
# 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
Ak máte viacero komponentov zdieľajúcich ten istý repozitár, musíte ich všetky uzamknúť samostatne:
wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj
Poznámka
Príklad používa Klient Weblate, ktorý potrebuje konfiguráciu (API kľúče), aby bolo možné ovládať Weblate na diaľku. Môžete to tiež dosiahnuť pomocou akéhokoľvek HTTP klienta namiesto Klient Weblate, napríklad curl, pozri REST API Weblate.
Údržba repozitára¶
Zobrazenie Údržba repozitára zobrazuje stav repozitára pre projekt, komponent alebo preklad a umožňuje privilegovaným používateľom spúšťať operácie údržby z používateľského rozhrania.
Rovnaké akcie je možné tiež spustiť pomocou REST API Weblate alebo, pre podporovanú podmnožinu, Klient Weblate.
Dostupnosť jednotlivých akcií závisí od oprávnení, nakonfigurovaného systému verziovania, či je nakonfigurované odolanie a či je možné vybraný objekt uzamknúť.
Akcie Správa súborov sú dostupné iba z Údržba repozitára pre jednotlivý preklad. Tieto akcie prepíšu daný prekladový súbor a zapíšu výsledok; nejde o operácie v rámci celého projektu alebo komponentu.
Operácie, ktoré čítajú obsah repozitára, ako je aktualizácia, resetovanie alebo opätovné skenovanie, tiež zosúladia prekladové súbory vo Weblate. Pridané alebo odstránené prekladové súbory sa prejavia po dokončení tohto spracovania. Synchronizácia a čistenie jazykov slovníka sú popísané v Jazykové súbory a synchronizácia.
Akcia |
Čo to robí |
Typické použitie |
|---|---|---|
Commit |
Zapíše čakajúce zmeny uložené vo Weblate do lokálneho repozitára. |
Vyprázdniť čakajúce zmeny vo Weblate pred vykonávaním práce s repozitárom inde. |
Push |
Odošle zapísané zmeny lokálneho repozitára do nakonfigurovaného hlavného. |
Pošle zapísané preklady upstream, keď je automatické odoslanie vypnuté alebo oneskorené. |
Update |
Stiahne zmeny z upstreamu, integruje ich pomocou nakonfigurovaného Štýl zlúčenia komponentu a zosúladí prekladové súbory. |
Synchronizovať Weblate s hlavným pomocou predvolenej stratégie integrácie. |
Aktualizácia so zlúčením |
Stiahne hlavné zmeny a integruje ich s explicitným zlúčením. |
Prepísať predvolený štýl zlúčenia pre jednu aktualizáciu. |
Aktualizácia s rebasom |
Stiahne hlavné zmeny a rebasuje lokálne zápisy Weblate na vrchol upstreamu. |
Udržiavať históriu lineárnu, keď to zodpovedá vášmu pracovnému postupu. |
Aktualizácia s merge bez fast‑forward |
Stiahne hlavné zmeny a vytvorí explicitný merge commit, aj keď by bol možný fast-forward. |
Zachovať merge zápisy z dôvodov auditu alebo správy vetiev. |
Zamknúť / Odomknúť |
Zabráni alebo umožní prekladateľom vykonávať ďalšie zmeny vo Weblate. |
Zmraziť zmeny prekladu počas vykonávania údržby repozitára mimo Weblate. |
Resetovať a zahodiť |
Resetuje lokálny repozitár Weblate na upstream, zahodí čakajúce zmeny vo Weblate a zosúladí prekladové súbory. |
Použiť, keď by hlavný mal prepísať stav lokálneho repozitára Weblate. |
Resetovať a znovu použiť |
Resetuje lokálny repozitár Weblate na upstream, zosúladí prekladové súbory a znovu aplikuje čakajúce preklady. Pozri Správanie obnovy pri resete a opätovnom aplikovaní. |
Obnoviť sa z divergovanej histórie pri zachovaní čakajúcich prekladov Weblate. |
Vyčistiť |
Odstráni nesledované súbory a zastarané vetvy z lokálnej pracovnej kópie repozitára. |
Vyčistiť zostávajúce súbory alebo zastaraný stav repozitára vo pracovnej kópii Weblate. |
Synchronizovať |
Prinúti Weblate zapísať všetky známe preklady späť do súborov repozitára. |
Opraviť prípady, keď sa súbory repozitára dostali mimo synchronizácie so stavom databázy. |
Znovu skenovať |
Znovu načíta prekladové súbory z lokálneho repozitára do Weblate a odstráni preklady, ktorých súbory už nezodpovedajú konfigurácii komponentu. |
Importovať zmeny súborov po manuálnej práci s repozitárom alebo vytvorení súboru. |
Odstrániť duplikáty |
Odstráni opakované reťazce s rovnakým identifikátorom z jedného prekladového súboru. |
Opraviť duplicitné reťazce nahlásené systémom Weblate, keď súbor obsahuje opakované jednotky. |
Vyčistiť nepoužité |
Odstráni reťazce, ktoré sa už nenachádzajú v základnom súbore, z jedného prekladového súboru. Doplnok Vyčistiť súbory prekladov to dokáže vykonať automaticky. |
Spustiť jednorazové vyčistenie bez inštalácie doplnku. |
Odstrániť zastarané |
Odstráni zastarané reťazce z jedného prekladového súboru PO. |
Spustiť jednorazové vyčistenie PO bez zapnutia automatického odstraňovania zastaraných reťazcov. |
Správanie obnovy pri resete a opätovnom aplikovaní¶
Operácia Resetovať a znovu použiť zachováva čakajúce preklady z Weblate pri resetovaní stavu lokálneho repozitára tak, aby zodpovedal hlavnému.
Operácia môže obnoviť čakajúce preklady iba vtedy, keď cieľové jazykové súbory stále existujú po resete alebo keď ich Weblate môže vytvoriť pre komponent, napríklad pomocou platného Šablóna pre nové preklady.
Ak nie je splnená ani jedna z týchto podmienok, Weblate uchováva čakajúce zmeny vo svojej databáze a hlási chybu obnovy namiesto neskoršieho zlyhania s všeobecnou chybou analýzy.
Vyhýbanie sa konfliktom pri zlúčení zameraním sa na operácie Git¶
Aj keď je Weblate jediným zdrojom zmien v prekladových súboroch, konflikty sa môžu objaviť pri používaní doplnku Zlúčiť Git zápisy, keď je Štýl zlúčenia nakonfigurovaný na Rebase, alebo keď squashujete zápisy mimo Weblate (napríklad pri zlúčení pull requestu).
Dôvod konfliktov pri zlúčení je v tomto prípade odlišný. Weblate môže mať nové lokálne zápisy po tom, čo zlúčite staršie zápisy Weblate do upstreamu. K tomu zvyčajne dochádza, ak zlúčenie nie je automatizované a zmeny čakajú dni alebo týždne na ľudskú kontrolu. Git potom niekedy nedokáže identifikovať zmeny v upstreame ako zhodné so zmenami vo Weblate a odmietne vykonať rebase.
Squash zlúčenie zmien Weblate sťažuje obnovu z tejto situácie. Squash zlúčenie vytvára nový zápis namiesto zachovania jednotlivých zápisov Weblate v histórii upstreamu. Weblate má stále pôvodné zápisy vo svojom lokálnom repozitári a Git už nemôže dokázať, že ich upstream už obsahuje. Ak bol konflikt tiež vyriešený manuálne, obsah súboru sa môže líšiť od oboch repozitárov, takže Weblate môže pokračovať v zlyhávaní aktualizácie aj po zlúčení pull requestu do upstreamu.
Ak upstream už neobsahuje zápisy Weblate, pretože boli squash zlúčené, aktualizácia repozitára nemusí stačiť. Použite Resetovať a znovu použiť z Údržba repozitára na resetovanie Weblate na upstream pri zachovaní čakajúcich prekladov; pozri Správanie obnovy pri resete a opätovnom aplikovaní. Použite Resetovať a zahodiť iba vtedy, keď by upstream mal úplne nahradiť lokálne zmeny Weblate.
Na riešenie tohto musíte buď minimalizovať množstvo čakajúcich zmien vo Weblate, keď zlúčite pull request, alebo sa konfliktom úplne vyhnúť nesquashovaním zmien.
Tu je niekoľko možností, ako sa tomu vyhnúť:
Nepoužívajte Zlúčiť Git zápisy ani squash zlúčenie pre zmeny vo Weblate. Práve squashovanie je dôvodom, prečo Git po zlúčení už nemusí rozpoznať zmeny.
Pri riešení konfliktov mimo Weblate zlúčte zápisy Weblate bežným merge zápisom a tento výsledok odošlite do upstreamu. Pull request na vyriešenie konfliktu nezlučujte pomocou squash merge.
Nechajte Weblate zapísať čakajúce zmeny pred zlúčením. Toto aktualizuje pull request so všetkými jeho zmenami a oba repozitáre budú synchronizované.
Použite funkcie kontroly vo Weblate (pozri Pracovné postupy prekladu), aby ste mohli automaticky zlúčiť GitHub pull requesty po úspešnom prejdení CI.
Použite uzamykanie vo Weblate, aby ste sa vyhli zmenám, kým je GitHub pull request v recenzii.
Viď aj
Oznámenia z hostingu kódu¶
Pokyny špecifické pre poskytovateľa pre aplikácie a webhooky pre GitHub, GitLab, Bitbucket, Pagure, Azure Repos, Gitea, Forgejo a Gitee sú pokryté v Integrácie s platformami na hosťovanie kódu.
Oznámenia špecifické pre poskytovateľa¶
Tieto staršie kotvy sú ponechané pre kompatibilitu. Aktuálne nastavenie aplikácií a webhookov špecifických pre poskytovateľa je zdokumentované v Integrácie s platformami na hosťovanie kódu.
Automatická nočná aktualizácia repozitárov¶
Weblate automaticky sťahuje vzdialené repozitáre každú noc na zlepšenie výkonu pri neskoršom zlúčení zmien. Voliteľne môžete toto nastaviť aj na nočné zlúčenia povolením AUTO_UPDATE.
Odosielanie zmien z Weblate¶
Každý prekladový komponent môže mať nastavenú URL na odosielanie (pozri URL odoslania repozitára) a v takom prípade bude Weblate môcť odosielať zmeny do vzdialeného repozitára. Weblate možno tiež nakonfigurovať na automatické odosielanie zmien pri každom zápise, pozri Odoslať pri zápise.
Tabuľku možností odosielania a pracovné postupy pull, merge a review requestov špecifické pre poskytovateľa nájdete v Odosielanie zmien z Weblate.
Viď aj
Pozri Prístup k repozitárom pre nastavenie SSH kľúčov a Lenivé zápisy pre informácie o tom, kedy sa Weblate rozhodne odoslať zmeny.
Chránené vetvy¶
Ak používate Weblate na chránenej vetve, môžete ho nakonfigurovať na používanie pull requestov a vykonávať skutočnú kontrolu prekladov (čo môže byť problematické pre jazyky, ktoré nepoznáte). Alternatívnym prístupom je vzdať sa tohto obmedzenia pre používateľa push Weblate.
Napríklad na GitHube sa to dá urobiť v konfigurácii repozitára:
Interakcia s ostatnými¶
Weblate uľahčuje interakciu s ostatnými pomocou svojho API.
Viď aj
Lenivé zápisy¶
Správanie Weblate je zoskupovať zápisy od toho istého autora do jedného zápisu, ak je to možné. Toto výrazne znižuje počet zápisov, avšak môžete ho potrebovať explicitne prinútiť vykonať zápisy v prípade, že chcete dostať repozitár VCS do synchronizácie, napr. pre zlúčenie (toto je v predvolenom nastavení povolené pre skupinu Managers, pozri Zoznam oprávnení).
Zmeny v tomto režime sú zapísané, keď je splnená ktorákoľvek z nasledujúcich podmienok:
Niekto iný zmení už zmenený reťazec.
Dôjde k zlúčeniu z hlavného.
Je vyžiadaný explicitný zápis.
Je vyžiadané stiahnutie súboru.
Zmena je staršia ako obdobie definované ako Vek zmien na zápis na Konfigurácia komponentu.
Rada
Zápisy sa vytvárajú pre každý komponent. Takže v prípade, že máte veľa komponentov, stále uvidíte veľa zápisov. V takom prípade môžete využiť doplnok Zlúčiť Git zápisy.
Ak chcete zapisovať zmeny častejšie a bez kontroly veku, môžete naplánovať pravidelnú úlohu na vykonanie zápisu. Toto je možné urobiť pomocou Periodické úlohy v Administrátorské rozhranie Django. Najprv vytvorte požadovaný Interval (napríklad 120 sekúnd). Potom pridajte novú periodickú úlohu a vyberte weblate.trans.tasks.commit_pending ako Úloha s {"hours": 0} ako Kľúčové argumenty a požadovaným intervalom.
Spracovanie repozitára skriptami¶
Spôsob, ako prispôsobiť, ako Weblate interaguje s repozitárom, je Doplnky. Konzultujte Spúšťanie skriptov z doplnku pre informácie o tom, ako vykonávať externé skripty prostredníctvom doplnkov.
Udržiavanie rovnakých prekladov naprieč komponentmi¶
Keď máte viacero prekladových komponentov, môžete chcieť zabezpečiť, aby mali rovnaké reťazce rovnaký preklad. Toto je možné dosiahnuť na niekoľkých úrovniach.
Propagácia prekladu¶
S povoleným Povoliť propagáciu prekladu (čo je predvolené, pozri Konfigurácia komponentu), sa všetky nové preklady automaticky vykonajú vo všetkých komponentoch so zodpovedajúcimi reťazcami. Takéto preklady sú správne pripísané aktuálne prekladajúcemu používateľovi vo všetkých komponentoch.
Podmienky propagácie:
Všetky komponenty musia byť v jednom projekte (prepojenie komponentu nestačí).
Povoľte Povoliť propagáciu prekladu na automatické opätovné použitie prekladov pre zodpovedajúce reťazce.
Propagácia prekladu vyžaduje, aby sa kľúč zhodoval pre jednojazyčné formáty prekladu, takže na to myslite pri vytváraní prekladových kľúčov.
Reťazce sa propagujú počas prekladania, reťazce načítané z repozitára sa nepropagujú.
Tip
Táto funkcia má momentálne obmedzenia a chceme ju urobiť univerzálnejšou. Prosím, podeľte sa o svoju spätnú väzbu na https://github.com/WeblateOrg/weblate/issues/3166.
Kontrola konzistencie¶
Kontrola Nekonzistentné sa spustí vždy, keď sú reťazce rôzne. Môžete to využiť na manuálnu kontrolu takýchto rozdielov a výber správneho prekladu.
Automatický preklad¶
Automatický preklad založený na rôznych komponentoch môže byť spôsobom synchronizácie prekladov naprieč komponentmi. Môžete ho spustiť buď manuálne (pozri Automatický preklad) alebo ho nechať bežať automaticky pri aktualizácii repozitára pomocou doplnku (pozri Automatický preklad).