Steps to reproduce:
Enable output cache ( $this->output->cache(1); ) in controller.
Change language in config.php
Refresh the page.
Refreshed page does not contains selected language.
Refreshed page contains selected language.
Change file: Output.php
$uri = $CFG->item('base_url').
and line: 358
$uri = $CI->config->item('base_url').
If anybody is changing their configuration, then surely they can also delete the cache files while doing it. Trying to detect such changes dynamically isn't justified.