io uso qualcosa in questo senso:
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'
});
}
]);
Con questo, si può INIEZ t $stateParams
nel controller e ottenere l'accesso al locale c'è:
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;
}
]);
Oppure, se si vuole influenzare l'intera pagina automaticamente, l'uso l'evento $stateChangeStart
in un controller dell'applicazione o simile:
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);
});
Si noti che se si sta utilizzando angolare-translate v1.x si dovrebbe usare $translate.uses
invece di $translate.use
.
Solo una piccola modifica: $ translate.use invece di usi – Leon
Ah, sì - questo sembra essere cambiato tra v1.x V2.x e sto usando v1.x in questo momento - I Prenderò un appunto nella risposta, grazie. – mjtko
Desidero che l'URL abbia un codice lingua quando l'utente naviga alla pagina principale della pagina web da 'dominio.com' ->' dominio.it/it/' Per fare ciò ho bisogno di rilevare prima il linguaggio utente e poi aggiungere i parametri' {locale} 'all'URL. C'è una buona soluzione per questo? – user2814599