<?php

/**
 * A "Locale" is an identifier used to get language, culture, or regionally-specific 
 * behavior from an API. PHP locales are organized and identified the same
 * way that the CLDR locales used by ICU (and many vendors of Unix-like operating 
 * systems, the Mac, Java, and so forth) use. Locales are identified using
 * RFC 4646 language tags (which use hyphen, not underscore) in addition to the
 * more traditional underscore-using identifiers. Unless otherwise noted
 * the functions in this class are tolerant of both formats. 
 *
 * Examples of identifiers include:
 *
 *  * en-US (English, United States)
 *  * zh-Hant-TW (Chinese, Traditional Script, Taiwan)
 *  * fr-CA, fr-FR (French for Canada and France respectively) 
 *
 * The Locale class (and related procedural functions) are used to interact 
 * with locale identifiers--to verify that an ID is well-formed, valid, 
 * etc. The extensions used by CLDR in UAX #35 (and inherited by ICU) are 
 * valid and used wherever they would be in ICU normally.
 *
 * Locales cannot be instantiated as objects. All of the functions/methods 
 * provided are static.
 *
 *   * The null or empty string obtains the "root" locale. 
 *     The "root" locale is equivalent to "en_US_POSIX" in CLDR.
 *   * Language tags (and thus locale identifiers) are case insensitive. There
 *     exists a canonicalization function to make case match the specification.
 *
 * @see http://www.icu-project.org/apiref/icu4c/uloc_8h.html
 * @see http://www.unicode.org/reports/tr35/
 *
 */
class Locale {

#############################################################################
# Common constants.
#############################################################################

       /**
          * The following static members are used with the getLocale methods of
          * the various locale affected classes, such as numfmt.
          */
      
const DEFAULT_LOCALE             null;

       
/**
     * identifiers for the actual locale, valid locale
      * WARNING:
     * The values described here are NOT the actual values in PHP code.
     * They are references to the ICU C definitions, so the line
     *    const ACTUAL_LOCALE = 'ULOC_ACTUAL_LOCALE';
     * actually means that Locale::ACTUAL_LOCALE is the same as
     * ULOC_ACTUAL_LOCALE constant in the ICU library.
     */
    
const ACTUAL_LOCALE             'ULOC_ACTUAL_LOCALE';
       const 
VALID_LOCALE             'ULOC_VALID_LOCALE';

    
/** 
     * Valid locale tag and subtag values
     */
    
const LANG_TAG                 "language";
    const 
EXTLANG_TAG             "extlang";
    const 
SCRIPT_TAG             "script";
    const 
REGION_TAG             "region";
    const 
VARIANT_TAG             "variant";
    const 
GRANDFATHERED_LANG_TAG         "grandfathered";
    const 
PRIVATE_TAG             "private";
    

#############################################################################
# Object-oriented API
#############################################################################

    /**
     * Gets the default locale value from the INTL global 'default_locale'
     * At the PHP initilaization (MINIT) this value is set to 
     * 'intl.default_locale' value from php.ini if that value exists 
     * or from ICU's function  uloc_getDefault() 
     * Then onwards picks up changes from setDefault() calls also
     *
          * @return string the current runtime locale 
          */
    
public static function getDefault() {}

    
/**
          * sets the default runtime locale to $locale
      * This changes the value of INTL global 'default_locale'
          *
          * @param     string     $locale     is a BCP 47 compliant language tag containing the 
          *                    locale identifier. UAX #35 extensions are accepted.
          * @return    boolean         'true' if okay, 'false' if an error
          */
        
public static function setDefault($locale) {}


        
/**
     * Gets the primary language for the input locale
     *
          * @param    string    $locale     the locale to extract the primary language code from
          * @return     string             the language code associated with the language 
     *                    or null in case of error. 
          */
        
public static function getPrimaryLanguage($locale) {}


        
/**
     * Gets the script for the input locale
     *
          * @param     string     $locale     the locale to extract the script code from
          * @return     string             the script subtag for the locale or null if not present
          */
        
public static function getScript($locale) {}


        
/**
     * Gets the region for the input locale
     *
          * @param     string     $locale     the locale to extract the region code from
          * @return     string             the region subtag for the locale or null if not present
          */
        
public static function getRegion($locale) {}


        
/**
     * Gets the variants for the input locale
     *
         * @param     string     $locale     the locale to extract the variants from
          * @return     array             the array containing the list of all variants 
     *                    subtag for the locale or null if not present
          */
    
public static function getAllVariants($locale) {}


    
/**
     * Gets the keywords for the input locale
     *
          * @param     string     $locale     the locale to extract the keywords from
          * @return     array             associative array containing the keyword-value pairs for this locale 
          */
        
public static function getKeywords($locale) {}


        
/**
     * Returns an appropriately localized display name for the input locale
     *
         * @param     string          $locale     the locale to return a displayname for
     * @param     [string]     $in_locale      optional format locale
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the locale in the format
     *                         appropriate for $in_locale. 
          */
        
public static function getDisplayName($locale$in_locale null) {}


        
/**
     * Returns an appropriately localized display name for language of the input locale
     *
          * @param     string          $locale     the locale to return a display language for
     * @param     [string]     $in_locale      optional format locale to use to display the language name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the language for the $locale in the format
     *                         appropriate for $in_locale. 
          */
    
public static function getDisplayLanguage($lang$in_locale null) {}

        
/**
     * Returns an appropriately localized display name for script of the input locale
     *
         * @param     string          $locale     the locale to return a display script for
     * @param     [string]     $in_locale      optional format locale to use to display the script name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the script for the $locale in the format
     *                         appropriate for $in_locale. 
          */
    
public static function getDisplayScript($script$in_locale null) {}


        
/**
     * Returns an appropriately localized display name for region of the input locale
     *
         * @param     string          $locale     the locale to return a display region for
     * @param     [string]     $in_locale      optional format locale to use to display the region name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the region for the $locale in the format
     *                         appropriate for $in_locale. 
          */
    
public static function getDisplayRegion($region$in_locale null) {}


        
/**
     * Returns an appropriately localized display name for variants of the input locale
     *
         * @param     string          $locale     the locale to return a display variant for
     * @param     [string]     $in_locale      optional format locale to use to display the variant name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the variant for the $locale in the format
     *                         appropriate for $in_locale. 
          */
    
public static function getDisplayVariant($variant$in_locale null) {}


        
/**
     * Checks if a $langtag  filter matches with $locale according to 
     * RFC 4647's basic filtering algorithm
     *
          * @param     string         $langtag    the language tag to check
     * @param     string         $locale        the language range to check against
     * @param     bool         $canonicalize    Canonicalize parameters?
          * @return     boolean             'true' if $locale matches $langtag 'false' otherwise
     */
        
public static function filterMatches($langtag$locale$canonicalize) {}

    
/**
          * Searchs the items in $langtag for the best match to the language
     * range specified in $locale according to RFC 4647's lookup algorithm. 
     *
     * @param     array         $langtag      an array containing a list of language tags to compare
     *                                to $locale
     * @param     string         $locale       the locale to use as the language range when matching
     * @param     string         $default      the locale to use if no match is found
     * @return     string                 closest matching language tag, $default, 
     *                        or empty string
     */
        
public static function lookup(array $langtag$locale$default null) {}


    
/**
          * Returns a correctly ordered and delimited locale ID 
     *
     * @param     array         $subtags     an array containing a list of key-value pairs, where 
     *                         the keys identify the particular locale ID subtags,     
     *                        and the values are the associated subtag values. 
     *
     * @return     string                 the corresponding locale identifier.
     */
        
public static function composeLocale(array $subtags) {}


    
/**
     * Returns a key-value array of locale ID subtag elements.
     *
     * @param     string        $locale        the locale to extract the subtag array from                     
     *
     * @return     array         $subtags     an array containing a list of key-value pairs, where 
     *                         the keys identify the particular locale ID subtags,     
     *                        and the values are the associated subtag values. 
     */
        
public static function parseLocale($locale) {}

}

#############################################################################
# Procedural API
#############################################################################


    /**
     * Gets the default locale value from the INTL global 'default_locale'
     * At the PHP initilaization (MINIT) this value is set to 
     * 'intl.default_locale' value from php.ini if that value exists 
     * or from ICU's function  uloc_getDefault() 
     * Then onwards picks up changes from setDefault() calls also
     *
          * @return string the current runtime locale 
          */
     
function locale_get_default() {}

    
/**
          * sets the default runtime locale to $locale
      * This changes the value of INTL global 'default_locale'
          *
          * @param     string     $locale     is a BCP 47 compliant language tag containing the 
          *                    locale identifier. UAX #35 extensions are accepted.
          * @return    boolean         'true' if okay, 'false' if an error
          */
         
function locale_set_default($locale) {}


        
/**
     * Gets the primary language for the input locale
     *
          * @param    string    $locale     the locale to extract the primary language code from
          * @return     string             the language code associated with the language 
     *                    or null in case of error. 
          */
         
function locale_get_primary_language($locale) {}


        
/**
     * Gets the script for the input locale
     *
          * @param     string     $locale     the locale to extract the script code from
          * @return     string             the script subtag for the locale or null if not present
          */
         
function locale_get_script($locale) {}


        
/**
     * Gets the region for the input locale
     *
          * @param     string     $locale     the locale to extract the region code from
          * @return     string             the region subtag for the locale or null if not present
          */
         
function locale_get_region($locale) {}


        
/**
     * Gets the variants for the input locale
     *
         * @param     string     $locale     the locale to extract the variants from
          * @return     array             the array containing the list of all variants 
     *                    subtag for the locale or null if not present
          */
     
function locale_get_all_variants($locale) {}


    
/**
     * Gets the keywords for the input locale
     *
          * @param     string     $locale     the locale to extract the keywords from
          * @return     array             associative array containing the keyword-value pairs for this locale 
          */
         
function locale_get_keywords($locale) {}


        
/**
     * Returns an appropriately localized display name for the input locale
     *
         * @param     string          $locale     the locale to return a displayname for
     * @param     [string]     $in_locale      optional format locale
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the locale in the format
     *                         appropriate for $in_locale. 
          */
         
function locale_get_display_name($locale$in_locale null) {}


        
/**
     * Returns an appropriately localized display name for language of the input locale
     *
          * @param     string          $locale     the locale to return a display language for
     * @param     [string]     $in_locale      optional format locale to use to display the language name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the language for the $locale in the format
     *                         appropriate for $in_locale. 
          */
     
function locale_get_display_language($lang$in_locale null) {}

        
/**
     * Returns an appropriately localized display name for script of the input locale
     *
         * @param     string          $locale     the locale to return a display script for
     * @param     [string]     $in_locale      optional format locale to use to display the script name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the script for the $locale in the format
     *                         appropriate for $in_locale. 
          */
     
function locale_get_display_script($script$in_locale null) {}


        
/**
     * Returns an appropriately localized display name for region of the input locale
     *
         * @param     string          $locale     the locale to return a display region for
     * @param     [string]     $in_locale      optional format locale to use to display the region name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the region for the $locale in the format
     *                         appropriate for $in_locale. 
          */
     
function locale_get_display_region($region$in_locale null) {}


        
/**
     * Returns an appropriately localized display name for variants of the input locale
     *
         * @param     string          $locale     the locale to return a display variant for
     * @param     [string]     $in_locale      optional format locale to use to display the variant name
     *                         If is 'null' then the default locale is used. 
     * @return     string              display name of the variant for the $locale in the format
     *                         appropriate for $in_locale. 
          */
     
function locale_get_display_variant($variant$in_locale null) {}


        
/**
     * Checks if a $langtag  filter matches with $locale according to 
     * RFC 4647's basic filtering algorithm
     *
          * @param     string         $langtag    the language tag to check
     * @param     string         $locale        the language range to check against
     * @param     bool         $canonicalize    Canonicalize parameters?
          * @return     boolean             'true' if $locale matches $langtag 'false' otherwise
     */
         
function locale_filter_matches($langtag$locale$canonicalize) {}

    
/**
          * Searchs the items in $langtag for the best match to the language
     * range specified in $locale according to RFC 4647's lookup algorithm. 
     *
     * @param     array         $langtag      an array containing a list of language tags to compare
     *                                to $locale
     * @param     string         $locale       the locale to use as the language range when matching
     * @param     string         $default      the locale to use if no match is found
     * @return     string                 closest matching language tag, $default, 
     *                        or empty string
     */
         
function locale_lookup(array $langtag$locale$default null) {}


    
/**
          * Returns a correctly ordered and delimited locale ID 
     *
     * @param     array         $subtags     an array containing a list of key-value pairs, where 
     *                         the keys identify the particular locale ID subtags,     
     *                        and the values are the associated subtag values. 
     *
     * @return     string                 the corresponding locale identifier.
     */
         
function locale_compose_locale(array $subtags) {}


    
/**
     * Returns a key-value array of locale ID subtag elements.
     *
     * @param     string        $locale        the locale to extract the subtag array from                     
     *
     * @return     array         $subtags     an array containing a list of key-value pairs, where 
     *                         the keys identify the particular locale ID subtags,     
     *                        and the values are the associated subtag values. 
     */
         
function locale_parse_locale($locale) {}

?>