Skip to content

Backfill Missing FTL Translations for Markings, Materials, IPC/Silion, Et All#121

Open
rebaserHEAD wants to merge 3 commits into
Triad-Sector:mainfrom
rebaserHEAD:fix/missing-ftl-translations
Open

Backfill Missing FTL Translations for Markings, Materials, IPC/Silion, Et All#121
rebaserHEAD wants to merge 3 commits into
Triad-Sector:mainfrom
rebaserHEAD:fix/missing-ftl-translations

Conversation

@rebaserHEAD
Copy link
Copy Markdown
Contributor

About the PR

Sweep across the repo for prototypes whose name: / chatMessages: fields pointed at locale keys that did not exist, or used literal English instead of keys. All gaps closed: 27 marking primary keys, 102 marking sublayer keys, 11 material names, and 20 emote name/chatMessage keys across the upstream tree and every fork directory (_DV, _EinsteinEngines, _Goobstation, _Impstation, _Moffstation, _Mono, _NF, _Obelisk, _Starlight, _white, Nyanotrasen).

Highlights:

  • MaterialsBluespace, BrassGlass, UraniumGlass, ReinforcedUraniumGlass, Cotton, Brass, Pyrogel, three FuelGrade* variants, and PrizeTicket had name: fields that were either raw English ("fuel-grade plasma", "prize ticket") or pointed at undefined keys. YAMLs now reference materials-* keys, and the keys are defined in the matching locale dir.
  • IPC / Silicon emotesWhirr and Boop had chatMessages: [ whirrs ] / [ boops. ] (literal). Now point at chat-emote-msg-whirr / -boop, both defined.
  • Species emotes — Nyanotrasen Hiss/Meow/Mew/Growl/Purr, DV Harpy/Vulpkanin/Feroxi vocalizations (Ring, Pew, Bang, Rev, Caw, Bark, Snarl, Whimper, Howl, Awoo, Gnash), and StarLight Whine/Yip all had literal English chatMessages and in some cases literal name: fields. All converted to proper locale keys with FTL entries added.
  • Markings — Avali bicolored/multi-wing typo (Leftt vs Left), Feroxi animated tail variants, Hydrakin painted ear/tail sublayers, Resomi earring case mismatch, Snake large tail RSI-state mismatch, Lizard/Vox animated wagging variants, Rodentia default ear/tail, CatEars sublayers, and others.

Audit tool lives at Tools/ftl-audit.ps1 for future re-checks.

Why / Balance

Players who pick a marking that has no FTL key see the raw prototype ID (e.g. marking-AvaliBicoloredTipsLeftHand-l_hand_front) in the customization picker. Materials with literal-string names work in chat but bypass localization entirely, so any future translation work would skip them. IPC emotes were the most visible offender (raw whirrs showing up in chat instead of resolving through the locale system).

This is a strict bug-fix sweep with no balance impact.

Media

N/A, locale strings only.

Requirements

  • I have read relevant guidelines/documentation to this PR found on our devwiki.
  • I have added media to this PR or it does not require an ingame showcase.
  • I can confirm this PR contains either no AI-generated content, or AI-generated content that meets our guidelines.

How to test

  1. Open the character customization menu and cycle through markings for IPC, Avali, Feroxi, Vulpkanin, Rodentia, Hydrakin, Vox, Reptilian, and Resomi. No marking entry or color-slider label should display a raw marking-Xxx-yyy ID.
  2. Open the lathe / material storage UI and confirm Bluespace, Brass, Cotton, Pyrogel, the three FuelGrade materials, the Prize Ticket, and the Brass/Uranium glass variants all show human-readable names.
  3. As an IPC, use the *whirr and *boop emotes and confirm they render as Foo whirrs. / Foo boops. in chat instead of raw text.
  4. As a Harpy / Vulpkanin / Feroxi, run through the species-specific emotes (*ring, *pew, *bark, *howl, *gnash, etc.) and confirm chat output is well-formed.
  5. Optional: re-run Tools/ftl-audit.ps1 and confirm the report shows 0 missing entries across all four categories.

Breaking changes

None. All changes are additive locale entries plus prototype name: / chatMessages: field redirects from literal strings to locale keys. Save data is unaffected because marking/material/emote IDs themselves are unchanged.

Changelog
🆑

  • fix: Markings, materials, and IPC/Silicon emotes whose translations were missing now display proper localized names instead of raw prototype IDs or literal English.

…n emotes

Sweep across the repo for prototypes whose name/chatMessage fields pointed at
locale keys that did not exist (or used literal English instead of keys). All
gaps closed: 27 marking primary keys, 102 marking sublayer keys, 11 material
names, and 20 emote name/chatMessage keys across upstream + every fork dir.

Adds Tools/ftl-audit.ps1 so this regression can be re-checked after future
prototype changes.
@github-actions github-actions Bot added S: Untriaged YML No C# Doesn't contain any C# code FTL Changes to localization files size/M and removed S: Untriaged labels May 24, 2026
@Triad-Sector Triad-Sector changed the title Backfill missing FTL translations for markings, materials, IPC/Silico… Backfill Missing FTL Translations for Markings, Materials, IPC/Silico… May 24, 2026
@rebaserHEAD rebaserHEAD changed the title Backfill Missing FTL Translations for Markings, Materials, IPC/Silico… Backfill Missing FTL Translations for Markings, Materials, IPC/Silion, et all May 24, 2026
@Triad-Sector Triad-Sector changed the title Backfill Missing FTL Translations for Markings, Materials, IPC/Silion, et all Backfill Missing FTL Translations for Markings, Materials, IPC/Silion, Et All May 24, 2026
@rebaserHEAD
Copy link
Copy Markdown
Contributor Author

Can we re-kick this CI check? looks like it died mid way for some reason according to the logs.

The backfill commit added chat-emote-name-growl and chat-emote-name-purr
to the nyanotrasen locale, but _Starlight already defined them; Linguini
reported duplicate Message entries and the bundle load logged
_logSawmill.Error, failing Content.IntegrationTests.

Drop the nyanotrasen redefinitions (leaving a pointer comment), and while
the locale files were open, prune three other orphans no prototype ever
references: name-hiss in _Starlight (real Hiss uses name-reptilian-hiss),
name-mars + msg-mars in _Goobstation, and the typo'd msg-lurr / msg-liss
also in _Starlight.

Audit verified post-fix: 0 duplicate defs, 0 dangling refs across
chat-emote-* and delta-chat-emote-* namespaces.
Copy link
Copy Markdown
Collaborator

@mnva0 mnva0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for this PR! Not a test or full review—just some things I noticed

Comment thread Resources/Locale/en-US/_EinsteinEngines/emotes/emotes.ftl Outdated
Comment thread Tools/ftl-audit.ps1
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is for Triad, it may be a good idea to move this somewhere else? I would wait for input from other maintainers before making changes though

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah we can pull it out if we want but I don't disagree that this should probably be moved to a namespaced folder under tools but at the same time it seems like a fork dumping ground lol

@rebaserHEAD
Copy link
Copy Markdown
Contributor Author

One more time!

@rebaserHEAD rebaserHEAD reopened this May 24, 2026
@rebaserHEAD
Copy link
Copy Markdown
Contributor Author

Can you run just the failing test? Something fucky is going on.

@DDrakov
Copy link
Copy Markdown
Collaborator

DDrakov commented May 24, 2026

If it keep failing and unrelated then just ignore it atp

@rebaserHEAD
Copy link
Copy Markdown
Contributor Author

Yeah I've checked it on my side machine a few more times and I can't see why it would be causing an issue other than maybe it's just a lot of changes? but even then... ftl file changes aren't that huge so... yeah lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

FTL Changes to localization files No C# Doesn't contain any C# code size/M YML

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants