Fix: using curly brackets in custom Minecraft locale overrides

This commit is contained in:
chris 2024-05-17 22:48:46 +02:00 committed by GitHub
parent b010c500d8
commit 5ebb6ef0d6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -63,6 +63,13 @@ public class MinecraftTranslationRegistry extends TranslatableComponentRenderer<
} }
} }
// replace single quote instances which get lost in MessageFormat otherwise
localeString = localeString.replace("'", "''");
// Wrap all curly brackets with single quote inserts - fixes https://github.com/GeyserMC/Geyser/issues/4662
localeString = localeString.replace("{", "'{")
.replace("}", "'}");
// Replace the `%s` with numbered inserts `{0}` // Replace the `%s` with numbered inserts `{0}`
Pattern p = stringReplacement; Pattern p = stringReplacement;
Matcher m = p.matcher(localeString); Matcher m = p.matcher(localeString);
@ -83,8 +90,7 @@ public class MinecraftTranslationRegistry extends TranslatableComponentRenderer<
} }
m.appendTail(sb); m.appendTail(sb);
// replace single quote instances which get lost in MessageFormat otherwise
// Locale shouldn't need to be specific - dates for example will not be handled // Locale shouldn't need to be specific - dates for example will not be handled
return new MessageFormat(sb.toString().replace("'", "''"), Locale.ROOT); return new MessageFormat(sb.toString(), Locale.ROOT);
} }
} }