Каковы наилучшие практики для многоязычных сайтов?

Я хочу создать многоязычный сайт, чтобы все или почти все страницы были доступны в 2 или более переводах. Каковы наилучшие практики?

Например, я рассматриваю эти механизмы выбора языка:

  • Выбор предпочтительного языка на основе файлов cookie.
  • На основе заголовка Accept-Language, если cookie не установлен.
  • На основе GeoIP в противном случае (возможно).

Есть ли что-нибудь еще?

Как должны выполняться разные переводы?

  • as LANG.example.com/page
  • как example.com/LANG/page
  • as example.com/page?hl=LANG
  • ...
  • любой из перечисленных выше с перенаправлением на example.com/page? (Кажется, обескуражен)

Как обеспечить правильную индексацию всех переводов?

  • Файлы Sitemap со всеми страницами + правильный Content-Language заголовок достаточно?

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

  • список доступных языков в заголовке/нижнем колонтитуле/боковой панели (например, Wikipedia).
  • поставьте селектор "Выбрать язык" рядом с содержимым

Какова наилучшая политика для решения проблем с отсутствующими/устаревшими переводами?

  • вообще не отображать отсутствующие страницы или отображать страницу на другом языке?
  • отображение старого перевода, старый перевод с предупреждением или страница на другом языке?

Что еще я должен учитывать? Что мне делать и чего я определенно не должен делать?

Ответ 1

В дополнение к ответам @Quassnoi убедитесь, что вы используете стандартные идентификаторы языка RFC 4646 (например, EN-US, DE-AT); вы, возможно, уже знаете об этом. Проект CLDR является отличным хранилищем данных интернационализации (дополнительные данные действительно полезны).

Если перевод определенной страницы недоступен, используйте механизм возврата языка к нейтральному языку; например, "DE-AT", "DE", "(нейтральный, например" EN").

Самые последние браузеры и основные операционные системы будут правильно отображать все символы, необходимые для списка выбора локали, если страница закодирована правильно (я бы рекомендовал, чтобы все страницы были UTF-8). Убедитесь, что список локалей содержит как собственные, так и текущие имена языков, чтобы позволить как родным, так и неродным динамикам просматривать указанные переводы, например. "Deutsch (немецкий)", если текущий язык - EN- *.

Многие сайты используют значок флага для отображения текущей локали, но это более актуально для местоположения, и некоторые люди могут быть оскорблены, если вы показываете только доминирующий флаг (например, флаг США или Великобритании для английского языка).

Возможно, стоит иметь более видимый (полуграфический) селектор локали на домашней странице, если не было представлено ни одного файла cookie locale, используя комбинацию GeoIP и Accept-Language для определения выбора локали по умолчанию.

Полусвязь: если ваши пользователи находятся в разных часовых поясах, они включают предпочтение зоны в своем профиле учетной записи для отображения значений времени в свое местное время. И сохраняйте все отметки времени с помощью UTC.

Ответ 2

Решите, нужна ли вам поддержка языков, для которых требуются двухбайтовые символы на раннем этапе (китайский, японский, корейский и т.д.), предпочтительным вариантом является Unicode. Это может быть утомительным для изменения позже, особенно если у вас есть база данных, которая не использует unicode.

Ответ 3

  • Выбор cookie на основе файлов cookie. предпочтительный язык.
  • На основе заголовка Accept-Language, если cookie не установлен.

Эти два, которые вы должны поддерживать.

Поместите большой английский баннер в верхнюю часть страницы, на которой написано Эта страница на английском языке.

как example.com/LANG/page

Это лучший выбор.

LANG.example.com не подходит для автозаполнения, а вопросительные знаки выглядят уродливо.

список доступных языков в заголовке/нижнем колонтитуле/боковой панели (например, Wikipedia)

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

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

отображение старого перевода с предупреждением

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