LonghornPHP 2026

The Locale class

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Introduction

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.

Class synopsis

class Locale {
/* Constants */
public const int ACTUAL_LOCALE;
public const int VALID_LOCALE;
public const null DEFAULT_LOCALE = null;
public const string LANG_TAG;
public const string EXTLANG_TAG;
public const string SCRIPT_TAG;
public const string REGION_TAG;
public const string VARIANT_TAG;
public const string PRIVATE_TAG;
/* Methods */
public static function acceptFromHttp(string $header): string|false
public static function canonicalize(string $locale): ?string
public static function composeLocale(array $subtags): string|false
public static function filterMatches(string $languageTag, string $locale, bool $canonicalize = false): ?bool
public static function getAllVariants(string $locale): ?array
public static function getDefault(): string
public static function getDisplayLanguage(string $locale, ?string $displayLocale = null): string|false
public static function getDisplayName(string $locale, ?string $displayLocale = null): string|false
public static function getDisplayRegion(string $locale, ?string $displayLocale = null): string|false
public static function getDisplayScript(string $locale, ?string $displayLocale = null): string|false
public static function getDisplayVariant(string $locale, ?string $displayLocale = null): string|false
public static function getKeywords(string $locale): array|false|null
public static function getPrimaryLanguage(string $locale): ?string
public static function getRegion(string $locale): ?string
public static function getScript(string $locale): ?string
public static function isRightToLeft( string $locale = "" ): bool
public static function lookup(
    array $languageTag,
    string $locale,
    bool $canonicalize = false,
    ?string $defaultLocale = null
): ?string
public static function parseLocale(string $locale): ?array
public static function setDefault(string $locale): true
}

Predefined Constants

Locale::DEFAULT_LOCALE null

Used as locale parameter with the methods of the various locale affected classes, such as NumberFormatter. This constant would make the methods to use default locale.

These constants describe the choice of the locale for the getLocale method of different classes.

Locale::ACTUAL_LOCALE int

This is locale the data actually comes from.

Locale::VALID_LOCALE int

This is the most specific locale supported by ICU.

Locale Subtags

These constants define how the Locales are parsed or composed. They should be used as keys in the argument array to locale_compose() and are returned from locale_parse() as keys of the returned associative array.

Locale::LANG_TAG string

Language subtag

Locale::EXTLANG_TAG string

Extended language subtag

Locale::SCRIPT_TAG string

Script subtag

Locale::REGION_TAG string

Region subtag

Locale::VARIANT_TAG string

Variant subtag

Locale::GRANDFATHERED_LANG_TAG string

Grandfathered Language subtag

Locale::PRIVATE_TAG string

Private subtag

Changelog

Version Description
8.4.0 The class constants are now typed.

Table of Contents

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top