angular - 本地化后如何对角材料下拉列表进行排序/排序
问题描述
我正在开发一个使用 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>
非常感谢任何解决此问题的提示!
解决方案
尝试从您的控制器执行 i18n 转换。就个人而言,我使用过https://github.com/ngx-translate/core;加载带有转换的 JSON 文件并使用 ES6 的数组函数(find/foreach)。
推荐阅读
- c# - 按住按钮使对象移动一次
- javascript - 为什么输入事件不能与隐藏的输入类型一起使用?
- bash - 从字符串末尾删除空格
- cordova - 离子平台:OTP 短信自动验证
- java - Java:如何获取运行时可用类的完整列表?
- rxjs - 如何使用 rxjs bindCallback
- c# - Xamarin Android TextColor 属性在不同设备上表现异常
- java - MessageBodyProviderNotFoundException:找不到媒体类型 = 应用程序/json、类型 = 类 java.lang.Long 的 MessageBodyWriter
- sql - 通过多任务处理更新 SQL Server 2008 表时出现死锁
- python - 使用 k.clear_session() 和 tf.reset_default_graph() 清除后续模型之间的图形