As far as I can tell, it does work like that. :-(
I'm going to update Zend_Translate_Adapter as follows:
From:
// return original translation
if ($plural === null) {
$this->_routed = array();
return $this->_translate[$locale][$messageId];
}
To:
// return original translation
if ($plural === null) {
$this->_routed = array();
$translation = $this->_translate[$locale][$messageId];
if (is_array($translation)) {
return $translation[0];
}
return $translation;
}