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

#
# Plugin
#
plugin.name=Apache Doxia TWiki Plug-in
plugin.provider.name=Apache Maven

#
# Doxia Editor
#
editor.name=Doxia TWiki Editor

#
# Doxia Wizard
#
wizard.category.name=Apache Doxia
wizard.name=TWiki file

#
# Doxia popupMenus
#
menu.styles=&Styles

#
# Doxia Actions
#
action.bold.label=&Bold
action.bold.tooltip=Bold
action.italic.label=&Italic
action.italic.tooltip=Italic
action.monospaced.label=&Monospaced
action.monospaced.tooltip=Monospaced
action.table.label=&Table
action.table.tooltip=Table
action.link.label=&Link
action.link.tooltip=Link
