一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

DEDECMS|帝國CMS|Discuz|PHPCMS|Wordpress|ZBLOG|ECSHOP|蘋果CMS|極致CMS|CMS系統|

服務器之家 - 建站程序 - Wordpress - WordPress的JavaScript 本地化實現

WordPress的JavaScript 本地化實現

2019-09-29 15:06WordPress教程網 Wordpress

WordPress 升級到 3.1 之后, 如果主題支持 wp_head() 方法, 將在頁面加載一個名為 l10n.js 的文件, 這是為 JavaScript 本地化提供的工具庫.

目前對大多數人來說是一個無用的功能, 甚至有人認為這是 WordPress 卑鄙地偷偷地在頁面上埋了一個扯淡的腳本, 所以網上能找到的都是如何卸載腳本的方法. 在我們卸載之前, 是不是應該先了解一下這是怎樣的一個功能, 添加腳本的意圖是什么? 本文將說明 l10n.js 腳本存在的意義, 本地化腳本的使用方法和對其未來的展望. 

復制代碼

代碼如下:


<script type='text/javascript' src='{ROOT DIR}/wp-includes/js/l10n.js?ver=20101110'></script> 


i18n 和 l10n 
i18n[1] 和 l10n[2] 是 IT 領域常用的縮寫術語, 分別是國際化和本地化的意思. i18n 指應用程序能夠為不同的國家和語言環境的用戶群體提供本地化的服務, 而 l10n 則是在用戶使用環境實現本地化特性, 國際化和本地化泛指語言環境的多語言實現. 如: WordPress 是一個支持國際化的程序, 只要提供對應國家語言包并制定國家代號, 就能替換整個網站的語言環境. 
JavaScript 本地化 
如前面的例子, WordPress 一直支持國際化, 并提供 _e() 和 __() 兩個 PHP 方法對程序進行本地化. 但隨著前端 JavaScript 應用越來越多, 后端的國際化已經滿足不了所有需求, 有必要引入 JavaScript 的國際化和本地化. 
若你使用的主題支持 wp_head() 方法, 將在頁面加載 l10n.js 文件, 而且用戶可以通過簡單的代碼向頁面注入本地化資源. l10n.js 是一個 JavaScript 本地化的工具庫, 包含 convertEntities() 方法, 可以將 HTML 對象還原成原來的值, 所以它會在所有注入的 JavaScript 腳本和本地化資源之前載入. 
使用的方法 
我們可以為每一個要載入的 JavaScript 文件定義本地化資源. 實現代碼如下[3]: 

復制代碼

代碼如下:


// 必須先載入一個 Javascript 文件 
wp_enqueue_script('some_handle', '/some_javascript.js'); 
// 組裝本地化數據, 使用 __() 制作本地化內容 
$data = array( 'some_string' => __( 'Some string to translate' ) ); 
// 加載本地化腳本. 這里必須指定一個需要載入的 JavaScript 文件. 
wp_localize_script( 'some_handle', 'object_name', $data ); 


執行后將在頁面上生成代碼如下: 

復制代碼

代碼如下:


/* <![CDATA[ */ 
var object_name = { 
some_string: "Some string to translate" 
}; 
/* ]]> */ 
<script type='text/javascript' src='{ROOT DIR}/some_javascript.js?ver=3.1'></script> 


本地化資源會在指定腳本之前載入和定義. 其中 {ROOT DIR} 是網站的根目錄. 
此時如果我們可以通過以下代碼進行測試: 

復制代碼

代碼如下:


alert(object_name.some_string); // 彈出對話框, 顯示 'Some string to translate' 


利弊和應用場合 
好處前面說了很多, 可以方便地進行前端本地化 (需要后端 PHP 配合). 缺點也很明顯, 會在每次頁面加載時計算本地化資源, 并且載入大量 JavaScript 代碼, 增加系統負擔和延長頁面加載時間. 
JavaScript 本地化是 WordPress 主題和插件制作中讓人較為煩惱的地方, 一些插件開發者會在頁面上自行定義 l10n 對象, 可以參考 WP-RecentComments 插件的做法. WordPress 這次強行引入, 很可能會被主題和插件開發者廣泛應用. 也就是說, 不久的將來你未必敢卸載掉它, 否則某些插件將運行不了. 
卸載和恢復的方法 
雖說 l10n.js 文件很小, 好歹會發出一個請求, 如果你真的認為沒用, 可以在 functions.php 中添加以下代碼將它卸載掉. 

復制代碼

代碼如下:


wp_deregister_script('l10n'); 


如函數名, 這個方法不是禁用, 而是注銷. 也就是說, 一旦你注銷就沒有了, 就算刪除這段代碼也不會還原. 如果在注銷后希望回復需要使用以下方法: 

復制代碼

代碼如下:


wp_register_script('l10n'); 


總結 
WordPress 的想法很好, 但這實現方式叫我該如何吐槽, 希望 "支持 JavaScript 本地化" 不是通過主題審核的必要條件. 作為前端, 多少有點頁面潔癖, 我已經將這個腳本注銷掉了. 另外, 看到 WordPress 3.1 那奪目的 Admin Bar 我淡定地笑了, 祝 WordPress 越來越臃腫. 

注解

  1. internationalization, 國際化的意思. 因為單詞前后字母 i 和 n 之間有 18 個字母存在, 所以縮寫成 i18n.

  2. localization, 本地化的意思. 因為單詞前后字母 l 和 n 之間有 10 個字母存在, 所以縮寫成 l10n.

  3. 代碼引用自 WordPress Codex - wp_localize_script.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 操老逼视频 | 丝瓜草莓香蕉绿巨人幸福宝 | 99这里只有精品视频 | 亚洲国产精品久久精品成人网站 | 亚洲精品一区二区久久久久 | 免费yjsp妖精com | 日本韩国一区二区三区 | 色综色天天综合网 | 国产精品免费 | 人性本色| 古装全套 毛片 | 国产日韩精品一区二区 | 国内亚州视频在线观看 | 日本一道本中文字幕 | 俄罗斯性高清完整版 | 亚洲国产成人在人网站天堂 | aⅴ导航站 | 四虎国产成人亚洲精品 | 日韩毛片在线 | 日韩欧美不卡片 | 精品久久香蕉国产线看观看亚洲 | 无码AV免费精品一区二区三区 | 91视频99| 国产一级片在线 | 亚洲va韩国va欧美va天堂 | 热门小说同人h改编h | 国产福利片在线 易阳 | 蘑菇香蕉茄子绿巨人丝瓜草莓 | 日本网络视频www色高清免费 | 天天色天| japanese厕所撒尿| 乌克兰一级毛片 | 国产精品露脸国语对白河北 | 俄罗斯妈妈k8影院在线观看 | 国产特黄一级一片免费 | 亚洲 小说 欧美 激情 另类 | 天天综合色网 | 探花 在线 | 白发在线视频播放观看免费 | 国产福利不卡一区二区三区 | 亚洲区一 |