【问题标题】:Translation Angular 2 using ngx-translate?使用 ngx-translate 翻译 Angular 2?
【发布时间】:2017-07-28 14:26:26
【问题描述】:

我已按照说明进行所有配置和设置。

app.module.ts

import {  Http } from '@angular/http';
import {TranslateModule, TranslateStaticLoader, TranslateLoader, TranslateService } from 'ng2-translate';

imports: [
    BrowserModule,
    HttpModule,
    TranslateModule.forRoot({
      provide: TranslateLoader,
      useFactory: (http: Http) => new TranslateStaticLoader(http, '/assets/i18n', '.json'),
      deps: [Http]
    })
]

组件:

import {TranslateService,TranslatePipe } from 'ng2-translate';

constructor( private activateRoute: ActivatedRoute, public translate: TranslateService) {
    translate.addLangs(['en']);
    translate.setDefaultLang('en');

  }

和视图组件:

{{ 'Intro' | translate }}

这个库对我不起作用,它总是显示单词的关键字Intro 而不是值翻译。

控制台没有任何错误。为什么ngx-translate 不起作用或我做错了什么。

【问题讨论】:

  • 您是否在i18n 文件夹中创建了en.json 文件并在该文件中列出了Intro
  • 没错。我都做了

标签: angular ngx-translate


【解决方案1】:

如果您仍在使用 Angular

这么跑

npm install @ngx-translate/http-loader@0.1.0 --save 

帮我搞定了

来源: ngx-translate/core

【讨论】:

    【解决方案2】:

    查看您的代码并不能真正判断出什么不起作用。我注意到的一个区别是,我使用ngx-translatedoc 提供的HttpLoaderFactory 进行了设置。我将提供我的完整设置,您可以将其与您的代码进行比较,如果它有助于检测任何问题:)

    设置:

    npm install @ngx-translate/core --save
    npm install @ngx-translate/http-loader --save
    

    app.module.ts:

    // i18n library
    import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
    import { TranslateHttpLoader } from '@ngx-translate/http-loader';
    
    @NgModule({
      ...
      imports: [
        ...
        TranslateModule.forRoot({
          loader: {
              provide: TranslateLoader,
              useFactory: HttpLoaderFactory,
              deps: [Http]
          }
        })
      ]
    

    src > 资产 > i18n > en.json:

    {
      "Intro" : "This is intro!"
    }
    

    component.ts:

    import { TranslateService } from '@ngx-translate/core';
    
    export class Component{
    
      constructor(translate: TranslateService){
        this.translate.setDefaultLang('en');
      }
    }
    

    component.html:

    {{ 'Intro' | translate }}
    

    【讨论】:

    • 我有同样的代码,真的不行,是不是我安装了另一个版本?
    • 是的,这可能是旧版本的问题。从您的import 声明来看,您使用的是旧版本,最新版本使用@ngx-translate 而不是ng2-translate。另外,您没有使用HttpLoaderFactory,我建议您尝试使用它。
    • 导入中的HttpLoaderFactory 是什么?
    • 我收到了这个错误:core.es5.js:1084 ERROR Error: Uncaught (in promise): Error: Response with status: 404 Not Found for URL: /assets/i18n/en.json
    • 再次阅读答案。我在答案中也提到了它的链接。它是 ngx-translate 团队告诉您在文档中使用的库。另外,我也在答案中添加了 npm install 步骤。
    猜你喜欢
    • 2017-12-14
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2020-02-09
    相关资源
    最近更新 更多