Гм, а там возможны не только ru и en?<br>Тогда, наверно, можно смотреть по первому, и если его нет, отдавать en.<br><br><div class="gmail_quote">4 декабря 2008 г. 18:40 пользователь Sergey Shepelev <span dir="ltr"><<a href="mailto:temotor@gmail.com">temotor@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Да, я тоже думаю, что таких несравнимо мало.<br>
<br>
Но может быть accept-language de,en<br>
а владелец создаст контент для en и de.<br>
Мы увидим, что ru нету и попробуем взять en. А юзер предпочитает de.<br>
<br>
2008/12/4 Борис Долгов <<a href="mailto:boris@dolgov.name">boris@dolgov.name</a>>:<br>
<div><div></div><div class="Wj3C7c">> А если просто проверять, начинается ли accept-encoding с ru? Если да -<br>
> ставить русский, если нет - ставить английский. Думаю, таких, кто будет<br>
> ходить с броузеров, где какой-нить mn;q=0.9;ru;q=0.8;en;q=0.7, несравненно<br>
> мало, чтобы ими пренебречь.<br>
><br>
> 4 декабря 2008 г. 1:28 пользователь Sergey Shepelev <<a href="mailto:temotor@gmail.com">temotor@gmail.com</a>><br>
> написал:<br>
>><br>
>> Спасибо, здорово.<br>
>> set оказался мощнее чем я думал.<br>
>><br>
>> Только если правильно понимаю, ваш код неправильно обработает случай<br>
>><br>
>> Accept-Language: en;q=0.9,ru;q=0.8<br>
>><br>
>> то есть выберет русский, хотя юзер предпочитает английский. Но<br>
>> проблема глубже - бекенд не знает своего решения, относительно какой<br>
>> именно язык будет использован (там есть бекенд второго уровня, который<br>
>> отдает контент взамен на домен и список языков), поэтому он может<br>
>> положить в кеш контент по ключу списка языков, например домен#en,ru<br>
>><br>
>> Т.е. что-то вроде<br>
>><br>
>> if ($http_accept_language ~*<br>
>><br>
>> "^(\w\w)-?\w?\w?(;q=\*|;q=\d\.\d),?(\w\w)-?\w?\w?(;q=\*|;q=\d\.\d),?(\w\w)-?\w?\w?(;q=\*|;q=\d\.\d),?")<br>
>> {<br>
>> set $hislang "$1,$3,$5"<br>
>> }<br>
>><br>
>> но нужны все языки, а не первые 3. И что будет, если указаны только<br>
>> один/два? "en,," "en,ru," ?<br>
>><br>
>> Я понимаю, что больше двух языков в настройках почти никогда не бывает.<br>
>> Также я вижу несколько прагматичных решений с разными ограничениями,<br>
>> типа всё-таки брать первые два языка, остальных юзеров обрабатывать<br>
>> медленными бекендами, благо всё равно запас производительности<br>
>> большой. Но как всегда хочется чтоб и красиво и быстро и дешево.<br>
>><br>
>> 2008/12/3 Михаил Монашёв <<a href="mailto:postmaster@softsearch.ru">postmaster@softsearch.ru</a>>:<br>
>> > Здравствуйте, Сергей.<br>
>> ><br>
>> > Хост и язык можно регэкспами через set установить<br>
>> > <a href="http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#set" target="_blank">http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#set</a><br>
>> ><br>
>> > и из эти новых переменных потом формировать $memcached_key:<br>
>> ><br>
>> > set $myhost $host;<br>
>> > if ($host ~* "^.*\.([^.]+\.[^.]{2-4})$" ) {<br>
>> > set $myhost $1;<br>
>> > }<br>
>> > set $mylang "en";<br>
>> > if ($http_accept_language ~* "ru" ) {<br>
>> > set $mylang "ru";<br>
>> > }<br>
>> > $memcached_key "parked#$myhost#$mylang"<br>
>> ><br>
>> > SS> Парковка доменов. Имеется маленькая кучка fastcgi бекендов, которые<br>
>> > SS> генерят динамику в зависимости от запрошенного HTTP Host и<br>
>> > SS> Accept-Language.<br>
>> > SS> На морде стоит nginx шестой ветки и проксирует всё подряд на<br>
>> > бекенды.<br>
>> > SS> Которые либо отдают страничку из кеша, либо генерят и кладут в кеш.<br>
>> ><br>
>> > SS> Так как бекенды по сравнению с nginx сильно медленные в целом и<br>
>> > SS> неасинхронные, хочется не проксировать *каждый* запрос на них, а<br>
>> > SS> задействовать http_memcached_module.<br>
>> > SS> Не знаю как составить ключ $memcached_key<br>
>> > "parked#test-host.tld#ru,en"<br>
>> > SS> из заголовков<br>
>> ><br>
>> > SS> Host: test-host.tld<br>
>> > SS> Accept-Language: ru-ru;q=1.0,en-us;q=0.9,*;q=0.8<br>
>> ><br>
>> > SS> хост понятно, это $host. И то, от него надо откусить www. если есть.<br>
>> ><br>
>> > SS> Уверен, что многие сталкивались с такой задачкой. Есть ли готовые<br>
>> > рецепты?<br>
>> ><br>
>> > SS> Писать свой сишный модуль не подходит.<br>
>> ><br>
>> > SS> Решаема ли задача в таких условиях?<br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> > --<br>
>> ><br>
>> > С уважением,<br>
>> > Михаил Монашёв, SoftSearch.ru<br>
>> > mailto:<a href="mailto:postmaster@softsearch.ru">postmaster@softsearch.ru</a><br>
>> > ICQ# 166233339<br>
>> > <a href="http://michael.mindmix.ru/" target="_blank">http://michael.mindmix.ru/</a><br>
>> > Без бэкапа по жизни.<br>
>> ><br>
>> ><br>
>> ><br>
><br>
><br>
><br>
> --<br>
> С уважением, Борис Долгов.<br>
> icq 77556665<br>
> e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>
><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>С уважением, Борис Долгов.<br>icq 77556665<br>e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>