Pregunta

Me preguntaba cómo se manejan los enlaces permanentes en sitios internacionales.Por enlace permanente me refiero a algún enlace que sea único y legible por humanos.

P.ej.para frases en inglés no hay problema, p.e. /producto/algun-titulo/

pero ¿qué haces si el título del producto está, por ejemplo, en idioma chino?¿Cómo abordas este problema?

Estoy implementando un sitio internacional y un requisito es tener URL legibles por humanos.Gracias por cada comentario

¿Fue útil?

Solución

¿Qué tal algún esquema como/productid/{producto-id-number}/algún título/donde el sitio mira el {número} e ignora la parte 'algún título' por completo.Puedes ponerlo en el idioma o codificación que quieras, porque no se está utilizando.

Otros consejos

Los caracteres fuera del conjunto ISO Latin-1 no están permitidos en las URL según esta especificación, por lo que las cadenas chinas saldrían inmediatamente.

Cuando se puede localizar el nombre del producto, puede utilizar URL como <DOMAIN>/<LANGUAGE>/DIR/<PRODUCT_TRANSLATED>, p.ej.:

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

acompañado por un mod_reescritura norma al efecto de:

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

Para el primer ejemplo anterior, esta regla llamará product_lookup.php?lang=es&product=gato.Dentro de este script es donde accedería al motor de traducción interno (desde el lang parámetro, en en este caso) para hacer la misma traducción que hace en el lado del usuario para traducir, digamos, "Chat" en la página francesa, "Cat" en la página inglesa, etc.

Usar una API de traducción externa sería una buena idea, pero es complicado conseguir una API confiable que funcione correctamente en el dominio de su empresa.Google ha abierto una API de traducción, pero actualmente solo admite un número limitado de idiomas.

  • Inglés <=> Árabe
  • Inglés <=> chino
  • Inglés <=> Ruso

Echa un vistazo a Wikipedia.Utilizan caracteres nacionales en las URL.

Por ejemplo, la URL de la página de inicio rusa es: http://ru.wikipedia.org/wiki/Заглавная_страница.El navegador codifica de forma transparente todos los caracteres que no son ASCII y los reemplaza por sus códigos al enviar la URL al servidor.Pero en la página web todas las URL son legibles por humanos.

Por lo tanto, no necesita hacer nada especial: simplemente coloque los nombres de sus productos en las URL tal como están.El servidor web debería poder decodificarlos automáticamente para su aplicación.

Normalmente translitero los caracteres que no son ASCII.Por ejemplo, "täst" se convertiría en "taest".GNU iconv puede hacer esto por usted (estoy seguro de que hay otras bibliotecas):

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

Por desgracia, estas transliteraciones dependen de la ubicación:En otros idiomas además del alemán, 'ä' podría transliterarse simplemente como 'a', por ejemplo.Pero, por otro lado, debería haber una transliteración para cada carácter (de uso común) establecido en ASCII.

Si la memoria no me falla, solo puedes usar letras en inglés en las URL.Hay una discusión para cambiar eso, pero estoy bastante seguro de que aún no se ha implementado.

Dicho esto, necesitaría tener una tabla de consulta donde asigne traducciones de productos/títulos a cualquier palabra que estarán en el otro idioma.Por ejemplo:

foo.com/cat necesitará una búsqueda de traducción para "cat", "gato", "neko", etc.

Luego, su módulo HTTP que analiza esos objetos de lectura humana en una URL exacta sabrá qué página servir en función de las traducciones.

Crear una búsqueda para tal cosa me parece un desbordamiento.No puedo crear una búsqueda de todas las palabras diferentes en todos los idiomas.Quizás acceder a una API de traducción sería una buena idea.

Por lo que puedo ver, no es posible utilizar caracteres extranjeros en el enlace permanente ya que las especificaciones de la URL no lo permiten.

¿Qué opinas de codificar los caracteres especiales?¿Entonces Google reconoce esas URL?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top