FOnline Engine
Current master GitHub
Documentation Docs/en/reference/text-format/languages.md

Languages And Normalization

Generated reference. Do not edit directly. Update BuildTools/TextFormatInterface.json, then run python 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
Start typing to search.