Разница между атрибутами lang и xml:lang при работе с многоязычным контентом заключается в том, что они предназначены для разных контекстов. 1
Атрибут lang используется для HTML-страниц и устанавливает язык документа или блока текста. 1 Он определяет основной язык документа согласно BCP 47 (в простейшем случае — используя код языка ISO 639-1). 2
Атрибут xml:lang — стандартный способ объявления языковой информации в XML. 1 Его использование может быть полезно из соображений совместимости с инструментами обработки XML, не реализующими особо поддержку HTML5. 2
При работе с многоязычным контентом эти атрибуты могут использоваться вместе. 1 Например, для XHTML 1.x и документов HTML5 Polyglot. 1 В таком случае значения атрибутов должны быть идентичны. 1
Если документ обрабатывается как XML (то есть используется MIME type application/xhtml+xml), то атрибут lang не нужен, будет достаточно атрибута xml:lang. 1
Если документ обрабатывается как HTML, то рекомендуется добавлять оба атрибута, чтобы правильная информация о языке была доступна пользователям независимо от того, как обрабатывается документ. 3