SandVox

Language Codes in Game Localization — IETF BCP 47, ISO 639, and Locale Identifiers

Game Localization · Glossary

Language Codes in Game Localization — IETF BCP 47, ISO 639, and Locale Identifiers

A language code is a standardized identifier for a specific language or language variant that tells software which localized content to display. In game localization, language codes control which string table, font, text direction, and number format a player sees based on their device settings or in-game language selection.

Major Language Code Standards

Three main standards are used in game development: ISO 639-1 (two-letter codes: en, de, fr, ja, zh), ISO 639-2 (three-letter: eng, deu, fra, jpn, zho), and IETF BCP 47 — the most complete standard, which combines language and region codes (en-US, de-DE, zh-CN, zh-TW, pt-BR). IETF BCP 47 is the format used by most modern platforms (iOS, Android, Steam) and the recommended standard for new projects. Unity and Unreal Engine both support BCP 47 locale identifiers in their localization systems.

Language Codes vs Locale Codes

A language code specifies a language. A locale code specifies a language and a regional variant. en-US and en-GB are both English but differ in spelling conventions, date format, and some vocabulary. The most commercially important distinctions: zh-CN (Simplified Chinese, mainland China) vs zh-TW (Traditional Chinese, Taiwan/Hong Kong) require completely separate translations and fonts. pt-BR (Brazilian Portuguese) and pt-PT (European Portuguese) require separate translations. es-ES (Castilian Spanish) and es-419 (Latin American Spanish) benefit from separate translations for quality localization.

Language Codes in Game Engines and Stores

Unity uses SystemLanguage enum or CultureInfo strings that map to IETF BCP 47. Unreal Engine uses FText with a culture code system based on IETF BCP 47. Steam uses ISO language names (English, French, German) rather than codes — their list of supported languages is fixed. App Store and Google Play use IETF BCP 47 variants for store metadata. When submitting to multiple platforms, locale codes from your engine must be mapped to each store’s specific identifiers — they often differ slightly.

SandVox and Language Code

SandVox provides localization deliverables structured for each target platform’s locale system. For multi-region language variants — zh-CN vs zh-TW, pt-BR vs pt-PT, es-ES vs es-419 — we scope these as separate deliverables from the start, not as surprises at delivery when the client discovers that one Chinese locale doesn’t cover both markets.

Related terms: Locale · Game Internationalization · String Externalization · Localization Strings

Frequently Asked Questions

What language code should I use for Chinese?

Depends on your market. Use zh-CN for Simplified Chinese (mainland China) and zh-TW for Traditional Chinese (Taiwan and Hong Kong). These require different translations, different font files, and separate platform locale configurations. Never use a single zh code to serve both markets.

Do I need separate language codes for Spanish in Spain vs Latin America?

For a quality localization, yes. es-ES (Castilian Spanish) and es-419 (Latin American Spanish) differ in vocabulary, formality conventions, and cultural references. A single Spanish localization works for budget-constrained releases, but LATAM players will notice Castilian-specific vocabulary — especially in informal or dialogue-heavy games.

How do I handle language codes for platforms that don’t use BCP 47?

Steam uses its own named language list; App Store and Google Play use BCP 47 variants. SandVox delivers platform-specific metadata for each store alongside the game string files — so you get App Store-formatted language labels, Steam language names, and engine locale codes as separate deliverables.

Need Expert Game Localization?

SandVox provides end-to-end game localization including language code — for narrative games, mobile titles, webtoons, and interactive fiction.