angular - i18n 应用加载后切换区域设置一次
问题描述
对于多语言网站,我使用以下技术在应用程序中动态切换语言。这是正确的方法吗?
有时,页面加载结束,not-found
甚至回到登录页面。
main.ts
declare const require;
var translations = require(`raw-loader!./locale/messages.xlf`);
switch(localStorage.getItem("lang"))
{
case("ta"):
{
translations = require(`raw-loader!./locale/messages.ta.xlf`);
break;
}
case("fr"):
{
translations = require(`raw-loader!./locale/messages.fr.xlf`);
break;
}
default:
translations = 'en';
}
platformBrowserDynamic().bootstrapModule(AppModule, {
providers: [
{provide: TRANSLATIONS, useValue: translations},
{provide: TRANSLATIONS_FORMAT, useValue: 'xlf'},
]
})
.catch(err => console.error(err));
app.module.ts
var locale = localStorage.getItem("lang")
if (!locale) locale = "en"
providers: [
{ provide: LOCALE_ID, useValue: locale },
{ provide: "BASE_API_URL", useValue: environment.baseUrl},
]
在设置页面中,选择语言并重定向回主页。
<mat-select [formControl]="language">
<mat-option value="ta">Tamil</mat-option>
<mat-option value="en">English</mat-option>
<mat-option value="fr">French</mat-option>
</mat-select>
localStorage.setItem('lang', formValue.language)
//this.router.onSameUrlNavigation = 'reload'
this.router.navigate(['/home'])
解决方案
推荐阅读
- azure - 如何在 Azure DevOps 中发出非阻塞拉取请求?拉取请求完成后如何批准?
- java - 视频未使用 VideoView 中的链接播放
- javascript - 即使在javascript中的页面刷新时如何保留范围滑块的最后拖动位置
- java - 如何获取所有后台运行进程列表?
- html - 我有一个轮播在桌面上一次显示 4 张图像。我希望在移动视图中一次只显示一张图像
- java - JFrame Keylistener 正在接受用户的输入
- sql - JOIN 中的复杂 SQL 查询
- javafx - 在 JavaFX 中同步倒数计时器的最佳方法
- c++ - 将字符串转换为无符号字符数组/字节数组
- javascript - 鼠标悬停时不调用和更改背景颜色的函数