schere软件 / cake-language-switcher
CakePHP 语言切换插件
v3.0.0-RC1
2019-11-29 12:55 UTC
Requires
- php: >=7.2.0
- cakephp/cakephp: ^4.0.0-RC1
Requires (Dev)
- phpstan/phpstan: ^0.11
- scherersoftware/coding-standard: ^4.0-dev
README
安装
您可以使用 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: 可选地,您可以覆盖用于渲染语言切换器的元素,使用您自己的。