diff --git a/source/zh-cn/api/box.md b/source/zh-cn/api/box.md
index c9dbe4b9e5..14576dda81 100644
--- a/source/zh-cn/api/box.md
+++ b/source/zh-cn/api/box.md
@@ -2,13 +2,15 @@
title: Box
---
-「Box」是 Hexo 用来处理特定文件夹中的文件的容器,在 Hexo 中有两个 Box,分别是 `hexo.source` 和 `hexo.theme`,前者用于处理 `source` 文件夹,而后者用于处理主题文件夹。
+Box is a container used for processing files in a specified folder. 「Box」是 Hexo 用来处理特定文件夹中的文件的容器,在 Hexo 中有两个 Box,分别是 `hexo.source` 和 `hexo.theme`,前者用于处理 `source` 文件夹,而后者用于处理主题文件夹。 The former is used to process the `source` folder and the latter to process the `theme` folder.
## 加载文件
-Box 提供了两种方法来加载文件:`process`, `watch`,前者用于加载文件夹内的所有文件;而后者除了执行 `process` 以外,还会继续监视文件变动。
+Box 提供了两种方法来加载文件:`process`, `watch`,前者用于加载文件夹内的所有文件;而后者除了执行 `process` 以外,还会继续监视文件变动。 `process` loads all files in the folder. `watch` does the same, but also starts watching for file changes.
```js
+box.process().then(function () {
+ // ...
box.process().then(function () {
// ...
});
@@ -16,22 +18,23 @@ box.process().then(function () {
box.watch().then(function () {
// 之后可调用 box.unwatch(),停止监视文件
});
+});
```
## 比对路径
-Box 提供了多种比对路径的模式,您可以以使用正则表达式(regular expression)、函数、或是 Express 风格的模式字符串,例如:
+Box provides many ways for path matching. Box 提供了多种比对路径的模式,您可以以使用正则表达式(regular expression)、函数、或是 Express 风格的模式字符串,例如: For example:
```plain
posts/:id => posts/89
posts/*path => posts/2015/title
```
-您可以以参考 [util.Pattern] 以获得更多信息。
+您可以以参考 [util.Pattern][] 以获得更多信息。
## 处理器(Processor)
-处理器(Processor)是 Box 中非常重要的元素,它用于处理文件,您可以使用上述的路径对比来限制该处理器所要处理的文件类型。使用 `addProcessor` 来添加处理器。
+处理器(Processor)是 Box 中非常重要的元素,它用于处理文件,您可以使用上述的路径对比来限制该处理器所要处理的文件类型。 You can use path matching as described above to restrict what exactly the processor should process. 使用 `addProcessor` 来添加处理器。
```js
box.addProcessor("posts/:id", function (file) {
@@ -39,24 +42,24 @@ box.addProcessor("posts/:id", function (file) {
});
```
-Box 在处理时会把目前处理的文件内容(`file`)传给处理器,您可以通过此参数获得该文件的数据。
+Box passes the content of matched files to processors. This information can then be read straight from the `file` argument in the callback:
-| 属性 | 描述 |
-| -------- | --------------------------------------------------- |
+| 属性 | 描述 |
+| -------- | --------------------------------------------- |
| `source` | 文件完整路径 |
-| `path` | 文件相对于 Box 的路径 |
-| `type` | 文件类型。有 `create`, `update`, `skip`, `delete`。 |
-| `params` | 从路径对比中取得的信息 |
+| `path` | 文件相对于 Box 的路径 |
+| `type` | 文件类型。 有 `create`, `update`, `skip`, `delete`。 |
+| `params` | 从路径对比中取得的信息 |
Box 还提供了一些方法,让您无须手动处理文件 I/O。
-| 方法 | 描述 |
-| ------------ | ---------------- |
-| `read` | 读取文件 |
-| `readSync` | 同步读取文件 |
-| `stat` | 读取文件状态 |
+| 方法 | 描述 |
+| ------------ | -------- |
+| `read` | 读取文件 |
+| `readSync` | 同步读取文件 |
+| `stat` | 读取文件状态 |
| `statSync` | 同步读取文件状态 |
-| `render` | 渲染文件 |
-| `renderSync` | 同步渲染文件 |
+| `render` | 渲染文件 |
+| `renderSync` | 同步渲染文件 |
[util.Pattern]: https://github.com/hexojs/hexo-util#patternrule
diff --git a/source/zh-cn/api/console.md b/source/zh-cn/api/console.md
index 31a96709f0..f12ff274a3 100644
--- a/source/zh-cn/api/console.md
+++ b/source/zh-cn/api/console.md
@@ -2,7 +2,7 @@
title: 控制台(Console)
---
-控制台是 Hexo 与开发者之间沟通的桥梁。它注册并描述了可用的控制台命令。
+控制台是 Hexo 与开发者之间沟通的桥梁。 它注册并描述了可用的控制台命令。
## 概要
@@ -10,21 +10,22 @@ title: 控制台(Console)
hexo.extend.console.register(name, desc, options, function (args) {
// ...
});
+});
```
-| 参数 | 描述 |
-| --------- | ---- |
+| Argument | 描述 |
+| --------- | -- |
| `name` | 名称 |
| `desc` | 描述 |
| `options` | 选项 |
-在函数中会传入 `args` 参数,此参数是使用者在终端中所传入的参数,是一个经 [Minimist] 解析的对象。
+An argument `args` will be passed into the function. This is the argument that users type into the terminal. It's parsed by [Minimist][].
## 选项
### 用法
-控制台的操作方法,例如:
+The usage of a console command. For example:
```js
{
@@ -33,9 +34,9 @@ hexo.extend.console.register(name, desc, options, function (args) {
// hexo new [layout]
```
-### 参数
+### arguments
-控制台各个参数的说明,例如:
+控制台各个参数的说明,例如: For example:
```js
{
@@ -46,9 +47,9 @@ hexo.extend.console.register(name, desc, options, function (args) {
}
```
-### 选项
+### options
-控制台的各个选项的说明,例如:
+控制台的各个选项的说明,例如: For example:
```js
{
@@ -56,7 +57,7 @@ hexo.extend.console.register(name, desc, options, function (args) {
}
```
-### 描述
+### desc
关于控制台命令的更详细的信息。
diff --git a/source/zh-cn/api/deployer.md b/source/zh-cn/api/deployer.md
index b7503280a2..e14d6c64f0 100644
--- a/source/zh-cn/api/deployer.md
+++ b/source/zh-cn/api/deployer.md
@@ -10,6 +10,7 @@ title: 部署器(Deployer)
hexo.extend.deployer.register(name, function (args) {
// ...
});
+});
```
-在函数中会传入 `args` 参数,该参数包含了 `_config.yml` 中的 `deploy` 参数值,以及开发者在终端中所传入的参数。
+在函数中会传入 `args` 参数,该参数包含了 `_config.yml` 中的 `deploy` 参数值,以及开发者在终端中所传入的参数。 It contains the `deploy` value set in `_config.yml`, as well as the exact input users typed into their terminal.
diff --git a/source/zh-cn/api/events.md b/source/zh-cn/api/events.md
index babfc44fe6..b48044851a 100644
--- a/source/zh-cn/api/events.md
+++ b/source/zh-cn/api/events.md
@@ -2,15 +2,15 @@
title: 事件
---
-Hexo 继承了 [EventEmitter],您可以用 `on` 方法监听 Hexo 所发布的事件,也可以使用 `emit` 方法对 Hexo 发布事件,更详细的说明请参阅 Node.js 的 API。
+Hexo 继承了 [EventEmitter][],您可以用 `on` 方法监听 Hexo 所发布的事件,也可以使用 `emit` 方法对 Hexo 发布事件,更详细的说明请参阅 Node.js 的 API。 Use the `on` method to listen for events emitted by Hexo, and use the `emit` method to emit events. For more information, refer to the Node.js API documentation.
### deployBefore
-在部署完成前发布。
+Emitted before deployment begins.
### deployAfter
-在部署成功后发布。
+Emitted after deployment finishes.
### exit
@@ -18,15 +18,15 @@ Hexo 继承了 [EventEmitter],您可以用 `on` 方法监听 Hexo 所发布的
### generateBefore
-在静态文件生成前发布。
+Emitted before generation begins.
### generateAfter
-在静态文件生成后发布。
+Emitted after generation finishes.
### new
-在文章文件建立后发布。该事件返回文章参数。
+在文章文件建立后发布。 该事件返回文章参数。
```js
hexo.on("new", function (post) {
@@ -34,18 +34,18 @@ hexo.on("new", function (post) {
});
```
-| 数据 | 描述 |
-| -------------- | ------------------ |
+| 数据 | 描述 |
+| -------------- | --------- |
| `post.path` | 文章文件的完整路径 |
-| `post.content` | 文章文件的内容 |
+| `post.content` | 文章文件的内容 |
### processBefore
-在处理原始文件前发布。此事件会返回一个路径,代表 盒(Box)的根目录。
+在处理原始文件前发布。 此事件会返回一个路径,代表 盒(Box)的根目录。
### processAfter
-在原始文件处理后发布。此事件会返回一个路径,代表 盒(Box)的根目录。
+在原始文件处理后发布。 此事件会返回一个路径,代表 盒(Box)的根目录。
### ready
diff --git a/source/zh-cn/api/filter.md b/source/zh-cn/api/filter.md
index 81585bd909..27d8c89556 100644
--- a/source/zh-cn/api/filter.md
+++ b/source/zh-cn/api/filter.md
@@ -2,7 +2,7 @@
title: 过滤器(Filter)
---
-过滤器用于修改特定文件,Hexo 将这些文件依序传给过滤器,而过滤器可以针对文件进行修改,这个概念借鉴自 [WordPress](http://codex.wordpress.org/Plugin_API#Filters)。
+A filter is used to modify some specified data. Hexo passes data to filters in sequence and the filters then modify the data one after the other. This concept was borrowed from [WordPress](http://codex.wordpress.org/Plugin_API#Filters).
## 概要
@@ -16,10 +16,16 @@ hexo.extend.filter.register(type, function() {
const { config: themeCfg } = this.theme;
if (themeCfg.fancybox) // do something...
+}, priority);
+
+ // Theme configuration
+ const { config: themeCfg } = this.theme;
+ if (themeCfg.fancybox) // do something...
+
}, priority);
```
-您可以指定过滤器的优先级 `priority`,`priority` 值越低,过滤器会越早执行,默认的 `priority` 是 10。我们建议提供配置选项如 `hexo.config.your_plugin.priority`、让用户自行决定过滤器的优先级。
+You can define the `priority`. Lower `priority` means that it will be executed first. 您可以指定过滤器的优先级 `priority`,`priority` 值越低,过滤器会越早执行,默认的 `priority` 是 10。 我们建议提供配置选项如 `hexo.config.your_plugin.priority`、让用户自行决定过滤器的优先级。
## 执行过滤器
@@ -28,12 +34,12 @@ hexo.extend.filter.exec(type, data, options);
hexo.extend.filter.execSync(type, data, options);
```
-| 选项 | 描述 |
-| --------- | ------------------ |
-| `context` | Context |
-| `args` | 参数。必须为数组。 |
+| 选项 | 描述 |
+| --------- | ---------- |
+| `context` | Context |
+| `args` | 参数。 必须为数组。 |
-`data` 会作为第一个参数传入每个过滤器,而您可以在过滤器中通过返回值改变下一个过滤器中的 `data`,如果什么都没有返回的话则会保持原本的 `data`。您还可以使用 `args` 指定过滤器的其他参数。举例来说:
+`data` 会作为第一个参数传入每个过滤器,而您可以在过滤器中通过返回值改变下一个过滤器中的 `data`,如果什么都没有返回的话则会保持原本的 `data`。 The `data` passed into the next filter can be modified by returning a new value. If nothing is returned, the data remains unmodified. 您还可以使用 `args` 指定过滤器的其他参数。 举例来说:
```js
hexo.extend.filter.register("test", function (data, arg1, arg2) {
@@ -94,7 +100,7 @@ hexo.extend.filter.unregister("example", require("path/to/filter"));
### before_post_render
-在文章开始渲染前执行。您可以参考 [文章渲染](posts.html#渲染) 以了解执行顺序。
+在文章开始渲染前执行。 您可以参考 [文章渲染](posts.html#渲染) 以了解执行顺序。
举例来说,把标题转为小写:
@@ -107,7 +113,7 @@ hexo.extend.filter.register("before_post_render", function (data) {
### after_post_render
-在文章渲染完成后执行。您可以参考 [文章渲染](posts.html#渲染) 以了解执行顺序。
+在文章渲染完成后执行。 您可以参考 [文章渲染](posts.html#渲染) 以了解执行顺序。
举例来说,把 `@username` 取代为 Twitter 的开发者链接。
@@ -139,16 +145,18 @@ hexo.extend.filter.register("before_exit", function () {
hexo.extend.filter.register("before_generate", function () {
// ...
});
+});
```
### after_generate
-在生成器解析后执行。
+Executed after generation finishes.
```js
hexo.extend.filter.register("after_generate", function () {
// ...
});
+});
```
### template_locals
@@ -172,6 +180,7 @@ hexo.extend.filter.register("template_locals", function (locals) {
hexo.extend.filter.register("after_init", function () {
// ...
});
+});
```
### new_post_path
@@ -182,25 +191,37 @@ hexo.extend.filter.register("after_init", function () {
hexo.extend.filter.register("new_post_path", function (data, replace) {
// ...
});
+});
```
### post_permalink
-用来决定文章的永久链接。
+Used to determine the permalink of posts.
```js
hexo.extend.filter.register("post_permalink", function (data) {
// ...
});
+});
```
### after_render
-在渲染后执行,您可以参考 [渲染](rendering.html#after-render-过滤器) 以了解更多信息。
+Executed after rendering finishes. 在渲染后执行,您可以参考 [渲染](rendering.html#after-render-过滤器) 以了解更多信息。
+
+### after_clean
+
+Executed after generated files and cache are removed with `hexo clean` command.
+
+```js
+hexo.extend.filter.register("before_exit", function () {
+ // ...
+});
+```
### server_middleware
-向服务器添加中间件(Middleware)。`app` 是一个 [Connect] 实例。
+向服务器添加中间件(Middleware)。 `app` 是一个 [Connect][] 实例。
举例来说,在响应头中新增 `X-Powered-By: Hexo`。
diff --git a/source/zh-cn/api/generator.md b/source/zh-cn/api/generator.md
index bf43ba9d4f..ccfed5c2cb 100644
--- a/source/zh-cn/api/generator.md
+++ b/source/zh-cn/api/generator.md
@@ -8,9 +8,10 @@ title: 生成器(Generator)
```js
hexo.extend.generator.register(name, function (locals) {});
+});
```
-`locals` 参数会被传递到此函数,其中包含 [网站变量](../docs/variables.html#网站变量),请尽量利用此参数取得网站数据,避免直接访问数据库。
+`locals` 参数会被传递到此函数,其中包含 [网站变量](../docs/variables.html#网站变量),请尽量利用此参数取得网站数据,避免直接访问数据库。 You should use this argument to get the website data, thereby avoiding having to access the database directly.
## 更新路由
@@ -30,21 +31,21 @@ hexo.extend.generator.register("test", function (locals) {
});
```
-| 属性 | 描述 |
-| -------- | ----------------------------------------------------------------------------------- |
-| `path` | 路径。不可包含开头的 `/`。 |
-| `data` | 数据 |
-| `layout` | 布局。指定用于渲染的模板,可为字符串或数组,如果省略此属性的话则会直接输出 `data`。 |
+| 属性 | 描述 |
+| -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+| `path` | 路径。 不可包含开头的 `/`。 |
+| `data` | 数据 |
+| `layout` | 布局。 Specify the layouts for rendering. The value can be a string or an array. If it's ignored then the route will return `data` directly. |
-在原始文件更新时,Hexo 会执行所有生成器并重建路由,**请直接回传数据,不要直接操作路由**。
+在原始文件更新时,Hexo 会执行所有生成器并重建路由,**请直接回传数据,不要直接操作路由**。 **Please return the data and do not access the router directly.**
## 示例
### 归档页面
-在 `archives/index.html` 建立一归档页面,把所有文章当作数据传入模板内,这个数据也就等同于模板中的 `page` 变量。
+Create an archive page at `archives/index.html`. We pass all posts as data to the templates. 在 `archives/index.html` 建立一归档页面,把所有文章当作数据传入模板内,这个数据也就等同于模板中的 `page` 变量。
-然后,设置 `layout` 属性好让 Hexo 使用主题模板来渲染,在此例中同时设定了两个布局,当 `archive` 布局不存在时,会继续尝试 `index` 布局。
+Next, set the `layout` attribute to render with the theme templates. We're setting two layouts in this example: if the `archive` layout doesn't exist, the `index` layout will be used instead.
```js
hexo.extend.generator.register("archive", function (locals) {
@@ -58,7 +59,7 @@ hexo.extend.generator.register("archive", function (locals) {
### 有分页的归档页面
-您可以通过 [hexo-pagination] 这个方便的官方工具来轻松建立分页归档。
+您可以通过 [hexo-pagination][] 这个方便的官方工具来轻松建立分页归档。
```js
var pagination = require("hexo-pagination");
diff --git a/source/zh-cn/api/helper.md b/source/zh-cn/api/helper.md
index 6c287ee0de..98ea2ecd55 100644
--- a/source/zh-cn/api/helper.md
+++ b/source/zh-cn/api/helper.md
@@ -2,7 +2,7 @@
title: 辅助函数(Helper)
---
-辅助函数帮助您在模板中快速插入内容,建议您把复杂的代码放在辅助函数而非模板中。
+辅助函数帮助您在模板中快速插入内容,建议您把复杂的代码放在辅助函数而非模板中。 We recommend using helpers instead of templates when you're dealing with more complicated code.
辅助函数不能从 `source` 的文件中访问。
@@ -12,6 +12,7 @@ title: 辅助函数(Helper)
hexo.extend.helper.register(name, function () {
// ...
});
+});
```
## 示例
@@ -35,7 +36,7 @@ hexo.extend.helper.register("js", function (path) {
### 如何在我的自定义 helper 中使用另外一个已经注册的 helper?
-所有的辅助函数都在同一个上下文中执行。例如,在一个自定义的辅助函数中使用 [`url_for()`](/zh-cn/docs/helpers#url-for):
+所有的辅助函数都在同一个上下文中执行。 例如,在一个自定义的辅助函数中使用 [`url_for()`](/zh-cn/docs/helpers#url-for):
```js
hexo.extend.helper.register("lorem", function (path) {
diff --git a/source/zh-cn/api/index.md b/source/zh-cn/api/index.md
index e0bbf77f17..30c489dd47 100644
--- a/source/zh-cn/api/index.md
+++ b/source/zh-cn/api/index.md
@@ -2,13 +2,13 @@
title: API
---
-本文件提供您更丰富的 API 信息,使您更容易修改 Hexo 源代码或编写插件。如果您只是想查询 Hexo 的基本使用方法,请参阅 [文档](../docs/)。
+本文件提供您更丰富的 API 信息,使您更容易修改 Hexo 源代码或编写插件。 如果您只是想查询 Hexo 的基本使用方法,请参阅 [文档](../docs/)。
在开始之前,请注意本文件仅适用于 Hexo 3 及以上版本。
## 初始化
-首先,我们必须建立一个 Hexo 实例(instance),第一个参数是网站的根目录,也就是 `base_dir`,而第二个参数则是初始化的选项。接着执行 `init` 方法后,Hexo 会加载插件及配置文件。
+First, we have to create a Hexo instance. 首先,我们必须建立一个 Hexo 实例(instance),第一个参数是网站的根目录,也就是 `base_dir`,而第二个参数则是初始化的选项。 接着执行 `init` 方法后,Hexo 会加载插件及配置文件。
```js
var Hexo = require("hexo");
@@ -17,23 +17,26 @@ var hexo = new Hexo(process.cwd(), {});
hexo.init().then(function () {
// ...
});
+});
```
-| 参数 | 描述 | 默认值 |
-| ------------------ | -------------------------------------------------------------------------------- | ------------------------------------ |
-| `debug` | 开启调试模式。在终端中显示调试信息,并在根目录中存储 `debug.log` 日志文件。 | `false` |
-| `safe` | 开启安全模式。不加载任何插件。 | `false` |
-| `silent` | 开启安静模式。不在终端中显示任何信息。 | `false` |
-| `config` | 指定配置文件的路径。 | `_config.yml` |
-| `draft` / `drafts` | 是否将草稿加入到文章列表中。
例如在 `hexo.locals.get('posts')` 中获取草稿内容 | \_config.yml 中 `render_drafts` 的值 |
+| Option | 描述 | 默认值 |
+| ------------------ | --------------------------------------------------------------- | ----------------------------------- |
+| `debug` | 开启调试模式。 在终端中显示调试信息,并在根目录中存储 `debug.log` 日志文件。 | `false` |
+| `safe` | 开启安全模式。 不加载任何插件。 | `false` |
+| `silent` | 开启安静模式。 不在终端中显示任何信息。 | `false` |
+| `config` | 指定配置文件的路径。 | `_config.yml` |
+| `draft` / `drafts` | 是否将草稿加入到文章列表中。
例如在 `hexo.locals.get('posts')` 中获取草稿内容 | \_config.yml 中 `render_drafts` 的值 |
## 加载文件
-Hexo 提供了两种方法来加载文件:`load`, `watch`,前者用于加载 `source` 文件夹内的所有文件及主题资源;而后者除了执行 `load` 以外,还会继续监视文件变动。
+Hexo 提供了两种方法来加载文件:`load`, `watch`,前者用于加载 `source` 文件夹内的所有文件及主题资源;而后者除了执行 `load` 以外,还会继续监视文件变动。 `load` is used for loading all files in the `source` folder as well as the theme data. `watch` does the same things `load` does, but will also start watching for file changes continuously.
-这两个方法实际上所做的,就是加载文件列表,并把文件传给相对应的处理器(Processor),当文件全部处理完毕后,就会执行生成器(Generator)来建立路由。
+Both methods will load the list of files and pass them to the corresponding processors. After all files have been processed, they will call upon the generators to create the routes.
```js
+hexo.load().then(function () {
+ // ...
hexo.load().then(function () {
// ...
});
@@ -41,21 +44,29 @@ hexo.load().then(function () {
hexo.watch().then(function () {
// 之后可以调用 hexo.unwatch(),停止监视文件
});
+});
```
## 执行指令
-您可以通过 `call` 方法来调用控制台(Console),第一个参数是控制台的名称,而第二个参数是选项——根据不同控制台有所不同。
+Any console command can be called explicitly using the `call` method on the Hexo instance. Such a call takes two arguments: the name of the console command, and an options argument. Different options are available for the different console commands.
```js
hexo.call("generate", {}).then(function () {
// ...
});
+});
+```
+
+```js
+hexo.call("list", { _: ["post"] }).then(function () {
+ // ...
+});
```
## 退出
-无论控制台命令完成与否,都应调用 `exit` 方法。这样 Hexo 就能优雅地退出,并完成保存数据库等重要工作。
+无论控制台命令完成与否,都应调用 `exit` 方法。 这样 Hexo 就能优雅地退出,并完成保存数据库等重要工作。
```js
hexo
diff --git a/source/zh-cn/api/injector.md b/source/zh-cn/api/injector.md
index d07af697ac..6296cdfa53 100644
--- a/source/zh-cn/api/injector.md
+++ b/source/zh-cn/api/injector.md
@@ -2,7 +2,7 @@
title: 注入器(Injector)
---
-注入器被用于将静态代码片段注入生成的 HTML 的 `` 和/或 `` 中。Hexo 将在 `after_render:html` 过滤器 **之前** 完成注入。
+注入器被用于将静态代码片段注入生成的 HTML 的 `` 和/或 `` 中。 Hexo 将在 `after_render:html` 过滤器 **之前** 完成注入。
## 概要
@@ -12,7 +12,9 @@ hexo.extend.injector.register(entry, value, to);
### entry ``
-代码片段注入的位置,接受以下值:
+Where the code will be injected inside the HTML.
+
+Support those values:
- `head_begin`: 注入在 `` 之后(默认)
- `head_end`: 注入在 `` 之前
@@ -27,7 +29,7 @@ hexo.extend.injector.register(entry, value, to);
### to ``
-需要注入代码片段的页面类型,接受以下值:
+Which page will code snippets being injected.
- `default`: 注入到每个页面(默认值)
- `home`: 只注入到主页(`is_home()` 为 `true` 的页面)
@@ -69,7 +71,7 @@ hexo.extend.injector.register("body_end", () => {
});
```
-上述代码将会把 `APlayer.min.css`(`` 标签)和 `APlayer.min.js` (`