Skip to content

Commit

Permalink
Add optional internationalization support
Browse files Browse the repository at this point in the history
  • Loading branch information
rchomczyk committed Oct 27, 2024
1 parent 21a2bfc commit a2ceb58
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package dev.shiza.honey.message.key;

import java.util.Locale;

public final class MessageKeyProcessingException extends IllegalArgumentException {

public MessageKeyProcessingException(final Locale locale) {
super("Could not resolve message for language with tag %s.".formatted(locale));
}

public MessageKeyProcessingException(final String key) {
super("Could not resolve message with key %s.".formatted(key));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package dev.shiza.honey.message.key;

import dev.shiza.honey.processor.Processor;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public final class MessageKeyProcessor implements Processor {

private static final Pattern MESSAGE_PATTERN = Pattern.compile("\\[\\[(\\w+):([^]]+)]]");
private final MessageSource messageSource;

public MessageKeyProcessor(final MessageSource messageSource) {
this.messageSource = messageSource;
}

@Override
public String process(final String content) {
final Matcher matcher = MESSAGE_PATTERN.matcher(content);
if (matcher.find()) {
final Locale locale = Locale.forLanguageTag(matcher.group(1));
final String key = matcher.group(2);
return messageSource.message(locale, key);
}
return content;
}
}
11 changes: 11 additions & 0 deletions honey-common/src/dev/shiza/honey/message/key/MessageSource.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package dev.shiza.honey.message.key;

import java.util.Locale;
import java.util.Map;

public interface MessageSource {

void register(final Locale locale, final Map<String, String> messages);

String message(final Locale locale, final String key);
}

0 comments on commit a2ceb58

Please sign in to comment.