Reading/writing resx is 10 lines of code or something. I just dump ours into an excelsheet with one column per language, because for whatever reason the translators wants it in excel like that. Then when they are done I convert it back to resx files.
https://neosmart.net/forums/threads/translations-to-other-la...
The tool loads a directory of xml files; each file is rendered as a tab in the translation GUI. The framework exports the strings from each SWF form as a separate xml file into a directory that matches the native locale’s identifier (eg en-US) and gives it a friendly name based off the form’s title/caption and/or file name. So the end result is a naturally user-friendly approach to translation instead of having all the apps strings dumped together into one PO file as is the norm, and translators can reference the app they are translating’s UI as they methodically translate a component at a time.
I found an attempt at doing Fluent in .NET: https://github.com/blushingpenguin/Fluent.Net/
I also found at least one library for supporting ICU MessageFormat in .NET: https://github.com/jeffijoe/messageformat.net