javascript - 以角度处理语言切换的正确方法
问题描述
我已将国际化 (i18n) 添加到我的 Angular 应用程序中。我希望它以这种方式工作:
当用户访问 home 组件时:
localhost:4200/
. 我从localStorage
组件加载中检测语言环境并将其附加到现有 url。这样最终的网址将类似于localhost:4200/detectedLocale
(例如localhost:4200/en/
:)我也想实现语言之间的切换。因此,当用户从语言选择器中选择一种新语言时,URL 会更改为例如 from
localhost:4200/fr/
到localhost:4200/en/
为此,我使用了window.location.pathname = '/' + selectedLocale
. 这样整个路径名就会被覆盖。
这在开发模式下运行良好。但是,我在将 Angular 应用程序部署到另一个后端服务器时遇到了一些问题。
后端服务器路由类似于以下内容:
/api
:其余的调用(后端的东西)/frontend
:对于嵌入式角度应用程序
我使用 ng build 构建了我的 Angular 应用程序并指定frontend
为base href
.
现在,当我运行后端服务器并点击http://host/frontend/
时,主组件被加载,然后我被重定向到http://host/language
我不希望它发生的事情。
我想是因为这window.location.pathname = '/' + selectedLocale
件事。(在语言之间切换时相同)。
我怎样才能解决这个问题 ?有没有替代品window.location.pathname
?就像在考虑前缀 (base href) 并且不覆盖整个内容的情况下以角度将语言附加到 URL 的正确方法一样。
另请注意,我在我的应用程序模块中添加了这个:
{ provide: APP_BASE_HREF, useValue: '/' + extractedLanguage },
有任何想法吗 ?谢谢您的帮助。
解决方案
推荐阅读
- docker - OpenIAM 使用 docker 设置自定义版本
- python - 如何清除熊猫数据框方括号内的数字
- c - 我想知道从快速排序安排的两个功能之间的区别
- java - 在 libGDX 中创建一个简单的按钮
- python - Python - 从位置对象的二维数组打印 ASCII 笛卡尔坐标网格
- c# - 使用带有 if 语句的布尔变量?
- javascript - 如何在Javascript中制作一个使尺寸变大的按钮?
- java - 如何从 quickfixj 中的重复组中获取价值
- laravel - 分配 ID 以在表上创建“查看详细信息”以链接到视图
- javascript - Electron 中奇怪的 IPC 消息传递行为