ToolTranslate
Este es el manual de la herramienta ToolTranslate ¡Siéntase libre de traducirlo!
Propósito
Muchas herramientas en WMF Labs carecen de traducciones de interfaz, es decir, solo están disponibles en un idioma, generalmente en inglés. Incluso las herramientas que soportan múltiples idiomas en la interfaz usan métodos torpes para agregar nuevos idiomas y traducciones. ToolTranslate ofrece una forma centralizada y fácil de usar para que The Community (TM) proporcione traducciones para herramientas. Las herramientas necesitan soportar este mecanismo, es decir, necesitan ser "trabajadas" una vez para usar texto dinámico en vez de estático en la interfaz. Entrada original del blog.
Traducir
- Dirígete a la herramienta
- Si es necesario, autoriza la herramienta
- Elija una herramienta para traducir desde el cuadro desplegable en la parte superior o en la lista de la página principal
- Elige o añade el idioma para traducir
- Haga doble clic en la "celda" donde debe ir su nueva traducción, o la traducción que desea mejorar
- Escriba su texto. Puedes usar HTML (¡No JavaScript!). Puede haber una sugerencia para la traducción de otra herramienta con el mismo "nombre clave", puede utilizarlo como base para su texto.
- Haga clic en Aceptar ¡Hecho! Aparte de los problemas de almacenamiento en caché del navegador, la traducción se mostrará en la herramienta correspondiente la próxima vez que la cargue.
Recursos
- Vídeo demostrativo en la interfaz de ToolTranslate (utilizada en la propia herramienta).
- Demostración simple de la herramienta y fuente HTML/JS
- WikiLovesMonuments (Edición en WIkidata) como un ejemplo ligeramente más ambicioso
- repositorio git
Tecnología
Las traducciones se almacenan en una base de datos en Labs. Se conservan revisiones antiguas de traducciones, y las traducciones se atribuyen al respectivo editor (existe una herramienta de "cambios recientes").
Para simplificar el acceso a los datos de traducción, todas las traducciones también se almacenan en archivos JSON, que se actualizan en cada cambio. Ejemplo "demotool1":
- toolinfo.json, un archivo JSON con información sobre la herramienta
- en.json, El archivo JSON que contiene la traducción al inglés de esa herramienta. Otros idiomas funcionan de la misma manera, con el respectivo código de idioma
Hay también un archivo JSON con todos los idiomas validos.
Base de datos
La fuente de los datos se almacenan en la base de datos s53069__tooltranslate_p
en tools-db en tools labs (mysql --defaults-file=~/replica.my.cnf -h tools-db s53069__tooltranslate_p
). Los datos se pueden obtener de allí también si es necesario.
Las siguientes tablas están disponibles:
- tool
- id | name | label | url | owner
- translation
- id | tool_id | language | key | json | user | timestamp | current
Cómo: HTML/JS
- Revisar el código de demostración
- El ToolTranslate código JS Tiene una lista de opciones que puedes usar
- Si deseas una cadena traducida (utilizando un objeto de ejemplo
tt
),tt.t(key)
ott.t(key,{lang:language_code})
lo conseguiremos por usted - En HTML, añade el atributo
tt
en cualquier etiqueta, ej:<span tt='key'></span>
. - Las cadenas de traducción que contienen "https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/demos/demotool1.html?at=master&fileviewer=file-view-default" a "$9" serán automáticamente sustituidos por los atributos de etiqueta "tt1" a "tt9", respectivamente. Esto es para permitir el cambio del lenguaje de interfaz sin dividir los textos en muchos fragmentos. La traducción no se tocará si faltan los atributos. En JavaScript,
tt.t(key,{params:['value for https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/demos/demotool1.html?at=master&fileviewer=file-view-default','value for https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/tt.js?at=master&fileviewer=file-view-default']})
.
Cómo: PHP
Hay una clase PHP que puedes incluir en Labs, así:
require_once ( "/data/project/tooltranslate/public_html/tt.php") ;
A continuación, puedes instanciar la clase:
$tt = new ToolTranslation ( array ( 'tool' => 'your_tool_key' , 'language' => 'de' , 'fallback' => 'en' , 'highlight_missing' => true ) ) ; // Todo excepto "herramienta" es opcional
Uso directo
Hay dos maneras de obtener traducciones de interfaz en PHP. Una es obtener directamente una cadena traducida
print "<p>" . $tt->t('translation_key') . "</p>" ;
Pero esto tiene la desventaja de que la traducción no se puede cambiar sin recargar la página.
Uso vía JS
En su lugar, puede agregar "etiquetas de traducción" HTML (ver más arriba), y hacer que la clase añada la invocación JS necesaria. Otra ventaja es que la clase PHP no necesita cargar ningún archivo de traducción si nunca usa la traducción "directa" anterior. Para utilizar la traducción HTML/JS, la sección <head> de las páginas HTML deben contener
<script src="https://tools-static.wmflabs.org/tooltranslate/tt.js">
(También necesitará jQuery.) Al generar la página, en lugar de lo anterior, escriba:
print "<p tt='translation_key'></p>" ;
En algún lugar de la salida (tal vez hacia el final), tendrá que agregar el código de invocación:
print $tt->getJS() ;
Esto inicializará el JS requerido, reproduciendo los parámetros usados en la instancia de PHP (lenguaje de fallback, etc.). Si desea una "lista desplegable de traducción", agregue un elemento de contenedor en su código HTML
<div id='tooltranslate_wrapper'></div>
A continuación, dé el jQuery accessor como un parámetro a la llamada al método getJS:
print $tt->getJS('#tooltranslate_wrapper') ;
Ver esta herramienta para un ejemplo de trabajo.