WordPress的JavaScript本地化

开发 前端
WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL 数据库的服务器上架设自己的网志。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。本文主要介绍WordPress的JavaScript本地化,一起来看。

WordPress 升级到 3.1 之后, 如果主题支持 wp_head() 方法, 将在页面加载一个名为 l10n.js 的文件, 这是为 JavaScript 本地化提供的工具库. 目前对大多数人来说是一个无用的功能, 甚至有人认为这是 WordPress 卑鄙地偷偷地在页面上埋了一个扯淡的脚本, 所以网上能找到的都是如何卸载脚本的方法.

在我们卸载之前, 是不是应该先了解一下这是怎样的一个功能, 添加脚本的意图是什么? 本文将说明 l10n.js 脚本存在的意义, 本地化脚本的使用方法和对其未来的展望.

 

  1. <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]:

  1. // 必须先载入一个 Javascript 文件  
  2. wp_enqueue_script('some_handle''/some_javascript.js');  
  3. // 组装本地化数据, 使用 __() 制作本地化内容  
  4. $data = array( 'some_string' => __( 'Some string to translate' ) );  
  5. // 加载本地化脚本. 这里必须指定一个需要载入的 JavaScript 文件.  
  6. wp_localize_script( 'some_handle''object_name', $data );  

执行后将在页面上生成代码如下:

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

本地化资源会在指定脚本之前载入和定义. 其中 {ROOT DIR} 是网站的根目录.

此时如果我们可以通过以下代码进行测试:

  1. alert(object_name.some_string); // 弹出对话框, 显示 'Some string to translate'  

利弊和应用场合

好处前面说了很多, 可以方便地进行前端本地化 (需要后端 PHP 配合). 缺点也很明显, 会在每次页面加载时计算本地化资源, 并且载入大量 JavaScript 代码, 增加系统负担和延长页面加载时间.

JavaScript 本地化是 WordPress 主题和插件制作中让人较为烦恼的地方, 一些插件开发者会在页面上自行定义 l10n 对象, 可以参考 WP-RecentComments 插件的做法. WordPress 这次强行引入, 很可能会被主题和插件开发者广泛应用. 也就是说, 不久的将来你未必敢卸载掉它, 否则某些插件将运行不了.

卸载和恢复的方法

虽说 l10n.js 文件很小, 好歹会发出一个请求, 如果你真的认为没用, 可以在 functions.php 中添加以下代码将它卸载掉.

  1. wp_deregister_script('l10n');  

如函数名, 这个方法不是禁用, 而是注销. 也就是说, 一旦你注销就没有了, 就算删除这段代码也不会还原. 如果在注销后希望回复需要使用以下方法:

  1. wp_register_script('l10n');  

总结

WordPress 的想法很好, 但这实现方式叫我该如何吐槽, 希望 "支持 JavaScript 本地化" 不是通过主题审核的必要条件. 作为前端, 多少有点页面洁癖, 我已经将这个脚本注销掉了. 另外, 看到 WordPress 3.1 那夺目的 Admin Bar 我淡定地笑了, 祝 WordPress 越来越臃肿.

【编辑推荐】

  1. 关于 JavaScript 的 with 语句
  2. Web移动应用 HTML5 CSS和JavaScript
  3. JavaScript 假如default不是switch的***一项
  4. 深度剖析WordPress主题结构
  5. WordPress的18条必备SQL操作语句
责任编辑:于铁 来源: mg12's Blog
相关推荐

2022-09-21 11:51:26

模块化应用

2011-05-30 17:11:08

测试策略

2012-06-08 10:48:31

商务社交

2012-05-13 13:15:54

IOS

2012-05-14 17:10:50

iOS

2011-05-26 17:28:48

软件本地化测试

2011-06-08 17:07:55

本地化测试

2020-09-21 08:34:28

数据中心

2017-11-30 14:44:41

语言代码文件

2010-03-09 09:33:04

Windows Emb

2011-05-27 14:09:55

Windows PhoBing微软

2021-01-20 07:37:39

Exceptionle服务端部署

2022-08-08 12:57:42

IoT智能设备智能化设备家庭组网

2021-06-29 10:01:56

物联网项目eSIM物联网

2024-01-10 09:00:00

OpenAILocalGPT开源大模型

2011-10-10 13:40:22

Distimo移动应用本地化

2009-09-04 11:19:05

思科本地化CCNACCENT

2015-09-14 11:55:32

海外游戏本地化案例

2012-03-08 09:09:11

PhoneGapjQuery Mobi本地化Web App

2011-07-04 10:56:42

诺基亚苹果谷歌
点赞
收藏

51CTO技术栈公众号