Довідка:Розширення:Переклад/Помічники перекладу

This page is a translated version of the page Help:Extension:Translate/Translation aids and the translation is 100% complete.

Помічники перекладу (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
  • language
  • value
CurrentTranslationAid translation
  • language
  • value
  • fuzzy - (двійкове) Якщо переклад існує, але потребує вичитки або оновлення.
InOtherLanguagesAid inotherlanguages
  • [suggestion]
    • language
    • value
Залежить від налаштувань користувача
DocumentationAid documentation
  • language
  • value - Не аналізована вікірозмітка
  • html
MachineTranslationAid mt
  • [suggestion]
    • source
    • source_language
    • target
    • service
Доступність залежить від підтримки мовних парі і доступності додаткових сервісів.
UpdatedDefinitionAid definitiondiff
  • value_old
  • value_new
  • revisionid_old
  • revisionid_new
  • language
  • html
Відображення залежить від mediawiki.action.history.diff Resource Loader Module у MediaWiki.
TTMServerAid ttmserver
  • [suggestion]
    • source
    • source_language
    • target
    • service
    • quality
    • local - (двійкове) Чи підказка є повідомленням з вікі, де робиться запит.
    • uri - URL чи інший індикатор розміщення джерела.
SupportAid support
  • url
Це веб-сторінка, де користувач може ставити запитання про це повідомлення.
InsertablesAid insertables
  • [insertable]
    • display
    • pre
    • post
Рядки неперекладабельного тексту, які можуть бути вставлені у переклад. Поля вказують, що відображати користувачеві і що вставлено до і після вибраного.