# General Translation Changelog: gt-node 0.2.0: Node.js 的服务器端翻译
URL: https://generaltranslation.com/zh/blog/gt-node_v0_2_0.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 
Authors: Ernest McCarter
Published: 2026-02-17

## 概述

**重要：** 此库仍处于实验阶段，后续可能会有破坏性变更。

`gt-node` 将 General Translation 带到服务端 JavaScript 环境中，可在 **Node.js**、**Bun** 和 **Deno** 中运行。

`gt-node` 通过 `AsyncLocalStorage` 为每个请求建立上下文，让你可以直接从库中导入翻译函数：

```js
const gt = await getGT();
```

这与我们其他库 (例如 `gt-next`) 在处理异步函数时的 API 设计保持一致。

***


## 包含内容

* **[`initializeGT()`](/docs/node/reference/functions/initialize-gt)** — 配置 i18n 单例。在服务器启动时调用一次即可。
* **`withGT(locale, fn)`** — 包装请求处理函数以限定区域设置。回调中的所有翻译调用都会使用指定的区域设置。所有路由都必须包装在 [`withGT`](/docs/node/reference/functions/with-gt) 中。
* **[`getGT()`](/docs/node/reference/functions/get-gt)** — 返回一个用于内联字符串的翻译函数。支持变量插值和 ICU 消息格式。

***

## 快速入门 (Express)

### 安装

```bash
npm install gt-node
```


### 初始化

```js title="server.js"
import express from 'express';
import { initializeGT, withGT, getGT } from 'gt-node';

initializeGT({
  defaultLocale: 'en-US',
  locales: ['en-US', 'es', 'fr'],
  projectId: process.env.GT_PROJECT_ID,
});

const app = express();
```


### 添加区域设置中间件

从请求头中提取区域设置 (也可以从 cookie、查询参数中提取——具体取决于你的应用如何确定区域设置) ，然后用 [`withGT`](/docs/node/reference/functions/with-gt) 包装每个请求：

```js title="server.js"
app.use((req, res, next) => {
  const locale = req.headers['accept-language']?.split(',')[0] || 'en-US';
  withGT(locale, () => next());
});
```

### 翻译

```js title="server.js"
app.get('/api/greeting', async (req, res) => {
  const gt = await getGT();
  res.json({ message: gt('Hello, world!') });
});

app.listen(3000);
```


### 翻译并部署

```bash
npx gt translate --publish
```

就是这样。字符串会在构建时由 GT 编译器提取，在 CD 期间完成翻译，并在运行时按请求解析。

***

## 展望未来

`gt-node` 和 `gt-tanstack-start` 是首批基于 `gt-i18n` 单例架构构建的两个库。后续还会有更多框架适配器沿用这一模式。

欢迎通过 [Discord](https://discord.gg/SjQwPjZaGa) 或 [GitHub](https://github.com/generaltranslation/gt/issues) 反馈意见。

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
