Home | History | Annotate | Download | only in layout
      1 //  2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html#License
      3 /*
      4  *******************************************************************************
      5  * Copyright (C) 1998-2008, International Business Machines Corporation and    *
      6  * others. All Rights Reserved.                                                *
      7  *******************************************************************************
      8  *
      9  * Created on Apr 4, 2003
     10  *
     11  *******************************************************************************
     12  */
     13 package com.ibm.icu.dev.tool.layout;
     14 
     15 /**
     16  * This class holds the list of languages.
     17  *
     18  * @author emader
     19  *
     20  */
     21 public class LanguageData extends TagValueData
     22 {
     23     public static class Record
     24     {
     25         private String tag;
     26         private String name;
     27 
     28         public Record(String tag, String name)
     29         {
     30             this.tag = tag;
     31             this.name = name;
     32         }
     33 
     34         public String tag()
     35         {
     36             return tag;
     37         }
     38 
     39         public String name()
     40         {
     41             return name;
     42         }
     43 
     44         public String label()
     45         {
     46             return TagUtilities.tagLabel(tag);
     47         }
     48 
     49         public String makeTag()
     50         {
     51             return TagUtilities.makeTag(tag);
     52         }
     53     }
     54 
     55     /*
     56      * This is temporary data until there is some resolution between
     57      * the OpenType language system tags and the ISO and RFC standards...
     58      */
     59     private Record[] languages =
     60     {
     61         new Record("",    "null"),
     62         new Record("ARA", "Arabic"),
     63         new Record("ASM", "Assamese"),
     64         new Record("BEN", "Bengali"),
     65         new Record("FAR", "Farsi"),
     66         new Record("GUJ", "Gujarati"),
     67         new Record("HIN", "Hindi"),
     68         new Record("IWR", "Hebrew"),
     69         new Record("JII", "Yiddish"),
     70         new Record("JAN", "Japanese"),
     71         new Record("KAN", "Kannada"),
     72         new Record("KOK", "Konkani"),
     73         new Record("KOR", "Korean"),
     74         new Record("KSH", "Kashmiri"),
     75         new Record("MAL", "Malayalam (Traditional)"),
     76         new Record("MAR", "Marathi"),
     77         new Record("MLR", "Malayalam (Reformed)"),
     78         new Record("MNI", "Manipuri"),
     79         new Record("ORI", "Oriya"),
     80         new Record("SAN", "Sanscrit"),
     81         new Record("SND", "Sindhi"),
     82         new Record("SNH", "Sinhalese"),
     83         new Record("SYR", "Syriac"),
     84         new Record("TAM", "Tamil"),
     85         new Record("TEL", "Telugu"),
     86         new Record("THA", "Thai"),
     87         new Record("URD", "Urdu"),
     88         new Record("ZHP", "Chinese (Phonetic)"),
     89         new Record("ZHS", "Chinese (Simplified)"),
     90         new Record("ZHT", "Chinese (Traditional)"),
     91 
     92         // languages added on 03/13/2008
     93         // TODO: need to deal with the fact that
     94         // these codes should be @draft, and the above
     95         // codes should be @final.
     96         new Record("AFK", "Afrikaans"),
     97         new Record("BEL", "Belarussian"),
     98         new Record("BGR", "Bulgarian"),
     99         new Record("CAT", "Catalan"),
    100         new Record("CHE", "Chechen"),
    101         new Record("COP", "Coptic"),
    102         new Record("CSY", "Czech"),
    103         new Record("DAN", "Danish"),
    104         new Record("DEU", "German"),
    105         new Record("DZN", "Dzongkha"),
    106         new Record("ELL", "Greek"),
    107         new Record("ENG", "English"),
    108         new Record("ESP", "Spanish"),
    109         new Record("ETI", "Estonian"),
    110         new Record("EUQ", "Basque"),
    111         new Record("FIN", "Finnish"),
    112       //new Record("FLE", "Flemish"), // Flemish has the same ISO 639-2 code as Dutch (NLD)
    113         new Record("FRA", "French"),
    114         new Record("GAE", "Gaelic"),
    115         new Record("HAU", "Hausa"),
    116         new Record("HRV", "Croation"),
    117         new Record("HUN", "Hungarian"),
    118         new Record("HYE", "Armenian"),
    119         new Record("IND", "Indonesian"),
    120         new Record("ITA", "Italian"),
    121         new Record("KHM", "Khmer"),
    122         new Record("MNG", "Mongolian"),
    123         new Record("MTS", "Maltese"),
    124         new Record("NEP", "Nepali"),
    125         new Record("NLD", "Dutch"),
    126         new Record("PAS", "Pashto"),
    127         new Record("PLK", "Polish"),
    128         new Record("PTG", "Portuguese"),
    129         new Record("ROM", "Romanian"),
    130         new Record("RUS", "Russian"),
    131         new Record("SKY", "Slovak"),
    132         new Record("SLV", "Slovenian"),
    133         new Record("SQI", "Albanian"),
    134         new Record("SRB", "Serbian"),
    135         new Record("SVE", "Swedish"),
    136         new Record("TIB", "Tibetan"),
    137         new Record("TRK", "Turkish"),
    138         new Record("WEL", "Welsh")
    139     };
    140 
    141     private int minLanguage = 0;
    142     private int maxLanguage = minLanguage + languages.length - 1;
    143 
    144     public int getMinValue()
    145     {
    146         return minLanguage;
    147     }
    148 
    149     public int getMaxValue()
    150     {
    151         return maxLanguage;
    152     }
    153 
    154     public String getTag(int value)
    155     {
    156         if (value < minLanguage || value > maxLanguage) {
    157             return null;
    158         }
    159 
    160         return languages[value - minLanguage].tag();
    161     }
    162 
    163     public String getTagLabel(int value)
    164     {
    165         if (value < minLanguage || value > maxLanguage) {
    166             return null;
    167         }
    168 
    169         return languages[value - minLanguage].label();
    170     }
    171 
    172     public String makeTag(int value)
    173     {
    174         if (value < minLanguage || value > maxLanguage) {
    175             return null;
    176         }
    177 
    178         return languages[value - minLanguage].makeTag();
    179     }
    180 
    181     public String getName(int value) {
    182         if (value < minLanguage || value > maxLanguage) {
    183             return "(UNKNOWN)";
    184         }
    185 
    186         return languages[value - minLanguage].name();
    187     }
    188 }
    189