• 售前

  • 售后

热门帖子
入门百科

WordPress的JavaScript 本地化实现

[复制链接]
塞翁364 显示全部楼层 发表于 2021-8-15 20:14:36 |阅读模式 打印 上一主题 下一主题
如今对大多数人来说是一个无用的功能, 乃至有人以为这是 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 越来越臃肿.
注解

       
  • internationalization, 国际化的意思. 由于单词前后字母 i 和 n 之间有 18 个字母存在, 所以缩写成 i18n.   
  • localization, 本地化的意思. 由于单词前后字母 l 和 n 之间有 10 个字母存在, 所以缩写成 l10n.   
  • 代码引用自 WordPress Codex - wp_localize_script.

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作