angular - 如何使用 angular 9 $localize 和复数?
问题描述
从 Angular 9 开始,我们可以使用
$localize`Hello ${name}:name:`
对于打字稿代码中的 i18n。这仍然有一些限制,因为该ng xi18n
命令不会检测字符串,但是如果将这些文本手动添加到翻译文件中,它就可以工作。
该函数在源代码中的 JSDoc 中$localize
有很好的记录,但是它没有解释如何使用复数形式。我的意思是这样的(伪代码):
$localize`Hello {${count}, plural, =1 {reader} other {readers}}`
这可能$localize
吗?如果是:如何?如果不是:Angular 如何将这些表达式从 HTML 编译为 TypeScript?
解决方案
目前,无法将 ICU 与.github 问题$localize
中讨论的那样使用。从最后的评论来看,如果它保持轻量级,看起来 Angular 团队正在考虑它。
同时,建议的解决方法是创建您自己的帮助方法,该方法根据计数参数返回正确的翻译。
title = $localize `Hi ${this.name}! You have ${
plural(this.users.length. {
0: $localize `no users`,
1: $localize `one user`,
other: $localize`${this.users.length} users`,
}.`
function plural(value, options) {
// Handle 0, 1, ... cases
const directResult = options[value];
if (directResult !== undefined) { return directResult; }
// handle zero, one, two, few, many
// ...
return options.other;
}
推荐阅读
- graph-theory - 无向无权图中最短路径的更好性能
- python - 从midi文件usign music21中提取所有信息
- android - 从相机捕获图像后无法立即更新 RecyclerView
- sql-server - 在 Azure 虚拟机规模集 (VMSS) 上实施 SQL Server
- r - R-将不同的日期格式强制为一种
- r - 在R中使用割线方法编写函数以查找根
- php - 从 PHP Select 语句中选择数据时出现问题,获取重复数据
- html - 如何通过多个div指定元素的路径?
- c# - 如何停止 WebClient 下载
- python - 如何清理字符串以加载到 Python 拆分中的数组?