Localització contínua¶
Hi ha una infraestructura establerta perquè la vostra traducció segueixi de prop el desenvolupament. D’aquesta manera, els traductors poden treballar en les traduccions tot el temps, en lloc de treballar amb una gran quantitat de text nou just abans del llançament.
Vegeu també
Integració amb Weblate describes basic ways to integrate your development with Weblate. Code-hosting integrations lists provider-specific setup steps for common code-hosting sites.
Aquest és el procés:
Els desenvolupadors fan canvis i els envien al repositori VCS.
Optionally the translation files are updated, see Introducing new strings.
Weblate extreu els canvis del repositori VCS, analitza fitxers de traducció i actualitza la seva base de dades, vegeu Actualització de repositoris.
Els traductors envien traduccions mitjançant la interfície web de Weblate o pengen canvis fora de línia.
Once the translators are finished, Weblate commits the changes to the local repository (see La mandrosa es compromet).
Changes are pushed back to the upstream repository (see Impulsant canvis des de Weblate).
Suggeriment
Upstream code-hosting site is not necessary, you can use Weblate with Fitxers locals where there is only the repository inside Weblate.
Actualització de repositoris¶
Hauríeu de configurar alguna manera d’actualitzar els dipòsits de fons des de la seva font.
Use Punts d’inserció de notificacions to integrate with the majority of common code-hosting services, see Code-hosting integrations. You must also Activa els punts d’inserció for this to work. Hook deliveries update components whose repository URL matches the payload; see Matching webhook targets.
Activar manualment l’actualització ja sigui a la gestió del dipòsit o utilitzant API REST de Weblate o Weblate Client
Habiliteu
AUTO_UPDATEper actualitzar automàticament tots els components de la vostra instància de WeblateExecuteu
updategit(amb selecció de projecte o--allper actualitzar-ho tot)
Sempre que Weblate actualitzi el repositori, s’activaran els complements posteriors a l’actualització, vegeu Complements.
Matching webhook targets¶
Forge webhooks update components whose Repositori del codi font exactly matches a repository URL from the payload (HTTPS or SSH as reported by the forge, plus common variants such as a trailing slash).
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 App webhook URL.
Canviat a la versió 2026.9: Host and path suffix fallback matching was removed. If updates stop, align Repositori del codi font with a URL from the forge webhook payload.
Evitar conflictes de fusió¶
Els conflictes de combinació de Weblate sorgeixen quan es va canviar el mateix fitxer tant a Weblate com fora d’ell. Depenent de la situació, hi ha diversos enfocaments que poden ajudar aquí:
Avoiding merge conflicts by changing translation files in Weblate only
Evitar conflictes de combinació bloquejant Weblate mentre es fan canvis externs
Evitar conflictes de combinació centrant-se en les operacions de Git
Avoiding merge conflicts by changing translation files in Weblate only¶
Evitar edicions fora de Weblate és fàcil amb fitxers monolingües: podeu afegir cadenes noves a Weblate i deixar-hi l’edició sencera dels fitxers. Per als fitxers bilingües, normalment hi ha algun tipus de procés d’extracció de missatges per generar fitxers traduïbles a partir del codi font. En alguns casos, es pot dividir en dues parts:
L’extracció genera una plantilla (per exemple, gettext POT es genera amb xgettext).
Un procés posterior el fusiona en traduccions reals (els fitxers PO de gettext s’actualitzen mitjançant msgmerge).
Podeu realitzar el segon pas a Weblate i s’assegurarà que tots els canvis pendents s’incloguin abans d’aquesta operació.
Evitar conflictes de combinació bloquejant Weblate mentre es fan canvis externs¶
La integració de Weblate al vostre procés d’actualització perquè esborri els canvis abans d’actualitzar els fitxers fora de Weblate es pot aconseguir utilitzant API REST de Weblate per forçar Weblate a impulsar tots els canvis pendents i bloquejar la traducció mentre feu canvis al vostre costat.
L’script per fer actualitzacions pot ser així:
# 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
Si teniu diversos components que comparteixen el mateix dipòsit, haureu de bloquejar-los tots per separat:
wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj
Nota
L’exemple utilitza Weblate Client, que necessita configuració (claus API) per poder controlar Weblate de forma remota. També podeu aconseguir-ho utilitzant qualsevol client HTTP en comptes de Weblate Client, per exemple curl, vegeu API REST de Weblate.
Manteniment del repositori¶
La vista Manteniment del repositori mostra l’estat del repositori d’un projecte, component o traducció i permet als usuaris privilegiats executar operacions de manteniment des de la interfície d’usuari.
Les mateixes accions també es poden activar utilitzant API REST de Weblate o, per al subconjunt suportat, Weblate Client.
La disponibilitat d’accions individuals depèn dels permisos, del sistema de control de versions configurat, de si està configurat el pushing i de si l’objecte seleccionat es pot bloquejar.
The File management actions are available only from Repository maintenance for an individual translation. These actions rewrite that translation file and commit the result; they are not project-wide or component-wide operations.
Operations that read repository content, such as updating, resetting, or rescanning, also reconcile translation files in Weblate. Added or removed translation files are reflected after this processing finishes. Glossary language synchronization and cleanup are described in Language files and synchronization.
Acció |
Què fa |
Ús típic |
|---|---|---|
Commit |
Commits pending changes stored in Weblate to the local repository. |
Esborra els canvis pendents de Weblate abans de fer treballs de repositori en un altre lloc. |
Push |
Envia els canvis del repositori local compromesos a l’amunt configurat. |
Envieu traduccions compromeses aigües amunt quan la push automàtica estigui desactivada o retardada. |
Update |
Fetches upstream changes, integrates them using the component’s configured Estil de fusió, and reconciles translation files. |
Sincronitzeu Weblate amb el corrent amunt mitjançant l’estratègia d’integració predeterminada. |
Update with merge |
Obtén els canvis aigües amunt i els integra amb una fusió explícita. |
Substituïu l’estil de combinació predeterminat per a una única actualització. |
Update with rebase |
Obtén els canvis aigües amunt i torna a basar les confirmacions locals de Weblate a sobre de les aigües amunt. |
Manteniu l’historial lineal quan coincideixi amb el vostre flux de treball. |
Update with merge without fast-forward |
Obtén els canvis aigües amunt i crea una confirmació de combinació explícita, fins i tot quan sigui possible un avançament ràpid. |
Conserveu les confirmacions de combinació per motius d’auditoria o de gestió de sucursals. |
Lock / Unlock |
Impedeix o permet als traductors fer més canvis a Weblate. |
Freeze translation changes while doing repository maintenance outside Weblate. |
Reset and discard |
Resets Weblate’s local repository to upstream, discards pending Weblate changes, and reconciles translation files. |
Utilitzeu-lo quan aigües amunt hauria de sobreescriure l’estat local del repositori Weblate. |
Reset and reapply |
Resets Weblate’s local repository to upstream, reconciles translation files, and reapplies pending translations. See Restableix i torna a aplicar el comportament de recuperació. |
Recuperar-se de l’historial divergent mentre manté les traduccions de Weblate pendents. |
Cleanup |
Elimina els fitxers sense seguiment i les branques obsoletes de la comprovació del dipòsit local. |
Netegeu els fitxers sobrants o l’estat del dipòsit obsolet a la compra de Weblate. |
Synchronize |
Força Weblate a escriure totes les traduccions conegudes als fitxers del dipòsit. |
Repareu els casos en què els fitxers del dipòsit no s’han sincronitzat amb l’estat de la base de dades. |
Rescan |
Re-reads translation files from the local repository into Weblate and removes translations whose files no longer match the component configuration. |
Importeu els canvis dels fitxers després del treball manual del dipòsit o de la creació de fitxers. |
Remove duplicates |
Removes repeated strings with the same identifier from one translation file. |
Repair duplicate strings reported by Weblate when the file contains repeated units. |
Cleanup unused |
Removes strings no longer present in the base file from one translation file. The Neteja els fitxers de traducció add-on can perform this automatically. |
Run a one-time cleanup without installing the add-on. |
Remove obsolete |
Removes obsolete strings from one PO translation file. |
Run a one-time PO cleanup without enabling automatic obsolete string removal. |
Restableix i torna a aplicar el comportament de recuperació¶
L’operació Restablir i tornar a aplicar manté les traduccions pendents de Weblate mentre es restableix l’estat del repositori local perquè coincideixi aigües amunt.
L’operació només pot restaurar les traduccions pendents quan els fitxers de l’idioma de destinació encara existeixen després del restabliment o quan Weblate els pugui crear per al component, per exemple, utilitzant una Plantilla per a traduccions noves vàlida.
Si no es compleix cap d’aquestes condicions, Weblate manté els canvis pendents a la seva base de dades i informa d’un error de recuperació en lloc de fallar més tard amb un error d’anàlisi genèric.
Evitar conflictes de combinació centrant-se en les operacions de Git¶
Fins i tot quan Weblate és l’única font dels canvis als fitxers de traducció, poden aparèixer conflictes quan s’utilitza el complement Fes comissions «squash» al Git, Estil de fusió està configurat per Rebase, o esteu eliminant les confirmacions fora de Weblate (per exemple, quan fusioneu una sol·licitud d’extracció).
El motiu dels conflictes de fusió és diferent en aquest cas. Weblate pot tenir nous commits locals després de combinar anteriors commits de Weblate aigües amunt. Això sol passar si la fusió no s’automàtica i els canvis esperen dies o setmanes per a una revisió humana. Aleshores, Git de vegades ja no és capaç d’identificar els canvis aigües amunt com a coincidents amb els de Weblate i es nega a realitzar una rebase.
Squash combina els canvis de Weblate dificulta la recuperació. Una fusió d’esquaix crea una nova confirmació en lloc de conservar les commits individuals de Weblate a l’historial amunt. Weblate encara té les confirmacions originals al seu repositori local, i Git ja no pot provar que en aigües amunt ja les conté. Si el conflicte també s’ha resolt manualment, el contingut del fitxer pot diferir dels dos dipòsits, de manera que Weblate pot continuar sense actualitzar-se fins i tot després que la sol·licitud d’extracció s’hagi fusionat aigües amunt.
Si el flux amunt ja no conté confirmacions de Weblate perquè es van fusionar amb esquaix, potser no n’hi ha prou amb l’actualització del dipòsit. Utilitzeu Restablir i tornar a aplicar des de Manteniment del repositori per restablir Weblate a aigües amunt mantenint les traduccions pendents; vegeu Restableix i torna a aplicar el comportament de recuperació. Utilitzeu Restablir i descartar només quan aigües amunt substitueixin completament els canvis locals de Weblate.
Per abordar això, heu de minimitzar la quantitat de canvis pendents a Weblate quan fusioneu una sol·licitud d’extracció, o bé evitar els conflictes per complet sense aixafar els canvis.
Aquí hi ha algunes opcions per evitar-ho:
No utilitzeu Fes comissions «squash» al Git ni la combinació d’esquaix per als canvis de Weblate. L’aixafament és el motiu pel qual és possible que Git ja no reconegui els canvis després de la fusió.
Quan resolgueu conflictes fora de Weblate, fusioneu els compromisos de Weblate amb un commit de combinació normal i introduïu aquest resultat cap amunt. No fusioneu la sol·licitud d’extracció de resolució de conflictes.
Permet que Weblate cometi els canvis pendents abans de combinar-los. Això actualitzarà la sol·licitud d’extracció amb tots els seus canvis i els dos dipòsits estaran sincronitzats.
Utilitzeu les funcions de revisió de Weblate (vegeu Fluxos de treball de traducció) perquè pugueu combinar automàticament les sol·licituds d’extracció de GitHub després de passar CI.
Utilitzeu el bloqueig a Weblate per evitar canvis mentre s’està revisant la sol·licitud d’extracció de GitHub.
Vegeu també
Code-hosting notifications¶
Les instruccions específiques de l’aplicació i el webhook del proveïdor per a GitHub, GitLab, Bitbucket, Pagure, Azure Repos, Gitea, Forgejo i Gitee es tracten a Code-hosting integrations.
Provider-specific notifications¶
Aquests ancoratges heretats es mantenen per a la compatibilitat. La configuració actual de l’aplicació específica del proveïdor i del webhook està documentada a Code-hosting integrations.
Actualització automàtica dels dipòsits cada nit¶
Weblate recupera automàticament els dipòsits remots cada nit per millorar el rendiment quan es combinen els canvis més tard. Opcionalment, també podeu convertir això en fer fusions nocturnes, activant AUTO_UPDATE.
Impulsant canvis des de Weblate¶
Cada component de traducció pot tenir configurat un URL push (vegeu URL de pujada al repositori), i en aquest cas Weblate podrà enviar canvis al repositori remot. Weblate també es pot configurar per enviar canvis automàticament a cada commit, vegeu Puja en fer una comissió.
Per a la taula d’opcions push i els fluxos de treball de sol·licitud d’extracció, fusió i revisió específics del proveïdor, consulteu Impulsant canvis des de Weblate.
Vegeu també
Vegeu Accés als repositoris per configurar les claus SSH, i La mandrosa es compromet per obtenir informació sobre quan Weblate decideix confirmar els canvis.
Branques protegides¶
Si utilitzeu Weblate a una branca protegida, podeu configurar-lo per utilitzar sol·licituds d’extracció i realitzar una revisió real de les traduccions (cosa que podria ser problemàtica per als idiomes que no coneixeu). Un enfocament alternatiu és renunciar a aquesta limitació per a l’usuari push de Weblate.
Per exemple a GitHub això es pot fer a la configuració del repositori:
Interaccionar amb els altres¶
Weblate facilita la interacció amb altres persones mitjançant la seva API.
Vegeu també
La mandrosa es compromet¶
The behaviour of Weblate is to group commits from the same author into one commit if possible. This greatly reduces the number of commits, however you might need to explicitly tell it to do the commits in case you want to get the VCS repository in sync, e.g. for merge (this is by default allowed for the Managers group, see List of privileges).
Els canvis en aquesta modalitat es comprometen un cop es compleix alguna de les condicions següents:
Algú més canvia una cadena ja canviada.
Es produeix una fusió des de aigües amunt.
Es demana un compromís explícit.
Es demana una descàrrega del fitxer.
El canvi és més antic que el període definit com a Antiguitat dels canvis a publicar a Configuració dels components.
Suggeriment
Es creen commits per a cada component. Per tant, en cas que tingueu molts components, encara veureu molts commits. Podeu utilitzar el complement Fes comissions «squash» al Git en aquest cas.
If you want to commit changes more frequently and without checking of age, you
can schedule a regular task to perform a commit. This can be done using
Periodic Tasks in La interfície d’administració de Django. First create desired
Interval (for example 120 seconds). Then add new periodic task and
choose weblate.trans.tasks.commit_pending as Task with
{"hours": 0} as Keyword Arguments and desired interval.
Processament del repositori amb scripts¶
La manera de personalitzar com interactua Weblate amb el repositori és Complements. Consulteu Executing scripts from add-on per obtenir informació sobre com executar scripts externs mitjançant complements.
Mantenir les traduccions iguals entre els components¶
Un cop tingueu diversos components de traducció, és possible que vulgueu assegurar-vos que les mateixes cadenes tinguin la mateixa traducció. Això es pot aconseguir a diversos nivells.
Propagació de la traducció¶
Amb Permet la propagació de traduccions activat (quin és el valor predeterminat, vegeu Configuració dels components), totes les traduccions noves es fan automàticament en tots els components amb cadenes coincidents. Aquestes traduccions s’acrediten correctament a l’usuari que tradueix actualment en tots els components.
Propagation preconditions:
Tots els components han de residir en un únic projecte (el component d’enllaç no és suficient).
Habiliteu Permet la propagació de traduccions per reutilitzar automàticament les traduccions per a les cadenes coincidents.
La propagació de la traducció requereix que la clau coincideixi amb els formats de traducció monolingües, així que tingueu-ho en compte quan creeu claus de traducció.
Les cadenes es propaguen mentre es tradueixen, les cadenes carregades des del repositori no es propaguen.
Truc
Aquesta funció actualment té limitacions i volem fer-la més universal. Comparteix els teus comentaris a https://github.com/WeblateOrg/weblate/issues/3166.
Comprovació de coherència¶
La comprovació Inconsistent s’activa sempre que les cadenes siguin diferents. Podeu utilitzar-ho per revisar aquestes diferències manualment i triar la traducció adequada.
Traducció automatitzada¶
Automatic translation based on different components can be way to synchronize the translations across components. You can either trigger it manually (see Traducció automatitzada) or make it run automatically on repository update using add-on (see Traducció automatitzada).