#	 ***************************************************************
#	 * 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.
#	 ***************************************************************
# ==============================================================================
# Messages
# ==============================================================================

PearExport.description = Export resources to a Pear file on the local file system.
PearExport.exportTitle = PEAR file
PearExport.destinationLabel = To &pear file:
PearExport.selectDestinationTitle= Export To Directory
PearFileResourceExportPage.Browse = Browse
PearFileResourceExportPage.Options=Options
PearExport.metadataRequired = The metadata folder and all it's content is required
PearFileResourceExportPage.SelectFile = Please select a Pear file
PearFileResourceExportPage.CompressContents=Compress the contents of the Pear file
PearFileResourceExportPage.FileExistsInfo=The Pear file {0} does already exist. Choose another name to avoid overwriting it.
PearFileResourceExportPage.SelectAll=Select all
PearFileResourceExportPage.DeselectAll=Deselect all
PearFileResourceExportPage.DirectorySelected = Please select a file, not a directory to export to.
