Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как определить текущий язык браузера (https://javascript.ru/forum/dom-window/84318-kak-opredelit-tekushhijj-yazyk-brauzera.html)

vadval15 04.08.2022 18:41

Как определить текущий язык браузера
 
Для определения текущего языка браузера (Firefox) было использовано свойство language объекта navigator (https://qna.habr.com/q/338809):
var language = window.navigator ? (window.navigator.language ||
                  window.navigator.systemLanguage ||
                  window.navigator.userLanguage) : "ru";
language = language.substr(0, 2).toLowerCase();

К сожалению, в приведенном случае при всех установках языка браузера им выдавалось лишь одно значение - "ru", а аналогичные ему свойства (systemLanguage, userLanguage, browserLanguage) вообще отсутствовали. Может быть, имеется какой-либо иной, более действенный способ определения текущего языка браузера? Буду признателен за любой совет по данному вопросу.

Aetae 04.08.2022 19:17

У меня прекрасно меняется navigator.language при смене. Только браузер надо перегрузить чтоб применилось.

На всякий случай уточню: ты ведь хочешь узнать язык интерфейса браузера, а не текущую раскладку клавиатуры, верно?

Nexus 04.08.2022 19:24

А что не так с navigator.language?

Только что проверил в Chrome v104.0.5112.79 и Firefox v103.0.1 - работает как часы, последний даже перезагружать не нужно.

vadval15 05.08.2022 11:06

Спасибо всем за ответы. Приношу свои извинения за неоднозначную формулировку вопроса, поскольку под текущим языком браузера подразумевалась именно раскладка клавиатуры. Во всяком случае, теперь стало очевидным, для каких целей используется свойство language. Осталась лишь неясной возможность определения раскладки.

Aetae 05.08.2022 12:31

vadval15, ну тут всё просто - определить раскладку клавиатуры средствами js невозможно. Почему? Потому что у раскладок клавиатуры на самом нет ни названий ни привязки к конкретному языку. Раскладка может быть абсолютно любой. Да, "по умолчанию", для английского языка используется "qwerty", а для русского "йцукен", но есть как и множество других "стандартизированных" вариантов, так и возможность использовать произвольный набор и порядок символов, индивидуально настроенный.

Тебе следует подумать об иных способах решения стоящей перед тобой задачи.

vadval15 06.08.2022 18:33

Благодарю Вас за обстоятельный ответ. И хотя, как показал дальнейший поиск, явное определение раскладки клавиатуры в JavaScript действительно отсутствует, тем не менее иногда её можно установить косвенно при анализе кода набранного символа в ходе обработки события keypress (http://webdiz.com.ua/sobytiya-klavia...down-keypress/, https://qna.habr.com/q/449920), что вполне достаточно для решения многих задач.


Часовой пояс GMT +3, время: 10:35.