diff --git a/docs/getting-started/folder-structure.zh.md b/docs/getting-started/folder-structure.zh.md
index e1d8eae9..fad73925 100644
--- a/docs/getting-started/folder-structure.zh.md
+++ b/docs/getting-started/folder-structure.zh.md
@@ -1,8 +1,6 @@
# 项目结构
-现在,你已经创建并运行了第一个 Vapor 应用程序,让我们稍微花点时间熟悉一下 Vapor 的项目结构。
-
-该结构是在 [SPM](spm.md) 的基础上演化而来;因此,如果你曾经使用过 SPM,应该会很熟悉。
+现在,你已经创建并运行了第一个 Vapor 应用程序,让我们稍微花点时间熟悉一下 Vapor 的项目结构。该结构是在 [SPM](spm.zh.md) 的基础上演化而来;因此,如果你曾经使用过 SPM,应该会很熟悉。
```
@@ -27,9 +25,7 @@
## Public
-如果你使用了 `FileMiddleware` 中间件,那么此文件夹包含你的应用程序提供的所有公共文件,通常是图片、`.css`样式和浏览器脚本等。
-
-例如,对 `localhost:8080/favicon.ico` 发起的请求将检查是否存在 `Public/favicon.ico` 图片并回应。
+如果你使用了 `FileMiddleware` 中间件,那么此文件夹包含你的应用程序提供的所有公共文件,通常是图片、`.css` 样式和浏览器脚本等。 例如,对 `localhost:8080/favicon.ico` 发起的请求将检查是否存在 `Public/favicon.ico` 图片并回应。
在 Vapor 可以提供公共文件之前,你需要在 `configure.swift` 文件中启用`FileMiddleware`,参考如下所示:
@@ -43,7 +39,7 @@ app.middleware.use(fileMiddleware)
## Sources
-该文件夹包含项目的所有 Swift 代码源文件。文件夹 `App`和 `Run`反应软件包的模块,例如这篇 [SPM](spm.md) 文章中所述。
+该文件夹包含项目的所有 Swift 代码源文件。文件夹 `App` 和 `Run` 反应软件包的模块,例如这篇 [SPM](spm.zh.md) 文章中所述。
### App
@@ -73,12 +69,13 @@ models 文件夹常用于存放 `Content` 和 Fluent `Model` 的类或结构体
这是主要的可执行目标,只包含启动和运行应用程序所需的代码。
+#### main.swift
+
+这个文件创建并运行一个配置好的 `Application` 实例。
+
## Tests
- `Sources` 文件夹中的每个不可运行的模块在 `Tests` 中都可以创建一个对应的文件夹,包含 `XCTest` 模块上构建的用例,用来测试你的代码。
-
- 可以在命令行使用 `swift test`或在 Xcode 中按 `⌘+U` 来进行测试。
-
+`Sources` 文件夹中的每个不可运行的模块在 `Tests` 中都可以创建一个对应的文件夹,包含 `XCTest` 模块上构建的用例,用来测试你的代码。可以在命令行使用 `swift test`或在 Xcode 中按 `⌘+U` 来进行测试。
### AppTests
@@ -86,5 +83,6 @@ models 文件夹常用于存放 `Content` 和 Fluent `Model` 的类或结构体
## Package.swift
-最后,是这个项目运行所依赖的第三方库配置。
+最后是 [SPM](spm.zh.md) 文件,是这个项目运行所依赖的第三方库配置。
+
diff --git a/docs/getting-started/hello-world.zh.md b/docs/getting-started/hello-world.zh.md
index d0979fc7..8494052e 100644
--- a/docs/getting-started/hello-world.zh.md
+++ b/docs/getting-started/hello-world.zh.md
@@ -5,14 +5,12 @@
如果尚未安装 Swift 和 Vapor Toolbox,请查看安装部分。
-- [安装 → macOS](../install/macos.md)
-- [安装 → Linux](../install/linux.md)
+- [安装 → macOS](../install/macos.md)
+- [安装 → Linux](../install/linux.md)
## 创建
-首先,在电脑上创建 Vapor 项目。
-
-打开终端并使用以下 Toolbox 的命令行,这将会在当前目录创建一个包含 Vapor 项目的文件夹。
+首先,在电脑上创建 Vapor 项目。打开终端并使用以下 Toolbox 的命令行,这将会在当前目录创建一个包含 Vapor 项目的文件夹。
```sh
vapor new hello -n
@@ -21,6 +19,8 @@ vapor new hello -n
!!! tip "建议"
使用 `-n` 为所有的问题自动选择 no 来为您提供一个基本的模板。
+!!! tip "建议"
+ Vapor 以及自带的模板默认使用 `async`/`await`。如果你的系统不能更新到 macOS 12 或者想继续使用 `EventLoopFuture`。运行命令时可以添加此标志 `--branch macos10-15`。
命令完成后,切换到新创建的文件夹
@@ -39,11 +39,11 @@ open Package.swift
```
-Xcode 将自动开始下载Swift包管理器依赖,在第一次打开一个项目时,这可能需要一些时间,当依赖下载后,Xcode将显示可以用的 Scheme。
+Xcode 将自动开始下载 Swift 包管理器依赖,在第一次打开一个项目时,这可能需要一些时间,当依赖下载后,Xcode 将显示可以用的 Scheme。
-在窗口的顶部,在Play和Stop按钮的右侧,单击项目名称以选择项目的Scheme,并选择一个适当的target——大概率是“My Mac”。单击play按钮编译并运行项目。
+在窗口的顶部,在 Play 和 Stop 按钮的右侧,单击项目名称以选择项目的 Scheme,并选择一个适当的 target ——大概率是 “My Mac”。单击 play 按钮编译并运行项目。
-你应该会在Xcode窗口的底部看到控制台弹出。
+你应该会在 Xcode 窗口的底部看到控制台输出以下信息。
```sh
[ INFO ] Server starting on http://127.0.0.1:8080
@@ -51,7 +51,7 @@ Xcode 将自动开始下载Swift包管理器依赖,在第一次打开一个项
### Linux
-在 Linux 和其他操作系统上(甚至在 macOS 上如果你不想使用 Xcode ),你可以在你喜欢的编辑器中编辑项目,比如 Vim 或 VSCode 。关于设置其他ide的最新细节,请参阅 [Swift Server Guides](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md)。
+在 Linux 和其他操作系统上(甚至在 macOS 上如果你不想使用 Xcode),你可以在你喜欢的编辑器中编辑项目,比如 Vim 或 VSCode 。关于设置其他 IDE 的最新细节,请参阅 [Swift Server Guides](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md)。
在终端运行以下命令来编译和运行你的项目。
@@ -64,7 +64,7 @@ swift run
[ INFO ] Server starting on http://127.0.0.1:8080
```
-## Visit Localhost
+## 访问 Localhost
打开你的浏览器,然后访问 localhost:8080/hello 或者 http://127.0.0.1:8080
diff --git a/docs/getting-started/spm.zh.md b/docs/getting-started/spm.zh.md
index 96864150..cbbdb9a5 100644
--- a/docs/getting-started/spm.zh.md
+++ b/docs/getting-started/spm.zh.md
@@ -1,8 +1,8 @@
# Swift Package Manager
-[Swift Package Manager](https://swift.org/package-manager/)(SPM)用于构建项目的源代码和依赖项。由于 Vapor 严重依赖 SPM,因此最好了解其工作原理。
+[Swift Package Manager](https://swift.org/package-manager/)(SPM) 用于构建项目的源代码和依赖项。由于 Vapor 严重依赖 SPM,因此最好了解其工作原理。
-SPM 与 Cocoapods,Ruby gems 和 NPM 相似。您可以在命令行中将 SPM 与 `swift build`、`swift test` 等命令或兼容的 IDE 结合使用。但是,与其他软件包管理器不同,SPM 软件包没有中央软件包索引。SPM 使用 [Git 标签](https://git-scm.com/book/en/v2/Git-Basics-Tagging) 和 URL 来获取 Git 存储库和依赖版本。
+SPM 与 Cocoapods,Ruby gems 和 NPM 相似。你可以在命令行中将 SPM 与 `swift build`、`swift test` 等命令或兼容的 IDE 结合使用。但是,与其他软件包管理器不同,SPM 软件包没有中央软件包索引。SPM 使用 [Git 标签](https://git-scm.com/book/en/v2/Git-Basics-Tagging) 和 URL 来获取 Git 存储库和依赖版本。
## Package Manifest
@@ -39,7 +39,7 @@ let package = Package(
### Tools Version
-第一行表示需要使用的 Swift tools 版本号,它指明了 Swift 的最低可用版本。Package 描述 API 可能随着 Swift 版本而改变,所以这一行将让 Swift 确认怎么取解析你的配置文件。
+第一行表示需要使用的 Swift tools 版本号,它指明了 Swift 的最低可用版本。Package 描述 API 可能随着 Swift 版本而改变,所以这一行将让 Swift 确认怎么去解析你的配置文件。
### Package Name
@@ -47,15 +47,15 @@ let package = Package(
### Platforms
-`platforms` 数组指定此程序包支持的平台和版本。通过指定 `.macOS(.v10_14)`,说明此软件包需要 macOS Mojave 或更高版本。 Xcode 加载该项目时,它将最低部署版本设置为 10.14,以便您可以使用所有可用的 API。
+`platforms` 数组指定此程序包支持的平台和版本。通过指定 `.macOS(.v10_14)`,说明此软件包需要 macOS Mojave 或更高版本。 Xcode 加载该项目时,它将最低部署版本设置为 10.14,以便你可以使用所有可用的 API。
### Products
-products 字段代表 package 构建的时候要生成的 targets。示例中,有两个 target,一个是 `library`,另一个是 `executable`。
+products 字段代表 package 构建的时候要生成的 targets。示例中,有两个 target,一个是库,另一个是可执行文件。
### Dependencies
-dependencies 字段代表项目需要依赖的 package。所有 Vapor 应用都依赖 Vapor package ,但是你也可以添加其它想要的 dependency。
+dependencies 字段代表项目需要依赖的 package。所有 Vapor 应用都依赖 Vapor package ,但是你也可以添加其它想要的依赖库。
如上面这个示例,[vapor/vapor](https://github.com/vapor/vapor) 4.0 或以上版本是这个 package 的 dependency。当在 package 中添加了 dependency 后,接下来你必须设置是哪个 targets 依赖了新的可用模块。
@@ -64,9 +64,9 @@ dependencies 字段代表项目需要依赖的 package。所有 Vapor 应用都
Targets 是你的 package 里包含 modules、executables 以及 tests 总和。虽然可以添加任意多的 targets 来组织代码,但大部分 Vapor 应用有 3 个 target 就足够了。每个 target 声明了它依赖的 module。为了在代码中可以 import 这些 modules ,你必须在这里添加 module 名字。一个 target 可以依赖于工程中其它的 target 或者任意你添加在 [dependencies](#dependencies) 数组中且暴露出来的 modules。
!!! tip "建议"
- 可运行 targets (包含 `main.swift` 文件的 target) 不能被其它 modules 导入。这就是为什么 Vapor 会有 `App` 和 `Run` 两种 target。任何包含在 App 中的代码都可以在 `AppTests` 中被测试验证。
+ 可运行 targets(包含 `main.swift` 文件的 target)不能被其它 modules 导入。这就是为什么 Vapor 会有 `App` 和 `Run` 两种 target。任何包含在 App 中的代码都可以在 `AppTests` 中被测试验证。
-## Folder Structure
+## 目录结构
以下是典型的 SPM package 目录结构。
@@ -87,7 +87,7 @@ Targets 是你的 package 里包含 modules、executables 以及 tests 总和。
## Package.resolved
-第一次构建成功后,SPM 将会自动创建一个 `Package.resolved` 文件。`Package.resolved` 保存了当前项目所有用到的 `dependency` 版本。下一次当你构建你的项目时将会同样的版本,甚至是这些依赖有更新的版本也不会也使用更新的版本。
+第一次构建成功后,SPM 将会自动创建一个 `Package.resolved` 文件。`Package.resolved` 保存了当前项目所有用到的依赖库版本。下一次当你构建你的项目时将会同样的版本,甚至是这些依赖有更新的版本时也不会使用。
更新依赖, 运行 `swift package update`.
@@ -97,4 +97,4 @@ Targets 是你的 package 里包含 modules、executables 以及 tests 总和。
如果要更新到最新的依赖项,请使用 File → Swift Packages → 更新到最新的 Swift Package 版本。
-您可能还想将 `.swiftpm` 文件添加到您的 `.gitignore` 文件中(Xcode 在此处存储 Xcode 项目配置)。
+你可能还想将 `.swiftpm` 文件添加到你的 `.gitignore` 文件中(Xcode 在此处存储 Xcode 项目配置)。
diff --git a/docs/getting-started/xcode.zh.md b/docs/getting-started/xcode.zh.md
index d3d7c7c3..855942f5 100644
--- a/docs/getting-started/xcode.zh.md
+++ b/docs/getting-started/xcode.zh.md
@@ -1,18 +1,18 @@
# Xcode
-这页将显示一下使用Xcode的提示和技巧。如果你使用不同的开发环境,你可以跳过此页。
+这篇将介绍一些使用 Xcode 的提示和技巧。如果你使用不同的开发环境,你可以跳过此篇。
## 自定义工作目录(Working directory)
-Xcode 将默认在 _DerivedData_ 目录运行项目。这与项目的根目录(你的 _Package.swift_ 文件所在的目录)不在同一个目录,这意味着 Vapor 将找不到像 _.env_ 或者 _Public_ 等一些文件和目录。
+Xcode 将默认在 _DerivedData_ 目录运行项目。这与项目的根目录(你的 _Package.swift_ 文件所在的目录)不在同一个目录,这意味着 Vapor 将找不到像 _.env_ 或者 _Public_ 等一些文件和目录。
-如果在运行应用程序时看到以下警告,您就可以知道这正在发生。
+如果在运行应用程序时看到以下警告,你就可以知道这正在发生。
```fish
[ WARNING ] No custom working directory set for this scheme, using /path/to/DerivedData/project-abcdef/Build/
```
-要解决这个问题,你可以在 Xcode schem 中为你的项目设置一个自定义的工作目录。
+要解决这个问题,你可以在 Xcode scheme 中为你的项目设置一个自定义的工作目录。
首先,编辑项目的 scheme。
@@ -22,16 +22,16 @@ Xcode 将默认在 _DerivedData_ 目录运行项目。这与项目的根目录(

-在 scheme 编辑器中,选择 _Run_ action 以及 _Options_ tab页。选中 _Use custom working directory_ 然后输入你项目根目录。
+在 scheme 编辑器中,选择 _Run_ action 以及 _Options_ tab 页。选中 _Use custom working directory_ 然后输入你项目根目录。

-你可以在终端中运行 `pwd` 来获取你项目根目录的绝对目录
+你可以在终端中运行 `pwd` 来获取你项目根目录的绝对目录。
```fish
# 确认我们在 vapor 项目目录
vapor --version
-# get path to this folder
+# 获取当前目录的路径
pwd
```