Переключить язык при ошибке codeigniter - PullRequest
0 голосов
/ 25 мая 2018

У меня есть библиотека для нескольких языков.и простой переключатель.У меня есть 3 языка. Английский , Немецкий и Русский .По умолчанию используется немецкий язык. Когда стоит проверить язык по умолчанию, URL-адрес сайта будет выглядеть как mysite.com, при изменении на en или ru URL будет выглядеть как mysite.com / ru и mysite.com/ ru при переходе с en-ru или ru-en URL-адрес выглядит как mysite.com/en/ru и выдает ошибку 404.

Переключатель:

                <?php
            foreach ($languages as $language) {
                if ($language['abbr'] == MY_DEFAULT_LANGUAGE_ABBR) {
                    $cr = trim(uri_string(), '/');
                    if (strlen($cr) == 2) {
                        $change_url = base_url();
                    } else {
                        $change_url = base_url(preg_replace('/' . MY_LANGUAGE_ABBR . '\//', '', uri_string()));
                    }
                } else {
                    $u = preg_replace('/' . $language['abbr'] . '\//', '', uri_string());
                    $change_url = base_url($language['abbr'] . '/' . $u);
                }
                ?>
                <li>
                    <a href="<?= $change_url ?>">
                        <img src="<?= base_url('attachments/langflags/' . $language['flag']) ?>" alt="<?= $language['name'] ?>">
                        <span><?= ucfirst($language['name']) ?></span>
                    </a>
                </li>
            <?php } ?> 

1 Ответ

0 голосов
/ 27 мая 2018

Попробуйте с этим:

$replace= array('en/','ru/');
$u = preg_replace('/' . $language['abbr'] . '\//', '', uri_string());
$change_url = base_url($language['abbr'] . '/' . str_replace($replace,'', $u));
...