Traducción¶
Resumen¶
Esta página explica cómo traducir una app: la herramienta que extrae las cadenas, la configuración de la sincronización con Transifex en la comunidad (archivo de configuración, ramas, archivos excluidos, validación y permisos del repositorio), la traducción manual sin Transifex, y enumera los cuatro procesos de traducción. Está dirigida a quienes desarrollan apps.
Fuente: documentación de Nextcloud, «developer_manual/app_development/translation», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
El sistema de traducción de Nextcloud funciona con Transifex. Para empezar a traducir, registrarse y entrar en un grupo. Si la app de la comunidad debe traducirla la comunidad de Nextcloud en Transifex, basta con seguir la sección de configuración de más abajo.
Herramienta de traducción¶
Nota
Por ahora, la traducción basada en la herramienta solo admite repositorios alojados en github.com. Si la app está alojada en otro lugar, se puede intentar seguir en su lugar la Traducción manual.
La herramienta de traducción recorre el código fuente en busca de llamadas a los métodos t()
o n() para extraer las cadenas que deben traducirse. Si, por ejemplo, se incluye en el repositorio código JS minificado, esos nombres de métodos también son bastante
comunes y podrían provocar extracciones erróneas. Por eso se permite
indicar una lista de archivos en los que la herramienta de traducción no buscará
cadenas. Basta con añadir un archivo llamado .l10nignore en
la carpeta raíz de la app e indicar los archivos, uno por línea:
# compiled vue templates
js/bruteforcesettings.js
Configuración de la sincronización con Transifex¶
Configuración de Transifex .tx/config¶
Para configurar la sincronización con Transifex dentro de la comunidad de Nextcloud, primero hay que añadir
la configuración de Transifex a la carpeta de la app en .tx/config (reemplazar MYAPP por el id de la app):
[main]
host = https://www.transifex.com
lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi
[o:nextcloud:p:nextcloud:r:{{APPID}}]
file_filter = translationfiles/<lang>/{{APPID}}.po
source_file = translationfiles/templates/{{APPID}}.pot
source_lang = en
type = PO
Luego crear una carpeta l10n y un archivo l10n/.gitkeep para crear una
carpeta vacía que más adelante contendrá las traducciones.
Selección de ramas .tx/backport¶
El bot se ejecutará cada noche y solo enviará commits a las siguientes ramas cuando haya una actualización de la traducción:
main
master
stableX (siendo X las 3 versiones recientes de Nextcloud Server)
Esta lista se puede sobrescribir creando en el repositorio un archivo .tx/backport con el siguiente contenido:
develop stable
Eso sincronizaría las traducciones de las ramas (main y master se añaden automáticamente):
main
master
develop
stable
Excluir archivos .l10nignore¶
Añadir un archivo más, llamado .l10nignore, en la raíz del repositorio, con los archivos y carpetas que se deben ignorar en las traducciones.
Debe usarse para excluir archivos que generan falsos positivos en las traducciones, como:
Archivos JavaScript compilados
js/Dependencias PHP de terceros
vendor/Archivos y documentación que no se distribuyen
docs/
Validar las cadenas de origen¶
Una vez terminada la configuración, se pueden validar las cadenas de origen de la traducción, lo que señala algunos errores comunes. Clonar el repositorio nextcloud/docker-ci y después ejecutar el siguiente script:
bash translations/validateSyncSetup.sh Owner Repository
Permisos del repositorio¶
Ahora la cuenta de GitHub @nextcloud-bot necesita acceso write al repositorio.
Se la puede invitar desde los ajustes del repositorio:
https://github.com/<user-name>/<repo-name>/settings/access
Después de enviar la invitación, abrir un ticket con la plantilla «Request translations».
Atención
En general, conviene activar la
función de ramas protegidas
para las ramas predeterminada y estables. Si se hace, hay que conceder a
@nextcloud-bot permisos admin y permitir que los administradores se salten la protección.
Sin embargo, esta función solo es posible en repositorios que pertenecen a organizaciones, ¡no en repositorios que pertenecen a personas!
Se puede crear una organización propia
Si se necesita ayuda, basta con abrir un ticket con la solicitud y también se puede recibir orientación a lo largo de los pasos.
Traducción manual¶
Si Transifex no es la opción adecuada o la app no se acepta para traducción, generar las cadenas de gettext por cuenta propia ejecutando nuestra herramienta de traducción en la carpeta de la app:
cd /srv/http/nextcloud/apps/myapp
translationtool.phar create-pot-files
La herramienta de traducción requiere gettext, que se puede instalar con:
apt-get install gettext
La herramienta anterior genera una plantilla que se puede usar para traducir todas las cadenas
de una app. Esta plantilla se encuentra en la carpeta translationfiles/template/ con el
nombre myapp.pot. Se puede usar con la herramienta de traducción que se prefiera, como
Poedit. Esta crea entonces un archivo .po.
El archivo .po debe colocarse en una carpeta con el nombre del código de idioma
y con el nombre de la app como nombre de archivo; por ejemplo, translationfiles/es/myapp.po.
Después de este paso, hay que invocar la herramienta para pasar el archivo po a nuestro
propio formato de archivo, que el código del servidor lee más fácilmente:
translationtool.phar convert-po-files
Ahora está disponible la siguiente estructura de carpetas:
myapp/l10n
|-- es.js
|-- es.json
myapp/translationfiles
|-- es
| |-- myapp.po
|-- templates
|-- myapp.pot
Después solo se necesitan los archivos .json y .js para tener una app localizada que funcione.
Documentación sobre el proceso de traducción¶
A continuación se describen cuatro procesos:
Proceso para traducir una cadena nueva
Proceso para corregir un error tipográfico o gramatical en una cadena traducida
Proceso para hacer traducible una cadena que no lo es
Proceso para corregir un problema en la cadena de origen