# @alxia/language 中文文档

规范地址：https://npmcn.com/package/%40alxia/language/

版本：0\.3\.15
npm 元数据更新时间：2026-11-02T11:18:40.237Z
中文译文更新时间：2026-11-08T01:36:57.412Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40alxia/language
原文对照：https://npmcn.com/package/%40alxia/language/?lang=original
源码仓库：https://github.com/softistx/alxia

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：79.2 kB，19 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：typescript ^6\.0\.3 \|\| ^7\.0\.0，@alxia/core ^0\.19\.0
- 首次发布：2026-10-03T17:20:10.291Z
- 最新版本发布：2026-11-02T11:18:40.059Z
- 近 30 天下载量：1934（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 20 个）

## 中文简介

请求中的 alxia 语言, 键入为您支持的语言 : 从查询、 cookie、 路径或接受语言、 重量和区域中包含

## 安装

```sh
npm install @alxia/language
```

也可以使用：`pnpm add @alxia/language`、`yarn add @alxia/language`、`bun add @alxia/language`

## README

# @alxia/ 语言

请求的语言 [阿尔克夏](https://www.npmjs.com/package/@alxia/core), (中文(简体) ), 键入为您支持的语言 —— 从来不是客户端构成的字符串 。 没有 依赖性.

```sh
bun add @alxia/language @alxia/core
bun add -d typescript
```

## 使用量

```ts
import { alxia } from '@alxia/core';
import { language } from '@alxia/language';

const supported = ['en', 'fr', 'pt-BR'] as const;
const greetings: Record<(typeof supported)[number], string> = { en: 'Hello', fr: 'Bonjour', 'pt-BR': 'Olá' };

const app = alxia()
    .use(language({ supported, fallback: 'en' }))
    .get('/', ({ language, reply }) => reply(200, greetings[language])); // 'en' | 'fr' | 'pt-BR'

app.listen(3000);
```

它读取,在 `order`数字 :

| 来源 |  |
| --- | --- |
| `query` | `?lang=fr` |
| `cookie` | `language=fr` |
| `path` | `/fr/products`时 `pathIndex` |
| `header` | `Accept-Language`,按重量: `de, fr-CA;q=0.8` 实值 `fr` |

接下来 `resolve(ctx)` ——用户节省了偏好——然后 `fallback`标签 以基本语言比对任何情况(`fr-CA` 页:1 `fr`)或由a 区域`pt` 页:1 `pt-BR`) (中文(简体) ). `languageSource` 说哪个消息来源决定了.

每个回复都说 `Content-Language`,以及 `Vary` 以它所读的信头盟誓. 与 `persist`,在饼干中保留一个名为查询的语言。 给 `use` 在应用程序上,它运行 在每一个请求: 404说 `Content-Language` 我也一样.

## 阅读应用程序的上下文

注释 `resolve`由早期的中件添加什么来决定的参数—— 签名用户保存的语言。 中间软件需要它:一个应用程序 不给 `user` 在它无法使用之前.

```ts
import { alxia, type BaseContext } from '@alxia/core';
import { language } from '@alxia/language';

const byUser = language({
    supported: ['en', 'fr'],
    fallback: 'en',
    order: ['query', 'cookie'],
    resolve: ({ user }: BaseContext & { user: { language: string } | null }) => user?.language,
});

alxia().plugin(auth).use(byUser); // auth derives user
alxia().use(byUser); // a compile error: this app gives no `user`
```

A 类 `resolve` 附加说明 `any` 所以中间的软件被拒绝了 在每一个应用程序上:注释其内容,或者不附加说明.

## 选项

| 选项 | 默认 |  |
| --- | --- | --- |
| `supported` | 所需经费 | 语文: `language`类型 |
| `fallback` | 所需经费 | 其中之一; 类型拒绝另一个 |
| `order` | `['query', 'cookie', 'header']` |  |
| `query`, (中文(简体) ), `cookie` | `lang`, (中文(简体) ), `language` | 他们的名字 |
| `pathIndex` | 0 个 |  |
| `persist` | `false` | `true`,或 `{ maxAge, secure }` |
| `contentLanguage` | `true` |  |
| `resolve` | 无 | `(ctx) => string | undefined`; 注释 `ctx` 读取早先的中间软件添加的内容 |
| `vary` | 无 | 标题 `resolve` 读取,添加到 `Vary` |

## API 密码

| 导出 |  |
| --- | --- |
| `language(options)` | 中间件, 交给 `app.use`: 它添加 `language` 财务报告和审定财务报表 `languageSource` |
| `LanguageOptions` | 其选项: `supported`, (中文(简体) ), `fallback`, (中文(简体) ), `order`, (中文(简体) ), `query`, (中文(简体) ), `cookie`, (中文(简体) ), `pathIndex`, (中文(简体) ), `persist`, (中文(简体) ), `contentLanguage`, (中文(简体) ), `resolve`, (中文(简体) ), `vary` |
| `negotiate(header, supported)` | 支持的语言 `Accept-Language` 首选 |
| `parseAcceptLanguage(header)`, (中文(简体) ), `match(tag, supported)` | 编 次 |
| `LanguageContext`, (中文(简体) ), `LanguageSource`, (中文(简体) ), `Accepted` | 类型 |
| `LanguageMiddleware<L, Requires>` | 什麽 `language()` 返回: 中间软件添加 `LanguageContext<L>`,要求应用程序什么 `resolve` 读取 |

## 文档

-   [指南](https://github.com/softistx/alxia/tree/develop/packages/language/docs): 每一个带有默认和示例的选项, 语言是如何找到的 `Accept-Language` 谈判,读取一个早期的中件所添加的内容,键入上下文,并读取中件所添加的标题.
-   [解决问题](https://github.com/softistx/alxia/blob/develop/packages/language/docs/troubleshooting.md):出错,或用出错的语言回应,如何应对.
-   [路线图](https://github.com/softistx/alxia/blob/develop/packages/language/docs/roadmap.md):即将到来的,以及没有计划的.

## 常见问题

### @alxia/language 是什么？

请求中的 alxia 语言, 键入为您支持的语言 : 从查询、 cookie、 路径或接受语言、 重量和区域中包含

### 如何安装 @alxia/language？

在项目目录运行 npm install @alxia/language，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：typescript（^6\.0\.3 \|\| ^7\.0\.0）、@alxia/core（^0\.19\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @alxia/language 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @alxia/language 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @alxia/language 可以商用吗？

@alxia/language 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @alxia/language 的下载量有多少？

根据 npm 官方下载统计，@alxia/language 在 2026/10/06 – 2026/11/04 这 30 天内被下载 1,934 次，日均约 64 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @alxia/language 还在维护吗？

最新版本 0\.3\.15 发布于 2026/11/02（6 天前）；至今共发布 20 个版本，其中过去 12 个月发布了 20 个；首次发布于 2026/10/04。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

