Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как адаптировать этот PHP код? (https://javascript.ru/forum/misc/84460-kak-adaptirovat-ehtot-php-kod.html)

df12 16.09.2022 22:30

Как адаптировать этот PHP код?
 
Здравствуйте, я не очень селён в JavaScript, не могли бы вы мне помочь PHP -> JS
$prefLocales = array_reduce(
    explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']), 
      function ($res, $el) { 
        list($l, $q) = array_merge(explode(';q=', $el), [1]); 
        $res[$l] = (float) $q; 
        return $res; 
      }, []);
    arsort($prefLocales);

Aetae 16.09.2022 23:35

Тебе для сервера или для клиента?

Если для клиента, то тебе нужен navigator.languages - список языков в порядке предпочтения(но без весов "q=<bullshit>"), или вообще navigator.language - текущий язык.

df12 17.09.2022 10:10

Цитата:

Сообщение от Aetae (Сообщение 548017)
Тебе для сервера или для клиента?

Для сервера.

Aetae 17.09.2022 15:48

df12, тогда нужно больше деталей. На чём у тебя сервер? На express, на чистом http(s) или ещё на чём?

const prefLocales = {}; 

req.headers['accept-language']
  ?.split(',')
  .map(el => {
    const [name, quality] = el.split(';q=');
    return [quality ? +quality : 1, name];
  })
  .sort(([a], [b]) => b - a)
  .reduce((res, [quality, name]) => {
    res[name] = quality;
    return res;
  }, prefLocales);

df12 18.09.2022 11:41

Цитата:

Сообщение от Aetae (Сообщение 548030)
df12, тогда нужно больше деталей. На чём у тебя сервер? На express, на чистом http(s) или ещё на чём?

Next.js

df12 18.09.2022 11:44

Цитата:

Сообщение от Aetae (Сообщение 548030)
,
const prefLocales = {}; 

req.headers['accept-language']
  ?.split(',')
  .map(el => {
    const [name, quality] = el.split(';q=');
    return [quality ? +quality : 1, name];
  })
  .sort(([a], [b]) => b - a)
  .reduce((res, [quality, name]) => {
    res[name] = quality;
    return res;
  }, prefLocales);

Спасибо, код помог! :thanks:


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