#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
#
# Translations requiring non-ISO-8859-1 encoding are placed in the
# src/main/native2ascii/OSGI-INF/l10n folder and are converted using said
# plugin while building the bundle
#


# Common UI
reload=Reload
change=Change
abort=Cancel
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
refresh=Refresh

# VMStat plugin
vmstat.pluginTitle=System Information
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.upTime=Uptime
vmstat.upTime.format.days=days
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.processors=Number of Processors
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.pluginTitle=Services
services.details.hide=Hide Details
services.details.tip=Details
services.statusline=Services information: {0} service(s) in total.
services.caption=Services
services.usingBundles=Using Bundles
services.info.name=Used Services
services.info.descr=This is a OSGi service that is used by the current bundle. Click to see more details in 'Services' plugin.
services.info.key=Service #{0} of type(s) {1}

# Log plugin
logs.pluginTitle=Log Service
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
log.traces=Exception details:
log.traces.full=Full Trace
log.traces.min=Message Only


# Bundles plugin
bundles.pluginTitle=Bundles
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.category=Category
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
# filter
bundles.filter.apply=Apply Filter
bundles.filter.clear=Clear Filter
bundles.filter.help=A string or RegExp expression which is matched againse bundle id, name, symbolic name or version. In case 'Filter All' is used, the value must be a valid LDAP string.
bundles.filter.ldap=Filter All
bundles.filter.ldap.tip=When clicked, a server-side matching is performed agains *all* bundle manifest headers. The expression is expected to be a valid OSGi Filter
# states
bundles.state.1=Uninstalled
bundles.state.2=Installed
bundles.state.4=Resolved
bundles.state.8=Starting
bundles.state.16=Stopping
bundles.state.32=Active
bundles.state.unknown=Unknown State: {0}
bundles.state.fragment=Fragment
# action error
bundles.error.title=Error while executing bundle operation!


# Configuration plugin
configMgr.pluginTitle=Configuration
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 ?
config.factories.title=Factory Configurations
config.configurations.title=Configurations
config.create.tip=Create new factory configuration
config.edit.tip=Edit the configuration values
config.title.actions=Actions
config.title.bundle=Bundle
config.title.name=Name
config.bind.error=Error: the PID "{0}" is bound to "{1}" but the actual managed service is registered from "{2}" bundle

# License plugin
licenses.pluginTitle=Licenses
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}: 

# Configuration Status plugin
configStatus.pluginTitle=Configuration Status
configStatus.wait=Please wait...
configStatus.wait.msg=Loading...

# 404 plugin not found
404=\
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="refresh" content="3;URL={0}" />\
<title>404 Not Found</title>\
</head><body>\
<p>The requested page was not found. If you are not forwarded in 3 seconds to the Web Console, please click <a href="{0}">here</a></p>\
</body></html>


# localized configuration meta-data
metadata.name=Apache Felix OSGi Management Console
metadata.description=Configuration of the Apache Felix OSGi Management Console.

metadata.manager.root.name=Root URI
metadata.manager.root.description=The root path to the OSGi Management Console.

metadata.http.service.filter.name=Http Service Selector
metadata.http.service.filter.description=\
 The Http Service Selector is an OSGi filter used to select the Http Service to\
 which the Web Console binds. The value of this property (if not empty) is\
 combined the object class selection term to get the actual service selection\
 filter like (&(objectClass=org.osgi.service.http.HttpService)(selector)). This\
 property must not have leading an trailing parentheses. For example, to bind\
 to the service with service ID 15 set the selector to 'service.id=15' (without\
 the quotes). By default (if this property is not set or set to an empty\
 string) the Web Console binds with any Http Service available.

metadata.default.render.name=Default Page
metadata.default.render.description=The name of the default configuration page when invoking the OSGi Management console.

metadata.realm.name=Realm
metadata.realm.description=The name of the HTTP Authentication Realm.

metadata.username.name=User Name
metadata.username.description=The name of the user allowed to access the OSGi \
 Management Console. To disable authentication clear this value. This property \
 is ignored if a WebConsoleSecurityProvider is used for authentication.

metadata.password.name=Password
metadata.password.description=The password for the user allowed to access the \
 OSGi Management Console. This property is ignored if a \
 WebConsoleSecurityProvider is used for authentication.

metadata.category.name=Default Category
metadata.category.description=The default category (menu label) to be used \
 for plugins not registered with a felix.webconsole.category service \
 property or overwriting the AbstractWebConsole.getCategory() method. The \
 default value is "Main".

metadata.plugins.name=Plugins
metadata.plugins.description=Select active plugins

metadata.loglevel.name=Log Level
metadata.loglevel.description=Logging Level

metadata.locale.name=Locale
metadata.locale.description=If set, this locale forces the localization to use this locale instead of the one requested by the web browser

# https://issues.apache.org/jira/browse/FELIX-3491
bundles.success.title=Success
bundles.success.text=Operation completed succesfully.
