]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/Localized.java
Merge remote-tracking branch 'origin/master' into v2.x
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / Localized.java
1 package org.argeo.cms;
2
3 import java.text.MessageFormat;
4 import java.util.Locale;
5
6 /** Localized object. */
7 @FunctionalInterface
8 public interface Localized {
9 String name();
10
11 /** Default assumes that this is an {@link Enum} */
12 default String local(Locale locale) {
13 return LocaleUtils.local(this, locale);
14 }
15
16 default String lead() {
17 return LocaleUtils.lead(this);
18 }
19
20 default String local() {
21 return LocaleUtils.local(this);
22 }
23
24 default String format(Object[] args) {
25 Locale locale = LocaleUtils.getCurrentLocale();
26 MessageFormat format = new MessageFormat(local(locale).toString(), locale);
27 return format.format(args);
28 }
29
30 default String lead(Locale locale) {
31 return LocaleUtils.toLead(local(locale).toString(), locale);
32 }
33
34 static class Untranslated implements Localized {
35 private String msg;
36
37 public Untranslated(String msg) {
38 super();
39 this.msg = msg;
40 }
41
42 @Override
43 public String local(Locale locale) {
44 return msg;
45 }
46
47 @Override
48 public String name() {
49 return null;
50 }
51
52 }
53 }