言語ファイルの設定パッケージと、実用レベルで動作するデモプログラムを作成しまた。(完璧だとは言わないのは、ご愛嬌)
実用レベルにある多国語対応のCMSやフォーラムシステムであれば、翻訳を作成するために、直接設定ファイルをいじらせるなんてことはしません。そのシステムに初めから設定ページが組み込まれているか、もしくは拡張で出来るようにサポートされています。
何かを自分の言語に治したいと思った時、テキストファイルをもらって、「これでやってね」と言われるのは、とても不便なことです。大抵、キー値と対応する英語で、英語の部分を翻訳していくのですが、そのテキスト自体には何らかの構造やエスケープの仕組みがあり、翻訳者はそれをまず学ばなくてはなりません。余計な手間がかかります。
FuelPHPは言語ファイルを含めた設定ファイルで、多次元の配列でグループ化を表すというナイスなアイデアを使っています。ですが、これはプログラムスキルのある人には便利ですが、ない人には、かなり複雑な作業に思えることでしょう。しかも、これが直接PHPのコードであるというのも、マイナスな点です。
今個人的に作成しているプログラムで、他国語対応してもらうときに、その人をオーサリングシステムのグループで「翻訳家」というロールを割り当て、直接言語ファイルを変更してもらえるようにしたいと思っています。
またその前段階として、そのシステム自身に割りつけた日本語と英語の言語ファイルに入れている項目が、30を超える辺りから、メンテが煩雑な作業になって来ました。それで自分自身、つまり開発者として利用できるように、デモ兼サンプルではあるが、実用的な補助ツールを作成しました。
https://github.com/HiroKws/fuelphp_translator_package_for_1_1
コードはかなり複雑、かつ汚くなっています。まあ、NetBeansの整形を使っているため、思い通りに割り付けられない、気持ち悪さもあるのですけど。
サンプルの説明です。アプリのパスのlangディレクトリー化の構造に従って、編集ファイルを見つけるようになっています。つまり、lang下に言語のディレクトリー(en、jaなど)があり、その下に設定ファイルが存在している構成です。
まず、翻訳のベースとなるファイルを選んでください。次に翻訳する言語を選びます。翻訳ベースのファイルと、翻訳したい言語が同じ場合、そのファイルをそのまま編集します。
翻訳ベースファイルと、翻訳したい言語が異なっている場合、内容がマージされたものが表示されます。編集結果は、翻訳したい言語のファイルとして保存されます。
例えば、英語(en)下に、test1.php、test2.phpが存在し、日本語(ja)下にtest1.php test3.phpが存在しているとします。ベースが英語のtest1.php、翻訳言語が日本語の場合、両方に存在するtest1.phpの内容をマージしたものが、編集対象となります。
ベースが英語のtest2.php、翻訳対象が日本語のとき、日本語にはtest2.phpがまだ存在していませんので、編集する項目は英語のtest2.phpとなり、保存先は日本語のtest2.phpです。
また、英語には日本語にはあるtest3.phpがありません。そんな時はベースを日本語のtest3.phpにして、翻訳対象を英語を選び、編集、保存すれば、英語にもtest3.phpが作成されます。
新しい項目の作成と、不必要な項目の削除は組み込んでいません。それは翻訳する人の責任で行うものではないでしょうから。たぶん、システムの管理者か、開発者が行うべきです。実用的には、まずベース言語を決め、FuelPHPのconfig.php中で設定するフォールバック言語と合わせ、項目を追加する場合は、ベース言語のファイルに追加し、後は各国語担当者に任せる。削除する場合は、管理者が手動にせよ、自動的に行うにせよ、キー値を元にして検索し、削除する方法になるでしょう。
グループ化のための多次元配列には対応しています。FuelPHP自体、設定ファイルやこの言語ファイルで、多次元配列が使えるようになっており、それを指定するときはピリオドで配列の次元を示します。それに従い、このパッケージでもピリオドで配列の階層のキー値をつなげて表示しています。
逆に言えば、キー値にピリオドは利用できないということですね。まあ、キー値は原則アルファベットと空白だけで、構成すべきだと思いますが、実際は日本語だって利用できます。
パッケージの説明です。提供する機能は、指定されたファイルと編集対象言語から、編集用のテーブルを生成する関数、それと、内容を保存する関数の2つだけです。
テーブルだけ生成しているのは、エラー制御やページ遷移などを固定してしまうと、使用方法が限られてしまうためです。利用方法に合わせたエラーチェックや、ページ遷移ができなるなるからです。
生成されるテーブルはformの中でご利用ください。キー値をhiddenで隠し持っています。
| FuelPHP、パッケージのロード< 前 | 次 >PHP開発環境、NetBeansのほうがphpStormより良い理由 |
|---|
| < 前 | 次 > |
|---|