Class I18n
I18n handles translation of Text and time format strings.
Constants
- 
          
          stringDEFAULT_LOCALE ¶'en_US'Default locale 
Property Summary
- 
        $_collection protected staticCake\I18n\TranslatorRegistry|nullThe translators collection 
- 
        $_defaultLocale protected staticstringThe environment default locale 
Method Summary
- 
          clear() public staticDestroys all translator instances and creates a new empty translations collection. 
- 
          config() public staticRegisters 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. 
- 
          getDefaultFormatter() public staticReturns the currently configured default formatter. 
- 
          getDefaultLocale() public staticReturns the default locale. 
- 
          getLocale() public staticWill return the currently configure locale as stored in the intl.default_localePHP setting.
- 
          getTranslator() public staticReturns an instance of a translator that was configured for the name and locale. 
- 
          setDefaultFormatter() public staticSets the name of the default messages formatter to use for future translator instances. By default the defaultandsprintfformatters are available.
- 
          setLocale() public staticSets the default locale to use for future translator instances. This also affects the intl.default_localePHP setting.
- 
          setTranslator() public staticSets a translator. 
- 
          translators() public staticReturns 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. 
- 
          useFallback() public staticSet if the domain fallback is used. 
Method Detail
clear() ¶ public static
clear(): voidDestroys all translator instances and creates a new empty translations collection.
Returns
voidconfig() ¶ public static
config(string $name, callable $loader): voidRegisters 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 resources/locales/$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. 
Returns
voidgetDefaultFormatter() ¶ public static
getDefaultFormatter(): stringReturns the currently configured default formatter.
Returns
stringThe name of the formatter.
getDefaultLocale() ¶ public static
getDefaultLocale(): stringReturns 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
stringgetLocale() ¶ public static
getLocale(): stringWill return the currently configure locale as stored in the
intl.default_locale PHP setting.
Returns
stringThe name of the default locale.
getTranslator() ¶ public static
getTranslator(string $name = 'default', string|null $locale = null): Aura\Intl\TranslatorInterfaceReturns 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 optional
- The domain of the translation messages. 
- 
                string|null$locale optional
- The locale for the translator. 
Returns
Aura\Intl\TranslatorInterfaceThe configured translator.
Throws
Aura\Intl\ExceptionsetDefaultFormatter() ¶ public static
setDefaultFormatter(string $name): voidSets 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. 
Returns
voidsetLocale() ¶ public static
setLocale(string $locale): voidSets 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. 
Returns
voidsetTranslator() ¶ public static
setTranslator(string $name, callable $loader, string|null $locale = null): voidSets 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 resources/locales/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 optional
- The locale for the translator. 
Returns
voidtranslators() ¶ public static
translators(): Cake\I18n\TranslatorRegistryReturns 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\TranslatorRegistryThe translators collection.
useFallback() ¶ public static
useFallback(bool $enable = true): voidSet if the domain fallback is used.
Parameters
- 
                bool$enable optional
- flag to enable or disable fallback 
Returns
void