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. 我该怎么做?

4

3 回答 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

在发布问题之前我已经尝试过这个,但由于一个愚蠢的错字它没有工作。

于 2013-07-02T07:28:52.520 回答
1
$language = JFactory::getLanguage();
$boolan = $language->load('filename', JPATH_SITE);

我用 3.9.14 版本对其进行了测试,它可以工作,因为所有语言都在路径语言中。

文件名是com_name, mod_name, lib_name, 或tpl_name在文件名的第一部分带有语言标签。语言标签将由加载函数添加。

所以我的组件使用两个语言文件。com_namecom_name_specialcom_name应该由系统加载,但我com_name_special需要由额外的加载功能加载。

于 2019-12-19T11:02:10.023 回答
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);
于 2018-05-16T18:28:43.260 回答