
Language codes should be formatted according to the best practices recommended by the Internet Engineering Task Force (IETF) in a group of documents known collectively as BCP 47, and in particular, RFC 5646, which is part of BCP 47. An overview of these best practices is provided here: https://www.w3.org/International/articles/language-tags/. When specifying languages, you can use any language as long as it is a valid BCP 47 code that consists of the language subtag, optional region subtag, and optional script subtag as appropriate. In addition to commonly-used alphabetic country codes, BCP 47 also includes support for UN M.49 region codes.
As a best practice when specifying a language, use the region subtag (for example, the US of en-US) only when it conveys helpful information, such as spelling variations between countries. For example, there is generally not a need to distinguish between Japanese as used in one country versus another, so you should use only the language code subtag (ja) instead of the language code and region subtags (ja-JP). In cases where specifying a region is appropriate, use the hyphen character to combine a language subtag with a region subtag. This identifies both the language and the specific location where the language is used. For English with American spelling, use en-US; for English with British spelling, use en-GB.
Although script subtags are valid (for example, Chinese can be written in either Traditional or Simplified characters, and you may need to indicate that localizations appear in a specific script), keep in mind that script subtags are for describing text and should not be used for describing audio. For example, you would deliver cmn to describe audio in Mandarin, not cmn-Hant or cmn-Hans.
Note that while any language code complying with the guidelines above will be accepted, Apple Books only displays content in a limited set of languages as shown in the table below. At present, the only UN M.49 region code supported by Apple Books is 419 and it is useful in forming the language tag es-419 to represent Spanish as used in Latin America (as distinct from Spanish as used in Spain).
Languages | Storefront displays only these languages |
|---|---|
Afrikaans | af |
Arabic | ar |
Bengali | bn |
Bulgarian | bg |
Cantonese | yue-Hant |
Catalan | ca |
Chinese (Simplified) | zh-Hans |
Chinese (Traditional) | zh-Hant |
Croatian | hr |
Czech | cs |
Danish | da |
Dutch | nl |
English | en |
Estonian | et |
Finnish | fi |
French | fr |
German | de |
Greek | el |
Haitian | ht |
Hebrew | he |
Hindi | hi |
Hungarian | hu |
Icelandic | is |
Indonesian | id |
Irish | ga |
Italian | it |
Japanese | ja |
Kazakh | kk |
Korean | ko |
Lao | lo |
Latin | la |
Latvian | lv |
Lithuanian | lt |
Malay | ms |
Norwegian | no |
Persian | fa |
Polish | pl |
Portuguese | pt |
Punjabi | pa |
Romanian | ro |
Russian | ru |
Sanskrit | sa |
Slovak | sk |
Slovenian | sl |
Spanish | es |
Spanish (Latin America)* | es-419 |
Swedish | sv |
Tagalog | tl |
Tamil | ta |
Telugu | te |
Thai | th |
Turkish | tr |
Ukrainian | uk |
Urdu | ur |
Vietnamese | vi |
Zulu | zu |
* 419 is a UN M.49 region code. https://unstats.un.org/unsd/methods/m49/m49regin.htm