/**
  * returns the locale of the current admin user
  *
  * @param \Sonata\AdminBundle\Admin\AdminInterface $admin
  * @return mixed|string
  */
 public function getCurrentAdminLocale(\Sonata\AdminBundle\Admin\AdminInterface $admin)
 {
     $locale = '';
     if (!$admin->hasRequest()) {
         $admin->setRequest($this->getService('request'));
     }
     if ($subject = $admin->getSubject()) {
         return $this->getFieldValue($subject, 'locale');
     } elseif ($filter = $admin->getDatagrid()->getFilter('locale')) {
         /** @var \Sonata\AdminBundle\Filter\Filter $filter */
         $data = $filter->getValue();
         if (!$data || !is_array($data) || !array_key_exists('value', $data)) {
             $locale = $this->getCurrentLocale();
         }
         $data['value'] = trim($data['value']);
         if (strlen($data['value']) > 0) {
             $locale = $data['value'];
         }
         if (!$locale && method_exists($admin, 'getDefaultLocale')) {
             $locale = $admin->getDefaultLocale();
         }
     }
     return $locale;
 }