\Cake\I18nI18n

I18n handles translation of Text and time format strings.

Summary

Methods
Properties
Constants
translators()
translator()
setTranslator()
getTranslator()
config()
locale()
setLocale()
getLocale()
defaultLocale()
getDefaultLocale()
defaultFormatter()
getDefaultFormatter()
setDefaultFormatter()
useFallback()
clear()
No public properties found
DEFAULT_LOCALE
No protected methods found
$_collection
$_defaultLocale
N/A
No private methods found
No private properties found
N/A

Constants

DEFAULT_LOCALE

DEFAULT_LOCALE = 'en_US' : string

Default locale

Properties

$_defaultLocale

$_defaultLocale : string

The environment default locale

Type

string

Methods

translators()

translators() : \Cake\I18n\TranslatorRegistry

Returns the translators collection instance. It can be used for getting specific translators based of their name and locale or to configure some aspect of future translations that are not yet constructed.

Returns

\Cake\I18n\TranslatorRegistry

The translators collection.

translator()

translator(string  $name = 'default', string|null  $locale = null, callable|null  $loader = null) : \Aura\Intl\TranslatorInterface|null

Returns an instance of a translator that was configured for the name and passed locale. If no locale is passed then it takes the value returned by the `getLocale()` method.

This method can be used to configure future translators, this is achieved by passing a callable as the last argument of this function.

Example:

 I18n::setTranslator('default', function () {
     $package = new \Aura\Intl\Package();
     $package->setMessages([
         'Cake' => 'Gâteau'
     ]);
     return $package;
 }, 'fr_FR');

 $translator = I18n::translator('default', 'fr_FR');
 echo $translator->translate('Cake');

You can also use the Cake\I18n\MessagesFileLoader class to load a specific file from a folder. For example for loading a my_translations.po file from the src/Locale/custom folder, you would do:

I18n::translator(
 'default',
 'fr_FR',
 new MessagesFileLoader('my_translations', 'custom', 'po');
);

Parameters

string $name

The domain of the translation messages.

string|null $locale

The locale for the translator.

callable|null $loader

A callback function or callable class responsible for constructing a translations package instance.

Throws

\Aura\Intl\Exception

Returns

\Aura\Intl\TranslatorInterface|null —

The configured translator.

setTranslator()

setTranslator(string  $name, callable  $loader, string|null  $locale = null) : void

Sets a translator.

Configures future translators, this is achieved by passing a callable as the last argument of this function.

Example:

 I18n::setTranslator('default', function () {
     $package = new \Aura\Intl\Package();
     $package->setMessages([
         'Cake' => 'Gâteau'
     ]);
     return $package;
 }, 'fr_FR');

 $translator = I18n::getTranslator('default', 'fr_FR');
 echo $translator->translate('Cake');

You can also use the Cake\I18n\MessagesFileLoader class to load a specific file from a folder. For example for loading a my_translations.po file from the src/Locale/custom folder, you would do:

I18n::setTranslator(
 'default',
 new MessagesFileLoader('my_translations', 'custom', 'po'),
 'fr_FR'
);

Parameters

string $name

The domain of the translation messages.

callable $loader

A callback function or callable class responsible for constructing a translations package instance.

string|null $locale

The locale for the translator.

getTranslator()

getTranslator(string  $name = 'default', string|null  $locale = null) : \Aura\Intl\TranslatorInterface

Returns an instance of a translator that was configured for the name and locale.

If no locale is passed then it takes the value returned by the getLocale() method.

Parameters

string $name

The domain of the translation messages.

string|null $locale

The locale for the translator.

Throws

\Aura\Intl\Exception

Returns

\Aura\Intl\TranslatorInterface

The configured translator.

config()

config(string  $name, callable  $loader) : void

Registers a callable object that can be used for creating new translator instances for the same translations domain. Loaders will be invoked whenever a translator object is requested for a domain that has not been configured or loaded already.

Registering loaders is useful when you need to lazily use translations in multiple different locales for the same domain, and don't want to use the built-in translation service based of gettext files.

Loader objects will receive two arguments: The domain name that needs to be built, and the locale that is requested. These objects can assemble the messages from any source, but must return an Aura\Intl\Package object.

Example:

 use Cake\I18n\MessagesFileLoader;
 I18n::config('my_domain', function ($name, $locale) {
     // Load src/Locale/$locale/filename.po
     $fileLoader = new MessagesFileLoader('filename', $locale, 'po');
     return $fileLoader();
 });

You can also assemble the package object yourself:

 use Aura\Intl\Package;
 I18n::config('my_domain', function ($name, $locale) {
     $package = new Package('default');
     $messages = (...); // Fetch messages for locale from external service.
     $package->setMessages($message);
     $package->setFallback('default');
     return $package;
 });

Parameters

string $name

The name of the translator to create a loader for

callable $loader

A callable object that should return a Package instance to be used for assembling a new translator.

locale()

locale(string|null  $locale = null) : string|null

Sets the default locale to use for future translator instances.

This also affects the intl.default_locale PHP setting.

When called with no arguments it will return the currently configure locale as stored in the intl.default_locale PHP setting.

Parameters

string|null $locale

The name of the locale to set as default.

Returns

string|null —

The name of the default locale.

setLocale()

setLocale(string  $locale) : void

Sets the default locale to use for future translator instances.

This also affects the intl.default_locale PHP setting.

Parameters

string $locale

The name of the locale to set as default.

getLocale()

getLocale() : string

Will return the currently configure locale as stored in the `intl.default_locale` PHP setting.

Returns

string —

The name of the default locale.

defaultLocale()

defaultLocale() : string

This returns the default locale before any modifications, i.e.

the value as stored in the intl.default_locale PHP setting before any manipulation by this class.

Returns

string

getDefaultLocale()

getDefaultLocale() : string

Returns the default locale.

This returns the default locale before any modifications, i.e. the value as stored in the intl.default_locale PHP setting before any manipulation by this class.

Returns

string

defaultFormatter()

defaultFormatter(string|null  $name = null) : string

Sets the name of the default messages formatter to use for future translator instances.

By default the default and sprintf formatters are available.

If called with no arguments, it will return the currently configured value.

Parameters

string|null $name

The name of the formatter to use.

Returns

string —

The name of the formatter.

getDefaultFormatter()

getDefaultFormatter() : string

Returns the currently configured default formatter.

Returns

string —

The name of the formatter.

setDefaultFormatter()

setDefaultFormatter(string  $name) : void

Sets the name of the default messages formatter to use for future translator instances. By default the `default` and `sprintf` formatters are available.

Parameters

string $name

The name of the formatter to use.

useFallback()

useFallback(boolean  $enable = true) : void

Set if the domain fallback is used.

Parameters

boolean $enable

flag to enable or disable fallback

clear()

clear() : void

Destroys all translator instances and creates a new empty translations collection.