joomla - 强制从JText中的特定语言中获取关键字

时间:2014-11-06 15:23:58

标签: php joomla

实际上我正在寻找与joomla - forcibly get keyword from specific language完全相同的问题的答案,除了他的解决方案对我不起作用。在这里,我尽可能地解释一切:

我需要以一种我给它想要翻译的语言的方式使用JText。已经尝试在调用JText函数之前设置/加载该语言,但尽管语言加载的结果是成功的,但它总是返回默认语言的关键字。我写了一个组件,通过电子邮件将客户请求发送给管理员。客户获得一份副本(使用他正在访问的网站的正确语言=这是有效的)。虽然管理员应该获得相同的bodytext的副本,但使用强制语言:

$body = '<td><b>'.JText::_(TPL_FORM_TELEFON).'</b></td><td>'.$_POST['tel'].'</td></tr>'.

因此基本上JText::_(TPL_FORM_TELEFON)在发送给客户的复制电子邮件中en-GBru-RU(取决于他正在访问的语言),但是对于管理员JText::_(TPL_FORM_TELEFON) HAS用德语(de-DE

任何想法如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

有一种方法可以做到这一点。在Joomla中找到这篇文章!文档:https://docs.joomla.org/Specification_of_language_files

最后在“加载任何语言文件,任何地方”标题下,有一种方法可以加载任意前端和后端语言文件。重要信息是

  

未翻译的字符串将以英文显示,而不是以未翻译的字符串显示

这样,您可以为发送给客户的电子邮件加载前端翻译的字符串,对于管理员,您可以加载德语后端语言文件。只要您不翻译德语后端语言文件并让en&amp; ru empty,你应该总是得到管理员电子邮件的德语字符串。请记住,您可能需要为后端和前端语言文件使用不同的语言键才能使其正常工作。

示例前端键:
de-DE:TPL-FROM-TELEFON="Telefon"
对于en-GB:TPL-FROM-TELEFON="Phone"

示例后端密钥:
de-DE:TPL-FROM-TELEFON-ADMIN="Telefon"
对于en-GB:TPL-FROM-TELEFON-ADMIN =完全不要包含这个密钥!!!

最后你需要加载像Joomla里面解释的语言文件!文档:

您可以对后端语言文件使用类似的内容:

$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR, 'en-GB', true);
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR, null, true);

使用相同的技巧加载前端语言文件:

$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_SITE, 'en-GB', true);
$language->load('com_yourcomponentname', JPATH_SITE, null, true);