On Fri, Dec 25, 2020 at 10:06:15PM -0800, Daniel Brooks wrote: > Daniel Brooks writes: > > > Thus, each translation should provide a package full of functions rather > > than a file full of strings. It could literally be that simple, though I > > As a concrete example of what I see in my head when I talk about this, > here's some code that generates a moderately complex message, which I > have taken from todo-mode.el: Before you set out to reinvent wheels, you should check what's out there. The ngettext interface [1], which _is_ part of the gettext package, addresses (even multiple!) plural forms, i.e. your Slavic example. Thing is, human languages are messy. You won't get everything covered. And the more elaborate you get, the more difficult it'll be to find translators having the time to grok all that complexity. One of the nice things about this simplistic string -> string approach is that it allows "lightweight" distributed translation approaches, often web-based: those allow people to contribute translations to a project who otherwise wouldn't even dream of contributing. There are even platforms out there where you can register your Free Software project and where people can contribute translations, via a Web interface. As always, it's a tradeoff. Cheers [1] https://en.wikipedia.org/wiki/Gettext#Plural_form - t