yii1tech/i18n-fallback

提供对Yii1翻译回退到其他消息源的支持

1.0.0 2023-06-20 10:48 UTC

This package is auto-updated.

Last update: 2024-09-20 13:27:37 UTC


README

Yii1的翻译回退扩展


此扩展提供对Yii1翻译回退到其他消息源的支持。

有关许可信息,请参阅LICENSE-文件。

Latest Stable Version Total Downloads Build Status

安装

安装此扩展的首选方式是通过composer

运行以下命令:

php composer.phar require --prefer-dist yii1tech/i18n-fallback

"yii1tech/i18n-fallback": "*"

将以下内容添加到您的composer.json文件中的"require"部分。

使用方法

此扩展提供对Yii1翻译回退到其他消息源的支持。例如:您可以设置一个管理面板来编辑数据库中存储的翻译。同时,您可能还想通过存储在VCS下的本地文件设置默认翻译。应用配置示例

<?php

return [
    'components' => [
        'messages' => [
            'class' => CDbMessageSource::class, // use database source, controlled via admin panel
            'forceTranslation' => true,
            'behaviors' => [
                'fallbackBehavior' => [
                    'class' => yii1tech\i18n\fallback\MessageSourceFallbackBehavior::class,
                    'fallbackMessageSource' => [
                        'class' => CPhpMessageSource::class, // fallback to local translation files, if message is missing in the database
                        'forceTranslation' => true,
                    ],
                ],
            ],
        ],
        // ...
    ],
    // ...
];

如果未设置\yii1tech\i18n\fallback\MessageSourceFallbackBehavior::$fallbackMessageSource,则行为将使用其所有者。这允许设置回退到某些默认语言,以供其他语言中缺少的翻译使用。回退语言由\yii1tech\i18n\fallback\MessageSourceFallbackBehavior::$fallbackLanguage控制。例如

<?php

return [
    'components' => [
        'messages' => [
            'class' => CPhpMessageSource::class, // setup single message source
            'forceTranslation' => true,
            'behaviors' => [
                'fallbackBehavior' => [
                    'class' => yii1tech\i18n\fallback\MessageSourceFallbackBehavior::class,
                    'fallbackLanguage' => 'en_us', // fallback to 'en_us', if translation is missing in some language (like 'es', 'ru', etc.)
                ],
            ],
        ],
        // ...
    ],
    // ...
];

注意:您可以设置\yii1tech\i18n\fallback\MessageSourceFallbackBehavior::$fallbackLanguage与特定的消息源。例如:您可能只支持默认语言('en_us')的本地翻译文件。如果省略了\yii1tech\i18n\fallback\MessageSourceFallbackBehavior::$fallbackMessageSource,则行为所有者实例将用作回退实例。

您还可以将yii1tech\i18n\fallback\MessageSourceFallbackBehavior附加到回退消息源,创建回退链。例如

<?php

return [
    'components' => [
        'messages' => [
            'class' => CDbMessageSource::class, // use database source, controlled via admin panel
            'forceTranslation' => true,
            'behaviors' => [
                'fallbackBehavior' => [
                    'class' => yii1tech\i18n\fallback\MessageSourceFallbackBehavior::class,
                    'fallbackMessageSource' => [
                        'class' => CPhpMessageSource::class, // fallback to local translation files, if message is missing in the database
                        'forceTranslation' => true,
                        'behaviors' => [
                            'fallbackBehavior' => [
                                'class' => yii1tech\i18n\fallback\MessageSourceFallbackBehavior::class,
                                'fallbackLanguage' => 'en_us', // fallback to 'en_us', if translation is missing in some language (like 'es', 'ru', etc.)
                            ],
                        ],
                    ],
                ],
            ],
        ],
        // ...
    ],
    // ...
];