首页 > 解决方案 > 本地化后如何对角材料下拉列表进行排序/排序

问题描述

我正在开发一个使用 angular i18n 进行本地化的 UI。我的问题是枚举生成的下拉列表。我不知道如何根据手头的语言按字母顺序排列它们。

我曾尝试使用一些管道,但似乎它们是在应用翻译之前执行的。我也尝试在 xlf 中更改顺序,但没有任何运气。

有没有办法直接从组件运行本地化,所以我会在组件中拥有本地化的字符串,我可以在将它们发送到表单之前按照我的意愿订购它们?还是有其他方法可以做这种事情?

模板:

<mat-label i18n="@@dropdown-id">This is test</mat-label>
<mat-select id="dropdown" formControlName="dropdown"required>
<mat-option *ngFor="let enum of enums | enumToArray | slice:1" [value]="enum.key" i18n="@@values-id"> {enum.value, select, apple {Apple} banana {Banana} cucumber {Cucumber}}
</mat-option>
</mat-select>

messages.fi.xlf(芬兰语本地化):

<source>
    <x id="ICU" equiv-text="{enum.value, select, apple {...} banana {...} cucumber {...}}"/>
</source>
<target state="final">
    <x id="ICU" equiv-text="{enum.value, select, apple {...} banana {...} cucumber {...}}"/>
</target>
<source>
    {VAR_SELECT, select, apple {Apple} banana {Banana} cucumber {Cucumber} }
</source>
<target state="final">
    {VAR_SELECT, select, apple {Omena} banana {Banaani} cucumber {Kurkku}  }
</target>

非常感谢任何解决此问题的提示!

标签: angularinternationalization

解决方案


尝试从您的控制器执行 i18n 转换。就个人而言,我使用过https://github.com/ngx-translate/core;加载带有转换的 JSON 文件并使用 ES6 的数组函数(find/foreach)。


推荐阅读