# *************************************************************
#  
#  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.
#  
# *************************************************************
# Filesystems API
# {0} - root path
# x-no-translate
LAB_invalid_file_system=invalid OpenOffice.org document {0}
# {0} - root path
LAB_valid_file_system={0}
# {0} - root path
EXC_root_dir_does_not_exist=Root directory {0} does not exist.
# {0} - original name before annotation
LBL_modified_files={0} <somehow annotated>
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_file_could_not_be_locked={2} could not be locked; it did not exist or was not writable.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_create_empty_name=Cannot create a file with an empty name.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_folder_already_exists=Folder {2} already exists.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_folder_could_not_be_created=Folder {2} could not be created.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_file_could_not_be_created=File {2} could not be created.
# {0} - old file name and extension
# {1} - new file name and extension
# {2} - display name of filesystem
# {3} - full path to old file
# {4} - full path to new file
EXC_file_could_not_be_renamed=File {3} could not be renamed to {4}.
# {0} - file name and extension
# {1} - display name of filesystem
# {2} - full path to file
EXC_file_could_not_be_deleted=File {2} could not be deleted.
PROP_readOnly=Read Only
HINT_readOnly=Whether this filesystem should be writable, or read-only.
PROP_document=OpenOffice.org Document
HINT_document=OpenOffice.org Document (mount point) of this filesystem.
