Skip to Content

开发

warning: Creating default object from empty value in /var/www/www.minilinux.net/htdocs/modules/taxonomy/taxonomy.pages.inc on line 33.
这里存放的是与开发相关的资料。

在Geany中输入中文

Geany中是可以输入中文的,只要把Geany中的Ctrl-Space快捷键定义去掉就可以了。或者用修改配置文件的方法,把/root/.geany/keybindings.conf中的
edit_autocomplete=<Ctrl>space
改为
edit_autocomplete=<Alt>slash #其他也行
如果keybindings.conf不存在,或者没有edit_autocomplete定义,只要加入上面一行就行了。

Geany是相当不错的软件,以后汉化的版本就没有必要另外装别的文本编辑软件了。

用于显示中文文件名的initrd补丁细节

存放pup_xxx.sfs、pup_save.2fs等文件的分区是在启动阶段被挂载的(可以在/mnt/home中看到)。默认情况下,如果该分区是FAT格式,那么这个分区上的中文文件名将均显示为?????,chinese_pack中的pmount补丁对此也无能为力。如果遇到了这样的情况,可以试试这个补丁。

中文化开发包

这个包的作用是开发和生成Puppy 4.0用的中文翻译包。可以在这里下载

开发方法

如果要对可翻译标记做修改,直接修改src/目录下的脚本就可以了。建议使用emacs和tools/translatable.el工具来做标记。比如我重新标记了src/usr/bin/foo脚本。之后只要运行
make po/foo.po
则make程序会自动将新修改的标记自动翻译,合并到原来的foo.po文件中,这个文件中原有的翻译并不会被破坏。

如果要更新翻译文件,则直接修改po/目录下的.po文件即可。

生成中文翻译包的方法

运行
make
然后就会生成一个.pet文件,可以在Puppy 4.0中安装。

挑选可翻译脚本的bash脚本

这个脚本的作用是删掉当前目录中不可翻译的脚本或者其他类型的程序和文件,这样剩下的就是可翻译的脚本。千万不要在自己的/usr目录中运行这个程序,只能在备份的目录中运行。

这个脚本分三步
  1. 删除所有不是bash脚本的文件;
  2. 删除不可翻译的脚本。可翻译的标准是,脚本中必须包含xmessage、gtkdialog、yaf-splash或者Xdialog,这些基本上是Puppy所特有的在X环境中运行的bash脚本;
  3. 删除空目录
以下是这个bash脚本
#!/bin/sh

echo step 1
find -type f -exec sh -c "file \""{}"\" | grep -q shell || rm \""{}"\"" \;

echo step 2
find -type f -exec sh -c "cat \""{}"\" | grep -m 1 -q \"xmessage\\|gtkdialog\\|yaf-splash\\|Xdialog\" || rm \""{}"\"" \;

echo step 3
find -type d -empty -delete

自动翻译desktop文件的bash脚本

下面的脚本tranlsate使用Google Translate将一个字符串做英汉互译。

自动翻译po文件的python程序

这个程序使用google translate来辅助翻译po文件。需要注意的是,现在机器的翻译水平并不高,人工智能还有很长很长的路要走。这个程序的主要作用是节省一部分英语不是那么好的网友查字典的时间,而指望它翻译出来的句子能直接被读懂是不现实的。

这个程序的使用方法很简单,它只有一个参数,就是需要翻译的po文件名称,翻译后的结果直接输出到stdout。如果文件名是-,那么程序将从stdin读入po文件。

这个程序的一大特色是可以支持多个代理服务器轮流向google translate发出请求,以免被google封锁,哈哈。配置代理服务器只要修改一下程序开头的proxies数组就可以了。其中None代表不使用代理服务器。

程序中间还有一段是设置输出po文件头的部分,主要是版权申明和reportbug字段可能要根据需要修改。

另外这个程序对bash脚本中字符串翻译做了一些优化,比如$ABC这样在字符串中的变量名是不会被翻译的。具体可以看translate_fixed函数。

中文支持附加包技术细节

字体及其配置

安装了AR PL UMing CN字体,它是从ubuntu中的uming.ttc中分离出来,去掉了其中的bitmap字体,而由新安装的Wenquanyi Bitmap Song来代替其中pixelsize介于11~18之间的字体。注意,这里WQY没有包含10号字,因为它已经包含在ChinesePack中了。

中文支持包技术细节

一些国际化支持文件

gconv,用来做编码间转换用的,fcitx需要用到,大概是为了解开那个GB2312编码的配置文件。其他比如geany中编码转化也需要用到。
./usr/lib/gconv/*
libc的locale支持文件
./usr/lib/locale/zh_CN.utf8/*
Puppy4自带的i18n数据不包含足以生成中文locale的信息,这个包里所用的数据都来自GNU libc。解开glibc包之后,将localedata/charmapslocaledata/locales两个目录复制到/usr/share/i18n/中,然后运行:
localedef -v -c -i zh_CN -f UTF-8 /usr/lib/locale/zh_CN.utf8
注意,最后一个参数一定要用目录形式。

搜寻Bash中可翻译字符串的elisp程序

这是一段搜寻并标记Shell脚本中可被翻译的字符串的elisp程序(emacs用的脚本程序)。在emacs中打开一个Shell脚本,然后按F7,这个程序会从光标所在位置开始搜寻脚本中可被翻译的字符串,找到后询问是否要将此字符串标记为可翻译。如果得到肯定回答,则将此字符串放入$(eval_gettext "")中,然后继续搜寻下一个可翻译的字符串。

如果用户选择错误,或者emacs没有能正确的找到字符串(emacs的语法分析有时候还是会出错的,特别是在语法特别复杂的shell上),可以按Esc或者ctrl-g停止。然后可以undo上一次标记的动作,或者用鼠标手动选出需要翻译的字符串,然后按F6自动加上eval_gettext标记。还可以用F5键,它会自动将光标后的第一个字符串标记为可翻译。

将分区挂载到指定位置的pmount补丁

这个补丁的主要作用是使pmount
  • 正确挂载有中文文件名的cd和ntfs/fat分区
  • 根据fstab中的设定,选取设备的挂载点
同步内容