001 /*
002 * Copyright 1999,2004 The Apache Software Foundation.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 package org.apache.commons.feedparser.tools;
018
019 import java.util.HashMap;
020 import java.util.Locale;
021 import java.util.StringTokenizer;
022
023 public class RFC3066LocaleParser {
024
025 static HashMap locales = new HashMap();
026
027 public static Locale parse( String input ) {
028
029 StringTokenizer tok = new StringTokenizer( input, "-" );
030
031 while ( tok.hasMoreElements() ) {
032 String current = (String)tok.nextElement();
033
034 current = current.toLowerCase();
035
036 if ( current.length() == 2 ) {
037 return getLocale( current );
038 }
039
040 }
041
042 return null;
043
044 }
045
046 public static Locale getLocale( String language ) {
047 return (Locale)locales.get( language );
048 }
049
050 private static void initLocale( String name ) {
051 locales.put( name, new Locale( name ) );
052 }
053
054 static {
055
056 // Taken from: http://www.w3.org/WAI/ER/IG/ert/iso639.htm
057
058 initLocale( "aa" ); //afar"
059 initLocale( "ab" ); //abkhazian"
060 initLocale( "af" ); //afrikaans"
061 initLocale( "am" ); //amharic"
062 initLocale( "ar" ); //arabic"
063 initLocale( "as" ); //assamese"
064 initLocale( "ay" ); //aymara"
065 initLocale( "az" ); //azerbaijani"
066 initLocale( "ba" ); //bashkir"
067 initLocale( "be" ); //byelorussian"
068 initLocale( "bg" ); //bulgarian"
069 initLocale( "bh" ); //bihari"
070 initLocale( "bi" ); //bislama"
071 initLocale( "bn" ); //bengali"" ); //bangla"
072 initLocale( "bo" ); //tibetan"
073 initLocale( "br" ); //breton"
074 initLocale( "ca" ); //catalan"
075 initLocale( "co" ); //corsican"
076 initLocale( "cs" ); //czech"
077 initLocale( "cy" ); //welsh"
078 initLocale( "da" ); //danish"
079 initLocale( "de" ); //german"
080 initLocale( "dz" ); //bhutani"
081 initLocale( "el" ); //greek"
082 initLocale( "en" ); //english"" ); //american"
083 initLocale( "eo" ); //esperanto"
084 initLocale( "es" ); //spanish"
085 initLocale( "et" ); //estonian"
086 initLocale( "eu" ); //basque"
087 initLocale( "fa" ); //persian"
088 initLocale( "fi" ); //finnish"
089 initLocale( "fj" ); //fiji"
090 initLocale( "fo" ); //faeroese"
091 initLocale( "fr" ); //french"
092 initLocale( "fy" ); //frisian"
093 initLocale( "ga" ); //irish"
094 initLocale( "gd" ); //gaelic"" ); //scots gaelic"
095 initLocale( "gl" ); //galician"
096 initLocale( "gn" ); //guarani"
097 initLocale( "gu" ); //gujarati"
098 initLocale( "ha" ); //hausa"
099 initLocale( "hi" ); //hindi"
100 initLocale( "hr" ); //croatian"
101 initLocale( "hu" ); //hungarian"
102 initLocale( "hy" ); //armenian"
103 initLocale( "ia" ); //interlingua"
104 initLocale( "ie" ); //interlingue"
105 initLocale( "ik" ); //inupiak"
106 initLocale( "in" ); //indonesian"
107 initLocale( "is" ); //icelandic"
108 initLocale( "it" ); //italian"
109 initLocale( "iw" ); //hebrew"
110 initLocale( "ja" ); //japanese"
111 initLocale( "ji" ); //yiddish"
112 initLocale( "jw" ); //javanese"
113 initLocale( "ka" ); //georgian"
114 initLocale( "kk" ); //kazakh"
115 initLocale( "kl" ); //greenlandic"
116 initLocale( "km" ); //cambodian"
117 initLocale( "kn" ); //kannada"
118 initLocale( "ko" ); //korean"
119 initLocale( "ks" ); //kashmiri"
120 initLocale( "ku" ); //kurdish"
121 initLocale( "ky" ); //kirghiz"
122 initLocale( "la" ); //latin"
123 initLocale( "ln" ); //lingala"
124 initLocale( "lo" ); //laothian"
125 initLocale( "lt" ); //lithuanian"
126 initLocale( "lv" ); //latvian"" ); //lettish"
127 initLocale( "mg" ); //malagasy"
128 initLocale( "mi" ); //maori"
129 initLocale( "mk" ); //macedonian"
130 initLocale( "ml" ); //malayalam"
131 initLocale( "mn" ); //mongolian"
132 initLocale( "mo" ); //moldavian"
133 initLocale( "mr" ); //marathi"
134 initLocale( "ms" ); //malay"
135 initLocale( "mt" ); //maltese"
136 initLocale( "my" ); //burmese"
137 initLocale( "na" ); //nauru"
138 initLocale( "ne" ); //nepali"
139 initLocale( "nl" ); //dutch"
140 initLocale( "no" ); //norwegian"
141 initLocale( "oc" ); //occitan"
142 initLocale( "om" ); //oromo"" ); //afan"
143 initLocale( "or" ); //oriya"
144 initLocale( "pa" ); //punjabi"
145 initLocale( "pl" ); //polish"
146 initLocale( "ps" ); //pashto"" ); //pushto"
147 initLocale( "pt" ); //portuguese"
148 initLocale( "qu" ); //quechua"
149 initLocale( "rm" ); //rhaeto-romance"
150 initLocale( "rn" ); //kirundi"
151 initLocale( "ro" ); //romanian"
152 initLocale( "ru" ); //russian"
153 initLocale( "rw" ); //kinyarwanda"
154 initLocale( "sa" ); //sanskrit"
155 initLocale( "sd" ); //sindhi"
156 initLocale( "sg" ); //sangro"
157 initLocale( "sh" ); //serbo-croatian"
158 initLocale( "si" ); //singhalese"
159 initLocale( "sk" ); //slovak"
160 initLocale( "sl" ); //slovenian"
161 initLocale( "sm" ); //samoan"
162 initLocale( "sn" ); //shona"
163 initLocale( "so" ); //somali"
164 initLocale( "sq" ); //albanian"
165 initLocale( "sr" ); //serbian"
166 initLocale( "ss" ); //siswati"
167 initLocale( "st" ); //sesotho"
168 initLocale( "su" ); //sudanese"
169 initLocale( "sv" ); //swedish"
170 initLocale( "sw" ); //swahili"
171 initLocale( "ta" ); //tamil"
172 initLocale( "te" ); //tegulu"
173 initLocale( "tg" ); //tajik"
174 initLocale( "th" ); //thai"
175 initLocale( "ti" ); //tigrinya"
176 initLocale( "tk" ); //turkmen"
177 initLocale( "tl" ); //tagalog"
178 initLocale( "tn" ); //setswana"
179 initLocale( "to" ); //tonga"
180 initLocale( "tr" ); //turkish"
181 initLocale( "ts" ); //tsonga"
182 initLocale( "tt" ); //tatar"
183 initLocale( "tw" ); //twi"
184 initLocale( "uk" ); //ukrainian"
185 initLocale( "ur" ); //urdu"
186 initLocale( "uz" ); //uzbek"
187 initLocale( "vi" ); //vietnamese"
188 initLocale( "vo" ); //volapuk"
189 initLocale( "wo" ); //wolof"
190 initLocale( "xh" ); //xhosa"
191 initLocale( "yo" ); //yoruba"
192 initLocale( "zh" ); //chinese"
193 initLocale( "zu" ); //Zulu"
194
195 }
196
197 }