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:

  1. Vývojári vykonávajú zmeny a odosielajú ich do repozitára VCS.

  2. Voliteľne sa aktualizujú prekladové súbory, pozrite Zavádzanie nových reťazcov.

  3. Weblate sťahuje zmeny z repozitára VCS, analyzuje prekladové súbory a aktualizuje svoju databázu, pozrite Aktualizácia repozitárov.

  4. Prekladatelia odovzdávajú preklady pomocou webového rozhrania Weblate alebo nahrávajú offline zmeny.

  5. Akonáhle prekladatelia skončia, Weblate zapíše zmeny do lokálneho repozitára (pozrite Lenivé zápisy).

  6. Zmeny sa odošlú späť do upstream repozitára (pozri Odosielanie zmien z Weblate).

digraph translations { graph [fontname = "sans-serif", fontsize=10, ranksep=0.6, newrank=true]; node [fontname = "sans-serif", fontsize=10, margin=0.15]; edge [fontname = "sans-serif", fontsize=10]; subgraph cluster_codehosting { rank=same; graph [color=lightgrey, label="Upstream code-hosting site", style=filled ]; "VCS repository" [shape=cylinder]; } subgraph cluster_weblate { rank=same; graph [color=lightgrey, label="Weblate", style=filled ]; repo [label="Weblate repository", shape=cylinder]; database [label=Database, shape=cylinder]; } "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Developers" -> "VCS repository" [label=" 1. Push "]; "VCS repository" -> "VCS repository" [label=" 2. Updating translations ", style=dotted]; "VCS repository" -> repo [label=" 3. Pull "]; repo -> database [label=" 3. Parse translations "]; "database" -> repo [label=" 5. Commit changes "]; "Translators" -> "database" [label=" 4. Translate "]; "repo" -> "VCS repository" [label=" 6. Push repository "]; }

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.

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ý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:

  1. Extrakcia generuje šablónu (napríklad gettext POT sa generuje pomocou xgettext).

  2. Ď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

Klient Weblate

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:

../_images/github-protected.png

Interakcia s ostatnými

Weblate uľahčuje interakciu s ostatnými pomocou svojho API.

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).