まず第一にgettext
、良い方法ですので、最初は簡単に聞こえない場合は却下しないでください。ただし、知っておくと便利な他のオプションもあります。それを説明する前に、まずあなたの提案を見てみましょう。
これarray
を行うあなたの方法では、かなり簡単な解決策があります。良い点は、翻訳をデータストレージに保存し、それを配列としてPHPスクリプトに読み込むことができるということです。ただし、配列をPHPファイルに静的に保存する場合は、編集する必要がありますa)PHPプログラマまたはPHP構文に精通した経験豊富なユーザー、ファイルを編集するだけb)4つまたは5つの異なる言語ファイル間で同期する非常に迷惑で、エラーが発生しやすくなります。
ここで考慮する必要があるのは、後で言語ファイルに新しい要素を追加する方法です。翻訳者に任せることができますか、PHPプログラマーが必要ですか?
あなたのvariable
やり方は実際的ではありません。どうして?少なくともアプリケーションにはいくつかの機能があると思いますか?次に、関数を呼び出すときにこれらの変数をすべて渡すか、必要に応じて渡す必要がありglobal
ます。このような変数が10個以上あると思われる場合は、これを行うことを強くお勧めします。名前の競合もある可能性があります-同じ名前の別の変数の値をオーバーライドできる可能性がありますが、アンダースコアのような単純な接頭辞を追加することで解決できます$_welcome
。たとえば、とにかく、私があなただったら、私もそれについて考えません。しないでください。
それを行う良い方法の1つは、定数を接頭辞で定義することです。だから例えばあなたにはen.lang.php
あなたのようなものがdefine( 'LABEL_WELCOME', 'Welcome' );
あり、あなたにはno.lang.php
あなたがいるでしょうdefine ( 'LABEL_WELCOME', 'Velkommen' );
。変数の代わりに定数を使用することの良い点は、スクリプトで常に使用できることです。したがって、それらを注入したり、グローバル化したりする必要はありません。配列と変数の両方と比較して、PHPがそれらを処理する方法のために、それらはより高速です-それらはメモリのより少ないスペースを占有します。欠点は、それらをトランスレーターに渡すことができないことです。したがって、やはりPHP開発者が必要です。また、ファイル間で同期するのも少し面倒です。
他のオプションは、翻訳を取得するための関数またはクラス/メソッドを持つことです。効率は低下しますが、そのような微最適化はまったく必要ないと思いますが、追加の利点は、翻訳を取得しながらカスタムロジックを適用できることです。たとえば、いつかあなたの最愛のプロジェクトマネージャーが、これらのテキストをすべて大文字に変換できるかどうかを尋ねてきたとします。それを拒否することはできません。そのため、すべての翻訳にパターンを適用/変更する必要があるときに、間に機能を持たせることは大いに役立ちます。
まとめるには:
翻訳者がそれをどのように使用できるかを考え、彼らのために実用的なKISSソリューションを考え出してください。
異なる言語間で同期を維持する方法について考えてください。
同じ翻訳が必要かどうかを考えてみましょう、モバイルアプリの場合。クロスプラットフォームソリューションは時間を節約できます。JSONや通常のデータベースを却下しないでください。
翻訳を取得するときに、ロジックを適用/変更する方法を考えてください。
パフォーマンスを忘れました。99.9%の場合、定数対変数対関数呼び出しのようなマイクロ最適化を行うことができません。開発者/スタッフとしてのあなたの時間は、プロセッサー時間よりも高価だと思います。
アップデート#1
私の良さ、私は1年前の質問に対する答えを投稿します。誰もここで何も言っていないのはなぜですか?これらの場合にはアラートが必要です。
アップデート#2
右側には、1年前の質問だと書かれています。しかし、それは2年前に尋ねられました!ここではすべてが誤解を招きます!