角度本地化基本网址

时间:2017-11-29 21:09:29

标签: javascript angular

我正在学习Angular v.5 + Express,我想使用Angular i18n工具将应用程序翻译成2种语言。我希望我的网址包含我使用的语言,如下所示:mysite.com/en/controller/...

根据the guideline,我的想法是使用AOT编译器。然后,通过Express提供相应的文件夹。因此,我将拥有我的应用程序的2个内置版本,每个版本都在自己的目录中。

问题是我需要在index.html文件中定义基本URL

<head>
  <meta charset="utf-8">
  <title>Title</title>
  <base href="/en/">
  ...
</head>

URL取决于当前语言。我的期望是我可以做像

这样的事情
<base i18n href="/en/">

然后在我的翻译文件中指定备用路径。但是,这不起作用。难道我做错了什么?使用带有这种URL模式的AngularJS5的i18n的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

你必须在网址中使用该语言吗?如果您将其删除,则可以将基本网址设置为/。在这种情况下,您的快速服务器将检测用户的语言并提供正确的资产。因此,如果请求/controllers/myController.js,并且用户的语言是西班牙语,则服务器将从/es_ES/controllers/myController.js返回文件。

PS:我相信AOT编译器只适用于角度2+,所以我假设你实际上使用的是Angular而不是AngularJS。

答案 1 :(得分:1)

一个很好的解决方案可能是使用ngx-translate(与angularJS的angular-translate相同。

Ngx-translate有你需要的插件:

  

通过@meeroslav本地化路由器:Angular的路由本地化实现。如果您需要本地化的网址(例如/ fr / page和/ en / page)。

Ngx - 翻译链接:https://github.com/ngx-translate/core

以下是插件链接:https://github.com/Greentube/localize-router

答案 2 :(得分:0)

您无需在“ index.html”中更改基本href,您可以在“ angular.json”构建配置中定义baseHref,例如“ baseHref”:“ / fr/"。

请参阅Angular I18N文档https://angular.io/guide/i18n#build-for-multiple-locales