Есть ли способ рекомендовать пользователям локаль на основе местоположения?

Мой сайт в основном на английском, но иногда к нам заходят посетители из Японии. Discourse — мощный инструмент с точки зрения доступности на разных языках, однако я не раз сталкивался с тем, что пользователи не знают, что могут изменить локаль своего языка.

Это требует довольно сложной последовательности действий. Например, на мобильном устройстве:

  • откройте боковую панель с аватаром
  • нажмите на иконку пользователя
  • нажмите на иконку шестерёнки, помеченную на английском как “Preferences”
  • прокрутите вправо, чтобы увидеть седьмую настройку с иконкой монитора, помеченную как “Interface”
  • прокрутите вниз до четвёртой настройки, помеченной как “Interface language”

Теперь, если вы не знаете английский, но знаете, что такая настройка существует, вы, возможно, сможете найти её методом проб и ошибок, но даже в этом случае это будет непросто.

Мне нравится идея из Header Locale Selector, но для её просмотра нужен аккаунт (возможно ли вообще изменить локаль для анонимных посетителей?), к тому же она занимает очень ценное место в шапке для настройки, которая, как ожидается, будет использоваться 0–1 раз за всё время жизни пользователя.

Поэтому мой вопрос: есть ли у кого-нибудь умный способ предлагать новым пользователям (и в идеале анонимным) изменить настройки языка, особенно если они заходят из страны, где английский не является доминирующим?

Посмотрите интерфейс в том языке, который выбран в их браузере, когда включена опция set locale from accept language header.

Отлично, это именно то, на что я надеялся, спасибо!

Очень странно, что по умолчанию это отключено :thinking:

Я думаю, что это потому, что allow user locale по умолчанию также отключен.

Что для меня тоже не имеет смысла. Это выбор сделать сайт менее удобным и доступным для части пользователей без видимой причины (по крайней мере, я не вижу никакой разумной причины). Если бы это было включено по умолчанию, это не принесло бы никаких затрат пользователям, владеющим основным языком, и принесло бы пользу пользователям, для которых английский (в случае моего форума) является вторым языком. Это всё равно что настройка цвета, которая по умолчанию делает сайт черно-белым для небольшой части пользователей и включена по умолчанию.

Я думаю, что кастомизация вашего сайта становится гораздо более трудоёмкой, если вы позволяете пользователям выбирать свой локаль. Когда вы редактируете, например, приветственное сообщение, не предоставляя альтернативы для других локалей, вы меняете один текст. Если же вы разрешаете другие локации, вам нужно изменять его отдельно для каждого из них, и если вы об этом забудете, не все пользователи получат одинаковую информацию в сообщении. То же самое касается компонентов темы, таких как поисковый баннер или баннер с приветственной ссылкой. Когда вы смотрите на международный раздел Discourse Discover, вы можете увидеть скриншоты с баннером, использующим текст по умолчанию «Добро пожаловать в наше сообщество». Когда я посещал эти форумы, я заметил, что многие из них кастомизировали текст баннера, но не сделали этого для всех локалей. Поэтому, хотя я вижу кастомизированный текст, потому что компонент темы не предлагает текст по умолчанию на немецком языке, пользователь с языком браузера, установленным на английский (США), видит текст по умолчанию — именно так и делаются скриншоты. Таким образом, на данный момент это может затрагивать только пользователей с английским (США) в качестве языка браузера, и переводить это не так уж и сложно. Но когда к компоненту добавят английский (Великобритания), администраторам придётся изменить эти строки тоже, а затем кто-то может добавить немецкий, и следующую строку придётся редактировать. Так что вам нужно не только помнить о необходимости изменять строку для разных локалей, но и замечать, когда добавляются новые локации, чтобы кастомизировать их. Разрешение других локалей может создать гораздо больше работы для администраторов. В сообществе, где люди общаются только на одном языке, это, вероятно, не стоит затраченных усилий. Пользователи всё равно вынуждены иметь дело с языком. Только интерфейс на их языке имеет little пользы.

Я считаю, что ваши примеры — это варианты реализации, которые не обязательно должны быть именно такими. Например, на каждом экземпляре есть локаль по умолчанию. Если важно, чтобы каждый пользователь получал абсолютно одинаковую информацию, то для каждого фрагмента текста проверяйте, переопределён ли текст на языке по умолчанию. Если он переопределён, а локаль пользователя не переопределена, отображайте текст на языке по умолчанию.

Или, альтернативно, не делайте этого вовсе. Оставьте всё как есть. Текст по умолчанию на каждом языке (или должен быть) разработан так, чтобы быть действительно хорошим. Не все пользователи получают полностью кастомизированный опыт; некоторые элементы на экране могут оказаться не совсем полезными. Но альтернатива — это когда 100% элементов нечитаемы и бесполезны.

В обоих случаях администратору нужно проделать ровно столько дополнительной работы, сколько он сам захочет. Если вы не владеете языком по умолчанию в совершенстве, то каждый переведённый для вас фрагмент текста — это чистая польза.

Мне кажется досадным, что так много усилий тратится на то, чтобы сделать Discourse глубоко многоязычной системой, но настройки по умолчанию, вероятно, сделают большинство сайтов исключительно одноязычными. Это также означает, что Discourse как программное обеспечение упускает возможность продемонстрировать себя как богатая многоязычная платформа потенциальным пользователям, поскольку, рискну предположить, большинство экземпляров работают исключительно на английском. На мой взгляд, это вопрос доступности.

Я полностью не согласен. У меня был пользователь из Южной Америки, который был чрезвычайно благодарен, когда я показал ему возможность смены локали интерфейса. Это определённо улучшило его опыт. Другой пользователь, приехавший из Японии, объяснил, что чувствовал себя запуганным, пытаясь написать пост на англоязычном сайте, и у него возникли большие трудности с загрузкой изображения. Он постоянно нажимал «Ответить» до того, как загрузка завершалась. Я проверил и заметил, что его локаль была установлена на английский, и это стало причиной создания этой темы.