Вычитать файл csv в ассоциативный массив вида:
$city_dictionary[$en_name] = $ru_name;
И произвести замену:
//$data['response'][0]['cities'][0] - вы уверены, что по конечному нулевому индексу находится весь список, а не один город?
foreach($data['response'][0]['cities'][0] as $city_key => $city)
{
if(array_key_exists($city, $city_dictionary))
$data['response'][0]['cities'][0][$city_key] = $city_dictionary[$city];
}
После этого $data можно конвертнуть обратно в json и в нем будет заменено то, что было в словаре $city_dictionary.
PS: Метод имеет ограничение. В текущем формате ассоциативного массива $city_dictionary нельзя разместить два равноправных варианта перевода. В случае наличия альтернативного варианта русского перевода, из csv будет извлечен в массив последний вариант.
PS2: Ассоциативный массив словаря ограничен объемом выделенной оперативной памяти скрипта.
Для более объемного словаря целесообразно делать выгрузку в базу данных и от туда использовать словарь, либо в memcache - архитектура технологии идеально подходит под условия вашей задачи. Но использовать и ту и другую нужно имея небольшой опыт.