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 }