我有一个AngularJS1.0.7 Web应用程序。我正在实施domain.com/es或domain.com/en等多语言网址。我有www.domain.com/es/about。
另一方面,我在导航栏中有一个选择组合框以更改语言。因此,当用户更改语言时,网址部分应该更改。
我应该如何实现这一目标?
注意:请知道ui-router。我会对它进行评估,但代码的变化非常大。所以,我想知道一种使用ng-route的方法。
注2:我也知道我的角度版本是旧的。在后来的AngularJs版本中,我知道有$ route.updateParams({language:newValue});但是,它在我的版本中不可用。
答案 0 :(得分:1)
您可以简单地替换网址的语言部分(始终在开头)并设置新路径:
// Read current path, e.g. /es/about
var path = $location.path();
// Replace language path
var newLang = 'en';
var newPath = path.replace(/^\/.*?\//, '/' + newLang + '/');
// Set new path, e.g. /en/about
$location.path(newPath);
答案 1 :(得分:0)
你需要这样的东西:
$scope.$watch('language', function (newValue, oldValue) {
if (newValue !== oldValue) {
var path = $location.path();
path = path.replace('/'+oldValue+'/', '/'+newValue+'/');
console.log(path);
$location.path(path);
$route.reload();
}
});