Jump to content

ToolTranslate

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page ToolTranslate and the translation is 27% complete.
ToolTranslate em acção

Este é o manual da ferramenta ToolTranslate. Sinta-se livre para traduzi-lo!

Propósito

Muitas ferramentas no WMF Labs não têm tradução de interface, isto é, elas estão disponíveis apenas em um idioma, normalmente em inglês. Mesmo as ferramentas que suportam vários idiomas na interface usam métodos desajeitados para adicionar novos idiomas e traduções. O ToolTranslate oferece uma maneira centralizada e fácil de usar para que a Comunidade (TM) forneça traduções para ferramentas. As ferramentas precisam suportar esse mecanismo, ou seja, precisam ser "trabalhadas" para usar texto dinâmico em vez de estático na interface. Post original do blog.

Traduzir

  1. Va para a ferramenta
  2. Se solicitado, autorize a ferramenta
  3. Escolha uma ferramenta para traduzir a partir da caixa drop-down no topo ou da lista na página principal
  4. Escolha ou adicione o idioma para traduzir para
  5. Dê um duplo clique na "célula" onde a sua nova tradução deve ir, ou a tradução que você deseja melhorar
  6. Digite seu texto. Você pode usar HTML (sem JavaScript!). Pode haver uma sugestão para a tradução de outra ferramenta com o mesmo "nome da chave", você pode usá-lo como uma base para o seu texto.
  7. Clique em OK. Feito! Problemas de cache do navegador, sua tradução deve ser exibida na respectiva ferramenta na próxima vez que for carregada.

Recursos

Tech

Translations are stored in a database on Toolforge. Old revisions of translations are kept, and translations are attributed to the respective editor. (A "recent changes" tool is available.)

To simplify access to translation data, all translations are also stored in JSON files, which are updated on every change. Example "demotool1":

  • toolinfo.json, a JSON file with information about the tool
  • en.json, the JSON file containing the English translation of that tool. Other languages work in the same manner, with the respective language code

There is also a JSON file with all valid languages.

Database

The source data is stored in the s53069__tooltranslate_p database on tools-db on Toolforge (mysql --defaults-file=~/replica.my.cnf -h tools-db s53069__tooltranslate_p). Data can be fetched from there as well if needed. Following tables are available:

  • tool
    • id | name | label | url | owner
  • translation
    • id | tool_id | language | key | json | user | timestamp | current

HowTo: HTML/JS

HowTo: PHP

There is a PHP class that you can include on Toolforge, like so:

require_once ( "/data/project/tooltranslate/public_html/tt.php") ;

You can then instantiate the class:

$tt = new ToolTranslation ( array ( 'tool' => 'your_tool_key' , 'language' => 'de' , 'fallback' => 'en' , 'highlight_missing' => true ) ) ; // <span lang="en" dir="ltr" class="mw-content-ltr">Everything except 'tool' is optional</span>

Direct usage

There are two ways of getting interface translations in PHP. One is directly getting a translated string

print "<p>" . $tt->t('translation_key') . "</p>" ;

But this has the disadvantage that the translation cannot be changed without reloading the page.

Use via JS

You can instead add HTML "translation tags" (see above), and have the class add the necessary JS invocation. Another advantage is that the PHP class does not need to load any translation files if you never use the "direct" translation above. To use HTML/JS translation, the <head> section of your pages' HTML needs to contain

<script src="https://tools-static.wmflabs.org/tooltranslate/tt.js">

(You will also need jQuery.) When generating the page, instead of the above, write:

print "<p tt='translation_key'></p>" ;

Somewhere in the output (maybe towards the end), you will need to add the invocation code:

print $tt->getJS() ;

This will initialize the required JS, reproducing the parameters used in the PHP instance (fallback language etc.). If you want a "translation dropdown", add a wrapper element in your HTML code

<div id='tooltranslate_wrapper'></div>

then give the jQuery accessor as a parameter to the getJS method call:

print $tt->getJS('#tooltranslate_wrapper') ;

See this tool for a working example.