Varre o diretório "/lang", abre todos os arquivos com extensão ".php" e faz a alteração. Acabei de fazer o script e não testei, é apenas uma idéia.. modifique pra extensão com a qual deseja trabalhar e diretório que pretende modificar. A função não trabalha os diretórios recursivamente.
<?php
$dirname = "./lang/";
foreach (scandir($dirname) as $langfile) {
if (substr($langfile, -4, 4) != ".php") continue; // Pula pro próximo caso não seja um arquivo php
file_put_contents($dirname.$langfile, html_entity_decode(file_get_contents($dirname.$langfile), ENT_COMPAT, "UTF-8")); // Faz a mágica
}
?>
file_put_contents (um atalho pra fopen, fwrite e fclose) funciona com dados binários, então deve teoricamente ser multibyte-safe.. html_entity_decode trabalha com UTF-8 especificado no terceiro parâmetro.