如题,汉化游戏过程中遇到的问题。
游戏目前还在 EA 阶段,未来还会增加文本,作为汉化组有办法进行增量管理么,
比如目前有两句话,第一句内容为 abcd,第二句内容为 efgh,我分别进行了翻译。未来新增文本中在两句话中间插入了 k1,在两句话结尾插入了 k2,这样新的两句话,在保留原文的情况下,有没有什么好办法可以只识别出新增内容,并且对新增内容进行汉化即可这种的?
git 之类的版本控制工具倒是可以读取到一个大差不差的行级增删信息,但是这部分信息怎么导出来给人参考呢?另外汉化文本与原文的对应又该怎么解决呢?比如原先 abcd 一句话在第 100 行的位置,但更新只有跑到第 160 行去了,应该如何对应地覆盖之前已经翻译好的文本呢?
1
vcfghtyjc 2021-10-10 05:48:31 +08:00
也许可以自己写个简单的小程序来管理?
|
2
ysc3839 2021-10-10 05:57:44 +08:00
现在的原文本是怎样的?分散在不同地方吗?
|
3
crab 2021-10-10 06:08:56 +08:00
类似 Poedit ?
|
4
vance123 2021-10-10 07:47:03 +08:00
用命令行和 python 应该就能解决,不过楼主好像不太熟悉的样子
|
5
zk8802 2021-10-10 18:55:04 +08:00 via iPhone
对原始文本进行排序,输出成文本文件(注意编码),然后用 git 做版本管理。
我记得原来是有专门的软件资源汉化管理工具的。 |
6
LeeReamond OP @vance123 你可以直接说思路
|
7
vance123 2021-10-12 16:15:25 +08:00
@LeeReamond
假设有 origin.txt 和 origin.trans.txt 两个文件,origin.trans.txt 的格式可以是在原文的每一行后加 "//" 追加当前行的翻译,或者其他,总之要能从 origin.trans.txt 中分离出映射关系 origin.txt 更新后,用 python 从 origin.trans.txt 中读取映射,再根据 origin.txt 生成新的 origin.trans.txt 最后用 `git diff origin.trans.txt > changes.txt` 导出新增行,交给其他人汉化。 |
8
LeeReamond OP @ysc3839 文本可以提取出来,但中间会掺杂一些跳转,人物,场景等等的命令,分散在不同文件里,具体应用场景一楼已经说了,比如目前作者做了 A 人物的剧情,而之后会加入 B 人物的剧情,或者对 A 人物增删,就会涉及到一些行的修改
|
9
ysc3839 2021-10-12 16:58:51 +08:00 1
@LeeReamond 所以说“分散在不同文件里”具体是什么格式的文件呢?
如果原文本是分散的,那建议使用自动化工具提取出来再进行翻译。 如果全都在源代码文件中的话,可以使用 GNU gettext 的命令行工具提取,然后建议在运行时进行原文本到翻译后文本的转换。 如果原文本是在一些资源文件中,不可以运行时转换的话,只能考虑使用 Translate Toolkit http://docs.translatehouse.org/projects/translate-toolkit/en/latest/index.html 或者其他工具提取,翻译后再更新资源文件。 提取出来的文本推荐用 GNU gettext 的 po 格式存储,因为这个格式在各类翻译工具中的通用性最强,使用此格式就可以配合 Poedit 或 Weblate 进行翻译,“只识别出新增内容,并且对新增内容进行汉化即可”这种需求完全不成问题,因为已翻译的文本是一直再那的,新增的文本会显示为未翻译的。 |