Skip to content

Commit b077721

Browse files
github-actions[bot]crowdin-botbjohansebas
authored
i18n: new crowdin translations (#2296)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Sebastian Beltran <bjohansebas@gmail.com>
1 parent b8524a3 commit b077721

346 files changed

Lines changed: 56502 additions & 691 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/update-external-docs.yml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,14 @@ jobs:
104104
with:
105105
persist-credentials: false
106106

107+
- name: Set up Node.js
108+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
109+
with:
110+
node-version: '24.13'
111+
112+
- name: Install dependencies
113+
run: npm ci
114+
107115
# see all the options at https://github.com/crowdin/github-action
108116
- name: Crowdin PR
109117
uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 # https://github.com/crowdin/github-action/releases/tag/v2.13.0
@@ -112,12 +120,23 @@ jobs:
112120
upload_translations: false
113121
download_translations: true
114122
localization_branch_name: crowdin/translations
115-
create_pull_request: true
116-
pull_request_title: 'i18n: new crowdin translations'
117-
pull_request_body: >
118-
New Crowdin translations from the [express.js crowdin project](https://express.crowdin.com/u/projects/1). cc: @expressjs/docs-wg
119-
pull_request_base_branch_name: 'redesign' # TODO: update to "main" when we merge redesign into main
123+
create_pull_request: false
120124
env:
121125
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
122126
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
123127
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
128+
129+
- name: Format files
130+
run: npm run format
131+
132+
- name: Create Pull Request
133+
uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1
134+
env:
135+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
136+
with:
137+
commit-message: 'i18n: new crowdin translations'
138+
title: 'i18n: new crowdin translations'
139+
body: >
140+
New Crowdin translations from the [express.js crowdin project](https://express.crowdin.com/u/projects/1). cc: @expressjs/docs-wg
141+
labels: docs
142+
branch: crowdin/translations

netlify.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
[build]
22
command = "npm run build"
33
publish = "dist"
4+
5+
[build.environment]
6+
NODE_OPTIONS = "--max-old-space-size=4096"
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
title: Template-Engines für Express entwickeln
3+
description: Erfahren Sie, wie Sie mithilfe von app.engine() benutzerdefinierte Template-Engines für Express.js entwickeln können, mit Beispielen zur Erstellung und Integration Ihrer eigenen Template-Rendering-Logik.
4+
---
5+
6+
Benutze die `app.engine(ext, callback)` Methode, um deine eigene Template-Engine zu erstellen. `ext` bezieht sich auf die Dateierweiterung, und `callback` ist die Template-Engine-Funktion, , die die folgenden Elemente als Parameter akzeptiert: den Speicherort der Datei, das Optionsobjekt und die Callback-Funktion.
7+
8+
Der folgende Code ist ein Beispiel für die Implementierung einer sehr einfachen Template-Engine zum Rendern von `.ntl` Dateien.
9+
10+
```js
11+
const fs = require('fs'); // this engine requires the fs module
12+
app.engine('ntl', (filePath, options, callback) => {
13+
// define the template engine
14+
fs.readFile(filePath, (err, content) => {
15+
if (err) return callback(err);
16+
// this is an extremely simple template engine
17+
const rendered = content
18+
.toString()
19+
.replace('#title#', `<title>${options.title}</title>`)
20+
.replace('#message#', `<h1>${options.message}</h1>`);
21+
return callback(null, rendered);
22+
});
23+
});
24+
app.set('views', './views'); // specify the views directory
25+
app.set('view engine', 'ntl'); // register the template engine
26+
```
27+
28+
Deine App wird nun in der Lage sein, `.ntl`-Dateien zu rendern. Erstelle eine Datei namens `index.ntl` im `views` Verzeichnis mit folgendem Inhalt.
29+
30+
```pug
31+
#title#
32+
#message#
33+
```
34+
35+
Erstellen Sie dann die folgende Route in Ihrer App.
36+
37+
```js
38+
app.get('/', (req, res) => {
39+
res.render('index', { title: 'Hey', message: 'Hello there!' });
40+
});
41+
```
42+
43+
Wenn du eine Anfrage an die Startseite stellt, wird `index.ntl` als HTML dargestellt.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: Express hinter Proxies
3+
description: Lernen Sie, wie Sie Express.js Anwendungen so konfigurieren, dass sie hinter Reverse Proxies korrekt arbeiten, einschließlich der Trust-Proxy-Einstellung für Client-IP-Adressen.
4+
---
5+
6+
import Alert from '@components/primitives/Alert/Alert.astro';
7+
8+
Wenn Sie eine Express-App hinter einem Reverse Proxy ausführen, können einige der Express-APIs andere Werte als erwartet zurückgeben. Um dies anzupassen die Einstellung `trust proxy` kann verwendet werden, um Informationen auszublenden, die vom Reverse Proxy in den Express API bereitgestellt werden. Das häufigste Problem sind Express-APIs, die die IP-Adresse des Clients offenlegen, statt dessen eine interne IP-Adresse des Reverse Proxy anzeigen.
9+
10+
<Alert type="info">
11+
12+
Bei der Konfiguration der `trust proxy` Einstellung ist es wichtig, das genaue Setup des
13+
Reverse Proxy zu verstehen. Da diese Einstellung den in der Anfrage angegebenen Werten vertrauen wird Es ist wichtig, dass
14+
die Kombination der Einstellung in Express mit der Funktionsweise des Reverse Proxy übereinstimmt.
15+
16+
</Alert>
17+
18+
Die Anwendungseinstellung `trust proxy` kann auf einen der in der folgenden Tabelle aufgelisteten Werte gesetzt werden.
19+
20+
<table class="doktierbar" border="1" markdown="1">
21+
<thead><tr><th>Typ</th><th>Wert</th></tr></thead>
22+
<tbody>
23+
<tr>
24+
<td>Boolean</td>
25+
<td markdown="1">
26+
Wenn `true`, wird die IP-Adresse des Clients als linker Eintrag im `X-Forwarded-For` Header verstanden.
27+
28+
Falls „falsch“ die App als direkt gegenüber dem Client verstanden wird und die IP-Adresse des Clients von „req.socket.remoteAddress“ abgeleitet wird. Dies ist die Standardeinstellung.
29+
30+
<Alert type="warnung">
31+
Wenn Sie auf `true` setzen, ist es wichtig sicherzustellen, dass der letzte Reverse Proxy alle folgenden HTTP-Header löscht/überschreibt: `X-Forwarded-For`, `X-Forwarded-Host` und `X-Forwarded-Proto`, andernfalls ist es möglich, dass der Client irgendeinen Wert angibt.
32+
</Alert>
33+
</td>
34+
</tr>
35+
<tr>
36+
<td>IP-Adressen</td>
37+
<td markdown="1">
38+
Eine IP-Adresse, ein Subnetz oder ein Array von IP-Adressen und Subnetzen, die darauf vertrauen, dass es sich um einen Reverse Proxy handelt. Die folgende Liste zeigt die vorkonfigurierten Subnetznamen an:
39+
40+
- loopback - `127.0.0.1/8`, `::1/128`
41+
- linklocal - `169.254.0.0/16`, `fe80::/10`
42+
- uniquelocal - `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `fc00::/7`
43+
44+
Sie können IP-Adressen auf jede der folgenden Arten festlegen:
45+
46+
```js
47+
app.set('trust proxy', 'loopback'); // ein einzelnes Subnetz
48+
app.set('trust proxy', 'loopback, 123.123.123.123''); // ein Subnetz und eine Adresse
49+
angeben. et('trust proxy', 'loopback, linklocal, uniquelocal'); // mehrere Subnetze als CSV
50+
app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']); // mehrere Subnetze als Array angeben
51+
```
52+
53+
Wenn angegeben, werden die IP-Adressen oder Subnetze vom Prozess der Adressermittlung ausgeschlossen und die dem Anwendungsserver nächstgelegene nicht vertrauenswürdige IP-Adresse wird als IP-Adresse des Clients ermittelt. Dies funktioniert indem überprüft wird, ob `req.socket.remoteAddress` vertrauenswürdig ist. Wenn ja, dann wird jede Adresse in `X-Forwarded-For` von rechts nach links bis zur ersten Adresse überprüft, die nicht vertrauenswürdig ist.
54+
55+
</td>
56+
</tr>
57+
<tr>
58+
<td>Nummer</td>
59+
<td markdown="1">
60+
Benutzen Sie die Adresse, die höchstens `n` von der Express-Anwendung entfernt ist. `req.socket.remoteAddress` ist der erste Hop, und der Rest wird im `X-Forwarded-For` Header von rechts nach links gesucht. Ein Wert von `0` bedeutet, dass die erste nicht vertrauenswürdige Adresse `req.socket.remoteAddress` ist, d.h. es gibt keinen Reverse-Proxy.
61+
62+
<Alert type="warnung">
63+
Bei der Verwendung dieser Einstellung ist es wichtig sicherzustellen, dass es keine Multiple gibt, verschiedene Pfade zur Express-Anwendung, so dass der Client kleiner sein kann als die konfigurierte Anzahl von Hops, die entfernt sind andernfalls kann es möglich sein, dass der Kunde irgendeinen Wert angibt.
64+
</Alert>
65+
</td>
66+
</tr>
67+
<tr>
68+
<td>Funktion</td>
69+
<td markdown="1">
70+
Benutzerdefinierte Vertrauens-Implementierung.
71+
72+
```js
73+
app.set('trust proxy', (ip) => {
74+
if (ip === '127.0.0.1' || ip === '123.123.123. 23')
75+
return true; // vertrauenswürdige IPs
76+
else return false;
77+
});
78+
```
79+
80+
</td>
81+
</tr>
82+
</tbody>
83+
</table>
84+
85+
Das Aktivieren von `trust proxy` hat folgende Auswirkungen:
86+
87+
<ul>
88+
<li markdown="1">
89+
Der Wert von [req.hostname](/en/api#req.hostname) wird vom Wert abgeleitet, der im
90+
`X-Forwarded-Host` Header gesetzt wurde , die vom Client oder vom Proxy gesetzt werden kann.
91+
</li>
92+
<li markdown="1">
93+
`X-Forwarded-Proto` kann vom Reverse Proxy gesetzt werden, um der App mitzuteilen, ob es `https`
94+
oder `http` oder sogar ein ungültiger Name ist. Dieser Wert wird von [req.protocol]reflektiert
95+
(/en/api#req.protocol).
96+
</li>
97+
<li markdown="1">
98+
Die Werte [req.ip](/en/api#req.ip) und [req.ips](/en/api#req.ips) werden auf der Basis der
99+
Socket-Adresse und des `X-Forwarded-For` Headers gefüllt beginnend an der ersten nicht
100+
vertrauenswürdigen Adresse.
101+
</li>
102+
</ul>
103+
104+
Die `trust proxy` Einstellung ist mit dem [proxy-addr](https://www.npmjs.com/package/proxy-addr) Paket implementiert. Weitere Informationen finden Sie in der Dokumentation.
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
---
2+
title: Debuggen Express
3+
description: Erfahren Sie, wie Sie Debugging-Logs in Express.js-Anwendungen aktivieren und nutzen können, indem Sie die DEBUG-Umgebungsvariable für verbesserte Fehlerbehebung setzen.
4+
---
5+
6+
import Alert from '@components/primitives/Alert/Alert.astro';
7+
8+
Um alle internen Logs zu sehen, die in Express verwendet werden, setzen Sie die Umgebungsvariable `DEBUG` auf
9+
`express:*` beim Starten Ihrer App.
10+
11+
```bash
12+
$ DEBUG=Express:* node index.js
13+
```
14+
15+
Verwenden Sie unter Windows den entsprechenden Befehl.
16+
17+
```bash
18+
> $env:DEBUG = "Express:*"; node index.js
19+
```
20+
21+
Das Ausführen dieses Befehls auf der vom [Express-Generator] generierten Standard-App (/en/starter/generator) gibt folgende Ausgabe aus:
22+
23+
```bash
24+
$ DEBUG=express:* node ./bin/www
25+
express:router:route new / +0ms
26+
express:router:layer new / +1ms
27+
express:router:route get / +1ms
28+
express:router:layer new / +0ms
29+
express:router:route new / +1ms
30+
express:router:layer new / +0ms
31+
express:router:route get / +0ms
32+
express:router:layer new / +0ms
33+
express:application compile etag weak +1ms
34+
express:application compile query parser extended +0ms
35+
express:application compile trust proxy false +0ms
36+
express:application booting in development mode +1ms
37+
express:router use / query +0ms
38+
express:router:layer new / +0ms
39+
express:router use / expressInit +0ms
40+
express:router:layer new / +0ms
41+
express:router use / favicon +1ms
42+
express:router:layer new / +0ms
43+
express:router use / logger +0ms
44+
express:router:layer new / +0ms
45+
express:router use / jsonParser +0ms
46+
express:router:layer new / +1ms
47+
express:router use / urlencodedParser +0ms
48+
express:router:layer new / +0ms
49+
express:router use / cookieParser +0ms
50+
express:router:layer new / +0ms
51+
express:router use / stylus +90ms
52+
express:router:layer new / +0ms
53+
express:router use / serveStatic +0ms
54+
express:router:layer new / +0ms
55+
express:router use / router +0ms
56+
express:router:layer new / +1ms
57+
express:router use /users router +0ms
58+
express:router:layer new /users +0ms
59+
express:router use / &lt;anonymous&gt; +0ms
60+
express:router:layer new / +0ms
61+
express:router use / &lt;anonymous&gt; +0ms
62+
express:router:layer new / +0ms
63+
express:router use / &lt;anonymous&gt; +0ms
64+
express:router:layer new / +0ms
65+
```
66+
67+
Wenn eine Anfrage an die App gestellt wird, sehen Sie die im Express-Code angegebenen Protokolle:
68+
69+
```bash
70+
express :router dispatching GET / +4h
71+
express :router query : / +2ms
72+
express :router expresInit : / +0ms
73+
express:router favicon : / +0ms
74+
express :router logger : / +1ms
75+
express :router jsonParser : / +0ms
76+
express:router urlencodedParser : / +1ms
77+
express :router cookieParser : / +0ms
78+
express:router stylus : / +0ms
79+
express :router serveStatic : / +2ms
80+
express :router router router : / +2ms
81+
express:router dispatching GET / +1ms
82+
express:view lookup "index. ug" +338ms
83+
express:view stat "/projects/example/views/index.pug" +0ms
84+
express:view render "/projects/example/views/index.pug" +1ms
85+
```
86+
87+
Um die Protokolle nur von der Router-Implementierung zu sehen, setzen Sie den Wert `DEBUG` auf `express:router`. Um Protokolle nur von der Anwendungsimplementierung zu sehen, setzten Sie den Wert von `DEBUG` auf `express:application`, und so weiter.
88+
89+
## Anwendungen generiert von `Express`
90+
91+
Eine Anwendung, die durch den Befehl `express generiert` erzeugt wird, benutzt das Modul `debug` und sein Debug-Namensraum wird auf den Namen der Anwendung übertragen.
92+
93+
Wenn Sie zum Beispiel die App mit `$ express Beispiel-App` erstellt haben, können Sie die Debug-Anweisungen mit folgendem Befehl aktivieren:
94+
95+
```bash
96+
$ DEBUG=Beispiel-app:* Knoten ./bin/www
97+
```
98+
99+
Sie können mehr als einen Debug-Namensraum angeben, indem Sie eine kommaseparierte Namensliste zuweisen:
100+
101+
```bash
102+
$ DEBUG=http,mail,Express:* node index.js
103+
```
104+
105+
## Erweiterte Optionen
106+
107+
Wenn Sie über Node.js laufen, können Sie ein paar Umgebungsvariablen festlegen, die das Verhalten der Debug-Protokollierung ändern:
108+
109+
| Name | Zweck |
110+
| ------------------- | --------------------------------------------------------------------------- |
111+
| `DEBUG` | Aktiviere/deaktiviert bestimmte Debugging-Namensräume. |
112+
| DEBUG_COLORS | Gibt an, ob Farben in der Debug-Ausgabe verwendet werden sollen oder nicht. |
113+
| DEBUG_DEPTH\` | Objektüberprüfungstiefe. |
114+
| `DEBUG_FD` | Datei-Deskriptor, in den die Debug-Ausgabe geschrieben wird. |
115+
| `DEBUG_SHOW_HIDDEN` | Zeigt versteckte Eigenschaften auf untersuchten Objekten. |
116+
117+
<Alert type="info">
118+
119+
Die Umgebungsvariablen, die mit `DEBUG_` beginnen, werden am Ende in ein Optionsobjekt
120+
konvertiert, das mit `%o`/`%O` Formate verwendet wird. Siehe die Dokumentation von Node.js für
121+
[`util.inspect()`](https://nodejs.org/api/util#util_util_inspect_object_options) für die vollständige
122+
Liste.
123+
124+
</Alert>

0 commit comments

Comments
 (0)