Open main menu

Help:Extension:Translate/Group configuration/ja

This page is a translated version of the page Help:Extension:Translate/Group configuration and the translation is 49% complete.

Other languages:
Deutsch • ‎English • ‎čeština • ‎नेपाली • ‎日本語

メッセージ群を翻訳拡張機能に追加する方法はいくつかあります。ここではメッセージの集合をメッセージ群と呼びます。通常はソフトウェアのモジュールとファイルに1対1で対応します (また対応は翻訳目的語ごとに1件。) メッセージ群に他のメッセージ群を含ませることも可能です。例えば特定のソフトウェア内のメッセージをすべてまとめたメッセージ群が作れます。あるいはまたMediaWiki の最重要なメッセージで必ず最初に翻訳するべきものなど、メッセージのサブセット限定でまとめる方法もあります。そのような高いレベルのメッセージ群はファイルとのマッピングに固有の形式がないものの、他のメッセージ群同様に他の翻訳ツールへの書き出しを Gettext 形式で実行できます。

翻訳者にとってメッセージ群は高いレベルの作業対象です。どの単一のメッセージを翻訳するか選ぶには、先にメッセージ群を決めるのが手順で、翻訳検索をした場合とは異なります。メッセージ群単位で固有の識別子が付き、統計の対象にできます。当然ながらメッセージ群は翻訳者が一度に取り掛かる最小の文の集合です。メッセージ単位で識別子を与えてあり、これを通常はkey (キー) と呼びます。キーは複数のメッセージ群で共有しても問題ありません。

標準のメッセージ群の設定形式

YAML 形式を使ったメッセージ群の追加が簡単です。$wgTranslateGroupFilesに追加する設定ファイルに名前空間を定義すればよいのです。詳細は設定ページをご参照ください。サンプルを示します。

wfAddNamespace( 1218, 'FUDforum' );
$wgTranslateGroupFiles[] = "$IP/messagegroups/FUDforum/FUDforum.yml";

ファイル自体に YAML 構文が使われ、ここでは構文の説明はしませんが習得は簡単で、サンプルとして既製のグループが利用できます。ただし字下げはタブキーではなく空きスペースを使用します。1ファイル内に複数のメッセージグループを定義でき、グループ定義単位の区切りは空行にダーシ3個(---)を記入する形で、標準的な YAML の文書区切り子です。

定義文は上位項目に分類します。BASIC、FILES、MANGLER、CHECKER、INSERTABLES、TAGS、AUTOLOAD、LANGUAGESに加え、特殊なTEMPLATEを使います。特殊なグループには、さらに上位項目を追加します。すべての上位項目を適用する必要はありません。

BASIC (基本)

この節ではグループの基本として一意の識別子や名称を扱います。 使用できるキー(*印は必須キーを示す):

キー 説明
namespace* Either namespace id, constant or string where the messages are stored. The namespace must be added beforehand. See the example above.
icon Icon for the message group. Can support any file that MediaWiki can handle and that is uploaded to MediaWiki. Also supports files from shared media repositories.
id* Unique id that identifies this message group.
label* Human readable name of this message group.
description Description of this message group. Full wiki syntax is used.
class* The type of this message group - usually FileBasedMessageGroup or AggregateMessageGroup.
meta Multiple uses. If there are identical message keys for different message groups (usually in the case of branch or subset message groups), only one group can be primary and the other groups should have meta with value of yes.
sourcelanguage Language code of the source language. Defaults to en (English).
codeBrowser Only used in GettextFFS. URL pattern of an online viewer for the repository file(s), where %FILE% and %LINE% will be replaced by the relevant file path and line – as stated in PO files comments for a message – to give translators an informative link within the translation aids for that message. Example: https://github.com/lonvia/waymarked-trails-site/blob/master/django/%FILE%#L%LINE%.

例:

BASIC:
  id: out-freecol
  label: FreeCol
  icon: wiki://Freecol.png
  description: "{{int:bw-desc-freecol}}"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup

FILES

この節ではメッセージファイルのグループ種別が FileBasedMessageGroup の場合のファイルシステムのレイアウトとメッセージファイルの書式を解説します。 使用できるキーは以下のとおり (必須のキーは * 印付き):

Key Description
class* Class which defines the format of message files. Examples: YamlFFS, JavaFFS, FlatPhpFFS, ....
codeMap List of language codes that differ from the ones used in MediaWiki. Use the MediaWiki language code code as key and the target language code as the value.
sourcePattern* Where to find message files. Path variables are supported.
targetPattern How the exported files are named relative to export directory. Path variables are supported.
definitionFile Use this to define the location of the definition file (with the English source messages) if it does not adhere to the sourcePattern. Path variables are supported.
FlatPhpFFS クラス固有のキー
header Custom file header. If not given, it defaults to <?php
GettextFFS クラス固有のキー
CtxtAsKey Special mode where ctxt is used as message key. Should not be used for normal Gettext files.
header カスタム化したファイルヘッダのコメント。
keyAlgorithm Allowed values: legacy and simple. Default: simple. Simple provides shorter message keys.
JavaFFS クラス固有のキー
header カスタム化したファイルヘッダのコメント。
keySeparator The character separating key and value. Default is =. Can also be :.
JsonFFS クラス固有のキー
nestingSeparator The character separating levels when nested objects are flattened intro one key string. By default flattening is not done. Example: { "top": { "nested": "content" } } is converted to (assuming / as separator) message with key top/nested and value content.
includeMetadata Whether to include the @metadata key with author information in the exported files. Defaults to true.
parseCLDRPlurals Whether to parse CLDR plural keywords. Defaults to false.
YamlFFS クラス固有のキー
codeAsRoot If set to 1, all messages are under a language code (instead of at the root).
nestingSeparator The character separating levels when nested objects are flattened intro one key string. Default value is .. Example: top: { nested: content } is converted to (assuming . as separator) message with key top.nested and value content.
parseCLDRPlurals Whether to parse CLDR plural keywords. Defaults to false.

The path variables are:

Variable Description
%CODE% Language code (affected by codeMap)
%MWROOT% Path to MediaWiki installation
%GROUPROOT% Defined by $wgTranslateGroupRoot.

例:

FILES:
  class: JavaFFS
  sourcePattern: %GROUPROOT%/commonist/messages_%CODE%.properties
  targetPattern: commonist/messages_%CODE%.properties

MANGLER

キー修飾は複数のグループ間でメッセージキーの衝突を避けるため、メッセージキーに修飾をつける方法のひとつです。

キー 説明
class* 使用する修飾。サンプル StringMatcher
StringMatcher クラス固有のキー
patterns* パターンの一覧。"*"をワインドカードに使用可能。
prefix* 固有のメッセージについて上記のパターンが適合する場合、メッセージキーにはこの接頭辞を付けて修飾します。

例:

MANGLER:
  class: StringMatcher
  patterns:
    - "*"

CHECKER

Checkers run checks on the translated messages. If they find problems, those translations are highlighted for translators.

キー 説明
class* The checker class to use.
checks* List of methods in the class given above.

例:

CHECKER:
  class: ShapadoMessageChecker
  checks:
    - ShapadoVariablesCheck

INSERTABLES

This section allows to define a class which suggests insertables. The classes can be autoloaded as described in the AUTOLOAD section.

INSERTABLES:
  class: FreeColInsertablesSuggester

TAGS

メッセージにタグを定義できます。タグはそれぞれ (キー修飾後)メッセージキーのリストを伴います。"*" (アスタリスク) を使用したワイルドカード指定ができます。サポートするタグは以下のとおりです。

Key Description
optional These messages are not shown by default, and they do not count as untranslated messages when calculating translation percentages.
ignored These messages are not shown at all.

例:

TAGS:
  optional:
    - lang_locale
    - lang_dir
  ignored:
    - charset

AUTOLOAD

This item takes list of class names with filenames as values. This way custom classes can be bundled easily with your custom message groups. The path should be relative to the location of the group configuration file itself.

例:

AUTOLOAD:
  ShapadoMessageChecker: Checker.php

TEMPLATE (テンプレート)

複数のよく似たメッセージグループを定義する場合は、便利なショートカットが使えます。重複を避けるには、1番目の定義の冒頭にこのキーを書きます。これに対応させて、上位のキーはどれでもサブキーとして使用でき。その他のグループはこれらの定義を既定値として使用することになります。もちろん、グループ単位でテンプレートの規定値を上書きすることができます。

例:

TEMPLATE:
  BASIC:
    namespace: NS_SHAPADO
    class: FileBasedMessageGroup
    description: "{{int:bw-desc-shapado}}"

  FILES:
    class: YamlFFS
    codeAsRoot: 1
    codeMap:
      be-tarask: be-TARASK

GROUPS (グループ、AggregateMessageGroup クラス対応)

このキーは、このメッセージグループに属するグループIDのリストにしか対応しません。

例:

GROUPS:
  - out-shapado-ads
  - out-shapado-announcements
  - out-shapado-answers
  - out-shapado-badges

Wildcards are supported. In this case the aggregate group will not recursively include itself even if it matches a pattern. Example:

GROUPS:
  - out-shapado-*

Wildcards can be problematic if you have nested aggregate groups, because some groups can be included multiple times: both directly and via the included aggregate groups.

LANGUAGES (言語)

グループで容認する言語を規定するため、このキーを利用してホワイトリストあるいはブラックリストを作成します。ブラックリストに入れた言語は翻訳できません。

LANGUAGES:
  whitelist:
    - en
  blacklist:
    - he
    - or

ホワイトリストはブラックリストのすべての値より優先されます。*に設定すると、すべての言語を容認します。設定はオプションです。

ご利用のウィキ固有のインターフェースメッセージをグループ化する

そのウィキに固有の、カスタム化したUIのメッセージグループの例として、地域化したサイドバーがあります。 以下のコードをご利用の LocalSetting.php に記入し、wikiname 部分を該当する名称に書き換えます。

$wgHooks['TranslatePostInitGroups'][] = function ( &$list, &$deps, &$autoload ) {
	$id = 'wiki-custom';
	$mg = new WikiMessageGroup( $id, 'wikiname-messages' );
	$mg->setLabel( 'Wikiname User Interface Messages' );
	$mg->setDescription( 'This group contains user interface messages used on Wikiname.' );
	$list[$id] = $mg;
	return true;
}

MediaWiki 拡張機能のショートカット

MediaWikiの単位のグループunits group for MediaWikiをご参照ください。