我正在学习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的正确方法是什么?
答案 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
答案 2 :(得分:0)
您无需在“ index.html”中更改基本href,您可以在“ angular.json”构建配置中定义baseHref,例如“ baseHref”:“ / fr/"。
请参阅Angular I18N文档https://angular.io/guide/i18n#build-for-multiple-locales