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

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

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

04.08.2015 0 8392

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

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

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

I18n::lang('ru');

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

  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  
  3. return array(
  4. 'How much: :one + :two = ?' => 'Сколько будет :one + :two = ?',
  5.     'Hello word' => 'Привет мир!',
  6. );

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

  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  
  3. return array(
  4. 'Hello word' => 'Hello Word!',
  5. );

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

  1. <?php
  2. defined('SYSPATH') or die('No direct script access.');
  3.  
  4. abstract class Controller_Base extends Controller_Template {
  5.  
  6. public $template = "main";
  7. public function before()
  8. {
  9. parent::before();
  10. $this->template->content = '';
  11. // если был передан параметр language - устанавливаем этот язык
  12. if (Arr::get($_GET, 'language', NULL) != NULL)
  13. {
  14. I18n::lang(strip_tags(Arr::get($_GET, 'language'))); // меняем текущий язык
  15. Cookie::set('language', strip_tags(Arr::get($_GET, 'language'))); // и записываем его в cookie
  16. }
  17. // если ничего не передали, то пробуем подгрузить язык из cookie
  18. elseif(Cookie::get('language', NULL) != NULL){
  19. I18n::lang(Cookie::get('language')); // устанавливаем язык из cookie
  20. }
  21. // если и в cookie ничего нет, то установится язык по умолчанию, который мы записали в bootstrap.php
  22. }
  23. }

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

  1. <?php
  2. /** Выбираем полный путь переданый браузером удаляем переменную language чтобы она не дублировалась и для каждого языка добавляем свой language */
  3. $uri = preg_replace("/(\?.*?)$/","",$_SERVER["REQUEST_URI"]); // Удаляем строку с запросом и пути
  4. if(isset($_GET['language'])) unset($_GET['language']); // Если нам раньше передавался параметр language - удаляем его
  5.  
  6. $uri .= '?';
  7. // если что-то еще осталось в строке - строим строку с запросом и добавляем его к пути
  8. if(!empty($_GET))
  9. {
  10. foreach($_GET as $key=>$value)
  11. {
  12. $uri .= $key .'='. $value .'&';
  13. }
  14. }
  15. ?>
  16. <div class="language">
  17. <a href="<?php echo $uri. 'language=ru' ?>" class="<?php echo I18n::lang() == 'ru' ? 'active' : '' ?>">Рус</a> |
  18. <a href="<?php echo $uri. 'language=en' ?>" class="<?php echo I18n::lang() == 'en' ? 'active' : '' ?>">Eng</a>
  19. </div>
  20.  
  21. <?php
  22. // вывод фразы "Hello word" на установленом языке
  23. echo __("Hello word");
  24. ?>
  25. <br />
  26. <?php
  27. // вывод строки с параметрами
  28. echo __("How much: :one + :two = ?",array(':one'=> '1', ':two'=> '2'));
  29. ?>

Для добавлениия других языков, нужно создать файлик с переводом в директории 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 8963
  • Конфигурирование фреймворка Kohana

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

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

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

    22.06.2014 6551
  • Сессии в Kohana

    Сессии в Kohana

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

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

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

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

    04.08.2015 8393

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

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

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

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

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

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

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

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

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

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

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

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