/**
  * Load message for specified domain & id.
  * @param  string                                    $id
  * @param  string                                    $domain
  * @param  string                                    $locale
  * @return \AO\TranslationBundle\Translation\Message
  */
 public function loadMessage($id, $domain, $locale)
 {
     $qb = $this->em->createQueryBuilder();
     $qb->select('m, t')->from('\\AO\\TranslationBundle\\Entity\\Message', 'm')->join('m.domain', 'd')->leftJoin('m.translations', 't', 'WITH', 't.locale = :locale')->where('m.identification = :id AND d.name=:domain')->setParameters(array('id' => $id, 'domain' => $domain, 'locale' => $locale));
     $m = $qb->getQuery()->getOneOrNullResult();
     $message = new Message($id, null, $domain);
     if ($m) {
         $message->setParameters($m->getParameters());
         $message->setStatus('not_cached');
         $message->setEntity($m);
         if ($translation = $m->getLocaleTranslation($locale)) {
             $message->setContent($translation->getContent());
         }
     }
     return $message;
 }