* @package Civi\API\Subscriber
*/
class I18nSubscriber implements EventSubscriberInterface {
+
/**
* @return array
*/
public static function getSubscribedEvents() {
- return array(
- Events::PREPARE => array('onApiPrepare', Events::W_MIDDLE),
- );
+ return [
+ Events::PREPARE => ['onApiPrepare', Events::W_MIDDLE],
+ ];
}
/**
+ * Support multi-lingual requests
+ *
* @param \Civi\API\Event\Event $event
* API preparation event.
*
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);
}
}
// on multi-lang sites based on request and civicrm_uf_match
if ($multiLang) {
$config = \CRM_Core_Config::singleton();
- $languageLimit = array();
+ $languageLimit = [];
if (isset($config->languageLimit) and $config->languageLimit) {
$languageLimit = $config->languageLimit;
}
$lcMessages = $lcMessagesRequest;
}
else {
- throw new \API_Exception(ts('Language not enabled: %1', array(1 => $lcMessagesRequest)));
+ throw new \API_Exception(ts('Language not enabled: %1', [1 => $lcMessagesRequest]));
}
}