Documentation
Docs/en/reference/text-format/languages.md
Languages And Normalization
Generated reference. Do not edit directly. Update
BuildTools/TextFormatInterface.json, then runpython BuildTools/docs_text_format.py --write.
| Index | Syntax | Languages | Prototype text | Runtime | Validation | Canonical JSON | Guide |
Language fallback is materialized by the bakers. Runtime lookup reads the selected binary language pack and does not consult the base pack.
Engine defaults
| Setting | Source default | Meaning |
|---|---|---|
Baking.BakeLanguages |
engl |
Ordered output languages; the first is the normalization base. |
Client.Language |
engl |
Initial current-language pack loaded by the client. |
| Stable ID | Rule | Requirement | Why | Source |
|---|---|---|---|---|
text-format.language.filename |
Source filename | A .fotxt basename contains exactly two dot-separated segments: text-pack name and language identifier. | TextBaker rejects every other basename shape. | Source/Tools/TextBaker.cpp |
text-format.language.identifier |
Language identifier | The Engine treats the filename suffix as an opaque configured string and imposes no fixed character count. | Acceptance is equality against the language names parsed from Baking.BakeLanguages; no length or locale-shape validator exists. | Source/Tools/TextBaker.cpp |
text-format.language.base |
Base language | Baking.BakeLanguages must be non-empty and its first bare language is the default normalization base. | TextPack::ParseBakeLanguages validates the ordered declarations before either text baker consumes them. | Source/Tools/TextBaker.cpp, Source/Common/TextPack.cpp |
text-format.language.fallback-declaration |
Fallback declaration | Each BakeLanguages entry is language or child:parent; names are unique and a parent must appear before its child. | An explicit parent forms an ordered bake-time fallback chain, while a bare non-first language falls back to the first language. | Source/Common/TextPack.cpp, Source/Tests/Test_TextPack.cpp |
text-format.language.default-source-required |
Base source required | For every changed raw text pack, the selected file set must contain the base-language source. | TextBaker cannot normalize a changed pack without the base language and throws before parsing output. | Source/Tools/TextBaker.cpp |
text-format.language.incremental-pack-set |
Incremental pack completion | When one language file of a text pack changes, TextBaker includes every configured language file for that same pack in the rebake. | A partial language update must still pass complete-pack normalization. | Source/Tools/TextBaker.cpp, Source/Tests/Test_TextBaker.cpp |
text-format.language.unsupported |
Unsupported language | A raw text file whose suffix is absent from Baking.BakeLanguages is warned and skipped. | Unsupported raw languages do not create binary packs. | Source/Tools/TextBaker.cpp |
text-format.language.bake-time-fallback |
Bake-time fallback | Missing packs and keys are copied from each languageās configured fallback during baking; packs and keys absent from that fallback are removed. | Runtime lookup loads already-normalized binary packs and does not perform fallback. | Source/Common/TextPack.cpp |
text-format.language.variant-cardinality |
Variant cardinality | Normalization aligns key presence, not the number or ordering of duplicate variants under an existing key. | FixStr tests only whether a key count is zero and preserves all existing variants when the key exists. | Source/Common/TextPack.cpp |
text-format.language.binary-name |
Baked filename | Raw and prototype text bakers emit <ResourcePack>.<TextPack>.<Language>.fotxt-bin. | TextPack::LoadFromResources later requires exactly those three basename segments. | Source/Tools/TextBaker.cpp, Source/Common/TextPack.cpp |