Language codes
Language codes are used to identify a language internally in a computing system, just like Unicode is used to identify letters (slightly simplified). Without a language code, there’s no way to communicate to a spelling checker what language to use for checking, to tell the system which voice to use for voice-over, or how to tell the user which language is currently being used for whatever tool.
There are several standards for language codes, but only one is used in computing systems: the ISO 639 series, by way of the BCP 47 standard. Other language coding systems are thus not considered.
It is unfortunate that the ISO 639 series of language codes are maintained by several entities. It would be desirable that they be all maintained along the same lines as Unicode, with regular updates and corrigenda.
ISO 639-1
Whether all ISO 639-1 codes are recognised by a system, with proper language names in both English and the native language
| System | System version | Documentation | Codes | Language name in English | Language name native language |
|---|---|---|---|---|---|
| Linux | XX | - | Yes | Yes | Yes |
| Windows | XX | - | Unknown | Yes | Yes |
| macOS | 13.x | - | Partial | Yes | Yes |
| Android | XX | - | Unknown | Yes | Yes |
| iOS | XX | - | Unknown | Yes | Yes |
| ChromeOS | XX | - | Unknown | Yes | Yes |
| O365/Win | XX | - | Unknown | Yes | Unknown |
| O365/Mac | XX | - | Unknown | Yes | Unknown |
| O365/Web | XX | - | Unknown | Yes | Unknown |
| GDocs | XX | - | Unknown | Yes | Unknown |
| LibreOffice | XX | - | Unknown | Yes | Unknown |
ISO 639-3
Whether all ISO 639-3 codes are recognised by a system, with proper language names in both English and the native language
| System | System version | Documentation | Codes | Language name in English | Language name native language |
|---|---|---|---|---|---|
| Linux | XX | - | Unknown | Yes | Unknown |
| Windows | XX | - | Unknown | Yes | Unknown |
| macOS | XX | - | Unknown | Yes | Unknown |
| Android | XX | - | Unknown | Yes | Unknown |
| iOS | XX | - | Unknown | Yes | Unknown |
| ChromeOS | XX | - | Unknown | Yes | Unknown |
| O365/Win | XX | - | Unknown | Yes | Unknown |
| O365/Mac | XX | - | Unknown | Yes | Unknown |
| O365/Web | XX | - | Unknown | Yes | Unknown |
| GDocs | XX | - | Unknown | Yes | Unknown |
| LibreOffice | XX | - | Unknown | Yes | Unknown |
Adding or registering missing language codes
While waiting for a Unicode like model for maintaining language codes, it is necessary that users or independent developers can add missing language codes as needed. The following table describes the status for this option.
| System | System version | Documentation/Comments | Codes | Language name in English | Language name native language |
|---|---|---|---|---|---|
| Linux | XX | - | Yes | Yes | Yes |
| Windows | XX | - | Partial | Yes | Yes |
| macOS | XX | - | Partial | No | No |
| Android | XX | - | No | No | No |
| iOS | XX | - | No | No | No |
| ChromeOS | XX | - | No | No | No |
| O365/Win | XX | Codes and names from the OS | Partial | Yes | Yes |
| O365/Mac | XX | - | No | No | No |
| O365/Web | XX | - | No | No | No |
| GDocs | XX | - | No | No | No |
| LibreOffice | XX | - | Unknown | Yes | Unknown |