greatilya,
А по отдельности что выдает:
array_keys($b); и str_replace($a,$b,'Этот ваш en язык, нужен для того, чтобы говорить по ru');
?
Сейчас глянул более подробно и лучше так как я предложил не делать, дабы не получить инкрементальность, хотя я не знаю твоей задачи полностью, но все же. Это когда уже замененные фрагменты будут заменены на новые. Поэтому str_replace так долго работает. Если тест выдаст 40 секунд на str_replace, то значит строка прогоняется с заменой каждый раз на каждый ключ массива.