ProTranslate is designed to fit professional localization workflows without making application runtime code parse every external file format. The preferred workflow is:
This page describes optional import/export tooling and authoring guidance. The current source generator reads *.protranslate.keys.txt, Strings.*.json, and *.protranslate.json. Do not treat the broader format list below as runtime provider behavior; exchange files should be imported into normalized ProTranslate catalogs first.
Use XLIFF for CAT/TMS handoff. XLIFF 1.2 remains common in enterprise tooling, while XLIFF 2.1 is the preferred modern exchange format when the toolchain supports it.
Use source-generated ProTranslate catalogs for app runtime. The generator emits key constants, accessors, ProTranslateStrings, provider code, and manifests that work well with compiled bindings, WinUI/Uno x:Bind, trimming, and CI.
Use CSV or TSV for spreadsheet review only when the workflow needs it. Spreadsheet exchange is practical, but it has weaker metadata, escaping, and type-safety guarantees than XLIFF.
| Format | Use it for | Notes |
|---|---|---|
| XLIFF 1.2 | Legacy CAT/TMS exchange. | Preserve source, target, notes, state, context, and inline placeholders where supported. |
| XLIFF 2.1 | Modern CAT/TMS exchange. | Preferred external exchange format for new professional workflows. |
| gettext PO/POT | Open-source translation teams and template extraction. | Preserve comments, references, contexts, plurals, and fuzzy state where possible. |
| .NET RESX | Visual Studio and ResourceManager interoperability. |
String resources map cleanly; non-string resources need diagnostics. |
Android strings.xml |
Android and MAUI Android handoff. | Strings, arrays, and plurals need XML and quantity-rule validation. |
Apple .strings |
iOS and macOS string resources. | Key/value strings and comments are straightforward; encoding and duplicates need diagnostics. |
Apple .stringsdict |
Apple plural dictionaries. | Plural variables and categories need explicit mapping. |
Apple .xcstrings |
Xcode string catalogs. | Localization states and variations need a careful normalized model. |
| Flutter ARB | Flutter Intl projects. | Descriptions, placeholders, plurals, and selects need ICU-aware validation. |
| i18next JSON | Web and JavaScript applications. | Nested keys, namespaces, interpolation, and plural suffixes need configurable mapping. |
| CSV/TSV | Spreadsheet, vendor, or product review. | Require explicit columns, encoding, duplicate-key checks, and formula-safety handling. |
Format conversion must be loss-aware. External formats have different ideas of plurals, placeholder syntax, workflow state, comments, references, namespaces, and inline markup. ProTranslate tooling should report unsupported constructs instead of silently dropping them.
Diagnostics should identify:
Examples:
The source generator consumes key files and normalized ProTranslate catalogs. Professional workflows should import CAT/TMS, platform-native, or spreadsheet exchange files through ProTranslate.Formats or Uno Translation Studio first, review any format-specific loss diagnostics, then commit normalized runtime catalogs.
Current generator inputs:
<ItemGroup>
<AdditionalFiles Include="Resources\Strings.*.json" />
<AdditionalFiles Include="Resources\*.protranslate.json" />
<AdditionalFiles Include="Resources\*.protranslate.keys.txt" />
</ItemGroup>
Generated outputs:
ProTranslateKeysProTranslateAccessorsProTranslateStringsProTranslateGeneratedTranslationProviderProTranslateProviderManifestThe generated CLR surface is the recommended path for Avalonia compiled bindings and WinUI/Uno x:Bind.
The Uno Translation Studio app is an authoring and review tool over the same format services used by command-line tooling. It is not part of the Uno adapter runtime surface.
Expected workflow:
Uno-specific guidance:
ProTranslateStrings or view-model properties for x:Bindpt:T for concise view-only markup and migration scenariosProTranslate.Core and ProTranslate.UnoBefore docs or package notes claim full support for a format, validation should include:
The detailed working spec is Translation Formats And Uno App in the repository spec set.