Jump to content

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

From mediawiki.org
This page is a translated version of the page Help:Extension:Translate/Translation aids and the translation is 44% complete.
Outdated translations are marked like this.

Помічники перекладу (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
  • 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
Рядки неперекладабельного тексту, які можуть бути вставлені у переклад. Поля вказують, що відображати користувачеві і що вставлено до і після вибраного.