Class MessagesFileLoader
A generic translations package factory that will load translations files based on the file extension and the package name.
This class is a callable, so it can be used as a package loader argument.
Property Summary
-
$_extension protected
string
The extension name.
-
$_locale protected
string
The locale to load for the given package.
-
$_name protected
string
The package (domain) name.
-
$_plugin protected
string|null
The package (domain) plugin
Method Summary
-
__construct() public
Creates a translation file loader. The file to be loaded corresponds to the following rules:
-
__invoke() public
Loads the translation file and parses it. Returns an instance of a translations package containing the messages loaded from the file.
-
translationFile() protected
-
translationsFolders() public
Returns the folders where the file should be looked for according to the locale and package name.
Method Detail
__construct() ¶ public
__construct(string $name, string $locale, string $extension = 'po')
Creates a translation file loader. The file to be loaded corresponds to the following rules:
- The locale is a folder under the
resources/locales/
directory, a fallback will be used if the folder is not found. - The $name corresponds to the file name to load
- If there is a loaded plugin with the underscored version of $name, the translation file will be loaded from such plugin.
Examples:
Load and parse resources/locales/fr/validation.po
$loader = new MessagesFileLoader('validation', 'fr_FR', 'po');
$package = $loader();
Load and parse resources/locales/fr_FR/validation.mo
$loader = new MessagesFileLoader('validation', 'fr_FR', 'mo');
$package = $loader();
Load the plugins/MyPlugin/resources/locales/fr/my_plugin.po file:
$loader = new MessagesFileLoader('my_plugin', 'fr_FR', 'mo');
$package = $loader();
Vendor prefixed plugins are expected to use `my_prefix_my_plugin` syntax.
Parameters
-
string
$name The name (domain) of the translations package.
-
string
$locale The locale to load, this will be mapped to a folder in the system.
-
string
$extension optional The file extension to use. This will also be mapped to a messages parser class.
__invoke() ¶ public
__invoke(): Cake\I18n\Package|false
Loads the translation file and parses it. Returns an instance of a translations package containing the messages loaded from the file.
Returns
Cake\I18n\Package|false
Throws
Cake\Core\Exception\CakeException
if no file parser class could be found for the specified file extension.
translationFile() ¶ protected
translationFile(list<string> $folders, string $name, string $ext): string|null
Parameters
-
list<string>
$folders Folders
-
string
$name File name
-
string
$ext File extension
Returns
string|null
translationsFolders() ¶ public
translationsFolders(): array<string>
Returns the folders where the file should be looked for according to the locale and package name.
Returns
array<string>