Add runtime language switching to a WPF, Avalonia, MAUI, WinUI, or Uno app
Share one localization model across multiple XAML frameworks in a single solution
Generate strongly typed translation keys from JSON or text catalogs at build time
Import and export XLIFF, gettext PO, RESX, or Android strings for a translation vendor
Spans several NuGet packages and a source generator, so a new project must pick the right adapter and wire DI before runtime switching works.
ProTranslate is a translation and globalization framework for .NET applications that build their user interface in XAML. The author targets desktop and mobile XAML stacks: Avalonia, WPF.NET MAUI, WinUI, and Uno. The goal is to give those apps one shared way to handle culture switching, localized strings, regional formatting, measurement units, and right-to-left or left-to-right text flow, without each framework needing its own setup. The design splits the code into a framework-neutral core and thin adapters per UI framework. The core packages, called ProTranslate.Abstractions and ProTranslate.Core, hold the interfaces and the runtime services: a culture service, a translation service, a globalization service, fallback rules, a cache policy, a region profile, and unit conversion. The adapter packages wire those services into each XAML system as markup extensions, attached properties, and binding refresh paths, so labels in XAML update when the user changes language at runtime. Two extra packages connect ProTranslate to older .NET localization stacks. ProTranslate.ResourceManager bridges the classic ResX resource manager and satellite assemblies. ProTranslate.MicrosoftExtensions plugs into Microsoft.Extensions dependency injection and the IStringLocalizer interface. Together they let teams adopt ProTranslate without throwing away an existing resource pipeline. ProTranslate also ships build-time tooling. A source generator reads text files and JSON catalogs and emits strongly typed key constants, accessor helpers, and a bindable strings object that compiled XAML bindings can use directly. A Roslyn analyzer warns about missing keys, placeholder mismatches, and catalog coverage gaps before runtime. A separate Formats package handles loss-aware import and export for industry translation files, including XLIFF, gettext PO and POT, RESX, Android strings.xml, Apple strings, Flutter ARB, i18next JSON, and CSV or TSV exchange. The README presents this as the first stable package set on NuGet. It is aimed at developers building MVVM apps who want one localization model across several XAML frameworks rather than separate solutions per platform.
Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.