Policy request: If a string changes its meaning, use a new string ID
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 20/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Domain
- internationalization, localization
Research direction
The issue names no files, tests, or entry points to modify. Start by determining how string IDs are stored, referenced, and translated, and whether deprecated IDs can be tracked safely. Done would require an agreed policy, an implementation path, and documented handling for changed strings and exceptions.
Written by the indexing model from the issue text.
Description
I suggest a new policy for when an existing string in the game is changed.
For example, when STR_1234 was "I need to go to the toilet.", but then a bug was found because the guest should have said "I do not need to go to the toilet.", the current policy is to change STR_1234.
I suggest to NOT do that and instead add a new string ID. Also, the old string ID should be considered deprecated from that point on and should no longer be used by the game anywhere.
Policy rules
The policy rule should state that whenever a string was changed, by default a new string ID should be used, and the old string ID must be deprecated.
There could be a list somewhere that lists all deprecated string IDs.
In some narrow cases, an exception is permissible when the meaning of the original string did not change and the overall change is very small. For example, a typo fix in the original string would not require a new string ID, unless the typo was a word with a different meaning. However, this exception should be used with care.
Why?
If you change the meaning of an existing string (for example, into it's complete opposite), this creates a huge problem for languages that have translated the old string. Because the old translation remains at the string ID, this means that suddenly, a wrong translation with the wrong meaning will appear in the game, with no fault of the translator. A translation that was correct before suddenly broke. This is bad.
Only with GitHub issues do we keep track of changing strings, but this approach is error-prone. It is very possible some outdated translations linger in the game and we have no idea they're outdated because we accidentally lost track of them.
In gettext-based programs, any string that was changed is usually kept in the files for reference, but is marked as outdated; the new string always starts untranslated or with a fuzzy translation (a translation that is incomplete and hasn't been verified yet and will be ignored by the program for now).
Is this possible?
TBH, I don't know if this policy is even possible. Is it reasonable to deprecate string IDs or are some string IDs so deeply hardcoded into the game they cannot be deprecated ever? If that's the case, then this whole suggestion admittedly falls apart.
Longterm solution
In the longterm, I wish OpenRCT2 just switches to gettext, because it doesn't have this problem to begin with and is way more robust and battle-tested. But that's of course much more complicated to do.
- Dominant language
- No language data
- Stars
- 71
- Forks
- 212
- Avg merge
- 17h 44m
- Merged PRs (30d)
- 21
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from OpenRCT2/Localisation
-
String 5586Openchanged field
Difficulty 1/5 Under an hour Newbie friendliness 70/100
OpenRCT2/Localisation#3557 ·
Maintainers usually reply within 1 day
-
String 7064-7081Opennew field
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
OpenRCT2/Localisation#3552 ·
Maintainers usually reply within 1 day
-
String 7044–7049Opennew field
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
OpenRCT2/Localisation#3539 ·
Maintainers usually reply within 1 day
-
String 7043Opennew field
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
OpenRCT2/Localisation#3528 ·
Maintainers usually reply within 1 day
-
String 7040Opennew field
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
OpenRCT2/Localisation#3516 ·
Maintainers usually reply within 1 day
All issues in OpenRCT2/Localisation
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
grokability/snipe-it#19786 ·
Maintainers usually reply within 1 day
-
sync-en
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 3 days
-
app bug config windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
openai/codex#51926 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
cloudflare/kumo#848 ·
Maintainers usually reply within 1 day
-
good first issue i18n low small
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day