Help:Extension:Translate/翻訳支援
翻訳支援 (あるいは翻訳ヘルパーとも) は翻訳中に役立つ必要な情報を翻訳者に提供する、モジュール群のことを指します。翻訳支援には種類があり、翻訳メモリや機械翻訳の訳文、メッセージに関する説明文書、あるいはメッセージの定義 – 翻訳の必要がある文までお勧めします。
message collectionと翻訳支援が提供するデータには重複が見られますが、基本的にメッセージ収集機能にはメッセージの一覧を抽出するために欠かせない情報しか提供できません。それらはつまり定義、翻訳、翻訳状況、直前の翻訳者 (査読できるのは自分以外の人の訳文に限定されるため) 等に相当します。
翻訳にはたくさんの支援クラスが伴います。翻訳支援機能クラスを拡張するどのクラスも、唯一、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のフレームワークを使用します。翻訳支援の利用手順は簡単で、URL http://translatewiki.net/w/api.php?action=translationaids&title=MediaWiki%3AJan%2Fde の入手にHTTP GETを当てるのと同様です。書式は何種類かありますが、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側ではどの支援機能にもキー「エラー」とそれに伴う値としてエラーメッセージが設定してある場合が考えられます。上記でdefinitiondiff
を使うと、例を見ることができます。直前の翻訳に対して何も変更が加わっていないため、差分の表示は不可能と返してきます。
JavaScript の例
JavaScriptの例を示します。既定ではAPIはすべての翻訳支援を返しますが、prop
引数を用いると返すものを特定します。例ではjsonpを用いて、サイト横断の制限を回避しました。ただし要注意点は、jsonpを利用するとホワイトアクションは不可のため、JavaScriptでこのAPIを使用する時のコツは以下のとおりです。proxyを利用するか、同じホスト上でスクリプトを走らせるか、別途、軽いヘルパー (未実装) を対象サイトから読み込みます。
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
andtarget
(target language is implicitly the same as the language of the translation)
server
: 使用するサービスの識別子quality
: [0,1]値を用い、値が大きいほど指示された例が適合している。
**
フィールドに必ず要素名を入力し、機械翻訳および翻訳メモリに対してはsuggestion
と記入します。これはMediaWiki WebAPIフレームワークが義務づける条件です。表示はXML形式ですが、JSON形式では単なるリストしか出力しません。標準の支援の一覧
[フィールド名] は、戻り値がリストであることを意味しています。PHP では、添字が整数の配列にキー **
が追加されたものです。これが必要な理由は前述の通りです。
クラス | ID | フィールド | 注記 |
---|---|---|---|
MessageDefinitionAid | definition |
|
|
CurrentTranslationAid | translation |
|
|
InOtherLanguagesAid | inotherlanguages |
|
利用者の個人設定に依存 |
DocumentationAid | documentation |
| |
MachineTranslationAid | mt |
|
利用できるかどうかは、言語の対に対応しているかどうか、および外部サービスを利用できるかどうか、に依存します。 |
UpdatedDefinitionAid | definitiondiff |
|
表示は、MediaWiki の mediawiki.action.history.diff リソース ローダー モジュールに依存します。 |
TTMServerAid | ttmserver |
| |
SupportAid | support |
|
これは、このメッセージについて利用者が質問を投稿できるウェブページです。 |
InsertablesAid | insertables |
|
翻訳不可能な文字列を翻訳内に挿入することができます。フィールドは利用者に表示する内容、選択の前後それぞれに挿入する内容を示します。 |
Extension:Translate の説明文書
翻訳者 (メインヘルプページ )
翻訳管理者
システム管理者と開発者