From Bohemia Interactive Community
Revision as of 21:10, 24 April 2020 by Lou Montana (talk | contribs) (Page refresh)
Jump to navigation Jump to search


Stringtable.xml was introduced with Arma. For Operation Flashpoint, see Stringtable.csv.

String tables are used to make internationalization easier for the game. They are used in addons, missions, and scripts, and are located in the root of the mission or addon folders.

Any strings that are used in the game can be kept separate from the code, and can therefore easily be edited and expanded into different languages. Instead of using strings directly in the code, you are using a variable. This variable will then contain the actual string, read from stringtable.xml, with the language that is being read depending on the game settings.

Stringtable Editors

It strongly recommended to use a tool to edit the XML file; a selection of Stringtable Community Tools can be found in the Community Tools - Localisation Tools page section.


Show Stringtable.xml example

Package and container names are only for organisational use; use them for your own sanity.
Stringtable.xml must be saved with UTF-8 Encoding for international characters to display and save correctly.

Supported languages

Arma 2 & Arma 2: Operation Arrowhead Arma 3
  • English
  • Czech
  • French
  • Spanish
  • Italian
  • Polish
  • Russian
  • German
  • English
  • Czech
  • French
  • Spanish
  • Italian
  • Polish
  • Portuguese
  • Russian
  • German
  • Korean (region exclusive)
  • Japanese (region exclusive)
  • Chinese 繁體中文 (Chinese Traditional)
  • Chinesesimp 简体中文 (Chinese Simplified)
  • Turkish
  • Swedish
  • Slovak
  • SerboCroatian
  • Norwegian
  • Icelandic
  • Hungarian
  • Greek
  • Finnish
  • Dutch

Key naming convention

Same as global variables, it is recommended to use a TAG to prevent translation collision with mods.

If the key is to be used by Config (Description.ext and dialogs included), it must start with STR (or str, casing does not matter). By convention however, STR_ is the norm for all the entries.

String Formats

Strings stored in the stringtable can be in the following formats:

  • Normal text, such as Hello there
  • format text, such as Hello %1
  • Structured Text, such as <t size='2'>Hello</t> there, but:
    The HTML tag characters < and > must respectively be encoded as &lt; and &gt;.
    <t size='2'>Hello</t> there would then become &lt;t size='2'&gt;Hello&lt;/t&gt; there.



A translation can be retrieved and used in a script by using the localize command:

hint localize "str_TAG_Yes"; // returns "Yes" in English, "Oui" in French, etc.
hint format [localize "str_TAG_formatted", name player];
hint localize "str_TAG_structuredText";


Whether it is in Description.ext, Campaign Description.ext, Dialogs etc., the Config syntax to refer to a Stringtable translation is as follow (here, a Description.ext example):

onLoadName = $STR_TAG_missionName;
onLoadMission = $STR_TAG_loadMissionText;
overviewText = $STR_TAG_overviewText;
overviewPicture = $STR_TAG_overviewImage;

The preprocessor will replace $STR entries with the Stringtable values.


Multiplayer Scripting should consider that the translation implementation should ideally happen client-side; clients and server are likely to be configured in a different language, as a server-side call to global effect text commands (such as setMarkerText) would set the text in the server's language to everyone.

Example of client-side translation of a server message:

// Server-side
if (isServer) then
	[nil, nil, rHINT, localize "str_TAG_myMessage"] call RE;	// Arma 2
	["str_TAG_myMessage"] remoteExecCall ["TAG_fnc_localHint"];	// Arma 3

// Client-side executed function
TAG_fnc_localHint = {
	if (hasInterface) then
		hintSilent parseText (localize _this);					// Arma 2
		hintSilent parseText (_this call BIS_fnc_localize);		// Arma 3

See also