Discover catalog
Framework, generated, and application-owned sources contribute localizable keys.
Engineering reference · 04
Framework components, generated entity metadata, and authored application text converge into one catalog. A new culture is seeded from English, may be translated in resumable AI batches, and remains reviewable by a human.
var languageId = await operations
.CreateLanguageAsync(new LanguageEditModel
{
Code = "de-DE",
Name = "Deutsch",
IsEnabled = true,
SortOrder = 30
}, ct);
await localization.SyncEntriesAsync(languageId, ct);The system discovers what can be translated before translators start. Adding a language creates the missing entries; it does not require rebuilding every page.
Framework, generated, and application-owned sources contribute localizable keys.
Store BCP-47 code, display name, enabled/default state, and ordering.
Missing target entries are created from the English source catalog.
Edit manually or run resumable AI batches, then approve reviewed output.
Localization is not limited to resource files an engineer remembered to create. The framework derives keys from the same sources that define the application.
Connected components use their English text as the key for standard unkeyed strings such as paging and dialog labels.
Display names, validation messages, entity labels, and generated page text receive stable keyed entries.
Localizable component parameters and application UI text are discovered and checked by analyzers.
English remains a readable source and safe fallback. The catalog layers translations over it instead of replacing meaning with opaque identifiers everywhere.
The server localizer resolves catalog entries during server rendering. At client startup, the active culture is loaded from the authenticated application endpoint so WebAssembly continues with the same language.
Parameterized messages keep placeholders intact while translating the surrounding sentence. The runtime applies values only after selecting the localized format.
var format = localizer[
"Department {0} has {1} employees."];
var message = string.Format(
CultureInfo.CurrentCulture,
format,
department.Name,
employeeCount);
// Client startup obtains the active culture from:
"api/localization/current"Each entry has an operational state. Teams can distinguish a fallback from machine output and distinguish machine output from reviewed business language.
The English source remains visible. Nothing becomes blank because a target value is missing.
AI output is stored as awaiting review, not silently presented as approved terminology.
A person has approved or refined the phrase for the business and locale.
ICxAITranslator accelerates the mechanical first pass while retaining the safeguards needed for business software.
Translation runs in bounded batches and continues from remaining entries.
Tokens such as {0} must survive; suspicious output stays in English for correction.
Machine status remains visible until a person accepts the result.
Rejected or unavailable AI output does not destroy the readable source.
Administrators see translated, pending, and reviewed counts.
Human edits preserve factory-specific meaning when a generic translation is insufficient.
Localization diagnostics turn common omissions into actionable engineering feedback while the author still has the code open.
| Rule | What it finds | Required correction |
|---|---|---|
| CWE0209 | Unlocalized user-facing text. | Route the string through the supported localization surface. |
| CWE0210 | Interpolated runtime text used where a localizable composite format is required. | Localize the format and preserve structured placeholders. |
| CWE0211 | A localizable parameter or usage with an incomplete localization shape. | Use the framework-supported key/value contract. |
| CWE0212 | A localization composition that cannot be discovered or reconciled reliably. | Move the text into a catalog-visible source. |
The framework handles catalog breadth; the team remains responsible for culture choice, terminology quality, and release approval.
Enter a valid BCP-47 code, name, enabled/default state, and sort order.
Seed all discovered source strings from the English catalog.
Work manually or run the resumable AI batch assistant.
Confirm placeholders, domain language, tone, and factory-specific vocabulary.
Test server and client rendering in the target culture before release.