[英]Localizing routes in Angular
我正在嘗試創建多種語言的Angular應用程序,但是遇到了路由問題。 我找到了一種解決方法,以使必要的路由對2種語言均有效:
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中做到這一點,或者在本地化路線方面采用完全不同的方法?
這不是AngularJS特有的,但是為什么不知道用戶想要的UI語言就立即設置cookie? 這樣,客戶端和服務器都可以在每個頁面上訪問它,而不必在URL中穿梭它。
這可能為時已晚,但是如果您使用的是Angular 2x,則有一個庫localize-router 。 你可以在這里找到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.