添加语言常量到Joomla组件的JavaScript(add language constants

2019-08-31 15:36发布

我的组件包括一个Java脚本文件:

$doc->addScript("/components/com_cam/js/cam.js");

我有一个我想与语言常量,即添加几个客户端的消息

<?php echo JText::_('COM_CAM_SEND_LABEL'); ?>

很容易在前端的PHP代码像如default.php但对于内部的消息cam.js

比如我的jQuery验证:

        messages: {
            cam: {
                required: "Enter a label",
                minlength: jQuery.format("At least {0} characters required!"),
                maxlength: jQuery.format("Maximum {0} characters allowed!")
            }
        }

什么是我们的最佳做法?

Answer 1:

在的Joomla! 2.5(1.6,因为我相信)有JText::script()增加了对增加语言的按键的全球支持array()这样你的Javascript可以访问它们。

首先登场的,在你的PHP你可以调用JText::script('COM_MYCOMPONENT_MSG1'); 每串您需要翻译在你的JavaScript。

在你可以使用内置的Joomla.JText._('COM_MYCOMPONENT_MSG1')在JavaScript中进行检索。

当你到那里有一个很多字符串要转换的点,你会发现它容易,只需分析在运行时的JavaScript文件(高效内容十分重要,但对于后端管理的屏幕没有这么大的交易)。

/**
 * Parses a javascript file looking for JText keys and then loads them ready for use.
 *
 * @param   string  $jsFile  Path to the javascript file.
 *
 * @return bool
 */
public  static function loadJSLanguageKeys($jsFile)
{
    if (isset($jsFile))
    {
        $jsFile = JPATH_SITE . $jsFile;
    }
    else
    {
        return false;
    }

    if ($jsContents = file_get_contents($jsFile))
    {
        $languageKeys = array();
        preg_match_all('/Joomla\.JText\._\(\'(.*?)\'\)\)?/', $jsContents, $languageKeys);
        $languageKeys = $languageKeys[1];

        foreach ($languageKeys as $lkey)
        {
            JText::script($lkey);
        }
    }
}


Answer 2:

做一个辅助函数来建立验证信息并把它添加到head

像波纹管,只需编辑,以满足您的需求

$messages = '(function ($) {
    $.extend($.validator.messages, {
            cam: {
                required: "' . JText::_('COM_CAM_VALIDATION_REQUIRED') . '",
                minlength: jQuery.format("' . JText::_('COM_CAM_VALIDATION_MINIMUM') . '"),
                maxlength: jQuery.format("' . JText::_('COM_CAM_VALIDATION_MAXIMUM') . '")
            }
        });
}(jQuery));';

$doc = JFactory::getDocument();
$doc->addScriptDeclaration($messages);


文章来源: add language constants to Joomla component javascript