高效的PHP MVC框架中JavaScript字符串本地化方法
本文將演示如何在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中文網其他相關文章!

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

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

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版
視覺化網頁開發工具