Kohana & I18n. Можно ли разделить языковой файл на части?

В любом проекте есть какие-то общие фразы для всех контроллеров (например «редактировать», «добавить комментарий» и т.д.) но и для самого контроллера может быть свой набор фраз, которые нигде больше не нужны. Поэтому я подумал, можно ли разделить языковой файл на части и подгружать какой-либо по необходимости. То есть структура языковых файлов будет такая:


= /application

== /i18n

=== /ru

==== common.php

==== forum.php

==== users.php


common.php — файл с общими фразами, поэтому я его подключил в bootstrap так I18n::lang('ru-common');


Но теперь не знаю как подключить языковой файл для forum.
&lt;?php defined('SYSPATH') or die('No direct script access.');<br/>
<br/>
class Controller_Forum extends Controller{<br/>
<br/>
public function action_index()<br/>
 {<br/>
 I18n::lang('ru-forum'); // таким образом файл поддключается но перекрывает собой common.php и поэтому &quot;hello world&quot; не переводится<br/>
 echo __('hello world');<br/>
 echo __('hello forum');<br/>
 }<br/>
<br/>
} // End Forum<br/>
<br/>
  • Вопрос задан
  • 3305 просмотров
Решения вопроса 1
dohlik
@dohlik
Честно говоря, не вижу смысла в такой «оптимизации». Типичная практика — вынос переводов в необходимые модули, это имеет смысл если есть модуль Forum, модуль Blog и т.д. Соответственно, если модуль Forum не подключен, то и его I18n-файлы тоже не будут подключены.

Я бы посоветовал не выдумывать дишних проблем :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
blo
@blo
инженер-программист
Хотел было написать про gettext и dgettext, но оказалось что Kohana использует велосипед свою реализацию мультиязычности.
Попробуйте
echo __('hello world', null, 'ru-common');
echo __('hello forum', null, 'ru-forum');

Похоже это единственный вариант без переделывания встроенного I18n.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы