Skip to content

Instantly share code, notes, and snippets.

@Dmi3yy
Created October 29, 2020 16:03
Show Gist options
  • Save Dmi3yy/515f8a0572a9426548dd3f35cbba6461 to your computer and use it in GitHub Desktop.
Save Dmi3yy/515f8a0572a9426548dd3f35cbba6461 to your computer and use it in GitHub Desktop.
evo3localization.md

Работа с мультиязычностью

Перенесли логику мультиязычности с Laravel, детальней как это в Laravel читаем тут: https://laravel.com/docs/8.x/localization, а как это в Evo читаем ниже

Основной принцып работы

В целом все очень похоже на решение bLang https://github.com/bumkaka/bLang так же можно глянуть видео как работали в более ранних версиях : https://www.youtube.com/watch?v=FVX63RRYsU4

.htaccess

Добавляем строку перед: # For Friendly URLs

RewriteRule ^([a-z]{2})$ $1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/(.*)$ index.php?q=$2&lang=$1 [L,QSA]

Это даст возможность использовать нам конструкцию вида site.com/en/alias

Создаем конфиг для того что б понять какой язык в Evo

/core/custom/config/app/locale.php

<?php
if(isset($_GET['lang'])){
    return $_GET['lang'];
}else{
    return 'az';
}

После чего у нас будет доступна переменная: config('app.locale')

Добавляем поддержку переводов

В пакете в сервиспровайдере добавляем инициализацию пути к папке с переводами

public function boot()
{
    \Lang::addNamespace('custom', MODX_BASE_PATH.'/core/custom/packages/main/lang');
}

Далее создаем эту папку и складываем туда переводы, как это указано в документации Laravel B можем использовать у себя в проекте;

\Lang::get('custom::custom.translate_1');

Или в Blade

@lang('custom::custom.translate_1')

Автозамена documentObject и генерация урл

На текущий момент эти 2 функции получаем установив bLang, но в планах создать отдельный пакет который будет решать эти вопросы.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment