[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]

[%# INTERFACE:
  # header_done: boolean. True if the Bugzilla header has already been printed.
  # error: string. The tag of the error, or the error message to be displayed
  # (deprecated). May contain HTML if it's an error message.
  #%]

[%# This is a list of all the possible user errors. Please keep them in
  # alphabetical order by error tag, and leave a blank line between errors.
  #
  # Note that you must explicitly filter every single template variable
  # in this file; if you do not wish to change it, use the "none" filter.
  #
  # Extension- or custom-specific error handling  can be easily added 
  # via hooks: just place additional code into
  # template/en/hook/global/user-error-errors.html.tmpl
  # Note: be aware of uniqueness of error string parameter value, since
  # nobody can guarantee the hook files processing order in the future.
  #%]

[% PROCESS "global/field-descs.none.tmpl" %]

[% DEFAULT title = "Error" %]

[% error_message = BLOCK %]
  [% IF    error == "account_creation_disabled" %]
    [% title = "Account Creation Disabled" %]
    User account creation has been disabled.
    <hr>
    New accounts must be created by an administrator. The
    maintainer is [% Param("maintainer") %].

  [% ELSIF error == "account_creation_restricted" %]
    [% title = "Account Creation Restricted" %]
    User account creation has been restricted.
    <hr>
    Contact your administrator or the maintainer
    ([% Param("maintainer") %]) for information about
    creating an account.

  [% ELSIF error == "account_disabled" %]
    [% title = "Account Disabled" %]
    [% disabled_reason FILTER none %]
    <hr>
    If you believe your account should be restored, please
    send email to [% Param("maintainer") %] explaining why.

  [% ELSIF error == "account_exists" %]
    [% title = "Account Already Exists" %]
    There is already an account with
    [% IF email %]
      the login name [% email FILTER html %].
    [% ELSE %]
      that login name.
    [% END %]

  [% ELSIF error == "account_locked" %]
    [% title = "Account Locked" %]
    Your IP ([% ip_addr FILTER html %]) has been locked out of this
    account until [% unlock_at FILTER time %], as you have
    exceeded the maximum number of login attempts.

  [% ELSIF error == "alias_has_comma_or_space" %]
    [% title = "Invalid Characters In Alias" %]
    The alias you entered, <em>[% alias FILTER html %]</em>,
    contains one or more commas or spaces.  Aliases cannot contain
    commas or spaces because those characters are used to separate
    aliases from each other in lists.  Please choose an alias
    that does not contain commas and spaces.

  [% ELSIF error == "alias_in_use" %]
    [% title = "Alias In Use" %]
    [% IF user.can_see_bug(bug_id) %]
      [% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %]
    [% ELSE %]
      Another [% terms.bug %]
    [% END %]
    has already taken the alias <em>[% alias FILTER html %]</em>.
    Please choose another alias.

  [% ELSIF error == "alias_is_numeric" %]
    [% title = "Alias Is Numeric" %]
    You tried to give this [% terms.bug %] the alias <em>[% alias FILTER html %]</em>,
    but aliases cannot be merely numbers, since they could
    then be confused with [% terms.bug %] IDs.  Please choose an
    alias containing at least one letter.

  [% ELSIF error == "alias_too_long" %]
    [% title = "Alias Too Long" %]
    [% terms.Bug %] aliases cannot be longer than 40 characters.
    Please choose a shorter alias.

  [% ELSIF error == "api_key_not_valid" %]
    [% title = "Invalid API key" %]
    The API key you specified is invalid. Please check that you typed it
    correctly.

  [% ELSIF error == "api_key_revoked" %]
    [% title = "Invalid API key" %]
    The API key you specified has been revoked by the user that created it.

  [% ELSIF error == "attachment_bug_id_mismatch" %]
    [% title = "Invalid Attachments" %]
    You tried to perform an action on attachments from different [% terms.bugs %].
    This operation requires all attachments to be from the same [% terms.bug %].

  [% ELSIF error == "auth_cant_create_account" %]
    [% title = "Can't create accounts" %]
    This site is using an authentication scheme which does not permit
    account creation. Please contact an administrator to get a new account
    created.

  [% ELSIF error == "auth_failure" %]
    [% title = "Authorization Required" %]
    [% admindocslinks = {'groups.html#groups' => 'Group Security'} %]
    Sorry,
    [% IF group %]
      you aren't a member of the '[% group FILTER html %]' group,
    [% END %]

    [% IF reason %]
      [% IF group %] and [% END %]
      [% IF reason == "cant_bless" %]
        you don't have permissions to add or remove people from a group,
      [% ELSIF reason == "not_visible" %]
        there are visibility restrictions on certain user groups,
      [% END %]
    [% END %]

    [% IF group || reason %] and so [% END %] you are not authorized to
    [% IF action == "access" %]
      access
    [% ELSIF action == "add" %]
      add new
    [% ELSIF action == "begin" %]
      begin
    [% ELSIF action == "modify" %]
      modify
    [% ELSIF action == "delete" %]
      delete
    [% ELSIF action == "edit" %]
      add, modify or delete
    [% ELSIF action == "run" %]
      run
    [% ELSIF action == "schedule" %]
      schedule
    [% ELSIF action == "search" %]
      search
    [% ELSIF action == "use" %]
      use
    [% ELSIF action == "approve" %]
      approve
    [% ELSE %]
      [%+ Hook.process('auth_failure_action') %]
    [% END %]

    [% IF object == "administrative_pages" %]
      administrative pages
    [% ELSIF object == "attachment" %]
      [% IF attach_id %]
        attachment #[% attach_id FILTER html %]
      [% ELSE %]
        this attachment
      [% END %]
    [% ELSIF object == "bugs" %]
      [%+ terms.bugs %]
    [% ELSIF object == "bug_fields" %]
      the [% field_descs.$field FILTER html %] field
    [% ELSIF object == "charts" %]
      the "New Charts" feature
    [% ELSIF object == "classifications" %]
      classifications
    [% ELSIF object == "components" %]
      components
    [% ELSIF object == "comment_tags" %]
      comment tags
    [% ELSIF object == "custom_fields" %]
      custom fields
    [% ELSIF object == "field_values" %]
      field values
    [% ELSIF object == "flagtypes" %]
      flag types
    [% ELSIF object == "group_access" %]
      group access
    [% ELSIF object == "groups" %]
      groups
    [% ELSIF object == "keywords" %]
      keywords
    [% ELSIF object == "milestones" %]
      milestones
    [% ELSIF object == "multiple_bugs" %]
      multiple [% terms.bugs %] at once
    [% ELSIF object == "parameters" %]
      parameters
    [% ELSIF object == "products" %]
      products
    [% ELSIF object == "quips" %]
      quips
    [% ELSIF object == "reports" %]
      whine reports
    [% ELSIF object == "sanity_check" %]
      a sanity check
    [% ELSIF object == "settings" %]
      settings
    [% ELSIF object == "sudo_session" %]
      a sudo session
    [% ELSIF object == "timetracking_summaries" %]
      time-tracking summary reports
    [% ELSIF object == "user" %]  
      the user [% IF userid %] with ID '[% userid FILTER html %]'
      [% ELSE %]you specified [% END %]
    [% ELSIF object == "users" %]
      users
    [% ELSIF object == "versions" %]
      versions
    [% ELSIF object == "workflow" %]
      the workflow
    [% ELSE %]
      [%+ Hook.process('auth_failure_object') %]
    [% END %].

    [% Hook.process("auth_failure") %]

  [% ELSIF error == "auth_invalid_token" %]
    [% title = 'A token error occurred' %]
    The token '[% token FILTER html %]' is not valid. It could be because
    you loaded this page more than 3 days ago.

  [% ELSIF error == "auth_untrusted_request" %]
    [% title = "Untrusted Authentication Request" %]
    You tried to log in using the <em>[% login FILTER html %]</em> account,
    but [% terms.Bugzilla %] is unable to trust your request. Make sure
    your web browser accepts cookies and that you haven't been redirected
    here from an external web site.
    <a href="index.cgi?GoAheadAndLogIn=1">Click here</a> if you really want
    to log in.

  [% ELSIF error == "attachment_deletion_disabled" %]
    [% title = "Attachment Deletion Disabled" %]
    Attachment deletion is disabled on this installation.

  [% ELSIF error == "attachment_removed" %]
    [% title = "Attachment Removed" %]
    The attachment you are attempting to access has been removed.

  [% ELSIF error == "bad_page_cgi_id" %]
    [% title = "Invalid Page ID" %]
    The ID <code>[% page_id FILTER html %]</code> is not a
    valid page identifier.

  [% ELSIF error == "bug_access_denied" %]
    [% title = "$terms.Bug Access Denied" %]
    [% admindocslinks = {'groups.html#groups' => 'Group Security'} %]
    You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].

  [% ELSIF error == "bug_access_query" %]
    [% title = "$terms.Bug Access Denied" %]
    [% docslinks = {'administering/users.html#creating-new-users' => 'Creating an account'} %]
    You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].
    To see this [% terms.bug %], you must
    first <a href="show_bug.cgi?id=
                   [% bug_id FILTER uri %]&amp;GoAheadAndLogIn=1">log
    in to an account</a> with the appropriate permissions.

  [% ELSIF error == "bug_url_invalid" %]
    [% title = "Invalid $terms.Bug URL" %]
    <code>[% url FILTER html %]</code> is not a valid URL to [% terms.abug %].
    [% IF reason == 'http' %]
      URLs must start with "http" or "https".
    [% ELSIF reason == 'path_only' %]
      You must specify a full URL.
    [% ELSIF reason == 'id' %]
      There is no valid [% terms.bug %] id in that URL.
    [% ELSE %]
      [%+ field_descs.see_also FILTER html %] URLs should point to one of:
      <ul>
        <li><code>show_bug.cgi</code> in a Bugzilla
          installation.</li>
        <li>A b[% %]ug on launchpad.net</li>
        <li>An issue on code.google.com.</li>
        <li>An issue on b[% %]ugs.chromium.org.</li>
        <li>A b[% %]ug on b[% %]ugs.debian.org.</li>
        <li>An issue in a JIRA installation.</li>
        <li>A ticket in a Trac installation.</li>
        <li>A b[% %]ug in a MantisBT installation.</li>
        <li>A b[% %]ug on sourceforge.net.</li>
        <li>An issue/pull request on github.com.</li>
        [% Hook.process('bug_url_invalid_tracker') %]
      </ul>
    [% END %]

  [% ELSIF error == "bug_url_too_long" %]
    [% title = "Invalid $terms.Bug URL" %]
    [% terms.Bug %] URLs cannot be longer than 
    [%+ constants.MAX_BUG_URL_LENGTH FILTER none %] characters long.
    <code>[% url FILTER html %]</code> is too long.

  [% ELSIF error == "buglist_parameters_required" %]
    [% title = "Parameters Required" %]
    [% docslinks = {'using/finding.html' => "Searching for $terms.bugs",
                    'using/finding.html#bug-lists' => "$terms.Bug lists"} %]
    You may not search, or create saved searches, without any search terms.

  [% ELSIF error == "cc_remove_denied" %]
    [% title = "Change Denied" %]
    You do not have permission to remove other people from the CC list.

  [% ELSIF error == "chart_too_large" %]
    [% title = "Chart Too Large" %]
    Sorry, but 2000 x 2000 is the maximum size for a chart.

  [% ELSIF error == "comment_id_invalid" %]
    [% id FILTER html %] is not a valid comment id.

  [% ELSIF error == "comment_invalid_isprivate" %]
    You tried to modify the privacy of comment id [% id FILTER html %],
    but that is not a valid comment on this [% terms.bug %].

  [% ELSIF error == "comment_is_private" %]
    Comment id [% id FILTER html %] is private.

  [% ELSIF error == "comment_required" %]
    [% title = "Comment Required" %]
    You have to specify a
    [% IF old.defined && new.defined %]
      <b>comment</b> when changing the [% field_descs.$field FILTER html %]
      of [% terms.abug %] from [% (old || "(empty)") FILTER html %]
      to [% (new || "(empty)") FILTER html %].
    [% ELSIF new %]
      description for this [% terms.bug %].
    [% ELSE %]
      <b>comment</b> on this change.
    [% END %]

  [% ELSIF error == "comment_too_long" %]
    [% title = "Comment Too Long" %]
    Comments cannot be longer than 
    [%+ constants.MAX_COMMENT_LENGTH FILTER html %] characters.

  [% ELSIF error == "comment_tag_disabled" %]
    [% title = "Comment Tagging Disabled" %]
    The comment tagging is not enabled.

  [% ELSIF error == "comment_tag_invalid" %]
    [% title = "Invalid Comment Tag" %]
    The comment tag "[% tag FILTER html %]" contains invalid characters or
    words.

  [% ELSIF error == "comment_tag_too_long" %]
    [% title = "Comment Tag Too Long" %]
    Comment tags cannot be longer than
    [%+ constants.MAX_COMMENT_TAG_LENGTH FILTER html %] characters.

  [% ELSIF error == "comment_tag_too_short" %]
    [% title = "Comment Tag Too Short" %]
    Comment tags must be at least
    [%+ constants.MIN_COMMENT_TAG_LENGTH FILTER html %] characters.

  [% ELSIF error == "auth_classification_not_enabled" %]
    [% title = "Classification Not Enabled" %]
    Sorry, classification is not enabled.

  [% ELSIF error == "classification_name_too_long" %]
    [% title = "Classification Name Too Long" %]
    The name of a classification is limited to [% constants.MAX_CLASSIFICATION_SIZE FILTER html %]
    characters. '[% name FILTER html %]' is too long ([% name.length %] characters).

[% ELSIF error == "classification_not_specified" %]
    [% title = "You Must Supply A Classification Name" %]
    You must enter a classification name.

  [% ELSIF error == "classification_already_exists" %]
    [% title = "Classification Already Exists" %]
    A classification with the name '[% name FILTER html %]' already exists.

  [% ELSIF error == "classification_invalid_sortkey" %]
    [% title = "Invalid Sortkey for Classification" %]
    The sortkey '[% sortkey FILTER html %]' is invalid. It must be an
    integer between 0 and [% constants.MAX_SMALLINT FILTER html %].

  [% ELSIF error == "classification_not_deletable" %]
    [% title = "Default Classification Cannot Be Deleted" %]
    You cannot delete the default classification

  [% ELSIF error == "classification_has_products" %]
     Sorry, there are products for this classification. You
     must reassign those products to another classification before you
     can delete this one.

  [% ELSIF error == "component_already_exists" %]
    [% title = "Component Already Exists" %]
    The <em>[% product.name FILTER html %]</em> product already has
    a component named <em>[% name FILTER html %]</em>.

  [% ELSIF error == "component_blank_description" %]
    [% title = "Blank Component Description Not Allowed" %]
    You must enter a non-blank description for this component.

  [% ELSIF error == "component_blank_name" %]
    [% title = "Blank Component Name Not Allowed" %]
    You must enter a name for this new component.

  [% ELSIF error == "component_has_bugs" %]
    [% title = BLOCK %]Component has [% terms.Bugs %][% END %]
    There are [% nb FILTER html %] [%+ terms.bugs %] entered for this component!
    You must reassign those [% terms.bugs %] to another component before you
    can delete this one.

  [% ELSIF error == "component_is_last" %]
    [% title = BLOCK %]Last Component in this Product[% END %]
    '[% comp.name FILTER html %]' is the last component of the
    '[% comp.product.name FILTER html %]' product. You cannot delete it.

  [% ELSIF error == "component_name_too_long" %]
    [% title = "Component Name Is Too Long" %]
    The name of a component is limited to [% constants.MAX_COMPONENT_SIZE FILTER html %]
    characters. '[% name FILTER html %]' is too long ([% name.length %] characters).

  [% ELSIF error == "component_need_initialowner" %]
    [% title = "Component Requires Default Assignee" %]
    A default assignee is required for this component.

  [% ELSIF error == "customfield_nonexistent" %]
    [% title = "Unknown Custom Field" %]
    There is no custom field with the name '[% name FILTER html %]'.

  [% ELSIF error == "customfield_not_obsolete" %]
    [% title = "Custom Field Not Obsolete" %]
    The custom field '[% name FILTER html %]' is not obsolete.
    Please obsolete a custom field before attempting to delete it.

  [% ELSIF error == "customfield_has_activity" %]
    [% title = "Custom Field Has Activity" %]
    The custom field '[% name FILTER html %]' cannot be deleted because
    it has recorded activity.

  [% ELSIF error == "customfield_has_contents" %]
    [% title = "Custom Field Has Contents" %]
    The custom field '[% name FILTER html %]' cannot be deleted because
    at least one [% terms.bug %] has a non empty value for this field.

  [% ELSIF error == "dependency_loop_multi" %]
    [% title = "Dependency Loop Detected" %]
    The following [% terms.bug %](s) would appear on both the "depends on"
    and "blocks" parts of the dependency tree if these changes
    are committed:
    [% FOREACH dep = deps %]
      [%+ dep FILTER bug_link(dep) FILTER none %]
    [% END %].
    This would create a circular dependency, which is not allowed.

  [% ELSIF error == "dependency_loop_single" %]
    [% title = "Dependency Loop Detected" %]
    You can't make [% terms.abug %] block itself or depend on itself.

  [% ELSIF error == "dupe_id_required" %]
    [% title = "Duplicate $terms.Bug Id Required" %]
    You must specify [% terms.abug %] id to mark this [% terms.bug %]
    as a duplicate of.

  [% ELSIF error == "dupe_not_allowed" %]
    [% title = "Cannot mark $terms.bugs as duplicates" %]
    You cannot mark [% terms.bugs %] as duplicates when
    changing several [% terms.bugs %] at once.

  [% ELSIF error == "dupe_loop_detected" %]
    [% title = "Loop detected among duplicates" %]
    You cannot mark [% terms.bug %] [%+ bug_id FILTER html %] as
    a duplicate of
    [% IF dupe_of == bug_id %]
      itself
    [% ELSE %]
      [%+ terms.bug %] [%+ dupe_of FILTER html %], because it
      would create a duplicate loop
    [% END %].

  [% ELSIF error == "email_change_in_progress" %]
    [% title = "Email Change Already In Progress" %]
    Email change already in progress; please check your email.

  [% ELSIF error == "email_no_body" %]
    Your message did not contain any text, as far as we could tell.

  [% ELSIF error == "empty_group_description" %]
    [% title = "The group description cannot be empty" %]
    You must enter a description for the group.

  [% ELSIF error == "empty_group_name" %]
    [% title = "The group name cannot be empty" %]
    You must enter a name for the group.
  
  [% ELSIF error == "entry_access_denied" %]
    [% title = "Permission Denied" %]
    [% admindocslinks = {'categorization.html#product-group-controls' => 'Group Security'} %]
    Sorry, either the product <em>[% product FILTER html %]</em>
    does not exist or you aren't authorized to
    enter [% terms.abug %] into it.

  [% ELSIF error == "extension_create_no_name" %]
    You must specify a name for your extension, as an argument to this script.

  [% ELSIF error == "extension_disabled" %]
    [% title = "Extension Disabled" %]
    You cannot access this page because the extension '[% name FILTER html %]'
    is disabled.

  [% ELSIF error == "extension_first_letter_caps" %]
    The first letter of your extension's name must be a capital letter.
    (You specified '[% name FILTER html %]'.)

  [% ELSIF error == "feature_disabled" %]
    The [% install_string("feature_$feature") FILTER html %] feature is not
    available in this Bugzilla.
    [% IF user.in_group('admin') %]
      If you would like to enable this feature, please run
      <kbd>checksetup.pl</kbd> to see how to install the necessary
      requirements for this feature.
    [% END %]

  [% ELSIF error == "field_already_exists" %]
    [% title = "Field Already Exists" %]
    The field '[% field.name FILTER html %]'     
    ([% field.description FILTER html %]) already exists. Please
    choose another name.

  [% ELSIF error == "field_cant_control_self" %]
    [% title = "Field Can't Control Itself" %]
    The [% field.description FILTER html %] field can't be set to control 
    itself.

  [% ELSIF error == "field_control_must_be_select" %]
    [% title = "Invalid Field Type Selected" %]
    Only drop-down and multi-select fields can be used to control
    the visibility/values of other fields. [% field.description FILTER html %]
    is not the right type of field.

  [% ELSIF error == "field_invalid_name" %]
    [% title = "Invalid Field Name" %]
    '[% name FILTER html %]' is not a valid name for a field.
    A name may contain only letters, numbers, and the underscore character.

  [% ELSIF error == "field_invalid_sortkey" %]
    [% title = "Invalid Sortkey for Field" %]
    The sortkey [% sortkey FILTER html %] that you have provided for
    this field is not a valid positive integer.

  [% ELSIF error == "field_missing_description" %]
    [% title = "Missing Description for Field" %]
    You must enter a description for this field.

  [% ELSIF error == "field_long_desc_too_long" %]
    [% title = "Long Description for Field too long" %]
    The long description you have provided for this field is longer than 
    [% constants.MAX_FIELD_LONG_DESC_LENGTH FILTER html %] characters.

  [% ELSIF error == "field_missing_name" %]
    [% title = "Missing Name for Field" %]
    You must enter a name for this field.

  [% ELSIF error == "field_value_control_select_only" %]
    [% title = "Invalid Value Control Field" %]
    Only Drop-Down or Multi-Select fields can have a field that
    controls their values.

  [% ELSIF error == "field_visibility_values_must_be_selected" %]
    [% title = "Missing visibility field values" %]
    At least one value must be selected for the visibility field
    '[% field.name FILTER html %]'.

  [% ELSIF error == "fieldname_invalid" %]
    [% title = "Specified Field Does Not Exist" %]
    The field '[% field.name FILTER html %]' does not exist or 
    cannot be edited with this interface.

  [% ELSIF error == "fieldvalue_already_exists" %]
    [% title = "Field Value Already Exists" %]
    The value '[% value.name FILTER html %]' already exists for the
    [%+ field.description FILTER html %] field.

  [% ELSIF error == "fieldvalue_is_controller" %]
    [% title = "Value Controls Other Fields" %]
    You cannot delete the [% value.field.description FILTER html %]
    '[% value.name FILTER html %]' because
    [% IF fields.size %]
      it controls the visibility of the following fields:
      [%+ fields.join(', ') FILTER html %].
    [% END %]
    [% ' Also, ' IF fields.size AND vals.size %]
    [% IF vals.size %]
      it controls the visibility of the following field values:
      <ul>
        [% FOREACH field_name = vals.keys %]
          [% FOREACH val = vals.${field_name} %]
            <li>[% val.field.name FILTER html %]:
              '[% val.name FILTER html %]'</li>
          [% END %]
        [% END %]
      </ul>
    [% END %]

  [% ELSIF error == "fieldvalue_is_default" %]
    [% title = "Specified Field Value Is Default" %]
    '[% value.name FILTER html %]' is the default value for
    the '[% field.description FILTER html %]' field and cannot be deleted
    or disabled.
    [% IF user.in_group('tweakparams') %]
      You have to <a href="editparams.cgi?section=bugfields#
      [%- param_name FILTER uri %]">change</a> the default value first.
    [% END %]

  [% ELSIF error == "fieldvalue_name_too_long" %]
    [% title = "Field Value Is Too Long" %]
    The value of a field is limited to 
    [%+ constants.FIELD_VALUE_MAX_SIZE FILTER none %] characters. 
    '[% value FILTER html %]' is too long ([% value.length %] characters).

  [% ELSIF error == "fieldvalue_not_editable" %]
    [% title = "Field Value Not Editable" %]
    The value '[% old_value.name FILTER html %]' cannot be renamed because
    it plays some special role for the '[% field.description FILTER html %]'
    field.

  [% ELSIF error == "fieldvalue_not_deletable" %]
    [% title = "Field Value Not Deletable" %]
    The value '[% value.name FILTER html %]' cannot be removed or
    disabled, because it plays some special role for the 
    '[% field.description FILTER html %]' field.

  [% ELSIF error == "fieldvalue_reserved_word" %]
    [% title = "Reserved Word Not Allowed" %]
    You cannot use the value '[% value FILTER html %]' for the
    '[% field.description FILTER html %]' field. This value is used internally.
    Please choose another one.

  [% ELSIF error == "fieldvalue_sortkey_invalid" %]
    [% title = "Invalid Field Value Sortkey" %]
    The sortkey '[% sortkey FILTER html %]' for the
    [%+ field.description FILTER html %] field must be an integer
    between 0 and [% constants.MAX_SMALLINT FILTER none %].

  [% ELSIF error == "fieldvalue_still_has_bugs" %]
    [% title = "You Cannot Delete This Field Value" %]
    You cannot delete the value '[% value.name FILTER html %]' from the 
    [%+ field.description FILTER html %] field, because there are still
    [%+ value.bug_count FILTER html %] [%+ terms.bugs %] using it.

  [% ELSIF error == "fieldvalue_undefined" %]
    [% title = "Undefined Value Not Allowed" %]
    You must specify a value.

  [% ELSIF error == "file_not_specified" %]
    [% title = "No File Specified" %]
    You did not specify a file to attach.

  [% ELSIF error == "filename_not_specified" %]
    [% title = "No Filename Specified" %]
    You must specify a filename for this attachment.

  [% ELSIF error == "file_too_large" %]
    [% title = "File Too Large" %]
    [%# Convert maxlocalattachment from Mb to Kb %]
    [% max_local = Param('maxlocalattachment') * 1024 %]
    [% max_limit = [Param('maxattachmentsize'), max_local] %]
    The file you are trying to attach is [% filesize FILTER html %] 
    kilobytes (KB) in size. Attachments cannot be more than
    [%# Hack to get the max value between both limits %]
    [%+ max_limit.nsort.last FILTER html %] KB. <br>
    We recommend that you store your attachment elsewhere
    and then paste the URL to this file on the attachment
    creation page in the appropriate text field, which you can access by
    clicking the "paste text as attachment" link.
    <br>Alternately, if your attachment is an image, you could convert
    it to a compressible format like JPG or PNG and try again.

  [% ELSIF error == "flag_type_requestee_disabled" %]
    [% title = "Flag not Requestable from Specific Person" %]
    You can't ask a specific person for <em>[% type.name FILTER html %]</em>.

  [% ELSIF error == "flag_requestee_disabled" %]
    [% title = "Flag Requestee Disabled" %]
    You can't ask <em>[% requestee.identity FILTER html %]</em> because that
    account is disabled.

  [% ELSIF error == "flag_requestee_needs_privs" %]
    [% title = "Flag Requestee Needs Privileges" %]
    [% requestee.identity FILTER html %] does not have permission to set the
    <em>[% flagtype.name FILTER html %]</em> flag. Please select a user who is
    a member of the <em>[% flagtype.grant_group.name FILTER html %]</em> group.

  [% ELSIF error == "flag_requestee_unauthorized" %]
    [% title = "Flag Requestee Not Authorized" %]
    [% admindocslinks = {'flags.html' => 'Administering Flags',
                         'categorization.html#assigning-group-controls-to-products' => 'Group Security'} %]
    [% docslinks = {'using/understanding.html#flags' => 'Using Flags'} %]

    You asked [% requestee.identity FILTER html %]
    for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %] 
    [%+ bug_id FILTER html -%]
    [% IF attach_id && attach_id > 0 %], attachment [% attach_id FILTER html %][% END %],
    but that [% terms.bug %] has been restricted to users in certain groups, 
    and the user you asked isn't in all the groups to which 
    the [% terms.bug %] has been restricted.
    Please choose someone else to ask, or make the [% terms.bug %] accessible
    to users on its CC: list and add that user to the list.

  [% ELSIF error == "flag_requestee_unauthorized_attachment" %]
    [% title = "Flag Requestee Not Authorized" %]
    [% admindocslinks = {'flags.html' => 'Administering Flags',
                         'categorization.html#assigning-group-controls-to-products' => 'Group Security'} %]
    [% docslinks = {'using/understanding.html#flags' => 'Using Flags'} %]

    You asked [% requestee.identity FILTER html %]
    for <code>[% flag_type.name FILTER html %]</code> on 
    [%+ terms.bug %] [%+ bug_id FILTER html %],
    attachment [% attach_id FILTER html %], but that attachment
    is restricted to users in the [% Param("insidergroup") FILTER html %] group,
    and the user you asked isn't in that group.  Please choose someone else
    to ask, or ask an administrator to add the user to the group.

  [% ELSIF error == "flag_status_invalid" %]
    [% title = "Flag Status Invalid" %]
    The flag status <em>[% status FILTER html %]</em>
    [% IF id %]
      for flag ID #[% id FILTER html %]
    [% END %]
    is invalid.

  [% ELSIF error == "flag_type_cannot_deactivate" %]
    [% title = "Cannot Deactivate Flag Type" %]
    Sorry, but the flag type '[% flagtype.name FILTER html %]' also applies to some
    products you cannot see, and so you are not allowed to deactivate it.

  [% ELSIF error == "flag_type_cannot_delete" %]
    [% title = "Flag Type Deletion Not Allowed" %]
    Sorry, but the flag type '[% flagtype.name FILTER html %]' also applies to some
    products you cannot see, and so you are not allowed to delete it.

  [% ELSIF error == "flag_type_cc_list_invalid" %]
    [% title = "Flag Type CC List Invalid" %]
    [% admindocslinks = {'flags.html' => 'Administering Flags'} %]
    The CC list [% cc_list FILTER html %] must be less than 200 characters long.

  [% ELSIF error == "flag_type_component_without_product" %]
    [% title = "Product Missing" %]
    A component was selected without a product being selected.

  [% ELSIF error == "flag_type_description_invalid" %]
    [% title = "Flag Type Description Invalid" %]
    [% admindocslinks = {'flags.html' => 'Administering Flags'} %]
    You must enter a description for this flag type.

  [% ELSIF error == "flag_type_name_invalid" %]
    [% title = "Flag Type Name Invalid" %]
    [% admindocslinks = {'flags.html' => 'Administering Flags'} %]
    The name <em>[% name FILTER html %]</em> must be 1-50 characters long
    and must not contain any spaces or commas.

  [% ELSIF error == "flag_type_not_editable" %]
    [% title = "Flag Type Not Editable" %]
    You are not allowed to edit properties of the '[% flagtype.name FILTER html %]'
    flag type, because this flag type is not available for the products you can administer.

  [% ELSIF error == "flag_not_unique" %]
    [% title = "Flag not Unique" %]
    The flag '[% value FILTER html %]' has been set multiple times.
    You must specify the id value to update the flag.

  [% ELSIF error == "flag_type_not_unique" %]
    [% title = "Flag Type not Unique" %]
    The flag type '[% value FILTER html %]' matches several flag types.
    You must specify the type id value to update or add a flag.

  [% ELSIF error == "flag_type_not_multiplicable" %]
    [% docslinks = {'using/understanding.html#flags' => 'Using Flags'} %]
    You cannot have several <em>[% type.name FILTER html %]</em> flags
    for this [% IF attachment %] attachment [% ELSE %] [%+ terms.bug %] [% END %].

  [% ELSIF error == "flag_update_denied" %]
    [% title = "Flag Modification Denied" %]
    [% admindocslinks = {'flags.html' => 'Administering Flags',
                         'categorization.html#assigning-group-controls-to-products' => 'Group Security'} %]
    [% docslinks = {'using/understanding.html#flags' => 'Using Flags'} %]
    You tried to [% IF status == "+" %] grant [% ELSIF status == "-" %] deny
    [% ELSIF status == "X" %] clear [% ELSE %] request [% END %]
    <code>[% name FILTER html %]
          [% IF status == "X" %][% old_status FILTER html %][% END %]</code>.

    Only a user with the required permissions may make this change.

  [% ELSIF error == "format_not_found" %]
    [% title = "Format Not Found" %]
    The requested format <em>[% format FILTER html %]</em> does not exist with
    a content type of <em>[% ctype FILTER html %]</em>.
    [% IF invalid %]
      Both parameters must contain letters and hyphens only.
    [% END %]

  [% ELSIF error == "flag_type_sortkey_invalid" %]
    [% title = "Flag Type Sort Key Invalid" %]
    The sort key <em>[% sortkey FILTER html %]</em> must be an integer
    between 0 and [% constants.MAX_SMALLINT FILTER none %].

  [% ELSIF error == "freetext_too_long" %]
    [% title = "Text Too Long" %]
    The text you entered in the [% field_descs.$field FILTER html %]
    field is too long ([% text.length FILTER html %] characters,
    above the maximum length allowed of
    [%+ constants.MAX_FREETEXT_LENGTH FILTER none %] characters).

  [% ELSIF error == "group_cannot_delete" %]
    [% title = "Cannot Delete Group" %]
    The <em>[% group.name FILTER html %]</em> group cannot be deleted because
    there are
    <a href="editgroups.cgi?action=del&amp;group=
             [%- group.id FILTER uri %]">records</a>
    in the database which refer to it. All references to this group must
    be removed before you can remove it.

  [% ELSIF error == "group_cannot_view" %]
    [% title = "Cannot View Groups" %]
    In order to view groups, you need to be a member of the 'editusers' or
    'creategroups' group, or have bless privileges to at least one group.

  [% ELSIF error == "group_exists" %]
    [% title = "The group already exists" %]
    The group [% name FILTER html %] already exists.

  [% ELSIF error == "group_has_special_role" %]
    [% title = "Group not deletable" %]
    [% IF groups.size == 1 %]
      [% attr = "it" %]
      [% param = "parameter" %]
    [% ELSE %]
      [% attr = "them" %]
      [% param = "parameters" %]
    [% END %]
    The group '[% name FILTER html %]' is used by the
    '[% groups.join("' and '") FILTER html %]' [% param FILTER html %].
    In order to delete this group, you first have to change the
    [%+ param FILTER html %] to make [% attr FILTER html %] point to another group.


  [% ELSIF error == "group_invalid_removal" %]
    You tried to remove [% terms.bug %] [%+ bug_id FILTER html %]
    from the '[% name FILTER html %]' group, but either this group does not exist,
    or you are not allowed to remove [% terms.bugs %] from this group in the
    '[% product FILTER html %]' product.

  [% ELSIF error == "group_restriction_not_allowed" %]
    [% title = "Group Restriction Not Allowed" %]
    You tried to restrict [% bug_id ? "$terms.bug $bug_id" : terms.abug FILTER html %]
    to the '[% name FILTER html %]' group, but either this group does not exist,
    or you are not allowed to restrict [% terms.bugs %] to this group in the
    '[% product FILTER html %]' product.

  [% ELSIF error == "group_not_specified" %]
    [% title = "Group not specified" %]
    No group was specified.

  [% ELSIF error == "group_not_visible" %]
    [% title = "Group Not Allowed" %]
    You are not allowed to see members of the [% group.name FILTER html %]
    group.

  [% ELSIF error == "system_group_not_deletable" %]
    [% title = "System Groups not deletable" %]
    <em>[% name FILTER html %]</em> is a system group.
    This group cannot be deleted.

  [% ELSIF error == "illegal_attachment_edit" %]
    [% title = "Unauthorized Action" %]
    You are not authorized to edit attachment [% attach_id FILTER html %].

  [% ELSIF error == "illegal_attachment_edit_bug" %]
    [% title = "Unauthorized Action" %]
    You are not authorized to edit attachments on [% terms.bug %] 
    [%+ bug_id FILTER html %].
         
  [% ELSIF error == "illegal_bug_status_transition" %]
    [% title = "Illegal $terms.Bug Status Change" %]
    [% IF old.defined %]
      You are not allowed to change the [% terms.bug %] status from
      [%+ old.name FILTER html %] to [% new.name FILTER html %].
    [% ELSE %]
      You are not allowed to file new [% terms.bugs %] with the
      [%+ new.name FILTER html %] status. 
    [% END %]

  [% ELSIF error == "illegal_change" %]
    [% title = "Not allowed" %]
    You tried to change the
    <strong>[% field_descs.$field FILTER html %]</strong> field 
    [% IF oldvalue.defined AND oldvalue != "" %]
      from <em>[% oldvalue.join(', ') FILTER html %]</em>
    [% END %]
    [% IF newvalue.defined AND newvalue != "" %]
      to <em>[% newvalue.join(', ') FILTER html %]</em>
    [% END %],
    but only
    [% IF privs < constants.PRIVILEGES_REQUIRED_EMPOWERED %]
      the assignee
      [% IF privs < constants.PRIVILEGES_REQUIRED_ASSIGNEE %] or reporter [% END %]
      of the [% terms.bug %], or
    [% END %]
    a user with the required permissions may change that field.

  [% ELSIF error == "illegal_change_deps" %]
    [% title = "Not allowed" %]
    You tried to change the 
    <strong>[% field_descs.$field FILTER html %]</strong> field 
    but only a user allowed to edit 
    both related [% terms.bugs %] may change that field.

  [% ELSIF error == "illegal_date" %]
    [% title = "Illegal Date" %]
    '<kbd>[% date FILTER html %]</kbd>' is not a legal date.
    [% IF format %]
      Please use the format '<code>[% format FILTER html %]</code>'.
    [% END %]
    
  [% ELSIF error == "illegal_email_address" %]
    [% title = "Invalid Email Address" %]
    The e-mail address you entered (<b>[% addr FILTER html %]</b>) 
    didn't pass our syntax checking for a legal email address.
    [% IF default %]
      A legal address must contain exactly one '@',
      and at least one '.' after the @.
    [% ELSE %]
      [%+ Param('emailregexpdesc') FILTER html_light %]
    [% END %]
    It also must not contain any illegal characters.

  [% ELSIF error == "illegal_frequency" %]
    [% title = "Too Frequent" %]
    Unless you are an administrator, you may not create series which are 
    run more often than once every [% minimum FILTER html %] days.
    
  [% ELSIF error == "illegal_group_control_combination" %]
    [% title = "Your Group Control Combination Is Illegal" %]
    [% admindocslinks = {'categorization.html#assigning-group-controls-to-products' => 'Assigning Group Controls to Products'} %]
    Your group control combination for group &quot;
    [% groupname FILTER html %]&quot; is illegal.

  [% ELSIF error == "illegal_pronoun" %]
    [% title = "Illegal Pronoun" %]
    The pronoun you used ([% pronoun FILTER html %]) is illegal. You must use
    one of the approved pronouns. Please see
    <a href="[% docs_urlbase FILTER html %]query.html#pronouns">Pronoun Substitution</a>
    for a complete list.

  [% ELSIF error == "illegal_query_name" %]
    [% title = "Illegal Search Name" %]
    The name of your search cannot contain any of the following characters: 
    &lt;, &gt;, &amp;.

  [% ELSIF error == "illegal_series_creation" %]
    [% admindocslinks = {'categorization.html#assigning-group-controls-to-products' => 'Group security'} %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
    You are not authorized to create series.
        
  [% ELSIF error == "illegal_series_edit" %]
    [% admindocslinks = {'categorization.html#assigning-group-controls-to-products' => 'Group security'} %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
    You are not authorized to edit this series. To do this, you must either
    be its creator, or an administrator.

  [% ELSIF error == "illegal_time" %]
    [% title = "Illegal Time" %]
    '<kbd>[% time FILTER html %]</kbd>' is not a legal time.
    [% IF format %]
      Please use the format '<code>[% format FILTER html %]</code>'.
    [% END %]

  [% ELSIF error == "illegal_regexp" %]
    [% title = "Illegal Regular Expression" %]
    The regular expression you provided [% value FILTER html %] is not valid.
    The error was: [% dberror FILTER html %].
        
  [% ELSIF error == "insufficient_data_points" %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
    We don't have enough data points to make a graph (yet).
        
  [% ELSIF error == "invalid_attach_id" %]
    [% title = "Invalid Attachment ID" %]
    The attachment id [% attach_id FILTER html %] is invalid.

  [% ELSIF error == "bug_id_does_not_exist" %]
    [% title = BLOCK %]Invalid [% terms.Bug %] ID[% END %]
    [% terms.Bug %] #[% bug_id FILTER html %] does not exist.
    
  [% ELSIF error == "improper_bug_id_field_value" %]
    [% title = BLOCK %]
      [% IF bug_id %]Invalid [% ELSE %]Missing [% END %] [% terms.Bug %] ID
    [% END %]
    [% IF bug_id %]
      '[% bug_id FILTER html %]' is not a valid [% terms.bug %] number
      nor an alias to [% terms.abug %].
    [% ELSE %]
      [% IF field %]
        The '[% field_descs.$field FILTER html %]' field
        cannot be empty.
      [% END %]
      You must enter a valid [% terms.bug %] number!
    [% END %]

  [% ELSIF error == "invalid_changedsince" %]
    [% title = "Invalid 'Changed Since'" %]
    The 'changed since' value, '[% changedsince FILTER html %]', must be an
    integer >= 0.

  [% ELSIF error == "invalid_content_type" %]
    [% title = "Invalid Content-Type" %]
    The content type <em>[% contenttype FILTER html %]</em> is invalid.
    Valid types must be of the form <em>foo/bar</em> where <em>foo</em>
    is one of <em>[% constants.LEGAL_CONTENT_TYPES.join(', ') FILTER html %]</em>
    and <em>bar</em> must not contain any special characters (such as "=", "?", ...).

  [% ELSIF error == "invalid_datasets" %]
    [% title = "Invalid Datasets" %]
    Invalid datasets <em>[% datasets.join(":") FILTER html %]</em>. Only digits,
    letters and colons are allowed.

  [% ELSIF error == "invalid_dimensions" %]
    [% title = "Invalid Dimensions" %]
    The width or height specified is not a positive integer.

  [% ELSIF error == "invalid_format" %]
    [% title = "Invalid Format" %]
    The format "[% format FILTER html %]" is invalid (must be one of
    [% FOREACH my_format = formats %]
      "[% my_format FILTER html %]"
    [% END %]
    ).

  [% ELSIF error == "invalid_group_ID" %]
    [% title = "Invalid group ID" %]
    The group you specified doesn't exist.

  [% ELSIF error == "invalid_group_name" %]
    [% title = "Invalid group name" %]
    The group you specified, [% name FILTER html %], is not valid here.

  [% ELSIF error == "invalid_keyword_id" %]
    The keyword ID <em>[% id FILTER html %]</em> couldn't be found.

  [% ELSIF error == "invalid_maxrows" %]
    [% title = "Invalid Max Rows" %]
    The maximum number of rows, '[% maxrows FILTER html %]', must be
    a positive integer.

  [% ELSIF error == "invalid_parameter" %]
    [% title = "Invalid Parameter" %]
    The new value for [% name FILTER html %] is invalid: [% err FILTER html %].

  [% ELSIF error == "invalid_regexp" %]
    [% title = "Invalid regular expression" %]
    The regular expression you entered is invalid.

  [% ELSIF error == "invalid_user" %]
    [% title = "Invalid User" %]
    There is no user account
    [% IF user_id %]
      with ID <em>[% user_id FILTER html %]</em>.
    [% ELSIF user_login %]
      with login name <em>[% user_login FILTER html %]</em>.
    [% ELSE %]
      given.
    [% END %]

  [% ELSIF error == "invalid_user_group" %]
    [% title = "Invalid User Group" %]
    [% IF users.size > 1 %] Users [% ELSE %] User [% END %]
    '[% users.join(', ') FILTER html %]'
    [% IF users.size > 1 %] are [% ELSE %] is [% END %]
    not able to edit the
    [% IF product %]
      '[% product FILTER html %]'
    [% END %]
    [%+ field_descs.product FILTER html %]
    [% IF bug_id %]
      for [% terms.bug %] '[% bug_id FILTER html %]'.
    [% ELSIF new %]
      and may not be included on a new [% terms.bug %].
    [% ELSE %]
      for at least one [% terms.bug %] being changed.
    [% END %]

  [% ELSIF error == "invalid_username" %]
    [% title = "Invalid Username" %]
    The name <kbd>[% name FILTER html %]</kbd> is not a valid username.
    Either you misspelled it, or the person has not
    registered for a [% terms.Bugzilla %] account.

  [% ELSIF error == "invalid_login_or_password" %]
    [% title = "Invalid Login Or Password" %]
    The login or password you entered is not valid.
    [%# People get two login attempts before being warned about
      # being locked out.
      #%]
    [% IF remaining <=  2 %]
      If you do not enter the correct password after 
      [%+ remaining FILTER html %] more attempt(s), you will be
      locked out of this account for 
      [%+ constants.LOGIN_LOCKOUT_INTERVAL FILTER html %] minutes.
      To avoid being locked out, you can reset your password using
      the "Forgot Password" link.
    [% END %]

  [% ELSIF error == "invalid_cookies_or_token" %]
    [% title = "Invalid Cookies or Token" %]
    The cookies or token provide were not valid or have expired.
    You may login again to get new cookies or a new token.

  [% ELSIF error == "json_rpc_get_method_required" %]
    When using JSON-RPC over GET, you must specify a 'method'
    parameter. See the documentation at
    [%+ docs_urlbase FILTER html %]api/Bugzilla/WebService/Server/JSONRPC.html

  [% ELSIF error == "json_rpc_illegal_content_type" %]
    When using JSON-RPC over POST, you cannot send data as
    [%+ content_type FILTER html %]. Only application/json and
    application/json-rpc are allowed.

  [% ELSIF error == "json_rpc_invalid_params" %]
    Could not parse the 'params' argument as valid JSON.
    Error: [% err_msg FILTER html %]
    Value: [% params FILTER html %]

  [% ELSIF error == "json_rpc_invalid_callback" %]
    You cannot use '[% callback FILTER html %]' as your 'callback' parameter.
    For security reasons, only letters, numbers, and the following
    characters are allowed in the 'callback' parameter: <code>[]._</code>

  [% ELSIF error == "json_rpc_post_only" %]
    For security reasons, you must use HTTP POST to call the
    '[% method FILTER html %]' method.

  [% ELSIF error == "rest_invalid_resource" %]
    A REST API resource was not found for '[% method FILTER html +%] [%+ path FILTER html %]'.

  [% ELSIF error == "get_products_invalid_type" %]
    The product type '[% type FILTER html %]' is invalid. Valid choices
    are 'accessible', 'selectable', and 'enterable'.

  [% ELSIF error == "keyword_already_exists" %]
    [% title = "Keyword Already Exists" %]
    A keyword with the name [% name FILTER html %] already exists.

  [% ELSIF error == "keyword_blank_description" %]
    [% title = "Blank Keyword Description Not Allowed" %]
    You must enter a non-blank description for the keyword.
     
  [% ELSIF error == "keyword_blank_name" %]
    [% title = "Blank Keyword Name Not Allowed" %]
    You must enter a non-blank name for the keyword.
     
  [% ELSIF error == "keyword_invalid_name" %]
    [% title = "Invalid Keyword Name" %]
    You may not use commas or whitespace in a keyword name.
     
  [% ELSIF error == "login_needed_for_password_change" %]
    [% title = "Login Name Required" %]
    You must enter a login name when requesting to change your password.

  [% ELSIF error == "login_required_for_pronoun" %]
    [% title = "Login Name Required" %]
    You can't use %user% without being logged in, because %user% refers
    to your login name, which we don't know.

  [% ELSIF error == "login_required" %]
    [%# Used for non-web-based LOGIN_REQUIRED situations. %]
    You must log in before using this part of [% terms.Bugzilla %].

  [% ELSIF error == "migrate_config_created" %]
    The file <kbd>[% file FILTER html %]</kbd> contains configuration
    variables that must be set before continuing with the migration.

  [% ELSIF error == "migrate_from_invalid" %]
    '[% from FILTER html %]' is not a valid type of [% terms.bug %]-tracker
    to migrate from. See the contents of the <kbd>Bugzilla/Migrate/</kbd>
    directory for a list of valid [% terms.bug %]-trackers.

  [% ELSIF error == "milestone_already_exists" %]
    [% title = "Milestone Already Exists" %]
    [% admindocslinks = {'categorization.html#products'   => 'Administering products',
                         'categorization.html#milestones' => 'About Milestones'} %]
    The milestone '[% name FILTER html %]' already exists for product '
    [%- product FILTER html %]'.

  [% ELSIF error == "milestone_blank_name" %]
    [% title = "Blank Milestone Name Not Allowed" %]
    You must enter a name for this milestone.

  [% ELSIF error == "milestone_is_default" %]
    [% title = "Default milestone not deletable" %]
    [% admindocslinks = {'categorization.html#products'   => 'Administering products',
                         'categorization.html#milestones' => 'About Milestones'} %]
    Sorry, but [% milestone.name FILTER html %] is the default milestone
    for the '[% milestone.product.name FILTER html %]' product, and so
    it cannot be deleted.

  [% ELSIF error == "milestone_name_too_long" %]
    [% title = "Milestone Name Is Too Long" %]
    The name of a milestone is limited to [% constants.MAX_MILESTONE_SIZE FILTER html %]
    characters. '[% name FILTER html %]' is too long ([% name.length %] characters).

  [% ELSIF error == "milestone_required" %]
    [% title = "Milestone Required" %]
    You must select a target milestone for [% terms.bug %]
    [%+ bug.id FILTER html %]
    if you are going to accept it.  Part of accepting 
    [%+ terms.abug %] is giving an estimate of when it will be fixed.

  [% ELSIF error == "milestone_sortkey_invalid" %]
    [% title = "Invalid Milestone Sortkey" %]
    The sortkey '[% sortkey FILTER html %]' is not in the range
    [%+ constants.MIN_SMALLINT FILTER html %] &le; sortkey &le;
    [%+ constants.MAX_SMALLINT FILTER html %].

  [% ELSIF error == "misarranged_dates" %]
    [% title = "Misarranged Dates" %]
    Your start date ([% datefrom FILTER html %]) is after 
    your end date ([% dateto FILTER html %]).

  [% ELSIF error == "mismatched_bug_ids_on_obsolete" %]
    Attachment [% attach_id FILTER html %] is attached to another [% terms.bug %],
    but you tried to flag it as obsolete while creating a new attachment to
    [%+ terms.bug %] [%+ my_bug_id FILTER html %].

  [% ELSIF error == "missing_attachment_description" %]
    [% title = "Missing Attachment Description" %]
    You must enter a description for the attachment.

  [% ELSIF error == "missing_bug_id" %]
    [% title = "Missing $terms.Bug ID" %]
    No [% terms.bug %] ID was given.

  [% ELSIF error == "missing_category" %]
    [% title = "Missing Category" %]
    You did not specify a category for this series.

  [% ELSIF error == "missing_component" %]
    [% title = "Missing Component" %]
    [% admindocslinks = {'categorization.html#products'   => 'Administering products',
                         'categorization.html#milestones' => 'Creating a component'} %]
    Sorry, the product <em>[% product.name FILTER html %]</em>
    has to have at least one active component in order for you to
    enter [% terms.abug %] into it.<br>
    [% IF user.in_group("editcomponents", product.id) %]
      <a href="editcomponents.cgi?action=add&amp;product=[% product.name FILTER uri %]">Create
      a new component</a>.
    [% ELSE %]
      Please contact [% Param("maintainer") %] and ask them
      to add a component to this product.
    [% END %]

  [% ELSIF error == "missing_content_type" %]
    [% title = "Missing Content-Type" %]
     You asked [% terms.Bugzilla %] to auto-detect the content type, but
     your browser did not specify a content type when uploading the file, 
     so you must enter a content type manually.

  [% ELSIF error == "missing_cookie" %]
    [% title = "Missing Cookie" %]
    Sorry, I seem to have lost the cookie that recorded
    the results of your last search. I'm afraid you will have to start
    again from the <a href="query.cgi">search page</a>.

  [% ELSIF error == "missing_datasets" %]
    [% title = "No Datasets Selected" %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
    You must specify one or more datasets to plot.

  [% ELSIF error == "missing_frequency" %]
    [% title = "Missing Frequency" %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
    You did not specify a valid frequency for this series.

  [% ELSIF error == "missing_name" %]
    [% title = "Missing Name" %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
    You did not specify a name for this series.

  [% ELSIF error == "missing_query" %]
    [% title = "Missing Search" %]
    [% docslinks = {'using/finding.html' => "Searching for $terms.bugs",
                    'using/finding.html#bug-lists' => "$terms.Bug lists"} %]
    The search named <em>[% name FILTER html %]</em>
    [% IF sharer_id && sharer_id != user.id %]
      has not been made visible to you.
    [% ELSE %]
      does not exist.
    [% END %]

  [% ELSIF error == "need_quipid" %]
    [% title = "Missing Quip ID" %]
    A valid quip ID is needed.

  [% ELSIF error == "missing_resolution" %]
    [% title = "Resolution Required" %]
    A valid resolution is required to mark [% terms.bugs %] as
    [%+ status FILTER upper FILTER html %].

  [% ELSIF error == "missing_subcategory" %]
    [% title = "Missing Subcategory" %]
    You did not specify a subcategory for this series.
                
  [% ELSIF error == "missing_version" %]
    [% title = "Missing Version" %]
    [% admindocslinks = {'categorization.html#versions' => 'Defining versions'} %]
    Sorry, the product <em>[% product.name FILTER html %]</em>
    has to have at least one active version in order for you to
    enter [% terms.abug %] into it.<br>
    [% IF user.in_group("editcomponents", product.id) %]
      <a href="editversions.cgi?action=add&amp;product=[% product.name FILTER uri %]">Create
      a new version</a>.
    [% ELSE %]
      Please contact [% Param("maintainer") %] and ask them
      to add a version to this product.
    [% END %]

  [% ELSIF error == "multiple_alias_not_allowed" %]
    You cannot set aliases when modifying multiple [% terms.bugs %]
    at once.

  [% ELSIF error == "need_quip" %]
    [% title = "Quip Required" %]
    [% docslinks = {'administering/quips.html' => 'About quips'} %]
    Please enter a quip in the text field.

  [% ELSIF error == "new_password_missing" %]
    [% title = "New Password Missing" %]
    You must enter a new password.

  [% ELSIF error == "no_axes_defined" %]
    [% title = "No Axes Defined" %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
    You didn't define any axes to plot.

  [% ELSIF error == "no_bugs_chosen" %]
    [% title = BLOCK %]No [% terms.Bugs %] Selected[% END %]
    You apparently didn't choose any [% terms.bugs %]
    [% IF action == "modify" %]
      to modify.
    [% ELSIF action == "view" %]
      to view.
    [% ELSIF action == 'summarize' %]
      for viewing time summaries.
    [% END %]

  [% ELSIF error == "no_tag_to_edit" %]
    [% title = "No Tag Selected" %]
    You tried to create or remove a tag with no name.

  [% ELSIF error == "no_initial_bug_status" %]
    [% title = "No Initial $terms.Bug Status" %]
    No [% terms.bug %] status is available on [% terms.bug %] creation.
    Please report the problem to [% Param("maintainer") %].
    
  [% ELSIF error == "no_keywords" %]
    [% title = "No Keywords" %]
    [% admindocslinks = {'keywords.html' => 'Setting up a keyword'} %]
    No keywords have been defined for this installation.

  [% ELSIF error == "no_new_quips" %]
    [% title = "No New Quips" %]
    [% admindocslinks = {'quips.html' => 'Controlling quip usage'} %]
    This site does not permit the addition of new quips.

  [% ELSIF error == "no_page_specified" %]
    [% title = "No Page Specified" %]
    You did not specify the id of a page to display.

  [% ELSIF error == "no_products" %]
    [% title = "No Products" %]
    [% admindocslinks = {
      'categorization.html#creating-new-products'  => 'Setting up a product',
      'categorization.html#components'             => 'Adding components to products',
      'categorization.html#product-group-controls' => 'Groups security'
    } %]
    Either no products have been defined to enter [% terms.bugs %] against or you have not
    been given access to any.

  [% ELSIF error == "number_not_integer" %]
    [% title = "Integer Value Required" %]
    The value '[% num FILTER html %]' in the
    <em>[% field_descs.$field FILTER html %]</em> field
    is not an integer value (i.e. a whole number).

  [% ELSIF error == "number_not_numeric" %]
    [% title = "Numeric Value Required" %]
    The value '[% num FILTER html %]' in the 
    <em>[% field_descs.$field FILTER html %]</em> field 
    is not a numeric value.

  [% ELSIF error == "number_too_large" %]
    [% title = "Number Too Large" %]
    The value '[% num FILTER html %]' in the 
    <em>[% field_descs.$field FILTER html %]</em> field 
    is more than the maximum allowable value of '[% max_num FILTER html %]'.

  [% ELSIF error == "number_too_small" %]
    [% title = "Number Too Small" %]
    The value '[% num FILTER html %]' 
    in the <em>[% field_descs.$field FILTER html %]</em> field 
    is less than the minimum allowable value of '[% min_num FILTER html %]'.

  [% ELSIF error == "object_not_specified" %]
    [% type = BLOCK %][% INCLUDE object_name class = class %][% END %]
    [% title = BLOCK %][% type FILTER ucfirst FILTER html %] Not 
    Specified[% END %]
    You must select/enter a [% type FILTER html %].

  [% ELSIF error == "object_does_not_exist" %]
    [% type = BLOCK %][% INCLUDE object_name class = class %][% END %]
    [% title = BLOCK %]Invalid [% type FILTER ucfirst FILTER html %][% END %]
    There is no [% type FILTER html %] 
    [% IF id.defined %]
      with the id '[% id FILTER html %]'
    [% ELSE %]
      named '[% name FILTER html %]'
    [% END %]
    [% IF product.defined %]
      in the '[% product.name FILTER html %]' product
    [% END %].
    [% IF class == "Bugzilla::User" %]
      Either you mis-typed the name or that user has not yet registered
      for a [% terms.Bugzilla %] account.
    [% ELSIF class == "Bugzilla::Keyword" %]
      See the list of available <a href="describekeywords.cgi">keywords</a>.
    [% END %]

  [% ELSIF error == "old_password_incorrect" %]
    [% title = "Incorrect Password" %]
    You did not enter your current password correctly.

  [% ELSIF error == "old_password_required" %]
    [% title = "Old Password Required" %]
    You must enter your old password to change your email address.

  [% ELSIF error == "password_change_requests_not_allowed" %]
    [% title = "Password Change Requests Not Allowed" %]
    The system is not configured to allow password change requests.

  [% ELSIF error == "passwords_dont_match" %]
    [% title = "Passwords Don't Match" %]
    The two passwords you entered did not match.

  [% ELSIF error == "password_too_short" %]
    [% title = "Password Too Short" %]
    The password must be at least
    [%+ constants.USER_PASSWORD_MIN_LENGTH FILTER html %] characters long.
    [% IF locked_user %]
      You must <a href="token.cgi?a=reqpw&amp;loginname=[% locked_user.email FILTER uri %]&amp;token=[% issue_hash_token(['reqpw']) FILTER uri %]">
      request a new password</a> in order to log in again.
    [% END %]

  [% ELSIF error == "password_not_complex" %]
    [% title = "Password Fails Requirements" %]
    [% passregex = Param('password_complexity') %]
    The password must contain at least one:
    <ul>
      [% IF passregex == 'letters_numbers_specialchars' %]
        <li>letter</li>
        <li>special character</li>
      [% ELSIF passregex.search('letters') %]
        <li>UPPERCASE letter</li>
        <li>lowercase letter</li>
      [% END %]
      [% IF passregex.search('numbers') %]
        <li>digit</li>
      [% END %]
    </ul>
    [% IF locked_user %]
      You must <a href="token.cgi?a=reqpw&amp;loginname=[% locked_user.email FILTER uri %]&amp;token=[% issue_hash_token(['reqpw']) FILTER uri %]">
      request a new password</a> in order to log in again.
    [% END %]

  [% ELSIF error == "product_access_denied" %]
    [% title = "Product Access Denied" %]
    Either the product 
    [%+ IF id.defined %]
      with the id [% id FILTER html %]
    [% ELSE %]
      '[% name FILTER html %]'
    [% END %]
    does not exist or you don't have access to it.

  [% ELSIF error == "product_illegal_group" %]
    [% title = "Illegal Group" %]
    [% group.name FILTER html %] is not an active [% terms.bug %] group
    and so you cannot edit group controls for it.

  [% ELSIF error == "product_name_already_in_use" %]
    [% title = "Product name already exists" %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products'} %]
    The product name '[% product FILTER html %]' already exists.
  
  [% ELSIF error == "product_name_diff_in_case" %]
    [% title = "Product name differs only in case" %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products'} %]
    The product name '[% product FILTER html %]' differs from existing 
    product '[% existing_product FILTER html %]' only in case.

  [% ELSIF error == "product_name_too_long" %]
    [% title = "Product name too long" %]
    The name of a product is limited to [% constants.MAX_PRODUCT_SIZE FILTER html %]
    characters. '[% name FILTER html %]' is too long ([% name.length %] characters).

  [% ELSIF error == "product_must_define_defaultmilestone" %]
    [% title = "Must define new default milestone" %]
    [% admindocslinks = {'categorization.html#products'   => 'Administering products',
                         'categorization.html#milestones' => 'About Milestones'} %]
    You must <a href="editmilestones.cgi?action=add&amp;product=[% product FILTER uri %]">
    create the milestone '[% milestone FILTER html %]'</a> before
    it can be made the default milestone for product '[% product FILTER html %]'.

  [% ELSIF error == "product_admin_denied" %]
    [% title = "Product Access Denied" %]
    You are not allowed to edit properties of product '[% product FILTER html %]'.

  [% ELSIF error == "product_blank_name" %]
    [% title = "Blank Product Name Not Allowed" %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products'} %]
    You must enter a name for the product.
  
  [% ELSIF error == "product_disabled" %]
    [% title = BLOCK %]Product closed for [% terms.Bug %] Entry[% END %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products'} %]
    Sorry, entering [% terms.abug %] into the
    product <em>[% product.name FILTER html %]</em> has been disabled.

  [% ELSIF error == "product_edit_denied" %]
    [% title = "Product Edit Access Denied" %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products',
                         'categorization.html#assigning-group-controls-to-products' => 'Group security'} %]
    You are not permitted to edit [% terms.bugs %] in product 
    [%+ product FILTER html %].

  [% ELSIF error == "product_has_bugs" %]
    [% title = BLOCK %]Product has [% terms.Bugs %][% END %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products'} %]
    There are [% nb FILTER html %] [%+ terms.bugs %] entered for this product!
    You must move those [% terms.bugs %] to another product before you
    can delete this one.

  [% ELSIF error == "product_must_have_description" %]
    [% title = "Product needs Description" %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products'} %]
    You must enter a description for this product.

  [% ELSIF error == "product_must_have_version" %]
    [% title = "Product needs Version" %]
    [% admindocslinks = {'categorization.html#products' => 'Administering products',
                         'categorization.html#versions' => 'Administering versions'} %]
    You must enter a valid version to create a new product.

  [% ELSIF error == "product_unknown_component" %]
    [% title = "Unknown Component" %]
    Product '[% product FILTER html %]' has no component
    [% IF comp_id %]
      with ID [% comp_id FILTER html %].
    [% ELSE %]
      named '[% comp FILTER html %]'.
    [% END %]

  [% ELSIF error == "query_name_missing" %]
    [% title = "No Search Name Specified" %]
    [% docslinks = {'using/finding.html#bug-lists' => "$terms.Bug lists"} %]
    You must enter a name for your search.

  [% ELSIF error == "query_name_too_long" %]
    [% title = "Query Name Too Long" %]
    The name of the query must be less than [% constants.MAX_LEN_QUERY_NAME FILTER html %]
    characters long.

  [% ELSIF error == "quicksearch_invalid_query" %]
    [% title = "Invalid Query" %]
    Your query is invalid.
    [% IF operators %]
      The [% operators.shift FILTER html %] operator cannot be followed by
      [%+ operators.shift FILTER html %].
    [% ELSE %]
      A query cannot start with AND or OR, nor can it end with AND, OR or NOT.
      They are reserved operators and must be quoted if you want to look for
      these strings.
    [% END %]

  [% ELSIF error == "quicksearch_unbalanced_quotes" %]
    [% title = "Badly Formatted Query" %]
    Bugzilla is unable to parse your query correctly:
    <em>[% string FILTER html %]</em>.<br>
    If you use quotes to enclose strings, make sure both quotes are present.
    If you really want to look for a quote in a string, type \" instead of ".
    For instance, <em>"I'm so \"special\", really"</em> (with quotes) will be
    interpreted as <em>I'm so "special", really</em>.

  [% ELSIF error == "quicksearch_unknown_field" %]
    [% title = "QuickSearch Error" %]
    There is a problem with your search:
    [% FOREACH field = unknown %]
      <p><code>[% field FILTER html %]</code> is not a valid field name.</p>
    [% END %]
    [% FOREACH field = ambiguous.keys %]
      <p><code>[% field FILTER html %]</code> matches more than one field:
        [%+ ambiguous.${field}.join(', ') FILTER html %]</p>
    [% END %]

    [% IF unknown.size %]
      <p>The legal field names are 
        <a href="page.cgi?id=quicksearch.html#fields">listed here</a>.</p>
    [% END %]

  [% ELSIF error == "quip_too_long" %]
    [% title = "Quip Too Long" %]
    You entered a quip with a length of [% length FILTER none %] characters, 
    but the maximum allowed length is [% constants.MAX_QUIP_LENGTH FILTER none %] 
    characters.

  [% ELSIF error == "reassign_to_empty" %]
    [% title = "Illegal Reassignment" %]
    To reassign [% terms.abug %], you must provide an address for
    the new assignee.

  [% ELSIF error == "report_axis_invalid" %]
    [% title = "Invalid Axis" %]
    <em>[% val FILTER html %]</em> is not a valid value for
    [%+ IF    fld == "x" %]the horizontal axis
    [%+ ELSIF fld == "y" %]the vertical axis
    [%+ ELSIF fld == "z" %]the multiple tables/images
    [%+ ELSE %]a report axis[% END %] field.

  [% ELSIF error == "report_name_missing" %]
    [% title = "No Report Name Specified" %]
    You must enter a name for your report.

  [% ELSIF error == "report_access_denied" %]
    [% title = "Report Access Denied" %]
    You cannot access this report.

  [% ELSIF error == "require_component" %]
    [% title = "Component Needed" %]
    To file this [% terms.bug %], you must first choose a component.
    If necessary, just guess.

  [% ELSIF error == "relationship_loop_single" %]
    [% title = "Relationship Loop Detected" %]
    [% field_descs.$field_name FILTER html %]
    for [% terms.bug %] [%+ bug_id FILTER html %]
    has a circular dependency on [% terms.bug %] [%+ dep_id FILTER html %].

  [% ELSIF error == "request_queue_group_invalid" %]
    The group field <em>[% group FILTER html %]</em> is invalid.

  [% ELSIF error == "require_new_password" %]
    [% title = "New Password Needed" %]
    You cannot change your password without choosing a new one.

  [% ELSIF error == "required_field" %]
    [% title = "Field Must Be Set" %]
    A value must be set for the '[% field_descs.${field.name} FILTER html %]'
    field.

  [% ELSIF error == "require_summary" %]
    [% title = "Summary Needed" %]
    You must enter a summary for this [% terms.bug %].

  [% ELSIF error == "resolution_cant_clear" %]
    [% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %] is 
    closed, so you cannot clear its resolution.

  [% ELSIF error == "resolution_not_allowed" %]
    [% title = "Resolution Not Allowed" %]
    You cannot set a resolution for open [% terms.bugs %].

  [% ELSIF error == "saved_search_used_by_whines" %]
    [% title = "Saved Search In Use" %]
    [% docslinks = {'administering/whining.html' => 'About Whining'} %]
    The saved search <em>[% search_name FILTER html %]</em> is being used 
    by <a href="editwhines.cgi">Whining events</a> with the following subjects:
    [%+ subjects FILTER html %]

  [% ELSIF error == "search_content_without_matches" %]
    [% title = "Illegal Search" %]
    The "content" field can only be used with "matches" search 
    and the "matches" search can only be used with the "content"
    field.

  [% ELSIF error == "search_grouped_field_invalid" %]
    Bugzilla does not support using the
    "[%+ field_descs.$field FILTER html %]" ([% field FILTER html %])
    field with grouped search conditions.

  [% ELSIF error == "search_grouped_invalid_nesting" %]
    You cannot nest clauses within grouped search conditions.

  [% ELSIF error == "search_grouped_field_mismatch" %]
    All conditions under a groups search must use the same field.

  [% ELSIF error == "search_field_operator_invalid" %]
    Bugzilla does not support using the
    "[%+ field_descs.$field FILTER html %]" ([% field FILTER html %])
    field with the "[% search_descs.$operator FILTER html %]" 
    ([% operator FILTER html %]) search type.

  [% ELSIF error == "see_also_self_reference" %]
    You cannot put this [% terms.bug %] into its own
    [%+ field_descs.see_also FILTER html %] field.

  [% ELSIF error == "series_already_exists" %]
    [% title = "Series Already Exists" %]
    [% docslinks = {'using/reports-and-charts.html' => 'Reporting'} %]
      A series named <em>[% series.category FILTER html %] /
      [%+ series.subcategory FILTER html %] / 
      [%+ series.name FILTER html %]</em>
      already exists.
    
  [% ELSIF error == "still_unresolved_bugs" %]
    [% title = "Unresolved Dependencies" %]
    [% IF bug_id %]
      [% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %]
    [% ELSE %]
       This [% terms.bug %]
    [% END %]
    has [% dep_count FILTER none %] unresolved
    [% IF dep_count == 1 %]
      dependency
    [% ELSE %]
      dependencies
    [% END %].
    They must either be resolved or removed from the
    "[% field_descs.dependson FILTER html %]" field before you can resolve
    this [% terms.bug %] as [% display_value("resolution", "FIXED") FILTER html %].

  [% ELSIF error == "sudo_invalid_cookie" %]
    [% title = "Invalid Sudo Cookie" %]
    Your sudo cookie is invalid. Either it expired or you didn't start
    a sudo session correctly. Refresh the page or load another page
    to continue what you are doing as yourself.

  [% ELSIF error == "sudo_illegal_action" %]
    [% title = "Impersonation Not Authorized" %]
    [% IF NOT sudoer.in_group("bz_sudoers") %]
      You are not allowed to impersonate users.
    [% ELSIF target_user AND target_user.in_group("bz_sudo_protect") %]
      You are not allowed to impersonate [% target_user.identity FILTER html %].
    [% ELSE %]
      The user you tried to impersonate doesn't exist.
    [% END %]

  [% ELSIF error == "sudo_in_progress" %]
    [% title = "Session In Progress" %]
    A sudo session (impersonating [% target FILTER html %]) is in progress.  
    End that session (using the link in the footer) before starting a new one.

  [% ELSIF error == "sudo_password_required" %]
    [% title = "Password Required" %]
    Your [% terms.Bugzilla %] password is required to begin a sudo 
    session. Please <a href="relogin.cgi?action=prepare-sudo&amp;target_login=
    [%- target_login FILTER uri %]&amp;reason=
    [%- reason FILTER uri %]">go back</a> and enter your password.
    
  [% ELSIF error == "sudo_preparation_required" %]
    [% title = "Preparation Required" %]
    You may not start a sudo session directly.  Please
    <a href="relogin.cgi?action=prepare-sudo&amp;target_login=
    [%- target_login FILTER uri %]&amp;reason=
    [%- reason FILTER uri %]">start your session normally</a>.

  [% ELSIF error == "sudo_protected" %]
    [% title = "User Protected" %]
    The user [% login FILTER html %] may not be impersonated by sudoers.

  [% ELSIF error == "tag_name_too_long" %]
    [% title = "Tag Name Too Long" %]
    The tag must be less than [% constants.MAX_LEN_QUERY_NAME FILTER html %]
    characters long.

  [% ELSIF error == "token_does_not_exist" %]
    [% title = "Token Does Not Exist" %]
    The token you submitted does not exist, has expired, or has
    been canceled.

  [% ELSIF error == "too_soon_for_new_token" %]
    [% title = "Too Soon For New Token" %]
    You have requested
    [% IF type == "password" %]
      a password
    [% ELSIF type == "account" %]
      an account
    [% END %]
    token too recently to request another. 
    Please wait [% constants.ACCOUNT_CHANGE_INTERVAL FILTER html %] minutes
    then try again.

  [% ELSIF error == "unknown_action" %]
    [% title = "Unknown Action" %]
    [% IF action %]
      Unknown action "[% action.truncate(20, "...") FILTER html %]"!
    [% ELSE %]
      I could not figure out what you wanted to do.
    [% END %]

  [% ELSIF error == "unknown_tab" %]
    [% title = "Unknown Tab" %]
    There is no tab named <code>[% current_tab_name FILTER html %]</code>.

  [% ELSIF error == "value_inactive" %]
    [% title = "Value is Not Active" %]
    [% type = BLOCK %][% INCLUDE object_name class = class %][% END %]
    The [% type FILTER html %] value '[% value FILTER html %]' is not active.

  [% ELSIF error == "version_already_exists" %]
    [% title = "Version Already Exists" %]
    [% admindocslinks = {'categorization.html#versions' => 'Administering versions'} %]
    The version '[% name FILTER html %]' already exists for product '
    [%- product FILTER html %]'.

  [% ELSIF error == "version_blank_name" %]
    [% title = "Blank Version Name Not Allowed" %]
    You must enter a name for this version.

  [% ELSIF error == "version_has_bugs" %]
    [% title = BLOCK %]Version has [% terms.Bugs %][% END %]
    There are [% nb FILTER html %] [%+ terms.bugs %] associated with this
    version! You must reassign those [% terms.bugs %] to another version
    before you can delete this one.

  [% ELSIF error == "version_is_last" %]
    [% title = BLOCK %]Last Version in this Product[% END %]
    '[% version.name FILTER html %]' is the last version of the
    '[% version.product.name FILTER html %]' product. You cannot delete it.

  [% ELSIF error == "users_deletion_disabled" %]
    [% title = "Deletion not activated" %]
    [% admindocslinks = {'users.html#deleting-users' => 'User administration'} %]
    Sorry, the deletion of user accounts is not allowed.

  [% ELSIF error == "user_has_responsibility" %]
    [% title = "Can't Delete User Account" %]
    [% admindocslinks = {'users.html#deleting-users' => 'User administration'} %]
    The user you want to delete is set up as the default [% terms.bug %]
    assignee
    [% IF Param('useqacontact') %]
      or QA contact
    [% END %]
    for at least one component.
    For this reason, you cannot delete the account at this time.

  [% ELSIF error == "user_access_by_id_denied" %]
    [% title = "User Access By Id Denied" %]
    Logged-out users cannot use the "ids" argument to this function
    to access any user information.

  [% ELSIF error == "user_access_by_match_denied" %]
    [% title = "User-Matching Denied" %]
    Logged-out users cannot use the "match" argument to this function
    to access any user information.

  [% ELSIF error == "user_login_required" %]
    [% title = "Login Name Required" %]
    [% admindocslinks = {'users.html' => 'User administration'} %]
    You must enter a login name for the new user.

  [% ELSIF error == "user_match_failed" %]
    [% title = "Match Failed" %]
    <kbd>[% name FILTER html %]</kbd> does not exist or you are not allowed
    to see that user.

  [% ELSIF error == "user_match_too_many" %]
    [% title = "No Conclusive Match" %]
    Bugzilla cannot make a conclusive match for one or more
    of the names and/or email addresses you entered for
    the [% fields.join(', ') FILTER html %] field(s).

  [% ELSIF error == "user_not_insider" %]
    [% title = "User Not In Insidergroup" %]
    Sorry, but you are not allowed to (un)mark comments or attachments
    as private.

  [% ELSIF error == "user_not_involved" %]
    [% title = "User Not Involved with $terms.Bug" %]
    Sorry, but you are not involved with [% terms.Bug %] [%+
        bug_id FILTER bug_link(bug_id) FILTER none %].

  [% ELSIF error == "webdot_too_large" %]
    [% title = "Dependency Graph Too Large" %]
    The dependency graph contains too many [% terms.bugs %] to display (more
    than [% constants.MAX_WEBDOT_BUGS FILTER html %] [%+ terms.bugs %]).

  [% ELSIF error == "wrong_token_for_cancelling_email_change" %]
    [% title = "Wrong Token" %]
    That token cannot be used to cancel an email address change.

  [% ELSIF error == "wrong_token_for_changing_passwd" %]
    [% title = "Wrong Token" %]
    That token cannot be used to change your password.

  [% ELSIF error == "wrong_token_for_confirming_email_change" %]
    [% title = "Wrong Token" %]
    That token cannot be used to change your email address.

  [% ELSIF error == "wrong_token_for_creating_account" %]
    [% title = "Wrong Token" %]
    That token cannot be used to create a user account.

  [% ELSIF error == "xmlrpc_invalid_value" %]
    "[% value FILTER html %]" is not a valid value for a
    &lt;[% type FILTER html %]&gt; field. (See the XML-RPC specification
    for details.)

  [% ELSIF error == "xmlrpc_illegal_content_type" %]
    When using XML-RPC, you cannot send data as
    [%+ content_type FILTER html %]. Allowed content types 
    are [% constants.XMLRPC_CONTENT_TYPE_WHITELIST.join(', ') FILTER html %].

  [% ELSIF error == "zero_length_file" %]
    [% title = "File Is Empty" %]
    The file you are trying to attach is empty, does not exist, or you don't
    have permission to read it.

  [% ELSIF error == "illegal_user_id" %]
    [% title = "Illegal User ID" %]
    User ID '[% userid FILTER html %]' is not valid integer.

  [% ELSIF error == "extern_id_exists" %]
    [% title = "Account Already Exists" %]
    There is already an account
    [% IF existing_login_name %]
      ([% existing_login_name FILTER html %])
    [% END %]
    with the External Login ID "[% extern_id FILTER html %]".

  [% ELSE %]

    [%# Try to find hooked error messages %]
    [% error_message = Hook.process("errors") %]

    [% IF not error_message %]
      [% title = "Error string not found" %]
      The user error string <code>[% error FILTER html %]</code> was not found.
      Please send email to [% Param("maintainer") %] describing the steps taken
      to obtain this message.
    [% ELSE %]
      [% error_message FILTER none %]
    [% END %]
  [% END %]
[% END %]

[%# We only want HTML error messages for ERROR_MODE_WEBPAGE %]
[% USE Bugzilla %]
[% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %]
  [% IF Bugzilla.usage_mode == constants.USAGE_MODE_BROWSER %]
    [% error_message FILTER none %]
  [% ELSE %]
    [% error_message FILTER txt %]
  [% END %]
  [% RETURN %]
[% END %]

[% UNLESS header_done %]
  [% PROCESS global/header.html.tmpl %]
[% END %]

[% PROCESS global/docslinks.html.tmpl
   docslinks      = docslinks
   admindocslinks = admindocslinks
%]

<div id="error_msg" class="throw_error">
  [% error_message FILTER none %]
</div>

<p id="post_err_msg">
  Please press <b>Back</b> and try again.
</p>

[%# If a saved search fails, people want the ability to edit or delete it. 
  # This is the best way of getting information about that possible saved
  # search from any error call location. %]

[% namedcmd = Bugzilla.cgi.param("namedcmd") %]
[% sharer_id = Bugzilla.cgi.param("sharer_id") %]
[% IF namedcmd AND error != "missing_query" 
               AND error != "saved_search_used_by_whines"
               AND !sharer_id %]
  <p>  
    Alternatively, you can    
    <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
                  [% namedcmd FILTER uri %]">forget</a>
                  
    [% FOREACH q = Bugzilla.user.queries %]
      [% IF q.name == namedcmd %]
        or <a href="query.cgi?[% q.url FILTER html %]">edit</a>
      [% END %]
    [% END %]
    
    the saved search '[% namedcmd FILTER html %]'.
  </p>
[% END %]            

[% PROCESS global/footer.html.tmpl %]

[% BLOCK object_name %]
  [% IF class == "Bugzilla::Attachment" %]
    attachment
  [% ELSIF class == "Bugzilla::User" %]
    user
  [% ELSIF class == "Bugzilla::Classification" %]
    classification
  [% ELSIF class == "Bugzilla::Product" %]
    product
  [% ELSIF class == "Bugzilla::Component" %]
    component
  [% ELSIF class == "Bugzilla::Version" %]
    version
  [% ELSIF class == "Bugzilla::Milestone" %]
    milestone
  [% ELSIF class == "Bugzilla::Status" %]
    status
  [% ELSIF class == "Bugzilla::Flag" %]
    flag
  [% ELSIF class == "Bugzilla::FlagType" %]
    flagtype
  [% ELSIF class == "Bugzilla::Field" %]
    field
  [% ELSIF class == "Bugzilla::Group" %]
    group
  [% ELSIF class == "Bugzilla::Keyword" %]
    keyword
  [% ELSIF class == "Bugzilla::Search::Recent" %]
    recent search
  [% ELSIF class == "Bugzilla::Search::Saved" %]
    saved search
  [% ELSIF ( matches = class.match('^Bugzilla::Field::Choice::(.+)') ) %]
    [% SET field_name = matches.0 %]
    [% field_descs.$field_name FILTER html %]
  [% END %]
  [% Hook.process('end_object_name', 'global/user-error.html.tmpl') %]
[% END %]
