📄 language.java
字号:
public static Language getLoginLanguage ()
{
return s_loginLanguage;
} // getLanguage
/**
* Set Default Login Language
* @param language language
*/
public static void setLoginLanguage (Language language)
{
if (language != null)
{
s_loginLanguage = language;
log.config(s_loginLanguage.toString());
}
} // setLanguage
/**************************************************************************
* Define Language
* @param name - displayed value, e.g. English
* @param AD_Language - the code of system supported langauge, e.g. en_US
* (might be different than Locale - i.e. if the system does not support the language)
* @param locale - the Locale, e.g. Locale.US
* @param decimalPoint true if Decimal Point - if null, derived from Locale
* @param javaDatePattern Java date pattern as not all locales are defined - if null, derived from Locale
* @param mediaSize default media size
*/
public Language (String name, String AD_Language, Locale locale,
Boolean decimalPoint, String javaDatePattern, MediaSize mediaSize)
{
if (name == null || AD_Language == null || locale == null)
throw new IllegalArgumentException ("Language - parameter is null");
m_name = name;
m_AD_Language = AD_Language;
m_locale = locale;
//
m_decimalPoint = decimalPoint;
setDateFormat (javaDatePattern);
setMediaSize (mediaSize);
} // Language
/**
* Define Language with A4 and default decimal point and date format
* @param name - displayed value, e.g. English
* @param AD_Language - the code of system supported langauge, e.g. en_US
* (might be different than Locale - i.e. if the system does not support the language)
* @param locale - the Locale, e.g. Locale.US
*/
public Language (String name, String AD_Language, Locale locale)
{
this (name, AD_Language, locale, null, null, null);
} // Language
/** Name */
private String m_name;
/** Language (key) */
private String m_AD_Language;
/** Locale */
private Locale m_locale;
//
private Boolean m_decimalPoint;
private Boolean m_leftToRight;
private SimpleDateFormat m_dateFormat;
private MediaSize m_mediaSize = MediaSize.ISO.A4;
/**
* Get Language Name.
* e.g. English
* @return name
*/
public String getName()
{
return m_name;
} // getName
/**
* Get Application Dictionary Language (system supported).
* e.g. en-US
* @return AD_Language
*/
public String getAD_Language()
{
return m_AD_Language;
} // getAD_Language
/**
* Set Application Dictionary Language (system supported).
* @param AD_Language e.g. en-US
*/
public void setAD_Language (String AD_Language)
{
if (AD_Language != null)
{
m_AD_Language = AD_Language;
log.config(toString());
}
} // getAD_Language
/**
* Get Locale
* @return locale
*/
public Locale getLocale()
{
return m_locale;
} // getLocale
/**
* Overwrite Locale
* @param locale locale
*/
public void setLocale (Locale locale)
{
if (locale == null)
return;
m_locale = locale;
m_decimalPoint = null; // reset
} // getLocale
/**
* Get Language Code.
* e.g. en - derived from Locale
* @return language code
*/
public String getLanguageCode()
{
return m_locale.getLanguage();
} // getLanguageCode
/**
* Component orientation is Left To Right
* @return true if left-to-right
*/
public boolean isLeftToRight()
{
if (m_leftToRight == null)
// returns true if language not iw, ar, fa, ur
m_leftToRight = new Boolean(ComponentOrientation.getOrientation(m_locale).isLeftToRight());
return m_leftToRight.booleanValue();
} // isLeftToRight
/**
* Returns true if Decimal Point (not comma)
* @return use of decimal point
*/
public boolean isDecimalPoint()
{
if (m_decimalPoint == null)
{
DecimalFormatSymbols dfs = new DecimalFormatSymbols(m_locale);
m_decimalPoint = new Boolean(dfs.getDecimalSeparator() == '.');
}
return m_decimalPoint.booleanValue();
} // isDecimalPoint
/**
* Is This the Base Language
* @return true if base Language
*/
public boolean isBaseLanguage()
{
return this.equals(getBaseLanguage());
} // isBaseLanguage
/**
* Set Date Pattern.
* The date format is not checked for correctness
* @param javaDatePattern for details see java.text.SimpleDateFormat,
* format must be able to be converted to database date format by
* using the upper case function.
* It also must have leading zero for day and month.
*/
public void setDateFormat (String javaDatePattern)
{
if (javaDatePattern == null)
return;
m_dateFormat = (SimpleDateFormat)DateFormat.getDateInstance
(DateFormat.SHORT, m_locale);
try
{
m_dateFormat.applyPattern(javaDatePattern);
}
catch (Exception e)
{
log.severe(javaDatePattern + " - " + e);
m_dateFormat = null;
}
} // setDateFormat
/**
* Get (Short) Date Format.
* The date format must parseable by org.compiere.grid.ed.MDocDate
* i.e. leading zero for date and month
* @return date format MM/dd/yyyy - dd.MM.yyyy
*/
public SimpleDateFormat getDateFormat()
{
if (m_dateFormat == null)
{
m_dateFormat = (SimpleDateFormat)DateFormat.getDateInstance
(DateFormat.SHORT, m_locale);
String sFormat = m_dateFormat.toPattern();
// some short formats have only one M and d (e.g. ths US)
if (sFormat.indexOf("MM") == -1 && sFormat.indexOf("dd") == -1)
{
String nFormat = "";
for (int i = 0; i < sFormat.length(); i++)
{
if (sFormat.charAt(i) == 'M')
nFormat += "MM";
else if (sFormat.charAt(i) == 'd')
nFormat += "dd";
else
nFormat += sFormat.charAt(i);
}
// log.finer(sFormat + " => " + nFormat);
m_dateFormat.applyPattern(nFormat);
}
// Unknown short format => use JDBC
if (m_dateFormat.toPattern().length() != 8)
m_dateFormat.applyPattern("yyyy-MM-dd");
// 4 digit year
if (m_dateFormat.toPattern().indexOf("yyyy") == -1)
{
sFormat = m_dateFormat.toPattern();
String nFormat = "";
for (int i = 0; i < sFormat.length(); i++)
{
if (sFormat.charAt(i) == 'y')
nFormat += "yy";
else
nFormat += sFormat.charAt(i);
}
m_dateFormat.applyPattern(nFormat);
}
m_dateFormat.setLenient(true);
}
return m_dateFormat;
} // getDateFormat
/**
* Get Date Time Format.
* Used for Display only
* @return Date Time format MMM d, yyyy h:mm:ss a z -or- dd.MM.yyyy HH:mm:ss z
* -or- j nnn aaaa, H' ?????? 'm' ????'
*/
public SimpleDateFormat getDateTimeFormat()
{
SimpleDateFormat retValue = (SimpleDateFormat)DateFormat.getDateTimeInstance
(DateFormat.MEDIUM, DateFormat.LONG, m_locale);
// log.finer("Pattern=" + retValue.toLocalizedPattern() + ", Loc=" + retValue.toLocalizedPattern());
return retValue;
} // getDateTimeFormat
/**
* Get Time Format.
* Used for Display only
* @return Time format h:mm:ss z or HH:mm:ss z
*/
public SimpleDateFormat getTimeFormat()
{
return (SimpleDateFormat)DateFormat.getTimeInstance
(DateFormat.LONG, m_locale);
} // getTimeFormat
/**
* Get Database Date Pattern.
* Derive from date pattern (make upper case)
* @return date pattern
*/
public String getDBdatePattern()
{
return getDateFormat().toPattern().toUpperCase(m_locale);
} // getDBdatePattern
/**
* Get default MediaSize
* @return media size
*/
public MediaSize getMediaSize()
{
return m_mediaSize;
} // getMediaSize
/**
* Set default MediaSize
* @param size media size
*/
public void setMediaSize (MediaSize size)
{
if (size != null)
m_mediaSize = size;
} // setMediaSize
/**
* String Representation
* @return string representation
*/
public String toString()
{
StringBuffer sb = new StringBuffer("Language=[");
sb.append(m_name).append(",Locale=").append(m_locale.toString())
.append(",AD_Language=").append(m_AD_Language)
.append(",DatePattern=").append(getDBdatePattern())
.append(",DecimalPoint=").append(isDecimalPoint())
.append("]");
return sb.toString();
} // toString
/**
* Hash Code
* @return hashcode
*/
public int hashCode()
{
return m_AD_Language.hashCode();
} // hashcode
/**
* Equals.
* Two languages are equal, if they have the same AD_Language
* @param obj compare
* @return true if AD_Language is the same
*/
public boolean equals(Object obj)
{
if (obj instanceof Language)
{
Language cmp = (Language)obj;
if (cmp.getAD_Language().equals(m_AD_Language))
return true;
}
return false;
} // equals
/**************************************************************************
* Test
* @param args ignored
*/
public static void main(String[] args)
{
System.out.println(Locale.TRADITIONAL_CHINESE);
System.out.println(Locale.TAIWAN);
System.out.println(Locale.SIMPLIFIED_CHINESE);
System.out.println(Locale.CHINESE);
System.out.println(Locale.PRC);
}
} // Language
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -