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