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

object.noframe=Your user agent does not support frames or is currently configured not to display frames. However, you may visit the related document manually:
page.noscript=This site requires JavaScript, but JavaScript is currently not activated in your browser. To enable JavaScript you may consult your browsers the documentation.
sheet.ascending=Ascending
sheet.descending=Descending
sheet.first=First Page
sheet.last=Last Page
sheet.selectAll=Select all
sheet.next=Next Page
sheet.empty=No rows available
sheet.setPage=Click here, to change the displayed page
sheet.pageXtoYofZ=Page {0} of {1}
sheet.setRow=Click here, to change the first displayed row
sheet.rowXtoYofZ=Rows {0} to {1} of {2}
sheet.pageXofZ=Page {0} of {1}
sheet.rowXofZ=Row {0} of {2}
sheet.pageXtoY=Page {0}
sheet.rowXtoY=Rows {0} to {1}
sheet.pageX=Page {0}
sheet.rowX=Row {0}
sheet.prev=Previous Page
sheet.sorting=Click to sort this column
sheet.toPage=Page {0}
file.selected={} files selected
help.title=Help
date.today=Today
date.cancel=Cancel
date.clear=Clear
date.week=Week
