Кажется, ваша переменная $ keys равна нулю, потому что вы ее нигде не инициализируете.
Мне кажется, что файл english.php на вашем сервере пуст (или не существует), поэтому при попытке прочитать его ничего не сохраняется в переменной $ keys;
Попробуйте добавить начальное значение для этой переменной перед оператором foreach:
$lines = file('english.php');
$keys = array();
foreach($lines as $line) {
$matches=array();
if (preg_match('/DEFINE\(\'(.*?)\',\s*\'(.*)\'\);/i', $line, $matches)) {
$keys[] = $matches[1];
$values[] = $matches[2];
}
}
$lang = array_combine($keys, $values);
Таким образом, даже если файл не существует или является пустым, вы охватываете все возможные пути.
Вы всегда должны кодировать, как будто все может пойти не так, а не наоборот :)