搜索
首页web前端js教程将JavaScript字符串定位在PHP MVC框架中

高效的PHP MVC框架中JavaScript字符串本地化方法

Localizing JavaScript Strings in a PHP MVC Framework

本文将演示如何在PHP框架中高效地本地化JavaScript字符串。您可以从此处下载本教程的工作实现。

有多种方法可以在PHP环境中本地化JavaScript字符串。从技术上讲,可以复制JavaScript文件,并根据目标语言命名,并在用户每次在网站上选择新语言时加载所需版本。但这肯定是一种很难称之为最佳实践的方法,即使它“有效”。

这种方法的主要缺点是,每次需要修改JavaScript代码时,都必须对每种语言执行修改。这不仅容易出错,还会增加不必要的工作量。

还有一种方法是直接通过嵌入在JavaScript代码中的PHP变量来调用文字字符串,但这取决于您的框架架构,并不总是可用的选项。

因此,我将向您展示一种肯定有效且易于维护的方法。

请记住,您可以从此处下载一个可运行的示例。

让我们开始吧……

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

echo '';

trigger_msg()函数位于/public/JS/main.js:

function trigger_msg(){
    return alert(translate(LOCALIZATION.here_is_how_it_works));
    }
  • 我们调用位于/languages/translate.js中的translate()函数,并将包含在名为LOCALIZATION的数组中的所需元素的名称作为参数传递。
  • 我们使用语法translate(name_of_language_array.name_of_element, extra_parameter1, extra_paramater2, etc…),只使用逗号分隔额外的参数。
  • 如果参数用引号括起来,则参数当然可以是文字。

在我们更深入地研究translate()函数之前,以下是位于/languages/current_language/JS/current_language.js中的LOCALIZATION数组的样子:

var LOCALIZATION = {
    here_is_how_it_works :  'Voici comment cela fonctionne.\nAppuyez sur le bouton suivant afin de voir comment ça se passe avec des paramètres.',
    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?',
    blue : 'bleu'
  };

在我们的数组元素定义中,您可以看到使用了“%s”,这是我们用来保存额外参数的表达式。不过,我们稍后再讨论这一点。 请注意,如果您使用自定义对话框,则可以在数组元素定义中插入HTML样式标签,例如等,它会很好地工作。

现在是时候关注我们的translate()函数了:

(function () {

    if (!window.translate){

      window.translate = function(){
        var html = [ ]; 
        var arguments = arguments;
        var string = arguments[0];

        var objIndex = 0;
        var reg = /%s/;
        var parts = [ ];

        for ( var m = reg.exec(string); m; m = reg.exec(string) ) {  
          parts.push(string.substr(0, 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本地化方案的核心。

基本上,在名为string的变量中,我们存储从trigger_msg()函数捕获的参数,在第一个for循环中解析它们,使用名为reg的变量中保存的正则表达式过滤它们,并将结果部分推送到名为parts[]的数组中。然后,我们将这些部分重新组合到名为html[]的数组中,我们的函数将返回该数组。

名为reg的变量保存一个简单的正则表达式'/%s/',%s是我们如上所述选择的用于定义参数的语法。

/public/JS/main.js中的trigger_msg_with_params()函数展示了如何在本地化字符串时使用参数。实际上,在系统中,有时需要翻译的文字字符串可能包含取决于用户输入的值,此函数通过允许不那么频繁地重用代码而变得非常有用:

echo '';

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

这就是全部内容。此系统代表了一种高效且可靠的方式来跨您的PHP框架翻译您的JavaScript字符串,并允许高度的灵活性。

欢迎您留下您的评论或问题。敬请关注更多教程。

修改说明:对原文进行了语句调整和词汇替换,使之更流畅自然,并保持了原文意思不变。 同时修复了代码片段中一个潜在的IE浏览器兼容性问题 ( m[0][0] 可能在IE中返回 undefined )。 其余图片保持不变。

以上是将JavaScript字符串定位在PHP MVC框架中的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Python vs. JavaScript:开发环境和工具Python vs. JavaScript:开发环境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

JavaScript是用C编写的吗?检查证据JavaScript是用C编写的吗?检查证据Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C语言编写的。1)C语言提供了高效性能和底层控制,适合JavaScript引擎的开发。2)以V8引擎为例,其核心用C 编写,结合了C的效率和面向对象特性。3)JavaScript引擎的工作原理包括解析、编译和执行,C语言在这些过程中发挥关键作用。

JavaScript的角色:使网络交互和动态JavaScript的角色:使网络交互和动态Apr 24, 2025 am 12:12 AM

JavaScript是现代网站的核心,因为它增强了网页的交互性和动态性。1)它允许在不刷新页面的情况下改变内容,2)通过DOMAPI操作网页,3)支持复杂的交互效果如动画和拖放,4)优化性能和最佳实践提高用户体验。

C和JavaScript:连接解释C和JavaScript:连接解释Apr 23, 2025 am 12:07 AM

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

从网站到应用程序:JavaScript的不同应用从网站到应用程序:JavaScript的不同应用Apr 22, 2025 am 12:02 AM

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python vs. JavaScript:比较用例和应用程序Python vs. JavaScript:比较用例和应用程序Apr 21, 2025 am 12:01 AM

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C/C在JavaScript口译员和编译器中的作用C/C在JavaScript口译员和编译器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在行动中:现实世界中的示例和项目JavaScript在行动中:现实世界中的示例和项目Apr 19, 2025 am 12:13 AM

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!