/* * Copyright 2009 Google Inc. * * Licensed 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. */ package com.google.gwt.i18n.shared; import java.util.List; /** * Class representing GWT locales and conversion to/from other formats. * * These locales correspond to BCP47. */ public interface GwtLocale extends Comparable<GwtLocale> { String DEFAULT_LOCALE = "default"; /** * The default comparison is a lexical ordering. */ int compareTo(GwtLocale o); /** * Returns the list of aliases for this locale. The canonical form of the * current locale is always first on the list. * * Language/region codes have changed over time, so some systems continue to * use the older codes. Aliases allow GWT to use the official Unicode CLDR * locales while still interoperating with such systems. * * @return alias list */ List<GwtLocale> getAliases(); /** * Returns the locale as a fixed-format string suitable for use in searching * for localized resources. The format is language_Script_REGION_VARIANT, * where language is a 2-8 letter code (possibly with 3-letter extensions), * script is a 4-letter code with an initial capital letter, region is a * 2-character country code or a 3-digit region code, and variant is a 5-8 * character (may be 4 if the first character is numeric) code. If a * component is missing, its preceding _ is also omitted. If this is the * default locale, the empty string will be returned. * * @return String representing locale */ String getAsString(); /** * Returns this locale in canonical form. * <ul> * <li>Deprecated language/region tags are replaced with official versions * <li>Default scripts are removed (including region-specific defaults for * Chinese) * <li>no/nb/nn are normalized * <li>Default region for zh_Hans and zh_Hant if none specified * </ul> * * @return GwtLocale instance */ GwtLocale getCanonicalForm(); /** * Returns the complete list of locales to search for the current locale. * This list will always start with the canonical form of this locale, and * end with "default", and include all appropriate aliases along the way. * * @return search list */ List<GwtLocale> getCompleteSearchList(); /** * Returns a list of locales to search for, in order of preference. The * current locale is always first on the list. Aliases are not included * in the list -- use {@link #getAliases} to expand those. * * @return inheritance list */ List<GwtLocale> getInheritanceChain(); /** * Returns the language portion of the locale, or null if none. */ String getLanguage(); /** * Returns the language portion of the locale, or the empty string if none. */ String getLanguageNotNull(); /** * Returns the region portion of the locale, or null if none. */ String getRegion(); /** * Returns the region portion of the locale, or the empty string if none. */ String getRegionNotNull(); /** * Returns the script portion of the locale, or null if none. */ String getScript(); /** * Returns the script portion of the locale, or the empty string if none. */ String getScriptNotNull(); /** * Returns the variant portion of the locale, or null if none. */ String getVariant(); /** * Returns the variant portion of the locale, or the empty string if none. */ String getVariantNotNull(); /** * Returns true if this locale inherits from the specified locale. Note that * locale.inheritsFrom(locale) is false -- if you want that to be true, you * should just use locale.getInheritanceChain().contains(x). * * @param parent locale to test against * @return true if parent is an ancestor of this locale */ boolean inheritsFrom(GwtLocale parent); /** * Returns true if this is the default or root locale. */ boolean isDefault(); /** * Returns a human readable string -- "default" or the same as getAsString(). */ String toString(); /** * Checks if this locale uses the same script as another locale. * * @param other * @return true if the scripts are the same */ boolean usesSameScript(GwtLocale other); }