Я пытаюсь создать приложение 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 или совсем другой подход относительно локализации маршрутов?
Я хочу дать пользователю возможность изменить язык на любой странице, а не принимать решение, которое они могут сделать только один раз на стартовой странице. – user517406
@ user517406 На стороне клиента JavaScript может легко переписать клиентскую часть файла cookie, а затем повторно запросить страницу. Дайте им понизиться, чтобы изменить значение языка. –