一个本地化小工具的制作心得

最初的想法

上一篇博客文章中提到了我在处理本地化文件中遇到的种种问题。很显然,在处理诸如FTB这样的大型整合包语言文件时候,就会遇到形形色色的各种问题。哪些模组需要更新了,更新了几条?都无从得知。自己一个个校对能花上几小时时间。

尝试制作

本来是打算依靠着3TUSK能帮忙制作一个工具出来,不过随后因为搭建etherpad时,被服务器管理者w君强制索求一份脚本。不敢怠慢,拿起键盘就是干,一边啃shell文档,一边试验着写脚本。不出十分钟就测试出了一份可用的脚本。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
echo "building environment"
sudo apt-get install gzip git curl python libssl-dev pkg-config build-essential
echo "install nodejs"
sudo apt-get install nodejs-legacy nodejs
echo "change npm source"
npm config set registry https://registry.npm.taobao.org/
echo "clone etherpad"
git clone git://github.com/ether/etherpad-lite.git etherpad-lite
cd etherpad-lite
echo "build & run etherpad"
bin/run.sh

实验过后就异常觉得这东西简单好用,如果用它来批量化更新语言文件岂不妙哉?

拿起键盘就是干,我于是在头脑里面构思了这么一幅思维导图。

pic

进展

进展的难点其实在中英文的对比更新,单纯使用shell比较麻烦,不过好在有成熟的工具可供使用。我选择了3TUSK所写的lua更新工具,这个工具可供shell作为外部脚本使用。

大体分为这几部

  • 拆包得到中英文语言文件,放置在临时文件夹中。
  • 临时文件夹中进行中英文文本对比:
    • 如果存在中文文本,调用lua脚本进行对比更新
    • 如果不存在中文文本,把英文文本复制粘贴改名即可
  • 将临时文件夹中文件逐个与资源包中文件对比
    • 如果有相同文件,调用lua脚本进行对比更新
    • 如果没有相同文件,将临时文件中处理过的文件移动过来
  • 处理完毕后,删除临时文件夹

最后感想

居然没想到这个问题让我在两天之内解决了,试验之前还认为这是一个不可逾越的难题。看起来有时候我们真是被问题表象吓住了。

这里写好的脚本文件仓库,说明请按照README.md食用。注意备份,保证安全!