TextContent

TextContent is the content-source enum used by Text.
You encounter it when a text widget should either render a literal string directly or look up a translated string from the environment.

Example

use fission::prelude::*;
let title = Text::new(TextContent::Key("settings.title".into())).into();
let caption = Text::new(TextContent::Literal("Version 1.2.0".into())).into();
let menu_item = Text::new(TextContent::KeyWithFallback {
    key: "menu.copy".into(),
    fallback: "Copy".into(),
}).into();

Choice table

Choice
Type
Meaning
Notes / default behavior
Literal(String)
TextContent
Render this exact string.
Good for dynamic values, ids, or already-translated text.
Key(String)
TextContent
Look up the string through the current locale in Env.i18n.
Missing keys render as MISSING:key in the checked-in implementation.
KeyWithFallback { key, fallback }
TextContent
Look up a translation key, falling back to a supplied string when no translation exists.
Use for framework-provided UI such as default context menu labels where a missing app bundle should not render MISSING:key.

Specific advice

Use Key for product copy that should participate in internationalization. Use KeyWithFallback for built-in or library-provided UI where the component should be localizable but must remain readable if the host app has not supplied a translation. Use Literal for values that are already data, such as file names, counts, or user input.

Production checklist

For TextContent, review the fields that change behavior before treating the widget as finished: Literal(String), Key(String). The goal is to make the product rule visible in state and actions, not hidden inside ad-hoc construction code.
If this widget appears inside an interactive flow, keep the surrounding action binding in the parent component and test that the flow still has one clear reducer path.
Check the semantics tree for the user-facing label or role that makes this widget understandable without relying only on pixels.
Add at least one component or harness test that confirms the visible text, semantic role, action dispatch, and layout constraint that matter for this widget in context.
If a screen starts repeating the same TextContent setup, extract a named component around this widget. That keeps the reference API small while making product code easier to read and safer for generated code to copy.
Previous
Text