I did a code that uses custom literals to allow indexing arrays with ordinals (1st, 2nd, 3rd), all at compile time. Additionally _st works only with 1, _nd only with 2, _rd only with 3. Zero and negative numbers are also not supported and fail compilation.
https://github.com/serpent7776/bits/blob/master/th.cpp/th.cpp
It should be easy to edit the existing code to add support for i18n, but there’s probably no way to make in generic (except for macros).
Sounds like a plan for a funsies long weekend, might send a PR if I advance with it enough.