As a front-end developer, I often encounter projects that require internationalization (i18n). Making a website multilingual with plain text messages is quite challenging and doesn't offer a great development experience. That's why I decided to use ICU messages.
It's worth noting that using ICU messages directly doesn't make sense—you always need a parser to process them.
Typically, ICU messages are stored inside JSON files so they can be easily used across different projects. However, there's a major issue: editors like VS Code cannot recognize the structure of ICU messages or highlight the different parts of a message (which is natural, since they weren't built for this purpose).
For example, in the image below, it's quite difficult to tell that the argument is actually an ICU variable:
And of course it gets harder if the message gets a bit more complicated (although in real scenarios this is also a simple message):






