1   package org.daisy.pipeline.common;
2   
3   import java.util.HashMap;
4   import java.util.Locale;
5   import java.util.Map;
6   
7   public class NormalizeLang {
8   
9   	/**
10  	 * Mapping from three- to two-letter language tags
11  	 */
12  	private static Map<String,String> langMap = null;
13  
14  	/**
15  	 * Convert three-letter language subtag to two-letter tag if possible.
16  	 */
17  	public static Locale normalize(Locale locale) {
18  		if (langMap == null) {
19  			String[] allLanguages = Locale.getISOLanguages(); // all two-letter language tags
20  			langMap = new HashMap<String,String>(allLanguages.length);
21  			for (String l : allLanguages)
22  				langMap.put(new Locale(l).getISO3Language(), l);
23  		}
24  		String twoLetterLang = langMap.get(locale.getLanguage()); // convert to two-letter
25  		if (twoLetterLang != null)
26  			return (new Locale.Builder()).setLocale(locale).setLanguage(twoLetterLang).build();
27  		return locale;
28  	}
29  }