]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/Localized.java
Introduce dynamic icon generation from SVG
[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 ClassLoader getL10nClassLoader() {
12 return getClass().getClassLoader();
13 }
14
15 /** Default assumes that this is an {@link Enum} */
16 default String local(Locale locale) {
17 return LocaleUtils.local(this, locale);
18 }
19
20 default String lead() {
21 return LocaleUtils.lead(this);
22 }
23
24 default String local() {
25 return LocaleUtils.local(this);
26 }
27
28 default String format(Object[] args) {
29 Locale locale = LocaleUtils.getCurrentLocale();
30 MessageFormat format = new MessageFormat(local(locale).toString(), locale);
31 return format.format(args);
32 }
33
34 default String lead(Locale locale) {
35 return LocaleUtils.toLead(local(locale).toString(), locale);
36 }
37
38 static class Untranslated implements Localized {
39 private String msg;
40
41 public Untranslated(String msg) {
42 super();
43 this.msg = msg;
44 }
45
46 @Override
47 public String local(Locale locale) {
48 return msg;
49 }
50
51 @Override
52 public String name() {
53 return null;
54 }
55
56 }
57 }