I bumped into the same problem, but found a fix.
Change the if-statement on line 88 of /cms/code/CMSMain.php to:
if(Translatable::is_enabled()) {
// $Lang serves as a "context" which can be inspected by Translatable - hence it
// has the same name as the database property on Translatable.
if($this->getRequest()->requestVar("Locale")) {
$this->Locale = $this->getRequest()->requestVar("Locale");
} elseif($this->getRequest()->requestVar("locale")) {
$this->Locale = $this->getRequest()->requestVar("locale");
} elseif (Session::get("{$this->class}.Locale")) {
$this->Locale = Session::get("{$this->class}.Locale");
} else {
$this->Locale = Translatable::default_locale();
}
Translatable::set_current_locale($this->Locale);
Session::set("{$this->class}.Locale", $this->Locale);
}
This should do the trick. (See patch for 2.3.2 http://open.silverstripe.com/attachment/ticket/4199/CMSMain.patch)
And thanks to UncleCheese, the DataObjectManager is excellent.