矮人要塞吧 关注:9,086贴子:27,745

[瞎尝试]trotsky1997对Kheeman以及Kheeman对main的代码变动

只看楼主收藏回复

首先声明:楼主不会编程,只是瞎分析


IP属地:贵州1楼2024-01-13 09:08回复
    首先对比trotsky1997和Kheeman

    经过哈希校验
    可知变动代码如下


    IP属地:贵州2楼2024-01-13 09:11
    回复
      xmake.lua:编译控制文件,根据README.md和稍稍交给ai的分析可知,这里主要是修改了依赖库和游戏版本指定
      ttf_manager.cpp:只是删除了一个依赖,那个依赖似乎是针对韩文翻译的后缀和语法规则
      dictionary.cpp:这是一个改动较大的文件,其添加了联网翻译


      IP属地:贵州3楼2024-01-13 09:27
      回复
        个人分析:
        ttf_manager.cpp和dictionary.cpp的变动实际上就是为了将韩文翻译替换为中文翻译
        其他地方无任何改动
        看过Kheeman/df-steam-hook的都知道
        dfint_dictionary.csv和kr_regex.txt才是transifex的成果和直接替换翻译的部分
        而trotsky1997却没有对这两个文件有改动
        所以我有理由怀疑trotsky1997在github上的fork是无法正常使用的
        至少进入游戏后输出的是韩文


        IP属地:贵州4楼2024-01-13 09:33
        回复
          码一下


          IP属地:山东来自Android客户端5楼2024-01-13 12:02
          收起回复
            因为原汉化方跑路已久,我就以当时fork的版本作为对比版本


            IP属地:贵州6楼2024-01-13 22:30
            回复
              改动还蛮多的


              IP属地:贵州7楼2024-01-13 22:35
              收起回复
                config.cpp的改动

                其实就是README.md中描述所增加的新设置


                IP属地:贵州8楼2024-01-13 22:41
                收起回复
                  watchdog.hpp的改动
                  添加了README.md描述的Ctrl+F5的功能
                  注释掉了其它选项的log(不知道Kheeman怎么想的)
                  调用了修改过的LoadCsv()函数.貌似是因为当年LoadCsv()还不支持正则,而Kheeman增加了此功能


                  IP属地:贵州9楼2024-01-13 22:54
                  回复
                    utils.hpp的改动
                    CoordExtract:似乎是为翻译字符做定位用
                    GetStringLength:计算字符串长度,专门写一个函数是因为中文等是多字节字符,不能用标准库方法
                    SimpleString:针对异形字符的替换,如:Thîs ís ä sțring wíth spécîâl chàrâctèrs.变为This is a string with special characters.(非常好奇是在什么情况下才会出现它们)


                    IP属地:贵州10楼2024-01-13 23:55
                    回复
                      dictionary.h
                      这是个头文件,其中算得上是改动的部分

                      目的应该是为了区分各部分的渲染宽度和布局所致


                      IP属地:贵州11楼2024-01-14 00:18
                      回复
                        main.cpp
                        改动为
                        增加setlocale(LC_ALL,"");即设置地区
                        调用经过修改的LoadCsv()
                        注释InstallTTFInjection()和对应unin部分.应该是因为TTF大改导致


                        IP属地:贵州12楼2024-01-14 00:25
                        回复
                          pch.h
                          添加了新依赖
                          开启对TTF支持


                          IP属地:贵州13楼2024-01-14 00:27
                          回复
                            dictionary.cpp
                            此文件改动过于庞大(400行+)
                            以至于vscode对比工具直接卡住
                            大家看看代码增加部分GPt的总结吧
                            RegexSearch: 根据给定的关键字(key),通过正则表达式在字典中进行搜索。如果找到匹配项,则替换并返回结果,否则返回std::nullopt。
                            SplitRegex: 根据正则表达式将输入字符串分割成键值对,并将其添加到字典中。
                            RegexReplace: 根据传入的布尔值 on,对字符串进行正则替换。
                            EraseFrontBackBlank: 移除字符串开头和结尾的空格。
                            EraseStringComma: 移除字符串中的逗号、双引号和多余的空格。
                            InitBuffer: 初始化内部缓冲区。
                            StoreBuffer: 将字符串和对应的键值对存储到内部缓冲区中。
                            SaveToStringMap: 根据索引、前一个X坐标、前一个Y坐标和长度,将字符串保存到一个字符串映射中。
                            isKorean: 判断字符是否为韩文字符。
                            PrepareBufferOut: 准备输出缓冲区,将输入字符串分割成适当长度的子串。
                            TranslationBuffer: 对内部缓冲区的字符串进行翻译。
                            GetTranslation: 获取给定字符串的翻译结果。
                            FlushBuffer: 清空缓冲区,根据缓冲区的内容进行处理,包括翻译和输出准备。
                            shouldInitBuffer: 判断是否应该初始化缓冲区。
                            is_uppercase: 判断字符是否为大写英文字母。
                            shouldFlushBuffer: 判断是否应该清空缓冲区。
                            endsWithSpecialCharacter: 判断字符串是否以特定字符结尾。
                            StringBufferControl: 控制字符串缓冲区的操作,根据条件进行翻译和处理。
                            整个类似乎是用于处理字典、正则表达式匹配、字符串翻译和输出控制的功能。在具体应用场景中,可能是用于文本处理或翻译的相关任务。


                            IP属地:贵州14楼2024-01-14 00:49
                            回复
                              吐槽:一个文件,500行+,28个函数,完全把原本代码写作了*山


                              IP属地:贵州15楼2024-01-14 00:54
                              回复