View Javadoc
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;  // required for default logging and english modal translate into
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  }