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

LBL_loaderName=Struts Config Loader
LBL_StrutsCatalog=Struts Catalog
DESC_StrutsCatalog=XML Catalog for Struts Configuration 1.0, Struts Configuration 1.1 and Struts Configuration 1.2.


TEXT_SAVE_AS_UTF=Selected encoding {0} is not supported. Save it as UTF-8?


Sruts_Name=Struts 1.3.10
Sruts_Description=Struts support

# Changing jsp index page
LBL_STRUTS_WELCOME_PAGE=Struts Welcome Page

#Message for invalid xml file
TXT_errorMessage={0} [{1},{2}]
MSG_invalidXmlWarning=There were errors found while validating XML document.\nSave anyway?
TTL_invalidXmlWarning=Invalid XML File

MSG_OverwriteFile=The file {0} already exists.\nWould you like to replace it?\n\nIf you replace the existing file, its contents will be overwritten. 
TTL_OverwriteFile=The file already exists

# {0} = name of file
# {1} = the bad encoding
# {2} = the encoding for reading or saving
MSG_BadEncodingDuringSave=<html>The "<b>{1}</b>" character set that is used in {0} is not a valid character set.<br> Do you want to save the file using the {2} character set?</html> 

# {0} = name of file
# {1} = the bad encoding
MSG_BadCharConversion=<html>The {0} contains characters which will probably be damaged during conversion to the {1} character set.<br> Do you want to save the file using this character set?</html>

WARN_UnknownDeploymentDescriptorText=<html>Project contains unknown version or unparsable deployment descriptor which was not recognized.<br> You have to do Struts registration into web.xml manually.</html>