你在这里


拼音

Drupal中使用Transliteration模块实现中文转拼音

James Qi 2011年1月31日 - 15:48 发布

  以前在MediaWiki中见过一个扩展程序可以实现汉字转拼音,但好像是固定汉字转换,不能是变量,所以也没有用。这几天在用Drupal的时候查到资料说Transliteration这个模块可以用于中文转拼音,而这个模块也用于将上传包含汉字字符文件名的文件自动转拼音文件名,以前就曾经安装用过,于是打开该模块的Readme查看,原来很简单就可以调用其中的函数来实现。

  汉字转换函数:

if (function_exists('transliteration_get')) {
   $transliterated = transliteration_get($text, $unknown, $source_langcode);
}

  文件名转换函数:

if (function_exists('transliteration_clean_filename')) {
   $transliterated = transliteration_clean_filename($filename, $source_langcode);
}

  注意$source_langcode是原始语言,可以使用系统默认语言:

$output = transliteration_get($text, '?', language_default('language'));

  这个功能很方便,不过自带的数据中拼音错误不少,还缺了一些汉字的拼音,需要用这个的数据替换办法来修改、补充。办法是先查出汉字的Unicode编码,然后找到对应的文件、对应的行列,核对自带数据是否错误或者缺失,如果要纠正,就在文件下面添加:

$variant['zh-hans'] = array(
0xCF => 'Yi ',
);

  除了Transliteration模块外,Autopath模块其实也带有汉字拼音转换功能,转换表中也有一些错误和缺失,可以参看:i18n-ascii-full.txt,或者下载保存。这些错误真是可恨,本来好好的功能给破坏了,要纠正起来还是要花不少时间去校对的,但愿以后有人来做好正确的。

  附几个例子,注意其中有多音字、错误拼音、缺失拼音的情况:

汉字转换好!=>Han Zi Zhuan Huan Hao !
汉=>Han
藏=>Zang
一=>Yi
癌=>Ai
肮=>Ang
“2”=>"2"
订阅 RSS - 拼音