WordPress 进级到 3.1 之后,假如主题支持 wp_head() 要领,将在页面加载一个名为 l10n.js 的文件,这是为 JavaScript 当地化提供的东西库今朝对大大都人来说是一个无用的成果, 甚至有人认为这是 WordPress 鄙俚地偷偷地在页面上埋了一个扯淡的剧本,所以网上能找到的都是如何卸载剧本的要领。在我们卸载之前,是不是应该先相识一下这是奈何的一个成果,添加剧本的意图是什么?
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 越来越臃肿。
注解
internationalization,国际化的意思。因为单词前后字母 i 和 n 之间有 18 个字母存在,所以缩写成 i18n。
localization,当地化的意思。因为单词前后字母 l 和 n 之间有 10 个字母存在,所以缩写成 l10n。
WordPress下载
WordPress v3.5.2 简体中文版下载
界面预览代码引用自:WordPress Codex - wp_localize_script,原文出处:。