/**************************************************************
 *
 * 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 <sfx2/sfx.hrc>

#include "doc.hrc"

StringArray TEMPLATE_SHORT_NAMES_ARY
{
	ItemList =
	{
		< "standard" ;	> ;
		< "officorr" ;	> ;
		< "offimisc" ;	> ;
		< "personal" ;	> ;
		< "forms" ;		> ;
		< "finance" ;	> ;
		< "educate" ;	> ;
		< "layout" ;	> ;
		< "presnt" ;	> ;
		< "misc" ;		> ;
	};
};

StringArray TEMPLATE_LONG_NAMES_ARY
{
	ItemList [ en-US ] =
	{
		< "My Templates" ;							> ;
		< "Business Correspondence" ;				> ;
		< "Other Business Documents" ;				> ;
		< "Personal Correspondence and Documents" ;	> ;
		< "Forms and Contracts" ;					> ;
		< "Finances" ;								> ;
		< "Education" ;								> ;
		< "Presentation Backgrounds" ;				> ;
		< "Presentations" ;							> ;
		< "Miscellaneous" ;							> ;
	};
};

String RID_CNT_STR_WAITING
{
	Text [ en-US ] = "The templates are being initialized for first-time usage." ;
};

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