Skip to content

Commit 5cd8486

Browse files
chore(i18n): crowdin sync (#5205)
The new translations for the Simplified Chinese, Indonesian.
1 parent f0ce6b6 commit 5cd8486

File tree

8 files changed

+81
-81
lines changed

8 files changed

+81
-81
lines changed

pages/id/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ labels:
44
current-version: Versi Saat Ini
55
download: Unduh
66
download-for: Unduh untuk
7-
other-downloads: Unduhan lainnya
7+
other-downloads: Lihat lainnya
88
current: Saat ini
99
lts: LTS
1010
tagline-current: Fitur Terbaru
1111
tagline-lts: Disarankan untuk Banyak Orang
12-
changelog: Log Perubahan
12+
changelog: Log Perub.
1313
api: Dokumentasi API
1414
version-schedule-prompt: Untuk informasi tentang rilis yang didukung, lihat
15-
version-schedule-prompt-link-text: jadwal rilis (LTS)
15+
version-schedule-prompt-link-text: jadwal rilis
1616
---
1717

1818
Node.js® adalah lingkungan runtime JavaScript lintas platform sumber terbuka.

pages/zh-cn/docs/guides/anatomy-of-an-http-transaction.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ request.on('data', (chunk) => {
7777

7878
因为 `request` 是一个 [`ReadableStream`][] 对象,它同样也是 [`EventEmitter`][] 对象。所以当有错误发生时,表现的行为是很相像的。当有错误在 `request` 流上发生时,它会自动激发自身的 `'error'` 事件。**如果你不去处理监听这个事件,此错误将被*抛出*,这导致你的程序崩溃。** 你应该无论如何都要添加 `'error'` 事件去监听你的请求对象,哪怕你只是做一个日志或者用你自己的独有方式去处理(当然,最佳的处理方式是返回一些出错的信息,这已是后话了)。
7979

80-
当然还有一些其它的方法来[处理错误][],诸如其它的抽象化概念和工具等。但是你总是要意识到错误的确会发生,所以你应当处理它们
80+
`request`流中错误的表现便是通过激发(捕获)`'error'`事件。如果你不捕获处理的话,程序一旦出错会让你的 Node.js 程序立马崩溃。因此你务必要这样做——即便你啥都不处理,只是做一个日志也行(当然,最佳实践方法实发送某种 HTTP 出错消息给客(比如出错码等),这是后话)
8181

8282
```javascript
8383
request.on('error', (err) => {
@@ -86,11 +86,11 @@ request.on('error', (err) => {
8686
});
8787
```
8888

89-
直到现在,我们已经谈到了如何创建一个对象,如果从请求中获取方法,请求地址,请求头和请求体。当我们把它们组合到一起,它就看上去是这个样子:
89+
当然还有一些其它的方法来 [处理错误][]:诸如其它的抽象化概念和工具等。但是你总是要意识到错误的确会发生,所以你应当处理它们。
9090

9191
## 我们已经聊得那么多了
9292

93-
如果我们运行这个示例代码,我们只能 *接收* 到请求但得不到 *回应*。实际上,如果你在浏览器内运行这个示例,你的请求只会超时,因为服务器那边根本没有返回给客户端任何东西。
93+
直到现在,我们已经谈到了如何创建一个对象,如果从请求中获取方法,请求地址,请求头和请求体。当我们把它们组合到一起,它就看上去是这个样子:
9494

9595
```javascript
9696
const http = require('http');
@@ -110,36 +110,36 @@ http.createServer((request, response) => {
110110
}).listen(8080); // Activates this server, listening on port 8080.
111111
```
112112

113-
谈了那么久,我们都还没有说到 `response` 对象。它是一个 [`ServerResponse`][] 实例,而 ServerRespose 又是 [`WritableStream`][]。它包含了很多方法可以用以把数据返回给客户端。我们下面就将涉及到此议题
113+
如果我们运行这个示例代码,我们只能*接收*到请求但得不到*回应*。实际上,如果你在浏览器内运行这个示例,你的请求只会超时,因为服务器那边根本没有返回给客户端任何东西
114114

115-
如果你嫌麻烦不想设置它,返回客户端的默认状态码总是 200。当然,不是每个 HTTP 返回码必须都是 200,在某些情况下你一定希望返回一个不同的状态码,所以你应该设置 `statusCode` 属性
115+
谈了那么久,我们都还没有说到 `response` 对象。它是一个[`ServerResponse`][],实例,而 ServerRespose 又是 [`WritableStream`][]。它包含了很多方法可以用以把数据返回给客户端。我们下面就将涉及到此议题
116116

117117
## HTTP 状态码
118118

119-
我们同样也有其它捷径去做这件事,后面我们会很快看到
119+
如果你嫌麻烦不想设置它,返回客户端的默认状态码总是 200。当然,不是每个 HTTP 返回码必须都是 200,在某些情况下你一定希望返回一个不同的状态码,所以你应该设置 `statusCode` 属性
120120

121121
```javascript
122122
response.statusCode = 404; // Tell the client that the resource wasn't found.
123123
```
124124

125-
响应头通过一个 [`setHeader`][] 的属性很方便的设置
125+
我们同样也有其它捷径去做这件事,后面我们会很快看到
126126

127127
## 设置响应头
128128

129-
设置响应头时,它们的名字是大小写敏感的。如果你重复设置响应头,最后一次设置的值也就是系统得到的值
129+
响应头通过一个[`setHeader`][]的属性很方便地设置
130130

131131
```javascript
132132
response.setHeader('Content-Type', 'application/json');
133133
response.setHeader('X-Powered-By', 'bacon');
134134
```
135135

136-
我们之前讨论的设置响应头以及状态码的方法建立在你使用“隐式设置”的方式,这意味着你在发送消息体之前依赖于 node 发送请求头
136+
设置响应头时,它们的名字是大小写敏感的。如果你重复设置响应头,最后一次设置的值也就是系统得到的值
137137

138138
## 显示发送头数据
139139

140-
如果你愿意,你可以为返回流重写响应头。为做到这点,你可以使用 [`writeHead`][] 方法向消息流重写状态码和响应头
140+
我们之前讨论的设置响应头以及状态码的方法建立在你使用“隐式设置”的方式,这意味着你在发送消息体之前依赖于 node 发送请求头
141141

142-
一旦设置了响应头(无论是隐式还是显式设置),你已经为发送返回数据做好了准备
142+
如果你愿意,你可以为返回流重写响应头。为做到这点,你可以使用 [`writeHead`][],方法向消息流重写状态码和响应头
143143

144144
```javascript
145145
response.writeHead(200, {
@@ -148,11 +148,11 @@ response.writeHead(200, {
148148
});
149149
```
150150

151-
既然 `response` 对象是一个 [`WritableStream`][],向客户端写入返回体只是一个普通的流方法的问题
151+
一旦设置了响应头(无论是隐式还是显式设置),你已经为发送返回数据做好了准备
152152

153153
## 发送返回体
154154

155-
消息流上的 `end` 方法同时还可以带入一些可选数据作为流上最后需要发送的一些数据,所以我们可以简单地把以上的代码做如下形式的简化:
155+
既然 `response` 对象是一个[`WritableStream`][],所以向客户端写入返回体只是一个普通的流方法的问题。
156156

157157
```javascript
158158
response.write('<html>');
@@ -163,21 +163,21 @@ response.write('</html>');
163163
response.end();
164164
```
165165

166-
`response` 返回流同样也会触发 `'error'` 事件,某种程度上说你不得不自己去处理它。之前全部关于 `request` 消息流出错的处理方法在这里也同样适用。
166+
消息流上的 `end`方法同时还可以带入一些可选数据作为流上最后需要发送的一些数据,所以我们可以简单地把以上的代码做如下形式的简化:
167167

168168
```javascript
169169
response.end('<html><body><h1>Hello, World!</h1></body></html>');
170170
```
171171

172-
> **注意:** 你只有在开始向返回体写数据 *之前* 设置状态和响应头,这点很重要。 因为响应头信息总是在消息体前到达。
172+
> **注意:** 你只有在开始向返回体写数据 *之前*设置状态和响应头,这点很重要。因为响应头信息总是在消息体前到达。
173173
174174
## 另一件一笔带过关于错误的事
175175

176-
现在既然我们已经学了如何处理 HTTP 返回信息,现在让我们把这些零碎东西组合到一起。基于先前的示例代码,我们将作出一个服务端,使它可以将从用户接受到的全部信息返回给用户。我们将通过 `JSON.stringify` 对消息数据进行格式化
176+
`response`返回流同样也会触发 `'error'`事件,某种程度上说你不得不自己去处理它。之前全部关于`request`消息流出错的处理方法在这里也同样适用
177177

178178
## 把之前所学的全部整合到一起
179179

180-
让我们简化之前的代码,做一个可以有响应的简单的服务端。它同样也可以把接受到的任何信息返回给客户端。我们所要做的就是从请求流中把请求数据取出,然后原样写回到返回流中即可。就如我们之前做的那么简单
180+
现在既然我们已经学了如何处理 HTTP 返回信息,现在让我们把这些零碎东西组合到一起。基于先前的示例代码,我们将作出一个服务端,使它可以将从用户接受到的全部信息返回给用户。我们将通过`JSON.stringify`对消息数据进行格式化
181181

182182
```javascript
183183
const http = require('http');
@@ -216,7 +216,7 @@ http.createServer((request, response) => {
216216

217217
## 服务器响应的示例代码
218218

219-
现在让我们调整一下,我们只对以下条件应答:
219+
让我们简化之前的代码,做一个可以有响应的简单的服务端。它同样也可以把接受到的任何信息返回给客户端。我们所要做的就是从请求流中把请求数据取出,然后原样写回到返回流中即可。就如我们之前做的那么简单。
220220

221221
```javascript
222222
const http = require('http');
@@ -232,12 +232,12 @@ http.createServer((request, response) => {
232232
}).listen(8080);
233233
```
234234

235-
其它任何情况均返回 404。
235+
现在让我们调整一下,我们只对以下条件应答:
236236

237237
* 请求方法是 POST 方式。
238238
* 访问路径是 `/echo`
239239

240-
太棒了!现在我们进一步简化它。记住,`request` 是一个 [`ReadableStream`][]对象,`response`对象是一个 [`WritableStream`][]。那意味着我们可以使用 [`pipe`][]直接从一个流转到另外一个流。那的确是我们需要的:
240+
其它任何情况均返回 404。
241241

242242
```javascript
243243
const http = require('http');
@@ -260,7 +260,7 @@ http.createServer((request, response) => {
260260

261261
> **注意:** 为了检查请求路径,我们设计了一个路由格式。 其它形式的路由 `switch`,简单的可以通过 `switch` 的形式检查,复杂的诸如 [`express`][] 框架,如果你正在寻找路由而不需要做其它事情,简单用 [`router`][]
262262
263-
就是这样!
263+
太棒了!现在我们进一步简化它。记住,`request`是一个[`ReadableStream`][]对象,`response`对象是一个[`WritableStream`][]对象。那意味着我们可以使用 [`pipe`][]直接从一个流转到另外一个流。那的确是我们需要的:
264264

265265
```javascript
266266
const http = require('http');
@@ -275,13 +275,13 @@ http.createServer((request, response) => {
275275
}).listen(8080);
276276
```
277277

278-
我们还尚未完全完成,如之前多次谈到,错误随时可能发生,所以我们需要处理它们。
278+
就是这样!
279279

280-
为了处理请求流上的错误,我们把错误记录到 `stderr` 对象中,然后回发一个 400 的代码表示 `错误请求`。在现实生活中,我们想检查分析错误,了解它们正确的状态码以及具体出错信息。具体可以参考 [`Error` 文档信息][]
280+
我们还尚未完全完成,如之前多次谈到,错误随时可能发生,所以我们需要处理它们。
281281

282-
对于返回,我们把错误日志记录到 `stderr`
282+
为了处理请求流上的错误,我们把错误记录到`stderr`对象中,然后回发一个 400 的代码表示`Bad Request`。在现实生活中,我们想检查分析错误,了解它们正确的状态码以及具体出错信息。具体可以参考[`Error` documentation][]
283283

284-
我们现在已经涉及到了大部分基本的 HTTP 请求知识,此时此刻,你应该已经具备了:
284+
对于返回,我们把错误日志记录到 `stderr`中。
285285

286286
```javascript
287287
const http = require('http');
@@ -304,7 +304,7 @@ http.createServer((request, response) => {
304304
}).listen(8080);
305305
```
306306

307-
从这些基础知识中,关于 Node.js 的 HTTP 服务一些实用案例已经逐步被构建起来,API 文档还提供了大量其它的说明,所以请详细阅读 [`EventEmitters`][][`Streams`][] 以及 [`HTTP`][]
307+
我们现在已经涉及到了大部分基本的 HTTP 请求知识,此时此刻,你应该已经具备了:
308308

309309
* 实例化带有请求处理函数的 HTTP 服务器,并让它在端口上监听。
310310
*`request` 对象中获取请求头部、URL、方法和请求体等数据。
@@ -337,5 +337,5 @@ http.createServer((request, response) => {
337337
[`express`]: https://www.npmjs.com/package/express
338338
[`router`]: https://www.npmjs.com/package/router
339339
[`pipe`]: https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options
340-
[`Error` 文档信息]: https://nodejs.org/api/errors.html
340+
[`Error` documentation]: https://nodejs.org/api/errors.html
341341
[`HTTP`]: https://nodejs.org/api/http.html

pages/zh-cn/docs/guides/diagnostics/live-debugging/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ layout: docs.hbs
1818

1919
用户或许已经观察到对于特定的输入,程序无法输出预期值。举个例子:一个 HTTP 服务以 JSON 格式返回数据,但某些字段却是空的。许多错误的原因皆可导致此问题的发生,不过在本示例中,我们 着重关注程序的逻辑以及如何修复。
2020

21-
### 调试入手
21+
### 如何调试
2222

2323
在本示例中,用户需要理解“程序路径”:它表示为响应一个特定的触发,应用程序所执行的路径(例如:HTTP 请求路径)。同时用户也希望通过“走单步”的方式贯穿整个代码,顺便控制代码的执行流程,以及观察 内存中变量中到底存储了什么数据。预知详情,可以点击下面的链接:
2424

pages/zh-cn/docs/guides/diagnostics/memory/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ layout: docs.hbs
88
在本文档中,你讲学到如何调试与内存相关的一系列问题。
99

1010
* [内存诊断相关](#内存诊断相关)
11-
* [内存溢出](#内存耗尽)
11+
* [内存耗尽](#内存耗尽)
1212
* [相关症状](#内存耗尽的相关症状)
1313
* [副作用](#内存耗尽的副作用)
1414
* [低效率内存使用](低效率内存使用)

pages/zh-cn/docs/guides/diagnostics/memory/using-gc-traces.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ Total: 1000000 entries
9494
| 2.0 | GC 运行后占有内存(MiB) |
9595
| (4.2) | GC 运行后总占有内存(MiB) |
9696
| 0.5 / 0.0 ms (average mu = 1.000, current mu = 1.000) | GC 花费的时间(ms) |
97-
| allocation failure | GC 具体原因 |
97+
| allocation failure | GC 内存分配失败的具体原因 |
9898

9999
在此我们只需关注两件事:
100100
* Scavenge
@@ -276,7 +276,7 @@ v8.setFlagsFromString('--notrace-gc');
276276

277277
### 使用“性能钩子”
278278

279-
你可以通过 [PerformanceObserver][],从回调函数中得到一个诸如 [PerformanceEntry][] 一样的信息
279+
在 Node.js 中,你可以使用[性能钩子][]来跟踪垃圾回收的具体情况
280280

281281
```js
282282
const { PerformanceObserver } = require('perf_hooks');
@@ -307,9 +307,9 @@ obs.disconnect();
307307

308308
### 使用“性能钩子”检查一个跟踪信息
309309

310-
举个例子:
310+
你可以通过[PerformanceObserver][],从回调函数中得到一个诸如[PerformanceEntry][]一样的 GC 静态数据信息
311311

312-
预知更多详情,请参考[性能钩子的相关文档][性能钩子]
312+
举个例子:
313313

314314
```ts
315315
PerformanceEntry {
@@ -336,7 +336,6 @@ PerformanceEntry {
336336
[PerformanceObserver]: https://nodejs.org/api/perf_hooks.html#perf_hooks_class_performanceobserver
337337
[`--max-old-space-size`]: https://nodejs.org/api/cli.html#--max-old-space-sizesize-in-megabytes
338338
[性能钩子]: https://nodejs.org/api/perf_hooks.html
339-
[性能钩子]: https://nodejs.org/api/perf_hooks.html
340339
[performance hooks]: https://nodejs.org/api/perf_hooks.html
341340
[练习]: https://github.com/nodejs/diagnostics/tree/main/documentation/memory/step3/exercise
342341
[堆捕获相关指南]: https://github.com/nodejs/nodejs.org/blob/main/locale/en/docs/guides/diagnostics/memory/using-heap-snapshot.md#how-to-find-a-memory-leak-with-heap-snapshots

pages/zh-cn/docs/guides/diagnostics/memory/using-heap-snapshot.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ exec 3>&-
123123
8. 在顶部下拉菜单中选择较新的快照,并切换模式从 *Summary**Comparison* ![比较下拉列表][9]
124124
9. 在最底部的面板中寻找他们之间较大的差异部分,浏览那些导致形成这些原因的相关引用。
125125

126-
你可以通过[内存堆快照练习][heapsnapshot exercise]来锻炼你捕获快照以及寻找内存泄露的能力。
126+
你可以通过[此内存堆快照练习][heapsnapshot exercise]来锻炼你捕获快照以及寻找内存泄露的能力。
127127

128128
[Chrome 开发工具]: https://developer.chrome.com/docs/devtools/
129129
[2]: /static/images/docs/guides/diagnostics/tools.png
@@ -134,4 +134,4 @@ exec 3>&-
134134
[openprofiling]: https://github.com/vmarchaud/openprofiling-node
135135
[8]: /static/images/docs/guides/diagnostics/load-snapshot.png
136136
[9]: /static/images/docs/guides/diagnostics/compare.png
137-
[heapsnapshot exercise]: https://github. com/naugtur/node-example-heapdump
137+
[heapsnapshot exercise]: https://github.com/naugtur/node-example-heapdump

pages/zh-cn/docs/guides/diagnostics/poor-performance/using-linux-perf.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ layout: docs.hbs
77

88
[Linux Perf](https://perf.wiki.kernel.org/index.php/Main_Page) 借助 JavaScript 提供您低级别程度的 CPU 分析, 本地分析以及操作系统级别的帧分析。
99

10-
**注意:**此教程仅针对 Linux 操作系统
10+
**重要**:此教程仅在 Linux 上可用
1111

1212
## 我该怎么做?
1313

0 commit comments

Comments
 (0)