使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商
版本历史
- "更新 Solid useIntlayer API 用法以直接访问属性"v8.9.02026/5/4
- "添加 init 命令"v7.5.92025/12/30
- "初始化历史记录"v7.1.102025/11/20
此页面的内容已使用 AI 翻译。
查看英文原文的最新版本如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。
文档的 GitHub 链接复制文档 Markdown 到剪贴板
使用 Intlayer 翻译您的 SvelteKit 网站 | 国际化 (i18n)
目录
为什么选择 Inlayer 而不是替代品?
与“svelte-i18n”或“i18next”等主要解决方案相比,Intlayer是一个具有集成优化的解决方案,例如:
完整的 SvelteKit 覆盖
Intlayer 经过优化,可与 SvelteKit 完美配合,提供多语言路由、SSR 支持以及扩展国际化 (i18n) 所需的所有功能。
捆绑尺寸
不要将大量 JSON 文件加载到页面中,而只需加载必要的内容。 Intlayer 有助于将捆绑包和页面大小减少多达 50%。
可维护性
确定应用程序内容的范围有利于大型应用程序的维护。您可以复制或删除单个功能文件夹,而无需承担检查整个内容代码库的精神负担。此外,Intlayer 具有完全类型化 (fully typed),以确保您的内容的准确性。
人工智能代理
共置内容减少大型语言模型 (LLM) 所需的上下文。 Intlayer 还附带了一套工具,例如用于测试缺失翻译的 CLI、LSP、MCP 和 agent技能,使 AI 代理的开发者体验 (DX) 更加流畅。
自动化
使用您选择的法学硕士,通过自动化在 CI/CD 管道中进行翻译,而费用由您的 AI 提供商承担。 Intlayer 还提供了一个编译器来自动提取内容,以及一个网络平台来帮助在后台翻译。
表现
将大量 JSON 文件连接到组件可能会导致性能和反应性问题。 Intlayer 可在构建时 (build time)优化您的内容加载。
无需开发即可扩展
Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个自托管的可视化编辑器和一个完整的 CMS 来帮助您管理多语言内容实时,与译员、文案人员和其他团队成员无缝协作。内容可以本地和/或远程存储。
在 SvelteKit 应用中设置 Intlayer 的分步指南
首先,创建一个新的 SvelteKit 项目。以下是我们将要构建的最终结构:
复制代码到剪贴板
第一步:安装依赖
使用 npm 安装必要的包:
复制代码到剪贴板
- intlayer:核心的国际化(i18n)包。
- svelte-intlayer:为 Svelte/SvelteKit 提供上下文提供者和存储。
- vite-intlayer:Vite 插件,用于将内容声明集成到构建流程中。
第二步:配置你的项目
在项目根目录创建一个配置文件:
复制代码到剪贴板
第3步:在你的 Vite 配置中集成 Intlayer
更新你的 vite.config.ts 文件以包含 Intlayer 插件。该插件负责内容文件的转译。
复制代码到剪贴板
第4步:声明您的内容
在您的 src 文件夹中的任意位置创建内容声明文件(例如,src/lib/content 或与组件放在一起)。这些文件使用 t() 函数为每个语言环境定义您的应用程序可翻译的内容。
第5步:在您的组件中使用 Intlayer
现在你可以在任何 Svelte 组件中使用 useIntlayer 函数。它返回一个响应式存储,当语言环境变化时会自动更新。该函数会自动遵循当前语言环境(无论是在 SSR 还是客户端导航期间)。
注意:
useIntlayer返回一个 Svelte 存储,因此你需要使用 `--- createdAt: 2025-11-20 updatedAt: 2026-05-31 title: 如何翻译您的 SvelteKit 应用 – 2025 年国际化 (i18n) 指南 description: 了解如何使您的 SvelteKit 网站支持多语言。按照文档使用服务器端渲染 (SSR) 进行国际化 (i18n) 和翻译。 keywords:
- 国际化
- 文档
- Intlayer
- SvelteKit
- JavaScript
- SSR slugs:
- doc
- environment
- sveltekit applicationTemplate: https://github.com/aymericzip/intlayer-sveltekit-template history:
- version: 7.1.10 date: 2025-11-20 changes: 初始化历史记录
使用 Intlayer 翻译您的 SvelteKit 网站 | 国际化 (i18n)
目录
什么是 Intlayer?
Intlayer 是一个创新的开源国际化 (i18n) 库,旨在简化现代 Web 应用中的多语言支持。它与 SvelteKit 的服务器端渲染 (SSR) 功能无缝协作。
使用 Intlayer,您可以:
- 通过组件级声明式字典轻松管理翻译。
- 动态本地化元数据、路由和内容。
- 通过自动生成的类型确保 TypeScript 支持。
- 利用 SvelteKit 的 SSR 实现对搜索引擎友好的国际化。
在 SvelteKit 应用中设置 Intlayer 的分步指南
首先,创建一个新的 SvelteKit 项目。以下是我们将要构建的最终结构:
复制代码到剪贴板
第一步:安装依赖
使用 npm 安装必要的包:
复制代码到剪贴板
- intlayer:核心的国际化(i18n)包。
- svelte-intlayer:为 Svelte/SvelteKit 提供上下文提供者和存储。
- vite-intlayer:Vite 插件,用于将内容声明集成到构建流程中。
第二步:配置你的项目
在项目根目录创建一个配置文件:
复制代码到剪贴板
第3步:在你的 Vite 配置中集成 Intlayer
更新你的 vite.config.ts 文件以包含 Intlayer 插件。该插件负责内容文件的转译。
复制代码到剪贴板
第4步:声明您的内容
在您的 src 文件夹中的任意位置创建内容声明文件(例如,src/lib/content 或与组件放在一起)。这些文件使用 t() 函数为每个语言环境定义您的应用程序可翻译的内容。
第5步:在您的组件中使用 Intlayer
前缀来访问其响应式值(例如,$content.title)。
复制代码到剪贴板
设置路由
以下步骤展示了如何在 SvelteKit 中设置基于语言环境的路由。这允许您的 URL 包含语言环境前缀(例如
/en/about,/fr/about),以提升 SEO 和用户体验。bash复制代码复制代码到剪贴板
国际化链接
为了SEO,建议在路由前加上语言前缀(例如
/en/about,/fr/about)。该组件会自动为任何链接添加当前语言的前缀。src/lib/components/LocalizedLink.svelte复制代码复制代码到剪贴板
如果你使用 SvelteKit 的
goto,可以用相同的逻辑结合getLocalizedUrl来跳转到本地化的URL:typescript复制代码复制代码到剪贴板
语言切换器
为了允许用户切换语言,更新 URL。
src/lib/components/LanguageSwitcher.svelte复制代码复制代码到剪贴板
添加后端代理
要为您的 SvelteKit 应用添加后端代理,可以使用
vite-intlayer插件提供的intlayerProxy函数。该插件将根据 URL、Cookie 和浏览器语言偏好自动检测用户的最佳语言环境。vite.config.ts复制代码复制代码到剪贴板
设置 intlayer 编辑器 / CMS
要设置 intlayer 编辑器,您必须遵循 intlayer 编辑器文档。
要设置 intlayer CMS,您必须遵循 intlayer CMS 文档。
要能够可视化 intlayer 编辑器选择器,您必须在 intlayer 内容中使用组件语法。
Component.svelte复制代码复制代码到剪贴板
提取组件内容
可选如果您有现有的代码库,转换数千个文件可能会非常耗时。
为了简化此过程,Intlayer 提出了 编译器 / 提取器 来转换您的组件并提取内容。
要进行设置,您可以在
intlayer.config.ts文件中添加compiler部分:intlayer.config.ts复制代码复制代码到剪贴板
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... 您的其他配置 compiler: { /** * 指示是否应启用编译器。 */ enabled: true, /** * 定义输出文件路径 */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。 */ saveComponents: false, /** * 字典键前缀 */ dictionaryKeyPrefix: "", }, }; export default config;运行提取器以转换组件并提取内容
bash复制代码复制代码到剪贴板
第7步:处理服务器端的语言环境检测(Hooks)
在 SvelteKit 中,服务器需要知道用户的语言环境,以便在 SSR 期间渲染正确的内容。我们使用 hooks.server.ts 从 URL 或 cookie 中检测语言环境。
创建或修改 src/hooks.server.ts:
复制代码到剪贴板
然后,创建一个辅助函数从请求事件中获取用户的语言环境:
复制代码到剪贴板
getLocaleFromStorage 将根据您的配置从请求头或 cookie 中检查语言环境。更多详情请参见 Configuration。
localeDetector函数会处理Accept-Language请求头并返回最佳匹配的语言环境。
如果未配置语言环境,我们希望返回 404 错误。为简化操作,我们可以创建一个 match 函数来检查语言环境是否有效:
复制代码到剪贴板
注意: 请确保您的
src/app.d.ts中包含语言环境的定义:typescript复制代码复制代码到剪贴板
对于 +layout.svelte 文件,我们可以删除所有内容,只保留与国际化无关的静态内容:
复制代码到剪贴板
然后,在 [[locale=locale]] 组下创建一个新的页面和布局:
复制代码到剪贴板
复制代码到剪贴板
复制代码到剪贴板
复制代码到剪贴板
Git 配置
建议忽略 Intlayer 生成的文件。
复制代码到剪贴板
深入了解
- 可视化编辑器:集成Intlayer 可视化编辑器,以便直接从用户界面编辑翻译内容。
- CMS:使用Intlayer CMS实现内容管理的外部化。