Skip to content

Commit a2ceb58

Browse files
committed
Add optional internationalization support
1 parent 21a2bfc commit a2ceb58

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed

.idea/vcs.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package dev.shiza.honey.message.key;
2+
3+
import java.util.Locale;
4+
5+
public final class MessageKeyProcessingException extends IllegalArgumentException {
6+
7+
public MessageKeyProcessingException(final Locale locale) {
8+
super("Could not resolve message for language with tag %s.".formatted(locale));
9+
}
10+
11+
public MessageKeyProcessingException(final String key) {
12+
super("Could not resolve message with key %s.".formatted(key));
13+
}
14+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package dev.shiza.honey.message.key;
2+
3+
import dev.shiza.honey.processor.Processor;
4+
import java.util.Locale;
5+
import java.util.regex.Matcher;
6+
import java.util.regex.Pattern;
7+
8+
public final class MessageKeyProcessor implements Processor {
9+
10+
private static final Pattern MESSAGE_PATTERN = Pattern.compile("\\[\\[(\\w+):([^]]+)]]");
11+
private final MessageSource messageSource;
12+
13+
public MessageKeyProcessor(final MessageSource messageSource) {
14+
this.messageSource = messageSource;
15+
}
16+
17+
@Override
18+
public String process(final String content) {
19+
final Matcher matcher = MESSAGE_PATTERN.matcher(content);
20+
if (matcher.find()) {
21+
final Locale locale = Locale.forLanguageTag(matcher.group(1));
22+
final String key = matcher.group(2);
23+
return messageSource.message(locale, key);
24+
}
25+
return content;
26+
}
27+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package dev.shiza.honey.message.key;
2+
3+
import java.util.Locale;
4+
import java.util.Map;
5+
6+
public interface MessageSource {
7+
8+
void register(final Locale locale, final Map<String, String> messages);
9+
10+
String message(final Locale locale, final String key);
11+
}

0 commit comments

Comments
 (0)