Internationalization 有可能创建国际永久链接吗?

Internationalization 有可能创建国际永久链接吗?,internationalization,permalinks,Internationalization,Permalinks,我想知道你是如何处理国际网站上的永久链接的。我所说的永久链接是指一些独特的、人类可读的链接 例如,对于英语短语,这没有问题,例如/product/some title/ 但是如果产品名称是中文,你会怎么做?? 你如何处理这个问题 我正在实施一个国际网站和一个要求是有人类可读的网址。 感谢您的每一条评论如果内存不足,您只能在URL中使用英文字母。有人讨论要改变这一点,但我相当肯定的是,它尚未得到实施 也就是说,您需要有一个查找表,在该表中,您可以将产品/标题的翻译指定为其他语言中的任何单词。例如:

我想知道你是如何处理国际网站上的永久链接的。我所说的永久链接是指一些独特的、人类可读的链接

例如,对于英语短语,这没有问题,例如/product/some title/

但是如果产品名称是中文,你会怎么做?? 你如何处理这个问题

我正在实施一个国际网站和一个要求是有人类可读的网址。
感谢您的每一条评论

如果内存不足,您只能在URL中使用英文字母。有人讨论要改变这一点,但我相当肯定的是,它尚未得到实施

也就是说,您需要有一个查找表,在该表中,您可以将产品/标题的翻译指定为其他语言中的任何单词。例如:

foo.com/cat需要对“cat”“gato”“neko”等进行翻译查找


然后,您的HTTP模块正在将这些人工阅读对象解析为一个准确的url,它将根据翻译情况知道要为哪个页面提供服务。

创建这样的查找对我来说似乎是一个溢出。我无法为所有语言中的所有不同单词创建查找。也许访问翻译API是个好主意

因此,就我所知,在永久链接中使用外来字符是不可能的,因为URL的sepecs不允许这样做


你对特价商品的编码有什么看法?那么这些URL被谷歌识别了吗?

根据,URL中不允许使用ISO Latin-1集合之外的字符,因此中文字符串将立即被删除

在可以本地化产品名称的地方,您可以使用类似于
//DIR/
的URL,例如:

http://www.example.com/en/products/cat/
http://www.example.com/fr/products/chat/
附有一条规则,其效力如下:

RewriteRule ^([a-z]+)/product/([a-z]+)? product_lookup.php?lang=$1&product=$2
对于上面的第一个示例,此规则将调用
product\u lookup.php?lang=en&product=cat
。在这个脚本中,您可以访问内部翻译引擎(在本例中,从
lang
参数,
en
),执行与面向用户的翻译相同的翻译,比如法语页面上的“Chat”,英语页面上的“Cat”,等等

使用外部翻译API将是一个好主意,但要获得一个在您的业务领域中正常工作的可靠API却很棘手。谷歌已经打开了一个新的平台,但它目前只支持有限数量的语言

  • 英语阿拉伯语
  • 英汉
  • 英语俄语

像/productid/{productid number}/some title这样的方案怎么样/
网站查看{number}并完全忽略“某个标题”部分。你可以把它转换成你喜欢的任何语言或编码,因为它没有被使用。

我通常音译非ascii字符。例如,“täst”将变成“taest”。GNU iconv可以为您做到这一点(我确信还有其他库):

唉,这些音译依赖于语言环境:例如,在德语以外的语言中,“ä”可以译成简单的“a”。但另一方面,每一个(常用的)字符集都应该有一个音译,转换成ASCII。 他们在URL中使用国家字符

例如,俄语主页URL为:。浏览器对所有非ASCII字符进行透明编码,并在向服务器发送URL时将其替换为代码。 但在网页上,所有URL都是人类可读的

因此,您不需要做任何特殊的事情——只需按原样将产品名称输入URL即可。
Web服务器应该能够为您的应用程序自动解码它们。

翻译API是个好主意。至于特殊角色&谷歌——这超出了我的知识范围。对不起,这是一个非常好而且有趣的主意。这说明了我的问题。1.那么url是非法的,不是吗?比如说:/product/122/prodöktä/2。谷歌能识别这些URL吗?这看起来很有可能——不过你可以更好地将它们编码为UTF8,并查看它们是否在浏览器中被解码。谷歌等也可能会做得更好。我想这就是我将如何做到的。我将删除所有特殊字符,例如/$“,等,然后将标题直接插入链接。但是当请求查询字符串时,我将忽略标题,只使用ID。请确保在每个页面加载时确认URL的标题部分,这样人们就不会链接到。你也不想要重复的内容:是的,这就是我决定要做的。我要做的唯一一件事就是删除所有特殊字符,例如#&等,这样会更有意义,所以我重写:RewriteRule^([a-z]+)/([a-z]+)/([a-z]+)/([a-z]+)?php?lang=$1&type=$2&item=$3
$ echo täst | iconv -t 'ascii//translit'
taest