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