Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带链接的AngularJS多语言URL路由_Angularjs_Multilingual - Fatal编程技术网

带链接的AngularJS多语言URL路由

带链接的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

我有一个AngularJS网络应用程序。我正在更改应用程序,以便URL可以是多语言的,用于SEO索引目的

我正在设置我的app.js,如下所示:

$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',
     ...
  });