cakephp/i18n

CakePHP 国际化库,支持消息翻译和日期、数字本地化

5.1.0 2024-09-06 12:23 UTC

This package is auto-updated.

Last update: 2024-09-21 03:06:23 UTC


README

Total Downloads License

CakePHP 国际化库

I18n 库提供了一个 I18n 服务定位器,可用于设置当前区域设置、构建翻译包和翻译消息。

此外,它还提供了 TimeNumber 类,可用于输出指定区域设置的日期、货币和任何数字的正确格式。

用法

内部,I18n 类使用 Aura.Intl。熟悉它将帮助您了解如何构建和操作翻译包,如果您想手动创建翻译包而不是使用本库使用的约定。

设置当前区域设置

use Cake\I18n\I18n;

I18n::setLocale('en_US');

设置包含 po 文件的文件夹路径。

use Cake\Core\Configure;

Configure::write('App.paths.locales', ['/path/with/trailing/slash/']);

有关预期文件夹结构和文件命名的详细信息,请参阅CakePHP 手册

翻译消息

echo __(
    'Hi {0,string}, your balance on the {1,date} is {2,number,currency}',
    ['Charles', '2014-01-13 11:12:00', 1354.37]
);

// Returns
Hi Charles, your balance on the Jan 13, 2014, 11:12 AM is $ 1,354.37

创建自己的翻译器

use Cake\I18n\I18n;
use Cake\I18n\Package;

I18n::translator('animals', 'fr_FR', function () {
    $package = new Package(
        'default', // The formatting strategy (ICU)
        'default', // The fallback domain
    );
    $package->setMessages([
        'Dog' => 'Chien',
        'Cat' => 'Chat',
        'Bird' => 'Oiseau'
        ...
    ]);

    return $package;
});

I18n::getLocale('fr_FR');
__d('animals', 'Dog'); // Returns "Chien"

格式化时间

$time = Time::now();
echo $time; // shows '4/20/14, 10:10 PM' for the en-US locale

格式化数字

echo Number::format(100100100);
echo Number::currency(123456.7890, 'EUR');
// outputs €123,456.79

文档

请确保您检查了官方 I18n 文档

Time 类的文档包含有关如何为所选区域设置配置和输出时间字符串的说明。

Number 类的文档展示了如何使用 Number 类在特定区域设置中显示数字。