【发布时间】:2020-04-02 03:01:04
【问题描述】:
我正在使用 Fluent 的 Rust 版本进行相当复杂的(无论如何对我而言)字符串插值。
首先,涉及的技术:
https://github.com/projectfluent/fluent-rs/(版本 0.11.0)
这个翻译有四个参数:活动、距离、持续时间和单位系统。我想根据这四个中的哪一个实际存在来输出格式略有不同的字符串。比如说……
25 miles of biking in 52 minutes
52 minutes of biking
25 miles of biking
等等。所有这些实际上都像我在this Fluent playground snippet 中所期望的那样工作。您可以转到该 sn-p 并更改尤其是距离和持续时间变量,以查看我希望格式如何更改。
但是,当我转到 Rust 代码时(将消息 DSL 复制并粘贴到我的翻译文件中),我得到的结果却大不相同:
{"distance": String("10.00"), "duration": String("52:00"), "units": String("USA"), "activity": String("Cycling")}
biking
{"units": String("USA"), "distance": String("10.00"), "activity": String("Cycling")}
biking
{"distance": String("10.00"), "activity": String("Cycling"), "units": String("SI")}
biking
{"activity": String("Walking"), "duration": String("52:00")}
walking
{"activity": String("Cycling")}
biking
基本上,每个插值都默认为默认分支,实际上根本不是模式匹配。
我是否误解了项目流式模式匹配,或者我可能在 Rust 实现中遇到了错误?
【问题讨论】:
标签: rust internationalization project-fluent