我有一个组件和它的语言文件。其中一个表中的字段包含语言文件中的字符串,在客户端中,该字符串被替换为相应的值,但用户可以对其进行查询。显然,用户将使用他读取的字符串进行查询,而不是语言文件中相应的字符串,是否有内置的方法来获取语言文件常量,给定值和语言文件?
例如,我的语言文件如下:COM_MY_COMPONENT_FOO="bar"
在我的表中我有:
+-------+-----------------------+
| id | some_value |
+-------+-----------------------+
| 1 | COM_MY_COMPONENT_FOO |
+-------+-----------------------+
是否有任何方法从"foo"开始获得"COM_MY_COMPONENT_FOO"(考虑到我已经知道用户使用的语言文件)?即使我专门为"some_value"列创建一个单独的语言文件,读取整个语言文件并反转它的代价也可能太大。
它远非完美或优雅,但我找到了一个可行的解决方案,我将把它贴在这里,以供将来不幸需要它的人使用。
由于语言文件是简单的。ini文件,所以很容易在PHP中使用parse_ini_file读取它们作为关联数组,并且可以使用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;