在Angular中本地化路线

时间:2013-11-30 00:55:36

标签: javascript angularjs

我正在尝试使用多种语言创建一个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中做到这一点,或者完全不同的方法来定位路线?

2 个答案:

答案 0 :(得分:0)

这不是AngularJS特有的,但是为什么不在知道用户想要UI的语言时立即设置cookie?然后,客户端和服务器都可以在每个页面上随时访问它,您无需在URL中将其穿梭。

答案 1 :(得分:0)

这可能为时已晚,但如果您使用的是Angular 2x,则会有一个库 localize-router 。你可以找到它here