Angular 4 Ngx 翻译管道不工作
Angular 4 Ngx-translate pipe not working
我想制作一个 angular 4 多语言应用程序。
我已经关注了 Angular 2 - Multilingual Support 上的答案
但它不起作用。
我在该页面上执行了从 1 到 5 的每一步,我的应用程序模块看起来都一样。
我的 assets 文件夹中的 i18n 文件夹中有一个文件 en.json。
该文件包含
{ "TEST":"little test"}
在我的 HTML:
<a [routerLink]="['/home']" class="tile waves-effect waves-light btn-large">
<span> {{ "TEST" | translate }}</span>
</a>
当我使用它时,我得到的是 TEST 而不是 little test。
这真的很烦人,因为我想添加多种语言。
编辑
我已将此代码添加到我的 appmodule.ts(只添加必要的)
import {HttpClientModule, HttpClient} from '@angular/common/http';
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@NgModule({
imports: [
BrowserModule,
HttpModule,
HttpClientModule,
MaterializeModule.forRoot(),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
FormsModule,
JsonpModule,
routing,
BrowserAnimationsModule,
],
你可以这样试试吗?
export function HttpLoaderFactory(http: Http) {
return new TranslateHttpLoader(http, "./assets/i18n/", ".json");
}
首先将翻译服务导入特色模块。内部模块构造函数使用:
constructor(private translate:TranslateService){
translate.setDefaultLang('en');
}
您必须正确设置 i18n。这意味着在最好的情况下,这些导入 app.module.ts
for ionic4:
// i18n and globalization
import { Globalization } from '@ionic-native/globalization/ngx';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
如果您不知道如何安装全球化或为什么要使用,请参阅:https://ionicframework.com/docs/native/globalization
您应该创建此默认加载程序方法:
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
并导入翻译模块
imports: [
..., // other stuff above
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
... // other stuff beyond
]
如果在 cordova 系统上,现在您可以使用全球化来获取有关设备的信息:
this.globalization.getPreferredLanguage()
或使用预定义字符串硬编码您需要的模块中的语言。
this.translate.setDefaultLang(locale);
this.translate.use(locale);
但这里的最佳做法是将这些内容包含到共享模块中,然后在页面、组件等上导入该模块
注意:不要忘记,如果您不告诉翻译服务要使用哪种语言,它将永远显示您尝试使用翻译管道转换的字符串模板,在大多数情况下您不会看到任何错误。
我想制作一个 angular 4 多语言应用程序。 我已经关注了 Angular 2 - Multilingual Support 上的答案 但它不起作用。
我在该页面上执行了从 1 到 5 的每一步,我的应用程序模块看起来都一样。
我的 assets 文件夹中的 i18n 文件夹中有一个文件 en.json。 该文件包含
{ "TEST":"little test"}
在我的 HTML:
<a [routerLink]="['/home']" class="tile waves-effect waves-light btn-large">
<span> {{ "TEST" | translate }}</span>
</a>
当我使用它时,我得到的是 TEST 而不是 little test。 这真的很烦人,因为我想添加多种语言。
编辑
我已将此代码添加到我的 appmodule.ts(只添加必要的)
import {HttpClientModule, HttpClient} from '@angular/common/http';
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@NgModule({
imports: [
BrowserModule,
HttpModule,
HttpClientModule,
MaterializeModule.forRoot(),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
FormsModule,
JsonpModule,
routing,
BrowserAnimationsModule,
],
你可以这样试试吗?
export function HttpLoaderFactory(http: Http) {
return new TranslateHttpLoader(http, "./assets/i18n/", ".json");
}
首先将翻译服务导入特色模块。内部模块构造函数使用:
constructor(private translate:TranslateService){
translate.setDefaultLang('en');
}
您必须正确设置 i18n。这意味着在最好的情况下,这些导入 app.module.ts
for ionic4:
// i18n and globalization
import { Globalization } from '@ionic-native/globalization/ngx';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
如果您不知道如何安装全球化或为什么要使用,请参阅:https://ionicframework.com/docs/native/globalization
您应该创建此默认加载程序方法:
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
并导入翻译模块
imports: [
..., // other stuff above
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
... // other stuff beyond
]
如果在 cordova 系统上,现在您可以使用全球化来获取有关设备的信息:
this.globalization.getPreferredLanguage()
或使用预定义字符串硬编码您需要的模块中的语言。
this.translate.setDefaultLang(locale);
this.translate.use(locale);
但这里的最佳做法是将这些内容包含到共享模块中,然后在页面、组件等上导入该模块
注意:不要忘记,如果您不告诉翻译服务要使用哪种语言,它将永远显示您尝试使用翻译管道转换的字符串模板,在大多数情况下您不会看到任何错误。