Are the language codes intended to be used as abbreviations for the language?
The language codes in ISO 639-2 were developed to serve as a device to identify a language or group of languages. They were NOT intended to serve as abbreviations or short forms for languages, but rather as a code that serves as a device to identify a language name. Some codes in the list consist of letters that are used in some form of the language name. This has not been possible in all situations, however, and often one would need to know the English form of the language name to recognize a relationship. There are situations where codes have been selected that diverge from the language name. In using the language codes, systems generally display the language name represented by the code and not the code itself to users. Therefore it becomes irrelevant whether the code is “123”, “xyz”, “eng” or whatever. See section 4.1 of ISO 639-2 for criteria for the selection of the language code.