2013-11-30 4 views
1

Я пытаюсь создать приложение Angular на нескольких языках, но я столкнулся с проблемой маршрутизации. Я нашел обходной путь, чтобы сделать необходимые маршруты действующие на 2-х языках:Локализация маршрутов в Angular

var app = angular.module("app", ["localization", "ngResource", "ngRoute"]). 
config(function ($routeProvider, $locationProvider) { 
    $routeProvider. 
     when('/en-US/Gameplan/Admin/Fixtures/List', { controller: FixtureListController, templateUrl: '/Content/Templates/Fixtures.html' }). 
     when('/da-DK/Gameplan/Admin/Fixtures/List', { controller: FixtureListController, templateUrl: '/Content/Templates/Fixtures.html' }). 
     when('/en-US/Gameplan/Admin/Fixtures/Add', { controller: FixtureAddController, templateUrl: '/Content/Templates/FixtureAddEdit.html' }). 
     when('/da-DK/Gameplan/Admin/Fixtures/Add', { controller: FixtureAddController, templateUrl: '/Content/Templates/FixtureAddEdit.html' }). 
     when('/en-US/Gameplan/Admin/Fixtures/Edit/:fixtureId', { controller: FixtureEditController, templateUrl: '/Content/Templates/FixtureAddEdit.html' }). 
     when('/da-DK/Gameplan/Admin/Fixtures/Edit/:fixtureId', { controller: FixtureEditController, templateUrl: '/Content/Templates/FixtureAddEdit.html' }). 
     otherwise({ redirectTo: '/en-US/Gameplan/Admin/Fixtures/List' }); 
    $locationProvider.html5Mode(true); //will use html5 mode rather than hashbang where available 
}); 

Однако я до сих пор есть проблемы со ссылками, в настоящее время мои ссылки выглядят следующим образом:

<a href="/en-US/Gameplan/Admin/Fixtures/Add"><i class="glyphicon glyphicon-plus"></i></a> 
<a href="/en-US/Gameplan/Admin/Fixtures/Edit/{{fixture.Id}}"><i class="glyphicon glyphicon-edit"></i></a> 

Я не хочу для жесткого кодирования URL-адреса, и у меня есть клиентский объект, который возвращает языковой стандарт (в данном случае - en-US или da-DK), но мне не удалось динамически установить значения href. Есть ли какой-либо способ сделать это в Angular или совсем другой подход относительно локализации маршрутов?

ответ

0

Это не AngularJS, но почему бы не установить cookie, как только вы знаете, какой язык пользователь хочет для пользовательского интерфейса? Тогда и у клиента, и у сервера есть доступ к нему на каждой странице, и вам не нужно перемещать его по URL-адресу.

+0

Я хочу дать пользователю возможность изменить язык на любой странице, а не принимать решение, которое они могут сделать только один раз на стартовой странице. – user517406

+0

@ user517406 На стороне клиента JavaScript может легко переписать клиентскую часть файла cookie, а затем повторно запросить страницу. Дайте им понизиться, чтобы изменить значение языка. –

0

Это может быть слишком поздно, но если вы используете Angular 2x, есть библиотека localize-router. Вы можете найти его here.

Смежные вопросы