当前位置: 首页 > 知识库问答 >
问题:

使用角度i18n内部*NGFOR具有角度5的环路

张茂勋
2023-03-14
<mat-card *ngFor="let user of usersList">
    <mat-card-title>
        <span>{{user.name}}</span>
    </mat-card-title>
    <mat-card-content>
        <!--This is the enum i would like to translate dynamic -->
        <span i18n="Role@@role">{{user.role}}</span>
    </mat-card-content>
</mat-card>

使用其他文本消息不是一个好方法,因为如果枚举中有数百个值,那该怎么办。我不会在html代码中重复枚举。

共有1个答案

祁俊拔
2023-03-14

我设法让它成功了。下面是使用格式xlif2和选择ICU表达式的示例

https://angular.io/guide/i18n#翻译-选择

下面是我如何翻译select

    <ul>
      <li *ngFor="let user of users">
        <span i18n="@@role">dummy {user.role, select, admin {admin}}</span>
      </li>
      </ul>
    null

然后提取消息文件(例如,对于法语)

    ng xi18n --outputPath src/locale --locale fr--i18nFormat=xlf2 --outFile messages.fr.xlf

然后在messageMessages.[language].xlf文件中设置翻译

    <unit id="role">
      <segment>
        <source>ROLE <ph id="0" equiv="ICU" disp="{user.role, select, admin {...} user {...} other {...}}"/></source>
        <target>ROLE <ph id="0" equiv="ICU" disp="{user.role, select, admin {...} user {...} other {...}}"/></target>
      </segment>
    </unit>
    <unit id="7222321253551421654">
      <segment>
        <source>{VAR_SELECT, select, admin {administrator} user {user} other {other} }</source>
        <target>{VAR_SELECT, select, admin {administrateur} user {utilisateur} other {autre} }</target>
      </segment>
    </unit>

包含要翻译的实际值的单元7222321253551421654的ID是工具生成的ID。您只需修改该单元,即可根据需要添加任意多个角色/翻译

 类似资料:
  • 我正在尝试更改ngFor中的类whit ngclass和三元运算符,如果布尔值为真,我想使用alaling-成功,如果布尔值为假,我想使用alaling-危险。当我插入第一个元素true是可以的,但当我插入第二个元素false时,第一个元素更改为false TS

  • 首先,ngfor中的标签没有要关联的标识,也没有要查找的任何其他标识。然而,我没有发现任何需要id的东西,在剑道页面上有许多例子显示了没有id的复选框的例子,所以我不认为这是问题(但肯定可能是错误的)。 其次,它们在ngFor循环中。我不知道为什么这会把它搞砸,但这是我能想到的一切。我搜索了一下,但找不到任何关于这里的问题或如何解决它的东西。 你知道我哪里出了问题或者我没有看到什么吗?我确实记录了

  • 我想按照这个答案从角度5迁移到角度6 我试着执行这三个命令,来更新。angular-cli.json到angular.json: 不幸的是,仍然没有angular.json。如果我试图运行< code>ng serve,我会得到以下错误: 所以我改名了。angular-cli.json到angular.json。但这并没有帮助: 架构验证失败,出现以下错误:数据路径“”不应具有其他属性(项目)。错

  • 类定义为: 我继续创建对象: 使用以下工具进行检查: 打印: 但是在html模板中使用可以观察到: 引发: 如何解决这个问题?这里是Stackblitz项目的链接: https://stackblitz.com/edit/Angular-ivy-isebs7?file=src%2fapp%2fapp.component.ts

  • 我建立了一个角5应用程序使用i18n,支持法语和英语。然后,我为每种支持的语言部署了单独版本的应用程序 我还添加了以下nginx配置,以提供两种语言的应用程序; 我想做的是为这两个应用程序提供服务,并允许在英文版和法文版之间切换。 比如说,我在如果切换到主机。local/fr/something我应该得到法文版的“something”页面。 使用我共享的nginx配置,每次我在浏览应用程序时刷新页

  • 我想知道我是否有像这样的和的组合。当Angular创建其元素时,什么将首先运行? <代码> 想象一下,我们有一个包含几千个< code >项目的< code >项目列表,并且< code>ngFor首先运行,这种情况会使应用程序完全崩溃。当然,我可以使用一个< code>div来包装它,并将< code>ngIf放在那里,但是了解更多这方面的知识是非常重要的。谢了。