Properly localise message replacement even if message itself is not localised
This commit is contained in:
1 parent
9fa47727f4
commit
db9b725e10
3 files changed
+24
-32
No files matched your search
@@ -112,9 +112,9 @@ public class MVCommandIssuer extends BukkitCommandIssuer {
|
||||
} 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,39 +27,12 @@ public final class LocalizedMessage extends Message implements MessageKeyProvide
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -103,7 +103,7 @@ public sealed class Message permits LocalizedMessage {
|
||||
* @return The replacements
|
||||
*/
|
||||
public @NotNull String[] getReplacements(@NotNull Locales locales, @Nullable CommandIssuer commandIssuer) {
|
||||
return getReplacements();
|
||||
return toReplacementsArray(locales, commandIssuer, replacements);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -152,7 +152,7 @@ public sealed class Message permits LocalizedMessage {
|
||||
* @return The formatted, localized message
|
||||
*/
|
||||
public @NotNull String formatted(@NotNull CommandIssuer commandIssuer) {
|
||||
return formatted();
|
||||
return formatted(commandIssuer.getManager().getLocales(), commandIssuer);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -166,7 +166,11 @@ public sealed class Message permits LocalizedMessage {
|
||||
* @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 @@ public sealed class Message permits LocalizedMessage {
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user