schere软件/cake-language-switcher

CakePHP 语言切换插件

v3.0.0-RC1 2019-11-29 12:55 UTC

README

CakePHP 3 Language Switcher Plugin

Build Status License

安装

您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。

安装 composer 包的推荐方法是

composer require scherersoftware/cake-language-switcher

下一步是在您的 bootstrap.php 中加载插件

bin/cake plugin load LanguageSwitcher

将中间件添加到您的 Application.php 中

$middleware->push(new \LanguageSwitcher\Middleware\LanguageSwitcherMiddleware());

可选地,您可以传递一个数组来覆盖默认选项

$middleware->push(new \LanguageSwitcher\Middleware\LanguageSwitcherMiddleware([
    'model' => 'Users',
    'field' => 'language',
    'Cookie' => [
        'name' => 'ChoosenLanguage',
        'expires' => '+1 year',
        'domain' => 'foo.bar',
        'canonicalizeLocale' => false
    ],
    'availableLanguages' => [
        'en_US' => 'en_US'
    ]
]));

将 Helper 添加到您的 AppView 中

$this->loadHelper('LanguageSwitcher.LanguageSwitcher');

可选地,您可以传递一个数组

$this->loadHelper('LanguageSwitcher.LanguageSwitcher', [
    'availableLanguages' => [
        'en_US' => 'en_US',
        'de_DE' => 'de_DE'
    ],
    'displayNames' => [
        'en_US' => 'English',
        'de_DE' => 'Deutsch'
    ],
    'imageMapping' => [
        'en_US' => 'United-States',
        'de_DE' => 'Germany'
    ],
    'renderToggleButtonDisplayName' => true,
    'element' => 'LanguageSwitcher.language_switcher'
]);

来使用元素

<?= $this->LanguageSwitcher->renderLanguageSwitcher(); ?>

接下来,您应该迁移您的数据库。

bin/cake migrations migrate -p LanguageSwitcher

将位于 webroot/css 下的 css 文件添加到您的布局文件中!

配置使用

在您的 app.php 中添加以下内容以更改插件的配置

'LanguageSwitcher' => [
    'model' => 'Users',
    'field' => 'language',
    'Cookie' => [
        'name' => 'ChoosenLanguage',
        'expires' => '+1 year',
        'canonicalizeLocale' => false
    ],
    'availableLanguages' => [
        'en_US'
    ],
    'displayNames' => [
        'en_US' => 'English'
    ],
    'imageMapping' => [
        'en_US' => 'United-States'
    ],
    'renderToggleButtonDisplayName' => true,
    'beforeSaveCallback' => function ($user, $request, $response) {
        $language = 'en_EN';
        $user->language = $language;
    }
]
  • model: 迁移中使用的模型
  • field: 模型中的字段
  • Cookie: 可选地,您可以更改 cookie 名称、cookie 的过期日期并定义是否应保存规范化的区域设置。
  • availableLanguages: 添加语言键
  • displayNames: 应包含与 availableLanguages 相同的键。将语言键与其显示名称映射
  • imageMapping: 应包含与 availableLanguages 相同的键。将语言键与其标志图像名称映射。 (对于所有可能的标志名称,请打开 webroot/img/flags)
  • beforeSaveCallback: 可选地,您可以覆盖用户实体以设置例如语言字段的特殊值
  • renderToggleButtonDisplayName: 可选地,您可以隐藏下拉切换按钮中的语言名称
  • element: 可选地,您可以覆盖用于渲染语言切换器的元素,使用您自己的。