OPTIONS: route CANCEL through Strings so a translation mod can reach it

CANCEL is appended after the `ui.options.rows` hook, deliberately -- that is
what stops a mod from orphaning the exit. But it also means no translation
mod can ever see it: there is no row for one to rewrite, and the hook has
already run by the time it is added.

The result is that a fully translated OPTIONS menu has exactly one English
word left on it, and it is the way out. I hit this with a Spanish catalog
where every row translated and the exit did not.

One call, matching how every other label on this screen is already built.
Nothing changes without a catalog loaded: Strings is an identity function
until a mod supplies one.

Follows the same reasoning as #791.
This commit is contained in:
hernan
2026-08-07 22:14:29 -04:00
parent cab62ff7b3
commit d756b7cd43
+7 -1
View File
@@ -585,8 +585,14 @@ function OptionsMenu:update(dt)
end end
function OptionsMenu:draw() function OptionsMenu:draw()
-- Through Strings, like every other label on this menu. CANCEL is
-- appended AFTER the rows hook (see the header), which is what keeps a mod
-- from orphaning the exit -- but it also means a translation mod never sees
-- this string, and cannot: there is no row for it to rewrite. So the one
-- word a Spanish player could not read on a fully translated OPTIONS menu
-- was the way out of it.
OptionRows.draw(self.game, self.rows, self.index, self.scroll or 0, OptionRows.draw(self.game, self.rows, self.index, self.scroll or 0,
"CANCEL", #self.rows + 1) Strings("CANCEL"), #self.rows + 1)
end end
return OptionsMenu return OptionsMenu