1 package com.jsql.view.swing.dialog.translate;
2
3 import com.jsql.view.swing.util.I18nViewUtil;
4 import com.jsql.view.swing.util.UiUtil;
5 import org.apache.logging.log4j.util.Strings;
6
7 import javax.swing.*;
8 import java.util.Locale;
9
10 public enum Language {
11
12 AR("Arabic", "ar", UiUtil.ICON_FLAG_AR, true, true),
13 RU("Russian", "ru", UiUtil.ICON_FLAG_RU),
14 ZH("Chinese", "zh", UiUtil.ICON_FLAG_ZH, true),
15 TR("Turkish", "tr", UiUtil.ICON_FLAG_TR),
16 EN("English", "en", UiUtil.ICON_FLAG_EN),
17 FR("French", "fr", UiUtil.ICON_FLAG_FR),
18 HI("Hindi", "hi", UiUtil.ICON_FLAG_HI, true),
19 CS("Czech", "cs", UiUtil.ICON_FLAG_CS),
20 DE("German", "de", UiUtil.ICON_FLAG_DE),
21 NL("Dutch", "nl", UiUtil.ICON_FLAG_NL),
22 ID("Indonesian", "id", UiUtil.ICON_FLAG_ID),
23 IT("Italian", "it", UiUtil.ICON_FLAG_IT),
24 ES("Spanish", "es", UiUtil.ICON_FLAG_ES),
25 AN("Andalusian", "es-an", UiUtil.ICON_FLAG_ES),
26 PT("Portuguese", "pt", UiUtil.ICON_FLAG_PT),
27 PL("Polish", "pl", UiUtil.ICON_FLAG_PL),
28 KO("Korean", "ko", UiUtil.ICON_FLAG_KO, true),
29 JA("Japanese", "ja", UiUtil.ICON_FLAG_JA, true),
30 RO("Romanian", "ro", UiUtil.ICON_FLAG_RO),
31 TA("Tamil", "ta", UiUtil.ICON_FLAG_LK),
32 SE("Swedish", "se", UiUtil.ICON_FLAG_SE),
33 FI("Finnish", "fi", UiUtil.ICON_FLAG_FI),
34 OT("another language", "unknown", new ImageIcon());
35
36 private final String nameEnglish;
37 private final ImageIcon flag;
38 private final String languageTag;
39 private final boolean isNonLatin;
40 private final boolean isRightToLeft;
41
42 Language(String nameEnglish, String languageTag, ImageIcon flag, boolean isNonLatin, boolean isRightToLeft) {
43 this.nameEnglish = nameEnglish;
44 this.flag = flag;
45 this.languageTag = languageTag;
46 this.isNonLatin = isNonLatin;
47 this.isRightToLeft = isRightToLeft;
48 }
49
50 Language(String nameEnglish, String languageTag, ImageIcon flag, boolean isNonLatin) {
51 this(nameEnglish, languageTag, flag, isNonLatin, false);
52 }
53
54 Language(String nameEnglish, String languageTag, ImageIcon flag) {
55 this(nameEnglish, languageTag, flag, false, false);
56 }
57
58 public String getMenuItemLabel() {
59 var label = Locale.forLanguageTag(this.languageTag).getDisplayLanguage(Locale.forLanguageTag(this.languageTag));
60 if (Strings.isNotBlank(Locale.forLanguageTag(this.languageTag).getCountry())) {
61 label += " ("+ this.nameEnglish +")";
62 }
63 return this.isNonLatin ? I18nViewUtil.formatNonLatin(label) : label;
64 }
65
66 public boolean isCurrentLanguage() {
67 return Locale.forLanguageTag(this.languageTag).getLanguage().equals(Locale.getDefault().getLanguage());
68 }
69
70 public ImageIcon getFlag() {
71 return this.flag;
72 }
73
74 public boolean isRightToLeft() {
75 return this.isRightToLeft;
76 }
77
78 public String getLanguageTag() {
79 return this.languageTag;
80 }
81
82 @Override
83 public String toString() {
84 return this.nameEnglish;
85 }
86 }