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 */ 13package com.ibm.icu.dev.tool.layout; 14 15/** 16 * This class holds the list of languages. 17 * 18 * @author emader 19 * 20 */ 21public 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