Про мультиязычность и Acсept-Language

kudashevs

Новичок
Вопрос по мультиязычным сайтам. Кто-то в своей практике использует Acсept-Language для извлечения возможного языка клиента? Если не используете, то как поступаете и какие механизмы используете в ситуациях когда нет возможности вытащить язык из url.
 

AnrDaemon

Продвинутый новичок
Кто-то в своей практике использует Acсept-Language для извлечения возможного языка клиента?
Да.
то как поступаете и какие механизмы используете в ситуациях когда нет возможности вытащить язык из url
Так же, как и когда используем - даём пользователю выбрать язык. А хранить выбор можно много где помимо URL.
 

kudashevs

Новичок
Не подскажете, а что используете для извлечения языков? То есть, понятно, что есть какой-то набор поддерживаемых на сайте языков. Если у клиента ни одного из этих языков в Acсept-Language нет, то мы ему подсовываем дефолтный язык сайта. Если же есть, то подсовываем контент с его языком из Acсept-Language с максимальным приоритетом в нем.

Вот для распарсивания Acсept-Language и получения какого-то набора языков из него, для последующего сравнения, что именно используете?
 

kudashevs

Новичок
Под описание задачи лучше подходит acceptfromhttp, если мы говорим про встроенные механизмы. Однако, это при условии, что первая же локаль с высшим приоритетом нам подошла. А если нет? В этом и вопрос, кто-то вообще заморачивается с этим или in_array(locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']), $languages) и все?
 

weregod

unserializer
Так перебирайте все локали из запроса, авось что и подойдёт, если нет, ставил бы английский, как интернациональный, или по-умолчанию.
 

kudashevs

Новичок
Так перебирайте все локали из запроса, авось что и подойдёт, если нет, ставил бы английский, как интернациональный, или по-умолчанию.
На авось как-то не привык расчитывать :) Поэтому уже написал небольшое решение этой проблемы под себя.

Но стало интересно, ведь не только у меня такая задача возникла. Поэтому может быть народ чем-то уже пользуется и не надо было изобретать велосипед. Поэтому и интересуюсь, кто чем пользуется и как эту задачу решает.
 

AnrDaemon

Продвинутый новичок
На авось как-то не привык расчитывать
Это была форма речи. Вам надо составить свой список предпочитаемых локалей и сравнить его со списком пользователя.
Есть готовые библиотеки.

Бесполезны чуть менее чем полностью.
 

Фанат

oncle terrible
Команда форума
Идет мужик по улице, смотрит новый магазин. Дай, думает, зайду. Заходит, его встречает улыбающийся продавец и говорит: Здравствуйте, мы очень Вам рады, что бы Вы хотели приобрести?
Мужик подумал и говорит: — Ну, перчатки нужны.
Продавец: — Пройдите, пожалуйста в тот отдел.
Мужик подходит: — Здравствуйте, мне нужны перчатки.
Ему в ответ: — Вам какие летние или зимние?
М: Зимние.
П: Тогда пройдите в вон тот отдел.
М. пошел, спрашивает в очередном отделе: Здравствуйте, мне нужны перчатки.
П: Вам кожаные или нет?
М: Кожаные.
П: Тогда Вам в вон тот отдел.
М: не понял, но ладно, пошел.
Здравствуйте, мне нужны Зимние кожаные перчатки.
П: Вам с натуральным мехом или нет?
М.: С натуральным, конечно.
П: Вам надо в отдел напротив.
М. напрягается, но идет. В новом отделе повышенным голосом говорит:
«Мне нужны перчатки ЗИМНИЕ КОЖАНЫЕ С НАТУРАЛЬНЫМ МЕХОМ».
П: Вам с застежкой или без?
М: С застежкой!
П: Вытяните руку, растопырьте пальчики.
М: Пожалуйста.
П: Вам надо в соседний отдел.
М. (гневно): что это такое, Вы что надо мной издеваетесь?! Дайте мне перчатки, и я уйду.
П: Не волнуйтесь, мы просто хотим продать Вам именно то что Вы хотите, чтобы
Вы получили максимум удовольствия от покупки. Вы перчатки подбираете под это пальто?
М. в раздражении: Да! и идет дальше по отделам.
Подходит к следующему продавцу и с надрывом: — Мне нужные зимние кожаные с натуральным мехом и застежкой на эти руки к этому пальто перчатки!!!
П: Вам застежка нужна на кнопочке или молния?
М (на грани истерики): На кнопочке!!!
П: Вам надо вон к тому продавцу…
В этот момент распахиваются входные двери, в магазин заходит мужик, который
держит на вытянутых руках вырванный с корнем унитаз, по краям которого осталась еще плитка.
Подходит к прилавку и кричит:
Вот такой у меня унитаз, вот такая плитка, жопу я вам вчера показывал, дайте мне, наконец, туалетную бумагу!!!!
 

kudashevs

Новичок
Анекдот весьма бородат :) И не совсем понятно какое он имеет отношение к использованию Acсept-Language.
 

AmdY

Пью пиво
Команда форума
Как-то Фанат сильно завернул правило бритвы Оккама.
@kudashevs ты слишком усложняешь. Зашёл новый пользователь, проверил список из Acсept-Language, если нет подходящего выставил свой дефолтный язык. Можно, конечно пытаться гадать, проверять регион айпишника, выплевывать дополнительное всплывающее окно - вы точно ваш язык и городить прочий оверхед, но зачем? Если в тебе пришли без Acсept-Language или с мусором там, то гадание языка - это меньшая из проблем.
 

kudashevs

Новичок
Как-то Фанат сильно завернул правило бритвы Оккама.
@kudashevs ты слишком усложняешь. Зашёл новый пользователь, проверил список из Acсept-Language, если нет подходящего выставил свой дефолтный язык. Можно, конечно пытаться гадать, проверять регион айпишника, выплевывать дополнительное всплывающее окно - вы точно ваш язык и городить прочий оверхед, но зачем? Если в тебе пришли без Acсept-Language или с мусором там, то гадание языка - это меньшая из проблем.
@AmdY вопрос был и остается, используете ли Acсept-Language для определения языка. Если да, то чем его парсите (потому что нам нужен список языков из него, а не один язык как например отдает acceptfromhttp). Если нет использете Acсept-Language, то что тогда используете.

Ни про какие другие механизмы пока речи вообще не было :)
 
Сверху