2fox / yii2-language-picker
此包最新版本(dev-master)没有可用的许可信息。
Yii2 语言选择器小部件
dev-master
2018-04-06 08:12 UTC
Requires
- phpspec/php-diff: >=1.0.2
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-18 23:16:33 UTC
README
Yii2 语言选择器小部件(源自 https://github.com/lajax/yii2-language-picker)
简介
此小部件提供了一个易于使用的语言选择器,使我们能够轻松更改网站的语言。语言更改可以是同步的或异步的(通过Ajax)。默认方法是异步的(通过Ajax调用),但如果由于任何原因(例如客户端上JavaScript被阻止)该方法失败,则新语言将通过自动页面刷新同步更新。
语言切换器可以完全自定义。然而,预定义的选项提供下拉列表(下拉列表)和基于链接的列表(按钮列表)。两个版本都可以显示所选语言及其对应的旗帜(图标)。
安装
安装此扩展的首选方法是通过 composer。
将以下内容
"require": {
"twofox/yii2-language-picker": "*"
},
"repositories": [{
"type": "git",
"url": "https://twofox:@bitbucket.org/twofox/yii2-language-picker.git"
}],
添加到您的 composer.json
文件的 require 部分。
配置
语言元素的标识符。例如:en, en-US
最小配置(仅图标)
'language' => 'en',
'bootstrap' => ['languagepicker'],
'components' => [
'languagepicker' => [
'class' => 'twofox\languagepicker\Component',
'languages' => ['en', 'de', 'fr'] // List of available languages (icons only)
]
],
'on beforeAction' => function ($event) {
\Yii::$app->languagepicker->initLanguage();
}
最小配置(图标和文本)
'language' => 'en',
'bootstrap' => ['languagepicker'],
'components' => [
'languagepicker' => [
'class' => 'twofox\languagepicker\Component', // List of available languages (icons and text)
'languages' => ['en' => 'English', 'de' => 'Deutsch', 'fr' => 'Français']
]
],
完整配置(仅图标)
'language' => 'en-US',
'bootstrap' => ['languagepicker'],
'components' => [
'languagepicker' => [
'class' => 'twofox\languagepicker\Component',
'languages' => ['en-US', 'de-DE', 'fr-FR'], // List of available languages (icons only)
'callback' => function() {
if (!\Yii::$app->user->isGuest) {
$user = \Yii::$app->user->identity;
$user->language = \Yii::$app->language;
$user->save();
}
}
]
],
与 Yii2-translate-manager 集成
最小配置(仅图标)
'language' => 'en',
'bootstrap' => ['languagepicker'],
'components' => [
'languagepicker' => [
'class' => 'twofox\languagepicker\Component',
'languages' => function () { // List of available languages (icons only)
return array_keys(\lajax\translatemanager\models\Language::getLanguageNames(true));
}
]
],
完整配置(图标和文本)
'language' => 'en-US',
'bootstrap' => ['languagepicker'],
'components' => [
'languagepicker' => [
'class' => 'twofox\languagepicker\Component',
'languages' => function () { // List of available languages (icons and text)
return \lajax\translatemanager\models\Language::getLanguageNames(true);
},
'cookieName' => 'language', // Name of the cookie.
'cookieDomain' => 'example.com', // Domain of the cookie.
'expireDays' => 64, // The expiration time of the cookie is 64 days.
'callback' => function() {
if (!\Yii::$app->user->isGuest) {
$user = \Yii::$app->user->identity;
$user->language = \Yii::$app->language;
$user->save();
}
}
]
],
重要
要使用此小部件,urlManager 配置中 enablePrettyUrl 属性的值必须为 true,showScriptName 的值必须为 false。
示例
'components' => [
// ...
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
// your rules go here
],
// ...
],
// ...
]
使用 urlManager。
用法
显示语言选择器
显示预定义的语言选择器按钮(图标和文本或仅图标)
<?= \twofox\languagepicker\widgets\LanguagePicker::widget([
'skin' => \twofox\languagepicker\widgets\LanguagePicker::SKIN_BUTTON,
'size' => \twofox\languagepicker\widgets\LanguagePicker::SIZE_SMALL
]); ?>
显示预定义的语言选择器下拉列表(图标和文本或仅图标)
<?= \twofox\languagepicker\widgets\LanguagePicker::widget([
'skin' => \twofox\languagepicker\widgets\LanguagePicker::SKIN_DROPDOWN,
'size' => \twofox\languagepicker\widgets\LanguagePicker::SIZE_LARGE
]); ?>
自定义语言选择器
<?= \twofox\languagepicker\widgets\LanguagePicker::widget([
'itemTemplate' => '<li><a href="{link}" title="{language}"><i id="{language}"></i> {name}</a></li>',
'activeItemTemplate' => '<a href="{link}" title="{language}"><i id="{language}"></i> {name}</a>',
'parentTemplate' => '<div class="language-picker dropdown-list {size}"><div>{activeItem}<ul>{items}</ul></div></div>',
'languageAsset' => 'twofox\languagepicker\bundles\LanguageLargeIconsAsset', // StyleSheets
'languagePluginAsset' => 'twofox\languagepicker\bundles\LanguagePluginAsset', // JavaScripts
]); ?>