Переводы с подстановкой и числом
Условие
createI18n(dict): t(key, params) подставляет {name} и выбирает форму по params.count через ключи вида 'files.one' / 'files.few' / 'files.many'. Нет ключа - вернуть сам ключ.
Что проверяют тесты
простой перевод
подстановка
нет ключа - сам ключ
формы числа
неизвестная подстановка остаётся
ноль подставляется
Как подойти
Три решения, которые определяют качество слоя переводов. Возврат ключа вместо пустой строки делает пропущенные переводы заметными в интерфейсе, а не невидимыми. Проверка name in params сохраняет ноль - иначе «0 файлов» превратится в «{count} файлов». Формы числа строятся как отдельные ключи, а не как логика в коде: в разных языках их от одной до шести, и правило должно жить рядом со словарём. В проекте это Intl.PluralRules.
Подсказки: 3
- Форму множественного числа выбирай только когда передан count.
- Подстановку проверяй через in, иначе ноль и пустая строка потеряются.
- Отсутствующий ключ лучше вернуть как есть - так дыры в переводах видны.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.