类 I18n
I18n 处理文本和时间格式字符串的翻译。
常量
-
字符串
DEFAULT_LOCALE ¶'en_US'
默认语言环境
属性概述
-
$_collection protected static
Cake\I18n\TranslatorRegistry|null
翻译器集合
-
$_defaultLocale protected static
字符串|null
环境默认语言环境
方法概述
-
clear() public static
销毁所有翻译器实例,并创建一个新的空翻译集合。
-
config() public static
注册一个可调用对象,可用于为同一个翻译域创建新的翻译器实例。只要请求尚未配置或加载的域的翻译器对象,就会调用加载器。
-
getDefaultFormatter() public static
返回当前配置的默认格式化程序。
-
getDefaultLocale() public static
返回默认语言环境。
-
getLocale() public static
将返回当前配置的语言环境,如
intl.default_locale
PHP 设置中存储的。 -
getTranslator() public static
返回为名称和语言环境配置的翻译器实例。
-
setDefaultFormatter() public static
设置要用于未来翻译器实例的默认消息格式化程序的名称。默认情况下,
default
和sprintf
格式化程序可用。 -
setLocale() public static
设置要用于未来翻译器实例的默认语言环境。这也会影响
intl.default_locale
PHP 设置。 -
setTranslator() public static
设置翻译器。
-
translators() public static
返回翻译器集合实例。它可用于根据名称和语言环境获取特定的翻译器,或配置尚未构建的未来翻译的某些方面。
-
useFallback() public static
设置是否使用域回退。
方法详情
config() ¶ public static
config(string $name, callable $loader): void
注册一个可调用对象,可用于为同一个翻译域创建新的翻译器实例。只要请求尚未配置或加载的域的翻译器对象,就会调用加载器。
当您需要在同一个域的多个不同语言环境中延迟地使用翻译,并且不想使用基于 gettext
文件的内置翻译服务时,注册加载器非常有用。
加载器对象将接收两个参数:需要构建的域名称和请求的语言环境。这些对象可以从任何来源组装消息,但必须返回 Cake\I18n\Package
对象。
示例
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();
});
您也可以自己组装包对象
use Cake\I18n\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;
});
参数
-
字符串
$name 要为其创建加载器的翻译器的名称
-
可调用
$loader 一个可调用对象,应返回一个 Package 实例,用于组装新的翻译器。
返回
void
getDefaultLocale() ¶ public static
getDefaultLocale(): string
返回默认语言环境。
这将在任何修改之前返回默认语言环境,即在该类进行任何操作之前,存储在 intl.default_locale
PHP 设置中的值。
返回
字符串
getLocale() ¶ public static
getLocale(): string
将返回当前配置的语言环境,如 intl.default_locale
PHP 设置中存储的。
返回
字符串
getTranslator() ¶ public static
getTranslator(string $name = 'default', string|null $locale = null): Cake\I18n\Translator
返回为名称和语言环境配置的翻译器实例。
如果没有传递语言环境,则它将使用 getLocale()
方法返回的值。
参数
-
字符串
$name 可选 翻译消息的域。
-
字符串|null
$locale 可选 翻译器的语言环境。
返回
Cake\I18n\Translator
抛出
Cake\I18n\Exception\I18nException
setDefaultFormatter() ¶ public static
setDefaultFormatter(string $name): void
设置要用于未来翻译器实例的默认消息格式化程序的名称。默认情况下,default
和 sprintf
格式化程序可用。
参数
-
字符串
$name 要使用的格式化程序的名称。
返回
void
setLocale() ¶ public static
setLocale(string $locale): void
设置要用于未来翻译器实例的默认语言环境。这也会影响 intl.default_locale
PHP 设置。
参数
-
字符串
$locale 要设置为默认语言环境的名称。
返回
void
setTranslator() ¶ public static
setTranslator(string $name, callable $loader, string|null $locale = null): void
设置翻译器。
配置未来的翻译器,这可以通过将可调用对象作为此函数的最后一个参数来实现。
示例
I18n::setTranslator('default', function () {
$package = new \Cake\I18n\Package();
$package->setMessages([
'Cake' => 'Gâteau'
]);
return $package;
}, 'fr_FR');
$translator = I18n::getTranslator('default', 'fr_FR');
echo $translator->translate('Cake');
您也可以使用 Cake\I18n\MessagesFileLoader
类从文件夹加载特定文件。例如,要从 resources/locales/custom
文件夹加载 my_translations.po
文件,您将执行以下操作
I18n::setTranslator(
'default',
new MessagesFileLoader('my_translations', 'custom', 'po'),
'fr_FR'
);
参数
-
字符串
$name 翻译消息的域。
-
可调用
$loader 一个回调函数或可调用类,负责构建翻译包实例。
-
字符串|null
$locale 可选 翻译器的语言环境。
返回
void
translators() ¶ public static
translators(): Cake\I18n\TranslatorRegistry
返回翻译器集合实例。它可用于根据名称和语言环境获取特定的翻译器,或配置尚未构建的未来翻译的某些方面。
返回
Cake\I18n\TranslatorRegistry
useFallback() ¶ public static
useFallback(bool $enable = true): void
设置是否使用域回退。
参数
-
布尔值
$enable 可选 启用或禁用回退的标志
返回
void