Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

文本断成莫名其妙的一行一行 #7

Closed
KrukaL opened this issue Jul 24, 2024 · 21 comments · Fixed by #8
Closed

文本断成莫名其妙的一行一行 #7

KrukaL opened this issue Jul 24, 2024 · 21 comments · Fixed by #8
Assignees
Labels
bug Something isn't working

Comments

@KrukaL
Copy link

KrukaL commented Jul 24, 2024

你好,我是 CER 的另一位汉化者,也是先前在B站评论区咨询数据库对照功能的人。
上周末 CER 2.0.1 更新后,我确实尝试了您的工具,但是发现了一个非常影响使用的地方:

QQ图片20240725003310

如图,本来应该连成完整一句的地方,却不知何故从中间断开。更糟的是,我可以确定这两句对应的物品文本中,全条目的内容绝对不止于此。结果只有其中部分被挑出,也没法查看上下文。

非常感谢您的工具,但是这个问题对我先前造成了比较大的困扰。因为有大量断开的文本,无从得知其所属句子是否完整,也没法比对上下文。我最终采用的方法还是用Yabber手动解包后,针对完整文本进行人工检查。

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 24, 2024

这个是我使用的分块算法的锅,按照换行符来分的 为了确保原来在一行的句子在分段后还是一行以保持文本的碎片感以及尽可能拓宽数据库的覆盖粒度。不过确实没有注意到你说的这个问题,后续会添加一些配置选项改成用句号或者直接按段落分块。感谢你的建议

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 24, 2024

另外上下文这块我会想想其他办法

@hhhxiao hhhxiao added the bug Something isn't working label Jul 24, 2024
@hhhxiao hhhxiao self-assigned this Jul 24, 2024
@KrukaL
Copy link
Author

KrukaL commented Jul 24, 2024

感谢您的答复。我找到了xml文本中这两句对应的条目:

QQ图片20240725005456
QQ图片20240725005429

确实如您所说,文本中被回车键隔开了,那么这样是解答了我的疑问。
接下来是个人的相关建议:在图中您可以看到,文本中完整的一段条目都是<text id="(键值)">开始,以</text>结束。不知是否有可能考虑以这样的相关特征来进行识别?这样提取出来的文本应该就是正常、完整的一段了。

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 24, 2024

你这个其实是有的,我甚至想的更深了一层,奈何效果比较差:)。在软件的设计中,一个text的便签被我分了三级,text 段落 以及句子 text就是你所说的,段落就是把text用空行(两个换行)隔开的部分,句子就是进一步把段落拆分(细节可以看https://hhhxiao.github.io/SoulsModTranslator/ 这里的技术细节部分, 我假定一行就是一个句子了)。这么做主要还是为了生成更细致的对比数据库以尽可能减少导出的文本量。但是本质上中英文本的对应还是得靠语义分析,这么简单的对应不太可靠 会造成各种问题,你提的issue就是其中一个。后面可能会考虑把三级优化成两级,把段落作为最小对比粒度,句子就不要了

@KrukaL
Copy link
Author

KrukaL commented Jul 24, 2024 via email

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 24, 2024

我后面多加个模式,让两种都支持吧。完整text模式和段落拆分模式,句子因为分的不准就丢进历史的垃圾堆去吧。后面等我更新了可以再试试这个软件

@KrukaL
Copy link
Author

KrukaL commented Jul 24, 2024 via email

@KrukaL KrukaL closed this as completed Jul 24, 2024
@hhhxiao
Copy link
Owner

hhhxiao commented Jul 25, 2024

还没修就别急着关,修好了会自动关的,顺便问一下你们在意换行信息吗,比如说一段文本是

AAAA, xxx,xxx
xxxxsd dsd dsds.
dsdsd

xxx,dsds.rrr,re
re.

我导出成这种会有影响吗

AAAA, xxx,xxx xxxxsd dsd dsds. dsdsd

xxx,dsds.rrr,re re.

@hhhxiao hhhxiao reopened this Jul 25, 2024
@KrukaL
Copy link
Author

KrukaL commented Jul 25, 2024 via email

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 25, 2024

了解了,感谢

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 28, 2024

我发现你说的这种

Skill: XXX (战技名)
ASDASDASD
KSKSKSKSK  (战技描述占数行)

是不存在的,战技名和战灰描述是分开存储在不同的文件上的。暂时还没找到例子。

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 28, 2024

我这边测试了下,如果加上按句子替换只会带来不到2%的文本量节省,所以这边打算直接删除按行分割,改成按段分以及不分两个选项

@KrukaL
Copy link
Author

KrukaL commented Jul 28, 2024

你可以在ArtsCaption下面找到这样的例子。具体来说,战灰描述、战技名、以及武器描述中的战技描述,分别存储在三套文件中:ArtsNameGemCaptionArtsCaption

此外,也可以在护甲等物品的说明(ProtectorCaption)中找到类似的例子:

Pitch-black armor thinly painted with dried blood.
Worn by the Night's Cavalry who ride funeral steeds.

Reduces weapon stamina cost by 4% and increases weapon damage by 4%.
If you do not have a weapon equipped with INT/FTH scaling, this item has the following effect:
Blood Thirst - When you drink a crimson flask, you gain a buff that causes all weapon attacks to recover HP for 20 seconds.

届时,按段分或者不分,都会把里面的换行符(\n)标记出来,对吗?

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 28, 2024

对的,都会保留原状,所有换行符都会保留,就是按整条文本导出和按段落导出两种。按照句子我是放弃了,主要是中英文句子分隔符太大多了(. ? ! ... 。等)而且实测效果也不好。

@KrukaL
Copy link
Author

KrukaL commented Jul 28, 2024

这样应该就可以满足今后的需求了,非常感谢

@KrukaL
Copy link
Author

KrukaL commented Jul 28, 2024

原谅我问一个愚蠢的问题:如果我要改正或者修改以前翻译过的部分,是不是直接在比对数据库提取出的json文件里改就行了?

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 28, 2024

对的,你的理解没问题(暂时没有更好的方案,就智只能手动修改数据库了,但是本质上这个数据库不是给人看的)

@hhhxiao hhhxiao linked a pull request Jul 28, 2024 that will close this issue
@hhhxiao
Copy link
Owner

hhhxiao commented Jul 28, 2024

#8 应该修了你说的问题,顺便发了个pre-release https://github.com/hhhxiao/SoulsModTranslator/releases/tag/v2.10

@KrukaL
Copy link
Author

KrukaL commented Jul 29, 2024

好嘞,我来试试,非常感谢

@KrukaL
Copy link
Author

KrukaL commented Jul 29, 2024

这样的话应该每条text都是分成两行,第一行是键值,第二行是实际的文本内容?
不过有两个好奇的地方:
1、我勾选了用\n替换换行后,为什么导出的换行符都是[@]呢?
2、生成中英双语样式是什么样的功能呢?

总得来说,这样实用度就很高了,再次感谢您的工作

@hhhxiao
Copy link
Owner

hhhxiao commented Jul 30, 2024

你理解没错,第一个换行符是【@】是我故意的,因为谷歌翻译会吞掉换行符
,用\n的话n会被当成单次翻译,所以这个相当于一个占位符,导入的话这个符号会被自动替换为换行。人工翻译不用管就行,导出就是多行的。
第二个顾名思义中英都有,方便校对的,主要是娱乐(重回巅峰mod那边建议的功能)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants