Idea for a localization system

Many websites provide support for translations and localizations. And while there are already a bunch of ls* methods that allow localized formatting for dates, numbers, currencies, etc., there is currently no general way to provide localizations. (At least as far as I know. Please let me know if there is something!)

Java obviously already has a way to provide localized messages via MessageFormat. Though it seems to be limited in its functionality and also only allow to translate single strings.

Lately, I stumbled over the ICU MessageFormat 2.0 draft, which seems quite promising.
It is successor to the currently available version 1.0, which is already available in Java via the ICU4J library, and it is inspired by Fluent and FBT.
Browser implementors are also already working on a solution for JavaScript (ECMAScript) based on that.

Long story short, I suggest to add support for an internationalization system based on the ICU library.
As i18n is pretty common, I believe it should be added as a core functionality. Though it might also make sense to add it as an extension.

Happy to hear any feedback or other ideas!

Sebastian

4 Likes

sounds like a great idea for an extension

6 Likes

Yeah definitely an extension… so many different ways to do this, and there’s a good 20 years of different i18n implementations over the years. (I’ve written a few)

the debate of course some things like email providers should be extensions, but are ‘somehow’ still core when there could be better implementations with more features, rather than a 1990’s implmentation from CF’s old days) so it’s still confusing in lucee. either way, this is not core (as i18n can also be done on the client)

There’s also an ortus plugin for coldbox and others out there:
Introduction - cbi18n (ortusbooks.com)
Preside Documentation :: i18n

also usoing {{icumessageformat2}} will throw errors in a tonne of email builder apps and other apps where people are already using placeholders… these are also used for client side javascript replacements.