【问题标题】:How does one load a language file for a 3rd party Joomla extension?如何为第 3 方 Joomla 扩展加载语言文件?
【发布时间】:2019-12-19 21:03:33
【问题描述】:

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

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

【问题讨论】:

    标签: joomla


    【解决方案1】:

    好的,就像用模块的完整路径替换 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
    

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

    【讨论】:

      【解决方案2】:

      也许版本或文件位置不同,但在 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);
      

      【讨论】:

        【解决方案3】:
        $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 需要由额外的加载函数加载。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-10
          • 1970-01-01
          • 2013-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-09
          • 1970-01-01
          相关资源
          最近更新 更多