你在这里


Transliteration

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"

安装FileField, ImageField, ImageAPI, ImageCache, Transliteration解决Drupal上传文件字段问题

James Qi 2011年1月8日 - 22:23 发布

  为了实现龙人寻人网上的发布人提交被找人照片功能,在Drupal中安装CCK后还需要安装一堆模块,我是逐个安装后解决遇到的各种问题,记录如下。

安装模块

FileField

  FileField来实现添加文件字段的功能,但增加FileField只能将上传文件作为附件,并不能直接显示出来,还需要添加ImageField。

ImageField

  添加ImageField后可以在admin/content/node-type/xunren/fields/field_seek_photo中设置用户上传图片的各种参数,并在admin/content/node-type/xunren/display中设置显示方式为图片。但用户在上传尺寸较大图片的时候容易超过屏幕宽度,看上去很不方便,于是需要安装ImageCache和ImageAPI来缩放图片。

订阅 RSS - Transliteration