The nfo/grf Technical Reference

Action 13

Translating GRF-specific strings


Description

Translating regular strings is easy by just overwriting them with an action 4, however this is not possible for translating GRF-specific strings in the D000 or DC00 range of IDs. Instead, these must be translated with this action 13.

Available since 2.6 alpha 1 (r857).

Usage of this action with OpenTTD is troublesome in multiplayer. The action does not specify a language code for the translation, but forces the translation on every player. However, GRFs with only action 13 can be loaded as OpenTTD static NewGRF. GRF version 8 alleviates this problem by providing the language that is overridden.

Format

The data looks as follows:

<sprite-number> * <length> 13 <feature> <grfid> [<language-id>] <num-ent> <offset> <text...>

ElementSizeDescription
<sprite-number>decA sequential sprite number
<length>decThe total number of bytes in the action
13BAction 13
<grfid>4*BThe GRFID of the file whose texts are to be translated
<language-id>BWhich of TTD's languages these strings are for (only for GRF version 8 and higher)
<num-ent>BNumber of strings
<offset>WFirst text ID
<text...>SZero-terminated strings

For action 13, <num-ent>, <offset> and <text...> work exactly as for action 4, but the offset may only refer to a text ID in the D000 or DC00 range of IDs.

Action 13 is skipped if the given GRFID cannot be found or if the file is inactive; action 13 generates an error message and disables the current file if it appears before the GRF that it is translating.