yiisoft/translator-message-db

Yii翻译器数据库消息存储

1.0.0 2023-05-09 18:37 UTC

This package is auto-updated.

Last update: 2024-08-28 04:16:23 UTC


README

Yii

Yii翻译器数据库消息存储


Latest Stable Version Total Downloads codecov Mutation testing badge static analysis type-coverage

该包提供了基于数据库的消息存储后端,用于与yiisoft/translator包一起使用。

支持的数据库

要求

  • PHP 8.0或更高版本。
  • PHP的json扩展。

安装

可以使用Composer安装该包

composer require yiisoft/translator-message-db

创建数据库连接

更多信息请参阅yiisoft/db

数据库准备

包提供了两种数据库准备方式

  1. 原始SQL。您可以使用它与您的应用程序中使用的迁移包一起使用。

  2. 使用DbSchemaManagerensureTables()ensureNoTables()方法确保翻译表(默认为{{%yii_source_message}}{{%yii_message}})存在。

配置

快速开始

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

use Yiisoft\Translator\MessageReaderInterface;
use Yiisoft\Translator\Message\Db\MessageSource;

return [
    MessageReaderInterface::class => [
        'class' => MessageSource::class,
    ],
];

通用用法

创建MessageSource实例

/** @var \Yiisoft\Db\Connection\ConnectionInterface $db */
$messageSource = new \Yiisoft\Translator\Message\Db\MessageSource($db);

创建带缓存的MessageSource实例

/** @var \Yiisoft\Db\Connection\ConnectionInterface $db */
/** @var \Yiisoft\Cache\CacheInterface $cache */
$cacheDuration = 7200; // The TTL of this value. If set to null, default value is used - 3600
$messageSource = new \Yiisoft\Translator\Message\Db\MessageSource($db, $cache, $cacheDuration);

在不使用yiisoft/translator包的情况下读取消息

/** 
 * @var \Yiisoft\Translator\Message\Db\MessageSource $messageSource
 * @var ?string $translatedString
 */
$id = 'messageIdentificator';
$category = 'messageCategory';
$language = 'de-DE';

$translatedString = $messageSource->getMessage($id, $category, $language);

将数组中的消息写入存储

/** 
 * @var \Yiisoft\Translator\Message\Db\MessageSource $messageSource
 */
$category = 'messageCategory';
$language = 'de-DE';
$data = [
    'test.id1' => [
        'message' => 'Nachricht 1', // translated string
        'comment' => 'Comment for message 1', // is optional parameter for save extra metadata
    ],
    'test.id2' => [
        'message' => 'Nachricht 2',
    ],
    'test.id3' => [
        'message' => 'Nachricht 3',
    ],
];

$messageSource->write($category, $language, $data);

文档

如果您需要帮助或有问题,Yii论坛是不错的选择。您还可以查看其他Yii社区资源

许可证

Yii翻译器数据库消息存储是免费软件。它根据BSD许可证发布。有关更多信息,请参阅LICENSE

Yii Software维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack