Text: babelfish (i18n)

https://github.com/nodeca/babelfish/

Almost all i18n libs are `ngettext()`-based. That means, you need multiple phrases for each plural form, and additional coding to extract rigth phrase for complex cases.

Babelfish suggests another concept - define all plurals inline via macros. That significantly simplifies development. You need to define only one translation for each phrase. Of cause, other sugar available too (variables support, special zero forms, fallbacks and so on).

Some people, impressed by idea, did Perl port https://metacpan.org/pod/Locale::Babelfish