Jump to content

帮助:扩展:翻译/翻译辅助工具

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

翻译辅助工具(或翻译助手)是在翻译时为翻译人员提供有用和必要信息的模块。不同的辅助工具可以提供翻译记忆库和机器翻译的建议、有关消息的文档,以及消息定义等基本内容 - 需要翻译的文本。

There is some overlap between the data provided by message collection and the aids, but the rule of thumb is that message collection only provides information that is absolutely needed to present the list of messages: definition, translation, status of translation, last translator (because one can only review translations made by someone else) etc.

Translate comes with many aid classes. Each class that extends the TranslationAid class only needs to implement one method called getData. It should return the information in structured format (nested arrays). These modules can be called either directly from PHP or via the 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

As already seen above, translation aids are available via a WebAPI, which is using the MediaWiki WebAPI framework. 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.

The returned data should look like this (shown in pretty json format):

{
	"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"
	}
}

Every requested aid is guaranteed to have a key here (until the request fails miserably), but while we use exceptions in the PHP side, in the JavaScript side each aid may have the key "error" set with the error message set as value. 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示例

Here is the same thing for 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" );
	} );

命名常规和返回值

Each translation aid has a unique string identifier. Identifiers should avoid special characters, especially those which are not valid in JavaScript identifiers, like - and *.

The array that is returned by each translation aid is up to the developer, but should follow some general recommendations.

If only one text value is returned, it should use value as the key of the field. 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.

Various kinds of translation suggestions like machine translation and translation memories should use these keys when they make sense:

  • source, source_language, target (target language is implicitly the same as the language of the translation)
  • server: identifier of the service used
  • quality: value in range [0,1], higher value means that the quality of the suggestions is very good.
When returning arrays, you must set the ** field to contain an element name. 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.

标准辅助工具清单

{{[$1]|field}} Means that the return value is a list. 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 - (boolean) If translation exists but needs review or updating.
InOtherLanguagesAid inotherlanguages
  • [suggestion]
    • language
    • value
取决于用户参数设置
DocumentationAid documentation
  • language
  • value - Unparsed wiki markup
  • html
MachineTranslationAid mt
  • [suggestion]
    • source
    • source_language
    • target
    • service
Availability depends on language pair support and availability of external services.
UpdatedDefinitionAid definitiondiff
  • value_old
  • value_new
  • revisionid_old
  • revisionid_new
  • language
  • html
Display depends on mediawiki.action.history.diff Resource Loader Module of MediaWiki.
TTMServerAid ttmserver
  • [suggestion]
    • source
    • source_language
    • target
    • service
    • quality
    • local - (boolean) Whether the suggestion is a message in the wiki queried.
    • uri - URL或其他资源位置指示符。
SupportAid support
  • url
这是一个用户可以在该网页上发布有关此消息的问题的网页。
InsertablesAid insertables
  • [insertable]
    • display
    • pre
    • post
可嵌入翻译的不可翻译文本的字符串。通过字段来用户显示的内容以及选择前后插入的内容。