Untranslated string finder
日本語版はこちらFind the rows that never got translated, before a player finds them for you.
Why untranslated rows survive to release
Untranslated rows are rarely forgotten on purpose. They arrive when new text is added late, when a file is merged and one side wins, or when a runtime fallback quietly serves the source language so nothing looks broken in testing. The build runs, nothing errors, and the gap only shows up in front of a player.
The mechanical signal is simple: the target is empty, or the target is byte-for-byte the source. The second one needs a human eye afterwards, because some rows are legitimately identical — proper nouns, interface words that stay in English, numbers. A checker that flags them and a person who clears them is the right division of labour.
Keeping the gap from re-opening
Treat every newly added source row as untranslated until proven otherwise, rather than assuming it inherited a translation. That single rule catches most of what ships broken, and it is the reason tracking what changed between builds matters more than any one-off check.