Integration, applications
MessageFormat2 (same as the ICU MessageFormat before it) does not provide any mechanism for storing or loading strings, rendering them, refresh the UI on language change, binding to data (so that it refreshes on data change), etc.
The only functionality is: take a string, and some parameters, get back a string with all parameters substituted, in a locale aware way.
This means it can be easily integrated with any existing resource formats, or framework.
Can store such strings in .po files, Windows resources, Android strings.xml, iOS .strings files, json, soy, freemarker, and so on.
The extraction and localization process is the same as for any other string.
Overall use (pseudocode):
String message = load string from localization store, OS / Framework dependent
String formattedMessage = new MF2(message, locale).format({"user": userName, "expDate": someExpirationDate})
Use the formattedMessage in UI
Only the red part is MF2 related, everything else is the same as for any older technology.
We have implementations for Java, C++, and JavaScript, and we (of course) hope for more to come. Rust in the works.
Any existing application being able to make calls to one of these languages can be adapted to use MF2.
There are instructions for how to create a "Hello world" application here (C++ and Java, with ICU):
If it helps I can change that Java hello world app to use resource bundles.
===
MF2 examples: