我正在编写一个带有本地化的 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
}
...
然后我应该在以下位置创建一个 loadStyle 组件app.component.ts
:
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/"
}
}
},
所以总的来说,我迷失了根据所选语言环境添加更多样式的正确方法。