Можно ли создавать МЕЖДУНАРОДНЫЕ постоянные ссылки?

StackOverflow https://stackoverflow.com/questions/127144

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Например.для английских фраз это не проблема, например. /продукт/какое-то название/

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

Я создаю международный сайт, и одно из требований — иметь удобочитаемые URL-адреса.Спасибо за каждый комментарий

Это было полезно?

Решение

Как насчет какой-то схемы, такой как/productId/{product-id-number}/some-title/где сайт смотрит на {номер}, и полностью игнорирует часть «какая-то титла».Вы можете поместить это на любой язык или в любую кодировку, которая вам нравится, потому что она не используется.

Другие советы

Символы, не входящие в набор ISO Latin-1, не допускаются в URL-адресах в соответствии с эта спецификация, поэтому китайские струны сразу же исчезнут.

Если название продукта может быть локализовано, вы можете использовать URL-адреса, например <DOMAIN>/<LANGUAGE>/DIR/<PRODUCT_TRANSLATED>, например:

http://www.example.com/en/products/cat/
http://www.example.com/fr/products/chat/

в сопровождении mod_rewrite правило, влекущее за собой:

RewriteRule ^([a-z]+)/product/([a-z]+)? product_lookup.php?lang=$1&product=$2

В первом примере выше это правило будет вызывать product_lookup.php?lang=ru&product=кот.Внутри этого скрипта вы можете получить доступ к внутренней системе перевода (из lang параметр, en в данном случае), чтобы выполнить тот же перевод, что и на стороне пользователя, например, «Чат» на французской странице, «Кошка» на английском и т. д.

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

  • английский <=> арабский
  • английский <=> китайский
  • английский <=> русский

Взгляни на Википедия.Они используют национальные символы в URL-адресах.

Например, URL домашней страницы на русском языке: http://ru.wikipedia.org/wiki/Заглавная_страница.Браузер прозрачно кодирует все символы, отличные от ASCII, и заменяет их их кодами при отправке URL-адреса на сервер.Но на веб-странице все URL-адреса читабельны.

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

Обычно я транслитерирую символы, отличные от ascii.Например, «täst» станет «taest».GNU iconv может сделать это за вас (я уверен, что есть и другие библиотеки):

$ echo täst | iconv -t 'ascii//translit'
taest

Увы, эти транслитерации зависят от локали:в других языках, кроме немецкого, «ä» можно транслитерировать, например, просто как «a».Но с другой стороны, для каждого (обычно используемого) набора символов в ASCII должна быть транслитерация.

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

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

foo.com/cat потребуется найти перевод слов «cat», «gato», «neko» и т. д.

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

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

Итак, насколько я вижу, невозможно использовать иностранные символы в постоянной ссылке, поскольку это не разрешено сертификацией URL-адреса.

Что вы думаете о кодировании специальных символов?тогда эти URL-адреса распознаются Google?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top