Браузер сообщает серверу, какие языки он принимает, через переменную HTTP HTTP_ACCEPT_LANGUAGE, которую сервер получает через
Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]
Сервер может соответствующим образом настроить свой вывод или игнорировать переменную.
Кроме того, отношение, которое вы ищете, полностью зависит от реализации браузера:
извлечение языковой настройки из полученного содержимого HTTP / HTML (*)
обычно язык соответствует диапазону Unicode
найти шрифт из настроек браузера / пользователя, сопоставляя диапазоны Юникода с (предпочтительными) шрифтами
вывод текста со шрифтом (через OS API)
(*) Теги HTML могут иметь атрибут lang = "language code", который переопределяет язык HTML / HTTP
Однако ОС может обнаружить, что некоторые символы не покрыты выбранным шрифтом, и может выбрать запасной шрифт (см. UniScribe глоссарий и блог Sorting It All Out здесь и здесь )
IMO, если браузер отправляет Accept-Language на сервер, вы должны допустить, что браузер знает, как правильно отображать содержимое.