Les drapeaux représentent des pays et non une langue. Du coup ce serais plus juste d'utiliser `language.locale.region`.
Cela dit ça ne marchera pas pour les locales sans "region". On peut donc faire `{{ language.locale.region|lower|default(language.locale.primaryLanguage) }}`, mais ce n'est pas vraiment juste (exemple avec "zh" vs. "zh_CN" : CN représente le drapeau chinois mais pas zh).
La vraie solution pour les locales sans region serait soit d'avoir un mapping des "drapeaux par défaut", soit d'avoir des "drapeaux neutres" comme font certains (eg. un drapeau blanc/gris avec marqué la *primaryLanguage* dedans).