2008-09-24 5 views
3

Je me demandais comment vous traitez les permaliens sur les sites internationaux. Par permalink je veux dire un lien qui est unique et lisible par l'homme.Est-il possible de créer des permaliens INTERNATIONAUX?

E.g. pour les phrases en anglais, il n'y a pas de 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? Je suis en train de mettre en œuvre un site international et une exigence est d'avoir des URL lisibles par l'homme. Merci pour chaque commentaire

Répondre

1

Que diriez-vous comme système/ProductID/{produit id- number}/some-title/ où le site regarde le {number} et ignore complètement la partie 'some-title'. Vous pouvez le mettre dans la langue ou l'encodage que vous aimez, car il n'est pas utilisé.

+0

C'est une très bonne idée et intereseting. Cela indique mon problème. 1. l'url est illégale alors, n'est-ce pas? permet de dire:/product/122/prodöktä/ 2. est-ce que google reconnaît ces URL alors? – Michal

+0

Cela semble tout à fait possible - http://dmoz.org.il/ - bien que vous fassiez mieux de les encoder en UTF8 et de voir s'ils sont décodés dans le navigateur. Google et al feraient aussi probablement mieux avec eux. –

+0

Je pense que c'est comme ça que je vais le faire. Je vais supprimer tous les caractères spéciaux comme par ex./$ "', etc du titre et bung le titre directement dans le lien.Mais en demandant la chaîne de requête je vais ignorer le titre et utiliser seulement l'ID – Michal

0

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 certain que ce n'est pas encore fait. Cela dit, vous devez avoir une table de consultation où vous attribuez des traductions de produits/titres dans n'importe quel mot qu'ils seront dans l'autre langue. Par exemple:

foo.com/cat aura besoin d'une traduction regarder pour « chat » « gato » « neko » etc.

Ensuite, votre module HTTP qui est l'analyse de ces objets de lecture humains dans une URL exacte savoir quelle page servir en fonction des traductions.

0

Créer une recherche pour une telle chose semble un débordement pour moi. Je ne peux pas créer une recherche pour tous les mots différents dans toutes les langues. Peut-être que l'accès à une API de traduction serait une bonne idée. Donc, autant que je peux voir qu'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? sont ces URL reconnues par Google alors?

+0

Une API de traduction est une bonne idée. En ce qui concerne les caractères spéciaux et google - c'est en dehors de mon champ de connaissance. Pardon. –

2

Les caractères en dehors de l'ensemble ISO Latin-1 ne sont pas autorisés dans les URL selon this spec, donc les chaînes chinoises seraient immédiatement désactivées.

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

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

accompagné d'une règle mod_rewrite à 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 appellera product_lookup.php?lang=en&product=cat. Dans ce script, vous pouvez accéder au moteur de traduction interne (à partir du paramètre lang, en dans ce cas) pour faire la même traduction que vous faites du côté de l'utilisateur pour traduire, par exemple, "Chat" sur la page en français L'utilisation d'une API de traduction externe serait une bonne idée, mais difficile à obtenir un fiable qui fonctionne correctement dans votre domaine d'activité. Google a ouvert un translation API, mais il ne prend actuellement en charge qu'un nombre limité de langues.

  • Anglais < => Arabe
  • Anglais < => Chinois
  • anglais < => Russe
+0

http://www.example.com/fr/produits/chat/ aurait plus de sens que je réécrirais: RewriteRule^([az] +)/([az] +)/([az] +)? lookup.php? lang = $ 1 & type = $ 2 & item = $ 3 –

2

Je suis généralement translittérer les caractères non-ASCII. Par exemple, "täst" deviendrait "taest". GNU iconv peut le faire pour vous (je suis sûr qu'il ya d'autres bibliothèques):

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

Hélas, ces translittération dépendent des paramètres linguistiques: dans des langues autres que l'allemand, « A » pourrait être translitertated simplement comme « a » , par exemple. Mais de l'autre côté, il devrait y avoir une translittération pour chaque jeu de caractères (communément utilisé) en ASCII.

2

Jetez un oeil à Wikipedia. Ils utilisent des caractères nationaux dans les URL.

Par exemple, l'URL de la page d'accueil russe est: http://ru.wikipedia.org/wiki/Заглавная_страница. Le navigateur encode 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'utilisateur.

Vous n'avez donc pas besoin de faire quelque chose de spécial - il suffit de mettre les noms de vos produits dans les URL telles quelles. Le serveur web devrait être capable de les décoder automatiquement pour votre application.

+0

ouais c'est ce que j'ai décidé de faire. avoir à faire est de supprimer tous les caractères spéciaux comme par exemple # &/etc – Michal

Questions connexes