KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > util > Language


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

14 package org.compiere.util;
15
16 import java.awt.ComponentOrientation JavaDoc;
17 import java.text.DateFormat JavaDoc;
18 import java.text.DecimalFormatSymbols JavaDoc;
19 import java.text.SimpleDateFormat JavaDoc;
20 import java.util.ArrayList JavaDoc;
21 import java.util.Arrays JavaDoc;
22 import java.util.Locale JavaDoc;
23
24 import javax.print.attribute.standard.MediaSize JavaDoc;
25
26 /**
27  * Language Management.
28  *
29  * @author Jorg Janke
30  * @version $Id: Language.java,v 1.38 2003/10/30 15:13:11 acarstoiu Exp $
31  */

32 public class Language
33 {
34     /**************************************************************************
35      * Languages
36      * http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt
37      * Countries
38      * http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
39      *************************************************************************/

40
41     /** Base Language */
42     public static final String JavaDoc AD_Language_en_US = "en_US";
43     /** Additional Languages */
44     private static final String JavaDoc AD_Language_en_GB = "en_GB";
45     private static final String JavaDoc AD_Language_en_AU = "en_AU";
46     private static final String JavaDoc AD_Language_ca_ES = "ca_ES";
47     private static final String JavaDoc AD_Language_hr_HR = "hr_HR";
48     private static final String JavaDoc AD_Language_de_DE = "de_DE";
49     private static final String JavaDoc AD_Language_it_IT = "it_IT";
50     private static final String JavaDoc AD_Language_es_ES = "es_ES";
51     private static final String JavaDoc AD_Language_fr_FR = "fr_FR";
52     private static final String JavaDoc AD_Language_bg_BG = "bg_BG";
53     private static final String JavaDoc AD_Language_th_TH = "th_TH";
54     private static final String JavaDoc AD_Language_pl_PL = "pl_PL";
55     private static final String JavaDoc AD_Language_zh_TW = "zh_TW";
56     private static final String JavaDoc AD_Language_nl_NL = "nl_NL";
57     private static final String JavaDoc AD_Language_no_NO = "np_NO";
58     private static final String JavaDoc AD_Language_pt_BR = "pt_BR";
59     private static final String JavaDoc AD_Language_ru_RU = "ru_RU";
60     private static final String JavaDoc AD_Language_sv_SE = "sv_SE";
61     private static final String JavaDoc AD_Language_vi_VN = "vi_VN";
62     private static final String JavaDoc AD_Language_zh_CN = "zh_CN";
63     private static final String JavaDoc AD_Language_dk_DK = "dk_DK";
64     private static final String JavaDoc AD_Language_ml_ML = "ml_ML";
65     private static final String JavaDoc AD_Language_fa_IR = "fa_IR";
66     private static final String JavaDoc AD_Language_fi_FI = "fi_FI";
67     private static final String JavaDoc AD_Language_ro_RO = "ro_RO";
68
69     /***
70      * System Languages.
71      * If you want to add a language, extend the array
72      * - or use the addLanguage() method.
73      **/

74     static private Language[] s_languages = {
75         new Language ("English",
76             AD_Language_en_US, Locale.US, null, null,
77             MediaSize.NA.LETTER), // Base Language
78
// ordered by locale
79
// Not predefined Locales - need to define decimal Point and date pattern (not sure about time)
80
new Language ("\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438 (BG)",
81             AD_Language_bg_BG, new Locale JavaDoc("bg","BG"), new Boolean JavaDoc(false), "dd/MM/yyyy",
82             MediaSize.ISO.A4),
83         new Language ("Catal\u00e0",
84             AD_Language_ca_ES, new Locale JavaDoc("ca", "ES"), null, "dd/MM/yyyy",
85             MediaSize.ISO.A4),
86         new Language ("Deutsch",
87             AD_Language_de_DE, Locale.GERMANY, null, null,
88             MediaSize.ISO.A4),
89         new Language ("Dansk",
90             AD_Language_dk_DK, new Locale JavaDoc("dk","DK"), new Boolean JavaDoc(false), "dd-MM-yyyy",
91             MediaSize.ISO.A4),
92         new Language ("English (AU)",
93             AD_Language_en_AU, new Locale JavaDoc("en","AU"), null, "dd/MM/yyyy",
94             MediaSize.ISO.A4),
95         new Language ("English (UK)",
96             AD_Language_en_GB, Locale.UK, null, null,
97             MediaSize.ISO.A4),
98         new Language ("Espa\u00f1ol",
99             AD_Language_es_ES, new Locale JavaDoc("es","ES"), new Boolean JavaDoc(false), "dd/MM/yyyy",
100             MediaSize.ISO.A4),
101         new Language ("Farsi",
102             AD_Language_fa_IR, new Locale JavaDoc("fa","IR"), new Boolean JavaDoc(false), "dd-MM-yyyy",
103             MediaSize.ISO.A4),
104         new Language ("Finnish",
105             AD_Language_fi_FI, new Locale JavaDoc("fi","FI"), new Boolean JavaDoc(true), "dd.MM.yyyy",
106             MediaSize.ISO.A4),
107         new Language ("Fran\u00e7ais",
108             AD_Language_fr_FR, Locale.FRANCE, null, null, // dd.MM.yy
109
MediaSize.ISO.A4),
110         new Language ("Hrvatski",
111             AD_Language_hr_HR, new Locale JavaDoc("hr", "HR"), null, "dd.MM.yyyy",
112             MediaSize.ISO.A4),
113         new Language ("Italiano",
114             AD_Language_it_IT, Locale.ITALY, null, null, // dd.MM.yy
115
MediaSize.ISO.A4),
116         new Language ("Malay",
117             AD_Language_ml_ML, new Locale JavaDoc("ml","ML"), new Boolean JavaDoc(false), "dd-MM-yyyy",
118             MediaSize.ISO.A4),
119         new Language ("Nederlands",
120             AD_Language_nl_NL, new Locale JavaDoc("nl","NL"), new Boolean JavaDoc(false), "dd-MM-yyyy",
121             MediaSize.ISO.A4),
122         new Language ("Norsk",
123             AD_Language_no_NO, new Locale JavaDoc("no","NO"), new Boolean JavaDoc(false), "dd/MM/yyyy",
124             MediaSize.ISO.A4),
125         new Language ("Polski",
126             AD_Language_pl_PL, new Locale JavaDoc("pl","PL"), new Boolean JavaDoc(false), "dd-MM-yyyy",
127             MediaSize.ISO.A4),
128         new Language ("Portuguese (BR)",
129             AD_Language_pt_BR, new Locale JavaDoc("pt","BR"), new Boolean JavaDoc(false), "dd/MM/yyyy",
130             MediaSize.ISO.A4),
131         new Language ("Rom\u00e2n\u0103",
132             AD_Language_ro_RO, new Locale JavaDoc("ro","RO"), new Boolean JavaDoc(false), "dd.MM.yyyy",
133             MediaSize.ISO.A4),
134         new Language ("\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)",
135             AD_Language_ru_RU, new Locale JavaDoc("ru","RU"), new Boolean JavaDoc(false), "dd-MM-yyyy",
136             MediaSize.ISO.A4),
137         new Language ("Svenska",
138             AD_Language_sv_SE, new Locale JavaDoc("sv","SE"), new Boolean JavaDoc(false), "dd.MM.yyyy",
139             MediaSize.ISO.A4),
140         new Language ("\u0e44\u0e17\u0e22 (TH)",
141             AD_Language_th_TH, new Locale JavaDoc("th","TH"), new Boolean JavaDoc(false), "dd/MM/yyyy",
142             MediaSize.ISO.A4),
143         new Language ("Vi\u1EC7t Nam",
144             AD_Language_vi_VN, new Locale JavaDoc("vi","VN"), new Boolean JavaDoc(false), "dd-MM-yyyy",
145             MediaSize.ISO.A4),
146         new Language ("\u7b80\u4f53\u4e2d\u6587 (CN)",
147             AD_Language_zh_CN, Locale.CHINA, null, "yyyy-MM-dd",
148             MediaSize.ISO.A4),
149         new Language ("\u7e41\u9ad4\u4e2d\u6587 (TW)",
150             AD_Language_zh_TW, Locale.TAIWAN, null, null, // dd.MM.yy
151
MediaSize.ISO.A4)
152
153     };
154     /** Default Language */
155     private static Language s_defaultLanguage = s_languages[0];
156
157     /**
158      * Get Number of Languages
159      * @return Language count
160      */

161     public static int getLanguageCount()
162     {
163         return s_languages.length;
164     } // getLanguageCount
165

166     /**
167      * Get Language
168      * @param index index
169      * @return Language
170      */

171     public static Language getLanguage (int index)
172     {
173         if (index < 0 || index >= s_languages.length)
174             return s_defaultLanguage;
175         return s_languages[index];
176     } // getLanguage
177

178     /**
179      * Add Language to supported Languages
180      * @param language new language
181      */

182     public static void addLanguage (Language language)
183     {
184         if (language == null)
185             return;
186         ArrayList JavaDoc list = new ArrayList JavaDoc(Arrays.asList(s_languages));
187         list.add(language);
188         s_languages = new Language[list.size()];
189         list.toArray(s_languages);
190     } // addLanguage
191

192     /*************************************************************************/
193
194     /**
195      * Get Language.
196      * If language does not exist, create it on the fly assuming taht it is valid
197      * @param langInfo either language (en) or locale (en-US) or display name
198      * @return Name (e.g. Deutsch)
199      */

200     public static Language getLanguage (String JavaDoc langInfo)
201     {
202         String JavaDoc lang = langInfo;
203         if (lang == null || lang.length() == 0)
204             lang = System.getProperty("user.language", "");
205
206         // Search existing Languages
207
for (int i = 0; i < s_languages.length; i++)
208         {
209             if (lang.equals(s_languages[i].getName())
210                 || lang.equals(s_languages[i].getLanguageCode())
211                 || lang.equals(s_languages[i].getAD_Language()))
212                 return s_languages[i];
213         }
214
215         // Create Language on the fly
216
if (lang.length() == 5) // standard format <language>_<Country>
217
{
218             String JavaDoc language = lang.substring(0,2);
219             String JavaDoc country = lang.substring(3);
220             Locale JavaDoc locale = new Locale JavaDoc(language, country);
221             System.out.println ("Adding Language=" + language + ", Country=" + country + ", Locale=" + locale);
222             Language ll = new Language (lang, lang, locale);
223             // Add to Languages
224
java.util.List JavaDoc list = new ArrayList JavaDoc(Arrays.asList(s_languages));
225             list.add(ll);
226             s_languages = new Language [list.size()];
227             list.toArray(s_languages);
228             // Return Language
229
return ll;
230         }
231         // Get the default one
232
return s_defaultLanguage;
233     } // getLanguage
234

235     /**
236      * Is it the base language
237      * @param langInfo either language (en) or locale (en-US) or display name
238      * @return true if base language
239      */

240     public static boolean isBaseLanguage (String JavaDoc langInfo)
241     {
242         if (langInfo == null || langInfo.length() == 0
243             || langInfo.equals(s_languages[0].getName())
244             || langInfo.equals(s_languages[0].getLanguageCode())
245             || langInfo.equals(s_languages[0].getAD_Language()))
246             return true;
247         return false;
248     } // isBaseLanguage
249

250     /**
251      * Get Base Language
252      * @return Base Language
253      */

254     public static Language getBaseLanguage()
255     {
256         return s_languages[0];
257     } // getBase
258

259     /**
260      * Get Base Language code. (e.g. en-US)
261      * @return Base Language
262      */

263     public static String JavaDoc getBaseAD_Language()
264     {
265         return s_languages[0].getAD_Language();
266     } // getBase
267

268     /**
269      * Get Supported Locale
270      * @param langInfo either language (en) or locale (en-US) or display name
271      * @return Supported Locale
272      */

273     public static Locale JavaDoc getLocale (String JavaDoc langInfo)
274     {
275         return getLanguage(langInfo).getLocale();
276     } // getLocale
277

278     /**
279      * Get Supported Language
280      * @param langInfo either language (en) or locale (en-US) or display name
281      * @return AD_Language (e.g. en-US)
282      */

283     public static String JavaDoc getAD_Language (String JavaDoc langInfo)
284     {
285         return getLanguage(langInfo).getAD_Language();
286     } // getAD_Language
287

288     /**
289      * Get Supported Language
290      * @param locale Locale
291      * @return AD_Language (e.g. en-US)
292      */

293     public static String JavaDoc getAD_Language (Locale JavaDoc locale)
294     {
295         if (locale != null)
296             for (int i = 0; i < s_languages.length; i++)
297             {
298                 if (locale.equals(s_languages[i].getLocale()))
299                     return s_languages[i].getAD_Language();
300             }
301         return s_defaultLanguage.getAD_Language();
302     } // getLocale
303

304     /**
305      * Get Language Name
306      * @param langInfo either language (en) or locale (en-US) or display name
307      * @return Langauge Name (e.g. English)
308      */

309     public static String JavaDoc getName (String JavaDoc langInfo)
310     {
311         return getLanguage(langInfo).getName();
312     } // getAD_Language
313

314     /**
315      * Returns true if Decimal Point (not comma)
316      * @param langInfo either language (en) or locale (en-US) or display name
317      * @return use of decimal point
318      */

319     public static boolean isDecimalPoint(String JavaDoc langInfo)
320     {
321         return getLanguage(langInfo).isDecimalPoint();
322     } // getAD_Language
323

324     /**
325      * Get Display names of supported languages
326      * @return Array of Language names
327      */

328     public static String JavaDoc[] getNames()
329     {
330         String JavaDoc[] retValue = new String JavaDoc[s_languages.length];
331         for (int i = 0; i < s_languages.length; i++)
332             retValue[i] = s_languages[i].getName();
333         return retValue;
334     } // getNames
335

336     /*************************************************************************/
337
338     /**
339      * Get Default Language
340      * @return default Language
341      */

342     public static Language getLanguage ()
343     {
344         return s_defaultLanguage;
345     } // getLanguage
346

347     /**
348      * Set Default Language
349      * @param language language
350      */

351     public static void setLanguage (Language language)
352     {
353         if (language != null)
354         {
355             s_defaultLanguage = language;
356             System.out.println(s_defaultLanguage);
357         }
358     } // setLanguage
359

360     /*************************************************************************/
361
362     /**
363      * Define Language
364      * @param name - displayed value, e.g. English
365      * @param AD_Language - the code of system supported langauge, e.g. en_US
366      * (might be different than Locale - i.e. if the system does not support the language)
367      * @param locale - the Locale, e.g. Locale.US
368      * @param decimalPoint true if Decimal Point - if null, derived from Locale
369      * @param javaDatePattern Java date pattern as not all locales are defined - if null, derived from Locale
370      * @param mediaSize default media size
371      */

372     public Language (String JavaDoc name, String JavaDoc AD_Language, Locale JavaDoc locale,
373         Boolean JavaDoc decimalPoint, String JavaDoc javaDatePattern, MediaSize JavaDoc mediaSize)
374     {
375         if (name == null || AD_Language == null || locale == null)
376             throw new IllegalArgumentException JavaDoc ("Language - parameter is null");
377         m_name = name;
378         m_AD_Language = AD_Language;
379         m_locale = locale;
380         //
381
m_decimalPoint = decimalPoint;
382         setDateFormat (javaDatePattern);
383         setMediaSize (mediaSize);
384     } // Language
385

386     /**
387      * Define Language with A4 and default decimal point and date format
388      * @param name - displayed value, e.g. English
389      * @param AD_Language - the code of system supported langauge, e.g. en_US
390      * (might be different than Locale - i.e. if the system does not support the language)
391      * @param locale - the Locale, e.g. Locale.US
392      */

393     public Language (String JavaDoc name, String JavaDoc AD_Language, Locale JavaDoc locale)
394     {
395         this (name, AD_Language, locale, null, null, null);
396     } // Language
397

398
399     /** Name */
400     private String JavaDoc m_name;
401     /** Language (key) */
402     private String JavaDoc m_AD_Language;
403     /** Locale */
404     private Locale JavaDoc m_locale;
405     //
406
private Boolean JavaDoc m_decimalPoint;
407     private Boolean JavaDoc m_leftToRight;
408     private SimpleDateFormat JavaDoc m_dateFormat;
409     private MediaSize JavaDoc m_mediaSize = MediaSize.ISO.A4;
410
411     /**
412      * Get Language Name.
413      * e.g. English
414      * @return name
415      */

416     public String JavaDoc getName()
417     {
418         return m_name;
419     } // getName
420

421     /**
422      * Get Application Dictionary Language (system supported).
423      * e.g. en-US
424      * @return AD_Language
425      */

426     public String JavaDoc getAD_Language()
427     {
428         return m_AD_Language;
429     } // getAD_Language
430

431     /**
432      * Set Application Dictionary Language (system supported).
433      * @param AD_Language e.g. en-US
434      */

435     public void setAD_Language (String JavaDoc AD_Language)
436     {
437         if (AD_Language != null)
438         {
439             m_AD_Language = AD_Language;
440             System.out.println(toString());
441         }
442     } // getAD_Language
443

444     /**
445      * Get Locale
446      * @return locale
447      */

448     public Locale JavaDoc getLocale()
449     {
450         return m_locale;
451     } // getLocale
452

453     /**
454      * Overwrite Locale
455      * @param locale locale
456      */

457     public void setLocale (Locale JavaDoc locale)
458     {
459         if (locale == null)
460             return;
461         m_locale = locale;
462         m_decimalPoint = null; // reset
463
} // getLocale
464

465     /**
466      * Get Language Code.
467      * e.g. en - derived from Locale
468      * @return language code
469      */

470     public String JavaDoc getLanguageCode()
471     {
472         return m_locale.getLanguage();
473     } // getLanguageCode
474

475     /**
476      * Component orientation is Left To Right
477      * @return true if left-to-right
478      */

479     public boolean isLeftToRight()
480     {
481         if (m_leftToRight == null)
482             // returns true if language not iw, ar, fa, ur
483
m_leftToRight = new Boolean JavaDoc(ComponentOrientation.getOrientation(m_locale).isLeftToRight());
484         return m_leftToRight.booleanValue();
485     } // isLeftToRight
486

487     /**
488      * Returns true if Decimal Point (not comma)
489      * @return use of decimal point
490      */

491     public boolean isDecimalPoint()
492     {
493         if (m_decimalPoint == null)
494         {
495             DecimalFormatSymbols JavaDoc dfs = new DecimalFormatSymbols JavaDoc(m_locale);
496             m_decimalPoint = new Boolean JavaDoc(dfs.getDecimalSeparator() == '.');
497         }
498         return m_decimalPoint.booleanValue();
499     } // isDecimalPoint
500

501     /**
502      * Is This the Base Language
503      * @return true if base Language
504      */

505     public boolean isBaseLanguage()
506     {
507         return this.equals(getBaseLanguage());
508     } // isBaseLanguage
509

510     /**
511      * Set Date Pattern.
512      * The date format is not checked for correctness
513      * @param javaDatePattern for details see java.text.SimpleDateFormat,
514      * format must be able to be converted to database date format by
515      * using the upper case function.
516      * It also must have leading zero for day and month.
517      */

518     public void setDateFormat (String JavaDoc javaDatePattern)
519     {
520         if (javaDatePattern == null)
521             return;
522         m_dateFormat = (SimpleDateFormat JavaDoc)DateFormat.getDateInstance
523                 (DateFormat.SHORT, m_locale);
524         try
525         {
526             m_dateFormat.applyPattern(javaDatePattern);
527         }
528         catch (Exception JavaDoc e)
529         {
530             System.err.println("Language.setDateFormat " + javaDatePattern + " - " + e);
531             m_dateFormat = null;
532         }
533     } // setDateFormat
534

535     /**
536      * Get (Short) Date Format.
537      * The date format must parseable by org.compiere.grid.ed.MDocDate
538      * i.e. leading zero for date and month
539      * @return date format MM/dd/yyyy - dd.MM.yyyy
540      */

541     public SimpleDateFormat JavaDoc getDateFormat()
542     {
543         if (m_dateFormat == null)
544         {
545             m_dateFormat = (SimpleDateFormat JavaDoc)DateFormat.getDateInstance
546                 (DateFormat.SHORT, m_locale);
547             String JavaDoc sFormat = m_dateFormat.toPattern();
548             // some short formats have only one M and d (e.g. ths US)
549
if (sFormat.indexOf("MM") == -1 && sFormat.indexOf("dd") == -1)
550             {
551                 String JavaDoc nFormat = "";
552                 for (int i = 0; i < sFormat.length(); i++)
553                 {
554                     if (sFormat.charAt(i) == 'M')
555                         nFormat += "MM";
556                     else if (sFormat.charAt(i) == 'd')
557                         nFormat += "dd";
558                     else
559                         nFormat += sFormat.charAt(i);
560                 }
561             // System.out.println(sFormat + " => " + nFormat);
562
m_dateFormat.applyPattern(nFormat);
563             }
564             // Unknown short format => use JDBC
565
if (m_dateFormat.toPattern().length() != 8)
566                 m_dateFormat.applyPattern("yyyy-MM-dd");
567
568             // 4 digit year
569
if (m_dateFormat.toPattern().indexOf("yyyy") == -1)
570             {
571                 sFormat = m_dateFormat.toPattern();
572                 String JavaDoc nFormat = "";
573                 for (int i = 0; i < sFormat.length(); i++)
574                 {
575                     if (sFormat.charAt(i) == 'y')
576                         nFormat += "yy";
577                     else
578                         nFormat += sFormat.charAt(i);
579                 }
580                 m_dateFormat.applyPattern(nFormat);
581             }
582             m_dateFormat.setLenient(true);
583         }
584         return m_dateFormat;
585     } // getDateFormat
586

587     /**
588      * Get Date Time Format.
589      * Used for Display only
590      * @return Date Time format MMM d, yyyy h:mm:ss a z -or- dd.MM.yyyy HH:mm:ss z
591      * -or- j nnn aaaa, H' ?????? 'm' ????'
592      */

593     public SimpleDateFormat JavaDoc getDateTimeFormat()
594     {
595         SimpleDateFormat JavaDoc retValue = (SimpleDateFormat JavaDoc)DateFormat.getDateTimeInstance
596             (DateFormat.MEDIUM, DateFormat.LONG, m_locale);
597     // System.out.println("Pattern=" + retValue.toLocalizedPattern() + ", Loc=" + retValue.toLocalizedPattern());
598
return retValue;
599     } // getDateTimeFormat
600

601     /**
602      * Get Time Format.
603      * Used for Display only
604      * @return Time format h:mm:ss z or HH:mm:ss z
605      */

606     public SimpleDateFormat JavaDoc getTimeFormat()
607     {
608         return (SimpleDateFormat JavaDoc)DateFormat.getTimeInstance
609             (DateFormat.LONG, m_locale);
610     } // getTimeFormat
611

612     /**
613      * Get Database Date Pattern.
614      * Derive from date pattern (make upper case)
615      * @return date pattern
616      */

617     public String JavaDoc getDBdatePattern()
618     {
619         return getDateFormat().toPattern().toUpperCase(m_locale);
620     } // getDBdatePattern
621

622     /**
623      * Get default MediaSize
624      * @return media size
625      */

626     public MediaSize JavaDoc getMediaSize()
627     {
628         return m_mediaSize;
629     } // getMediaSize
630

631     /**
632      * Set default MediaSize
633      * @param size media size
634      */

635     public void setMediaSize (MediaSize JavaDoc size)
636     {
637         if (size != null)
638             m_mediaSize = size;
639     } // setMediaSize
640

641     /**
642      * String Representation
643      * @return string representation
644      */

645     public String JavaDoc toString()
646     {
647         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("Language=[");
648         sb.append(m_name).append(",Locale=").append(m_locale.toString())
649             .append(",AD_Language=").append(m_AD_Language)
650             .append(",DatePattern=").append(getDBdatePattern())
651             .append(",DecimalPoint=").append(isDecimalPoint())
652             .append("]");
653         return sb.toString();
654     } // toString
655

656     /**
657      * Hash Code
658      * @return hashcode
659      */

660     public int hashCode()
661     {
662         return m_AD_Language.hashCode();
663     } // hashcode
664

665     /**
666      * Equals.
667      * Two languages are equal, if they have the same AD_Language
668      * @param obj compare
669      * @return true if AD_Language is the same
670      */

671     public boolean equals(Object JavaDoc obj)
672     {
673         if (obj instanceof Language)
674         {
675             Language cmp = (Language)obj;
676             if (cmp.getAD_Language().equals(m_AD_Language))
677                 return true;
678         }
679         return false;
680     } // equals
681

682     /*************************************************************************/
683
684     /**
685      * Test
686      * @param args args
687      */

688     public static void main(String JavaDoc[] args)
689     {
690         System.out.println(Locale.TRADITIONAL_CHINESE);
691         System.out.println(Locale.TAIWAN);
692         System.out.println(Locale.SIMPLIFIED_CHINESE);
693         System.out.println(Locale.CHINESE);
694         System.out.println(Locale.PRC);
695     }
696
697 } // Language
698
Popular Tags