Support api3 & 4 language syntax & test
[civicrm-core.git] / Civi / API / Subscriber / I18nSubscriber.php
index 632064f3cfa46fc30f7f9a2afd696d61f0a409be..5b60b1eb7075ecf57f364ead06b64ab2c54fc854 100644 (file)
@@ -35,6 +35,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  * @package Civi\API\Subscriber
  */
 class I18nSubscriber implements EventSubscriberInterface {
+
   /**
    * @return array
    */
@@ -45,6 +46,8 @@ class I18nSubscriber implements EventSubscriberInterface {
   }
 
   /**
+   * Support multi-lingual requests
+   *
    * @param \Civi\API\Event\Event $event
    *   API preparation event.
    *
@@ -53,8 +56,14 @@ class I18nSubscriber implements EventSubscriberInterface {
   public function onApiPrepare(\Civi\API\Event\Event $event) {
     $apiRequest = $event->getApiRequest();
 
-    // support multi-lingual requests
-    if ($language = \CRM_Utils_Array::value('option.language', $apiRequest['params'])) {
+    $params = $apiRequest['params'];
+    if ($apiRequest['version'] < 4) {
+      $language = !empty($params['options']['language']) ? $params['options']['language'] : \CRM_Utils_Array::value('option.language', $params);
+    }
+    else {
+      $language = \CRM_Utils_Array::value('language', $params);
+    }
+    if ($language) {
       $this->setLocale($language);
     }
   }