gpt4 book ai didi

joomla - 将语言常量添加到 Joomla 组件 javascript

转载 作者:行者123 更新时间:2023-12-04 15:12:51 25 4
gpt4 key购买 nike

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

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

我有几个客户端消息,我想添加语言常量,即
<?php echo JText::_('COM_CAM_SEND_LABEL'); ?>

在像 default.php 这样的前端 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!")
}
}

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

最佳答案

在 Joomla! 2.5(我相信从 1.6 开始)有 JText::script() 它增加了对将语言键添加到全局 array() 的支持以便您的 Javascript 可以访问它们。

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

您可以使用内置的 Joomla.JText._('COM_MYCOMPONENT_MSG1')在您的 Javascript 中检索它。

当您到达需要转换大量字符串的地步时,您可能会发现在运行时解析 javascript 文件更容易(效率低下的 yada yada,但对于后端管理屏幕来说并不是什么大问题)。

/**
* 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);
}
}
}

关于joomla - 将语言常量添加到 Joomla 组件 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com