PHP音译指定语言环境



我正在使用PHP音译器(来自php5-intl,使用ICU)将CJK音译为拉丁语(罗马化),问题是,我需要一些方法来指定输入区域设置,以便日本汉字不会罗马化为中文拼音(因为它们通常共享相同的utf8字符)。

例如:

transliterator_transliterate('Any-Latin; Latin-ASCII; Lower();', $input);

中国オタク界 => zhong guo otaku jie

而我想得到:

中国オタク界 => chuu goku otaku kai

任何想法?


对ICU网站的进一步研究表明,问题可能是Han-Latin只遵循拼音音译,所以我正在寻找一种方法,允许php5-intl告诉ICU使用Romaji音译代替(我还没有找到这样的id)。

这是我想出的一个脚本,用于测试与Latin-ASCII; Lower();链接的所有不同的翻译器,但它们都不能产生您所寻求的结果。你可以尝试其他的汉字,并尝试选择Any-Latin以外的转写器。

$scripts = transliterator_list_ids();
foreach ($scripts as $script) {
    echo $transliterated = transliterator_transliterate(
        $script . '; Latin-ASCII; Lower();',
        '中国オタク界'
    ) . ' in ' . $script . "n";
}

这些产生了一些有意义的东西,并且与Any-Latin: JapaneseKana-Latin/BGN, Katakana-Latin的行为方式不同

是的,Han-Latin是拼音。ICU转写器来自CLDR(我将更新用户指南以澄清这一点)。ICU已经可以将假名(hira/kata)转换为拉丁语,但是汉字有多个读数,因此您无法通过简单的基于表的转换找到您正在寻找的内容。

edit:综上所述,如果没有编写规则,ICU将不会做你想做的事情,而且由于日语的工作方式,在我看来,使用自己的规则也不太可能简单。

我能想到的一种可能性是使用…

设置区域设置。
setlocale(LC_ALL, "ja_JP");

您可以在运行音译器之前应用PHP中的各种格式化功能以您想要的方式格式化文本。

相关内容

  • 没有找到相关文章

最新更新