【发布时间】:2015-01-08 15:22:34
【问题描述】:
所以,angularjs $routeProvider 的工作流程如下,
$routeProvider
.when('/main1', {
templateUrl: 'view1.html',
})
.when('/main2', {
templateUrl: 'view2.html',
})
我的问题是,有什么方法可以简化以下代码。如果 when('/main1') 和 when('/main2') 指向同一个模板。所以,
$routeProvider
.when('/main1', {
templateUrl: 'view1.html',
})
.when('/main2', {
templateUrl: 'view1.html',
})
问这个问题是因为如果我们在网站上有多种语言,并且我们希望对 url 进行多种翻译。
另一个解决方案是识别站点是使用 .com 还是 .de,从而调整到正确的 /main1 或 /main2 翻译。比如,
var url = window.location.href;
var main;
if (url.match(/.de/) !== null){
main = "/main1";
}else{
main = "/main2";
}
$routeProvider
.when(main, {
templateUrl: 'view1.html',
})
但从语义上讲,这似乎不是最好的解决方案,因为我喜欢在配置之后将配置选项设置在运行块中。我们也不能将工厂(只有提供者,我可能弄错了)注入到配置中。
【问题讨论】:
-
为什么不把它变成像'/main/:lang'这样的东西呢?然后你可以有'main/DE/'或'main/EN/',你可以从$routeParams检测它是哪种语言,它们被一个路由规则覆盖,when('/main/:lang', {template: 'view.html'}
-
但我更担心面包屑被翻译。例如,对于 .com,我们有 .com/animals/dog。但对于德语,我们将拥有 .de/Tier/Hund。但也许我可以做类似 .com/:animal/:type 之类的操作,然后将德语分配为 Tier 和 Hund?
-
好的,所以你想要翻译 URL?第一个问题是:您打算如何拥有 .com 和 .de,您说的是 www.webpage.com 和 www.webpage.de 之类的东西吗?因为那不再是同一个域了
-
这将是一个域的子应用程序,所以假设我们有。 mainapp.com/subapp,如果是mainapp.de/subapp/animals将被使用,如果是mainapp.com/subapp/tier将被使用。
-
嗯,这意味着一个应用程序标准域,对吗?这意味着您将服务于多个应用程序?
标签: angularjs routing internationalization ngroute