klisl / yii2-languages
软件包
Requires
- yiisoft/yii2: ~2.0
README
这是一个用于创建基于php框架Yii-2的多语言网站或Web应用程序的软件包。当前语言在URL中显示。可以选择不显示主要语言。示例(使用俄语作为主要语言并选择不显示主要语言选项)
更改语言是通过点击由小部件生成的相应链接来实现的。同样,也可以直接在地址栏中更改语言。此扩展不使用会话、Cookie和数据库来工作。代码针对高性能进行了优化。使用此多语言模块不需要更改urlManager组件的路由规则。
此扩展根据选定的语言设置应用程序的当前本地化。
安装
- 使用Composer安装扩展。
composer require klisl/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" 数组中设置,使用以下行 'sourceLanguage' => 'ru',
示例语言文件 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