ToolTranslate

Це — посібник для інструмента ToolTranslate. Можете його перекласти!
Ціль
Багато інструментів на Toolforge не мають перекладів інтерфейсу, тобто доступні лише однією мовою (зазвичай англійською). Навіть інструменти, які підтримують кілька мов у інтерфейсі, використовують незручні методи додавання нових мов і перекладів. ToolTranslate пропонує централізований, зручний для користувачів спосіб для Спільноти надавати переклади для інструментів. Інструменти мають підтримувати цей механізм, тобто їх потрібно один раз адаптувати, щоб використовувати динамічний, а не статичний текст у інтерфейсі. Оригінальний пост у блозі.
Переклад
- Перейдіть до інструменту
- Якщо потрібно, авторизуйте цей інструмент
- Виберіть інструмент для перекладу з випадного списку зверху або списку на головній сторінці
- Виберіть або додайте мову для перекладу
- Двічі швидко клацніть на "комірку", де має бути ваш новий переклад, або переклад, який ви хочете покращити
- Введіть текст. Ви можете використовувати HTML (без JavaScript!). Там може бути пропозиція для перекладу з іншого інструменту з тим самим "ключовим іменем", ви можете використовувати її як основу для вашого тексту.
- Натисніть "ОК". Готово! Кешування браузера може призвести до того, що переклади не відображатимуться в перекладеному інструменті, доки ви не перезавантажите його.
Ресурси
- Відео-демонстрація інтерфейсу ToolTranslate (використано на самому інструменті!)
- Простий інструмент для демонстрацій та HTML/JS код
- WikiLovesMonuments (видання Wikidata) як трохи складніший приклад
- git-репозиторій
Технічні деталі
Переклади зберігаються в базі даних на 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
- Ознайомтеся з демонстраційним кодом
- JS-код ToolTranslate містить список опцій, які можна використовувати
- Якщо потрібен перекладений рядок (наприклад, об’єкт
tt
),tt.t(key)
абоtt.t(key,{lang:language_code})
отримає його для вас - У HTML додайте атрибут
tt
до будь-якого тегу, наприклад<span tt='key'></span>
- Рядки перекладу, що містять "https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/demos/demotool1.html?at=master&fileviewer=file-view-default" до "$9", автоматично будуть замінені атрибутами тегів "tt1" до "tt9" відповідно. Це дозволяє змінювати мову інтерфейсу без розбиття тексту на багато фрагментів. Якщо атрибути відсутні, переклад не змінюється. У 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']})
Як використовувати: 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') ;
Див. цей інструмент для робочого прикладу.