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 describe maneras básicas para integrar su desarrollo con Weblate. Integraciones de hospedaje para código enumera pasos de configuración específicos del proveedor para código común hospedando sitios.
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).
Los cambios se envían de vuelta al repositorio principal (consulte 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 para integrarse con la mayoría de los servicios comunes de alojamiento de código, consulte Integraciones de hospedaje para código. También debe Activar actuadores para que esto funcione.
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. Weblate puede tener consolidaciones locales tras su anterior fusión del Weblate en desarrollo. Esto suele ocurrir si la fusión no está automatizada y los cambios esperan durante días o semanas para una revisión humana. Git a veces ya no es capaz de identificar los cambios en desarrollo como coincidentes con los de Weblate y rechaza realizar una rebase.
Fusionar por aplastamiento los cambios de Weblate hace que sea más difícil recuperarse. Una fusión por aplastamiento crea un nuevo commit en lugar de preservar los commits individuales de Weblate en la historia de desarrollo. Weblate todavía tiene los commits originales en su repositorio local, y Git ya no puede probar que en desarrollo ya los contiene. Si el conflicto también se resolvió manualmente, el contenido de los archivos puede diferir de ambos repositorios, por lo que Weblate puede seguir sin éxito para actualizar incluso después de que la solicitud de extracción se fusionara en desarrollo.
Si el repositorio original ya no contiene las confirmaciones de Weblate porque se han fusionado mediante «squash», es posible que no baste con actualizar el repositorio. Utiliza Reset y vuelve a aplicar desde Repository maintenance para restablecer Weblate al estado del repositorio original conservando las traducciones pendientes; consulta Restablecer y volver a aplicar el comportamiento. Utiliza Reset y descarta solo cuando el repositorio original deba sustituir por completo los cambios locales de Weblate.
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 Concentrar consolidaciones de Git o fusion squash para cambios en Weblate. Squashing es por qué Git quizá no reconozca por más tiempo los cambios tras la fusión.
Al resolver conflictos fuera de Weblate, fusiona las efectuaciones de Weblate con una fusión regular y efectúa el envío de ese resultado en desarrollo. No aplastes la solicitud de extracción de resolución de conflictos.
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
Notificaciones de hospedaje del código¶
Instrucciones de aplicaciones y webhooks específicos del Proveedor para GitHub, GitLab, Bitbucket, Pagure, Azure Repos, Gitea, Forgejo y Gitee se tratan en Integraciones de hospedaje para código.
Notificaciones específicas del proveedor¶
Estos antiguos anclajes se mantienen por compatibilidad. La configuración actual de la aplicación y webhook específica del proveedor está documentada en Integraciones de hospedaje para código.
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¶
Cada componente de traducción puede tener una URL de envío configurada (consulte URL de envío al repositorio ), y en ese caso Weblate podrá enviar el cambio al repositorio remoto . Weblate también puede configurarse para subir los cambios automáticamente en cada consignación, consulte Enviar al consolidar.
Para consultar la tabla de opciones de envío y los flujos de trabajo específicos de cada proveedor para las solicitudes de extracción, fusión y revisión, consulte 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).