我有一个包含其语言文件的组件。我们的一个表中的字段包含来自语言文件的字符串,在客户端中,字符串被替换为相应的值,但用户可以对其进行查询。显然,用户将使用他读取的字符串进行查询,而不是语言文件中的相应字符串,是否有内置的方法来获取语言文件常量,给定值和语言文件?
例如,我的语言文件为:
COM_MY_COMPONENT_FOO="bar"
在我的桌子上,我有:
+-------+-----------------------+
| id | some_value |
+-------+-----------------------+
| 1 | COM_MY_COMPONENT_FOO |
+-------+-----------------------+
有没有办法获得" COM_MY_COMPONENT_FOO"从" foo"开始(鉴于我已经知道用户使用的语言文件)?阅读整个语言文件并将其翻转可能成本太高,即使我专门为" some_value"创建了一个单独的语言文件。列。
答案 0 :(得分:0)
它远非完美或优雅,但我找到了一个可行的解决方案,我会在这里发布它,以备将来需要它的任何不幸的人。
由于语言文件是简单的.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;