Chat configuration 

The frontend plugin groups user-facing options into the language and accessibility namespaces. TYPO3 resolves these settings before creating the framework-independent ChatOptions object passed to AI Core.

Language 

settings.language.responseLanguage
Optional fixed language name or BCP 47 tag. It overrides user selection and the current site language.
settings.language.allowUserSelection
Shows the effective response language as a persistent control in the chat header. Activating it reveals language-neutral options for the browser and website languages plus a free text input with suggestions in their native scripts. Users may also enter any language that is not listed. The visible controls use icons and native language names; localized descriptions remain available to assistive technologies. Selecting the browser language requests a short AI-generated confirmation in that language. Free input is applied by its checkmark action or the Enter key and uses the same confirmation route. Returning to the website language also confirms the effective language when it represents an actual switch.

Accessibility 

settings.accessibility.plainLanguage
Adds plain-language requirements to answer generators and quality gates. It does not alter retrieval or query optimization.

Screen-reader semantics, keyboard support, text direction and the controlled announcement of completed responses are always active. They are technical requirements, not editor options.

Runtime flow 

The configuration follows one direction:

FlexForm / TYPO3 site language / optional user selection
    -> ChatOptionsResolver
    -> ChatOptions { responseLanguage, languageCode, plainLanguage }
    -> AssistantRequest
    -> answer-producing pipeline steps
Copied!

The FlexForm and JavaScript constructor keep the nested language and accessibility namespaces for editor and frontend readability. The Core DTO is deliberately flat because it only transports three normalized runtime values. Prompt instructions remain in AI Core and are not assembled in the template or JavaScript.

The language confirmation uses the orchestrator's direct interaction method. It uses the assistant profile's configured connector and default model, but does not execute pipeline processors, retrieval or vector-store queries and is not written to conversation memory.