首页 > 代码库 > 防遗忘笔记,Fedora交叉编译window下的virt-iewer的汉化

防遗忘笔记,Fedora交叉编译window下的virt-iewer的汉化

1. 汉化代码里的资源

virtviewer使用的是gettex的方案是标准的linux里国际化的方案。按道理只需要修改virtualviewer/po/zh_CN.po的文件。编译。

然后确认在代码里设置好正确的locale,绑定好正确的textdomain就可以了。

查看irtviewer的代码,在 virt-viewer-util.c里的virt_viewer_util_ini有相应的设置

但是,修改了zh_CN.po并编译安装后,发现没有效果。。。???

后来发现是virtviewer的一个bug。 通过打印,发现

bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR);

bind的是LOCALE_DIR   /usr/share/locale。 这个地址在window上是找不到的。

因此需要针对window在设置新的地址 “appdir/../share/locale/”

修改完了后,就可以看到window上也显示正常的中文了 :)


2. 汉化安装包安装过程。

首先修改

virtualview/data/virt-viewer.wxs.in 中的

 <Product Id="*"

           Name="VirtViewer @VERSION@@BUILDID@ ($(var.ArchString))"
           Manufacturer="$(env.MANUFACTURER)"
           Version="$(var.Version)"
           UpgradeCode="$(var.UpgradeCode)"

           Language="1033">

改为

  <Product Id="*"
           Name="VirtViewer @VERSION@@BUILDID@ ($(var.ArchString))"
           Manufacturer="$(env.MANUFACTURER)"
           Version="$(var.Version)"
           UpgradeCode="$(var.UpgradeCode)"
           Language="2052" 
           Codepage="936">

 Language="1033" 改为 Language="2052"  再 添加      Codepage="936"

理论上可以修改这个文件里相应的MENUDIR等,完全汉化的。但是修改了之后发现安装包不能工作。在window下提示破损。

时间原因,没有仔细查看为什么,估计是修改时用的UTF-8编码,但是安装是是按照GBK编码解析,所以出错了。

采用了第三步,后期汉化的方法绕过了这个问题。

3. 在window上修改安装包,完整汉化

步骤:
用orca.exe(一个window出的可以修改msi文件的应用)手动修改
1. 修改Shortcur的Name
2. 修改Property的Manufacturer,ProductName,APPHELPLINK,APPURLINFOABOUT
3. 修改Directory中的INSTALLDIR(需要保持英文名,所以不修改),MENUDIR
4. 修改LaunchCondition中的Description


至此,除了安装路径要保持英文外,其他的都可以完美汉化了。:)