public static function check() {
    // Check for mbstring extension.
    if (!function_exists('mb_strlen')) {
      static::$status = static::STATUS_SINGLEBYTE;
      return 'mb_strlen';
    }

    // Check mbstring configuration.
    if (ini_get('mbstring.func_overload') != 0) {
      static::$status = static::STATUS_ERROR;
      return 'mbstring.func_overload';
    }
    if (ini_get('mbstring.encoding_translation') != 0) {
      static::$status = static::STATUS_ERROR;
      return 'mbstring.encoding_translation';
    }
    // mbstring.http_input and mbstring.http_output are deprecated and empty by
    // default in PHP 5.6.
    if (version_compare(PHP_VERSION, '5.6.0') == -1) {
      if (ini_get('mbstring.http_input') != 'pass') {
        static::$status = static::STATUS_ERROR;
        return 'mbstring.http_input';
      }
      if (ini_get('mbstring.http_output') != 'pass') {
        static::$status = static::STATUS_ERROR;
        return 'mbstring.http_output';
      }
    }

    // Set appropriate configuration.
    mb_internal_encoding('utf-8');
    mb_language('uni');
    static::$status = static::STATUS_MULTIBYTE;
    return '';
  }