【问题标题】:is runtime language translation possible with angular (@angular/localize)?角度(@angular/localize)是否可以进行运行时语言翻译?
【发布时间】:2021-12-29 04:45:27
【问题描述】:

我正在尝试在项目中学习和添加角度国际化。 我只能理解 Angular 文档的编译时翻译 (https://angular.io/guide/i18n-overview)。

我需要像 https://stackblitz.com/github/ngx-translate/example 这样的东西,它是第三方库 'ngx-translate'。

我们不能在没有任何第三方库的情况下仅使用 Angular 库实现相同的运行时翻译吗?

如果使用 Angular 库可以进行运行时翻译,请指导我。

【问题讨论】:

    标签: angular internationalization ngx-translate angular-i18n angular-localize


    【解决方案1】:

    没有从角度框使用 i18n 运行时的解决方案。只使用 ngx-translate。 Angular 团队仍然只谈论“我们将在下一个版本中这样做”,但没有成功。我在大项目下工作,我们使用角度版本 4 或 6 的 ngx-translate。你可以信任这个第三方库。 i18n 只能为一些 baseHref 构建应用程序,例如:

    https://your.domain/en/...

    https://your.domain/de/...

    当您需要编译大量应用程序以使用 i18n 时。 ngx-translate - 只有 1 个应用程序,翻译可以按需要翻译的模块拆分。

    我的建议 - 使用 ngx-translate 以及 Angular 团队何时重新加载运行时语言 - 重写项目部分以进行翻译

    【讨论】:

      【解决方案2】:

      您可能已经看到,Angular 的构建时间转换总是如此,您可以根据语言环境构建应用程序(例如,一个“en”构建和一个“fr”构建)。然后,您将托管每个应用程序,并且必须重定向到特定的语言环境才能在运行时切换它。不是最好的体验。

      使用 Angular Ivy,现在还有一个 @angular/localize 包,它提供了一个 $localize 标记的模板帮助器,可用于运行时翻译,但它仍将使用您当前所在的语言环境。在生产配置中构建时,我相信它可能会优化其他语言环境,因此您仍然不能只在运行时切换语言。

      const message = $localize`:@@username:Hello {username}`;
      

      对于在运行时切换翻译,您可能可以跟踪以下问题并投票:

      https://github.com/angular/angular/issues/38953

      特别是,您可以看到来自napei 和petebacondarwin 的两个cmets,这似乎表明Angular 本身不支持此功能。

      dynamic locale switching (of course)
      Indeed this will not be supported natively in Angular.
      

      也许如果他们获得更多选票,他们就会意识到对这个功能的需求:) 在那之前,你需要使用已经被建议的像 ngx-translate 这样的第三方库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-21
        • 1970-01-01
        • 1970-01-01
        • 2020-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多