Add Portuguese dictionary overrides for mistranslated names - #58
Closed
meketreve wants to merge 1 commit into
Closed
Add Portuguese dictionary overrides for mistranslated names#58meketreve wants to merge 1 commit into
meketreve wants to merge 1 commit into
Conversation
customDictionary carries one overlay file per language, merged into the client's own dictionary at sign in. Portuguese had no file at all, so every string a Portuguese-speaking player reads comes straight from the machine translation the client ships, and that pass mangles the game's coined names and reads several ordinary English words in the wrong sense. This adds 3.json with 153 corrections, all of them names, labels or short UI strings. Descriptions and body text are deliberately untouched. The group counts below overlap: one string can need two of these fixes. Coined names restored (50 entries, plus the three Titan-50 product codes). Solibdit had become "Solidão" (loneliness), Colixum "Colixo", Fewulum "Poucolum", and the whole rare material line -- Stermid, Colixid, Helioquid, Prismocid, Tricarine -- had grown Portuguese endings. German keeps every one of these names verbatim and Russian transliterates them intact, so Portuguese was the only language inventing substitutes. Ammunition charges (30 entries). "Charge" had been read as a billing charge throughout: "Cobranças de mineiro", "Taxas de colheita", "Patente de cobrança de mineração". A module's charge is a "carga". Scanning (9 entries, plus 4 reworded by hand). "Scan" had been read as document digitisation. Sweeping ground with the geoscanner is a "varredura"; scanning a unit, a container or an inventory is "escanear". Consistent charge naming (43 entries). The miner charge family carried six Portuguese wordings for two English ones -- "Carga do mineiro", "Carga de mineiro", "Carga de minerador", "Carga de mineração profunda", "Carga de minerador profundo", "Carga de mineiro profundo". They now follow one pattern built from the English shape. Gender agreement (13 entries). "Carga" is feminine, so the geoscanner charges read "baseada em bloco", not "baseado". Two extensions named the wrong material outright. Silgium mining was "exploração de silício" -- silicon -- and titan ore mining was "mineração de titãs", of giants. Titan and Titanium are separate materials in this game and the Portuguese pass had merged them. The running server currently has a 1.9 MB 3.json that is a full export of the client dictionary rather than an overlay. This file is an overlay in the shape of the other languages here; if a deployment copies this folder over the server's, the base Portuguese strings have to come from the client, as they do for Hungarian, French and Polish. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
Author
|
Closing this. Per maintainer direction, a change belongs in one project only, and the dictionaries live in OPDB — That also answers the question this PR's body asked. The base Portuguese strings come from the server's own export in OPDB, not from the client, so an overlay in this repo was the wrong shape: both repos own the same deployed path, and this repo's copy holds 153 entries against OPDB's 18058. The corrections moved to OpenPerpetuum/OPDB#390, unchanged, as a partial staging file alongside the |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
src/Perpetuum.ServerService2/data/customDictionary/carries one overlay file per language, keyed by the language id in the comment block at the top ofPerpetuum/CustomDictionary.cs.Session.SignInpicks the file matching the id the client asks for and merges it into the client's own dictionary.There are files for English (0), Hungarian (1), German (2), French (5) and Polish (7). Portuguese (3) has none, so every string a Portuguese-speaking player reads comes straight from the machine-translated pass the client ships — and that pass is rough.
This PR adds
3.jsonwith 153 corrections. It is an overlay in the same shape as the other five: names, labels and short UI strings only. Descriptions and body text are deliberately left alone.The problems it fixes
Coined names were translated
The game's invented material and plant names had been run through a dictionary. The worst of it:
def_graveldef_gammaterialplant_grass_bdef_stermonitdef_silgiumdef_epritondef_electroplant_fruitdef_titan_rare_smallThe whole rare-material line had the same treatment: Stermid → Estermid, Colixid → Colixido, Helioquid → Helioquido, Prismocid → Prismocida, Tricarine → Tricarina.
German keeps every one of these names verbatim and Russian transliterates them intact — Коликсиум is Colixum, Солибдит is Solibdit. Portuguese was the only language inventing substitutes, which is the argument for this whole group.
Two extensions named the wrong material
ext_silgium_miner_expertext_titan_miner_expertdef_titan(Titan ore) anddef_titanium(Titanium) are separate materials in this game; the Portuguese pass had merged them, anddef_ammo_mining_titan_patenteven said "minério de titânio"."Charge" was read as a billing charge
30 entries.
cf_mining_ammoread "Cobranças de mineiro",cf_ammo_harvesting_patentsread "Taxas de colheita" — invoices, not ammunition. A module's charge is a carga."Scan" was read as document digitisation
9 entries used digitalizar / digitalização, which is what you do to a paper document. Sweeping ground with the geoscanner is a varredura; scanning a unit, a container or an inventory is escanear.
One family, six wordings
The miner charge items carried six Portuguese wordings for two English ones — Carga do mineiro, Carga de mineiro, Carga de minerador, Carga de mineração profunda, Carga de minerador profundo, Carga de mineiro profundo. 43 entries now follow one pattern derived from the English shape:
Carga de mineração (<material>)andCarga de mineração profunda (<material>), withProtótipo deandCTwhere the English has them.Gender agreement
13 entries. Carga is feminine, so the geoscanner charges read "baseada em bloco", not "baseado".
How the corrections were produced
Every substitution is guarded by the English string: a rule only fires on a key whose English value contains the term being protected, so an unrelated Portuguese word that happens to look similar is never touched. The generated set was then read entry by entry, and six entries no rule could handle were written by hand:
cf_harvesting_turret_units("Colhendo torres", a gerund blunder),ext_syndicate_industry_specialist("sindicalizado", unionised), and four category labels that had to be brought into step with the item names they head.Verification
json.loadswith a duplicate-key hook: 153 entries, no duplicates, every value a string, UTF-8, no BOM, CRLF and 2-space indent matching7.json.{%QUANTITY%}/{%DEFINITION%}, every[...]marker and everyCTsuffix present before is present after.dotnet build PerpetuumServer2.sln -c Release -p:Platform=x64: 0 errors. Thedata/folder is not referenced by any.csproj, so this file cannot affect the build; the run is only to show the tree is clean.One thing worth a maintainer's eye
The running server currently has a 1.9 MB
3.jsonthat is a full export of the client dictionary, not an overlay — it contains client UI strings likeacceptandavatar_beard. The same is true of the deployed0.json,2.jsonand4.json. This PR adds an overlay in the shape of the tracked files. If the deployment copies this folder over the server's, the base Portuguese strings then have to come from the client, the way they already do for Hungarian, French and Polish. Worth confirming before it ships.Russian (4) is in the same position as Portuguese was — deployed but untracked. Not touched here.
🤖 Generated with Claude Code