web-bond/yii2-languages

软件包

安装: 6

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 5

类型:yii2-extension

2.9 2020-09-14 09:39 UTC

This package is not auto-updated.

Last update: 2024-09-25 02:06:09 UTC


README

这是一个用于创建基于php框架Yii-2的多语言网站或Web应用程序的软件包。当前语言显示在URL中。可以选择不显示基本语言。示例(使用俄语作为基本语言并选择不显示基本语言)

通过点击由小部件生成的相应链接来更改语言。也可以直接在地址栏中更改语言。扩展不使用会话、Cookie和数据库进行操作。代码针对最大性能进行优化。使用此多语言模块不需要对urlManager组件的路由规则进行修改。

扩展根据所选语言设置应用程序的当前本地化。

安装

  • 使用Composer安装扩展。
Stock - composer require klisl/yii2-languages
My update widget seo Urls - composer require web-bond/yii2-languages
  • 修改frontend\config\main.php文件(对于高级版本)或config/web.php文件(对于基本版本)

(1) 在"return"数组中插入

'sourceLanguage' => 'ru', // использовать в качестве ключей переводов

(2) 以下内容也在"return"数组中插入模块的注册和参数

'modules' => [
    'languages' => [
        'class' => 'klisl\languages\Module',
        //Языки используемые в приложении
        'languages' => [
            'English' => 'en',
            'Русский' => 'ru',
            'Українська' => 'uk',
        ],
        'default_language' => 'ru', //основной язык (по-умолчанию)
        'show_default' => false, //true - показывать в URL основной язык, false - нет
    ],
],

默认情况下,模块使用英语、俄语和乌克兰语。可以在模块参数中删除或添加所需的语言。

(3) 在"components"数组中,有一个嵌套的"request"数组,在其中插入

'baseUrl' => '', //убрать frontend/web
'class' => 'klisl\languages\Request'

(4) 在应用程序组件"urlManager"中,我们为链接启用了SEO,连接了由本扩展重写的UrlManager类

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => true,
    'class' => 'klisl\languages\UrlManager',
    'rules' => [
        'languages' => 'languages/default/index', //для модуля мультиязычности
        //далее создаем обычные правила
        '/' => 'site/index',
        '<action:(contact|login|logout|language|about|signup)>' => 'site/<action>',
    ],
],

在规则列表的开始处指定模块多语言工作规则。其他规则按常规方式形成。

(5) 在模板frontend\views\layouts\main.php或所需的视图中插入显示语言切换链接的小部件

    <?= klisl\languages\widgets\ListWidget::widget() ?>

使用

翻译短语。

要翻译单个单词和短语(例如菜单项),需要创建位于common/messages文件夹中的语言文件。如果使用Yii2 Basic版本,则项目根目录中不存在common文件夹,在这种情况下需要创建它。语言文件的数量将与您要翻译的附加语言数量相同,不包括基本语言。例如,如果使用俄语、乌克兰语和英语,则在假设俄语是基本语言的情况下,创建“en”和“uk”文件夹。基本语言的标记不会显示在URL中。

提醒一下,基本语言在文件frontend\config\main.php中的"return"数组中设置,为

示例语言文件common\messages\en\app.php

<?php
return [
    'Блог' => 'Blog',
    'О нас' => 'About me',
    'Контакты' => 'Contact',
];

即在"return"数组中写入所有需要翻译的单词和短语。同样,需要为乌克兰语创建common\messages\uk\app.php文件。

在代码中(通常在模板和视图文件中),需要翻译的短语应放在调用方法Yii::t()的调用中。根据我们的配置

Yii::t('app', 'Блог')

我们的默认语言是俄语,因此如果当前语言是俄语,将输出“博客”,如果是英语,则输出“Blog”。

翻译静态页面。

静态页面是指存储在文件本身中的文本(在代码中),而不是从数据库中获取内容的页面。由于整个页面包含大量文本,因此使用Yii::t()方法不合适。

在所需的控制器中为每个此类页面创建操作

public function actionStat()
{
    $language = Yii::$app->language; //текущий язык
    //выводим вид соответствующий текущему языку
    return $this->render('statPages/stat-'.$language);     
}

即文件名的第二部分根据语言名称来取。在这种情况下,在视图文件夹中创建一个包含静态文件的独立文件夹statPages(这不是必需的),并在其中创建相应语言的文件

  • stat-ru.php
  • stat-uk.php
  • stat-en.php

翻译存储在数据库中的文章。

为了配置数据库和模型,请执行以下文章中指定的操作:[点击此处](https://klisl.com/multilingual_BD.html)。

扩展的详细描述(由于考虑了手动创建模块的选项,因此存在一些差异):[点击此处](https://klisl.com/multilingual_Yii2.html)。

我的博客:[klisl.com](https://klisl.com)