Namespace Serenity.Localization.Installation.Settings.Editor
Classes
LocalizationRecipeImporter
Generates Unity Localization String Table Collections from the recipe localization section: ensures
the requested locales exist, creates or finds the collection, and upserts each key's per-locale text. Lives
in the localization assembly (which references the recipe assembly) and is discovered by reflection, so the
core recipe engine never depends on the Unity Localization package.
SerenityHubStatus
Read-only status aggregator for the Serenity Hub. Produces three rows — required Unity packages, installation wiring, and overall project validation health — by reusing the same checks the standalone package installer and the project validators already perform. Never mutates project state; every row that needs a fix carries a deep-link menu path instead of fixing anything itself.
Slice 6.4 migration: Serenity.Localization.Installation.Settings.Editor.SerenityHubStatus.BuildWiringHealthRow(Serenity.Localization.Installation.Settings.Editor.Hub.Services.SerenityHubValidationCache) no longer calls RunAll(string) synchronously — it reads TryReadSummary(string, out SerenityHubValidationSummary) and renders a "not yet run" state when nothing has been cached this session (spec §3 non-functional requirement: "no synchronous full-project scan on any view open"; design ADR-7). The cache is populated by the Validate view's on-demand "Everything" report card, not by this method.
SerenityHubStatusRow
One dumb status row for the Hub: a state, a human-readable message, and an optional deep-link menu path the Hub can execute to let the user act on it. Carries no logic of its own.
SerenityHubWindow
The Serenity Hub — the single "start here" front door for the package. A UI Toolkit workspace with a persistent sidebar (Home, Create, Validate, Browse, Learn, Advanced) and a swappable content panel, replacing the previous single-scroll-view IMGUI layout (spec §2, design ADR-2, migration note).
The Hub never fixes anything itself: every card and every launcher button opens a real tool via SerenityHubLauncher (UnityEditor.EditorApplication.ExecuteMenuItem(System.String)) or a real asset. Hosted alongside SerenityProjectValidationRunner and SerenityValidateEverythingWindow for the same reason they live here — this assembly already references the Global validator engines and owns the localization one, so hosting the Hub in Global would create a circular assembly reference (design ADR-1).
SerenityLocalizationKeyValidator
Validates the translation keys designers type into Serenity assets (any field with its
IsTranslating<Field> toggle on) against the project's Unity Localization string tables.
The GUI-free engine behind SerenityLocalizationKeyValidatorWindow, also driven headlessly by the
project validation runner.
SerenityLocalizationKeyValidatorWindow
Editor window that validates the translation keys designers type into Serenity assets against the project's
Unity Localization string tables.
Anywhere a Serenity asset has an IsTranslating* toggle turned on (menu/modal titles, option labels,
modal text, game-setting values…), the paired key is checked: a key that exists in no string table is
reported as missing (it would silently fall back to the raw key at runtime), and a translating field left
blank is reported as a warning.
SerenityProjectValidationRunner
Runs Serenity's project-integrity validators (Health Check, Missing References, Localization Keys, Addressables Tagging, Addressable Keys, Audio Registration, Branding) and reports the combined result — interactively (a menu item that writes JSON) or headlessly (ValidateFromCommandLine()), so CI or an AI agent can confirm a project is correctly wired and self-correct. Hosted here because this assembly already references the Global validator engines and owns the localization one (Global cannot reference Localization without a cycle).
catalog (Hub catalog-staleness) is standalone-only, deliberately excluded from all: it is
catalog-hygiene, not project-wiring health, and must never run on any Hub window-open path.
SerenityValidateEverythingWindow
One aggregated dashboard over every Serenity project validator (RunAll(string)): Health Check, Missing References, Localization Keys, Addressables Tagging, and Audio Registration. Issues are grouped per validator with a Ping button when an asset path resolves. Addressables and Audio Registration findings that have a mechanical fix also get a per-row "Fix" button and a per-group "Fix all safe" button; every fix previews exactly which asset(s) will change via a confirmation dialog, applies the fix through the validator's own UnityEditor.AssetDatabase / UnityEditor.Undo-backed API, then re-scans automatically. Health Check, Missing References, and Localization Keys findings are report-only: they require a human decision, so their rows only offer Ping. This window is intentionally dumb — it contains no validation or fixing logic of its own, only calls into the runner and the two fixable validators. Hosted alongside SerenityProjectValidationRunner (rather than in the Global validator-engine folder) for the same reason the runner itself lives here: this assembly already references the Global validator engines and owns the localization one, so hosting the aggregated view here avoids a circular assembly reference back into Global.
UnityLocalizationSettingsEditor
Custom Unity Editor for UnityLocalizationSettings that provides interface for configuring language keys and localization tables.
Integrates with Unity's localization system to display available tables and game settings for selection.
Enums
SerenityHubStatusState
State of a single SerenityHubStatusRow.