Unicode文本的罗马化

Ant*_*ull 22 unicode transliteration internationalization

我正在寻找一种方法,将任何语言的Unicode字母字符音译为带重音的拉丁字母.目的是让外国人深入了解用任何非拉丁文字写的名字和文字的发音.

例子:

希腊语:Romanize("???????????")回归"Alphab?tikós"(或"Alfavitikós")

日本:Romanize("????")收益"shimbashi"(或"sinbasi")

俄语:Romanize("???? ???????")返回"yaytsa Faberzhe"(或"jajcaFaberže")

理想情况下,它应该支持以下脚本中的字符:CJK,印度语,西里尔语,闪米特语和希腊语.它应该是数据驱动和可扩展的,使用来自Unicode联盟,美国,欧盟或联合国的数据.代码应该是用.NET或Java编写的开源代码.

这样的图书馆存在吗?

Spr*_*ofi 17

这个问题比你想象的要复杂得多.

希腊语,西里尔语,印度语脚本,格鲁吉亚语 - >琐碎,你可以在一小时内编程
泰语,日语假名 - >可以用更多的努力
日语汉字,中文 - >这些不是字母/ syllaberies,所以你不在事实是音译,你正在查找希望大字典中的每个符号的发音(EDICT和CCDICT应该有效),很多时候你会弄错它,除非你也考虑上下文,特别是在日语
韩语- >技术上是一个字母,但计算机只能处理组成的字符,所以你需要另一个大型数据库,我不知道任何
阿拉伯语,希伯来语 - >这些语言不写下短元音,所以很多时候你的音译将像"bytlhm"(伯利恒)那样难以理解.我不知道有任何大型数据库将阿拉伯语或希伯来语单词映射到他们的发音.

  • 实际上他做到了."它应该理想地支持以下脚本中的字符:CJK,印度语,西里尔语,闪米特语和希腊语" - >阿拉伯语和希伯来语是最广泛使用的闪族语言. (6认同)
  • @Sprachprofi:参考你的"希腊语,西里尔语,印度语剧本,格鲁吉亚语 - >琐碎".你认为自己甚至可以在一小时内完成任务.是的,你可以将每个西里尔文/希腊文/(以及任何应该是的标记)字符映射到相应的(一组)拉丁字符.但那是音译,而不是ROMANIZATION.根据前面和后面的字符,你必须执行一个关于如何进行罗马化的裁决.这比简单的音译字母难度高一个数量级.另外,如果d恰当,你的音译时间将超过1小时. (2认同)

Ker*_*ros 7

您可以使用http://unidecode.codeplex.com/此.net库.

用法;

using BinaryAnalysis.UnidecodeSharp;

.......................................

string _Greek="???????????";
MessageBox.Show(_Greek.Unidecode());

string _Japan ="????";
MessageBox.Show(_Japan.Unidecode());

string _Russian ="???? ???????";
MessageBox.Show(_Russian.Unidecode());
Run Code Online (Sandbox Code Playgroud)

我希望,这对你有好处.

  • 谢谢。这正是我想要的。 (2认同)

bma*_*ies 6

我不知道ICU之外的任何开源解决方案.如果ICU适合你,那很好.如果没有,请注意我是一家公司的首席技术官,该公司为此目的销售商品,可以处理中文单词,日语多重阅读和阿拉伯语不完整拼写等icky案件.