Index of everything on this site: https://ai.hiina.space/index.md
The strongest documented case is the Committee of Zero patch for the
English Steam release of Steins;Gate 0. Its own project page lists
"Option to include Japanese honorifics in text added" in the v2.0
changelog and describes restoring honorifics "alongside a new glossary
definition explaining them" (Committee of Zero
project page). VNDB's release record repeats that the patch "enables
option to change honorifics and name orders" (yorhel.org r50519, secondary). The
two sources disagree slightly: VNDB treats name order as optional too,
while the project page frames name order as a fixed script change. A
Chaos;Child patch report says only that name order can optionally change
(Siliconera,
secondary). Neither page says where the toggle lives or how variants are
stored. The team's Steins;Gate HD repo builds two parallel script sets,
cc-scripts and cc-scripts-consistency, but its
README does not say whether players choose between them (CommitteeOfZero/sghd-patch).
So the best-evidenced implementation of the "static variants" idea is
human-authored, closed-class and of unknown storage format. Honorifics
are cheap to toggle because they are a token insert or delete; puns and
register shifts appeared as togglable in no source this search
found.
Officially shipped variants exist on other axes. Final Fantasy Tactics: The Ivalice Chronicles offers an Enhanced script rewritten for voice acting and a Classic mode using the War of the Lions script (Inverse, secondary). Taisho x Alice's English add-on lets players switch story text and choices between Japanese and English with a button press (Nintendo eShop), and the Kanon port switches between English, Japanese and Simplified Chinese at any time (RPG Fan, secondary). Pokémon's Japanese releases have a Hiragana or Kanji text setting, a single-source, two-rendering option authored in advance (Bulbapedia, community wiki). The Great Ace Attorney Chronicles kept "-san" and "-sama" deliberately, to mark when characters speak Japanese to each other, and rendered faux-Meiji speech as faux-Victorian dialect (Wikipedia, secondary). Yakuza 0's subtitles use a hybrid of retained honorifics and domestication (Tradução em Revista, abstract only).
Publishing shows why humans rarely go further. In a J-Novel Club
forum thread started 3 May 2021, a reader proposed storing both forms
inline, [Mr. Joey|Jonouchi-san], and offering "Westernized"
and "non-Westernized" EPUBs. A translator and readers objected on EPUB
and print logistics, the slippery slope to sibling terms, speech tics
and puns, extra translation and QA work, and jarring flow. Staff only
redirected the thread to the feature-request channel (J-Novel
Club forum, low-authority forum). That inline markup is the only
explicit dual-form honorific notation this search found, and it was
never shipped. In anime, the honorifics debate was settled per release
by distributor policy, such as MX Media dropping honorifics (ANN
forum, forum) or AnimeNation's selective romanisation (AnimeNation,
secondary retailer blog). This search found no release with paired
honorific and no-honorific English tracks. Netflix's Japanese timed-text
guide, which governs subtitles into Japanese, does not address
honorifics and asks subtitlers to "match the tone of the original
content" (Netflix
Partner Help Center).
Accent and voice have always been a localiser-side layer added on top of the source. Dragon Quest IV's Japanese used standard formal Japanese with no dialect markers, and the DS localisers added a Scottish dialect ("aboot tae make an announcement tae youse all") and turned the hero's name "Ryan" into "Ragnar McRyan" (Legends of Localization). The Mother 3 fan translation replaced the mice's Japanese dialect with Cockney-style English and shipped a 200-page handbook alongside the patch (Wikipedia, secondary). Facebook offered a pirate language in 2009 and, per the article's "last year", in 2008, switchable from the language link (TechCrunch). That joke locale is the proposed "talk like a pirate" setting as a static string table, and it shows users accept a whole interface in a stylised variant of the same strings. In the other direction, Japanese role language (yakuwarigo: pronouns, copula and sentence-final particles that mark character type) is flattened by standard English translation, and a Leiden thesis argues it can only be partly compensated for through lexical, punctuation and font choices (Leiden thesis, single-work thesis). For this design, that means the record should note whether a voice marker is in the source or is a localisation choice, because "pirate" is additive while "keep her rough speech" is not.
Engines and formats already separate line identity from rendered
text, which is the substrate the render step needs. Ren'Py treats the
source as the "None" language and stores translations as
translate <lang> <id>: blocks keyed by
generated IDs such as start_636ae3f5. Translations can run
Python and conditionals, and renpy.change_language switches
at runtime; the docs use piglatin as an example language
(Ren'Py
translation docs). A "no honorifics" or "pirate" variant could
therefore ship as a pseudo-language (my inference; the docs show no
per-player variant concept beyond languages). Python inside translate
blocks should be side-effect free, because switching languages reruns
it. Yarn Spinner gives every line a stable #line: ID,
exports per-language string tables, and fetches the localised text and
linked assets by ID at runtime (Yarn
Spinner localisation). Its markup has
[select value={$gender} m="he" f="she" nb="they" /],
[plural] and [ordinal], and marks the speaker
as a character attribute running from line start to the
first colon, unless there is no colon or markup already supplies one (Yarn
Spinner markup).
The message formats go further. Fluent lets each locale control its
own complexity without touching the source, with dash-prefixed terms
that carry variants and translator-authored logic that needs no code
change (Mozilla
Hacks, no visible date, comments from 2019-04-26). Its selectors
match strings or numbers and require a * default (Fluent
selectors). Unicode MessageFormat 2.0 became Stable in CLDR
47 (2025-03-13), with only :string, :number
and :integer stable and other functions Draft (CLDR 47).
The current UTS #35 Part 9 page header reads CLDR 49, dated 2026-10-21,
while the CLDR downloads table lists CLDR 49 as 2026-10-22 without
clearly marking it released (UTS #35
Part 9; CLDR
downloads). The stability policy says updates "will not make any
valid message become not valid". Since :string is stable, a
style selector is spec-conformant today. My sketch, not an example from
the spec:
.input {$honorifics :string}
.match $honorifics
keep {{You're still up, Tanaka-senpai?}}
title_only {{You're still up, senpai?}}
* {{You're still up, Tanaka?}}
Unreal's FText has |plural, |ordinal,
|gender and a Korean particle modifier (Unreal
docs), i18next selects keys by context (i18next),
and gettext's msgctxt disambiguates identical source
strings (GNU
gettext). The gettext problem matters for live hooking: the same
Japanese string in two scenes needs two keys. In every case a human
authors every variant. The proposed pipeline replaces authoring with
generation, and the format becomes the output contract of the renderer
rather than its input.
Vendors converge on what a translator needs per line: speaker, listener, emotion, relationship notes (superior, close friend, stranger, rival), character gender, character profiles with speech habits, and screenshots tied to string IDs. Without them, lines come out "grammatically perfect and still wrong for the scene" (Alconost, vendor blog, secondary). The complaint is old: "All too often translators are provided with a file containing a collection of strings with no description or context" (Game Developer, 2014). Fan practice also produces out-of-band notes: Legends of Localization publishes line-by-line diffs of Japanese against English with reasons for each change (Zelda Dungeon interview). The proposed intermediate representation is an automated version of the ideal context kit, made for a renderer to consume rather than a human to consult. Japanese-to-English is a hard case for that kit, because Japanese routinely omits subject, gender and relationship information that English grammar forces a translator to state.
Text licensed CC BY 4.0 (attribution: Hiina, ai.hiina.space). Source: https://github.com/hiinaspace/ai-hiina-space