-
tnt
Command line tool for organizing translation strings extracted from .NET assemblies. Supports Excel, XLIFF roundtrips and machine translations.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
-
EasyBCD-Localization
EasyBCD localization files for NLT. Help us translate EasyBCD into your language, it's easy and rewarding!
-
xecrets-cli
Xecrets Cli - A feature-rich cross platform AxCrypt-compatible file encryption command line toolbox using a fork of original AxCrypt 2.x for cryptography. https://www.axantum.com/xecrets-ez is an easy to use graphical frontend for Windows, Linux and macOS using it, and https://www.nuget.org/packages/Xecrets.Sdk/ is a .NET SDK for it..
We've been using a library called TNT for this job and are quite happy with the flow: https://github.com/pragmatrix/tnt
You basically annotate all your strings with a "my string".t() or t($"my interpolated string: {var}") and then use their CLI to extract the strings to be translated. It even includes google translation API support for you to kickstart the process.
We came up with our own localization framework back in the .NET 2.0 days and we're still using it. Version-numbered translations in an XML file with a simple GUI to show missing translations, flag out-dated translations, etc.
The framework and UI: https://github.com/neosmart/Localization
Sample translations: https://github.com/neosmart/easybcd-localization
Guide and screenshots (that should have probably be also folded into the non-existent readme for the localization toolkit repo): https://neosmart.net/forums/threads/translations-to-other-la...
XML is a drag, but JSON isn't supported without a dependency under .NET Framework and the NLTUI app masks that from most users. XML also gives nice schema validation, for example look at how simple the validation is in the github action ci for the real-world app example from above: https://github.com/neosmart/EasyBCD-Localization/blob/master...
We came up with our own localization framework back in the .NET 2.0 days and we're still using it. Version-numbered translations in an XML file with a simple GUI to show missing translations, flag out-dated translations, etc.
The framework and UI: https://github.com/neosmart/Localization
Sample translations: https://github.com/neosmart/easybcd-localization
Guide and screenshots (that should have probably be also folded into the non-existent readme for the localization toolkit repo): https://neosmart.net/forums/threads/translations-to-other-la...
XML is a drag, but JSON isn't supported without a dependency under .NET Framework and the NLTUI app masks that from most users. XML also gives nice schema validation, for example look at how simple the validation is in the github action ci for the real-world app example from above: https://github.com/neosmart/EasyBCD-Localization/blob/master...
If you're referring to my app, Xecrets Ez ( https://www.axantum.com/ ), it runs in Windows, macOS and Linux.
As mentioned, the issue I'm trying to solve is not the code end. Resx works fine once it's there. It's the translator end. How to present the texts and translations and context etc to the human, often non-technical, translators and often many and one translator might only translate a few strings, then another one etc. So it has to be real easy to use and gain access to. Can't for example ask them to install a piece of software. Finally, once a text has been translated, how to get it back to the app as easy and preferably as automated as possible.
gettext/PO is just as deficient at modern plural forms support as ResX, out of the box. The only format that I'm aware of that is specifically built to include it as first-class is Mozilla's Fluent. The same workarounds generally apply to ResX as to PO: create a number of separate strings and do a bit of math up front to choose the right one, or use a formatter on top of PO/ResX that supports something like ICU MessageFormat.
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
gettext/PO is just as deficient at modern plural forms support as ResX, out of the box. The only format that I'm aware of that is specifically built to include it as first-class is Mozilla's Fluent. The same workarounds generally apply to ResX as to PO: create a number of separate strings and do a bit of math up front to choose the right one, or use a formatter on top of PO/ResX that supports something like ICU MessageFormat.
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