2016-09-20 4 views
0

言語ファイルを持つコンポーネントがあります。テーブルの1つのフィールドには、言語ファイルの文字列が含まれています。クライアントでは、文字列は対応する値で置き換えられますが、ユーザーはその文字列を照会できます。明らかに、ユーザーは、言語ファイル内の対応する文字列ではなく、読み込んだ文字列を使用して照会します。値と言語ファイルを指定すると、言語ファイルを一定にする組み込みの方法がありますか?例として、私の言語ファイルがJoomla language file reverse search

を読み取ります

COM_MY_COMPONENT_FOO="bar" 

そして、私のテーブルで私が持っている:

+-------+-----------------------+ 
| id |  some_value  | 
+-------+-----------------------+ 
| 1 | COM_MY_COMPONENT_FOO | 
+-------+-----------------------+ 

を "foo" というから始まる "COM_MY_COMPONENT_FOO" を取得する方法はあります(与えられましたユーザーが使用している言語ファイルは既に知っていますか?) 「some_value」列のために特別な言語ファイルを作成したとしても、言語ファイル全体を読み込み、逆にするのはコストがかかるかもしれません。

答えて

0

これは完璧でエレガントなものではありませんが、私は実用的な解決策を見つけましたが、将来これを必要とするほど不運な人にはここで投稿します。

言語ファイルは単純な.iniファイルなので、parse_ini_fileでPHPの連想配列として読みやすく、連想配列を逆にすることはarray_flipで行うことができます。 issetという簡単なコントロールを追加すると、文字列が言語ファイルで定義されていない場合、JTextの動作を複製できます。

$reverselang = array_flip(parse_ini_file($path_to_lang_file)); 
if(isset($reverselang[$my_string]){ 
     return $reverselang[$my_string]; 
} 
return $my_string;