@deckweiss/internationalization

中文文档
2.3.3发布于 2026/03/17MITTypeScriptES Module近 30 天下载 2226

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

中文使用文档
文档目录15 节
  1. 安装
  2. 1. 安装包
  3. 2.a 设置(配有饼干)
  4. 2.b 设置( 无 Cookie 通过 URL 参数)
  5. 3. 使用费
  6. 4. (可选) 更新选定区域
  7. JSON 格式
  8. 实例
  9. 支助的刑警组织
  10. 日期和时间
  11. 数字和货币
  12. 已知问题
  13. +page.ts和+layout.ts文件中没有 i18n 实例
  14. 捐款
  15. 创建新发行

开始

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

安装

1. 安装包

pnpm i @deckweiss/internationalization

2.a 设置(配有饼干)

// 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
    },
});
// src/hooks.server.ts
import { handle } from '@deckweiss/internationalization';
import './i18n.js';

export { handle };
// hooks.client.ts
import './i18n.js';
<!-- app.html -->
<html lang="%lang%">
    ...
</html
// +layout.server.ts
export function load(event) {
    return { locale: event.locals.i18n.locale }
}
// +layout.svelte
<script lang="ts">
    import { setI18nContext, useI18n } from '@deckweiss/internationalization';

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

    setI18nContext(data.locale)
</script>

{@render children()}

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

// 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
    },
});
// src/hooks.server.ts
import { handle } from '@deckweiss/internationalization';
import './i18n.js';

export { handle };
// hooks.client.ts
import './i18n.js';
<!-- app.html -->
<html lang="%lang%">
    ...
</html
// src/routes/[locale]/+layout.server.ts
export function load(event) {
    event.locals.i18n.setLocale(event.params.locale)
    return { locale: event.locals.i18n.locale }
}
// 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. 使用费

// +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 附加链接, 以便在页面重载时保持一致

// 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。尽管它目前只支持嵌入键和以格式插入.

实例

// 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)}}}(今天是星期四)

可找到日期格式符号 这里。 。 。 . 装订日期语言

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

支助的刑警组织

日期和时间

// 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 语法中配置任意选项 .

// 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 共发布 21 个版本,首次发布于 2024/07/18;过去 12 个月发布了 1 个版本。

版本发布日期距今
2.3.3latest2026/03/177 个月前
2.3.12025/05/071.5 年前
2.3.02025/04/011.6 年前
2.2.02025/03/201.7 年前
2.1.02025/03/121.7 年前
2.0.12025/02/041.8 年前

关于 @deckweiss/internationalization 的常见问题

@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 和提交记录判断。