Help:Extension:Translate/Translation aids/uk
Помічники перекладу (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 |
|
Рядки неперекладабельного тексту, які можуть бути вставлені у переклад. Поля вказують, що відображати користувачеві і що вставлено до і після вибраного. |
<translate> Translators</translate> (<translate> main help page</translate> )
- <translate> How to translate</translate>
- <translate> Best practices</translate>
- <translate> Statistics and reporting</translate>
- <translate> Quality assurance</translate>
- <translate> Message group states</translate>
- <translate> Offline translation</translate>
- <translate> Glossary</translate>
<translate> Translation administrators</translate>
- <translate> How to prepare a page for translation</translate>
- <translate> Page translation administration</translate>
- <translate> Unstructured element translation</translate>
- <translate> Group management</translate>
- <translate> Move translatable page</translate>
- <translate> Import translations via CSV</translate>
- <translate> Working with message bundles</translate>
<translate> Sysadmins and developers</translate>
- <translate> Installation</translate>
- <translate> Configuration</translate>
- <translate> Getting started with development</translate>
- <translate> Developer guide</translate>
- <translate> Extending Translate</translate>
- <translate> Validators</translate>
- <translate> Insertables</translate>
- <translate> Group configuration</translate>
- <translate> Group configuration example</translate>
- <translate> Translation memories</translate>
- <translate> Translation aids</translate>
- <translate> Enabling message bundles</translate>
- <translate> PHP hooks</translate>