2016-09-20 84 views
0

我有一个组件与其语言文件。我们的表格中的一个字段包含来自语言文件的字符串,而在客户端中,字符串被替换为相应的值,但用户可以对其进行查询。显然,用户将使用他读取的字符串进行查询,而不是语言文件中的对应字符串,是否有一种内置的方法来获取语言文件的常量,给定值和语言文件?Joomla语言文件反向搜索

举个例子,我的语言文件读取:

COM_MY_COMPONENT_FOO="bar" 

而且在我的表,我有:

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

有没有什么办法让“COM_MY_COMPONENT_FOO”,从“富”开始(给定我已经知道用户使用的语言文件)?即使我为“some_value”列创建了一个分离的语言文件,读取整个语言文件并将其翻转也可能代价太高。

回答

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;