ngx-translate(角度)的地区或国家/地区

时间:2019-07-10 14:49:59

标签: angular ngx-translate

我昨天和今天都进行了搜索,但是没有运气。也许我只是想念它。在美国,英国和澳大利亚,我如何对英语进行不同的翻译?

我不确定是否将其称为地区,国家或地区。语言环境通常通常是指语言和区域,但是ngx-translate似乎并非如此。

编辑:

我能够在getTranslation()调用中使用区域信息来定向到正确的翻译文件。由于该区域不是由javascript / angular提供的,因此只能通过检查网站的域名来实现此目的(我在不同国家/地区拥有不同的域名)。没有不同的域名,我不知道如何确定地区/国家。

1 个答案:

答案 0 :(得分:1)

在您的模块中导入翻译:

TranslateModule.forRoot({
      loader: {
        provide: CustomTranslateLoader,
      }
    }),

CustomTranslateLoader,只需将“ ca,en,es”替换为所需的语言

import { TranslateLoader } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import es from '../../locales/es/translation.json';
import en from '../../locales/en/translation.json';
import ca from '../../locales/ca/translation.json';

export class CustomTranslateLoader implements TranslateLoader {
    public getTranslation(lang: string): Observable<any> {
        return Observable.create(observer => {
            switch (lang) {
                case 'es':
                    observer.next(es);
                    break;
                case 'en':
                    observer.next(en);
                    break;
                case 'ca':
                    observer.next(ca);
                    break;
            }

            observer.complete();
        });
    }
}

最后,默认情况下,在您的AppComponent上放一个,然后尝试使用用户在浏览器中拥有的那个:

constructor(
    private translate: TranslateService,
  ) {
    translate.setDefaultLang('es');
    translate.use(translate.getBrowserLang());
  }

所有语言环境的列表: List of All Locales and Their Short Codes?