Полез разбираться. Да, действительно два.
http://www.loc.gov/standards/iso639-2/langcodes.html
http://www.loc.gov/standards/iso639-2/faq.html#3
http://en.wikipedia.org/wiki/ISO_639
У 22 языков зарегистрированы два варианта кодов, "терминологический" и "библиографический".
These alternative codes in ISO 639-2 exist for historical reasons. At the time that ISO 639-2 was developed, there already was a well-known and widely used language code list that had been used for over 30 years in bibliographic systems which was largely adapted for the 3-character code set . At the same time there was the 2-character code list (now called ISO 639-1, previously ISO 639), which covered far fewer languages than those for bibliographic applications. There was a desire by some participants for the 3-character codes for languages that were already in the 2-character list to generally share the same 2 characters. In 22 cases the existing bibliographic code was very different than the 2-character code (because it was based on a different form of the language name), but the impact on existing bibliographic systems with millions of records using those well-established codes would have been enormous if a new 3-character code were adopted. Thus, these alternative codes were used for those languages. The alternative codes should be considered as synonyms; there is no overlap in codes between the B and the T list.
Проблема в том, что подобная двусмысленность создает массу проблем. Базы данных организуются с поиском по ключу. Наличие двух кодов означает, что я не могу объявить ISO-код языка первичным ключом. Наличие миллионов каталогизированных единиц, зарегистрированных под библиографическим кодом, конечно же, заставляет с этим считаться. Но не для того ли создаются стандарты, чтобы переходить на единую систему? Не претендуют же американцы на расширение метрической системы за счет включения в нее галлона?