Angular 本地化基础 URL

3
我正在学习Angular v.5 + Express,并希望使用Angular i18n工具将应用程序翻译成两种语言。我想要使用的语言包含在URL中,例如:mysite.com/en/controller/... 我的想法是根据指南使用AOT编译器,然后由Express服务相应的文件夹。因此,我将有应用程序的两个已构建版本,分别位于其自己的目录中。
问题在于,我需要在index.html文件中定义基本URL。
<head>
  <meta charset="utf-8">
  <title>Title</title>
  <base href="/en/">
  ...
</head>

URL的格式取决于当前语言。我的期望是能够像下面这样进行操作:

<base i18n href="/en/">

然后在我的翻译文件中指定替代路径。但是,这并不起作用。我做错了什么?在 AngularJS5 中使用 i18n 正确的方式是什么?特别是在这种 URL 模式下。


1
你好,只是提供给你的信息,如果你谈论v2+,你必须说Angular,旧版本被称为AngularJS。 - Leasye
3个回答

3
一个好的解决方案可以是使用ngx-translate(与angularJS的angular-translate相同)。
Ngx-translate有一个适合你需求的插件:

由@meeroslav开发的Localize Router:用于实现Angular路由本地化的实现。如果您需要本地化的URL(例如/fr/page和/en/page)。

Ngx-translate链接: https://github.com/ngx-translate/core 这是插件链接: https://github.com/Greentube/localize-router

2
你是否必须在url中包含语言信息?如果不需要,你可以将基本url设置为/。在这种情况下,你的express服务器会检测用户的语言并提供正确的资源。因此,如果请求了/controllers/myController.js,并且用户的语言是西班牙语,服务器将返回/es_ES/controllers/myController.js文件。
PS:我认为AOT编译器只适用于Angular 2+,所以我假设你实际上使用的是Angular而不是AngularJS。

谢谢您的回答。不,我不必这样做,但是在我的服务器端,我只知道一种检测语言的方法 - 通过匹配URL。如果您能建议一种无需URL匹配即可检测(和切换)语言的方法,那就太好了。 - alvis
很简单,看这里:https://dev59.com/7Ggt5IYBdhLWcg3wvgBu - frodo2975

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接