2016-11-15 67 views
0

我试图将罗马英语单词翻译成乌尔都语单词。很像这样website tool.我正在使用icu4j音译器。输出音译很少出乎意料,例如icu4j音译英语到乌尔都语

输入: “namaz”

输出: “نمز”

预期输出: “نماز”

翻译: “祈祷”

下面是我的ID得到实例。

String id = "Eng-ur; NFD;"; 

有没有人知道哪里是问题在我的ID字符串...?

+0

你有没有发现任何关于将乌尔都语转换为罗马乌尔都语? –

回答

1

我不认为你的ID字符串本身有问题。 (可能en-ur已经足够 - 虽然 - 为什么要求NFD?)我注意到字符串nmạz音译到。也许音译规则还有改进的余地吗?

+0

感谢您的回复,我使用NFD从输入中删除任何重音字符,但没关系如果我删除NFD,它仍然会提供相同的输出。其次,我如何改进音译规则,我的意思是我不知道音译规则是什么,以及我不知道如何改善它们,因为我认为它是由icu4j管理如果我是对的。 –

+0

NFD不是用于删除重音字符,它只是一个分解。你的意思是你想删除元音标记吗?这将是一个不同的规则。但是,是的,icu4j数据来自CLDR,http://cldr.unicode.org –

1

ICU的规则框架不适用于发音不规则的源语言。可悲的是,英语特别难以发音。

音译意味着模仿目标语言中源语言的发音。它由两部分组成:(a)将输入转换为表示发音的中间表示; (b)将发音转换为最终输出。 (a)中,基于规则的ICU框架永远不会给出好的结果,但它很可能是一个很好的(b)系统。我建议您通过文字转语音系统来运行您的英文字符串,或者至少在一个非常大的发音字典中查找输入。这会给你发音International Phonetic Alphabet。一旦你有发音,ICU应该工作得相当好,生成乌尔都语。

现在,ICU还没有将国际音标转换为乌尔都语的规则。作为Unicode音译规则的维护者,我认为这应该很容易实现;我会很乐意做到这一点,当我找到一些时间(但欢迎任何人发送补丁!)如果你想要走这条路,请提供一个缺陷http://unicode.org/cldr/trac/newticket

相关问题