ngx-translate 中的地区或国家 (Angular)

Region or country in ngx-translate (Angular)

我昨天和今天都搜索过,但没有找到。也许我只是想念它。如何在美国、英国和澳大利亚获得不同的英语翻译?

我不确定这方面的术语是否称为地区、国家或地区。 Locale 通常意味着语言和区域在一起,但 ngx-translate 似乎并非如此。

编辑:

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

在您的模块中导入翻译:

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?