带链接的AngularJS多语言URL路由
我有一个AngularJS网络应用程序。我正在更改应用程序,以便URL可以是多语言的,用于SEO索引目的 我正在设置我的app.js,如下所示:带链接的AngularJS多语言URL路由,angularjs,multilingual,Angularjs,Multilingual,我有一个AngularJS网络应用程序。我正在更改应用程序,以便URL可以是多语言的,用于SEO索引目的 我正在设置我的app.js,如下所示: $routeProvider.when('/:language', {templateUrl: 'partials/home.html', controller: 'HomeCtrl'}); $routeProvider.when('/:language/about', {templateUrl: 'partials/about.ht
$routeProvider.when('/:language', {templateUrl: 'partials/home.html', controller: 'HomeCtrl'});
$routeProvider.when('/:language/about', {templateUrl: 'partials/about.html', controller: 'AboutCtrl'});
然后,在一个服务中,我使用$routeParams获取语言参数,并使用angular translate调用我的翻译代码,以相应的语言为页面提供服务
到目前为止一切正常
但是现在,我所有的内部链接都停止了工作,因为它们缺少语言参数
我的方法是在服务中设置语言,并让它在链接中连接它,比如。当然,这将使我重构所有链接
这是正确的方法还是有更好更聪明的方法?您可以使用插件将路由定义为嵌套路由
然后,您可以使用指令并使用相对路径导航路线
home.html:转到“关于”子路径关于
about.html:为了回到父母家我最终采用了上面描述的方法。使用UI Router可能是最好的方法,但更改对我的开发产生了中/大的影响。我也这样做了,但还添加了$routeChangeStart侦听器,它将$rootScope.language设置为当前区域设置。这样,我可以使用一个较短的{{language}来注入语言。这不应该是一个可接受的答案,因为它不能提供这个问题的解决方案。你要么改进它,要么删除它。
$stateProvider
.state('home', {
url: '/:language',
...
})
.state('home.about', {
url: '/about',
...
});