
 Multi Language Custom Error Documents
 -------------------------------------

 The 'error' directory contains HTTP error messages in multiple languages.
 If the preferred language of a client is available it is selected
 automatically via the MultiViews feature. This feature is enabled
 by default via the Options, Language and ErrorDocument directives.

 You may configure the design and markup of the documents by modifying
 the HTML files in the directory 'error/include'.


 Supported Languages:
 
  +------------------+------------------------------------------+
  | Language         | Contributed by                           |
  +------------------+------------------------------------------+
  | English (en)     | Lars Eilebrecht                          |
  | German (de)      | Lars Eilebrecht                          |
  | Spanish (es)     | Karla Quintero                           |
  | French (fr)      | Cecile de Crecy                          |
  +------------------+------------------------------------------+
  (Please see http://httpd.apache.org/docs-project/ if you would
   like to contribute the pages in an additional language.)


 Copyright (c) 2001-2002 The Apache Software Foundation. All rights reserved.
