Localización continua¶
Existe una infraestructura para que la traducción siga de cerca el desarrollo. De este modo, los traductores pueden trabajar en las traducciones todo el tiempo, en lugar de trabajar con una enorme cantidad de texto nuevo justo antes del lanzamiento.
Ver también
Integración con Weblate describes basic ways to integrate your development with Weblate. Code hosting integrations lists provider-specific setup steps for common code hosting sites.
Este es el proceso:
Los desarrolladores hacen cambios y los suben al repositorio VCS.
Opcionalmente son actualizados los archivos de traducción, consulte Introducir cadenas nuevas.
Weblate extrae los cambios del repositorio VCS , interpreta los archivos de traducción y actualiza su base de datos, consulte Actualizar repositorios .
Los traductores envían las traducciones a través de la interfaz web de Weblate, o suben los cambios sin conexión.
Una vez que los traductores han terminado, Weblate consolidaciones los cambios en el repositorio local (consulte Consolidaciones diferidas).
Changes are pushed back to the upstream repository (see Enviar cambios efectuados en Weblate).
Consejo
Hospedaje de código ascendente no es necesario, puede utilizar Weblate con: Archivos locales donde solo hay el repo dentro de Weblate.
Actualizar repositorios¶
Debería configurar de alguna manera la actualización de los repos de backend desde su fuente.
Use Actuadores de notificación to integrate with the majority of common code hosting services, see Code hosting integrations. You must also Activar actuadores for this to work.
Activar manualmente la actualización ya sea en la administración del repositorio o usando API REST de Weblate o Cliente de Weblate
Habilite
AUTO_UPDATEpara actualizar automáticamente todos los componentes en su instancia de WeblateEjecute
updategit(con selección del proyecto o--allpara actualizar todo)
Siempre que Weblate actualice el repositorio, se activarán los complementos posteriores a la actualización, consulte Complementos.
Evitar conflictos de fusión¶
El conflicto de fusión desde Weblate surge cuando el mismo archivo fue cambiado a la vez en Weblate y fuera de esto. Dependiendo de la situación, hay varias aproximaciones que quizá le ayude aquí:
Evitar conflictos de fusión por cambio de archivos de traducción en Weblate solamente
Evitar conflictos de fusión bloqueando Weblate mientras realizan cambios externos
Evitar conflictos de fusión por cambio de archivos de traducción en Weblate solamente¶
Evita editar fuera de Weblate es fácil con archivos monolínguos — puede añadir cadenas neuvas con Weblate y dejar completas editando allí los archivos. Para archivos bilingües, es usualmente alguna familia de mensajes de proceso de extracción para generar archivos traducibles a partir del código fuente. En algunos casos, esto se puede desglosar en dos partes:
La extracción genera la plantilla (por ejemplo, gettext POT se genera usando xgettext).
Luego el proceso lo fusiona en traducciones reales (los archivos gettext PO se actualizan usando msgmerge).
Puede realizar el segundo paso dentro de Weblate y se asegurará de que todos los cambios pendientes se incluyan antes de esta operación.
Evitar conflictos de fusión bloqueando Weblate mientras realizan cambios externos¶
Integrar Weblate en su proceso de actualización tal que purga los cambios antes de actualizar los archivos externos de Weblate puede ser logrado utilizando API REST de Weblate para forzar Weblate a purgar todos los cambios pendientes y loquear la traducción mientras está haciendo los cambios en su lado.
El script para realizar actualizaciones puede verse como este:
# 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 tiene múltiples componentes compartiendo el mismo repositorio, necesita bloquearlo todos separadamente:
wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj
Nota
El ejemplo utiliza Cliente de Weblate, el cual necesita configuración (teclas API) para ser capaz de controlar remotamente Weblate. Además puede lograr esto utilizando cualquier cliente HTTP en vez de Cliente de Weblate, por ejemplo curl, consulte API REST de Weblate.
Mantenimiento de repositorio¶
La vista del Mantenimiento del repositorio muestra estado de repositorio para un proyecto, componente, o traducción y permite a usuarios privilegiados ejecutar operaciones de mantenimiento desde el interfaz de usuario.
Las mismas acciones además pueden ser ejecutadas utilizando API REST de Weblate o, para el subconjunto admitido, Cliente de Weblate.
La disponibilidad de las acciones individuales depende de los permisos, del sistema de control de versiones configurado, de si está configurada la función de envío de datos y de si el objeto seleccionado se puede bloquear.
Acción |
Lo que hace |
Uso típico |
|---|---|---|
Consignar |
Consigne los cambios pendientes almacenados en Weblate en el repositorio local. |
Purga cambios de Weblate pendientes antes de realizar en otro lugar cualquier trabajo del repositorio. |
Envío |
Purga cambios confirmados del repositorio local al proceso en desarrollo configurado. |
Envía traducciones efectuadas en desarrollo cuando la subida automática esté inhabilitada o diferida. |
Actualizar |
Obtiene los cambios en desarrollo y los integra utilizando el componente de Estilo de fusión configurado. |
Sincroniza Weblate con el desarrollo utilizando la estrategia de integración predeterminada. |
Actualizar con fusión |
Obtiene los cambios en desarrollo y los integra mediante una fusión explícita. |
Anula el estilo de fusión predeterminado para una sola actualización. |
Actualizar con rebase |
Obtiene los cambios del repositorio y realiza una rebase local de confirmaciones locales de Weblate sobre el proceso en desarrollo. |
Mantén el historial en formato lineal que coincida con el flujo de trabajo. |
Actualizar con fusión sin avance rápido |
Obtiene los cambios en desarrollo y crea una confirmación de fusión explícita incluso cuando sería posible un avance rápido. |
Conserve las confirmaciones de fusión por motivos de auditoría o gestión de ramas. |
Bloquear / Desbloquear |
Impide o permite a los traductores realizar más cambios en Weblate. |
Congele los cambios de traducción mientras realiza el mantenimiento del repositorio fuera de Weblate. |
Restablecer y descartar |
Restablece el repositorio local de Weblate a la versión en desarrollo y descarta los cambios pendientes de Weblate. |
Utiliza cuando en desarrollo sobrescribiría el estado del repo Weblate local. |
Restablecer y re‐aplicar |
Restablece el repositorio local de Weblate a en desarrollo mientras preserva traducciones pendiente. Consutle Restablecer y volver a aplicar el comportamiento. |
Recuperar la integridad del historial manteniendo las traducciones pendientes de Weblate. |
Limpieza |
Elimina los archivos sin seguimiento y las ramas obsoletas de la copia local (checkout) del repositorio. |
Limpie los archivos sobrantes o el estado obsoleto del repositorio en la extracción de Weblate. |
Sincronizar |
Fuerza a Weblate a escribir todas las traducciones conocidas devueltas a los archivos del repositorio. |
Repara casos donde los archivos del repositorio se hayan desincronizado con el estado de la base de datos. |
Re‐análisis |
Relee los archivos de traducción desde el repositorio local en Weblate. |
Importar los cambios de archivo tras funcionar manualmente en el repositorio o creación del archivo. |
Restablecer y volver a aplicar el comportamiento¶
La operación Restablecer y volver a aplicar mantiene las traducciones pendientes de Weblate mientras restablece el estado del repositorio local para que coincida con el repositorio en desarrollo.
La operación solo puede restaurar las traducciones pendientes cuando los archivos del idioma de destino aún existen después del reinicio o cuando Weblate puede crearlos para el componente, por ejemplo, utilizando un Plantilla para traducciones nuevas válido.
Si no se cumple ninguna de estas condiciones, Weblate conserva los cambios pendientes en su base de datos e informa de un error de recuperación en lugar de fallar posteriormente con un error de intérprete genérico.
Evitar conflictos de fusión enfocando en operaciones Git¶
Incluso cuando Weblate es la única fuente de los cambios en los archivos de traducción, los conflictos pueden aparecer cuando se utiliza Concentrar consolidaciones de Git adjunta, Estilo de fusión está configurado a Rebase, o está aplastando consolidaciones fuera de Weblate (por ejemplo, al fusionar una solicitud de extracción).
La razón de los conflictos de fusión es diferente en este caso - hay cambios en Weblate que ocurrieron después de que usted fusionara las consolidaciones de Weblate. Esto suele ocurrir si la fusión no está automatizada y se espera durante días o semanas a que un humano los revise. Git a veces ya no es capaz de identificar los cambios aguas arriba como coincidentes con los de Weblate y se niega a realizar un rebase.
Para aprobar esto, o bien necesita minimizar la cantidad de cambios pendientes en Weblate cuando una un pull request, o evitar los conflictos completamente no aplastando los cambios.
Aquí hay pocas opciones sobre como evitar eso:
No utilice ni Concentrar consolidaciones de Git ni squashing en el momento de la fusión. Esta es la causa principal por la que git no reconoce los cambios tras la fusión.
Deje que Weblate consoliden los cambios pendientes antes de fusionarlos. Esto actualizará la solicitud de extracción con todos sus cambios, y ambos repositorios estarán sincronizados.
Utiliza las características de revisión en Weblate (consulte Flujos de trabajo de traducción) tal que pueda unir automáticamente solicitudes de tirar unidas tras aprobar CI.
Utilice bloqueo en Weblate para evitar cambios mientras solicita subidas GitHub está dentro de revisión.
Ver también
Code hosting notifications¶
Provider-specific app and webhook instructions for GitHub, GitLab, Bitbucket, Pagure, Azure Repos, Gitea, Forgejo, and Gitee are covered in Code hosting integrations.
Provider-specific notifications¶
These legacy anchors are kept for compatibility. Current provider-specific app and webhook setup is documented in Code hosting integrations.
Actualizando repositorios automáticamente por la noche¶
Weblate busca automáticamente repositorios remotos todas las noches para mejorar el rendimiento al fusionar cambios más adelante. Opcionalmente, también puedes convertir esto en fusiones nocturnas, habilitando AUTO_UPDATE.
Enviar cambios efectuados en Weblate¶
Each translation component can have a push URL set up (see URL de envío al repositorio), and in that case Weblate will be able to push changes to the remote repository. Weblate can also be configured to automatically push changes on every commit, see Enviar al consolidar.
For the push options table and provider-specific pull, merge, and review request workflows, see Enviar cambios efectuados en Weblate.
Ver también
Consulte Acceder a repositorios para configurar claves SSH, y Consolidaciones diferidas para informe sobre cuando Weblate decida consolidar cambios.
Ramas protegidas¶
Si está utilizando Weblate en ramas protegidas, puede configurarla para utilizar solicitudes de envío y realizar revisión actual en las traducciones (que tal vez es problemática para idiomas que no conozca). Una aproximación alternativa es renunciar esta limitación para el usuario Weblate.
Por ejemplo en GitHub esto puede realizarse en la configuración del repositorio:
Interactuar con otros¶
Weblate facilita la interacción con otras herramientas mediante su API.
Ver también
Consolidaciones diferidas¶
El comportamiento de Weblate es agrupar las consolidaciones del mismo autor en una sola consolidación, si es posible. Esto reduce en gran medida la cantidad de consolidaciones, sin embargo, es posible que deba indicarle explícitamente que realice las consolidaciones en caso de que desee sincronizar el repositorio VCS , por ejemplo, para la fusión (esto está permitido de manera predeterminada para el grupo Administradores, consulte Lista de privilegios).
Los cambios en esta modalidad se consolidan una vez que cualquiera de estas condiciones se cumpla:
Alguien más modifica una cadena ya modificada.
Se produce una fusión desde el origen ascendente.
Una consolidación explícita es requerida.
Se solicita una descarga de archivos.
El cambio es anterior al período definido como Antigüedad de cambios por consolidar en Configuración de componentes.
Consejo
Las consolidaciones son creadas para cada componente. Por tanto en caso que tenga muchos componentes aún consulte el lote de consignas. Quizá utilice Concentrar consolidaciones de Git agregado en ese caso.
Si deseas consolidar cambios con mayor frecuencia y sin verificar la antigüedad, puedes programar una tarea regular para realizar una consolidación. Esto se puede hacer usando Tareas periódicas en La interfaz administrativa de Django. Primero crea el Intervalo deseado (por ejemplo, 120 segundos). Luego, agregue una nueva tarea periódica y elija weblate.trans.tasks.commit_pending como Tarea con {"hours": 0} como Argumentos de palabras clave y el intervalo deseado.
Procesar repositorio con guiones¶
La manera de personalizar como Weblate interactúa con el repositorio está en Complementos. Consulte Ejecutar scripts desde el complemento para informe sobre como ejecutar guiones externos a través de agregados.
Mantener las mismas traducciones entre componentes¶
Una vez que tiene múltiples componentes de traducción, quizá desea asegurar que las mismas cadenas tienen la misma traducción. Esto puede ser logrado en varios niveles.
Propagación de traducción¶
Con Conceder propagación de traducciones activado (que es lo predet., consulte Configuración de componentes), todas las traducciones nuevas son realizadas automáticamente en todos los componentes con cadenas coincidentes. Tales traducciones son apropiadamente crediticias al usuario de traducción actualmente en todos los componentes.
Condiciones previas de propagación:
Todos los componentes tienen que estar en un solo proyecto (vincular el componente no es suficiente).
Habilitar Conceder propagación de traducciones para reutilizar automáticamente las traducciones para cadenas coincidentes.
La propagación de traducción requiere la clave para ser coincidida para formatos de traducción monolingual, por tanto conseve eso en mente cuando cree claves de traducción.
Las cadenas se propagan durante la traducción, las cadenas cargadas desde el repositorio no se propagan.
Truco
Actualmente, esta función tiene limitaciones y queremos que sea más universal. Comparta sus comentarios en https://github.com/WeblateOrg/weblate/issues/3166.
Comprobación de coherencia¶
La comprobación Incoherente dispara en cuanto las cadenas son diferentes. Puede utilizar esto para revisar tales diferencias manualmente y elija la traducción correcta.
Traducción automática¶
La traducción automática basada en diferentes componentes puede ser una forma de sincronizar las traducciones entre componentes. Puede activarla manualmente (véase Traducción automática) o hacer que se ejecute automáticamente al actualizar el repositorio mediante un complemento (consulte Traducción automática).