如何为第三方Joomla扩展加载语言文件?

6

在管理应用程序中加载语言文件的正常方式如下:

$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的模块中加载语言文件。我应该怎么做?

3个回答

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
也许是版本或文件位置的差异,但在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);

1
$language = JFactory::getLanguage();
$boolan = $language->load('filename', JPATH_SITE);

我用版本3.9.14测试过,因为所有语言都在路径语言中,所以它可以正常工作。
文件名是com_name、mod_name、lib_nametpl_name,带有文件名的第一部分的语言标签。语言标签将由load函数添加。
因此,我的组件使用两个语言文件。com_namecom_name_specialcom_name应该由系统加载,但我的com_name_special需要通过额外的load函数加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接