加载位于管理员应用中的语言文件的常规方法如下:
$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR);
并从网站应用加载语言文件:
$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_SITE);
这些方法分别从/administrator/language
和/language
加载语言文件。
目前,我需要从一个模块加载一个语言文件,该模块在/modules/mod_foo/language
找到它的语言文件。我该怎么做?
答案 0 :(得分:5)
好的,就像将JPATH_SITE替换为模块的完整路径一样简单:
$language = JFactory::getLanguage();
$language->load('mod_foo', JPATH_SITE.'/modules/mod_foo');
这当然假定您要加载的语言文件位于:
/modules/mod_foo/language/xx-XX/xx-XX.mod_foo.ini
在发布问题之前我曾经尝试过这个问题,但由于愚蠢的错误而无法正常工作。
答案 1 :(得分:0)
也许版本或文件位置不同,但在Joomla3.8.x中,Mark Simpson的回答对我来说并不适用于组件。以下做了:
$lang = JFactory::getLanguage();
$extension = 'com_example';
$base_dir = JPATH_SITE;
$language_tag = 'en-GB';
$reload = true;
$lang->load($'com_example', $base_dir, $language_tag, $reload);
答案 2 :(得分:0)
$language = JFactory::getLanguage();
$boolan = $language->load('filename', JPATH_SITE);
我使用3.9.14版进行了测试,它可以工作,因为所有语言都在路径语言中。
文件名是com_name, mod_name, lib_name
或tpl_name
,文件名的第一部分带有语言标签。语言标签将通过加载功能添加。
所以我的组件使用两种语言文件。 com_name
和com_name_special
。
com_name
应该由系统加载,但是我的com_name_special
需要由额外的加载功能加载。