/* * The contents of this file are subject to the Mozilla Public License Version 1.1 * (the "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at . * * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT * WARRANTY OF ANY KIND, either express or implied. See the License for the specific * language governing rights and limitations under the License. * * The Original Code is the Venice Web Communities System. * * The Initial Developer of the Original Code is Eric J. Bowersox , * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * * Contributor(s): */ package com.silverwrist.util; import java.util.*; /** * A utility class which creates Locale objects from standard descriptor strings. * The descriptor strings are of the form returned by Locale.toString(). * * @author Eric J. Bowersox <erbo@silcom.com> * @version X * @see java.util.Locale * @see java.util.Locale#toString() */ public class LocaleFactory { /*-------------------------------------------------------------------------------- * Constructor *-------------------------------------------------------------------------------- */ private LocaleFactory() { // this object cannot be instantiated } // end constructor /*-------------------------------------------------------------------------------- * External static operations *-------------------------------------------------------------------------------- */ /** * Creates a Locale from a standard descriptor string. * * @param streq The string equivalent of the Locale to be created. * @return The corresponding Locale, or the default Locale if the parameter is * null or the empty string. */ public static Locale createLocale(String streq) { if ((streq==null) || (streq.length()==0)) return Locale.getDefault(); // no locale int p1 = streq.indexOf('_'); if (p1<0) return new Locale(streq,""); // language but no country specified String x_lang = streq.substring(0,p1); int p2 = streq.indexOf('_',p1+1); if (p2<0) { // there's only one underscore - figure out what part the last part is String lastpart = streq.substring(p1+1); if (lastpart.length()==2) return new Locale(x_lang,lastpart); // language + country else return new Locale(x_lang,"",lastpart); // language + country(null) + variant } // end if // do all three variants return new Locale(x_lang,streq.substring(p1+1,p2),streq.substring(p2+1)); } // end createLocale } // end class LocaleFactory