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 100% complete.
ToolTranslate у дії

Це — посібник для інструмента ToolTranslate. Можете його перекласти!

Ціль

Багато інструментів на Toolforge не мають перекладів інтерфейсу, тобто доступні лише однією мовою (зазвичай англійською). Навіть інструменти, які підтримують кілька мов у інтерфейсі, використовують незручні методи додавання нових мов і перекладів. ToolTranslate пропонує централізований, зручний для користувачів спосіб для Спільноти надавати переклади для інструментів. Інструменти мають підтримувати цей механізм, тобто їх потрібно один раз адаптувати, щоб використовувати динамічний, а не статичний текст у інтерфейсі. Оригінальний пост у блозі.

Переклад

  1. Перейдіть до інструменту
  2. Якщо потрібно, авторизуйте цей інструмент
  3. Виберіть інструмент для перекладу з випадного списку зверху або списку на головній сторінці
  4. Виберіть або додайте мову для перекладу
  5. Двічі швидко клацніть на "комірку", де має бути ваш новий переклад, або переклад, який ви хочете покращити
  6. Введіть текст. Ви можете використовувати HTML (без JavaScript!). Там може бути пропозиція для перекладу з іншого інструменту з тим самим "ключовим іменем", ви можете використовувати її як основу для вашого тексту.
  7. Натисніть "ОК". Готово! Кешування браузера може призвести до того, що переклади не відображатимуться в перекладеному інструменті, доки ви не перезавантажите його.

Ресурси

Технічні деталі

Переклади зберігаються в базі даних на Toolforge. Старі версії перекладів зберігаються, а переклади атрибутуються відповідному редактору. (Доступний інструмент "останні зміни".)

Щоб спростити доступ до даних перекладів, усі переклади також зберігаються у файлах JSON, які оновлюються при кожній зміні. Приклад "demotool1":

  • toolinfo.json — JSON-файл із інформацією про інструмент
  • en.json — JSON-файл із англійським перекладом інструмента. Інші мови працюють аналогічно, з відповідним кодом мови

Також є JSON-файл із усіма дійсними мовами.

База даних

Вихідні дані зберігаються в базі даних s53069__tooltranslate_p tools-db на Toolforge (mysql --defaults-file=~/replica.my.cnf -h tools-db s53069__tooltranslate_p). При необхідності дані можна отримувати звідти. Доступні такі таблиці:

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

Як використовувати: HTML/JS

Як використовувати: PHP

Є PHP-клас, який можна підключити на Toolforge, наприклад так:

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

Після цього можна створити екземпляр класу:

$tt = new ToolTranslation ( array ( 'tool' => 'your_tool_key' , 'language' => 'de' , 'fallback' => 'en' , 'highlight_missing' => true ) ) ; // Все, окрім 'tool', є необов’язковим

Пряме використання

Є два способи отримання перекладів інтерфейсу в PHP. Перший — безпосереднє отримання перекладеного рядка.

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

Проте це має недолік: переклад не можна змінити без перезавантаження сторінки.

Використання за допомогою JS

Можна додати HTML-"теги перекладу" (див. вище), а клас додасть необхідний JS-виклик. Ще одна перевага: PHP-класу не потрібно завантажувати жодних файлів перекладу, якщо ви ніколи не використовуєте "прямий" переклад, як описано вище. Щоб використовувати HTML/JS-переклад, у розділі <head> вашої сторінки має бути:

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

(Вам також знадобиться jQuery.) Під час генерації сторінки замість вищезазначеного напишіть:

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

Десь у виводі (можливо, наприкінці), потрібно додати код ініціалізації:

print $tt->getJS() ;

Це ініціалізує необхідний JS, відтворюючи параметри, використані у PHP-екземплярі (мова за замовчуванням тощо). Якщо потрібен "вибір мови", додайте обгортку у ваш HTML-код:

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

а потім передайте селектор jQuery як параметр у виклик методу getJS:

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

Див. цей інструмент для робочого прикладу.