Очень-очень-очень давно писал про более-менее адекватный перевод дат на русский язык, а тут дорвался снова до блога и даты у меня в нём стали не очень-то и русскими. Решение для дат использовал старое, но тут начало резать глаз «На прочтение уйдёт 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. Однако вы можете сделать их сами, или модифицировать свою тему с их использованием.