/**************************************************************
 *
 * 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 <svtools/sores.hxx>

String STR_FORMAT_STRING
{
	Text [ en-US ] = "Unformatted text" ;
};
String STR_FORMAT_BITMAP
{
	Text [ en-US ] = "Bitmap" ;
};
String STR_FORMAT_GDIMETAFILE
{
	Text [ en-US ] = "GDI metafile" ;
};
String STR_FORMAT_RTF
{
	Text [ en-US ] = "Formatted text [RTF]" ;
};
String STR_FORMAT_ID_DRAWING
{
	Text [ en-US ] = "Drawing format" ;
};
String STR_FORMAT_ID_SVXB
{
	Text [ en-US ] = "SVXB (StarView bitmap/animation)" ;
};
String STR_FORMAT_ID_INTERNALLINK_STATE
{
	Text [ en-US ] = "Status Info from Svx Internal Link" ;
};
String STR_FORMAT_ID_SOLK
{
	Text [ en-US ] = "SOLK (%PRODUCTNAME Link)" ;
};
String STR_FORMAT_ID_NETSCAPE_BOOKMARK
{
	Text [ en-US ] = "Netscape Bookmark" ;
};
String STR_FORMAT_ID_STARSERVER
{
	Text [ en-US ] = "Star server format" ;
};
String STR_FORMAT_ID_STAROBJECT
{
	Text [ en-US ] = "Star object format" ;
};
String STR_FORMAT_ID_APPLETOBJECT
{
	Text [ en-US ] = "Applet object" ;
};
String STR_FORMAT_ID_PLUGIN_OBJECT
{
	Text [ en-US ] = "Plug-in object" ;
};
String STR_FORMAT_ID_STARWRITER_30
{
	Text [ en-US ] = "StarWriter 3.0 object" ;
};
String STR_FORMAT_ID_STARWRITER_40
{
	Text [ en-US ] = "StarWriter 4.0 object" ;
};
String STR_FORMAT_ID_STARWRITER_50
{
	Text [ en-US ] = "StarWriter 5.0 object" ;
};
String STR_FORMAT_ID_STARWRITERWEB_40
{
	Text [ en-US ] = "StarWriter/Web 4.0 object" ;
};
String STR_FORMAT_ID_STARWRITERWEB_50
{
	Text [ en-US ] = "StarWriter/Web 5.0 object" ;
};
String STR_FORMAT_ID_STARWRITERGLOB_40
{
	Text [ en-US ] = "StarWriter/Master 4.0 object" ;
};
String STR_FORMAT_ID_STARWRITERGLOB_50
{
	Text [ en-US ] = "StarWriter/Master 5.0 object" ;
};
String STR_FORMAT_ID_STARDRAW
{
	Text [ en-US ] = "StarDraw object" ;
};
String STR_FORMAT_ID_STARDRAW_40
{
	Text [ en-US ] = "StarDraw 4.0 object" ;
};
String STR_FORMAT_ID_STARIMPRESS_50
{
	Text [ en-US ] = "StarImpress 5.0 object" ;
};
String STR_FORMAT_ID_STARDRAW_50
{
	Text [ en-US ] = "StarDraw 5.0 object" ;
};
String STR_FORMAT_ID_STARCALC
{
	Text [ en-US ] = "StarCalc object" ;
};
String STR_FORMAT_ID_STARCALC_40
{
	Text [ en-US ] = "StarCalc 4.0 object" ;
};
String STR_FORMAT_ID_STARCALC_50
{
	Text [ en-US ] = "StarCalc 5.0 object" ;
};
String STR_FORMAT_ID_STARCHART
{
	Text [ en-US ] = "StarChart object" ;
};
String STR_FORMAT_ID_STARCHART_40
{
	Text [ en-US ] = "StarChart 4.0 object" ;
};
String STR_FORMAT_ID_STARCHART_50
{
	Text [ en-US ] = "StarChart 5.0 object" ;
};
String STR_FORMAT_ID_STARIMAGE
{
	Text [ en-US ] = "StarImage object" ;
};
String STR_FORMAT_ID_STARIMAGE_40
{
	Text [ en-US ] = "StarImage 4.0 object" ;
};
String STR_FORMAT_ID_STARIMAGE_50
{
	Text [ en-US ] = "StarImage 5.0 object" ;
};
String STR_FORMAT_ID_STARMATH
{
	Text [ en-US ] = "StarMath object" ;
};
String STR_FORMAT_ID_STARMATH_40
{
	Text [ en-US ] = "StarMath 4.0 object" ;
};
String STR_FORMAT_ID_STARMATH_50
{
	Text [ en-US ] = "StarMath 5.0 object" ;
};
String STR_FORMAT_ID_STAROBJECT_PAINTDOC
{
	Text [ en-US ] = "StarObject Paint object" ;
};
String STR_FORMAT_ID_HTML
{
	Text [ en-US ] = "HTML (HyperText Markup Language)" ;
};
String STR_FORMAT_ID_HTML_SIMPLE
{
	Text [ en-US ] = "HTML format" ;
};
String STR_FORMAT_ID_BIFF_5
{
	Text [ en-US ] = "Biff5 (Microsoft Excel 5.0/95)" ;
};
String STR_FORMAT_ID_BIFF_8
{
	Text [ en-US ] = "Biff8 (Microsoft Excel 97/2000/XP)" ;
};
String STR_FORMAT_ID_SYLK
{
	Text [ en-US ] = "Sylk" ;
};
String STR_FORMAT_ID_LINK
{
	Text [ en-US ] = "DDE link" ;
};
String STR_FORMAT_ID_DIF
{
	Text [ en-US ] = "DIF" ;
};
String STR_FORMAT_ID_MSWORD_DOC
{
	Text [ en-US ] = "Microsoft Word object" ;
};
String STR_FORMAT_ID_STAR_FRAMESET_DOC
{
	Text [ en-US ] = "StarFrameSet object" ;
};
String STR_FORMAT_ID_OFFICE_DOC
{
	Text [ en-US ] = "Office document object" ;
};
String STR_FORMAT_ID_NOTES_DOCINFO
{
	Text [ en-US ] = "Notes document info" ;
};
String STR_FORMAT_ID_SFX_DOC
{
	Text [ en-US ] = "Sfx document" ;
};
String STR_FORMAT_ID_STARCHARTDOCUMENT_50
{
	Text [ en-US ] = "StarChart 5.0 object" ;
};
String STR_FORMAT_ID_GRAPHOBJ
{
	Text [ en-US ] = "Graphic object" ;
};
String STR_FORMAT_ID_STARWRITER_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Writer object" ;
};
String STR_FORMAT_ID_STARWRITERWEB_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Writer/Web object" ;
};
String STR_FORMAT_ID_STARWRITERGLOB_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Writer/Master object" ;
};
String STR_FORMAT_ID_STARDRAW_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Draw object" ;
};
String STR_FORMAT_ID_STARIMPRESS_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Impress object" ;
};
String STR_FORMAT_ID_STARCALC_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Calc object" ;
};
String STR_FORMAT_ID_STARCHART_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Chart object" ;
};
String STR_FORMAT_ID_STARMATH_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION Math object" ;
};
String STR_FORMAT_ID_WMF
{
	Text [ en-US ] = "Windows metafile" ;
};
String STR_FORMAT_ID_DBACCESS_QUERY
{
	Text [ en-US ] = "Data source object" ;
};
String STR_FORMAT_ID_DBACCESS_TABLE
{
	Text [ en-US ] = "Data source table" ;
};
String STR_FORMAT_ID_DBACCESS_COMMAND
{
	Text [ en-US ] = "SQL query" ;
};
String STR_FORMAT_ID_DIALOG_60
{
	Text [ en-US ] = "%PRODUCTXMLFILEFORMATNAME %PRODUCTXMLFILEFORMATVERSION dialog" ;
};
String STR_FORMAT_ID_FILEGRPDESCRIPTOR
{
	Text [ en-US ] = "Link" ;
};
String STR_FORMAT_ID_HTML_NO_COMMENT
{
	Text [ en-US ] = "HTML format without comments" ;
};

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