Frameworks.suFrameworks.su Шпаргалка вебмастера

  • Главная
  • Framework Kohana
  • PHP
  • Javascript
  • CSS
  • Сервисы
    • Генератор паролей
  • Контакты
Главная / PHP / Framework Kohana / Мультиязычность в Kohana 3.3. Класс i18n

Мультиязычность в Kohana 3.3. Класс i18n

04.08.2015 0 8422

В некоторых проекта есть необходимость сделать мультиязычную поддержку сайта. Сегодня мы рассмотрим как это можно реализовать в фреймворке Kohana 3.3.

Изначально в стандартную сборку входит класс интернационализации i18n, отвечающий за мультиязычность.

Итак, для начала нужно в файле bootstrap.php установить язык по умолчанию, сделаем таким языком - русский:

I18n::lang('ru');

Дальше создадим в каталоге application/i18n/ файл ru.php, в нем будет хранится перевод статического текста для русского языка:

<?php defined('SYSPATH') or die('No direct script access.');

return array(
    'How much: :one + :two = ?' => 'Сколько будет :one + :two = ?',
    'Hello word' => 'Привет мир!',
);

И создадим еще файл application/i18n/en.php для перевода текста на английский язык, он будет вторым языком на нашем сайте:

<?php defined('SYSPATH') or die('No direct script access.');

return array(
   'Hello word' => 'Hello Word!',
);

Дальше нужно в основном контреллере, от которого наследуются остальные, написать код для переключения языка. Значения будут браться сначала из GET запроса, а поcле из Cookie. Если и в Cookie будет пусто, то установится язык по умолчанию:

<?php
defined('SYSPATH') or die('No direct script access.');

abstract class Controller_Base extends Controller_Template {

    public $template = "main";
    
    public function before()
    {
        parent::before();
        $this->template->content = '';
        
        // если был передан параметр language - устанавливаем этот язык
        if (Arr::get($_GET, 'language', NULL) != NULL)
        {
           I18n::lang(strip_tags(Arr::get($_GET, 'language'))); // меняем текущий язык
           Cookie::set('language', strip_tags(Arr::get($_GET, 'language'))); // и записываем его в cookie
           
        }
        // если ничего не передали, то пробуем подгрузить язык из cookie
        elseif(Cookie::get('language', NULL) != NULL){
            I18n::lang(Cookie::get('language')); // устанавливаем язык из cookie
        }
        
        // если и в cookie ничего нет, то установится язык по умолчанию, который мы записали в bootstrap.php
    }
    
}

Теперь в views сделаем вывод переключателя языков и выведем немного текста, для проверки на разных языках:

<?php
    /** Выбираем полный путь переданый браузером удаляем переменную language чтобы она не дублировалась и для каждого языка добавляем свой language */
    $uri = preg_replace("/(\?.*?)$/","",$_SERVER["REQUEST_URI"]); // Удаляем строку с запросом и пути
    
    if(isset($_GET['language'])) unset($_GET['language']); // Если нам раньше передавался параметр language - удаляем его

    $uri .= '?';
    // если что-то еще осталось в строке - строим строку с запросом и добавляем его к пути
    if(!empty($_GET))
    {
        foreach($_GET as $key=>$value)
        {
            $uri .= $key .'='. $value .'&';
        }
    }
?>
<div class="language">
    <a href="<?php echo $uri. 'language=ru' ?>" class="<?php echo I18n::lang() == 'ru' ? 'active' : '' ?>">Рус</a> |
    <a href="<?php echo $uri. 'language=en' ?>" class="<?php echo I18n::lang() == 'en' ? 'active' : '' ?>">Eng</a>
</div>

<?php
    // вывод фразы "Hello word" на установленом языке
    echo __("Hello word");
?>
<br />
<?php
    // вывод строки с параметрами
    echo __("How much: :one + :two = ?",array(':one'=> '1', ':two'=> '2'));
?>

Для добавлениия других языков, нужно создать файлик с переводом в директории application/i18n/ и названием файла {код языка}.php. Также не забудьте добавить в переключатель языка нужную переменную language. Коды языков можно узнать здесь.

Теги:
  • Framework Kohana
  • i18n
  • Мультиязычность

Оставить комментарий Отмена

*

*

*

*

Категории

  • PHP
    • Framework Kohana
  • Javascript
  • CSS
  • Администрирование

Теги

Framework Kohana Пример jQuery Уроки CRON Установка и настройка Backup CSS3 Валидация API Bash Cache Captcha i18n Linux

Авторизация

  • Забыли пароль?
  • Регистрация

Изучение Framework Kohana

  • Установка и настройка Kohana

    Установка и настройка Kohana

    20.06.2014 8984
  • Конфигурирование фреймворка Kohana

    Конфигурирование фреймворка Kohana

    21.06.2014 6760
  • Разбираемся с Видом в Kohana

    Разбираемся с Видом в Kohana

    22.06.2014 6567
  • Сессии в Kohana

    Сессии в Kohana

    03.07.2014 16998
  • Маршрутизаторы в Кохана 3.3

    Маршрутизаторы в Кохана 3.3

    03.04.2015 9847
  • Мультиязычность в Kohana 3.3. Класс i18n

    Мультиязычность в Kohana 3.3. Класс i18n

    04.08.2015 8423

Популярные статьи

  • Находим расстояние до ближайших станций метро

    Находим расстояние до ближайших станций метро

    17.02.2017 102861
  • Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    02.07.2014 44488
  • Собственная система лайков на PHP и JQuery

    Собственная система лайков на PHP и JQuery

    06.04.2015 33151
  • Javascript — сумма прописью

    Javascript — сумма прописью

    07.07.2014 22991
  • Cross-domain ajax с помощью jQuery

    Cross-domain ajax с помощью jQuery

    24.04.2015 19856
Copyright © 2014-2025 Frameworks.su. Все права защищены.