【问题标题】:i18n in datePipe AngulardatePipe Angular 中的 i18n
【发布时间】:2018-07-20 06:00:34
【问题描述】:

我有一个以两种语言运行的应用程序(我可以使用 i18n 更改并选择我想要的语言)英语/法语。

目前,即使我选择法语,我也只能用英语获得日期。

   <div class="information">
              {{ information.date | information:'EEEE'}} {{information.date | date:'d'}} {{ information.date | date:'MMMM'}} {{ information.date |
              date:'yyyy'}}
        </div>

目前我在 2018 年 8 月 17 日星期一得到它,我也想在 2018 年 17 月 17 日购买法国人

有没有办法根据选择的语言更改日期?

【问题讨论】:

  • 这通常取决于您的浏览器设置。如果浏览器以法语运行,您的输出将符合法语规则。阅读本教程,可能会有所帮助:angular.io/guide/i18n#setting-up-the-locale-of-your-app
  • @DiabolicWords 目前在我的应用程序中,我可以自己更改语言。我的问题是 PipeDate,我认为有一个技巧,因为默认情况下它将保持为英语,当我在应用程序中更改语言时,我需要弄清楚如何用法语更改它。
  • 我明白了。这就是为什么我在上面的帖子中添加了链接。本文正好涵盖了这个问题。
  • 好的,我自己阅读了教程。最重要的信息是这样的:您需要为每种支持的语言构建和部署单独的应用版本。 因此,在运行时不会有机会切换整个语言包.运行时的 I18N 仅帮助您按键替换翻译。
  • @DiabolicWords Ouuuuuch 我需要找到解决方案

标签: angular ngx-translate


【解决方案1】:

按照此处所述创建和使用自定义管道:https://angular.io/guide/pipes

类似这样的:

import { Pipe, PipeTransform } from '@angular/core';

enum Days {
    Dimanche,
    Lundi,
    Mardi,
    Mercredi,
    Jeudi,
    Vendredi,
    Samedi
}

enum Months {
    Janvier,
    Février,
    Mars,
    Avril,
    Mai,
    Juin,
    Juillet,
    Août,
    Septembre,
    Octobre,
    Novembre,
    Décembre
}

@Pipe({ name: 'frenchDate' })
export class FrenchDatePipe implements PipeTransform {
    transform(date: Date) {

        const dayOfMonth = date.getDate();
        const nameOfDay = Days[date.getDay()];
        const nameOfMonth = Months[date.getMonth()];
        const year = date.getYear();

        const result = nameOfDay + ' ' + dayOfMonth + ' ' + nameOfMonth + ' ' + year;

       return result;
    }
}

【讨论】:

  • 好的,给你。这个管道应该做你想做的事。你只需要在它周围加上一个 if 子句来检查当前是否需要法国日期。
【解决方案2】:

我对 i18n 没有更多的了解,但在研究了文档后,我确保这段代码对你很有效。

ng serve --configuration=fr

使用此命令运行您的程序。这里 fr 指的是法语标识符。

如果您想导入其他语言的语言环境数据,您可以在 app.module.ts 文件中手动完成。

从“@angular/common”导入 { registerLocaleData };

从“@angular/common/locales/fr”导入 localeFr;

registerLocaleData(localeFr, 'fr');

【讨论】:

  • 先生,我认为angular.io/guide/i18n#i18n-pipes 有一个技巧,我可以在本地存储中获取语言,我想通过它来影响日期,但不知道该怎么做。
  • Angular 仅附带 en-US 语言环境数据。要将日期本地化为另一种语言,您必须导入相应的语言环境数据
  • 主要问题是她想在运行时在这些语言之间切换,这并不完全可能。您可以告诉 Angular 使用另一组翻译文件,但当前运行的语言包的静态环境将保持不变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2021-02-24
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
相关资源
最近更新 更多