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)