十一
10/09
Synology DS109+ 添加中文语言环境locale模块解决中文文件名问题
最后更新于 星期五, 19 二月 2010 07:53
作者: sHiN3
星期二, 10 十一月 2009 06:51

上次说到MLDonkey启动后显示的字符编码是ANSI,所以会造成中文文件名变成下划线。根本原因是开发人员在编译glibc的时候没有加入–enable-add-ons 参数,致使locale模块没有被安装。折腾了两天,就在我马上就要重新编译glibc的时候,奇迹般的找到了Syno提供的原始Tool Chains——gcc343 + glibc234,里面又奇迹般地提供了完整的glibc组件,下面说说安装方法。

首先从http://sourceforge.net/projects/dsgpl/files/ 根据你的CPU型号,下载相应的Tool Chains,我的CPU是8533的,所以下载gcc343_glibc234_853x.tar.gz。

在本地解压后,通过TFTP,将
1. “解压目录\gcc343_glibc234_853x\powerpc-linux-gnuspe\powerpc-linux-gnuspe\bin\” 目录下的 locale 和 localedef 传到 /bin 下
2. “解压目录\gcc343_glibc234_853x\powerpc-linux-gnuspe\powerpc-linux-gnuspe\share\” 目录下的 i18n 和 locale 文件夹传到 /usr/share 下

通过SSH连接上DS109+,执行 locale 命令

CodesHiN3> locale
LANG=
LC_CTYPE=”POSIX”
LC_NUMERIC=”POSIX”
LC_TIME=”POSIX”
LC_COLLATE=”POSIX”
LC_MONETARY=”POSIX”
LC_MESSAGES=”POSIX”
LC_PAPER=”POSIX”
LC_NAME=”POSIX”
LC_ADDRESS=”POSIX”
LC_TELEPHONE=”POSIX”
LC_MEASUREMENT=”POSIX”
LC_IDENTIFICATION=”POSIX”
LC_ALL=

显示当前的语言环境是POSIX,也就是英文环境

再执行

sHiN3> mkdir /usr/lib/locale

如果不建立这个文件夹,那么接下来执行 localedef 命令的时候,就会报错:

Cannot create temporary file: No such file or directory

建立这个文件夹后,执行

sHiN3> localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
sHiN3> locale -a
C
POSIX
zh_CN.utf8

这样简体中文UTF-8语言环境就安装成功了,只要在启动MLDonkey的脚本中加入

export LANG=zh_CN.utf8
export LC_ALL=zh_CN.utf8

下载的文件就不会再变成下划线了。

这是我的开机运行MLDonkey的脚本,/opt/etc/init.d/S91MLDonkey.sh(我的mlnet文件已经放到/opt/bin目录下了):

#!/bin/sh
rm -f /root/.mldonkey/*.tmp 2>/dev/null
rm -f /root/.mldonkey/*.pid 2>/dev/null
rm -f /root/.mldonkey/*.log 2>/dev/null
if [ -n "`pidof mlnet`" ]; then
echo “Kill old program…”
killall mlnet
sleep 10
fi
export HOME=/root
export LANG=zh_CN.utf8
export LC_ALL=zh_CN.utf8

/opt/bin/mlnet &

运行后

sHiN3> /opt/etc/init.d/S91MLDonkey.sh
2009/11/08 21:34:07 [cO] Starting MLDonkey 3.0.1 …
2009/11/08 21:34:07 [cO] Language ZH_CN, locale UTF-8, ulimit for open files 1024
2009/11/08 21:34:07 [cO] MLDonkey is working in /root/.mldonkey
2009/11/08 21:34:07 [cO] loaded language resource file
2009/11/08 21:34:07 [DNS] Resolving [sHiN3] …
2009/11/08 21:34:07 [DNS] Resolving [www.mldonkey.org] …
2009/11/08 21:34:08 [dMain] Libmagic file-type recognition database present
2009/11/08 21:34:08 [IPblock] loading ipfilter.dat
2009/11/08 21:34:12 [IPblock] 268386 ranges loaded – optimized to 255126
2009/11/08 21:34:12 [cO] Logging in /root/.mldonkey/mlnet.log
2009/11/08 21:34:12 [dMain] Core started

此时第二行已经从

[cO] Language EN, locale ANSI_X3.4-1968
变为
[cO] Language ZH_CN, locale UTF-8

因为安装了locale模块,所以其他软件的中文问题也同时解决。

另外Syno官方也发现了locale的问题,看样子应该在下一次更新的时候会解决,论坛原文:

親愛的使用者您好:
Wordpress可以顯示中文是因為它本身就帶有多國語系並沒有使用locale這個函式。
沒有locale導致gallery2無法切換多國語言的問題之前已經有其他使用者提過了,我們也已經向研發部回報。
如果以後韌體改版時有加入這個功能我們會在release notes當中加註。

标签:,

1 条评论
  1. Commentsgwtrwimv   |  星期六, 17 四月 2010 在 09:11

    gwtrwimv…

    gwtrwimv…

    gwtrwimv

发表评论