docs(spec): spec-0029 — i18n v2, the client picks the language - #330
Merged
Conversation
spec-0024 §2 recorded the owner ruling that v1 releases ship baked in one
language and v2 ships every declared language in the resource pack, the client
auto-selecting and falling back to English. v2 was unblocked and never built, so
nobodys-cave-island v1.0.0 shipped Chinese-only: an English player reads Chinese
with no fallback. The owner directed v2 built and the island re-released as v1.1.
The work is smaller than it looks because the hard half exists. `each_string`
already visits every player-visible string under a stable key across all five
effect roots, and DW0330/DW0331 already width-check source AND translation. Only
the delivery shape is missing: emit `{"translate": key, "fallback": english}`
instead of the literal, and write one lang file per declared language into the
pack `build_pack` already accepts arbitrary assets for.
The fallback lives on the component rather than on the pack's en_us.json for one
reason worth stating: a player who DECLINES the resource-pack prompt has no lang
files at all, and the delve still has to be playable.
Four risks are accepted with what they owe: an emission site that cannot carry a
component becomes a named exclusion plus a diagnostic, never a silent literal;
the bot's displayNameOf preference heuristic gets weaker and must be MEASURED
rather than assumed; PackTest text assertions get the same audit; and the width
gates become load-bearing rather than belt-and-braces, since any declared
language may now be what a player sees.
No DSL change and no dsl_version bump — emission only. Every campaign's bytes
move; released delves reproduce through their pinned engine.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The spec PR #314 implements. Owner directive 2026-08-06.
nobodys-cave-island v1.0.0shipped Chinese-only becausebuild --lang zh-cnswaps every player-visible string before compiling: the datapack carries exactly one language and there is no fallback path at all. This makes a delve carry all of them and lets the client choose.Opened now because it had none: the branch existed with content and was invisible on every board. A branch without a PR does not exist for the next session, which reads the world from the PR list.