biblatex distinguishes two language fields: (1) language and (2) langid. According to the biblatex documentation, p. 20,
[the language field holds the] language(s) of the work. Languages may be specified literally or as localization keys. If localization keys are used, the prefix lang is omissible.
on p. 25 we have
[langid] The language id of the bibliography entry. [...] The identifier must be a language name known to the babel/polyglossia packages. This information may be used to switch hyphenation patterns and localize strings in the bibliography. Note that the language names are case sensitive.
So the language field is what is printed in the bibliography as the language of the work, while langid is used internally for biblatex's language switching behaviour (it can be used to switch hyphenation in the bibliography, so words are hyphenated properly, or it might change the language-dependent strings as well; this is controlled with the autolang option). Note that by default the language information is not printed if the language given there coincides with the main language of the document; this is controlled by the clearlang option and \DeclareRedundantLanguages.
You might for example have
@online{elk,
author = {Anne Elk},
title = {Über die Anatomie der Donnerechse},
url = {http://www.example.edu/~elk/bronto.pdf},
date = {2016-01-01},
language = {german},
langid = {ngerman},
}
for a German text (language is german, langgerman would also be OK) following the new rules of orthography (langid is ngerman).
The langid field can only work with language identifiers known to babel/polyglossia, but per PLK's comment above Biber can deal with BCP47 language codes as well and maps them to their respective counterparts. In fact Biber will happily accept nonsense input such as langid = {flobbel}, but that will lead to problems with babel or polyglossia if you use anything other than autolang=none and the language package tries to load the unknown language flobbel.
The language field accepts any input, but language identifiers that biblatex knows are treated differently, they are translated. To be a bit more precise this works for languages defined in the currently used .lbx file as lang<language>, you can give them as <language> or lang<language>. If the bibstring is not defined in the .lbx, the content of the language field is printed as is. You can see the languages supported by english.lbx here, for Dutch the list is here). You can give the language identifier either with the prefix lang or without, langgreek and greek yield the same results.
If you use
language = {english},
in a Dutch document, you get the output "Engels" and if the document language is English we get "English".
The string en is not on the list of recognised language identifiers and is printed as is.
You can emulate what Biber does with the langid field using a sourcemap
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=language,
match=\regexp{\Aen\Z},
replace=\regexp{english}]
\step[fieldsource=language,
match=\regexp{\Ade\Z},
replace=\regexp{german}]
}
}
}
langid, which sets the language for hyphenation purposes. In any event, my suggestion would be the same: either use a programming tool likesed(orawkor, etc.) or do it dynamically (but with more initial effort) with\DeclareSourcemap. – jon Feb 18 '16 at 20:44langid, notlanguageand if you are usingbiber, you can indeed use standard BCP47 codes. – PLK Feb 18 '16 at 20:48language. So I tried to change it tolangid = {en}, but in this way it is not shown in my references whereas it was shown when usinglanguage. I usenumericas my style. – rugk Feb 18 '16 at 21:15langid = {en}andlanguageBiber tells me: "WARN - The field 'language' in entry '/.../' cannot be null, deleting it" And therefore the language is still not show in the references. So basically it currently only works when I only use 'language'. – rugk Feb 18 '16 at 21:22languagedoesn't exist, it's just that it's rarely what people want, but it seems you do ... – PLK Feb 19 '16 at 10:00