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

String STR_DBASE_PATH_OR_FILE
{
	Text [ en-US ] = "Path to the dBASE files" ;
};

String STR_FLAT_PATH_OR_FILE
{
	Text [ en-US ] = "Path to the text files" ;
};

String STR_CALC_PATH_OR_FILE
{
	Text [ en-US ] = "Path to the spreadsheet document" ;
};

String STR_NAME_OF_ODBC_DATASOURCE
{
	Text [ en-US ] = "Name of the ODBC data source on your system" ;
};

String STR_MYSQL_DATABASE_NAME
{
	Text [ en-US ] = "Name of the MySQL database" ;
};

String STR_ORACLE_DATABASE_NAME
{
	Text [ en-US ] = "Name of the Oracle database" ;
};

String STR_ADABAS_DATABASE_NAME
{
	Text [ en-US ] = "Name of the Adabas D database" ;
};

String STR_MSACCESS_MDB_FILE
{
	Text [ en-US ] = "Microsoft Access database file" ;
};


String STR_NO_ADDITIONAL_SETTINGS
{
	Text [ en-US ] = "No more settings are necessary. To verify that the connection is working, click the '%test' button." ;
};


String STR_COMMONURL
{
	Text [ en-US ] = "Datasource URL" ;
};

String STR_HOSTNAME
{
	Text [ en-US ] = "~Host name" ;
};
String STR_MOZILLA_PROFILE_NAME
{
	Text [ en-US ] = "~Mozilla profile name" ;
};
String STR_THUNDERBIRD_PROFILE_NAME
{
	Text [ en-US ] = "~Thunderbird profile name" ;
};

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