Вы уже звоните __()
на каждую из ваших цитат в отдельности, почему бы не сохранить все дополнительные переводы и сделать что-то вроде:
$quotes = array('quote1', 'quote2', 'quote3');
$index = array_rand($quotes);
echo __($quotes[$index]);
Редактировать: Чтобы удовлетворить ваши другие требования, что вызов __()
должен немедленно окружать каждую строку, вы можете сделать это:
$quotes = array(__('quote1'), __('quote2'), __('quote3'));
$index = array_rand($quotes);
echo $quotes[$index];
Большим недостатком здесь является то, что вы сейчас просматриваете перевод для каждой строки в этом массиве, хотя печатается только одна, но это та же ситуация, что и в решении "одна большая строка".