/**************************************************************
 *
 * 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 "svx/fmresids.hrc"
/* Strings for translation */
String RID_ERR_CONTEXT_ADDFORM
{
	Text [ en-US ] = "Error while creating form" ;
};
String RID_ERR_FIELDREQUIRED
{
	Text [ en-US ] = "Input required in field '#'. Please enter a value." ;
};
String RID_ERR_DUPLICATE_NAME
{
	Text [ en-US ] = "Entry already exists.\nPlease choose another name." ;
};
String RID_STR_FORMS
{
	Text [ en-US ] = "Forms" ;
};
String RID_STR_NO_PROPERTIES
{
	Text [ en-US ] = "No control selected" ;
};
String RID_STR_PROPERTIES_CONTROL
{
	Text [ en-US ] = "Properties: " ;
};
String RID_STR_PROPERTIES_FORM
{
	Text [ en-US ] = "Form Properties" ;
};
String RID_STR_FMEXPLORER
{
	Text [ en-US ] = "Form Navigator" ;
};
String RID_STR_FORM
{
	Text [ en-US ] = "Form" ;
};
Resource RID_RSC_TABWIN_PREFIX
{
	String 1
	{
		Text [ en-US ] = "Table" ;
	};
	String 2
	{
		Text [ en-US ] = "Query" ;
	};
	String 3
	{
		Text [ en-US ] = "SQL" ;
	};
};
String RID_STR_FORMSHELL
{
	Text = "Form Shell" ;
};
String RID_STR_STDFORMNAME
{
	Text [ en-US ]= "Form" ;
};
String RID_STR_PROPTITLE_HIDDEN
{
	Text [ en-US ] = "Hidden Control" ;
};
String RID_STR_CONTROL
{
	Text [ en-US ] = "Control" ;
};
String RID_STR_REC_TEXT
{
	Text [ en-US ] = "Record" ;
};
String RID_STR_REC_FROM_TEXT
{
	Text [ en-US ] = "of" ;
};
String RID_STR_FIELDSELECTION
{
	Text [ en-US ] = "Add field:" ;
};
String RID_STR_WRITEERROR
{
	Text [ en-US ] = "Error writing data to database" ;
};

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

String RID_STR_DELETECONFIRM_RECORD
{
	Text [ en-US ] = "You intend to delete 1 record." ;
};
String RID_STR_DELETECONFIRM_RECORDS
{
	Text [ en-US ] = "# records will be deleted." ;
};
String RID_STR_DELETECONFIRM
{
	Text [ en-US ] = "If you click Yes, you won't be able to undo this operation.\nDo you want to continue anyway?" ;
};

String RID_ERR_NO_ELEMENT
{
	Text [ en-US ] = "Choose an entry from the list or enter a text corresponding to one of the list items." ;
};
String RID_STR_GROUPBOX
{
	Text [ en-US ] = "Frame element" ;
};
String RID_STR_NAVIGATION
{
	Text [ en-US ] = "Navigation" ;
};
String RID_STR_NAVIGATIONBAR
{
	Text [ en-US ] = "Navigation bar" ;
};
String RID_STR_COLUMN
{
	Text [ en-US ] = "Col" ;
};
String RID_STR_UNDO_PROPERTY
{
	Text [ en-US ] = "Set property '#'" ;
};
String RID_STR_UNDO_CONTAINER_INSERT
{
	Text [ en-US ] = "Insert in container" ;
};
String RID_STR_UNDO_CONTAINER_REMOVE
{
	Text [ en-US ] = "Delete #" ;
};
String RID_STR_UNDO_CONTAINER_REMOVE_MULTIPLE
{
	Text [ en-US ] = "Delete # objects" ;
};
String RID_STR_UNDO_CONTAINER_REPLACE
{
	Text [ en-US ] = "Replace a container element" ;
};
String RID_STR_UNDO_DELETE_LOGICAL
{
	Text [ en-US ] = "Delete structure" ;
};
String RID_STR_UNDO_MODEL_REPLACE
{
	Text [ en-US ] = "Replace Control" ;
};
String RID_STR_DATE
{
	Text [ en-US ] = "Date" ;
};
String RID_STR_TIME
{
	Text [ en-US ] = "Time" ;
};
String RID_STR_PROPTITLE_PUSHBUTTON
{
	Text [ en-US ] = "Push Button" ;
};
String RID_STR_PROPTITLE_RADIOBUTTON
{
	Text [ en-US ] = "Option Button" ;
};
String RID_STR_PROPTITLE_CHECKBOX
{
	Text [ en-US ] = "Check Box" ;
};
String RID_STR_PROPTITLE_FIXEDTEXT
{
	Text [ en-US ] = "Label Field" ;
};
String RID_STR_PROPTITLE_GROUPBOX
{
	Text [ en-US ] = "Group Box" ;
};
String RID_STR_PROPTITLE_EDIT
{
	Text [ en-US ] = "Text Box" ;
};
String RID_STR_PROPTITLE_FORMATTED
{
	Text [ en-US ] = "Formatted Field" ;
};
String RID_STR_PROPTITLE_LISTBOX
{
	Text [ en-US ] = "List Box" ;
};
String RID_STR_PROPTITLE_COMBOBOX
{
	Text [ en-US ] = "Combo Box" ;
};
String RID_STR_PROPTITLE_IMAGEBUTTON
{
	Text [ en-US ] = "Image Button" ;
};
String RID_STR_PROPTITLE_IMAGECONTROL
{
	Text [ en-US ] = "Image Control" ;
};
String RID_STR_PROPTITLE_FILECONTROL
{
	Text [ en-US ] = "File Selection" ;
};
String RID_STR_PROPTITLE_DATEFIELD
{
	Text [ en-US ] = "Date Field" ;
};
String RID_STR_PROPTITLE_TIMEFIELD
{
	Text [ en-US ] = "Time Field" ;
};
String RID_STR_PROPTITLE_NUMERICFIELD
{
	Text [ en-US ] = "Numeric Field" ;
};
String RID_STR_PROPTITLE_CURRENCYFIELD
{
	Text [ en-US ] = "Currency Field" ;
};
String RID_STR_PROPTITLE_PATTERNFIELD
{
	Text [ en-US ] = "Pattern Field" ;
};
String RID_STR_PROPTITLE_DBGRID
{
	Text [ en-US ] = "Table Control" ;
};
String RID_STR_PROPTITLE_SCROLLBAR
{
	Text [ en-US ] = "Scrollbar" ;
};
String RID_STR_PROPTITLE_SPINBUTTON
{
	Text [ en-US ] = "Spin Button" ;
};
String RID_STR_PROPTITLE_NAVBAR
{
	Text [ en-US ] = "Navigation Bar" ;
};
String RID_STR_PROPTITLE_MULTISELECT
{
	Text [ en-US ] = "Multiselection" ;
};
String RID_STR_NODATACONTROLS
{
	Text [ en-US ] = "No data-related controls in the current form!" ;
};
String RID_STR_POSTFIX_DATE
{
	Text [ en-US ] = " (Date)" ;
};
String RID_STR_POSTFIX_TIME
{
	Text [ en-US ] = " (Time)" ;
};
String RID_STR_FILTER_NAVIGATOR
{
	Text [ en-US ] = "Filter navigator" ;
};

String RID_STR_FILTER_FILTER_FOR
{
	Text [ en-US ] = "Filter for" ;
};

String RID_STR_FILTER_FILTER_OR
{
	Text [ en-US ] = "Or" ;
};

String RID_STR_NOCONTROLS_FOR_EXTERNALDISPLAY
{
	Text [ en-US ] = "Valid bound controls which can be used in the table view do not exist in the current form." ;
};
String RID_STR_AUTOFIELD
{
	Text [ en-US ] = "<AutoField>" ;
};

QueryBox RID_QRY_SAVEMODIFIED
{
	Buttons = WB_YES_NO_CANCEL ;
	DefButton = WB_DEF_YES ;
	Message [ en-US ] = "The content of the current form has been modified.\nDo you want to save your changes?" ;
};
Resource RID_RSC_SQL_INTERNATIONAL
{
	String 1
	{
		Text [ en-US ] = "LIKE" ;
	};
	String 2
	{
		Text [ en-US ] = "NOT" ;
	};
	String 3
	{
		Text [ en-US ] = "EMPTY" ;
	};
	String 4
	{
		Text [ en-US ] = "TRUE" ;
	};
	String 5
	{
		Text [ en-US ] = "FALSE" ;
	};
	String 6
	{
		Text [ en-US ] = "IS" ;
	};
	String 7
	{
		Text [ en-US ] = "BETWEEN" ;
	};
	String 8
	{
		Text [ en-US ] = "OR" ;
	};
	String 9
	{
		Text [ en-US ] = "AND" ;
	};
	String 10
	{
		Text [ en-US ] = "Average" ;
	};
	String 11
	{
		Text [ en-US ] = "Count" ;
	};
	String 12
	{
		Text [ en-US ] = "Maximum" ;
	};
	String 13
	{
		Text [ en-US ] = "Minimum" ;
	};
	String 14
	{
		Text [ en-US ] = "Sum" ;
	};
	String 15
	{
		Text [ en-US ] = "Every" ;
	};
	String 16
	{
		Text [ en-US ] = "Any" ;
	};
	String 17
	{
		Text [ en-US ] = "Some" ;
	};
	String 18
	{
		Text [ en-US ] = "STDDEV_POP" ;
	};
	String 19
	{
		Text [ en-US ] = "STDDEV_SAMP" ;
	};
	String 20
	{
		Text [ en-US ] = "VAR_SAMP" ;
	};
	String 21
	{
		Text [ en-US ] = "VAR_POP" ;
	};
	String 22
	{
		Text [ en-US ] = "Collect" ;
	};
	String 23
	{
		Text [ en-US ] = "Fusion" ;
	};
	String 24
	{
		Text [ en-US ] = "Intersection" ;
	};
};

String RID_STR_SVT_SQL_SYNTAX_ERROR
{
	Text [ en-US ] = "Syntax error in SQL statement" ;
};

String RID_STR_SVT_SQL_SYNTAX_VALUE_NO_LIKE
{
	Text [ en-US ] = "The value #1 cannot be used with LIKE." ;
};

String RID_STR_SVT_SQL_SYNTAX_FIELD_NO_LIKE
{
	Text [ en-US ] = "LIKE cannot be used with this field." ;
};

String RID_STR_SVT_SQL_SYNTAX_ACCESS_DAT_NO_VALID
{
	Text [ en-US ] = "The value entered is not a valid date. Please enter a date in a valid format, for example, MM/DD/YY." ;
};

String RID_STR_SVT_SQL_SYNTAX_INT_NO_VALID
{
	Text [ en-US ] = "The field cannot be compared with an integer." ;
};
String RID_STR_SVT_SQL_SYNTAX_TABLE
{
	Text [ en-US ] = "The database does not contain a table named \"#\"." ;
};
String RID_STR_SVT_SQL_SYNTAX_TABLE_OR_QUERY
{
	Text [ en-US ] = "The database does contain neither a table nor a query named \"#\"." ;
};
String RID_STR_SVT_SQL_SYNTAX_TABLE_EXISTS
{
	Text [ en-US ] = "The database already contains a table or view with name \"#\"." ;
};
String RID_STR_SVT_SQL_SYNTAX_QUERY_EXISTS
{
	Text [ en-US ] = "The database already contains a query with name \"#\"." ;
};
String RID_STR_SVT_SQL_SYNTAX_COLUMN
{
	Text [ en-US ] = "The column \"#1\" is unknown in the table \"#2\"." ;
};
String RID_STR_SVT_SQL_SYNTAX_REAL_NO_VALID
{
	Text [ en-US ] = "The field cannot be compared with a floating point number." ;
};

String RID_STR_SVT_SQL_SYNTAX_CRIT_NO_COMPARE
{
	Text [ en-US ] = "The entered criterion cannot be compared with this field." ;
};

String RID_STR_DATANAVIGATOR
{
	Text [ en-US ] = "Data Navigator" ;
};

String RID_STR_READONLY_VIEW
{
	Text [ en-US ] = " (read-only)" ;
};

String RID_STR_ALREADYEXISTOVERWRITE
{
	Text [ en-US ] = "The file already exists. Overwrite?" ;
};
String RID_STR_OBJECT_LABEL
{
	Text [ en-US ] = "#object# label" ;
};

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