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.
From the box you can use:
If you want to create your implementation of language provider you should implement interface
motion\i18n\LanguageProviderInterface
.
Installation ¶
The preferred way to install this extension is through composer.
Either run
$ composer require motion/yii2-language-provider
or add
"motion/yii2-language-provider": "~2.1"
to the require
section of your composer.json
.
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
$ composer test
or using following command
$ codecept build && codecept run
Licence ¶
This project is released under the terms of the BSD-3-Clause license.
Copyright (c) 2017-2018, Motion Web Production
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.