Pergunta

eu queria saber como você lida com permalinks em sites internacionais. Por permalink eu quero dizer alguma ligação que é único e legível.

por exemplo. para frases inglesas seu problema nenhum exemplo / produto / alguns-título /

mas o que você faria se o título produto está em por exemplo língua chinesa ?? como você lida com este problema?

Estou implementando um site internacional e um requisito é ter URLs legíveis. Obrigado por todos os comentários

Foi útil?

Solução

Que tal um esquema como / productid / {productid-number} / some-título / onde os olhares site no {number} e ignora a parte 'some-título' inteiramente. Você pode colocar isso em qualquer idioma ou codificação você gosta, porque ele não está sendo usado.

Outras dicas

caracteres fora do conjunto ISO Latin-1 não são permitidos em URLs de acordo com esta especificação , então cordas chineses estariam fora imediatamente.

Quando o nome do produto pode ser localizado, você pode usar URLs como <DOMAIN>/<LANGUAGE>/DIR/<PRODUCT_TRANSLATED>, por exemplo:.

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

mod_rewrite regra para o efeito:

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

Para o primeiro exemplo acima, esta regra vai chamar product_lookup.php?lang=en&product=cat. Dentro deste roteiro é onde você iria acessar o mecanismo de tradução interna (a partir do parâmetro lang, en , neste caso) para fazer a mesma tradução que você faz no lado voltado para o usuário para traduzir, digamos, "Chat "na página francês, 'gato' no Inglês, etc.

Usando uma API tradução externa seria uma boa idéia, mas complicado para obter um confiável que funciona corretamente em seu domínio do negócio. Google abriram um tradução API , mas de momento apenas suporta um número limitado de idiomas.

  • Inglês <=> árabe
  • Inglês <=> chinês
  • Inglês <=> russo

Dê uma olhada Wikipedia . Eles usam caracteres nacionais em URLs.

Por exemplo, Russian URL home page é: http://ru.wikipedia.org/wiki/?????????_???????? . O navegador transparente codifica todos os caracteres não-ASCII e substitui-los por seus códigos quando o envio de URL para o servidor. Mas na página web todas as URLs são legível.

Assim você não precisa fazer nada especial - apenas colocar seus nomes de produtos em URLs como é. O servidor deve ser capaz de decodificar-los para o seu aplicativo automaticamente.

Normalmente, eu transcrever os caracteres não-ascii. Por exemplo, "TAST" se tornaria "taest". GNU iconv pode fazer isso por você (eu tenho certeza que existem outras bibliotecas):

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

Infelizmente, estes transliterações são locale dependente: em outras línguas além do alemão, 'A' poderia ser translitertated como simplesmente 'a', por exemplo. Mas, por outro lado, deve haver uma transliteração para cada (comumente usado) conjunto de caracteres em ASCII.

Se a memória serve, você só é capaz de usar letras Inglês em URLs. Há uma discussão para mudar isso, mas estou bastante positivo que não foi implementado ainda.

Dito isso, você precisa ter um olhar para cima da tabela onde traduções atribuir de produtos / títulos em qualquer palavra que eles vão estar em outro idioma. Por exemplo:

foo.com/cat vai precisar de um olhar tradução para "gato" "gato" "neko" etc.

Em seguida, o HTTP módulo que é analisar aqueles que estão lendo objetos em um url exata humana vai saber qual página para servir com base nas traduções.

Criação de um olhar-se para tal coisa parece um estouro para mim. Não consigo criar uma pesquisa para todas as diferentes palavras em todos os idiomas. Talvez acessando uma API tradução seria uma boa idéia.

Assim, tanto quanto eu posso ver que não é possível a utilização de caracteres estrangeiros no permalink como os sepecs da URL não permite isso.

O que você acha de codificar os caracteres especiais? são essas URLs reconhecido pelo Google, então?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top