【发布时间】:2021-04-27 07:09:24
【问题描述】:
我正在编写一个带有本地化功能的 Angular 11 通用应用程序。
我想要实现的是能够根据所选的语言环境加载更多 scss 文件。
例如,如果用户选择Hebrew,它将添加styles-he.scss,即添加了direction:rtl。
我用谷歌搜索了很多,基本上都和这个网址一样:https://juristr.com/blog/2019/08/dynamically-load-css-angular-cli/
我需要在 angular.json 中添加新样式,以便延迟加载:
"styles": [
"src/styles.scss",
{
"input": "src/styles-he.scss",
"bundleName": "hebrewStyle",
"inject": false
}
...
然后我应该在app.component.ts 中创建一个loadStyle 组件:
loadStyle(styleName: string) {
const head = this.document.getElementsByTagName('head')[0];
let themeLink = this.document.getElementById(
'client-theme'
) as HTMLLinkElement;
if (themeLink) {
themeLink.href = styleName;
} else {
const style = this.document.createElement('link');
style.id = 'client-theme';
style.rel = 'stylesheet';
style.href = `${styleName}`;
head.appendChild(style);
}
}
并随时执行loadStyle('styles-he.scss')
啊啊..其实教程讲了css,不知道scss能不能用。可能我必须在这种方法中使用 css。
问题是,我预计会有一种更角度的方式来包含这些基于国家/地区的样式文件。执行这个函数的时候不太明白,怎么知道是什么语言。
这是我在 angular.json 中的语言环境配置
"i18n": {
"sourceLocale": "en",
"locales": {
"he": {
"translation": "src/locale/messages.he.xlf",
"baseHref": "he/"
}
}
},
所以总的来说,我不知道根据所选语言环境添加更多样式的正确方法是什么。
【问题讨论】:
标签: angular angular-universal angular-lazyloading angular-localize