Language provider interface
This package provides interface for language provider for accessing application languages from any storage for Yii2 Framework.
It's allows to you create multi-language modules for using in Yii2 based application.
As example of integration to module you can see yii2-email-template extension., (*1)
, (*2)
From the box you can use:, (*3)
If you want to create your implementation of language provider you should implement interface
motion\i18n\LanguageProviderInterface
., (*4)
Installation
The preferred way to install this extension is through composer., (*5)
Either run, (*6)
$ composer require motion/yii2-language-provider
or add, (*7)
"motion/yii2-language-provider": "~2.1"
to the require
section of your composer.json
., (*8)
Usage
Config language provider
Option |
Description |
Type |
Default |
languages |
Should contains list of application languages. |
array |
[] |
defaultLanguage |
Should contains default application language. |
array |
[] |
Example
$config = [
'languages' => [
[
'label' => 'English',
'locale' => 'en',
],
[
'label' => 'Ukrainian',
'locale' => 'uk',
],
[
'label' => 'Russian',
'locale' => 'ru',
],
],
'defaultLanguage' => [
'label' => 'English',
'locale' => 'en',
],
];
$provider = new \motion\i18n\ConfigLanguageProvider($config);
$provider->getLanguages(); // returns list of languages
$provider->getDefaultLanguage(); // returns default language
$provider->getLanguageLabel('en'); // returns language label by locale (`English`)
Database language provider
Option |
Description |
Type |
Default |
db |
Database connection instance. |
string, array, \yii\db\Connection
|
db |
tableName |
Name of language entity in database. |
string |
language |
localeField |
Name of locale field in language entity. |
string |
locale |
labelField |
Name of label field in language entity. |
string |
label |
defaultField |
Name of field in table with default language flag. |
string |
is_default |
Example
$config = [
'db' => 'secondDb',
'labelField' => 'title',
];
$provider = new \motion\i18n\DbLanguageProvider($config);
$provider->getLanguages(); // returns list of languages
$provider->getDefaultLanguage(); // returns default language
$provider->getLanguageLabel('uk'); // returns language label by locale
Tests
You can run tests with composer command, (*9)
$ composer test
or using following command, (*10)
$ codecept build && codecept run
Licence
, (*11)
This project is released under the terms of the BSD-3-Clause license., (*12)
Copyright (c) 2017-2018, Motion Web Production, (*13)