Language.java
package com.jsql.view.swing.dialog.translate;
import com.jsql.view.swing.util.I18nViewUtil;
import com.jsql.view.swing.util.UiUtil;
import javax.swing.*;
import java.util.Locale;
public enum Language {
AR("Arabic", "ar", UiUtil.ICON_FLAG_AR, true, true),
RU("Russian", "ru", UiUtil.ICON_FLAG_RU),
ZH("Chinese", "zh", UiUtil.ICON_FLAG_ZH, true),
TR("Turkish", "tr", UiUtil.ICON_FLAG_TR),
EN("English", "en", UiUtil.ICON_FLAG_EN),
FR("French", "fr", UiUtil.ICON_FLAG_FR),
HI("Hindi", "hi", UiUtil.ICON_FLAG_HI, true),
CS("Czech", "cs", UiUtil.ICON_FLAG_CS),
DE("German", "de", UiUtil.ICON_FLAG_DE),
NL("Dutch", "nl", UiUtil.ICON_FLAG_NL),
IN("Indonesian", "in", UiUtil.ICON_FLAG_IN),
IT("Italian", "it", UiUtil.ICON_FLAG_IT),
ES("Spanish", "es", UiUtil.ICON_FLAG_ES),
PT("Portuguese", "pt", UiUtil.ICON_FLAG_PT),
PL("Polish", "pl", UiUtil.ICON_FLAG_PL),
KO("Korean", "ko", UiUtil.ICON_FLAG_KO, true),
JA("Japanese", "ja", UiUtil.ICON_FLAG_JA, true),
RO("Romanian", "ro", UiUtil.ICON_FLAG_RO),
TA("Tamil", "ta", UiUtil.ICON_FLAG_LK),
SE("Swedish", "se", UiUtil.ICON_FLAG_SE),
FI("Finnish", "fi", UiUtil.ICON_FLAG_FI),
OT("another language", "unknown", new ImageIcon());
private final String nameEnglish; // required for default logging and english modal translate into
private final ImageIcon flag;
private final String languageTag;
private final boolean isNonLatin;
private final boolean isRightToLeft;
Language(String nameEnglish, String languageTag, ImageIcon flag, boolean isNonLatin, boolean isRightToLeft) {
this.nameEnglish = nameEnglish;
this.flag = flag;
this.languageTag = languageTag;
this.isNonLatin = isNonLatin;
this.isRightToLeft = isRightToLeft;
}
Language(String nameEnglish, String languageTag, ImageIcon flag, boolean isNonLatin) {
this(nameEnglish, languageTag, flag, isNonLatin, false);
}
Language(String nameEnglish, String languageTag, ImageIcon flag) {
this(nameEnglish, languageTag, flag, false, false);
}
public String getMenuItemLabel() {
var label = Locale.forLanguageTag(this.languageTag).getDisplayLanguage(Locale.forLanguageTag(this.languageTag));
return this.isNonLatin ? I18nViewUtil.formatNonLatin(label) : label;
}
public boolean isCurrentLanguage() {
return Locale.forLanguageTag(this.languageTag).getLanguage().equals(Locale.getDefault().getLanguage());
}
public ImageIcon getFlag() {
return this.flag;
}
public boolean isRightToLeft() {
return this.isRightToLeft;
}
public String getLanguageTag() {
return this.languageTag;
}
@Override
public String toString() {
return this.nameEnglish;
}
}