在PHP MVC框架中本地化JavaScript字符串

    罗兰·克列孟梭
    分享

    今天,我将向您展示如何在PHP框架中有效地本地化您的Javascript字符串。您可以下载本教程的工作实现在这里

    在PHP环境中,实际上有几种方法可以本地化Javascript字符串。从技术上讲,可以复制您的Javascript文件,以目标语言命名,并在用户每次选择新的语言时加载所需的版本。但这肯定代表了一种很难被称为良好实践的方法,即使它“有效”。

    使用这种方法的主要缺点是,每次需要修改JavaScript代码时,都必须针对每种语言执行修改。如果没有给您带来不必要的额外工作,这只会容易出错。

    也有可能通过JavaScript代码中嵌入的PHP变量直接调用文本字符串,但取决于框架架构,这并不总是一个可用的选项。

    所以我要给你们展示一个肯定有效的方法,而且也很容易维护。

    请记住,您可以下载一个工作示例在这里

    让我们开始…

    在本教程附带的示例中,我设置了一个按钮,该按钮触发名为trigger_msg ()

    Echo '<input type="button" value="'.$t_launch_message。'" class="trigger" onclick="return trigger_msg();"/祝辞';

    trigger_msg ()函数在/public/JS/main.js中找到:

    函数trigger_msg(){返回警报(翻译(本地化.here_is_how_it_works));}

    -我们称之为翻译()在/languages/ translation .js中找到的函数,并将我们需要的元素的名称作为参数传递给名为LOCALIZATION的数组。
    -我们使用语法翻译(name_of_language_array.name_of_element, extra_parameter1, extra_paramater2,等等),因此只使用逗号分隔额外的参数。
    -参数当然可以是字面量,如果用引号括起来

    在我们深入了解翻译()下面是在/languages/current_language/JS/current_language. JS中找到的本地化数组的样子:

    var LOCALIZATION = {here_is_how_it_works: 'Voici comment cela function . var本地化= {here_is_how_it_works: '\我的心在你身边ç我的心在你身边paramètre。', who_does_not_know_are_and_that_the_sky_is: 'Qui ne sait pas que %s x %s font %s,\net que le ciel est %s?',蓝色:'bleu'};

    在我们的数组元素定义中,您可以看到正在使用' % 1 ! ',这是我们用来保存额外参数的表达式。我们稍后会讲到。
    注意,您可以插入HTML样式标签,例如。,等等,在你的数组元素定义中,如果你使用一个自定义对话框,它会工作得很好。

    现在该集中精力翻译()功能:

    (function () {if (!window.translate){窗口。翻译=函数(){var HTML = [];Var参数=参数;Var字符串=参数[0];var objIndex = 0;Var reg = /%s/;Var部分= [];For (var m = reg.exec(字符串);m;m = reg.exec(string)) {// m[0][0]在IE parts中未定义。Substr (0, m[0][0] === "%" ?M.index: M.index)); parts.push("%s"); string = string.substr( m.index+m[0].length ); } parts.push(string); for (var i = 0; i < parts.length; ++i){ var part = parts[i]; if (part && part == "%s"){ var object = arguments[++objIndex]; if (object == undefined) { html.push("%s"); }else{ html.push(object); }; }else{ html.push(part); } } return html.join(''); } }; })();

    下面的函数构成了JavaScript本地化方案的核心。

    基本上在变量中字符串类中捕获的参数trigger_msg ()函数,在我们的第一个for循环中解析它们,使用一个包含在名为注册,并将结果部件推入名为部分[].然后我们将这些部分重新组合成一个数组,叫做html []我们的函数返回。

    变量名为注册保存一个简单的正则表达式' /%s/ ', %s是我们选择用来定义上面讨论的参数的语法。

    trigger_msg_with_params ()/public/JS/main.js中的function显示了如何在本地化字符串时使用参数。实际上,在系统中,有时需要翻译的字面值字符串可能包含依赖于用户输入的值,这个函数可以方便地允许不需要重复使用我们的代码:

    函数trigger_msg_with_params(){var param1 = 5382;Var param2 = 9408;Var param3 = param1 * param2;var param4 =翻译(本地化.blue);返回警告(翻译(本地化。who_does_not_are_and_that_the_sky_is, param1, param2, param3, param4));}

    您可以看到每个已定义的参数,例如。var param1,也可以是传递给函数调用的参数。方法的实际调用也可以是已定义的参数翻译()函数。所有这些,再次证明是非常有用的。

    这就是它的全部。这个系统代表了在PHP框架中转换JavaScript字符串的一种高效可靠的方式,并且具有很大的灵活性。

    非常欢迎您留下您的意见或问题。请继续关注更多教程。

    Baidu