yiisoft/translator-formatter-intl

该包已被弃用且不再维护。未建议替代包。

YiiTranslator intl消息格式化器

1.0.0 2021-05-13 10:44 UTC

This package is auto-updated.

Last update: 2022-12-08 07:07:16 UTC


README

此包已弃用,现在它是yiisoft/translator的一部分。

68747470733a2f2f796969736f66742e6769746875622e696f2f646f63732f696d616765732f7969695f6c6f676f2e737667

YiiTranslator intl消息格式化器


Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

该包提供了利用PHP intl扩展消息格式化功能的消息格式化器。

要求

  • PHP 7.4或更高版本。
  • intl PHP扩展1.0.2或更高版本。
  • ICU库49.0或更高版本。

安装

可以使用composer安装此包

composer require yiisoft/translator-formatter-intl --prefer-dist

配置

如果您使用yiisoft/config,则将自动获取配置。如果没有,则需要以下DI容器配置

<?php

declare(strict_types=1);

use Yiisoft\Translator\MessageFormatterInterface;
use Yiisoft\Translator\Formatter\Intl\IntlMessageFormatter;

return [
    MessageFormatterInterface::class => IntlMessageFormatter::class,
];

通用用法

使用yiisoft/translator的示例

/** @var \Yiisoft\Translator\Translator $translator **/

$categoryName = 'moduleId';
$pathToModuleTranslations = './module/messages/';
$additionalCategorySource = new Yiisoft\Translator\CategorySource(
    $categoryName, 
    new \Yiisoft\Translator\Message\Php\MessageSource($pathToModuleTranslations),
    new \Yiisoft\Translator\Formatter\Intl\IntlMessageFormatter()
);
$translator->addCategorySource($additionalCategorySource);

$translator->translate('Test string: {str}', ['str' => 'string data'], 'moduleId', 'en');
// output: Test string: string data

不使用yiisoft/translator包的示例

/** @var \Yiisoft\Translator\Formatter\Intl\IntlMessageFormatter $formatter */
$pattern = 'Total {count, number} {count, plural, one{item} other{items}}.';
$params = ['count' => 1];
$locale = 'en';
echo $formatter->format($pattern, $params, $locale);
// output: Total 1 item. 

$pattern = '{gender, select, female{Уважаемая} other{Уважаемый}} {firstname}';
$params = ['gender' => null, 'firstname' => 'Vadim'];
echo $formatter->format($pattern, $params, 'ru');
// output: Уважаемый Vadim 

$pattern = '{name} is {gender} and {gender, select, female{she} male{he} other{it}} loves Yii!';
$params = ['name' => 'Alexander', 'gender' => 'male'];
echo $formatter->format($pattern, $params, $locale);
// output: Alexander is male and he loves Yii! 

要获取您正在使用的区域设置的可用选项列表,请参阅https://intl.rmcreative.ru/

测试

单元测试

该包使用PHPUnit进行测试。要运行测试

./vendor/bin/phpunit

突变测试

该包的测试使用Infection突变框架和Infection静态分析插件进行测试。要运行它

./vendor/bin/roave-infection-static-analysis-plugin

静态分析

代码使用Psalm进行静态分析。要运行静态分析

./vendor/bin/psalm

许可

Yii翻译器Intl消息格式化工具是免费软件。它遵循BSD许可证条款发布。有关更多信息,请参阅许可证

Yii软件维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack