sjaakp/yii2-polyglot

为 Yii 2.0 框架提供超轻量语言选择器

安装: 171

依赖: 0

建议者: 0

安全: 0

星星: 4

观察者: 3

分支: 0

开放问题: 0

类型:yii2-extension

1.0.2 2024-06-29 13:38 UTC

This package is auto-updated.

Last update: 2024-08-29 13:56:34 UTC


README

为 Yii2 提供超轻量语言选择器

Latest Stable Version Total Downloads License

yii2-polyglot 是一个应用组件,包括两个带国旗按钮的 widget,用于选择应用程序语言。它可以在 Yii 2.0 PHP 框架中使用。

yii2-polyglot 是作为其他语言选择器的替代品开发的,在我看来,它们通常过于复杂。

yii2-polyglot 允许用户通过点击国旗按钮来选择她喜欢的语言。所选语言成为网站的主语言,并存储在 cookie 中。

以下是 Yii2-polyglot 的演示:这里

安装

使用 Composer 以常规方式安装 yii2-polyglot。将以下内容添加到 composer.json 文件的 require 部分

"sjaakp/yii2-polyglot": "*"

或者运行

composer require sjaakp/yii2-polyglot

您可以通过 下载 ZIP 格式的源代码 来手动安装 yii2-polyglot

使用 yii2-polyglot

首先,Polyglot 应该作为 应用组件 安装。这通常在主配置文件中完成,通常称为 web.phpmain.php,位于 config 目录中。将以下内容添加到配置数组中

<?php

'components' => [
    // ... other components, like 'cache' and 'errorHandler'
    'polyglot' => [
        'class' => 'sjaakp\polyglot\Polyglot',
        'languages' => [
            'en-US' => 'English',
            'de-DE' => 'Deutsch',
            'fr-FR' => 'Français',
            // ... more languages
        ]
    ],
    // ... even more components

language 属性是一个语言数组(或更准确地说,是 locale),网站支持的语言。此数组的关键是 ICU 格式的区域设置名称,就像 Yii 推荐的 一样。其中之一应该与应用程序的 language 属性 相同。

数组的值应该是以下之一

  • string 语言的可读名称。它作为弹出提示显示。

  • array 包含两个键

    • "label" 可读的语言名称;
    • "flag" 要显示的国旗名称,不带 .png 部分。

因此,要显示带有比利时国旗的荷兰语言,我们将使用

<php 

'components' => [
    // ... other components, like 'cache' and 'errorHandler'
    'polyglot' => [
        'class' => 'sjaakp\polyglot\Polyglot',
        'languages' => [
            'en-US' => 'English',
            // ... more languages
            'nl-NL' => [
                'label' => 'Nederlands',
                'flag' => 'be'
            ]
        ]
    ],
    // ... even more components

如果数组值仅为 string,则 Polyglot 将尝试自己推断国旗名称。

可以在 yii2-polyglotassets/flags 目录中找到许多国旗(247 个)。顺便说一下,它们是由 famfamfam 制作的。

Bootstrap

Polyglot 必须进行引导。通过向应用程序配置数组添加以下内容来完成此操作

<php

'bootstrap' => [
    'polyglot',
]

配置文件中可能已经存在一个 bootstrap 属性;只需将 'polyglot' 添加到其中即可。

Polyglot 选项

除了 languages 设置之外,Polyglot 还有三个其他选项

  • useCookie bool 如果设置为 false,则 Polyglot 在 cookie 中存储首选语言,而是在 PHP 会话中。因此,语言选择将仅在单个会话中持久化。默认:true
  • cookieName 字符串 如果 useCookie 设置为 false,则也用作会话键。默认:"polyglot"
  • cookieStamina 整数 Cookie过期时间(秒)。默认:31536000(一年)。

小部件

yii2-polyglot 包中有两个小部件。 PolyglotButtons 以旗帜按钮的行显示语言选项。 PolyglotDropdown 是一个下拉菜单。在 View 的任何位置渲染 yii2-polyglot 小部件只需要

<?php
use sjaakp\polyglot\PolyglotButtons;
?>
...
<?= PolyglotButtons::widget() ?>;
...

或者

<?php
use sjaakp\polyglot\PolyglotDropdown;
?>
...
<?= PolyglotDropdown::widget() ?>;
...

由于你很可能想在所有页面上都使用 Polyglot 小部件,因此小部件的最佳位置是布局视图文件(或布局视图文件之一)。

小部件选项

PolyglotButtonsPolyglotDropdown 有以下选项

  • options 数组 周围元素的HTML选项。默认:[]
  • buttonOptions 数组 单个旗帜按钮的HTML选项。默认:[]
  • toggleOptions 数组 (仅限 PolyglotDropdown)切换按钮的HTML选项。默认:['class' => 'nav-link']