有免费的开源PHP Translatit库吗?

有免费的开源PHP Translatit库吗?,php,open-source,transliteration,Php,Open Source,Transliteration,所以我有很多用户用不同的语言发表文章。我需要一些库来将千篇文章的名称翻译成英文字母,例如,将俄语的“П”翻译成英语的“r”,等等,所有欧洲语言、俄语和亚洲语言都需要。哪里可以得到这样的自由 45秒的谷歌给了我这个,这似乎是我真正需要的。有人在现实生活中尝试过吗?可以吗 使用此模块,您可以将由本地字符集表示的字符串转换为由另一个字符集表示的字符串,该字符集可能是Unicode字符集 从PHP手册: $text = "This is the Euro symbol '€'."; echo 'Ori

所以我有很多用户用不同的语言发表文章。我需要一些库来将千篇文章的名称翻译成英文字母,例如,将俄语的“П”翻译成英语的“r”,等等,所有欧洲语言、俄语和亚洲语言都需要。哪里可以得到这样的自由

45秒的谷歌给了我这个,这似乎是我真正需要的。有人在现实生活中尝试过吗?

可以吗

使用此模块,您可以将由本地字符集表示的字符串转换为由另一个字符集表示的字符串,该字符集可能是Unicode字符集

从PHP手册:

$text = "This is the Euro symbol '€'.";

echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
如果那不行,看看这些


另一种方法是,在数组中定义字符映射,并使用
str\u replace
mb\u replace\u character
进行转换。

我不是语言学家,远非语言学家,但我向您提出这样一种可能性,即您试图做的事情是不可能的,或者实现起来非常复杂

毕竟,翻译姓名不仅仅是“转换字母表”。俄语中的翻译相对容易,因为每个西里尔字母实际上都有一个拉丁对应词(它们是)

我不懂阿拉伯语,但对于中国人来说,你需要一个罗马化系统。这比简单的字符替换更复杂

这里有一个完整的列表-如果我理解正确,一个适合您的解决方案必须实现这些规则

因此,任务将是:

  • 分析包含许多不同字符范围的文本

  • 识别每个单词所属的字符范围(อักษรไทย 是泰语;是西里尔语;等等)

  • 对每个单词应用正确的罗马化方法

现在我很有兴趣听到任何可以在PHP中实现这一功能的库,但很可能没有。

谷歌有一个在这方面做得很好的库

编辑:该死,进一步检查后发现,这只允许从拉丁字母表转换。谷歌没有提供反向功能有点傻,因为他们已经在谷歌翻译中使用它来提供西里尔语、汉语、泰语、印地语和其他语言的罗马拼音,尽管明显不是希伯来语和阿拉伯语等阿布吉达语


进一步编辑:我想到了一个可能的解决方法:检测语言并使用AJAX查询,使用与目标语言相同的源语言通过Google Translate运行它,例如。Firebug显示音译是在ID为
translatit
div
中输出的。音译通常带有很重的重音,所以您需要转换它们。这一点也不值得依赖(尽管谷歌通常不会对其HTML进行频繁的结构更改),但这确实是一种有趣的可能性。

在PHP5.3中,Intl引入了一个音译类,它是ICU的包装器。以下库具有完整的ISO规则集:


我最终基于Django项目中的URLify.js编写了一个PHP库,因为我发现iconv()太不完整了。你可以在这里找到它:


处理拉丁字符以及希腊语、土耳其语、俄语、乌克兰语、捷克语、波兰语和拉脱维亚语。

iconv是否真的会将
МСаа
转换为
Moskva
?哇,如果是的话。“现在不能尝试……”佩卡不知道。我没有经常使用iconv,更不用说俄语字符集了,但基本上,是的,这是它应该能够做到的。对我来说似乎不起作用,它只是删除了西里尔语。我认为这更复杂,看看我的答案。你为什么要这么做。当然,文本将毫无意义,或者至少一旦这样做就没有意义了?类似的问题:@PurplePilot“用不同的语言命名”。。。在国际海事组织,这是一种合法的使用,尽管我不确定结果是否总是有效——据我所知,许多俄语名称的英语拼法与俄语原件的拼写不同。下面是一个实际例子,说明了这样做的问题:倖田 來未 (Kumi Koda)是一位著名的日本歌手。然而,她名字的最后两个字符可以同时被解读为Kumi和Kurumi,而且都是女性的名字,所以你不能仅仅通过查看字符来准确地确定这一点。如果你想确定的话,你要么注意到名字是Kumi Koda,并利用这是一位著名艺术家的名字这一事实,要么你必须问她——如果你不确定,她可能不会喜欢突然被称为Kurumi。@Pekka我理解OP的方式,如果有,他希望是Aa。这就是iconv所做的,如果它有映射的话。它找到了最接近的近似值,不多不少。因此,要么它将把摩科巴变成莫克巴,要么变成莫斯科。正如我所说,我不确定(这就是为什么我提出了一个问题的答案),但即使不确定,他仍然可以使用自定义映射方法或尝试任何其他LIB,如Recode或MB_*@Gordon,我相信这可以为俄罗斯人工作。但是他想要
所有的欧洲语言,俄语和亚洲语言
后者将非常困难。@Gordon:问题主要是汉语和日语之类的语言。如果你有假名的话,日语是可行的(根据上下文,汉字可以用多种不同的方式阅读),但对于汉语来说,他们只使用汉字。据我所知,汉语并不是每个汉字都有一个单一的发音。像希伯来语和阿拉伯语这样的语言也有一个问题,因为wovels不一定存在,而是隐含的。你可以机械地音译那里的东西,但结果很可能是无用的。可能还有其他语言有类似的问题,但我想不出任何问题。@Michael:对,你讲的是日语;