angular - 如何通过 aot 编译在 Angular 中提供备用 i18n 语言链接?

标签 angular internationalization angular2-aot xliff

我目前正在研究我的 Angular 应用程序的国际化。我使用 AOT 编译 xlf 文件来创建预编译的应用程序,如所述 here .在构建中,我提供了特定于语言的基础 href(使用 --base-href 参数)。例如,这意味着我最终得到了两个使用以下 url 路径的特定于语言的应用程序:

  • /app_path/en/...
  • /app_path/de/...

现在我想通过在事件 url 中将 en 替换为 de 来提供指向我的应用程序中相应替代语言的链接。我使用了 Router 注入(inject),所以我可以访问它的 url 属性,但是这个属性没有给我完整的 url,包括 base-href。

如何从 Angular 应用程序中找到基本 url?

或者,有没有办法找出应用程序的构建语言?我能否以某种方式从 xliff 文件访问目标语言属性?

最佳答案

当您为各种语言编译您的应用程序时,您在 ng 构建过程中设置了语言环境:

./node_modules/.bin/ngc --i18nFile=./locale/messages.es.xlf --locale=es --i18nFormat=xlf

您可以通过将其注入(inject)您的组件来访问此语言环境:

import { Inject, LOCALE_ID } from '@angular/core';
...
constructor(@Inject(LOCALE_ID) locale: string, ...

然后您可以使用语言环境字符串来确定当前语言。在上面的示例中,语言环境设置为“es”

希望对你有帮助

关于angular - 如何通过 aot 编译在 Angular 中提供备用 i18n 语言链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44158384/

相关文章:

angular - Angular 中的 ng-bootstrap 模态对话框 - 在继续执行之前获取 closeResult 值

angular - 评级插件不适用于 Ionic 3

angular - 未捕获的类型错误 : this. _input.charCodeAt 不是函数

angular - 无法绑定(bind)到 DIRECTIVE,因为它不是元素 Angular AOT 的已知属性

angular - 我可以使用 @ngtools/webpack 发出类型/声明 (.d.ts) 和装饰器元数据 (.metadata.json) 文件吗?

angular - Angular Universal 还是 SPA 吗?

java - 当他访问网站并以用户语言显示页面时,如何在jsp页面中获取用户语言环境

python - 如何让python的argparse生成非英文文本?

Php str_replace 不适用于特殊字符

javascript - AOT 清理加载程序出错,无法使用 AOT 模式构建 Angular 应用程序