本地化数字、日期和时间
Rancher Desktop 1.24.0 将其界面翻译成八种语言,但它渲染的每个数字、日期和时间都忽略了您选择的语言。这有三个不同的原因,因此一个问题涵盖了这三个原因。 **相对时间是硬编码的。`DiagnosticsBody.vue:80-84` 通过在 `${ count } ${ units } ago` 后面添加一个 "s" 来构建复数,这是一个只适用于英语的规则,对于具有两个以上复数形式的语言也不起作用。`DiagnosticsButtonRun.vue:30` 和 `Containers.vue:241` (容器 uptime 列) 使用 dayjs 的 `relativeTime` 插件,但没有加载区域,因此它们也渲染成英语。 **日期和时间遵循操作系统,而不是应用程序。`BlogFeed.vue:57`,`DiagnosticsButtonRun.vue:36`,`ContainerStats.vue:423` 和 `pages/volumes/files/_name.vue:405` 调用 `toLocaleDateString`,`toLocaleString` 或 `toLocaleTimeString`,没有区域参数,这会解析为系统区域。在德国主机上选择日语,日期将显示为德语。`utils/dateUtils.ts:6` 和 `SnapshotCard.vue:21-22` 通过固定的 `YYYY-MM-DD HH:mm` 模式完全避免了这个问题。 **数字保留英语的小数点。`ContainerStats.vue:397-399` 和 `pages/volumes/files/_name.vue:398-402` 使用 `toFixed(1)` 和 `Math.round` 格式化字节大小,因此德国用户会读到 `1.5 GiB`,而应该是 `1,5 GiB`。`UpdateStatus.vue:127` 是唯一一个正确执行此操作的网站,通过 `Intl.NumberFormat(this.locale, ...)` 实现,但 `locale` 是一个默认为 `undefined` 的属性,而 `General.vue:15` 从来没有传递它,因此它像其他所有内容一样回退到系统区域。
内容来源: rancher-sandbox/rancher-desktop