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

navbar.menu.dashboard = Dashboard
navbar.menu.statistics = Statistics
navbar.menu.instances = Instances
navbar.menu.settings = Settings
navbar.menu.crawls = Crawls
navbar.menu.scheduling = Scheduling
navbar.menu.search = Search
navbar.menu.url = URLs upload
navbar.menu.seedLists = Seed lists

page.header.seedList = Seed list

navbar.userMenu.settings = Settings
navbar.userMenu.logout = Log out

menu.settings=Settings
menu.instances=Instances

connected=Connected
disconnected=Disconnected

##ENUMS
ConnectionStatus.CONNECTING=Connecting
ConnectionStatus.CONNECTED=Connected
ConnectionStatus.DISCONNECTED=Disconnected

CrawlStatus.NEW=New
CrawlStatus.ERROR=Error
CrawlStatus.CRAWLING=Crawling
CrawlStatus.FINISHED=Finished

instances=Instances
instances.header.name=Instance name
instances.header.hostname=Hostname
instances.header.status=Status
instances.header.username=Username
instances.label.name=Instance name
instances.label.hostname=Hostname
instances.label.port=Port
instances.label.username=Username
instances.label.password=Password
instances.buttons.addInstance=Add instance

settings=Settings
settings.header.name = Name
settings.header.value = Value