在Angular中更改默认语言环境

7

我用法语构建了一个Angular应用程序,现在我想使用国际化(i18n)将其提供给其他语言,例如英语。问题是Angular的默认语言环境是en-US,当我写下这个代码 Mes endroits 时,它就会变成这样:

<file source-language= "en-US" datatype="plaintext" original="ng2.template">// source is English
    <body>
      <trans-unit id="4df6e2173dc9d9f8c60481273cf3371981e60fde" datatype="html">
        <source>Mes endroits</source> ... // but this is in french

我希望源语言为fr,例如提供 messages.en.xlf

那么我可以将默认区域设置更改为 fr,还是必须重新编写用法并提供messages.fr.xlf

3个回答

7
这可以通过在 angular.json 文件中设置 sourceLocale 来实现。在我的情况下,核心应用程序是德语,因此该文件的相关部分如下所示:
{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "angular-client": {
      "i18n": {
        "sourceLocale": {
          "code": "de",
          "baseHref": ""
        },
        "locales": {
          "en": {
            "translation": "src/locale/messages.en.xlf",
            "baseHref": ""
          }
        }
      }
    }
  }
}

对我来说,这个程序正常工作,XLF 文件都被正确地归属。


3

以下是 Angular 提供的文档。

Stackblitz 链接

在 app.module.ts 中添加以下内容到 providers:

{ provide: LOCALE_ID, useValue: 'de-DE'}


2
我尝试过,它只提供了 fr 本地化,但没有更改默认的本地化。 - Rabie Daddi
另外,您可以尝试在app.module.ts中使用{ provide: LOCALE_ID,useValue:'de-DE'}。 - Gourav Garg

2

这可能会帮助你使用ngx-translate/ng2-translate,这个库在Angular项目中非常常见。

个人而言,我更喜欢以这种方式进行翻译。

您将能够使用翻译管道。像这样:

<p>{{ 'myPlaces' | translate }}</p>

在 fr.json 中定义:

并在该文件中定义:

{ 'myPlaces' : 'Mes endroits' }

我让您查看文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接