protected function _formatMessage($locale, $message, $vars)
    {
        if ($message === '') {
            return $message;
        }
        // Using procedural style as it showed twice as fast as
        // its counterpart in PHP 5.5
        $result = MessageFormatter::formatMessage($locale, $message, $vars);

        if ($result === false) {
            // The user might be interested in what went wrong, so replay the
            // previous action using the object oriented style to figure out
            $formatter = new MessageFormatter($locale, $message);
            if (!$formatter) {
                throw new CannotInstantiateFormatter(intl_get_error_message(), intl_get_error_code());
            }

            $formatter->format($vars);
            throw new CannotFormat($formatter->getErrorMessage(), $formatter->getErrorCode());
        }

        return $result;
    }