向Joomla组件javascript添加语言常量

向Joomla组件javascript添加语言常量,joomla,joomla2.5,Joomla,Joomla2.5,我的组件包括一个java脚本文件: $doc->addScript("/components/com_cam/js/cam.js"); 我有几个客户端消息要添加语言常量,例如 <?php echo JText::_('COM_CAM_SEND_LABEL'); ?> 这方面的最佳做法是什么?制作一个帮助函数来生成验证消息,并将其添加到标题中 类似于bellow的东西,只需编辑它以满足您的需要 $messages = '(function ($) { $.extend

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

$doc->addScript("/components/com_cam/js/cam.js");
我有几个客户端消息要添加语言常量,例如

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

这方面的最佳做法是什么?

制作一个帮助函数来生成验证消息,并将其添加到
标题中

类似于bellow的东西,只需编辑它以满足您的需要

$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);
在乔姆拉!2.5(我相信从1.6开始)增加了对向全局
array()
添加语言键的支持,以便Javascript可以访问它们

首先,在PHP中可以调用
JText::script('COM_MYCOMPONENT_MSG1')用于需要在Javascript中翻译的每个字符串

您可以在Javascript中使用内置的
Joomla.JText.(('COM\u MYCOMPONENT\u MSG1')
来检索它

当您达到需要转换大量字符串的程度时,您可能会发现在运行时解析javascript文件更容易(在高效的yada-yada中,但对于后端管理屏幕来说,这没什么大不了的)

/**
*解析javascript文件以查找JText键,然后加载它们以备使用。
*
*@param string$jsFile指向javascript文件的路径。
*
*@returnbool
*/
公共静态函数loadJSLanguageKeys($jsFile)
{
如果(isset($jsFile))
{
$jsFile=JPATH_站点。$jsFile;
}
其他的
{
返回false;
}
如果($jsContents=file\u get\u contents($jsFile))
{
$languageKeys=array();
preg\u match\u all('/Joomla\.JText\.\.(\'(.*?)\)?/',$jsContents,$languageKeys);
$languageKeys=$languageKeys[1];
foreach($lkey形式的语言键)
{
JText::script($lkey);
}
}
}

谢谢!我刚用了你的第一个解决方案,效果很好。
$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);