Как лучше всего отображать язык в URL-адресе?

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

сейчас есть несколько мест, чтобы определить язык в URL-адрес:

    • www.example.com/en/articles/random
    • www.example.com/nl/articles/random
    • en.example.com/articles/random
    • nl.example.com/articles/random
    • www.example.com/articles/random?lang=en
    • www.example.com/articles/random?lang=nl

есть ли какой-либо предпочтительный способ показать это, или есть другой лучший способ, который я не включил?

11 ответов


Я скажу вам, что не лучшая практика-использование параметров (3-й). Заставить пользователей вводить сложный URL-адрес-это проблема.

ваши страницы могут внутренне использовать параметры GET для поиска lang, но использовать модуль перезаписи URL, доступный на вашем веб-сервере, чтобы сделать его простым, таким как 1 - й- www.mydomain.com/en/articles/random

даже второй в порядке, за исключением большинства пользователей введите доменное имя и нажмите Ctrl + Входить.

https://addons.mozilla.org/en-US/firefox/

http://msdn.microsoft.com/en-us/default.aspx

http://www.apple.com/in/

браузер Mozilla, Microsoft и Apple, находятся в трех разных уголках мира разработки программного обеспечения, с точки зрения.. что ж.. всё. Иногда я склонен думать, что эти три больших парня делают что-то, чтобы не соглашаться друг с другом. Но если ... --19-->они а следуя обычной практике, это должно иметь смысл...


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

  • подход 1: ИМХО хорошо, когда вы хотите запустить все статьи во всех языки одновременно. Зато, когда вы делаете изменения в одном месте, тебе понадобится ходить во все места и сделайте то же самое изменение.
  • подход 2: опрятный для польз как википедия, где разные языки имею в виду фактические разные веб-сайты ( статьи не перевод с один другому, а другой содержание)
  • подход 3: хороший выбор, если вы обычно запускают на каком-то языке, и переводы приходят позже (случай Google, например.) Вы можете иметь язык по умолчанию в случае язык не указан, или даже сохраните его в сеансе, чтобы сохранить его среди изменений страницы.

Я хотел бы добавить тот, который мы выбрали для www.openimages.eu:

4)
www.mydomain.com/articles/random.en
www.mydomain.com/articles/random.nl

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

Accept-Language nl,en;q=0.7,en-us;q=0.3

и по умолчанию служат ваши страницы на этом языке, если он доступен. Вы можете предоставить коммутатор для пользователей, чтобы сделать '.Эн 'или'.NL ' - вещь.


Я нашел хороший ресурс от Google о выборе, который вы можете сделать. Существует раздел с плюсами и минусами каждого метода, который вы можете использовать.

Я уже некоторое время борюсь с многоязычными веб-сайтами.

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


Я думаю, это будет зависеть от вашей среды. Вы создаете одни и те же страницы на нескольких языках с помощью веб-фреймворка с базой данных или у вас есть статические страницы?

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

2 особенно подходит, если вы вызываете перенаправление на уровне веб-сервера и имеет то преимущество, что позволяет URL-адреса из / без потенциальной "потери" настройки языка пользователя. Другими словами, ссылка на / home приведет вас к правильной языковой версии страницы "home".

последний вариант-сохранить язык в качестве предпочтения пользователя в файле cookie и не заполнять его в url-адресе вообще.


первый имеет больше смысла. Потому что, если кто-то хочет перейти непосредственно к вам на страницу, и он / она может просто ввести blabla.com/en и достичь того, чего он хочет...


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

для меня я бы предпочел третий вариант, так как это действительно та же страница, которая загружается, Вы просто изменяете содержимое с параметром GET. Использование отдельного URL (а не параметра) означало бы для меня, что это совершенно отдельная страница/ресурс, чего в данном случае не было бы. Вы также, вероятно, получите поисковые системы, индексирующие страницу несколько раз на различных языках и т. д. (Хотя, возможно, это то, чего вы хотите).


поисковые системы считают поддомены независимыми веб-сайтами. Я не уверен, как это влияет на SEO, хотя.


Я далек от знания "правильного" ответа (я предполагаю, что его нет), но, как вы просите комментариев, Вот мой:

URL (или URI) - это то, что описывает или идентифицирует ресурс. Если я правильно помню, URL-адрес не должен зависеть от как ресурс должен отображаться (HTML, XML, JSON и т. д.).

вы также можете рассмотреть язык как способ указать как ресурс должен быть отображается.

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


Если вы ищете "дружественные к поисковой системе" и "красивые" URL-адреса, вы должны избегать разоблаченных параметров GET. Они не выглядят так хорошо на глаз, как поддомен или подкаталог, и не совсем SEO-дружественные.

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


Я бы определенно пошел на

www.mydomain.com/articles/random?lang=en
www.mydomain.com/articles/random?lang=nl 

потому что более естественно сказать:"эта ссылка (полная ссылка) на английском или голландском языке".

в противном случае (домен/Lang/restof url) создает впечатление, что у вас есть какая-то структура, которая содержит разные вещи для en и nl. То же самое относится и к Лэнг.домен./..