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

#ifndef _DBU_MISC_HRC_
#include "dbu_misc.hrc"
#endif

Resource RSC_CHARSETS
{
	String 1
	{
	Text [ en-US ] = "System" ;
	};
};

String STR_ERROR_DURING_CREATION
{
	Text [ en-US ] = "Error during creation" ;
};

String STR_UNEXPECTED_ERROR
{
	Text [ en-US ] = "An unexpected error occurred. The operation could not be performed." ;
};

String STR_COULDNOTOPEN_LINKEDDOC
{
	Text [ en-US ] = "The document \"$file$\" could not be opened." ;
};

String STR_MISSING_TABLES_XDROP
{
	Text [ en-US ] = "The table cannot be deleted because the database connection does not support this." ;
};

String STR_BUTTON_TEXT_ALL
{
	Text [ en-US ] = "~All" ;
};

String STR_UNDO_COLON
{
	Text [ en-US ] = "Undo:" ;
};

String STR_REDO_COLON
{
	Text [ en-US ] = "Redo:" ;
};

String STR_UNKNOWN_TYPE_FOUND
{
	Text [ en-US ] = "No corresponding column type could be found for column '#1'." ;
};

String STR_FILE_DOES_NOT_EXIST
{
	Text [ en-US ] = "The file \"$file$\" does not exist." ;
};

String STR_WARNINGS_DURING_CONNECT
{
	Text [ en-US ] = "Warnings were encountered while connecting to the data source. Press \"$buttontext$\" to view them." ;
};

String STR_NAMED_OBJECT_ALREADY_EXISTS
{
	Text [ en-US ] = "The name '$#$' already exists.\nPlease enter another name." ;
};
String RID_STR_EXTENSION_NOT_PRESENT
{
	// #i96130# use hard coded name
	Text [ en-US ] = "The report, \"$file$\", requires the extension Report Builder." ;
};

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