# 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.

## GenerateDTDSupport.java
MSG_use_dtd_as_document_type?=Do you want to use generated DTD as external document type?
FMT_DTDDoc=Put your DTDDoc comment here.
BK0009=Cannot proceed! The document contains syntax errors:
BK0010=An example how to use this DTD from your XML document:
# PARTIAL translate only text between TODO and first \n
# {0} dtd file name
TODO=TODO define vocabulary identification\n    PUBLIC ID: -//vendor//vocabulary//EN\n    SYSTEM ID: http://server/path/{0}

## a11y - SelectFileDialog
ACSD_fileField=n/a
ACSD_SelectFileDialog=Select File
## SelectFileDialog.java
PROP_fileNameTitle=Select File Name
PROP_fileName_mne=F
PROP_fileName=File:
# {0} - file name
# {1} - file extension
PROP_replaceMsg=File {0}.{1} already exists.\n Do you want to replace it?
# {0} - file name (including extension)
MSG_cannot_create_data=Cannot create {0}.\nSpecify a valid file name. Do not enter path to a different directory.
BK0001=Target file is modified. Save it please before reinvoking this action.
BK0002=Select

## ValidatingTextField.java
MSG_invalid=Invalid value entered.

## XMLGenerateAction.java
MSG_action_failed=Action failed due to internal error!
PROP_GenerateDTD=Generate &DTD...
PROP_GenerateSAXHandler=SAX Document Handler Wizard...
PROP_GenerateDOMScanner=Generate DOM Tree Scanner...
# ---

