From db9b725e10915f5f0a252509d9326f38cf5d684e Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Tue, 9 Dec 2025 16:17:43 +0800 Subject: [PATCH] Properly localise message replacement even if message itself is not localised --- .../core/command/MVCommandIssuer.java | 4 +-- .../core/locale/message/LocalizedMessage.java | 27 ------------------- .../core/locale/message/Message.java | 25 ++++++++++++++--- 3 files changed, 24 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/mvplugins/multiverse/core/command/MVCommandIssuer.java b/src/main/java/org/mvplugins/multiverse/core/command/MVCommandIssuer.java index 5b8789325..beff388b4 100644 --- a/src/main/java/org/mvplugins/multiverse/core/command/MVCommandIssuer.java +++ b/src/main/java/org/mvplugins/multiverse/core/command/MVCommandIssuer.java @@ -112,9 +112,9 @@ public void sendMessage(MessageType messageType, Message message) { } else { var formatter = getManager().getFormat(messageType); if (formatter != null) { - sendMessage(formatter.format(message.formatted())); + sendMessage(formatter.format(message.formatted(getManager().getLocales(), this))); } else { - sendMessage(message.formatted()); + sendMessage(message.formatted(getManager().getLocales(), this)); } } } diff --git a/src/main/java/org/mvplugins/multiverse/core/locale/message/LocalizedMessage.java b/src/main/java/org/mvplugins/multiverse/core/locale/message/LocalizedMessage.java index 8a3c8d063..49a4f575f 100644 --- a/src/main/java/org/mvplugins/multiverse/core/locale/message/LocalizedMessage.java +++ b/src/main/java/org/mvplugins/multiverse/core/locale/message/LocalizedMessage.java @@ -27,39 +27,12 @@ public MessageKey getMessageKey() { return messageKeyProvider.getMessageKey(); } - @Override - public @NotNull String[] getReplacements(@NotNull Locales locales, @Nullable CommandIssuer commandIssuer) { - return toReplacementsArray(locales, commandIssuer, replacements); - } - - @Override - public @NotNull String formatted(@NotNull CommandIssuer commandIssuer) { - return formatted(commandIssuer.getManager().getLocales(), commandIssuer); - } - @Override public @NotNull String formatted(@NotNull Locales locales, @Nullable CommandIssuer commandIssuer) { - Objects.requireNonNull(locales, "locales must not be null"); - String[] parsedReplacements = getReplacements(locales, commandIssuer); if (parsedReplacements.length == 0) { return locales.getMessage(commandIssuer, getMessageKey()); } return ACFUtil.replaceStrings(locales.getMessage(commandIssuer, getMessageKey()), parsedReplacements); } - - private static String[] toReplacementsArray( - @NotNull Locales locales, - @Nullable CommandIssuer commandIssuer, - @NotNull MessageReplacement... replacements) { - String[] replacementsArray = new String[replacements.length * 2]; - int i = 0; - for (MessageReplacement replacement : replacements) { - replacementsArray[i++] = replacement.getKey(); - replacementsArray[i++] = replacement.getReplacement().fold( - str -> str, - message -> message.formatted(locales, commandIssuer)); - } - return replacementsArray; - } } diff --git a/src/main/java/org/mvplugins/multiverse/core/locale/message/Message.java b/src/main/java/org/mvplugins/multiverse/core/locale/message/Message.java index 0859a99d9..78b76de76 100644 --- a/src/main/java/org/mvplugins/multiverse/core/locale/message/Message.java +++ b/src/main/java/org/mvplugins/multiverse/core/locale/message/Message.java @@ -103,7 +103,7 @@ protected Message(@NotNull String message, @NotNull MessageReplacement... replac * @return The replacements */ public @NotNull String[] getReplacements(@NotNull Locales locales, @Nullable CommandIssuer commandIssuer) { - return getReplacements(); + return toReplacementsArray(locales, commandIssuer, replacements); } /** @@ -152,7 +152,7 @@ protected Message(@NotNull String message, @NotNull MessageReplacement... replac * @return The formatted, localized message */ public @NotNull String formatted(@NotNull CommandIssuer commandIssuer) { - return formatted(); + return formatted(commandIssuer.getManager().getLocales(), commandIssuer); } /** @@ -166,7 +166,11 @@ protected Message(@NotNull String message, @NotNull MessageReplacement... replac * @return The formatted, localized message */ public @NotNull String formatted(@NotNull Locales locales, @Nullable CommandIssuer commandIssuer) { - return formatted(); + String[] parsedReplacements = getReplacements(locales, commandIssuer); + if (parsedReplacements.length == 0) { + return raw(); + } + return ACFUtil.replaceStrings(message, parsedReplacements); } private static String[] toReplacementsArray(@NotNull MessageReplacement... replacements) { @@ -178,4 +182,19 @@ private static String[] toReplacementsArray(@NotNull MessageReplacement... repla } return replacementsArray; } + + private static String[] toReplacementsArray( + @NotNull Locales locales, + @Nullable CommandIssuer commandIssuer, + @NotNull MessageReplacement... replacements) { + String[] replacementsArray = new String[replacements.length * 2]; + int i = 0; + for (MessageReplacement replacement : replacements) { + replacementsArray[i++] = replacement.getKey(); + replacementsArray[i++] = replacement.getReplacement().fold( + str -> str, + message -> message.formatted(locales, commandIssuer)); + } + return replacementsArray; + } }