Help:Extension:Translate/File format support/ja

略語 FFS は file format support を指します. 翻訳拡張機能を使い、さまざまなファイル形式の翻訳済メッセージを読み書きするクラスの群を、一般に FFS と呼びます.

地域化技術の輪はソフトウェア開発者の手で何度も革新され、結果として翻訳対象のソフトウェアのメッセージにいくつもの保存形式が存在します. 主に2グループに分類できます.


 * キーベース形式. メッセージ単位でキーを与え、だいたいは意味のある文字列を当ててあります. 多言語への翻訳は値とキーのマッピングで示します.   DTD、JSON、MediaWiki 独自の形式 (根本的には PHP 配列array) など、大多数の形式はこのグループに分類されます.
 * Gettext 型. プログラムの翻訳元は通常は英語で、英語自体が他言語の翻訳結果へのキーとなります. その実現には異なる形式でメッセージを保存するため、変動型の固有の偽キーを生成する必要があります.

FFS クラス入門
例外はいくつかありますが、FFS クラスはFFSインターフェースから派生し、すべてのクラスが実装するべき基本的なメソッドを定義します.


 * : ファイル名の Setter.
 * : ファイル名の Getter.
 * : ファイルからメッセージを読み取って構文解析する.
 * : ファイルと同じ形式の文字列変数からメッセージを読み取り、AUTHORS および MESSAGES の配列として返す. ここでファイルのテキストを実際に解析する.
 * : ファイルにメッセージを記述.
 * : Write the messages to a string variable that has the same format as the file. This is where the careful construction of the resulting messages file is supposed to happen.

MediaWiki 翻訳
MediaWiki 翻訳を保存するクラスは、現状では FFS インターフェース導関数ではなく独立のクラスで処理をします. configuration instructions もあります. 新規に FFS 型のクラスを開発中です.

SimpleFFS クラス
SimpleFFS クラスとは他の FFS クラス全ての祖先に当たり、また FFS クラスの記述の仕方を簡単に示しています. 単純なキーに基づく形式を実行します.


 * ファイルごとに"\0\0\0\0"を境に2つの部分に別れます.
 * 片方には翻訳者名を "\0" で区切り記述します.
 * もう一方には "key=value" 形式で翻訳をやはり "\0" で区切って記述します.

SimpleFFS は意図的に単純化してあり、発生しがちなバグや問題を具体的に示します. 例として等号「=」はエスケープされず、キーにも値にも使いません. ただ、それでは現実社会のプログラムには不都合もあります. SimpleFFS には便利なユーティリティの方法も実行します.


 * : ファイルが存在するかテスト.
 * : Implements internals of file format writing, apart from the more generic writeIntoVariable.
 * : 特製のブラックリストを用いて、ファイルから特定の執筆者を抽出. ボット、開発者、翻訳管理者などの利用者名の抽出に有効.
 * : Fix all line endings to Unix-style.

FFS クラスを新規に記述する
All the above SimpleFFS methods can be overridden. Most implementations, however, only need to implement  and.

General tips when writing new classes:


 * Avoid executing executable file formats. Parse them.
 * メッセージキーの修飾と復元を必ず実行します.
 * Do not assume message keys don't include problematic characters. They will.
 * The output is usually expected to be pretty and readable. Some people like to poke in them manually.
 * Most formats don't support fuzzy markers, some add them as comments on export only and ignore them on import.

Supported file formats
既存の FFS クラスの一覧:


 * AndroidXml – for use in Android apps
 * AppleFFS – for iOS/Mac OS X Localizable.strings
 * Dtd – for DTD-based projects, like Okawix and Mozilla.
 * FlatPhpFFS – for future use in MediaWiki
 * Gettext – for Gettext-based projects
 * Ini – for INI-based projects
 * JavaScript – for all JavaScript formatted files
 * Java properties – for *.properties files, used in some Java and JavaScript projects, often along with Dtd
 * Json – used in jquery.i18n based projects, such as the portable Universal Language Selector library
 * Yaml – used in Waymarked Trails
 * Ruby (Yaml) – used in OpenStreetMap and Shapado
 * AMD i18n bundle

Examples of Translate exports in those formats are available at translatewiki.net.



正しいタイトル処理はメッセージキーを修飾して確認
MediaWiki を基盤にする翻訳拡張機能は全てのメッセージを MediaWiki ページとして保存するため、キーには有効な MediaWiki ページ名を使う必要があります. キー修飾 (mangling ) はキー名をエスケープする手法がQuoted-printable エンコードに似ており、多少の改変をした後でメッセージをウィキページとして保存します. メッセージはキー復元を処理してから、ファイルに書き戻します.

FFS クラスでキー修飾のルーチンを上書きする場合は、往復とも性格に処理するか確認し – キーは MediaWiki への書き込み前に修飾し、元に戻してからファイルに訳文を書き戻す必要があります.

修飾を実行するのは クラスです.

FFS クラスをテストする
新しい FFS クラスを作成するたび、テスト用ディレクトリ内に対応するテスト用ファイルを作成してください. 重要なテストの要素は次の通りです.


 * 形式のパーシング. 基本的に 関数から AUTHORS と MESSAGES に対する正しいキーと値が返ってくるか、テストします.
 * Roundtrip: キーとメッセージの記述が正しく読み書きできるかどうかテストします.

例えば既存のテスト用ルーチンとして JavaFFSTest を使ってください.