Довідка:Розширення:Переклад/Помічники перекладу
Помічники перекладу (translation aids, translation helpers) — модулі, які забезпечують помічну і необхідну інформацію для перекладача під час перекладу. Різні помічники можуть надавати різні поради з пам'ятю перекладів і машинного перекладу, документації про повідомлення або навіть такі звичайні речі, як визначення повідомлення — текст, який має бути перекладеним.
Існує часткове перекривання даних, які видає колекція повідомлень і помічники, але на практиці, як правило, колекція повідомлень містить тільки інформацію, яка безсумнівно необхідна для відображення списку повідомлень: визначення, переклад, статус перекладу, останній перекладач (бо можна вичитувати тільки переклади, зроблені кимось іще) тощо.
Переклад подається з різними класами помічників. Кожен клас, що продовжує клас TranslationAid, потребує тільки впровадження одного методу під назвою getData
. Він має видавати інформацію у структурованому вигляді (вкладених масивів). Ці модулі можуть викликатись прямо з PHP або через WebAPI.
Як користуватись помічниками перекладу всередині MediaWiki
Простий приклад, як отримати документацію повідомлення, якщо така доступна.
$title = Title::newFromText( 'MediaWiki:Jan/de' );
$handle = new MessageHandle( $title );
$group = $handle->getGroup();
$context = RequestContext::newExtraneousContext( $title );
$aid = new DocumentationAid( $group, $handle, $context );
try {
$data = $aid->getData();
$docHtml = $aid['html'];
} catch ( TranslationHelperException $e ) {
return;
}
echo $docHtml . "\n";
Як використовувати API помічники перекладу
Як ми уже бачили вище, помічники перекладу можуть бути доступні через WebAPI, який використовує фреймворк MediaWiki WebAPI. Отримання помічників перекладу таке ж просте, як виконання HTTP GET з URL http://translatewiki.net/w/api.php?action=translationaids&title=MediaWiki%3AJan%2Fde. Воно надає різноманітні формати, але найпопулярніші — JSON та XML. Цей API не потребує автентифікації, але деякі помічники на зразок «inotherlanguages» використовують налаштування користувача для визначення необхідної мови. Щоб використовувати такий помічник, Вам треба спершу увійти в систему, як описано в документації MediaWiki WebAPI.
Видані дані повинні мати приблизно такий вигляд (показано в цікавому форматі json):
{
"helpers": {
"definition": {
"value": "Jan",
"language": "en"
},
"translation": {
"language": "de",
"fuzzy": false,
"value": "Jan."
},
"inotherlanguages": [
],
"documentation": {
"language": "en",
"value": "Abbreviation of January, the first month of the Gregorian calendar",
"html": "<p>Abbreviation of January, the first month of the Gregorian calendar\n<\/p>"
},
"mt": [
{
"target": "Jan",
"service": "Microsoft",
"source_language": "en",
"source": "Jan"
},
{
"target": "Jan",
"service": "Yandex",
"source_language": "en",
"source": "Jan"
}
],
"definitiondiff": {
"error": "No changes"
},
"ttmserver": [
{
"source": "Jan",
"target": "Jan.",
"context": "MediaWiki:Jan",
"location": "MediaWiki:Jan\/de",
"quality": 1,
"wiki": "mediawiki-bw_",
"service": "TTMServer",
"source_language": "en",
"local": true,
"uri": "https:\/\/translatewiki.net\/wiki\/MediaWiki:Jan\/de"
}
],
"support": {
"url": "\/\/translatewiki.net\/w\/i.php?title=Support&lqt_method=talkpage_new_thread&lqt_subject_field=About+%5B%5BMediaWiki%3AJan%2Fde%5D%5D"
}
}
Кожен запитаний помічник гарантовано має тут ключ (доки запит не з), але поки використовуються винятки у PHP, у JavaScript кожен помічник може мати визначений ключ «error» із повідомленням помилки у значенні. Приклад цього можна побачити вище з definitiondiff
. Це сигналізує про неможливість відображення різниці версій, бо не було змін до визначення з часу останнього перекладу.
Приклад JavaScript
Те ж саме і з JavaScript. За замовчуванням API відображає усі помічники, але Ви можете подати запит на конкретний якийсь через параметр prop
. У прикладі ми використали jsonp для роботи з обмеженням запитів на інші сайти. Майте на увазі, що Ви не можете виконати жодних писаних дій з jsonp, тому якщо Ви використовуєте цей API з JavaScript, Вам треба: мати проксі; запустити скрипт на тому ж хості; або завантажити маленький помічник (ще не впроваджений) з цільового сайту.
apiURL = 'https://translatewiki.net/w/api.php?callback=?';
queryParams = {
action: 'translationaids',
title: 'MediaWiki:Jan/de',
format: 'json'
};
$.getJSON( apiURL, queryParams )
.complete( function( data ) {
console.log( data );
} )
.fail( function () {
console.log( "Failed" );
} );
Принципи іменування і повернення значень
Кожен помічник перекладу має унікальний буквено-цифровий ідентифікатор. В ідентифікаторах варто уникати спеціальних символів, особливо тих, які не коректні для ідентифікаторів JavaScript: -
і *
.
Масив, що видається кожним помічником перекладу, залишається на розсуд розробника, але має відповідати деяким загальним рекомендаціям.
Якщо видається лише одне текстове значення, як ключ до поля має використовуватись value
. Мову треба вказувати у полі language
. Користувачі цих даних мають переконатись, що у HTML і будь-де ще текст нормально тегований відповідною мовою і спрямованістю (не надається тут). Якщо є HTML-вихід, він має бути доступним з ключем html
. Прикладами цього є документація повідомлень і різниці версій (дифи).
Різні види пропозицій перекладів, на зразок машинного перекладу і пам'яті перекладів, мають використовувати ці ключі, коли є потреба:
source
,source_language
іtarget
(цільова мова неявно збігається з мовою перекладу)server
: ідентифікатор використовуваної послугиquality
: значення в діапазоні [0,1], вище значення означає, що якість пропозицій дуже гарна.
**
для назви елемента. Для машинного перекладу і пам'яті перекладів це suggestion
. Це вимагає фреймворк MediaWiki WebAPI. Воно видиме у форматі XML, але у форматі JSON результатом на виході є просто список.
Список стандартних помічників
[field] Означає, що видане значення є списком. У PHP це означає, що масив з цифровими індексами + один з ключем **
; див. вище, для чого це потрібно.
Клас | Id | Поля | Примітки |
---|---|---|---|
MessageDefinitionAid | definition |
|
|
CurrentTranslationAid | translation |
|
|
InOtherLanguagesAid | inotherlanguages |
|
Залежить від налаштувань користувача |
DocumentationAid | documentation |
| |
MachineTranslationAid | mt |
|
Доступність залежить від підтримки мовних парі і доступності додаткових сервісів. |
UpdatedDefinitionAid | definitiondiff |
|
Відображення залежить від mediawiki.action.history.diff Resource Loader Module у MediaWiki. |
TTMServerAid | ttmserver |
| |
SupportAid | support |
|
Це веб-сторінка, де користувач може ставити запитання про це повідомлення. |
InsertablesAid | insertables |
|
Рядки неперекладабельного тексту, які можуть бути вставлені у переклад. Поля вказують, що відображати користувачеві і що вставлено до і після вибраного. |
Перекладачам (головна довідкова сторінка )
- Як перекладати
- Кращий досвід
- Статистика та звіти
- Забезпечення якості
- Стан груп повідомлень
- Офлайн переклад
- Глосарій
Адміністраторам перекладу
- Як підготувати сторінку до перекладу
- Адміністрування перекладу сторінок
- Переклад неструктурованих елементів
- Керування групами
- Переміщення сторінки, що перекладається
- Import translations via CSV
Сисадміни та розробники