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


forcibly get keyword from specific language in JText

实际上,我正在寻找一个与joomla中完全相同的问题的答案-强制从特定语言中获取关键字,只是他的解决方案对我不起作用

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

$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)必须是德语(de-DE

你知道如何做到这一点吗?

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

在标题"在任何地方加载任何语言文件"的末尾,显示了一种加载任意前端和后端语言文件的方法。重要的信息是

未翻译的字符串将以英语显示,而不是作为未翻译的密钥

通过这种方式,您可以为发送给客户的电子邮件加载前端翻译字符串,为管理员加载德语后端语言文件。只要你不翻译德语后端语言文件,并让en&ru为空,您应该始终获得管理电子邮件的德语字符串。请记住,您可能需要为后端和前端语言文件使用不同的语言密钥才能正常工作。

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

后端密钥示例:
对于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);