gpt4 book ai didi

angularjs - 使用 ui-router 和 Angular-translate 本地化 URL

转载 作者:行者123 更新时间:2023-12-02 21:50:58 26 4
gpt4 key购买 nike

我使用 ui-router 进行路由,使用 Angular-translate 进行翻译。我想要实现的是将所选语言绑定(bind)到 url,如下所示:

www.mydomain.com/en/
www.mydomain.com/ru/
www.mydomain.com/en/about
www.mydomain.com/ru/about

它会做出相应的响应。

尝试寻找示例,但没有找到任何内容。如果有人实现了类似的解决方案,我很想听听你是如何做到的。

谢谢

最佳答案

我使用了一些类似的东西:

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'
])

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'
});
}
]);

有了这个,您可以将 $stateParams 注入(inject) Controller 并访问那里的语言环境:

CoffeeScript

angular.module('app')
.controller('appCtrl', [
'$scope', '$stateParams'
($scope, $stateParams) ->
$scope.locale = $stateParams.locale
])

JavaScript

angular.module('app').controller('appCtrl', [
'$scope', '$stateParams', function($scope, $stateParams) {
return $scope.locale = $stateParams.locale;
}
]);

或者,如果您想自动影响整个页面,请在应用程序 Controller 或类似 Controller 中使用 $stateChangeStart 事件:

CoffeeScript

$scope.$on '$stateChangeStart', (event, toState, toParams, fromState, fromParams) ->
$translate.use(toParams.locale)

JavaScript

$scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
$translate.use(toParams.locale);
});

请注意,如果您使用的是 Angular-translate v1.x,则应使用 $translate.uses 而不是 $translate.use

关于angularjs - 使用 ui-router 和 Angular-translate 本地化 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24281652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com