プラグインを多言語対応にする方法 Piwikのプラットフォームの紹介
それではブログシリーズの新しい記事、Piwik プラットフォームの機能を紹介します(以前の記事はテストデータを生成する方法)。今回はプラグインを多言語対応にする方法を学びます。
プラグインユーザーは、彼らの言語でプラグインを使用し、翻訳することが出来ることに非常に感謝するでしょう!
はじめに
このシリーズでは、すでに開発環境を設定していることを前提としています。まだの場合は、Piwik の開発者サイトにアクセスし、セットアップチュートリアルを探してください。
翻訳の管理
Piwikは50以上の言語が利用可能で、多くの翻訳が付属されています。コア自体は、「ビジター」と「ヘルプ」のような言葉のためにいくつかの基本的な翻訳を提供し、ディレクトリ/lang
に保存されています。さらに、各プラグインは、このプラグインで使用される文言のために独自の翻訳を提供することができ、/plugins/*/lang
に配置されています。これらのディレクトリでは、言語ごとに1つのJSONファイルを見つけることができます。各言語ファイルには、グループに属するトークンの順に構成されています。
{ "MyPlugin":{ "BlogPost": "Blog post", "MyToken": "My translation", "InteractionRate": "Interaction Rate" } }
この場合、グループでは、通常「MyPlugin」とプラグインの名前を表します。このグループ内では、すべてのトークンが左側に一覧表示され、右側が関連の翻訳になります。
翻訳キーの構築
設定方法はaddSetting()
を呼び出して、UserSettingのインスタンスを渡したり、オブジェクトをSystemSettingで設定クラスのinit()
の方法で追加します。設定を作成する方法は次の章で説明します。
翻訳キーの構築
実際に翻訳した単語や文を後でみられるようにする為、対応する翻訳キーを知っている必要があります。このキーは、グループとアンダースコアで区切られたトークンを組み合わせることにより構築されています。例えば、「ブログの記事」の翻訳を取得するのに MyPlugin_BlogPost
キーを使用できます。新しいキーを定義するには、”MyPlugin”グループに新しいエントリを追加するだけです。
デフォルトの翻訳を提供する
翻訳が見つからない場合は、英語の翻訳がデフォルトとして使用されます。したがって、常にファイル en.json
(つまり /plugins/MyPlugin/lang/en.json
)内のすべてのキーのために英語でのデフォルトの翻訳を提供する必要があります。
他の言語の翻訳を追加する
これは、プラグインの lang サブディレクトリに新しいファイルを作成するだけです。ファイル名は拡張子.json
によって完成した2文字のISO 639-1言語コードで構成されています。つまりドイツ語の翻訳は de.json
という名前のファイルに入り、フランス語は fr.json
という名前のファイルに入ります。使用可能な言語のリストは /lang を参照してください。
翻訳の再利用
Piwikは、前述したようにとても多くの翻訳が付属しています。それらは再利用できますが、翻訳キーが削除されたり、将来的に名前を変更される可能性があることを認識しておく必要があります。さらに、翻訳キーが最近のバージョンに追加され、Piwikの古いバージョンにおいて利用ができない可能性があります。現在はこのような変更はアナウンスしておりません。ですが翻訳キーの99%は変わらないため、通常は既存の翻訳を再利用する事をお勧めしています。あなたや会社が翻訳を提供出来ない場合は特にです。任意の既存の翻訳を検索するには、キー Piwik インストールで翻訳検索 => の設定に移動します。開発モードが有効になっている場合、メニュー項目のみ表示されます。
PHPの翻訳
PHPで任意のテキストを翻訳するために Piwik::translate()関数を使用してください。既存の翻訳キーを渡すと現在のユーザーの言語で翻訳されたテキストを取得できます。現在の言語のどれもが存在しない場合、英語の翻訳が返されます。
$translatedText = Piwik::translate('MyPlugin_BlogPost');
Twigテンプレートでの翻訳
Twigテンプレートのテキストを翻訳するためには、翻訳フィルタを使用してください。
{{ 'MyPlugin_BlogPost'|translate }}
Piwikに翻訳をして貢献
Piwikの翻訳に参加出来る事をご存知ですか?既存の翻訳を改善したり、欠落している内容を翻訳したり、新しい言語を追加したい場合には、Piwikの翻訳でアカウントにサインアップをしてください。翻訳には開発の知識は必要ありません。
高度な機能
翻訳を行う事でより便利なことがあります。例えば、%s
のようなプレースホルダを使用することが出来、同様にJavaScriptでも翻訳を使用することができます。
これらトピックスの詳細については、国際化ガイドをチェックしてください。現在、このガイドでは、翻訳のみについて説明をしていますが、数字のフォーマットや将来的に通貨を扱うようなより多くのトピックをカバーしていきます。
おめでとうございます、これでプラグインを多言語対応にする方法を学べました!
APIまたはDeveloper Zoneにおける手引きに関してのフィードバックはお気軽にお寄せ下さい。
Thomas Steur