Skip to content

Fix the Rising Kick hit count and the Korean particle tokens in translated text - #66

Merged
AngeloTadeucci merged 4 commits into
mainfrom
fix/938-strip-pp-particle-tokens
Nov 1, 2026
Merged

AngeloTadeucci merged 4 commits into
mainfrom
fix/938-strip-pp-particle-tokens

Conversation

@AngeloTadeucci

@AngeloTadeucci AngeloTadeucci commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

This fixes two string-data bugs, so they can be tested in game as one XML patch.

Rising Kick tooltip. Skill 11000031 hits 3 times at every level, but its tooltip said 7 hits from level 2 to 12. The typo is in Nexon's Korean source, and every locale copied it. Nexon fixed it later in kr_latest, which says 3회. This used to be #65.

$pp particle tokens. $pp:A,B$ makes the Korean client pick a particle for the noun before it. Outside Korean, the token is wrong:

  • In English, 522 strings still had 804 leftover Korean pairs such as $pp:를,을$, and players saw Korean text. Every one of those strings was already fully English outside the token, so each token is deleted with nothing in its place.
  • In cn, es, jp, pt and zh_Hant, 44 strings had the translator's own word inside the token, such as $pp2:从$ or $pp2:に$. Deleting those would lose the word, so each token is replaced by the word it holds.

Changes

  • WeblateConverter/Json/{en,ko,cn,jp}/stringskilldescription.json: Rising Kick levels 2 to 12, both feature variants where present, 7 changed to 3. Xml/string/{de,pt}/korskilldescription_100.xml get the same edit directly, because those locales have no Weblate source for the file and the regen leaves them alone.
  • WeblateConverter/Json/en/{koritemdescription,questdescription_final,scriptnpc,scriptquest,stringguide}.json: English tokens deleted. 799 were well-formed pairs. 5 were bare $pp: fragments a translator had left without the pair.
  • WeblateConverter/Json/{cn,es,jp,pt,zh_Hant}/*.json, 11 files: each single-word token becomes its word, and empty $pp:$ tokens and bare fragments are dropped. Seven tokens offer two choices: jp から、によって and から、の become から. es para, por and lo, la and pt de, do are dropped, because the sentence reads without them. The two zh_Hant bingo prompts were malformed and are fixed as whole strings, to 您是否要使用{0}來檢查數字{1}? and {0}請選擇要檢查的數字。.
  • Xml/string/<locale>/: regenerated from that JSON with json-to-xml-all.
  • WeblateConverter/Converter/Converter.cs: verify now prints a [DATA] line listing English keys that still contain $pp. It reports without failing, like the converter's other data checks, so one stray token from Weblate can't stop the nightly from publishing everything else.

Verification

  • Rising Kick: all 48 level blocks in Xml/skill/11/11000031.xml have three attacks with damageProperty count="1". After the change, every 11000031 line says 3 in cn, de, en, jp, kr and pt. Each changed line differs from main by that one character. A second regen leaves the diff byte-identical, so the nightly won't revert the de and pt edits.
  • English $pp: none of the 522 changed strings has Hangul or $pp left. The other $name:...$ placeholders are unchanged, and no double spaces or spaces before punctuation were added. Each of the 455 changed XML lines equals its old line with the tokens removed.
  • Other locales: each of the 44 changed JSON lines and 44 XML lines equals its old line with only the token text changed. The original escaping is kept.
  • With main's English JSON, verify en prints five [DATA] lines covering 455 keys and exits 0. On this branch it prints none. verify-all passes.
  • An adversarial review read about 70 English entries before and after, rare tokens included, and they all read correctly.

Not checked: any of this in a client. I don't read Chinese, Japanese or Spanish, so the reworded lines in those locales are worth a look from someone who does, especially the es and pt lead_skill strings. Their translations were already garbled before this change.

Left alone: 479 tokens in de, pt and jp entries that are still untranslated Korean. They need translation, not stripping.

Weblate commits to these JSON files almost daily, and this changes 632 of their lines outside Weblate. Committing Weblate's pending changes before merge, then letting it pull, avoids a merge conflict on its side. Weblate may also flag the en, cn and jp Rising Kick rows as needing edits, because their ko source string changed.

Fixes MS2Community/PrivateMaple2#1570
Fixes MS2Community/PrivateMaple2#938

AngeloTadeucci and others added 2 commits November 1, 2026 17:11
$pp:A,B$ and $pp2:A,B$ make the Korean client pick a postposition
particle. English has no such thing, but 522 English entries still
carried 804 of them, and the client printed them as Korean text. Every
affected entry is otherwise fully English, so each token is deleted and
nothing is put in its place. Five bare "$pp:" fragments with no particle
pair are dropped the same way.

Edited in the Weblate JSON and regenerated into Xml/string/en.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The English client prints $pp:A,B$ as Korean text, so verify now lists
the English entries that still carry one. It reports instead of failing,
like the other data checks, because one stray token from Weblate should
not stop the nightly from publishing every other translation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 37 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8f9a69e7-0a46-42cc-94e9-f38363d0a258
Commits

Reviewing files that changed from the base of the PR and between 5c469b7 and 519e738.

Files selected for processing: 43
  • WeblateConverter/Converter/Converter.cs
  • WeblateConverter/Json/cn/korflash.json
  • WeblateConverter/Json/cn/koritemdescription.json
  • WeblateConverter/Json/cn/scriptquest.json
  • WeblateConverter/Json/cn/stringchapterbookdesc.json
  • WeblateConverter/Json/cn/stringcommon.json
  • WeblateConverter/Json/cn/stringskilldescription.json
  • WeblateConverter/Json/en/koritemdescription.json
  • WeblateConverter/Json/en/questdescription_final.json
  • WeblateConverter/Json/en/scriptnpc.json
  • WeblateConverter/Json/en/scriptquest.json
  • WeblateConverter/Json/en/stringguide.json
  • WeblateConverter/Json/en/stringskilldescription.json
  • WeblateConverter/Json/es/korflash.json
  • WeblateConverter/Json/es/stringcommon.json
  • WeblateConverter/Json/jp/korflash.json
  • WeblateConverter/Json/jp/questdescription_final.json
  • WeblateConverter/Json/jp/stringskilldescription.json
  • WeblateConverter/Json/ko/stringskilldescription.json
  • WeblateConverter/Json/pt/korflash.json
  • WeblateConverter/Json/zh_Hant/korflash.json
  • Xml/string/cn/korflash.xml
  • Xml/string/cn/koritemdescription.xml
  • Xml/string/cn/korskilldescription_100.xml
  • Xml/string/cn/scriptquest.xml
  • Xml/string/cn/stringchapterbookdesc.xml
  • Xml/string/cn/stringcommon.xml
  • Xml/string/de/korskilldescription_100.xml
  • Xml/string/en/koritemdescription.xml
  • Xml/string/en/korskilldescription_100.xml
  • Xml/string/en/questdescription_final.xml
  • Xml/string/en/scriptnpc.xml
  • Xml/string/en/scriptquest.xml
  • Xml/string/en/stringguide.xml
  • Xml/string/es/korflash.xml
  • Xml/string/es/stringcommon.xml
  • Xml/string/jp/korflash.xml
  • Xml/string/jp/korskilldescription_100.xml
  • Xml/string/jp/questdescription_final.xml
  • Xml/string/kr/korskilldescription_100.xml
  • Xml/string/pt/korflash.xml
  • Xml/string/pt/korskilldescription_100.xml
  • Xml/string/zh_Hant/korflash.xml
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

AngeloTadeucci and others added 2 commits November 1, 2026 17:26
Skill 11000031 has three single-hit attack points in all 48 level blocks,
but its description says 7 hits from level 2 to 12. The typo is in the
Korean source and was carried into every locale. Fixed in the Weblate JSON
for en, ko, cn and jp, and directly in the de and pt XML, which have no
Weblate source for this file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In cn, es, jp, pt and zh_Hant, 44 entries wrap the translator's own word
in a Korean particle token, such as $pp2:从$ or $pp2:に$. Each token is
replaced by the word it holds, and empty or bare $pp: fragments are
deleted. The seven two-choice tokens get から in jp and are dropped in es
and pt, where the sentence reads without them. Entries still in
untranslated Korean are left for translation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AngeloTadeucci AngeloTadeucci changed the title Remove the Korean particle tokens English players see in quest and NPC text Fix the Rising Kick hit count and the Korean particle tokens in translated text Nov 1, 2026
@AngeloTadeucci
AngeloTadeucci merged commit 1b0a948 into main Nov 1, 2026
3 checks passed
@AngeloTadeucci
AngeloTadeucci deleted the fix/938-strip-pp-particle-tokens branch November 1, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant