/**************************************************************
 *
 * 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.
 *
 *************************************************************/



#include "menu.hrc"
#include <sfx2/sfxcommands.h>

String STR_MENU_CFGITEM
{
	Text [ en-US ] = "Configuration Menu" ;
};

String STR_MENU_ADDONS
{
	Text [ en-US ] = "~Add-Ons" ;
};

Menu MN_CLIPBOARDFUNCS
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_CUT ;
			HelpID = CMD_SID_CUT ;
			Text [ en-US ] = "Cu~t" ;
		};
		MenuItem
		{
			Identifier = SID_COPY ;
			HelpID = CMD_SID_COPY ;
			Text [ en-US ] = "~Copy" ;
		};
		MenuItem
		{
			Identifier = SID_PASTE ;
			HelpID = CMD_SID_PASTE ;
			Text [ en-US ] = "~Paste" ;
		};
	};
};

String SID_WIN_FULLSCREEN
{
	Text [ en-US ] = "Leave Full-Screen Mode" ;
};

String STR_MENU_ADDONHELP
{
	Text [ en-US ] = "Add-~On Help" ;
};

String STR_MENU_SYNONYMS
{
	Text [ en-US ] = "Synonyms" ;
};

String STR_MENU_NO_SYNONYM_FOUND
{
	Text [ en-US ] = "(none)" ;
};

String STR_MENU_THESAURUS
{
	Text [ en-US ] = "~Thesaurus..." ;
};

// ******************************************************************* EOF
