在Angular中,可以使用ngx-translate库来实现使用来自"assets"外部的翻译。以下是一个示例解决方法:
npm install @ngx-translate/core --save
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { HttpClientModule, HttpClient } from '@angular/common/http';
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
imports: [
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient]
}
})
],
...
})
export class AppModule { }
{
"HELLO": "Hello",
"WORLD": "World"
}
import { TranslateService } from '@ngx-translate/core';
export class AppComponent {
constructor(private translateService: TranslateService) {
this.translateService.setDefaultLang('en'); // 设置默认语言
this.translateService.use('en'); // 使用指定语言
}
changeLanguage(language: string) {
this.translateService.use(language); // 切换语言
}
getTranslationText(key: string) {
return this.translateService.get(key);
}
}
{{ getTranslationText('HELLO') }} {{ getTranslationText('WORLD') }}
以上是一个基本的示例,可以根据实际需求进行适当的修改。例如,可以根据用户选择的语言切换翻译文本等。