0

谁能告诉我,我在哪里可以找到所有世界语言字母的翻译表,包括俄语、希腊语、泰语等?我需要一个函数来从任何语言的文本中创建精美的 url。而且,因为我们对例如日语一无所知,所以我正在尝试这种方式。谢谢你的回复

4

4 回答 4

3

一般来说,音译并不重要,请参阅Unicode 音译指南。坦率地说,您的问题的答案是您要查找的表不存在。

也就是说,有一些变通方法可用,例如 Sean M. Burke 的Unidecode Perl 模块(以及Ruby Python的端口)。但正如他指出的那样,你不会音译,比如泰文或日文,这样的转换可以有效地阅读。

使用 Python 端口查看以下测试会话:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from unidecode import unidecode

hello = u"""Hello world! English 
Salut le monde! French 
Saluton Mondo! Esperanto
Sveika, pasaule! Latvian
Tere, maailm! Estonian
Merhaba dünya! Turkish 
Olá mundo! Portuguese
안녕, 세상! Korean
你好,世界! Chinese
こんにちは 世界! Japanese
ሠላም ዓለም! Amharic
哈佬世界! Cantonese
Привет, мир! Russian
Καλημέρα κόσμε! Greek
สวัสดีราคาถูก! Thai"""

lines = hello.splitlines()
samples = []

for line in lines:
  language, text = line.split()[-1], ' '.join(line.split()[:-1])
  samples.append( (language, text) )

for language, text in samples:
  print language.upper()
  print text
  print unidecode(text)
  print

哪个输出:

中文
你好世界!
你好世界!

法语
向世界致敬!
向世界致敬!

世界语 Saluton
Mondo!
萨卢顿蒙多!

拉脱维亚人Sveika
,pasaule!
Sveika,pasaule!


爱沙尼亚人 Tere, maailm !
泰尔,玛伊尔姆!

土耳其语Merhaba
dünya!
梅哈巴杜尼亚!

葡萄牙语
Olá mundo!
天哪!

韩国
안녕,세상!
安宁,西桑!

CHINESE
你好,世界!你好,
世杰!

JAPANESE
こんにちは 世界!
康尼提哈施杰!

阿姆哈里克
ሠላምዓለም!
szalaame`啊啊啊!

粤语
哈佬世界!
哈老士杰!

俄语 Привет
, мир!
Priviet,先生!

希腊Καλημέρα
κόσμε!
卡莱梅拉 kosme!

泰语
สวัสดีราคาถูก!
swasdiiraakhaathuuk!

对于首先是拉丁语的语言,它非常有用:它去除了重音符号。除此之外,事情变得很快。

如果你比较中文和日文的例子,你会发现这两个序列世界都是音译Shi Jie的。那是错误的——日语的“音译”(或者更好的“阅读”)应该是seikai。俄罗斯人和希腊人也不错。但是阿姆哈拉语和泰语非常糟糕——我猜他们甚至连那些精通这些语言的人都看不懂。

这里的一般问题是,除非还考虑到特定于语言的信息,否则无法定义音译,甚至确定语言也很重要:您的程序应该如何知道世界是日语还是中文?

比试图在应用程序中强制使用 hackish 音译更好的策略是首先弄清楚如何正确支持 Unicode。如果您必须使用非拉丁脚本文本的全 ASCII 表示,请使用 URL 编码。

于 2009-09-11T21:45:49.000 回答
3

听起来你想要的是一个音译表。尝试该页面上的一些链接。如果您只希望它用于 HTTP URL,请查看percent-encoding

于 2009-06-29T11:27:21.670 回答
0

没有正确理解你的问题。你在寻找这样的东西吗?

http://www.joelonsoftware.com/articles/Unicode.html

于 2009-06-29T11:24:35.403 回答
-1

您始终可以尝试将文本转换为 iso-8859-1(例如,如果它在 php 中,则可以轻松使用 iconv),然后简单地替换空格和所有在 iso-8859-1 中有效但在 URL 中无效的坏字符; -)

于 2009-06-29T11:26:01.937 回答