目前對大多數人來說是一個無用的功能, 甚至有人認為這是 WordPress 卑鄙地偷偷地在頁面上埋了一個扯淡的腳本, 所以網上能找到的都是如何卸載腳本的方法. 在我們卸載之前, 是不是應該先了解一下這是怎樣的一個功能, 添加腳本的意圖是什么? 本文將說明 l10n.js 腳本存在的意義, 本地化腳本的使用方法和對其未來的展望.
復制代碼
代碼如下:
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]:
復制代碼
代碼如下:
執行后將在頁面上生成代碼如下:
復制代碼
代碼如下:
本地化資源會在指定腳本之前載入和定義. 其中 {ROOT DIR} 是網站的根目錄.
此時如果我們可以通過以下代碼進行測試:
復制代碼
代碼如下:
利弊和應用場合
好處前面說了很多, 可以方便地進行前端本地化 (需要后端 PHP 配合). 缺點也很明顯, 會在每次頁面加載時計算本地化資源, 并且載入大量 JavaScript 代碼, 增加系統負擔和延長頁面加載時間.
JavaScript 本地化是 WordPress 主題和插件制作中讓人較為煩惱的地方, 一些插件開發者會在頁面上自行定義 l10n 對象, 可以參考 WP-RecentComments 插件的做法. WordPress 這次強行引入, 很可能會被主題和插件開發者廣泛應用. 也就是說, 不久的將來你未必敢卸載掉它, 否則某些插件將運行不了.
卸載和恢復的方法
雖說 l10n.js 文件很小, 好歹會發出一個請求, 如果你真的認為沒用, 可以在 functions.php 中添加以下代碼將它卸載掉.
復制代碼
代碼如下:
如函數名, 這個方法不是禁用, 而是注銷. 也就是說, 一旦你注銷就沒有了, 就算刪除這段代碼也不會還原. 如果在注銷后希望回復需要使用以下方法:
復制代碼
代碼如下:
總結
WordPress 的想法很好, 但這實現方式叫我該如何吐槽, 希望 "支持 JavaScript 本地化" 不是通過主題審核的必要條件. 作為前端, 多少有點頁面潔癖, 我已經將這個腳本注銷掉了. 另外, 看到 WordPress 3.1 那奪目的 Admin Bar 我淡定地笑了, 祝 WordPress 越來越臃腫.
注解
-
internationalization, 國際化的意思. 因為單詞前后字母 i 和 n 之間有 18 個字母存在, 所以縮寫成 i18n.
-
localization, 本地化的意思. 因為單詞前后字母 l 和 n 之間有 10 個字母存在, 所以縮寫成 l10n.
-
代碼引用自 WordPress Codex - wp_localize_script.