How does game localisation actually work?
Far more than translation. Localisation adapts a game so that it works for a different market, which involves text, audio, art, interface, legal compliance and frequently gameplay itself — and the work has to be designed for from the start or it becomes enormously expensive.
What is actually localised:
Text, which is the visible part — dialogue, interface, item names, tutorials, legal screens.
Audio, where full voice recording in each language multiplies cost dramatically, which is why subtitles-only releases are common.
Art and textures containing readable text, which must be recreated.
Interface layout, because text expands: German and Russian commonly run substantially longer than English, and a button sized to fit English will overflow. This is the most common localisation bug.
Date, time, number and currency formats, and name ordering.
Content changes for regulatory or cultural reasons — symbols prohibited in some countries, gambling mechanics restricted, depictions of blood, and age rating requirements that differ by territory.
Why it must be planned early — internationalisation. Building the game so text is externalised into files rather than embedded in code, fonts support the required character sets, layouts resize, and nothing assumes left-to-right reading or English word order. Retrofitting this is the expensive failure, and is why some games never receive localisation that would otherwise be commercially obvious.
Why translation alone produces poor results:
Context is missing. Translators frequently receive spreadsheets of strings with no indication of who says them, to whom, or where they appear — so a single word may be a verb or a noun, a button or a line of dialogue.
Variables and pluralisation behave differently between languages, and gendered grammar breaks templated strings.
Humour, wordplay and cultural reference require transcreation — rewriting for equivalent effect rather than equivalent words.
Length constraints for subtitles and lip-sync.
Testing is a distinct stage, checking each language in context on real hardware.