Недавно обнаружил, что переводы можно содержать не в БД, а файле settings.php, строки прописанные в нем будут иметь преимущество над строками в БД. Таким образом, если поместить туда все строки из базы, то после этого можно совсем отключить модуль locale, и существенно сократить количество запросов, при этом имея полностью русский интерфейс. В общем, в результате у меня родилось такое решение:
выполняем такой код (экспорт из БД в php-массив):
<?php
if($r = db_query('
SELECT s.source, s.location, t.translation
FROM {locales_source} s
INNER JOIN {locales_target} t
ON s.lid=t.lid AND s.source<> t.translation AND t.language=\'ru\' AND s.textgroup=\'default\'
GROUP BY t.translation
LIMIT 0,10000')) {
$t = array();
while ($rs=db_fetch_object($r)) {
$rs->location = explode(':',$rs->location);// вычисляем файл-ичточник из записи типа "имя_файла:номер строки"
$file_ext = drupal_strtolower(trim(strstr(trim($rs->location[0]),'.'))); // узнаем расширение файла-источника перевода
if ($file_ext!='.info' && $file_ext != '.install') // исключаем .info и .install файлы
{
if (
!isset($t[$rs->source])
&&
trim($rs->source)!=''&&trim($rs->translation)!=''&&$rs->source!=NULL&&$rs->translation!=NULL //проверяем на всякий случай на предмет пустых строк
) {
$t[$rs->source] = $rs->translation;
}
}
}
echo '$conf[\'locale_custom_strings_ru\'] = ';
var_export($t);
echo ';';
die;
}?>