user1007017/yii2-language-picker

Yii2 语言选择器小部件

安装: 20

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 24

语言:CSS

类型:yii2-extension

1.2.0 2015-09-01 16:53 UTC

This package is auto-updated.

Last update: 2024-09-20 16:58:24 UTC


README

Yii2 语言选择器小部件

简介

这个小部件提供了一种易于使用的语言选择器,使我们能够轻松更改网站的语言。语言更改可以同步或异步(通过Ajax)进行。默认方法是异步(通过Ajax调用),但如果由于任何原因(例如客户端上JavaScript被阻止)该方法失败,则新语言将通过自动页面刷新同步更新。

语言切换器可以完全自定义。然而,预定义选项提供了一个下拉列表(下拉列表)和一个基于链接的列表(按钮列表)。两个版本都可以显示所选语言及其相应的国旗(图标)。

安装

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

运行以下命令之一:

php composer.phar require --prefer-dist user1007017/yii2-language-picker "1.*"

或者

"user1007017/yii2-language-picker": "1.*"

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

配置

语言元素的标识符。例如:en, en-US

最小配置(仅图标)

'language' => 'en',
'bootstrap' => ['languagepicker'],
'components' => [
    'languagepicker' => [
        'class' => 'user1007017\languagepicker\Component',
        'languages' => ['en', 'de', 'fr']                   // List of available languages (icons only)
    ]
],

最小配置(图标和文本)

'language' => 'en',
'bootstrap' => ['languagepicker'],
'components' => [
    'languagepicker' => [
        'class' => 'user1007017\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' => 'user1007017\languagepicker\Component',
        'languages' => ['en-US', 'de-DE', 'fr-FR'],         // List of available languages (icons only)
        '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();
            }
        }
    ]
],

与 Yii2-translate-manager 集成

最小配置(仅图标)

'language' => 'en',
'bootstrap' => ['languagepicker'],
'components' => [
    'languagepicker' => [
        'class' => 'user1007017\languagepicker\Component',
        'languages' => function () {                        // List of available languages (icons only)
            return array_keys(\user1007017\translatemanager\models\Language::getLanguageNames(true));
        }
    ]
],

完整配置(图标和文本)

'language' => 'en-US',
'bootstrap' => ['languagepicker'],
'components' => [
    'languagepicker' => [
        'class' => 'user1007017\languagepicker\Component',
        'languages' => function () {                        // List of available languages (icons and text)
            return \user1007017\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

用法

显示语言选择器

显示预定义的语言选择器按钮(图标和文本或仅图标)

<?= \user1007017\languagepicker\widgets\LanguagePicker::widget([
    'skin' => \user1007017\languagepicker\widgets\LanguagePicker::SKIN_BUTTON,
    'size' => \user1007017\languagepicker\widgets\LanguagePicker::SIZE_SMALL
]); ?>

显示预定义的语言选择器下拉列表(图标和文本或仅图标)

<?= \user1007017\languagepicker\widgets\LanguagePicker::widget([
    'skin' => \user1007017\languagepicker\widgets\LanguagePicker::SKIN_DROPDOWN,
    'size' => \user1007017\languagepicker\widgets\LanguagePicker::SIZE_LARGE
]); ?>

自定义语言选择器

<?= \user1007017\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' => 'user1007017\languagepicker\bundles\LanguageLargeIconsAsset',      // StyleSheets
    'languagePluginAsset' => 'user1007017\languagepicker\bundles\LanguagePluginAsset',    // JavaScripts
]); ?>

其他示例:隐藏活动语言

NavBar::begin([
    'brandLabel' => Html::img('@web/css/images/logo.png', ['class' => 'img-responsive','alt' => Yii::$app->name]),
    'brandUrl' => Yii::$app->homeUrl,
    'options' => [
        'class' => 'navbar navbar-default navbar-fixed-top',
    ],
]);

$aNavOptionsTop = [
    'options' => ['class' => 'navbar-nav navbar-left'],
//        'options' => ['class' => 'nav nav-justified '],
    'items' => $items
];
echo Nav::widget($aNavOptionsTop);

//---------------------------LANGUAGE PICKER ---------------------------------------------
echo  \user1007017\languagepicker\widgets\LanguagePicker::widget([
    'skin' => \user1007017\languagepicker\widgets\LanguagePicker::SKIN_BUTTON,
    'size' => \user1007017\languagepicker\widgets\LanguagePicker::SIZE_SMALL,
    'itemTemplate' => '<a href="{link}" title="{language}"> {name}</a>',
    //hide active language (display:none):
    'activeItemTemplate' => '<a style="display:none" href="{link}" title="{language}" class="active"></a>',
    // parentTemplate without {size} !!!:
    'parentTemplate' => '<ul style="list-style: none;" class="navbar-nav navbar-right nav"><li>{items}</li></ul>',

]);
//-------------------------------------------------------------------------------
NavBar::end();

屏幕截图

按钮:图标和文本

language-picker-0 2-screen-1

按钮:仅图标

language-picker-0 2-screen-2

按钮:仅文本

language-picker-0 2-screen-3

下拉列表:图标和文本

language-picker-0 2-screen-4

下拉列表:仅图标

language-picker-0 2-screen-5

下拉列表:仅文本

language-picker-0 2-screen-5

链接