# @deckweiss/internationalization 中文文档

规范地址：https://npmcn.com/package/%40deckweiss/internationalization/

版本：2\.3\.3
npm 元数据更新时间：2026-03-17T13:46:05.334Z
中文译文更新时间：2026-11-13T05:15:35.220Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40deckweiss/internationalization
原文对照：https://npmcn.com/package/%40deckweiss/internationalization/?lang=original
项目主页：https://github.com/deckweiss/sveltekit-i18n
源码仓库：https://github.com/deckweiss/sveltekit-i18n

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

- 包体积（解压后）：20.2 kB，19 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：svelte ^5\.0\.0
- 首次发布：2024-07-17T22:23:38.451Z
- 最新版本发布：2026-03-17T13:46:05.184Z
- 近 30 天下载量：2226（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 1 个）

## 中文简介

此寄存器包含为 SvelteKit 的国际化 .

## 安装

```sh
npm install @deckweiss/internationalization
```

也可以使用：`pnpm add @deckweiss/internationalization`、`yarn add @deckweiss/internationalization`、`bun add @deckweiss/internationalization`

## README

# 开始

此寄存器包含为 SvelteKit 的国际化 .

## 安装

### 1\. 安装包

```sh
pnpm i @deckweiss/internationalization
```

### 2.a 设置(配有饼干)

```typescript
// src/i18n.ts
import { setupI18n } from '@deckweiss/internationalization';
import de from '$lib/translations/de.json';
import en from '$lib/translations/en.json';

setupI18n({
    defaultLocale: 'en',
    locales: {
        de,
        en
    },
});
```

```typescript
// src/hooks.server.ts
import { handle } from '@deckweiss/internationalization';
import './i18n.js';

export { handle };
```

```typescript
// hooks.client.ts
import './i18n.js';
```

```html
<!-- app.html -->
<html lang="%lang%">
    ...
</html
```

```typescript
// +layout.server.ts
export function load(event) {
    return { locale: event.locals.i18n.locale }
}
```

```svelte
// +layout.svelte
<script lang="ts">
    import { setI18nContext, useI18n } from '@deckweiss/internationalization';

    let { data, children } = $props();

    setI18nContext(data.locale)
</script>

{@render children()}
```

### 2.b 设置( 无 Cookie 通过 URL 参数)

示例url : `example.com/en/...` 或者说 `example.com/de/...`

```typescript
// src/i18n.ts
import { setupI18n } from '@deckweiss/internationalization';
import de from '$lib/translations/de.json';
import en from '$lib/translations/en.json';

setupI18n({
    defaultLocale: 'en',
    locales: {
        de,
        en
    },
});
```

```typescript
// src/hooks.server.ts
import { handle } from '@deckweiss/internationalization';
import './i18n.js';

export { handle };
```

```typescript
// hooks.client.ts
import './i18n.js';
```

```html
<!-- app.html -->
<html lang="%lang%">
    ...
</html
```

```typescript
// src/routes/[locale]/+layout.server.ts
export function load(event) {
    event.locals.i18n.setLocale(event.params.locale)
    return { locale: event.locals.i18n.locale }
}
```

```svelte
// src/routes/[locale]/+layout.svelte
<script lang="ts">
    import { setI18nContext, useI18n } from '@deckweiss/internationalization';

    let { data, children } = $props();

    setI18nContext(data.locale)
</script>

{@render children()}
```

### 3\. 使用费

```svelte
// +page.svelte
<script>
    import { useI18n } from '@deckweiss/internationalization';
    
    const i18n = useI18n();
</script>

<p>{i18n.t('app.day', { date: Date.now() })}</p>
```

I18n 实例存在于所有服务器文件,组成动作和服务器钩子(+layout.server.ts,+page.server.ts,+server.ts)通过: `event.locals.i18n`。 。 。 .

### 4\. (可选) 更新选定区域

_提示: 在无饼干模式中, 您想要从 /de 到/ en 附加链接, 以便在页面重载时保持一致_

```svelte
// src/lib/components/language-picker.svelte
<script>
    import { useI18n } from '@deckweiss/internationalization';

    const i18n = useI18n()
</script>

<select onchange={(event) => i18n.setLocale(event.target.value)}>
    <option disabled>Choose language</option>
    {#each locales as l}
        <option value={l} selected={l === i18n.locale}>{l}</option>
    {/each}
</select>
```

## JSON 格式

此软件包兼容 [i18n 下个 JSON v4](https://www.i18next.com/misc/json-format#i18next-json-v4)。尽管它目前只支持嵌入键和以格式插入.

### 实例

```json
// src/lib/translations/en.json
{
    "app": {
        "name": "Example app",
        "day": "Today is {{date, date(format: dddd)}}"
    }
}
```

| 使用量 | 产出 |
| --- | --- |
| $t (“ app. name” ) | "例应用" |
| $t('app.day',{日期:新日期(1997, 4, 22)}}} | (今天是星期四) |

可找到日期格式符号 [这里](https://github.com/felixge/node-dateformat?tab=readme-ov-file#mask-options)。 。 。 . **装订日期语言**

-   德语
-   联合国
-   意大利语
-   西班牙语

## 支助的刑警组织

### 日期和时间

```json
// src/lib/translations/en.json
{
    "day": "Today is {{date, date(format: dddd, dd.mm.yyyy)}}" // Output: "Today is Friday, 23.05.1997"
}
```

### 数字和货币

这个 `options` 参数直接传入 `Intl.NumberFormat` 建筑师。 因此,您可以在 JSON 语法中配置任意选项 .

```json
// src/lib/translations/en.json
{
    "number": "{{count, number(options: {\"style\": \"decimal\", \"minimumFractionDigits\": 5})}}", // Output: "5,132.95000"
    "currency": "{{amount, number(options: {\"style\": \"currency\", \"currency\": \"EUR\"})}}" // Output: "5,132.95 €"
}
```

## 已知问题

### +page.ts和+layout.ts文件中没有 i18n 实例

## 捐款

### 创建新发行

1.  手或手更新软件包版本 `pnpm version`。 。 。 .
2.  承诺信息在主机上必须从 `chore: release`

## 常见问题

### @deckweiss/internationalization 是什么？

此寄存器包含为 SvelteKit 的国际化 \.

### 如何安装 @deckweiss/internationalization？

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

### @deckweiss/internationalization 支持 TypeScript 吗？

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

### @deckweiss/internationalization 支持 ESM 还是 CommonJS？

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

### @deckweiss/internationalization 可以商用吗？

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

### @deckweiss/internationalization 的下载量有多少？

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

### @deckweiss/internationalization 还在维护吗？

最新版本 2\.3\.3 发布于 2026/03/17（7 个月前）；至今共发布 21 个版本，其中过去 12 个月发布了 1 个；首次发布于 2024/07/18。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

