Pull to refresh

Comments 48

есть перевод на украинский
example.com/uk-us/
Исправьте
UK — United Kingdom / UA — Ukraine
UA используется для обозначения страны и в качестве домена первого уровня. Украинский язык обозначается именно как uk.
А для обозначения Великобритании используется сокращение GB.

cat /usr/share/i18n/SUPPORTED
странно, ну да ладно. Просто не привычно
UA — Украина по ISO 3166-1, uk — украинский язык по ISO 639-1.
А что непривычно? Вы привыкли, что языки кодируют кодами стран? Тогда CA — это определенно канадский, а 100500 языков индии не имеют кодов :)
Friday все верно написал, я не зря указываю всегда последовательность «язык — страна», потому что именно в такой последовательности правильно их размещать. К этому нужно внимательно относиться, потому что в некоторых случаях возможны ошибки, которые тяжело будет обнаружить, например, /ru-fr/
Правильные коды по ссылке в конце статьи можно посмотреть.
Нет! Никогда не определяйте мой язык по IP! Я же передаю отличные заголовки (accept-language:en-US,en;q=0.8). Если я понимаю интерфейс моего браузера на английском, я пойму и сайт на английском.
Тут речь прежде всего о региональных сайтах. Регион определяется по IP, язык должен браться из настроек браузера. Смысл регионального сайта — свои контактные данные, налогообложение, валюта цен, сами цены, собственный список товаров, если это интернет-магазин.
Так что по IP никто язык и не определяет.
К сожалению, иногда определяют. На определение региона согласен, хотя предлагалось «на основе данных о стране посетителя мы показываем ему версию сайта на самом распространенном языке в данной стране». Хорошо в статье то, что она привлекает внимание к нетождественности региона и языка, но механизмы выбора умолчания могли бы быть умнее.
Вы попробуйте хотя бы месяц по миру поездить. Правило простое — использовать ТОЛЬКО хедеры!
Плохая идея. Интерфейс браузера у меня тоже на английском, но это не означает, что мне интересны именно английские версии сайтов. Да, в настройках браузера язык передаваемый в заголовках настраивается, но тем не менее.
Плохая идея — это автоматически менять язык гугла два раза в день с французского на немецкий, когда я еду из французской гостиницы в Женеву и обратно. Плохая идея — это писать на яндекс-маркете «мало предложений с доставкой в регион: Женева». Плохая идея — это заставлять меня выбрать региональный сайт производителя принтера, чтобы потом качать драйверы всё равно с международного. К счастью, большинство сайтов настраивается, но ведь куда проще один раз настроить свой браузер (или ни разу, если сразу использовать его на родном языке).
Но ведь мы определяем регион только при первом заходе, а потом сохраняем его и больше не меняем? У Гугла схема сложнее, но обычному сайту это вряд ли нужно. Определили регион, сохранили в настройках и все.
Вот и берите данные из хедеров.
UFO just landed and posted this here
Это далеко не всегда так. Множество людей используют английские версии браузера или Фотошопа, при этом они очень далеки от полного понимания языка. Часто так делают, когда хотят нивелировать возможные неточности перевода интерфейса. А настройкой передаваемых заголовков языка занимается, мне кажется, очень мало людей. Поэтому предложена простейшая схема работы, при желании, конечно, ее можно уточнять дальше. Например, определять область Украины и для западных по умолчанию предлагать на украинском, а для восточных — на русском, если сайт работает в Канаде, определять город и показывать для некоторых из них сайт на немецком или итальянском. Возможностей для настройки тут предостаточно.
Браузером и на китайском можно будет пользоваться, о каких неточностях в переводе речь?
Заголовки автоматически меняются в зависимости от языка интерфейса браузера, почти всегда настраивать больше ничего не нужно.
Речь идет о том, что иногда английские версии программ ставятся русскоговорящими пользователями просто чтобы не было корявого перевода интерфейса с английского на русский, например. В результате вы можете пользоваться браузером на английском, будучи очень далеко от отличного понимания английского текста. И если сайт будет вам открываться на английском только потому, что интерфейс вашего браузера на английском, это часто приведет к закрытию такого сайта пользователем («что это за американский сайт открылся?»)
Если ещё с качеством украинского перевода я кое-как могу согласиться (хотя пользуюсь Opera/FF/Chrome везде приличный перевод), то с русским… вы серьезно?

Не верю, что рядовой пользователь не понимая английского будет ставить английский интерфейс браузера из-за неточностей русского перевода, ну бред же.

Ваша позиция в том, что вы против того, чтобы отдавать страницу на языке отличном от интерфейса браузера (мне логичным кажется противоположное)?
1. Вам может это быть не очевидным для браузера, но почти все дизайнеры используют программы с английским интерфейсом, при этом назвать их всех свободно владеющими языком не получится. Например, обучающие материалы идут с примерами только на английском. Насчет браузера — да, знаю людей, принципиально использующих только английские версии программ. Естественно, никакие они не native speakers.

2. Да нет же, я пытаюсь только сказать, что завязывание языка сайта полностью на язык интерфейса браузера не даст 100% попадания в действительно родной язык пользователя. Более того, я не уверен, что этот способ даст более 50% попаданий, чтобы его можно было рекомендовать как основу. Вполне может быть, что вы правы и надо отдавать исходя из языка интерфейса, но тут нужна статистика.
принципиально использующих только английские версии программ

Вот и получают принципиально аналогичный контент (если что — могут и поправить приоритеты языков в Accept-Language на такой случай).

Вероятность попадания полагаясь на язык браузера имхо выше, чем на что угодно другое кроме ручного выбора.

Заголовки браузера — это простой и относительно надежный источник информации об языковых предпочтениях пользователя.
А вот и статистика:

image

То есть если мы будем выдавать всем пользователям английских версий браузеров сайт на английском языке, мы принимаем, что почти для 5% всех пользователей Рунета родным языком является английский. Вы считаете это похожим на правду? Для каждого двадцатого родной язык — английский?
Я считаю, что 5% ваших посетителей вполне может понять английский интерфейс и найти кнопку переключения на русский.

И цифра 65+26% сильно выше, чем

не уверен, что этот способ даст более 50% попаданий


И на конец, если все будут пользоваться таким механизмом — то станет привычным выставлять вручную русские заголовки, если хочется английский интерфейс.
а почему бы не показывать на том языке, который указан наиболее предпочитаемым в Accept-languages?
Ещё представлять многоязычные страницы можно с помощью Open Graph protocol:

<meta content="uk_UA" property="og:locale">
<meta content="en_US" property="og:locale:alternate">
<meta content="ru_RU" property="og:locale:alternate">

Такое понимает Facebook, и отправляет разные заголовки для того, чтобы получить содержимое на разных языках, надеюсь поисковики тоже научатся.

А ещё можно отправлять такие заголовки:

header('Vary: Content-Language,User-Agent,Cookie');

Content-Language значит, что содержимое может меняться в зависимости от языка, такое должен понимать Google.

Где нашел так сразу не скажу, но копал как-то в этом направлении.
Я сейчас, наверное, выскажу глупую идею, но всё же:
а почему бы не сделать все возможные варианты «язык-страна» — взять описание на желаемом языке и подставить к нему региональную особенность (цена, комплектация, условия)?
Пользователю показывать такую страницу, которую он может принять заголовком 'Accept-Language' + IP-адрес, предоставив возможность выбора, если его не удовлетворит автоматика.
Примеры:
— для 'Accept-Language: ru-RU,en-US;', но IP пользователя из России, показать 'ru-RU':
Ноутбук. 3 ядра, 3 гига! Цена 30000 руб.

— для 'Accept-Language: en-US;', но IP пользователя из России, показать 'en-RU':
Laptop. 3 Core, 3 GB! Price 30,000 RUR ($945.77)

— для 'Accept-Language: ru-RU,en-US;', но IP пользователя из США, показать 'ru-US':
Ноутбук. 3 ядра, 3 гига! Цена $630.51 (20000 руб.)

— для 'Accept-Language: en-US;', но IP пользователя из США, показать 'en-US':
Laptop. 3 Core, 3 GB! Price $630.51
> связки «язык — страна». Естественно, что найти нужное на странице с такой простыней текста будет затруднительно.
Придумали проблему, смешали сущности, а теперь боремся (rofl). Достаточно просто 2 выбора: регион (не обязательно — тут вообще автоопределение справится в большинстве случаев) + все языки (от региона только «дефолтовый»).
Во-первых, это не придуманная проблема, на сайтах указанных крупных ИТ-компаний этот вопрос не решен.

Во-вторых, простого выбора не достаточно, если вы не объясните структуру вашего сайта поисковой машине, все ваше автоопределение не будет играть никакой роли, потому что поисковик автоматом будет отправлять всех пользователей, которые ввели запрос на русском сразу на /ru-ru/, вне зависимости от вашего географического положения. А остальные страницы вашего сайта на русском он просто посчитает дублями и не будет их никогда выводить в результатах поиска.
Выделяем проблему: иногда регион пользователя и его язык не совпадают.
Сразу рождается решение: держать отдельно языковые данные, отдельно локаль.
Тогда в ПИ будет всего две кнопки: «сменить язык» и «сменить регион».
И не нужно будет плодить парные страницы.

Различать эти кнопки как?
Чем/кем вы хотите из различать? Если человеком, то имхо, семантическая разница между понятиями языка и региона и так понятна. Вот я, к примеру, в Гонконге выберу локаль Гонконг, а язык — русский.

Ну а если различать скриптом, то — как Вам удобно.
Визуально как их пользователю различать? Когда страна однозначно соответствует языку, то общепринято выводить флаг страны для выбора языка. То есть человек видит страницу на непонятном языке и видит где-то вверху флаг, жамкает на него и появляется список стран (с их флагами). А как визуально отделить выбор языка от выбора страны?
Вы же сами сказали, страну выбирать флагом. Ну а для языков давно придуманы двухбуквенные коды. Можно их еще и расшифровывать, если хотите.
Да, жесткая привязка языка к региону очень раздражает (я в Нидерландах, но почти не знаю голландского).

Лучшее решение пока я видел на chainreactioncycles.com — там три независимых настройки: страна, язык и валюта.
И на skyscanner тоже все три параметра настраиваются
Не по теме но заявление «преобладающий язык общения на Украине — русский» вкорне неверно. Не бросайтесь такими утверждениями
«В обласных центрах» это уж никак не «преобладающий язык общения на Украине».
К тому же рассматривать википедию как источник достоверной информации, тем более рускоязывчную вики в вопросах украинского языка, нецелесообразно. Есть уйма прецендентов для спора :)
Наверно, мы в разной Украине живем :)
Я тоже согласен — областные центры, это еще не вся Украина, в регионах преобладает украинский язык. Да и то — областные центры центральных, восточных регионов, ну и Крым, в остальных процент куда меньше
Не холивара ради, а ради статистики: имею немного популярный среди определенного круга людей (бухалтера, рабочие, частные предпрениматели) сайт в Украине, делюсь статистикой по языках, как настроено в браузере посетителя:

1. 87% — ru, ru-ru, ru-ua (последний — только 8 посетителей выставили в ОС Android)
2. 11,2% — uk, uk-ua (у меня — uk)

Выводы напрашиваются такие: украиноязычные пользователи или не знают о такой возможности выбора языка в браузере, или им и так хорошо и понятно, или лентяи, или их просто мало. Последний вариант имеет право на жизнь, так как для браузера Chrome, где при установке в основном предлагается выбор языка интерфейса, 82% — ru и 17% — uk
У большинства пиратская русскоязычная ОС, сборка скачанная с какого нибудь торента. Это же и влияет и на язык браузеров)
Имхо:
Не важно, как определять язык. Главное, что бы была на видном месте функция смены языка и валюты. А то сейчас, с последним проблема. Иногда думаешь, как поменять регион и язык.
НИКОГДА НЕ ОПРЕДЕЛЯЙТЕ ЛОКАЛЬ ПО IP!!! НИКОГДА!

Абсолютно все браузеры во всех операционных системах уже присылают вам полную локаль, не е будьте гуглом — не бесите пользователей!
Точно! Спасибо за уточнение, добавлю в статью. Интересно, когда Яндекс добавит.
Есть еще один вопрос, который должен решаться вместе с регионом и языком — часовой пояс. Было бы полезно продолжение статьи.
Да, часовые пояса тоже смежная тема, с которой не редко возникают различный вопросы. Тут было обсуждение по этой теме.
Only those users with full accounts are able to leave comments. Log in, please.