Yii2 translate manager

Yevgeniy Karpukhin

Из большого количества модулей yii2 позволяющих реализовать мультиязычность веб системы, я выбрал Yii2 — Translate Manager. Он мне показался самым то что надо. Немного поколдовав с конфигами, удалось запустить. Сделал перевод, перезапускаю страницу, не работает. Показывает на исходном языке. Итак далее опишу как это лечится:

  1. Во первых, нужно отключить кэширование переводов, хотя бы на время выполнения перевода.
    'enableCaching' => false
  2. Отчистить тот кэш что собрался в runtime\cache
  3. Не использовать категорию app, так как это системная и она берется из файловых источников. Я использовал main — Lx::t(‘main’, ‘increase your profit!’);

Вот и все.

Приведу на всякий случай пример своего конфига

 

'i18n' => [
    'translations' => [
        '*' => [
            'class' => 'yii\i18n\DbMessageSource',
            'db' => 'db',
            'sourceLanguage' => 'en-US', // Developer language
            'sourceMessageTable' => '{{%language_source}}',
            'messageTable' => '{{%language_translate}}',
            'cachingDuration' => 0,
            'enableCaching' => false,
            //'basePath'=>'@backend/messages',
        ],
    ],
],

 

 

Но мне хотелось еще чтобы это было красиво. Вчера мне понадобилось превратить строку в многомерный массив. Написать это не особо сложно. Вспомнил про старые добрые рекурсии. И вот что вышло

 

<pre>public function arrayBuilder($actions, $newArray = [], $n = 0)
{
if (isset($actions[$n])) {
$i=$n;
$n++;
$newArray[$actions[$i]] = arrayBuilder($actions, $newArray, $n);
}
return $newArray;
}</pre>

 

Пример использования:

Имеем строку:


$str = 'a/b/c/d/f/g';

$exploded = explode("/",$str);

$result = arrayBuilder($exploded);

Пробуем и говорим спасибо!)

 

 

Сегодня ночью решил обновить версию php. Обновил пхп и база заодно грохнулась. И тут у меня начал теч холодный пот. На сервере стояли еще другие важные проекты. Долгая возьня с конфиг файлами не помогала. Лог файлы давали такое:

130713 3:00:12 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
130713 3:00:12 [ERROR] /usr/libexec/mysqld: unknown option ‘—skip-locking’
130713 3:03:44 [ERROR] /usr/libexec/mysqld: unknown variable ‘default-character-set=cp1251’
130713 3:00:12 [ERROR] Aborting

Комментирование строк default-character-set=cp1251 и  —skip-locking помогло решить только часть проблемы.
Оставалось самое главное Прочитать всю запись »

На днях один из своих проектов решил перевести на php 5.3. После нескольких дней подготовки и тестирования заметил что код на новой версии пхп выполняется как то медленно. Долго крутил и не мог понять в чем дело. Тормоза были при соединении с базой. Дальше все шло как всегда, быстро. Крутил конфиг файлы 5,2 и 5,3 в поисках найти различие. Но того что мне было нужно так и не нашел. Информация на форумах не дала результата.
Решение оказалось оригинальным. Достаточно было просто создать домен localhost. Вот так вот. Век живи, век учись.

Хотел бы кратко рассказать о решении проблемы когда при расширении своего класса классом PDOStatement например такого вида


class DBStatement extends PDOStatement {

protected $DBH;

protected function __construct($DBH) {
$this->DBH = $DBH;
}

public function execute(array $input_parameters = null) {
try {
parent::execute($input_parameters);
return $this;
} catch (Exception $exc) {
$this->DBH->error($exc->getMessage());
}
}

}

Возникает ошибка:


Strict Standards: Declaration of DBStatement::execute() should be compatible with that of PDOStatement::execute()

Решается это просто. Убираем array при объявлении функции execute($input_parameters = null)

pdo_mysq_count

Сегодня хочу вам рассказать как подсчитать количество записей в выводимом результате если у нас стоит limit.

Предположим что у нас есть таблица tbl с 50 записями.

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


select count(*) from tbl

или


select count(*) from tbl where id>=1

Оба запроса выведут результат 50

А что делать если нам необходимо подсчитать количество записей с использованием limit-а


select count(*) from tbl where id>=1 limit 10

В данном случае мы так же получим результат в 50 записей. В таком случае используем подзапрос:


select count(t.id) from ( select id from tbl where id>=1 limit 10 ) t

Тут мы получили количество записей в 10. Если условие более ограничительное и предположим количество записей в базе удовлетворяющих условию where всего 8 то в результате запросы представленного выше вы получите 8, что и было нам необходимо.

Используя библиотеку pdo посчитать можно следующим образом


$query = "select count(t.id) as cnt from ( select id from tbl where id>=1 limit 10 ) t";
$STH = $DBH->query($query);
echo $STH->fetchObject()->cnt;

Прочитать всю запись »

Помню некоторое время назад когда только появлялись онлайн игры, я считал что для того чтобы сыграть в такое нужен широкий канал интернета, низкий пинг и т.д. Что это не для меня, буду играть свои офлайн игры. Чем я и занимался последние несколько лет. До тех пор пока многие мои друзья и знакомые не перешли на онлайн игры, по своему любимому жанру.

Не буду много лить воды, а скажу что сегодня сделаю небольшой обзор онлайновой игры Forsaken World. Начну с системных требований. Игрушка заведется и на стареньком селероне, 1 гиге памяти и не очень уж продвинутой видюхе. Но как вы понимаете с такими параметрами будет не игра, а мучение. Поэтому рекомендую вам ставить ее на относительно быстрый комп. Во первых количество кадров в секунду FPS, а во вторых скорость загрузки игры при этом возрастут. Про аудио я не говорю, т.к все понимают что без этого игра не игра. Прочитать всю запись »

Несмотря на то что данный блог посвящен веб разработками, нельзя обойти вниманием наших дорогих женщин.

Хотел бы поздравить вас дорогие женщины с 8 марта, пожелать вам большой любви, женского счастья, здоровья и все самого доброго. Если у кого то нет второй половинки чтобы не отчаивались и нашли ее. Чтобы у каждой женщины был свой любящий и ласковый молодой человек.

Многие говорят ваш день 8-е марта, так пусть этот день будет большим праздником и запомнится на весь год.  И каждый день года тоже пусть приносит только радость, ведь вы наша любовь и ласка.

С праздником вас, дорогие женщины.

Еще каких то 3-4 года назад, чтобы сверстать правильный кроссбаузерный шаблон для сайта либо html страничку необходимо было часами сидеть и отлаживать код. Который то в одном браузере не так отображается то в другом. Что в свою очередь увеличивает сроки создания сайта и конечно но же бьет по карману. Прочитать всю запись »

Многие из вас сталкивались с проблемой когда был удален файл, папка, или группа файлов по неосторожности. Казалось бы безвыходная ситуация, и все придется собираться заново. Но не все так плохо как кажется. Существуют специальные службы, которые занимаются восстановлением утерянных данных, стертых, или даже в таких ситуациях когда жесткий диск отформатирован. Об одной из таких фирм и пойдет речь в данной статье.

Компания Data Recovery уже достаточно давно занимается услугами восстановления данных. Само по себе восстановление информации является кропотливым занятием, когда данные считываются с тех секторов жесткого диска, либо других носителей которые ОС не затрагивает при удалении файла. Прочитать всю запись »

top