#**************************************************************
#  
#  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.
#  
#**************************************************************
# x-no-translate


#
#  resources.properties
#
#  resources for org.openoffice.xmerge.converter package.
#
NULL_MIME_EXCEPTION=Cannot specify null MIME types
EMPTY_MIME_EXCEPTION=Cannot specify empty MIME types
CANNOT_LOAD_CLASS=Unable to load class
CANNOT_INST_CLASS=Unable to instantiate class
NOT_AN_INSTANCE= is not an instance of
CANNOT_FIND_REGISTERED=Cannot find registered class
PARSE_ERROR=Parse Error
LINE=Line
COLUMN=Column
PUBLIC_ID=PublicId
SYSTEM_ID=SystemId
INVALID_LOG_LEVEL=Invalid log level specified
OPERATION_NOT_SUPPORTED=Operation not supported
TEMPLATE_FILE_LOAD_ERROR=Error in loading template file -

#
# diff/merge algorithm erro messages
#
EMPTY_NODE_EXCEPTION=Current Node is empty
NOT_LEAFNODE_EXCEPTION=Current Node is not a leaf node
ROOTNODE_EXCEPTION=Cannot perform insert/append/remove on root node
NOT_TEXTNODE_EXCEPTION=The target Node is not a TEXT_NODE, it is -
NULL_NODE_EXCEPTION=The initial Xmldocument node is null
CELL_NODE_EXCEPTION1=Cell node do not have only 1 child <text:p> nodes, will skip the merge of this node.Num of PARA child nodes:
CELL_NODE_EXCEPTION2=Cell node have a non Element child nodes -
CELL_NODE_EXCEPTION2=There is a child node under an expected empty cell node.
NOT_ELEM_NODE_ERROR=The compared nodes are not a Element Node
NOT_PARA_NODE_ERROR=The compared nodes are not a Paragraph or Heading node -
NOT_NODE_ERROR=The compared nodes are not a Node
#
# SXW to/from DOC conversion error messages.
#
UNKNOWN_DOC_VERSION=Unknown DOC version.
DOC_TEXT_LENGTH_EXCEEDED=DOC text length exceeds maximum value.
DOC_TEXT_RECORD_SIZE_EXCEEDED=DOC text record exceeds size limit.
