我正在使用角4的原生路由和国际化国际化工作。我遇到的问题是当用户在不是主要路由的路由上切换语言时。应用程序的这部分内容像foo.com/admin/
那样访问,当我们在那里抛出一种语言时,该应用程序重新加载到foo.com/admin/es/
。如果这是从诸如foo.com/admin/settings
之类的路由完成的,则问题是应用程序将重新加载到该语言,但结果将是消息Cannot get admin/es/settings
。Angular 4国际化和路由
可以避免的唯一方法是让用户在主路线上更改语言。我知道这种情况的变化可能是最小的,但我觉得我们没有正确使用路线,因为我一直在利用儿童路线为我们的路线提供更好的结构。我非常熟悉AngularJS和ui.router中的儿童路线。
所以我真的可以分为两部分: 1.我们的路由和国际化如何协同工作? 2.我们如何为我们的路线实现更好的结构? a。 Angular 2的ui.router会是更好的选择吗? (我真的推动这一点,但我还没试过ui.router和角CLI)
当前路由映射:
- foo.com/admin
- /用户
- /邀请
- /设置
- /出版物添加
- /出版物引用
- /出版物读取
- /出版物-观察
- /库的视图
期望溃败映射:
- FO。COM /管理
- /用户
- /邀请
- /设置
- /分析
- /出版物添加
- /出版物引用
- /出版物 - 阅读
- /出版物,看
- /库视图
- /用户
路由: { path: '', component: BaseComponent, resolve: { user: UserService }, children: [ { path: '', component: AdminUserComponent, canActivate: [AdminUserGuard] }, { path: 'invite', component: AdminInviteComponent, canActivate: [AdminUserGuard] }, { path: 'settings', component: AdminSettingsComponent, canActivate: [AdminUserGuard] }, { path: 'publications-added', component: AdminAnalyticsComponent, canActivate: [AdminUserGuard] }, { path: 'publications-cited', component: AdminAnalyticsComponent, canActivate: [AdminUserGuard] }, { path: 'publications-read', component: AdminAnalyticsComponent, canActivate: [AdminUserGuard] }, { path: 'publications-viewed', component: AdminAnalyticsComponent, canActivate: [AdminUserGuard] }, { path: 'library-views', component: AdminAnalyticsComponent, canActivate: [AdminUserGuard] }, { path: 'analytics', redirectTo: 'publications-added', pathMatch: 'full' } ] }
我会稍微尝试一下。谢谢德米特里! – Scott