Mega Code Archive

 
Categories / Java Tutorial / Internationalization
 

Calculate the postfixes along the search path from the base bundle to the bundle specified by baseName and locale

/*  * $Id: LocaleUtil.java 667964 2008-06-15 15:00:54Z apetrelli $  *  * Licensed to the Apache Software Foundation (ASF) under one  * or more contributor license agreements.  See the NOTICE file  * distributed with this work for additional information  * regarding copyright ownership.  The ASF licenses this file  * to you under the Apache License, Version 2.0 (the  * "License"); you may not use this file except in compliance  * with the License.  You may obtain a copy of the License at  *  * http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing,  * software distributed under the License is distributed on an  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY  * KIND, either express or implied.  See the License for the  * specific language governing permissions and limitations  * under the License.  */ import java.util.ArrayList; import java.util.List; import java.util.Locale; /**  * Utilities for locale manipulation.  *  * @version $Rev: 667964 $ $Date: 2008-06-15 17:00:54 +0200 (Sun, 15 Jun 2008) $  * @since 2.1.0  */ public class Main {   /**    * The "null" Locale, i.e. a Locale that points to no real locale.    *    * @since 2.1.0    */   public static final Locale NULL_LOCALE = new Locale("");   /**    * Calculate the postfixes along the search path from the base bundle to the    * bundle specified by baseName and locale. Method copied from    * java.util.ResourceBundle    *    * @param locale The locale.    * @return a list of postfixes to add to filenames.    * @since 2.1.0    */   public static List<String> calculatePostfixes(Locale locale) {       final List<String> result = new ArrayList<String>();       // The default configuration file must be loaded to allow correct       // definition inheritance.       result.add("");       if (locale == null) {           return result;       }       final String language = locale.getLanguage();       final int languageLength = language.length();       final String country = locale.getCountry();       final int countryLength = country.length();       final String variant = locale.getVariant();       final int variantLength = variant.length();       if (languageLength + countryLength + variantLength == 0) {           // The locale is "", "", "".           return result;       }       final StringBuffer temp = new StringBuffer();       temp.append('_');       temp.append(language);       if (languageLength > 0) {           result.add(temp.toString());       }       if (countryLength + variantLength == 0) {           return result;       }       temp.append('_');       temp.append(country);       if (countryLength > 0) {           result.add(temp.toString());       }       if (variantLength == 0) {           return result;       } else {           temp.append('_');           temp.append(variant);           result.add(temp.toString());           return result;       }   } }