# 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 Fml Plug-in
plugin.provider.name=Apache Maven

#
# Doxia Editor
#
editor.name=Doxia FML Editor

#
# Doxia Wizard
#
wizard.category.name=Apache Doxia
wizard.name=Fml 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