
 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                           |
  +-----------------------+------------------------------------------+
  | Brazilian (pt-br)     | Ricardo Leite                            |
  | Czech (cs)            | Marcel Kolaja                            |
  | Dutch (nl)            | Peter Van Biesen                         |
  | English (en)          | Lars Eilebrecht                          |
  | French (fr)           | Cecile de Crecy                          |
  | German (de)           | Lars Eilebrecht                          |
  | Italian (it)          | Luigi Rosa                               |
  | Japanese (ja)         | TAKAHASHI Makoto                         |
  | Korean (ko)           | Jaeho Shin                               |
  | Norwegian Bokmål (nb) | Tom Fredrik Klaussen                     |
  | Polish (pl)           | Tomasz Kepczynski                        |
  | Romanian (ro)         | Andrei Besleaga                          |
  | Serbian (sr)          | Nikola Smolenski                         |
  | Spanish (es)          | Karla Quintero                           |
  | Swedish (sv)          | Thomas Sjögren                           |
  | Turkish (tr)          | Emre Sokullu & Nilgün Belma Bugüner      |
  | Irish (ga)            | Noirin Shirley                           |
  +-----------------------+------------------------------------------+
  (Please see http://httpd.apache.org/docs-project/ if you would
   like to contribute the pages in an additional language.)

