<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<!-- $Id$ -->
<catalogue xml:lang="en">
  <message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message>
  <message key="imageNotFound">Image not found.[ URI: {uri}.]{{locator}}</message>
  <message key="imageError">Image not available.[ URI: {uri}.] Reason:[ {reason}][ {e}]{{locator}}</message>
  <message key="imageWarning">Image warning.[ URI: {uri}.] Reason:[ {message}][ {e}]{{locator}}</message>
  <message key="imageIOError">I/O error while loading image.[ URI: {uri}.][ Reason: {ioe}]{{locator}}</message>
  <message key="ifoNoIntrinsicSize">The intrinsic dimensions of an instream-foreign-object could not be determined.{{locator}}</message>
  <message key="uriError">Error while handling URI: {uri}. Reason: {e}{{locator}}</message>
  <message key="foreignXMLProcessingError">Some XML content will be ignored. Could not render XML in namespace "{namespaceURI}".[ Reason: {e}]</message>
  <message key="foreignXMLNoHandler">Some XML content will be ignored. No handler defined for XML with namespace "{namespaceURI}".</message>
  <message key="imageWritingError">Error while writing an image to the target file.[ Reason: {e}]</message>
  <message key="cannotDeleteTempFile">Temporary file could not be deleted: {tempFile}</message>
  <message key="catalogResolverNotFound">Catalog resolver not found along the classpath</message>
  <message key="catalogResolverNotCreated">Error creating the catalog resolver: {message}</message>
</catalogue>
