Usage

An instance of Ecma\Intl\Locale represents a Unicode locale identifier and provides an API for manipulating Unicode locales.

The following example was adapted from an example in the MDN Web Docs. In comparing the examples, you can see the similarities and differences between the implementations. In fact, they’re more similar than not.

use Ecma\Intl\Locale;
use Ecma\Intl\Locale\Options;

$korean = new Locale('ko', new Options(
    script: 'Kore',
    region: 'KR',
    hourCycle: 'h23',
    calendar: 'gregory',
));

$japanese = new Locale('ja-Jpan-JP-u-ca-japanese-hc-h12');

var_export($korean->baseName);
var_export($japanese->baseName);
// Expected output: 'ko-Kore-KR' 'ja-Jpan-JP'

var_export($korean->hourCycle);
var_export($japanese->hourCycle);
// Expected output: 'h23' 'h12'

Basic Usage

Basic use of Locale involves passing a string locale identifier to the constructor as the $tag parameter.

use Ecma\Intl\Locale;

$us = new Locale('en-US');

Usage With Options

Along with the required $tag parameter, the Locale constructor also accepts an optional Ecma\Intl\Locale\Options instance as the $options parameter.

use Ecma\Intl\Locale;
use Ecma\Intl\Locale\Options;

$us12hour = new Locale('en-US', new Options(hourCycle: 'h12'));
var_export($us12hour->hourCycle); // Prints 'h12'