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

#
# Web Console strings for reference all strings here are commented.
# This file may be used to produce a translation of the strings
#
# Note that properties files are ISO-8859-1 encoded. To provide translations
# for languages requiring different character encodings, you may use the
# native2ascii Maven Plugin from http://mojo.codehaus.org/native2ascii-maven-plugin/
# to translate the natively encoded files to ISO-8859-1 during bundle build
#


# Common UI
reload=Reload
change=Change
abort=Abort
back=Back
id=Id
type=Type
type_s=Type(s)
bundle=Bundle
version=Version
help=Help
start=Start
stop=Stop
save=Save
reset=Reset
delete=Delete

# VMStat plugin
vmstat.stopped=Framework has been stopped.
vmstat.restarting=Framework is restarting. stand by ...
vmstat.reloading.in=Reloading in
vmstat.running=System is up and running!
vmstat.sl.title=Start Level Information:
vmstat.sl.system=System Start Level
vmstat.sl.bundle=Default Bundle Start Level
vmstat.info.title=Server Information:
vmstat.lastStarted=Last Started
vmstat.framework=Framework
vmstat.shutdown.in=Shutdown in 
vmstat.java.title=Java Information:
vmstat.java.runtime=Java Runtime
vmstat.java.jvm=Java Virtual Machine
vmstat.mem.total=Total Memory
vmstat.mem.used=Used Memory
vmstat.mem.free=Free Memory
vmstat.gc.title=Garbage Collection
vmstat.gc.button=Run

# Services plugin
services.details.hide=Hide Details
services.details.tip=Details
services.statusline=Services information: {0} service(s) in total.
services.caption=Services

# Log plugin
log.status.ok=Log Service is running.
log.status.missing=Log Service is not installed/running.
log.severity.label=Severity at least:
log.received=Received
log.level=Level
log.message=Message
log.service=Service
log.exception=Exception
log.level.error=ERROR
log.level.warn=WARN
log.level.info=INFO
log.level.debug=DEBUG

# Deployment Admin plugin
deployment.status.no_data=No deployment packages installed!
deployment.status.no_service=Deployment Admin is not installed/running!
deployment.status.ok=Deployment Admin service is running
deployment.details=Details
deployment.actions=Actions
deployment.install_update=Install or Update
deployment.package.name=Package Name
deployment.bundles=Bundles
deployment.uninstall=Uninstall

# Shell plugin
shell.clear=Clear
shell.status=Use the command prompt to execute shell commands.

# Bundles plugin
bundles.statline=Bundle information: {0} bundles in total, {1} bundles active, {2} active fragments, {3} bundles resolved, {4} bundles installed.
bundles.install_or_update=Install or Update
bundles.install_update=Install/Update...
bundles.refreshPkg=Refresh Packages
bundles.name=Name
bundles.name.symb=Symbolic Name
bundles.status=Status
bundles.actions=Actions
# bundle details
bundles.location=Bundle Location
bundles.lastMod=Last Modification
bundles.doc=Bundle Documentation
bundles.vendor=Vendor
bundles.copyright=Copyright
bundles.description=Description
bundles.startlevel=Start Level
bundles.classpath=Bundle Classpath
bundles.pkg.exported=Exported Packages
bundles.pkg.imported=Imported Packages
bundles.pkg.importingBundles=Importing Bundles
bundles.manifest.headers=Manifest Headers
bundles.hosts=Host Bundles
bundles.framents=Fragments Attached
# actions
bundles.update=Update
bundles.uninstall=Uninstall
bundles.refreshImports=Refresh Package Imports
# upload form
bundles.upload.caption=Upload / Install Bundles
bundles.upload.start=Start Bundle
bundles.upload.level=Start Level


# Components plugin
scr.status.no_service=Apache Felix Declarative Service required for this function!
scr.status.no_components=No components installed currently!
scr.status.ok=Number of installed components: {0}
scr.action.enable=Enable
scr.action.disable=Disable
scr.action.configure=Configure
scr.prop.bundle=Bundle
scr.prop.defstate=Default State
scr.prop.activation=Activation
scr.prop.properties=Properties
scr.serv.type=Service Type
scr.serv=Services
scr.title.actions=Actions
scr.title.status=Status
scr.title.name=Name


# Configuration plugin
config.status.ok=Configuration Admin Service is running.
config.status.missing=Configuration Admin Service is not installed/running.
config.properties=Properties
config.properties.enter=Enter Name-Value pairs of configuration properties
config.info.title=Configuration Information
config.info.pid=Persistent Identity (PID)
config.info.fpid=Factory Persistent Identifier (Factory PID)
config.info.binding=Configuration Binding
config.info.unbound=Unbound or new configuration 
config.unbind.btn=Unbind
config.unbind.tip=Unbind Configuration from Bundle
config.del.ask=Are you sure to delete this configuration ?
config.del.config=Configuration: 
config.del.bundle=Bundle: 
config.unbind.ask=Are you sure to unbind this configuration ?


# License plugin
license.status.ok=The following bundles contains license files.
license.status.none=No bundles with license files available
license.resources=Bundle Resources: 
license.resources.embedded=Embedded {0}: 