Hugo: снова русские даты и числительные

· автор BaRoN · На чтение уйдёт 2 минуты · (287 слов)

Очень-очень-очень давно писал про более-менее адекватный перевод дат на русский язык, а тут дорвался снова до блога и даты у меня в нём стали не очень-то и русскими. Решение для дат использовал старое, но тут начало резать глаз «На прочтение уйдёт 2 минут», и я начал копать. Хотя, что значит “очень-очень-очень давно”? В принципе, примерно 20 лет назад я вовсю ковырял в poedit русские локализации разных приложений, высылал патчи их разработчикам, и приложения становились более качественно локализованы. Стал смотреть, а нельзя ли то же самое замутить на go и в частности в hugo? Таки да, оказалось, что можно, проще простого.

Итак, перепишем i18n/ru.yaml таким образом:

readinabout:
  zero: "На чтение уйдёт {{.Count}} минут"
  one: "На чтение уйдёт {{.Count}} минута"
  few: "На чтение уйдёт {{.Count}} минуты"
  many: "На чтение уйдёт {{.Count}} минут"
  other: "На чтение уйдёт {{.Count}} минут (-а, -ы)"
words:
  zero: "{{.Count}} слов"
  one: "{{.Count}} слово"
  few: "{{.Count}} слова"
  many: "{{.Count}} слов"
  other: "{{ .Count }} слов (-а, -ы)"

Вообще говоря, это исчерпывающий список для всех языков на данный момент, и честно говоря, other в нём не нужен вовсе, как минимум для русского языка. Да и zero тоже можно убрать. Для того, что не зависит от числительных, можно всегда использовать other. Таким образом, для русского языка будет:

readinabout:
  one: "На чтение уйдёт {{.Count}} минута"
  few: "На чтение уйдёт {{.Count}} минуты"
  many: "На чтение уйдёт {{.Count}} минут"
words:
  one: "{{.Count}} слово"
  few: "{{.Count}} слова"
  many: "{{.Count}} слов"
readmore:
  other: "Читать далее"

Вызвать правильную локализацию можно так: `{{ i18n “readinabout” .ReadingTime }} · ({{ i18n “words” .WordCount }})``

Переделки темы hugo-bootstrap-premium я нигде не публикую, несмотря на то, что она изначально распространялась под очень свободной лицензией MIT. Однако вы можете сделать их сами, или модифицировать свою тему с их использованием.

Полезное