Joomla语言文件反向搜索


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"列创建一个单独的语言文件,读取整个语言文件并反转它的代价也可能太大。

它远非完美或优雅,但我找到了一个可行的解决方案,我将把它贴在这里,以供将来不幸需要它的人使用。

由于语言文件是简单的。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;