Script Subtags (Hans vs Hant) — Distinguishing Writing Systems
How ISO 15924 script subtags work in BCP 47 language tags, with focus on Hans/Hant, Latn/Cyrl, and other script distinctions.
Detailed Explanation
Script Subtags in BCP 47
Script subtags identify the writing system used for a language. They are defined by ISO 15924 and are four letters long, with the first letter capitalized.
When Script Subtags Are Needed
Script subtags are necessary when:
- A language is written in multiple scripts (Chinese, Serbian, Azerbaijani)
- You need to distinguish content that differs only by script
- Font selection depends on the script
Common Script Subtags
| Subtag | Script | Used For |
|---|---|---|
Hans |
Simplified Chinese | zh-Hans |
Hant |
Traditional Chinese | zh-Hant |
Latn |
Latin | sr-Latn (Serbian Latin) |
Cyrl |
Cyrillic | sr-Cyrl (Serbian Cyrillic) |
Arab |
Arabic | pa-Arab (Punjabi in Shahmukhi) |
Guru |
Gurmukhi | pa-Guru (Punjabi in Gurmukhi) |
Deva |
Devanagari | hi-Deva (Hindi) |
Jpan |
Japanese | (kanji + kana combined) |
Kore |
Korean | (Hangul + Hanja combined) |
Chinese Script Distinction
The most common use of script subtags is distinguishing Simplified and Traditional Chinese:
zh-Hans → Simplified Chinese (any region)
zh-Hant → Traditional Chinese (any region)
zh-Hans-CN → Simplified Chinese, China
zh-Hant-TW → Traditional Chinese, Taiwan
zh-Hant-HK → Traditional Chinese, Hong Kong
Why not just use region? Because the script is the primary differentiator. Content for zh-TW and zh-HK both use Traditional Chinese, but they may have regional vocabulary differences. Using zh-Hant as the base ensures correct font and character selection.
Serbian: Two Scripts in Active Use
Serbian is unique in that both Cyrillic and Latin scripts are in daily use:
sr-Cyrl → Serbian in Cyrillic (Српски)
sr-Latn → Serbian in Latin (Srpski)
sr-Cyrl-RS → Serbian Cyrillic, Serbia
sr-Latn-RS → Serbian Latin, Serbia
Azerbaijani: Three Scripts
Azerbaijani has historically used Arabic, Cyrillic, and Latin scripts:
az-Latn → Azerbaijani in Latin (modern standard in Azerbaijan)
az-Cyrl → Azerbaijani in Cyrillic (used in Dagestan, Russia)
az-Arab → Azerbaijani in Arabic (used in Iran)
Suppress-Script
Some language-script combinations are so default that the script subtag is "suppressed" — meaning it should be omitted. For example, en-Latn is redundant because English is always written in Latin script. Use just en.
Use Case
Script subtags are critical when building applications for Chinese-speaking markets (Simplified vs Traditional), Serbian users (Cyrillic vs Latin), or any language that uses multiple writing systems. They affect font loading, text rendering, input methods, and content selection.
Try It — Language Code Reference
Related Topics
BCP 47 Language Tags — The Web Standard for Locale Identifiers
Standards
CJK Language Codes — Chinese, Japanese, and Korean
Internationalization
ISO 639-2 Three-Letter Codes — Extended Language Coverage
Standards
Regional Language Variants — en-US vs en-GB and Beyond
Internationalization
Language Tags in HTML — The lang Attribute Guide
Web Development