gismo
(Gismo05)
October 12, 2010, 1:04pm
1
Добрый день.
Подскажите пожалуйста, как создать и использовать языковой файл внутри модуля?
Есть модуль shop (/protected/modules/shop/). Есть в нем папка messages/ru. В ней файл shop.php с таким содержимым:
<?
return array(
'sold' => 'Продано'
);
В коде отображения пишу Yii::t(‘shop.shop’, ‘sold’);
На что программа мне отвечает
Описание
include(shop.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory
Исходный код
Z:\home\gop-shop.com\framework\YiiBase.php(338)
Версия фреймворка самая свежая.
CPhpMessageSource стандартный.
В конфиге
'sourceLanguage'=>'ru_ru',
'language'=>'ru'
raa
(Rudenkosasha)
October 12, 2010, 1:25pm
2
А в конфиге прописан basePath для messages ?
gismo
(Gismo05)
October 12, 2010, 1:29pm
3
'coreMessages'=>array(
'basePath' => 'protected/messages',
),
Только для кормессаджес. Что-то дописать нужно ещё?
raa
(Rudenkosasha)
October 12, 2010, 1:31pm
4
Gismo:
'coreMessages'=>array(
'basePath' => 'protected/messages',
),
Только для кормессаджес. Что-то дописать нужно ещё?
я тут пока слабоват, сам сейчас работаю с этой темой.
но у меня на всякий случай стоит
'coreMessages'=>array(
'basePath'=> null,
),
'messages' => array(
'class' => 'CPhpMessageSource',
'basePath' => null,
),
raa
(Rudenkosasha)
October 12, 2010, 2:01pm
6
Ок, а в конфиге в секции import модуль добавлен ?
gismo
(Gismo05)
October 12, 2010, 2:08pm
7
нет
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.*',
),
'defaultController' => 'shop',
'modules'=>array(
...
'shop'=>array(
'defaultController' => 'catalog',
),
...
),
и в самом /protected/modules/shop/ShopModule.php в методе init
$this->setImport(array(
'shop.models.*',
'shop.components.*',
));
raa
(Rudenkosasha)
October 12, 2010, 2:12pm
8
Пока нет идей, эта тема вообще мало описана в доке.
Я не сразу въехал почему yiic messages мой конфиг не принимал.
а теперь не понимаю почему он падает на не дефолтных языках.
sprint
(Kryzhovster)
October 12, 2010, 4:38pm
9
Я в конфиге прописал класс модуля:
'poll'=>array(
'class'=>'application.modules.poll.PollModule',
),
а во вьюшке вызываю текст так:
echo Yii::t('PollModule.Poll', 'Проголосуйте!');
Кажется мне, что у меня была проблема с классом…
в модуле структура папок таже что и в апликации:
/messages
/en
/Poll.php
/ru
/Poll.php
yiic messages не пробовал даже - всего пара строк - добавил ручками.
gismo
(Gismo05)
October 12, 2010, 4:50pm
10
Вот это да, оказывается проблема была в том, что модуль нужно было прописывать не просто Yii::t(‘shop.shop’, ‘sold’),
а Yii::t(‘shopmodule.shop’, ‘sold’).
Спасибо sprint, Ваше сообщение натолкнуло на такую мысль.