需求

翻译 SourceTree for MacSourceTree for Windows 软件。 修正 衍合变基衍合 一词为临时翻译,现已修正为 变基,参见: progit2-zh/TRANSLATION_NOTES.asc at master · progit/progit2-zh

安装客户端

1
sudo pip install transifex-client

SourceTree for Mac

SourceTree For Mac localization

下载翻译

注意:翻译的地址不是默认的 URL,而是 https://www.transifex.com/projects/p/ + 项目名字

1
2
3
tx init
tx set --auto-remote https://www.transifex.com/projects/p/sourcetree-for-mac/
tx pull -l zh_CN

转换编码

因为下载下来的翻译文件使用的是 UTF-16LE 编码,sed 默认使用 OS X 的 shell 的 UTF-8 编码,所以需要先转换编码,修改完后再转换回来推送上去。

将以下内容保存为 to-utf8.sh,放在翻译目录下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
FROM=UTF-16LE
TO=UTF-8
ICONV="iconv -f $FROM -t $TO"
# Convert
find . -type f -name "*.strings" | while read fn; do
cp ${fn} ${fn}.bak
$ICONV < ${fn}.bak > ${fn}
rm ${fn}.bak
done

执行以下命令转换编码为 UTF-8

1
bash to-utf8.sh

修改翻译

1
find . -name "*.strings" -type f | xargs -t -n1 sed -i "" "s/衍合/变基/g"

转换编码

将以下内容保存为 to-utf16.sh,放在翻译目录下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
FROM=UTF-8
TO=UTF-16LE
ICONV="iconv -f $FROM -t $TO"
# Convert
find . -type f -name "*.strings" | while read fn; do
cp ${fn} ${fn}.bak
$ICONV < ${fn}.bak > ${fn}
rm ${fn}.bak
done

执行以下命令转换编码为 UTF-16

1
bash to-utf16.sh

推送

1
tx push -l zh_CN -t

SourceTree for Windows

SourceTree For Windows localization

因为翻译的编码默认就是 UTF-8,所以无需转换编码

1
2
3
4
5
tx init
tx set --auto-remote https://www.transifex.com/projects/p/sourcetree-for-windows/
tx pull -l zh_CN
find . -name "*.resx" -type f | xargs -t -n1 sed -i "" "s/衍合/变基/g"
tx push -l zh_CN -t

参考资料