类 MessagesFileLoader
一个通用的翻译包工厂,它将根据文件扩展名和包名称加载翻译文件。
此类是一个可调用对象,因此可以用作包加载器参数。
命名空间: Cake\I18n
属性摘要
-
$_extension protected
string
扩展名。
-
$_locale protected
string
为给定包加载的区域设置。
-
$_name protected
string
包(域)名称。
-
$_plugin protected
string|null
包(域)插件
方法摘要
-
__construct() public
创建一个翻译文件加载器。要加载的文件对应于以下规则
-
__invoke() public
加载翻译文件并解析它。返回一个翻译包实例,其中包含从文件中加载的消息。
-
translationFile() protected
-
translationsFolders() public
返回应根据区域设置和包名称查找文件的文件夹。
方法详细
__construct() ¶ public
__construct(string $name, string $locale, string $extension = 'po')
创建一个翻译文件加载器。要加载的文件对应于以下规则
- 区域设置是
resources/locales/
目录下的一个文件夹,如果找不到该文件夹,将使用回退。 - $name 对应于要加载的文件名
- 如果有一个加载的插件,其名称与 $name 的下划线版本相同,则将从该插件加载翻译文件。
示例
加载并解析 resources/locales/fr/validation.po
$loader = new MessagesFileLoader('validation', 'fr_FR', 'po');
$package = $loader();
加载并解析 resources/locales/fr_FR/validation.mo
$loader = new MessagesFileLoader('validation', 'fr_FR', 'mo');
$package = $loader();
加载 plugins/MyPlugin/resources/locales/fr/my_plugin.po 文件
$loader = new MessagesFileLoader('my_plugin', 'fr_FR', 'mo');
$package = $loader();
Vendor prefixed plugins are expected to use `my_prefix_my_plugin` syntax.
参数
-
string
$name 翻译包的名称(域)。
-
string
$locale 要加载的区域设置,这将映射到系统中的一个文件夹。
-
string
$extension optional 要使用的文件扩展名。这也将映射到消息解析器类。
__invoke() ¶ public
__invoke(): Cake\I18n\Package|false
加载翻译文件并解析它。返回一个翻译包实例,其中包含从文件中加载的消息。
返回
Cake\I18n\Package|false
抛出
Cake\Core\Exception\CakeException
如果找不到指定文件扩展名的文件解析器类。
translationFile() ¶ protected
translationFile(list<string> $folders, string $name, string $ext): string|null
参数
-
list<string>
$folders 文件夹
-
string
$name 文件名
-
string
$ext 文件扩展名
返回
string|null
translationsFolders() ¶ public
translationsFolders(): list<string>
返回应根据区域设置和包名称查找文件的文件夹。
返回
list<string>