Как лучше передавать информацию о текущем языке веб-приложения на сервер

187
20 декабря 2021, 23:00

Пока я начитал два варианта:

  1. Через cookies (а что делать если пользователь запретил использовать куки?);
  2. Через headers (Accept-Language). Отслеживать его на сервере и в зависимости от установленного языка, выдавать информацию.

Какой из них наиболее правильный. И какой наиболее предпочтительней использовать в GraphQL-сервере. Или может быть, есть еще какие-то варианты?

Answer 1

В клиентской части веб-приложения, можно использовать navigator.language - передавая его значение (или слайс из первых двух символов) с HTTP-запросом, например как часть URI эндпоинта.

console.log(window.navigator.language);  
console.log(window.navigator.language.slice(0, 2)); 

Заголовок Accept-Language может содержать несколько предпочтительных языков - тогда как navigator.language возвращает только один язык (программы-юзерагента)... и очень вероятно, что это именно тот язык, который наиболее предпочтителен для клиента.

Передача идентификатора языка в запросе (вместо извлечения из заголовка на сервере) позволяет пользователям API более удобно переопределять этот параметр.

Ну а примерным аналогом Accept-Language, на стороне клиента является navigator.languages (с 's' на конце).

READ ALSO
Нелёгкая задача с формой(сложно) [закрыт]

Нелёгкая задача с формой(сложно) [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

127
JAVASCRIPT / Повторный onclick на странице с изменяющимися элементами

JAVASCRIPT / Повторный onclick на странице с изменяющимися элементами

Drupal 8, Commerce 2, аттрибуты товара типа Rendered AttributeФункция подключена в libraries по всем правилам Drupal

170