Leo*_*eon 26 angularjs angular-ui-router angular-translate
我正在使用ui-router进行路由和角度转换以进行翻译.我想要实现的是将所选语言绑定到url,如下所示:
www.mydomain.com/en/
www.mydomain.com/ru/
www.mydomain.com/en/about
www.mydomain.com/ru/about
Run Code Online (Sandbox Code Playgroud)
它将作出相应的回应.
试图寻找例子,但没有找到任何东西.如果有人实施了类似的解决方案,我很想听听你是怎么做到的.
谢谢
mjt*_*tko 30
我在这些方面使用了一些东西:
CoffeeScript的
angular.module('app')
.config([
'$stateProvider'
($stateProvider) ->
$stateProvider.state 'app',
abstract: true
url: '/{locale}'
$stateProvider.state 'app.root',
url: ''
$stateProvider.state 'app.root.about',
url: '/about'
])
Run Code Online (Sandbox Code Playgroud)
JavaScript的
angular.module('app').config([
'$stateProvider', function($stateProvider) {
$stateProvider.state('app', {
abstract: true,
url: '/{locale}'
});
$stateProvider.state('app.root', {
url: ''
});
return $stateProvider.state('app.root.about', {
url: '/about'
});
}
]);
Run Code Online (Sandbox Code Playgroud)
有了这个,你可以注入$stateParams你的控制器并访问那里的语言环境:
CoffeeScript的
angular.module('app')
.controller('appCtrl', [
'$scope', '$stateParams'
($scope, $stateParams) ->
$scope.locale = $stateParams.locale
])
Run Code Online (Sandbox Code Playgroud)
JavaScript的
angular.module('app').controller('appCtrl', [
'$scope', '$stateParams', function($scope, $stateParams) {
return $scope.locale = $stateParams.locale;
}
]);
Run Code Online (Sandbox Code Playgroud)
或者,如果要自动影响整个页面,请$stateChangeStart在应用程序控制器或类似设备中使用该事件:
CoffeeScript的
$scope.$on '$stateChangeStart', (event, toState, toParams, fromState, fromParams) ->
$translate.use(toParams.locale)
Run Code Online (Sandbox Code Playgroud)
JavaScript的
$scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
$translate.use(toParams.locale);
});
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用的是angular-translate v1.x,则应使用$translate.uses而不是$translate.use.
| 归档时间: |
|
| 查看次数: |
16878 次 |
| 最近记录: |