Код Senior Реализация с нуля обновлено

Переводы с подстановкой и числом

Условие

createI18n(dict): t(key, params) подставляет {name} и выбирает форму по params.count через ключи вида 'files.one' / 'files.few' / 'files.many'. Нет ключа - вернуть сам ключ.

Что проверяют тесты

  • простой перевод

  • подстановка

  • нет ключа - сам ключ

  • формы числа

  • неизвестная подстановка остаётся

  • ноль подставляется

Как подойти

Три решения, которые определяют качество слоя переводов. Возврат ключа вместо пустой строки делает пропущенные переводы заметными в интерфейсе, а не невидимыми. Проверка name in params сохраняет ноль - иначе «0 файлов» превратится в «{count} файлов». Формы числа строятся как отдельные ключи, а не как логика в коде: в разных языках их от одной до шести, и правило должно жить рядом со словарём. В проекте это Intl.PluralRules.

Подсказки: 3
  1. Форму множественного числа выбирай только когда передан count.
  2. Подстановку проверяй через in, иначе ноль и пустая строка потеряются.
  3. Отсутствующий ключ лучше вернуть как есть - так дыры в переводах видны.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.