Question

Je me demandais comment vous gérez les permaliens sur les sites internationaux. Par permalien, j'entends un lien unique et lisible par l'homme.

E.g. pour les phrases en anglais, cela ne pose aucun problème, par exemple / product / some-title /

mais que faites-vous si le titre du produit est en chinois, par exemple? Comment gérez-vous ce problème?

J'implémente un site international et l'une des exigences est d'avoir des URL lisibles par l'homme. Merci pour chaque commentaire

Était-ce utile?

La solution

Qu'en est-il des schémas comme / productid / {product-id-number} / some-title / où le site regarde le {numéro} et ignore totalement la partie 'un titre'. Vous pouvez le mettre dans la langue ou le codage de votre choix, car il n'est pas utilisé.

Autres conseils

Les caractères en dehors du jeu ISO Latin-1 ne sont pas autorisés dans les URL conformément à cette spécification , afin que les chaînes chinoises soient immédiatement supprimées.

Lorsque le nom du produit peut être localisé, vous pouvez utiliser des URL telles que <DOMAIN>/<LANGUAGE>/DIR/<PRODUCT_TRANSLATED>, par exemple:

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

accompagné d'une mod_rewrite règle à l'effet de:

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

Pour le premier exemple ci-dessus, cette règle appelle product_lookup.php?lang=en&product=cat. Dans ce script, vous accéderez au moteur de traduction interne (à partir du paramètre lang, en dans ce cas) pour effectuer la traduction que vous effectuez du côté de l'utilisateur, dites, " Discuter " sur la page française, " Cat " sur l'anglais, etc.

L'utilisation d'une API de traduction externe serait une bonne idée, mais il serait difficile d'obtenir une interface fiable qui fonctionne correctement dans votre domaine d'activité. Google a ouvert une API de traduction , mais ne prend actuellement en charge qu'un nombre limité de langues.

  
      
  • anglais < = > Arabe
  •   
  • anglais < = > Chinois
  •   
  • anglais < = > Russe
  •   

Consultez Wikipedia . Ils utilisent des caractères nationaux dans les URL.

Par exemple, l’URL de la page d’accueil en russe est la suivante: http://ru.wikipedia.org/wiki/ & # 1047; & # 1072; & # 1075; & # 1083; & # 1072; & # 1074; & # 1085; & # 1072; & # 1103; _ & # 1089; & # 1090; & # 1088; & # 1072; & # 1085; & # 1080; & # 1094; & # 1072; . Le navigateur code de manière transparente tous les caractères non-ASCII et les remplace par leurs codes lors de l'envoi d'URL au serveur. Mais sur la page Web, toutes les URL sont lisibles par l'homme.

Donc, vous n'avez rien de spécial à faire: il vous suffit de mettre les noms de vos produits dans les URL tels quels. Le serveur Web devrait pouvoir les décoder automatiquement pour votre application.

Je translittère généralement les caractères non ascii. Par exemple, & Quot; t & # 228; st & Quot; deviendrait & "; taest &"; GNU iconv peut le faire pour vous (je suis sûr qu'il existe d'autres bibliothèques):

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

Hélas, ces translittérations dépendent des paramètres régionaux: dans des langues autres que l'allemand, '& # 228;' pourrait être traduit comme simplement «a», par exemple. Mais de l’autre côté, il devrait exister une translittération pour chaque jeu de caractères (couramment utilisé) en ASCII.

Si la mémoire est bonne, vous ne pouvez utiliser que des lettres anglaises dans les URL. Il y a une discussion pour changer cela, mais je suis assez convaincu que cela n'a pas encore été mis en œuvre.

Cela dit, vous auriez besoin d’un tableau où vous affecteriez les traductions des produits / titres dans n’importe quel mot qu’ils seront dans l’autre langue. Par exemple:

foo.com/cat aura besoin d'une recherche de traduction pour " cat " " gato " " neko " etc.

Ensuite, votre module HTTP qui analyse ces objets de lecture humains dans une URL exacte saura quelle page utiliser en fonction des traductions.

Créer un look up pour une telle chose me semble un débordement. Je ne peux pas créer de recherche pour tous les mots différents dans toutes les langues. Accéder à une API de traduction serait peut-être une bonne idée.

Donc, autant que je sache, il n’est pas possible d’utiliser des caractères étrangers dans le permalien, car les sepecs de l’URL ne le permettent pas.

Que pensez-vous de l’encodage des caractères spéciaux? ces URL sont-elles reconnues par Google alors?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top