首页演练场案例展示应用文档博客
    • English英语
      EN
    • русский俄语
      RU
    • 日本語日语
      JA
    • français法语
      FR
    • 한국어韩语
      KO
    • 中文中文
      ZH
    • español西班牙语
      ES
    • Deutsch德语
      DE
    • العربية阿拉伯语
      AR
    • italiano意大利语
      IT
    • British English英国英语
      EN-GB
    • português葡萄牙语
      PT
    • हिन्दी印地语
      HI
    • Türkçe土耳其语
      TR
    • polski波兰语
      PL
    • Indonesia印度尼西亚语
      ID
    • Tiếng Việt越南语
      VI
    • українська乌克兰语
      UK
    /
    Alt+←
    什么是国际化?
    SEO和国际化
    指南
    • 使用next-i18next的i18n
    • 使用next-intl的i18n
    在你的方案中使用Intlayer
    • 自动化 next-i18next
    • 自动化 react-i18next
    • 自动化 next-intl
    • 自动化 react-intl
    • 自动化 vue-i18n
    比较
    • next-i18next vs next-intl vs Intlayer
    • react-i18next vs react-intl vs Intlayer
    文档
    1. Blog
    2. I18n technologies
    3. Frameworks
    4. Angular
    Creation:2025-01-16Last update:2025-06-29
    将此文档参考到您的 AI 助手
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商

    此页面的内容已使用 AI 翻译。

    查看英文原文的最新版本
    编辑此文档

    如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。

    文档的 GitHub 链接
    Copy

    复制文档 Markdown 到剪贴板

    探索 i18n 解决方案以翻译您的 Angular 网站

    在当今互联的世界中,提供多种语言的网站可以显著扩大您的覆盖面并改善用户体验。对于使用 Angular 的开发人员来说,实现国际化 (i18n) 对于有效管理翻译,同时保持应用程序结构、SEO 和性能至关重要。在本文中,我们将探讨各种 i18n 方法, 从 Angular 的内置解决方案到流行的第三方库, 帮助您确定最适合您项目的方案。

    i18n illustration

    什么是国际化 (i18n)?

    国际化,通常称为 i18n,是设计和准备您的应用程序以支持多种语言和文化背景的过程。在 Angular 中,这涉及到配置您的应用程序,使得文本、日期、数字,甚至 UI 布局可以无缝适应不同的区域设置。妥善打下这一基础可以确保将来集成翻译时保持组织有序和高效。

    了解 i18n 基本知识,请阅读我们的文章:什么是国际化 (i18n)?定义和挑战。


    Angular 应用程序的翻译挑战

    翻译 Angular 应用程序会带来几个挑战:

    • 基于组件的结构:Angular 的模块化方法(使用组件、模块和服务)意味着翻译字符串可能散布在代码库中,这使得集中管理它们变得至关重要。
    • 动态内容:处理实时内容(例如来自 REST API 的数据、用户生成的内容)需要仔细考虑,以确保新的字符串也被翻译。
    • SEO 考虑:如果您正在使用 Angular Universal 进行服务器端渲染,则需要设置本地化 URL、元标签和站点地图,以使您的多语言页面对搜索引擎友好。
    • 路由和状态:在不同路由之间导航时确保正确的语言得以维护涉及状态管理,可能还需要自定义路由守卫或拦截器。
    • 可扩展性与维护:翻译文件可能快速增长,保持它们的组织、版本控制和与应用程序演变的同步可能是一项持续的任务。

    Angular 的领先 i18n 解决方案

    Angular 提供了一个内置的 i18n 框架,并且还有几个第三方库旨在简化您的多语言设置。以下是一些最流行的解决方案。

    1. Intlayer

    网站: https://intlayer.org/

    概述
    Intlayer 是一个创新的开源国际化 (i18n) 库,旨在简化现代 Angular(及其他)Web 应用程序的多语言支持。它采用声明式方法,允许您直接在组件内定义翻译字典。

    主要特点

    • 翻译声明:允许在单个文件中声明所有翻译,并放置在组件级别,使其更易于维护和扩展。
    • TypeScript 与自动补全:为翻译键提供自动生成的类型定义,提供强大的自动补全和检测。
    • 服务器组件与 SSR:在设计时充分考虑了服务器端渲染 (SSR) 和 Angular Universal,确保本地化内容在客户端和服务器端都能高效渲染。
    • 用于 SEO 的本地化元数据和 URL:轻松处理基于区域设置的动态路由、站点地图和 robots.txt 条目,以提高可发现性和 SEO。
    • 无缝集成:与 Angular CLI 和 Angular Universal 兼容,使设置变得简单直接。
    • 异步加载:动态加载翻译字典,减小初始包大小并提高性能。

    注意事项

    • 社区与生态系统:虽然正在成长,但生态系统相对较新,因此与更成熟的解决方案相比,社区驱动的插件和工具可能有限。

    2. Angular 的内置 i18n

    概述
    Angular 配备了一个 内置的 i18n 系统,包括提取翻译字符串、处理复数和插值的工具,并在编译时集成翻译。这个官方解决方案对于小型项目或可以紧密对齐 Angular 推荐结构的项目非常强大。

    主要特点

    • 本地集成:无需额外的库;它可以在 Angular 项目中开箱即用。
    • 编译时翻译:Angular CLI 提取翻译的文本,并为每种语言构建单独的包。这种方法可以提高运行时性能,因为翻译在构建时已经编译。
    • 简单的复数和性别处理:内置特性可用于复杂的复数和消息插值。
    • AOT 和生产构建:与 Angular 的提前编译 (AOT) 完全兼容,确保优化过的生产包。

    考虑事项

    • 多个构建:每种语言都需要单独的构建,可能导致更复杂的部署场景。
    • 动态内容:处理实时或用户驱动的内容可能需要自定义逻辑,因为 Angular 的内置解决方案主要侧重于编译时翻译。
    • 有限的运行时灵活性:在不重新加载应用的情况下动态切换语言可能会很有挑战,因为翻译是在构建时嵌入的。

    3. ngx-translate

    网站:https://github.com/ngx-translate/core

    概述
    ngx-translate 是 Angular 生态系统中最成熟的第三方 i18n 库之一。它支持运行时翻译,允许您按需加载语言文件,并在不重建整个应用程序的情况下动态切换区域设置。

    主要特点

    • 运行时翻译:适用于动态切换语言的场景,以及不希望进行多个生产构建的情况。
    • JSON 翻译文件:将翻译存储在简单的 JSON 文件中,使其易于结构化和维护。
    • 异步加载:懒加载翻译,保持初始包的规模较小。
    • 支持多种语言:立即切换区域设置,并监听组件中的语言变化。

    考虑事项

    • 状态与复杂性:管理多个翻译文件在大型应用中可能变得复杂。
    • SEO 与 SSR:如果您需要使用 Angular Universal 进行服务器端渲染,ngx-translate 需要额外的设置以确保在首次加载时向爬虫和浏览器提供正确的翻译。
    • 性能:虽然在运行时灵活,但在大型页面上处理多个翻译可能会影响性能,因此建议使用缓存策略。

    4. Transloco

    网站:https://ngneat.github.io/transloco/

    概述
    Transloco 是一个现代的、社区驱动的 Angular i18n 库,强调可扩展架构和流畅的开发者体验。它提供了基于插件的方法,可以与您现有的 Angular 设置无缝集成。

    主要特点

    • 状态管理集成:与 NgRx 和 Akita 等状态管理库的开箱即用的兼容性。
    • 懒加载:将翻译拆分为独立的块,仅在需要时加载。
    • 丰富的插件生态系统:处理从 SSR 集成到自动消息提取的一切。
    • 运行时或构建时:为不同的翻译工作流提供灵活性,无论您是更喜欢运行时切换还是预构建本地化。

    考虑事项

    • 学习曲线:虽然文档完善,但基于插件的方法可能需要额外的步骤来处理高级用例(例如,SSR,多语言路由)。
    • 社区规模:Transloco 有一个活跃的社区,但与 Angular 的内置解决方案或 ngx-translate 相比仍在成长中。
    • 文件结构:对于非常大型的应用,保持翻译的组织可能是一项挑战。良好的文件结构和命名约定至关重要。

    最终想法

    在为您的 Angular 应用程序选择 i18n 方法时:

    • 评估项目需求:考虑动态语言切换、开发速度和第三方集成需求等因素。
    • 检查 SSR 和 SEO:如果使用 Angular Universal 进行服务器端渲染,请确保所选解决方案与本地化元数据和路由处理正常集成。
    • 性能与构建策略:评估您是否需要多个构建输出(每种语言)或更喜欢带有运行时翻译的单个包。
    • 可维护性与扩展性:对于大型应用,确保您的库支持良好的文件结构、类型化键(如果需要)和简单的更新过程。
    • 开发者体验:TypeScript 自动完成功能、插件生态系统和 CLI 工具可以大大减少更新或添加新翻译时的摩擦。

    讨论的所有库都可以为强大的多语言 Angular 应用程序提供动力, 每个库都有其自身的优势。最佳选择归结于您对 性能、工作流、开发者体验 和 商业目标 的独特需求。

    什么是国际化?
    Alt+→

    在此页面

      讨论是匿名的,并会定期审查以解决常见问题。欢迎分享功能想法、对文档的反馈或任何与 Intlayer 相关的内容, 我们会利用这些意见来制定路线图并改进产品。