/**************************************************************
 *
 * 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 _FRM_RESOURCE_HRC_
#include "frm_resource.hrc"
#endif

String RID_BASELISTBOX_ERROR_FILLLIST
{
	Text [ en-US ] = "The contents of a combo box or list field could not be determined.";
};

String RID_STR_IMPORT_GRAPHIC
{
	Text [ en-US ] = "Insert graphics" ;
};

String RID_STR_CONTROL_SUBSTITUTED_NAME
{
	Text [ en-US ] = "substituted";
};

String RID_STR_CONTROL_SUBSTITUTED_EPXPLAIN
{
	Text [ en-US ] = "An error occurred while this control was being loaded. It was therefore replaced with a placeholder.";
};

String RID_STR_READERROR
{
	Text [ en-US ] = "Error reading data from database" ;
};

String RID_STR_CONNECTERROR
{
	Text [ en-US ] = "Connection failed" ;
};

String RID_ERR_LOADING_FORM
{
	Text [ en-US ] = "The data content could not be loaded.";
};

String RID_ERR_REFRESHING_FORM
{
	Text [ en-US ] = "The data content could not be updated";
};

String RID_STR_ERR_INSERTRECORD
{
	Text [ en-US ] = "Error inserting the new record";
};

String RID_STR_ERR_UPDATERECORD
{
	Text [ en-US ] = "Error updating the current record";
};

String RID_STR_ERR_DELETERECORD
{
	Text [ en-US ] = "Error deleting the current record";
};

String RID_STR_ERR_DELETERECORDS
{
	Text [ en-US ] = "Error deleting the specified records";
};

String RID_STR_NEED_NON_NULL_OBJECT
{
	Text [ en-US ] = "The object cannot be NULL.";
};

String RID_STR_OPEN_GRAPHICS
{
	Text [ en-US ] = "Insert graphics from...";
};

String RID_STR_CLEAR_GRAPHICS
{
	Text [ en-US ] = "Remove graphics";
};


String RID_STR_INVALIDSTREAM
{
    Text [ en-US ] = "The given stream is invalid.";
};

String RID_STR_SYNTAXERROR
{
	Text [ en-US ] = "Syntax error in query expression" ;
};

String RID_STR_INCOMPATIBLE_TYPES
{
    Text [ en-US ] = "The value types supported by the binding cannot be used for exchanging data with this control.";
};

String RID_STR_LABEL_RECORD
{
    Text [ en-US ] = "Record";
};

String RID_STR_INVALID_VALIDATOR
{
    Text [ en-US ] = "The control is connected to an external value binding, which at the same time acts as validator. You need to revoke the value binding, before you can set a new validator.";
};

String RID_STR_LABEL_OF
{
    Text [ en-US ] = "of";
};

String RID_STR_QUERY_SAVE_MODIFIED_ROW
{
	Text [ en-US ] = "The content of the current form has been modified.\nDo you want to save your changes?";
};
String RID_STR_COULD_NOT_SET_ORDER
{
	Text [ en-US ] = "Error setting the sort criteria";
};
String RID_STR_COULD_NOT_SET_FILTER
{
	Text [ en-US ] = "Error setting the filter criteria";
};
String RID_STR_FEATURE_REQUIRES_PARAMETERS
{
    Text [ en-US ] = "To execute this function, parameters are needed.";
};
String RID_STR_FEATURE_NOT_EXECUTABLE
{
    Text [ en-US ] = "This function cannot be executed, but is only for status queries.";
};
String RID_STR_FEATURE_UNKNOWN
{
    Text [ en-US ] = "Unknown function.";
};
