Довідка:Розширення:Переклад/Помічники перекладу
Помічники перекладу (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. Getting translation aids is as simple as doing HTTP GET for the URL http://translatewiki.net/w/api.php?action=translationaids&title=MediaWiki%3AJan%2Fde . It provides various different formats, but JSON and XML are the most popular ones. This API does not need authentication, but some translation aids like "inotherlanguages" uses user preferences to determine which languages to use. To use that aid you should log in first, as described in the MediaWiki WebAPI documentation.
Видані дані повинні мати приблизно такий вигляд (показано в цікавому форматі 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
. Це сигналізує про неможливість відображення різниці версій, бо не було змін до визначення з часу останнього перекладу.
You can see an example of this above with definitiondiff
.
It signals that it cannot display a diff, because there have been no changes to the definition since last translation.
Приклад JavaScript
Те ж саме і з JavaScript. За замовчуванням API відображає усі помічники, але Ви можете подати запит на конкретний якийсь через параметр prop
. У прикладі ми використали jsonp для роботи з обмеженням запитів на інші сайти. Майте на увазі, що Ви не можете виконати жодних писаних дій з jsonp, тому якщо Ви використовуєте цей API з JavaScript, Вам треба: мати проксі; запустити скрипт на тому ж хості; або завантажити маленький помічник (ще не впроваджений) з цільового сайту.
By default the API returns all aids, but you can request specific ones with the prop
param.
In the example we are using jsonp to work around cross site request limitations.
Be aware that you cannot execute any write actions with jsonp, so if you are using this API from JavaScript you will need: to have a proxy; to run the script on the same host; or to load a little helper (not yet implemented) from the target site.
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: -
і *
.
Identifiers should avoid special characters, especially those which are not valid in JavaScript identifiers, like -
and *
.
Масив, що видається кожним помічником перекладу, залишається на розсуд розробника, але має відповідати деяким загальним рекомендаціям.
Якщо видається лише одне текстове значення, як ключ до поля має використовуватись value
. Мову треба вказувати у полі language
. Користувачі цих даних мають переконатись, що у HTML і будь-де ще текст нормально тегований відповідною мовою і спрямованістю (не надається тут). Якщо є HTML-вихід, він має бути доступним з ключем html
. Прикладами цього є документація повідомлень і різниці версій (дифи).
Language should be provided in field language
.
Users of this data should ensure that in HTML and elsewhere the text is tagged properly with the provided language and directionality (not provided here).
If there is HTML output, it should be available with key html
.
Examples of this are message documentation and diffs.
Різні види пропозицій перекладів, на зразок машинного перекладу і пам'яті перекладів, мають використовувати ці ключі, коли є потреба:
source
,source_language
іtarget
(цільова мова неявно збігається з мовою перекладу)
server
: ідентифікатор використовуваної послуги
quality
: значення в діапазоні [0,1], вище значення означає, що якість пропозицій дуже гарна.
**
для назви елемента. Для машинного перекладу і пам'яті перекладів це suggestion
. Це вимагає фреймворк MediaWiki WebAPI. Воно видиме у форматі XML, але у форматі JSON результатом на виході є просто список. For machine translation and translation memory this is suggestion
. This is mandated by the MediaWiki WebAPI framework. It is visible in the XML format, but in JSON format the output is just a list.
Список стандартних помічників
[field] Означає, що видане значення є списком. У PHP це означає, що масив з цифровими індексами + один з ключем **
; див. вище, для чого це потрібно.
In PHP that means array with numerical indexes + one with key **
; see above why this is needed.
Клас | 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
- Working with message bundles
Сисадміни та розробники