这里是一个最小的复制:link
我正在使用Angular(17)与Transloco. 在遵循文档中的说明之后,我try 使用模板中的 struct 指令翻译简单的文本,
<ng-container *transloco="let t"> <h2>{{ t('greeting') }}</h2> </ng-container>
问题是,正如您所看到的,根本没有呈现文本.
我试着使用相对和绝对路径的翻译文件,也注意到网络选项卡中没有HTTP调用,这表明翻译没有被提取.
完整代码
双手
import { Component, inject, isDevMode } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import 'zone.js';
import { provideHttpClient } from '@angular/common/http';
import { TranslocoHttpLoader } from './transloco-loader';
import { TranslocoService, provideTransloco } from '@jsverse/transloco';
@Component({
selector: 'app-root',
standalone: true,
template: `
<ng-container *transloco="let t">
<h2>{{ t('greeting') }}</h2>
</ng-container>
<button (click)="onChangeToSpanish()">Change to Spanish</button>
`,
})
export class App {
private translocoService = inject(TranslocoService);
onChangeToSpanish() {
this.translocoService.setActiveLang('es');
}
}
bootstrapApplication(App, {
providers: [
provideHttpClient(),
provideTransloco({
config: {
availableLangs: ['en', 'es'],
defaultLang: 'en',
// Remove this option if your application doesn't support changing language in runtime.
reRenderOnLangChange: true,
prodMode: !isDevMode(),
},
loader: TranslocoHttpLoader,
}),
],
});
transloco-loader.ts
import { inject, Injectable } from '@angular/core';
import { Translation, TranslocoLoader } from '@jsverse/transloco';
import { HttpClient } from '@angular/common/http';
@Injectable({ providedIn: 'root' })
export class TranslocoHttpLoader implements TranslocoLoader {
private http = inject(HttpClient);
getTranslation(lang: string) {
return this.http.get<Translation>(`/assets/i18n/${lang}.json`);
}
}
因为这应该是直接通过,我觉得我错过了什么.