set_from_accept_language
Директива 'set_from_accept_language' устанавливает переменную на основе заголовка клиента 'Accept-Language', отдавая приоритет наилучшему соответствующему locale из предопределённого списка.
Описание
Директива 'set_from_accept_language' является функцией NGINX Accept-Language module, которая позволяет вывести переменную locale из HTTP-заголовка клиента 'Accept-Language'. Директива требует указать переменную (которая должна начинаться с символа '$') и одну или несколько поддерживаемых locales. Когда поступает запрос, NGINX проверяет заголовок 'Accept-Language', который содержит список предпочитаемых клиентом языков, разделённых запятыми, и сопоставляет эти языки с указанными locales. Если найдено совпадение, переменная устанавливается в соответствующий locale; иначе используется первый locale из указанного списка. Директива действует в разных контекстах — http, server и location — что даёт гибкость в выборе места применения определения locale в зависимости от предпочтений пользователя. Локали, указанные после переменной, должны быть корректно упорядочены, так как они задают последовательность приоритетов для выбора. Директива также учитывает ситуацию, когда заголовок 'Accept-Language' может быть отсортирован по значениям качества (обозначаемым 'q'), хотя это не гарантируется и может различаться в разных браузерах. Если подходящего совпадения не найдено, module плавно откатывается к первому locale в списке, обеспечивая определённый языковой вывод для каждого запроса.
Пример конфига
set_from_accept_language $lang en ja pl;
Убедитесь, что имя переменной начинается с '$'; в противном случае это вызовет предупреждение.
Будьте осторожны, если вы полагаетесь на порядок заголовка 'Accept-Language'; его последовательность может отличаться в разных браузерах.
Сравнение имён локалей не зависит от регистра; убедитесь, что идентификаторы локалей имеют правильный формат.