afterclass吧 关注:3,978贴子:25,175

一种基于PO格式的After Class_v0.11.21i的部分汉化方法

只看楼主收藏回复



IP属地:河北1楼2023-08-29 12:21回复
    摘要:由于作者Andy Peng对After Class(后续简称AC)前几日文案进行大面积改动,使得汉化版本止步于0.85而难以继续,随后仅有全面机翻版本保持一定进度的更新,AC游玩者迫切需要游戏的新汉化版本以满足其对二次元福瑞的情感陪伴。本文基于ren'py引擎制作游戏翻译文件可转换为PO文件的机制,使用Python程序将翻译文档转换为易于编辑的EXCEL文档,自主翻译了Lars第9天及Lars_Episode的文本,并通过自编译程序,将0.85版本中未被Andy Peng修改的汉化部分进行修复搬运,使其能够在最新的AC公开版本中运行。本文在提供汉化版本的同时,提出一种便于大文本量ren'py引擎的汉化方法,为同行者提供参考。
    关键词:After Class,v0.11.21i,部分汉化, Lars可爱捏。


    IP属地:河北2楼2023-08-29 12:35
    回复
      目录
      第一章 绪论————4楼
      1.1 基于ren'py引擎游戏的Po文件汉化方式现状 ———— 4楼
      1.2 本文主要研究内容 ———— 5楼
      第二章 以Excel工具为核心的汉化步骤 ———— 6楼
      2.1 Po文件与Excel格式文件转化方式及改进措施 ———— 6楼
      2.2 Excel格式文件汉化方式与导入错误排除方向 ———— 7楼
      2.3 版本0.85汉化修复思路 ———— 8楼
      2.4 本章小结 ———— 9楼
      第三章 程序打包及汉化bug排查方法 ———— 10楼
      3.1 汉化文本与游戏自带汉化冲突问题 ———— 10楼
      3.2 部分对话中文乱码问题 ———— 11楼
      3.3 安卓打包问题 ———— 12楼
      3.4 本章小结 ———— 13楼
      第四章 总结与展望(资源链接在此处)————14楼
      致谢 ————15楼


      IP属地:河北4楼2023-08-29 13:03
      回复
        第一章 绪论
        1.1 基于ren'py引擎游戏的Po文件汉化方式现状
        近来,福瑞文化逐渐兴起,而集立绘、文本、音乐等多元素的福瑞向视觉小说(Furry Visual Novel,简称FVN)创作愈发旺盛。Ren'py引擎因其便于上手、功能丰富且允许使用者编写Python代码增加新功能等特点,而被广泛用于FVN创作[1]。

        FVN在英语文化圈中开发,因此较受英语使用者的青睐,事实上,大部分英语FVN都是基于ren'py引擎开发而成的。因此,汉化ren'py引擎开发的英文游戏,具有普遍的需求性。
        Ren'py引擎本身提供了翻译方法,可在game/tl文件中生成rpy格式翻译文档供翻译者使用,文档中old为原文,new为待翻译文本。

        笔者曾通过此原始方式翻译了Lars Episode文本,得出该方式的以下缺陷:
        1、易丢失特殊字符导致错误,如new将翻译文本括起来双引号,缺少一个或者打成中文格式,游戏中的部分特殊字符表示,如实际游戏中表示引号的\" 换行\n等符号,缺少一些特殊字符后导致游戏报错无法打开。
        2、难以批量处理,每一段待翻译文本之间含有不少程序代码,在文本量较大的情况下手动提取工作量较大,且生成的.rpy文件普遍较多(该版本AC生成了88个待翻译文件),难以处理各文件文本之间的联系。
        针对该问题,文献【2】提出一种基于Po文件的批处理翻译方法,该方法将所有生成的待翻译文件进行整合,生成单个Po格式文件,再通过文献【3】提供的Python程序转换为易于编辑的Excel文件,如图所示,C列为原文文本,D列为翻译后文本,翻译工作完成后,转换回Po文件,再导入至游戏翻译中,减少人工操作量,大幅提升了翻译效率。

        但同时,引入Po文件带来新的问题,一是在文本量较大的情况下,Po文件与Excel文件的相互转换在【3】提供程序下运行缓慢,该程序对文本进行逐行处理,以1s10行的速度处理的话,AC总计74786行待翻译文本需要两个小时的处理时间,翻译完成后将Excel文件转换回去也需要相当长度的时间。二是导入程序对Po文件的语法格式较为严格,很容易出现汉化后的Po文件导入失败的情况,需要对Excel表格内容进行排查错误,再重新转换并导入到游戏中。加之问题一的出线,排查工作需要消耗大量时间和精力才能完成。


        IP属地:河北5楼2023-08-29 13:38
        收起回复
          1.2本文主要内容
          本文在文献【2】提供主要思路的基础上,使用pandas库改进文献【3】提供的po-excel转换工具,使其转换效率提升,并通过实际翻译Lars第9天及Lars_Episode的文本,证明该方法的可行性,同时使用Python程序处理表格,修复AC当前公开版本未被修改的,与0.85汉化版本中内容一致的文本,最后给出汉化后的PC、安卓资源。
          笔者先前并没有计算机语言基础,别说ren'py引擎,就连Python都是现学现用的,感谢Python这么好学还这么好用。但也因此许多步骤犯了新手错误,还请同行者批评指正。


          IP属地:河北6楼2023-08-29 13:53
          回复
            第二章 以Excel工具为核心的汉化步骤

            2.1 Po文件与Excel格式文件转化方式及改进措施
            文献【3】提供将Po文件与Xlsx文件的转换程序,其代码核心思路为根据Po文件的格式规范,将不同内容分别提取为"location"、"msgctxt"、"source"、"target"列,并提供一套特殊符号转换方式,使转换后的文件仍可完整转换至原文件。但该段代码使用xlwings库来操作Excel表格,因为每次写入单元格都需要和Excel进行交互,造成了较慢的处理速度。笔者起初进行单次文件转换,AC总计74786行待翻译文本需要两个小时的处理时间。

            据此,本文根据代码逻辑,使用pandas库来处理数据,并将最终结果一次性写入Excel表格,这种优化方式避免了频繁与Excel进行交互,大大提高了处理速度。同时,保持了源代码对特殊字符的处理方式。优化后,仅需不到60秒的时间即可完成转换工作。


            IP属地:河北7楼2023-08-29 14:15
            收起回复
              2.2 Excel格式文件汉化方式与导入错误排除方向
              由本文自行翻译的Lars第九天部分文本所示,根据C列的英语原文,在D列中填入翻译后文本。

              其中,导入最常见的错误为特殊字符\"的缺失,ren'py使用\"字符在文本中表示引号,在输入翻译文档时单打为\或"符号,亦或是将英文格式引号错误地打为中文,就会导致导入Po文件时报错,且报错文档不会给出具体信息,需要手动排查。错误符号辨识度小,导致本文初期工作在导入环节时常报错。
              随后,本文通过Excel批量替换试图解决该问题,具体操作为先将\"替换为易被辨识的其他特殊字符,本文采取使用**双星号进行替换,翻译工作结束后再将**替换为\" ,注意excel替换、查询文本框中,单星号*表示非空白内容,而文本符号的单星号需用加上转义字符,用~*表示。
              2.3 版本0.85汉化修复思路
              作者Andy Peng对前几天剧情文本进行大幅改动,使得0.85版本汉化补丁无法直接适用于后续版本。对翻新剧情进行全盘机翻会导致游玩质量急剧下降,因此本文并未对游戏进行机翻汉化,而是提取0.85版本后作者未修改的文本部分进行提取和植入,保留大部分未被作者翻新从而失效的汉化成果。
              其修复思路为:
              1、提取旧版本汉化至Excel文档,并与新版本文档合并。
              2、新版本原文放在C列,待翻译文本放在D列;旧版本原文放在H列,旧版本翻译放在I列。

              3、通过Python程序处理.xlsx格式文档,比较C列与H列内容一致的单元格,若一致,则将该行的I列内容对D列进行覆盖处理。直至遍历整个表格。
              通过此方法,对未被修改的文档进行原有汉化移植,移至后的表格如下。

              可见,除少数被修改文本,d8前的多数文本(除大改的Mark线外)皆可实现修复。


              IP属地:河北8楼2023-08-29 14:41
              回复
                2.4 本章小结
                本章阐述以Excel工具为核心的汉化步骤,优化po文件与excel文件的转换程序,对Lars_Episode和Lars第9天内容进行翻译证明该方法的可行性,并对0.85汉化版本进行一定程度的修复,为汉化版AC的实现提供切实可行的理论基础。


                IP属地:河北9楼2023-08-29 14:45
                回复
                  第三章 程序打包及汉化bug排查方法
                  由于作者于英语环境开发游戏,并未对中文运行环境进行调试,单纯将汉化文本放入tl文件会导致游戏的水土不服,报错、乱码是家常便饭。本文就面临的问题进行阐述并给出解决方案,供于参考和借鉴。
                  3.1 汉化文本与游戏自带汉化冲突问题
                  众所周知,AC自带部分繁体中文汉化,对部分UI界面,以及Lars_Winter Wonderland进行了繁中翻译。但进行此次翻译后,繁中汉化部分就停止了更新维护,官方自带汉化补丁停留在较早版本。解包会发现即使现在已经更新到d10阶段,但自带汉化文件还停留在d8,且许多繁中汉化与本文汉化冲突,直接加入会导致游戏报错无法进入。
                  本文在保留繁中对gui汉化的同时,删除原汉化中(尤其是Winter Wonderland)与本汉化冲突的部分,使得汉化补丁可正常运行与现版本。


                  IP属地:河北10楼2023-08-29 14:55
                  回复
                    3.2 部分对话中文乱码问题
                    游戏中,作者对不同角色文本采用了不同的字体,以丰富阅读体验。但遗憾的是,不少字体并不支持中文格式,比如Lars_Episode中的Gil电话字体,在选择简体中文后显示为乱码。

                    需要找到角色的个人设置文档,将其字体设置(font= )为支持中文的样式。


                    IP属地:河北11楼2023-08-29 15:00
                    回复
                      3.3 安卓打包问题
                      自行翻译后的游戏文件进行安卓封装,和作者在Itch站提供的安卓安装包有所差异,虽不影响正常体验,但本着“汉化对游戏本体改动越小越好”的宗旨下,本文仅将原装安装包进行tl文件替换。


                      IP属地:河北12楼2023-08-29 15:04
                      回复
                        3.4 本章小结
                        本章介绍了在完成文本汉化后,一些实际游玩时所遇到的问题,并非直接将tl文件导入至原游戏tl文件夹就可以正常运行,自带部分汉化与自汉化冲突、未考虑中文环境导致文本乱码等问题,需要逐步排查并改正,以完善游玩体验。


                        IP属地:河北13楼2023-08-29 15:06
                        回复
                          草我说怎么感觉不对劲 原来是论文格式


                          IP属地:重庆来自iPhone客户端14楼2023-08-29 15:17
                          收起回复
                            第四章 总结与展望
                            本文基于Po格式对Ren'py引擎游戏的汉化方法,对After Class_v0.11.21i进行Lars第九天和Lars_Episode汉化,并对0.85汉化文本进行修复,使其适用于现有版本,此楼将提供汉化资源及文中提到的部分工具,为后续汉化步骤提供可复现的操作模型。
                            本文仍有许多不足,如仅对d8前的部分文本进行修复搬运,而未对作者修改后的文本进行翻译,使得实际游玩体验中英混杂,体验较差。由于工作量过于庞大,仅对Lars第九天(1915条文本)和Lars_Episode(1584条文本)进行人工逐句汉化,远不及74786条文本量。
                            本项目组(其实就我一个人hhh)后续将缓慢推进对Lars线汉化的更新,敬请期待。


                            IP属地:河北15楼2023-08-29 15:18
                            收起回复
                              致谢
                              真正的0基础开始做确实令人头大,从安装和学习Ren'py、Python语言,到一步步实现、排错、封装,成果确实都是靠时间和精力一点点攒出来的,没什么人脉,也找不到什么汉化组、汉化大佬请教,就拿着个破百度搜搜搜,再埋头搞。说不定我做的这么多,在人家大佬面前早就是基本操作,甚至是过时的、低效率的、愚蠢的。但反正是兴趣使然的爱好,又不赚钱啥的,喜欢就做了,我高兴就好。
                              感谢老公Lars Dearmer对我一路以来的爱护和情感支持,带suki ~
                              (是的,写这么大一长篇论文,只是为了证明Lars是我老公


                              IP属地:河北16楼2023-08-29 15:23
                              回复