This documentation applies to Omni for Umbraco 17 and 18. Both version lines have the same functionality and configuration. Choose the package version for your Umbraco site.
How Omni selects a profile
Create one or more profiles with the Chat capability in Umbraco.AI. An administrator then opens Settings → Translator settings to approve the profiles translators may use. Approving profiles requires a default selected from that list; save the settings to enable profile selection. See Configure Umbraco.AI for the full setup.
Editors can choose an approved profile for each page, section or Dictionary job. The selection applies to the whole job. If no selection is made, Omni uses its approved default. Profiles may use different models, provider connections or providers; only approved live Chat profiles can be selected.
When no profiles are approved, the profile selector is hidden. Omni uses ChatProfileAlias if configured; otherwise Umbraco.AI resolves its default Chat profile. A configured alias must resolve to a usable Chat profile. These fallbacks apply only when the approved list is empty.
If an approved default is deleted or ceases to be a Chat profile, jobs using that default cannot start until an administrator selects a live approved default. Omni does not silently use the configured alias or another model.
Choosing a profile
Test each profile's model, prompts, contexts, token limits, latency, price and guardrails before enabling it. Profile metadata alone cannot establish translation quality or suitability. See Umbraco.AI configuration guide for details on creating a profile.
Lower-cost models can perform very well for everyday translation with low reasoning effort. Compare options such as GPT Luna or Claude Sonnet using your own content, and increase effort only when the result improves. See model guidance for availability, supported settings and evaluation advice.
Suggested system prompt
You are a strict translation engine. Return only the translated text.
Do not add markdown, commentary, labels, surrounding quotes, or explanations.
Preserve placeholders, dictionary tokens, URLs, HTML tags,
whitespace-sensitive fragments, and formatting markers.Omni also supplies a translation instruction with every request, so a profile-level prompt is optional. Keep any additional prompt concise and avoid instructions that conflict with literal, structure-preserving output.
Retries and concurrency
TranslationRetryCount counts retries after the first request. MaxConcurrentTranslationRequests caps AI translation requests across all jobs and users; changing it requires an application restart.
MaxConcurrentContentUnitTranslations defaults to 2 and allows the first requests for pairs of independent built-in top-level RichText/TinyMCE fragments to overlap. Set it to 1 to force serial fragment translation. Retries, fallbacks, properties, section pages and saves remain sequential. The host-wide request cap and runtime safety checks still apply.
MaxConcurrentTranslationJobs limits executing jobs, while MaxQueuedTranslationJobs limits jobs waiting for capacity. These are separate from the provider request cap. Restart after changing concurrency settings and see the configuration reference for defaults and ranges.