Сопоставление значений None и отсутствующих с реализацией Rust Project Fluent - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю над довольно сложной (для меня, во всяком случае) интерполяцией строк с использованием версии Fluent для Rust.

Во-первых, задействованные технологии:

https://projectfluent.org/

https://github.com/projectfluent/fluent-rs/ (версия 0.11.0)

В этом переводе есть четыре параметра: активность, расстояние, продолжительность и система единиц. Я хочу вывести несколько по-разному отформатированные строки, основанные на том, какая из этих четырех на самом деле присутствует. Так, например ...

⁨⁨25⁩ miles⁩ of ⁨biking⁩ in ⁨52⁩ minutes
52⁩ minutes of ⁨biking⁩
⁨⁨25⁩ miles⁩ of ⁨biking⁩

И так далее. Все это на самом деле работает, как я ожидаю в этом фрагменте Fluent для игровых площадок . Вы можете go к этому фрагменту и изменить переменные расстояния и длительности, чтобы увидеть, как я ожидаю, что формат изменится.

Тем не менее, когда я go на код 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?

1 Ответ

0 голосов
/ 06 апреля 2020

Я думал, что это ошибка, и поэтому подал против проекта fluent-rs. Оказывается, это не ошибка в проекте, а ошибка в том, как я внедряю данные. И неправильное использование сопоставления с образцом.

Ответ автора содержит много полезной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...