Wallogit.com
2017 © Pedro Peláez
composer require abcms/yii2-library:dev-master composer require abcms/yii2-multilanguage:dev-master
$config = [
......
'language' => 'en',
'sourceLanguage' => 'en',
......
];
[
'components' => [
......
'multilanguage' => [
'class' => 'abcms\multilanguage\Multilanguage',
'languages' => [
'en' => 'English',
'ar' => 'Arabic',
'fr' => 'French',
],
],
],
]
Add the component to the bootstrap array to allow it to read and set the language from cookies and URL:, (*1)
'bootstrap' => ['log', 'multilanguage'],
This URL manager class will automatically add the language to each URL., (*2)
'urlManager' => [
'class' => abcms\multilanguage\UrlManager::className(),
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<lang:([a-z]{2,3}(-[A-Z]{2})?)>/<controller>/<action>/' => '<controller>/<action>',
],
],
Using the language bar widget:, (*3)
<?= abcms\multilanguage\widgets\LanguageBar::widget() ?>
or manually:, (*4)
<a class="<?= (Yii::$app->language == 'en') ? 'active' : ''; ?>" href="<?= Url::current(['lang' => 'en']) ?>">En</a>
1- Add the migration namespaces in the console.php configuration:, (*5)
'controllerMap' => [
'migrate' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationNamespaces' => [
'abcms\library\migrations',
'abcms\multilanguage\migrations',
],
],
],
2- Run ./yii migrate, (*6)
You can use abcms/yii2-generators to generate a custom model and CRUD or continue with the manual steps below., (*7)
Add the multi-language behavior and specify which attributes can be translated and the type for each field. If the field type is not specified, text input will be used by default., (*8)
[
'class' => \abcms\multilanguage\behaviors\ModelBehavior::className(),
'attributes' => [
'title',
'description:text-area',
],
],
Add in _form.php:, (*9)
<?= \abcms\multilanguage\widgets\TranslationForm::widget(['model' => $model, 'form' => $form]) ?>
Add in view.php:, (*10)
<?=
\abcms\multilanguage\widgets\TranslationView::widget([
'model' => $model,
])
?>
Add in Controller create and update actions:, (*11)
$model->automaticTranslationSaving = true;
$translatedModel = $model->translate();
$translatedModels = Yii::$app->multilanguage->translateMultiple($models);