ToolTranslate

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search
This page is a translated version of the page ToolTranslate and the translation is 73% complete.

Other languages:
ToolTranslate w akcji

To jest podręcznik dla narzędzia ToolTranslate. Możesz go przetłumaczyć!

Przeznaczenie

Wiele narzędzi na WMF Labs ma brakujące tłumaczenia interfejsu, inaczej mówiąc, są dostępne tylko w jednym języku, zazwyczaj angielskim. Nawet narzędzia, które obsługują wiele języków interfejsu, wykorzystują prymitywne metody dodawania nowych języków i tłumaczeń. ToolTranslate oferuje scentralizowany i przyjazny użytkownikowi sposób dla Społeczności (TM) na tworzenie tłumaczeń narzędzi. Narzędzia muszą mieć wprowadzoną obsługę tego mechanizmu, inaczej mówiąc, muszą być przebudowane do obsługi dynamicznego zamiast statycznego tekstu interfejsu. Pierwotny wpis na blogu.

Tłumaczenie

  1. Przejdź do narzędzia
  2. Autoryzuj narzędzie
  3. Wybierz narzędzie, które chcesz przetłumaczyć z listy
  4. Wybierz lub dodaj język, na który chcesz przetłumaczyć
  5. Dwukrotnie kliknij komórkę, gdzie powinno znajdować się tłumaczenie, lub tłumaczenie, które chcesz ulepszyć
  6. Wpisz tekst. Możesz używać HTML (bez JavaScript!). Mogą pojawić się sugestie tłumaczeń z innych narzędzi z tej samej nazwy klucza, które możesz wykorzystać jako podstawę dla tekst.
  7. Kliknij OK. Zrobione! Pamięć podręczna przeglądarki może powodować, że tłumaczenia nie będą wyświetlane w tłumaczonych narzędziach, dopóki ich nie załadujesz ponownie.

Zasoby

Techniczne

Tłumaczenia są przechowywane w bazie danych w Labs. Starsze wersje tłumaczeń też są przechowywane oraz mają przypisane autorstwo do edytującego. (Dostępne też narzędzie «recent changes».)

Aby uprościć dostęp do danych o tłumaczeniach, wszystkie tłumaczenia są także przechowywane w plikach JSON, które sa aktualizowane po każdej zmianie. Przykład dla "demotool1":

  • toolinfo.json, plik JSON z informacjami o narzędziu
  • en.json, plik JSON zawierający angielskie tłumaczenia tego narzędzia. Inne języki działają w ten sam sposób, z odpowiednim kodem języka

Jest też plik JSON z wszystkimi poprawnymi językami.

Baza danych

Dane źródłowe są przechowywane w bazie danych s53069__tooltranslate_p na tools-db w tools labs (mysql --defaults-file=~/replica.my.cnf -h tools-db s53069__tooltranslate_p). Dane mogą być także stąd pobierane jeżeli trzeba. Są dostępne także poniższe tabele:

  • tool

  • id | name | label | url | owner

  • translation

  • id | tool_id | language | key | json | user | timestamp | current

HowTo: HTML/JS

HowTo: PHP

Jest klasa PHP, która możesz dołączyć na Labs, w taki sposób:

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

Możesz następnie utworzyć instancję tej klasy:

$tt = new ToolTranslation ( array ( 'tool' => 'your_tool_key' , 'language' => 'de' , 'fallback' => 'en' , 'highlight_missing' => true ) ) ; // Wszystko oprócz 'tool' jest nieobowiązkowe

Bezpośrednie użycie

Są dwa sposoby pobierania tłumaczeń interfejsu w PHP. Pierwszy to bezpośrednie pobranie przetłumaczonego ciągu

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

Wadą jest to, że tłumaczenie nie może być zmienione bez przeładowania strony.

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') ;

Zobacz to narzędzie będące działającym przykłądem.