Переключение языка словаря
        Здравствуйте!
В разных контекстах en и web, словарные слова выводятся только на русском языке. Уже голову сломал. Очевидно, что ответ лежит на поверхности, иначе как объяснить отсутствие такой проблемы в документации.
Словари лежат в «core/components/darvo/lexicon/en/front.inc.php» и «core/components/darvo/lexicon/ru/front.inc.php»
Содержимое ru:
Содержимое en:
Настройки контекстов:

    
    
    
                                                                                
            В разных контекстах en и web, словарные слова выводятся только на русском языке. Уже голову сломал. Очевидно, что ответ лежит на поверхности, иначе как объяснить отсутствие такой проблемы в документации.
Словари лежат в «core/components/darvo/lexicon/en/front.inc.php» и «core/components/darvo/lexicon/ru/front.inc.php»
Содержимое ru:
<?php
$_lang['a_share'] = 'Поделиться сайтом с друзьями:';
$_lang['a_comment_pls'] = 'Пожалуйста, оставьте свой отзыв о сайте.';
$_lang['a_action'] = 'Действие';
$_lang['a_rank'] = 'Ранг мода от 0 до';
$_lang['a_rank_helper'] = 'Укажите ранг мода от 0 до';
$_lang['a_price'] = 'Стоимость';
$_lang['a_price_helper'] = 'Укажите 0 чтобы создать предложение с открытой ценой';
$_lang['a_buy'] = 'Куплю';
$_lang['a_sell'] = 'Продам';
$_lang['a_trade'] = 'Обменяю';
$_lang['a_add'] = 'Добавить';
$_lang['a_want'] = 'Хочу';
$_lang['a_shove'] = 'Меняю';
$_lang['a_info'] = 'Описание';
$_lang['a_buyers'] = 'Покупатели';
$_lang['a_sellers'] = 'Продавцы';
$_lang['a_wrap_item'] = 'Предмет';
$_lang['a_wrap_price'] = 'Стоимость';
$_lang['a_wrap_player'] = 'Игрок';
$_lang['a_wrap_contacts'] = 'Связь';
$_lang['a_packs'] = 'Наборы модов:';Содержимое en:
<?php
$_lang['a_share'] = 'Share:';
$_lang['a_comment_pls'] = 'Please leave your feedback about the site.';
$_lang['a_action'] = 'Action';
$_lang['a_rank'] = 'Mod rank from 0 to';
$_lang['a_rank_helper'] = 'Select mod rank from 0 to';
$_lang['a_price'] = 'Price';
$_lang['a_price_helper'] = 'Enter 0 to create an open price offer';
$_lang['a_buy'] = 'WTB';
$_lang['a_sell'] = 'WTS';
$_lang['a_trade'] = 'WTT';
$_lang['a_add'] = 'Add';
$_lang['a_want'] = 'Want';
$_lang['a_shove'] = 'Shove';
$_lang['a_info'] = 'Info';
$_lang['a_buyers'] = 'Buyers';
$_lang['a_sellers'] = 'Sellers';
$_lang['a_wrap_item'] = 'Item';
$_lang['a_wrap_price'] = 'Price';
$_lang['a_wrap_player'] = 'Player';
$_lang['a_wrap_contacts'] = 'Contacts';
$_lang['a_packs'] = 'Mod packs:';На событии OnLoadWebDocument висит плагин:<?php
$modx->getService('lexicon','modLexicon');
return $modx->context->key;//$modx->lexicon->load('darvo:front');Вывожу словарные слова так: [[%a_packs]]Настройки контекстов:

    Комментарии: 8
                попробуй добавить
                    $lang = $context->getOption('cultureKey');
$modx->lexicon->load($lang.':darvo:front');            
                Логично.
Но как не пытаюсь, не выводит английскую и все тут.
Для верности, даже поэкспериментировал напрямую:
Так, на русском:
                    Но как не пытаюсь, не выводит английскую и все тут.
Для верности, даже поэкспериментировал напрямую:
Так, на русском:
//$lang = $modx->getOption('culture_key');
$modx->getService('lexicon','modLexicon');
return $modx->lexicon->load('ru:darvo:front');Так, тоже на русском://$lang = $modx->getOption('culture_key');
$modx->getService('lexicon','modLexicon');
return $modx->lexicon->load('darvo:front');А вот так, не обрабатывает значения, т.е. на выходе «a_packs»://$lang = $modx->getOption('culture_key');
$modx->getService('lexicon','modLexicon');
return $modx->lexicon->load('en:darvo:front');            
                проверь лексиконы в админке сайта… мож ты просто файл en/front.inc.php добавил и все?            
                    
                ну тогда хз…
проверь так
сделай сниппет по типу
                    проверь так
сделай сниппет по типу
$lang = (!empty($lang)) ? $lang : $modx->getOption('cultureKey');
$modx->setOption('cultureKey',$lang);
$modx->lexicon->load($lang.':darvo:front');вызвать так[[!lexicon?
&lang=`ru`
]]и [[!lexicon?
&lang=`en`
]]и после каждого вызова пробуй вывести фразу со словаря. например[[!%a_buy]]            
                Работает! В ходе экспериментов, выявил несколько ключевых моментов:
1. Если использовать сниппет, то фраза должна быть не кешируемой. То есть [[!%a_buy]] будет работать, а [[%a_buy]] — нет.
2. Если использовать плагин, то кеширование фраз не требуется. То есть [[%a_buy]] работает.
3. $modx->setOption('cultureKey',$lang); — обязательная строка.
Код плагина на событие «OnLoadWebDocument»:
Вопросик по поводу:
$lang = $modx->getOption('culture_key');
$modx->setOption('cultureKey',$lang);
Стоит ли поменять название ключа culture_key в контексте на cultureKey? Вроде бы ничего не должно поломаться?)
                    1. Если использовать сниппет, то фраза должна быть не кешируемой. То есть [[!%a_buy]] будет работать, а [[%a_buy]] — нет.
2. Если использовать плагин, то кеширование фраз не требуется. То есть [[%a_buy]] работает.
3. $modx->setOption('cultureKey',$lang); — обязательная строка.
Код плагина на событие «OnLoadWebDocument»:
$lang = $modx->getOption('culture_key');
$modx->setOption('cultureKey',$lang);
$modx->lexicon->load($lang.':darvo:front');Вопросик по поводу:
$lang = $modx->getOption('culture_key');
$modx->setOption('cultureKey',$lang);
Стоит ли поменять название ключа culture_key в контексте на cultureKey? Вроде бы ничего не должно поломаться?)
                Кстати, может быть потому и не получалось, что ключ в контексте задан не как cultureKey а как culture_key? cultureKey по всей видимости значение в системе.            
                    
                Мучился с мультиязычностью (минишоп + несколько языков) + babel
Стандартные чанки не подгружали англояз в контексте (EN, делал как тут писали)
Русский язык (контекст WEB) — выводился норм, Английский везде выводился а в чанке корзины — нет, причем шапка таблицы заказов переводилать, а строки нет. Бред какой-то
в итоге создал плагин и повесил его на «OnLoadWebDocument»
вот такие пироги
                    Стандартные чанки не подгружали англояз в контексте (EN, делал как тут писали)
Русский язык (контекст WEB) — выводился норм, Английский везде выводился а в чанке корзины — нет, причем шапка таблицы заказов переводилать, а строки нет. Бред какой-то
в итоге создал плагин и повесил его на «OnLoadWebDocument»
$lang = $modx->getOption('cultureKey');
$modx->lexicon->load($lang.':minishop2:default');И только тогда все заработало.вот такие пироги
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    
            
            
                    
                    
                
