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

#define _FLDUI_SRC
#include "index.hrc"
#include "fldui.hrc"
#include "helpid.h"

/*--------------------------------------------------------------------
	Beschreibung: Strings fuer die Types
 --------------------------------------------------------------------*/
String STR_FLD_EDIT_DLG
{
	Text [ en-US ] = "Edit Fields" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Strings fuer die Types
 --------------------------------------------------------------------*/

// Bereich Dokument

String STR_DATEFLD
{
	Text [ en-US ] = "Date" ;
};
String STR_TIMEFLD
{
	Text [ en-US ] = "Time" ;
};
String STR_FILENAMEFLD
{
	Text [ en-US ] = "File name" ;
};
String STR_DBNAMEFLD
{
	Text [ en-US ] = "Database Name" ;
};
String STR_CHAPTERFLD
{
	Text [ en-US ] = "Chapter" ;
};
String STR_PAGENUMBERFLD
{
	Text [ en-US ] = "Page numbers" ;
};
String STR_DOCSTATFLD
{
	Text [ en-US ] = "Statistics" ;
};
String STR_AUTHORFLD
{
	Text [ en-US ] = "Author" ;
};
String STR_TEMPLNAMEFLD
{
	Text [ en-US ] = "Templates" ;
};
String STR_EXTUSERFLD
{
	Text [ en-US ] = "Sender" ;
};
//
// Bereich Funktionen
//
String STR_SETFLD
{
	Text [ en-US ] = "Set variable" ;
};
String STR_GETFLD
{
	Text [ en-US ] = "Show variable" ;
};
String STR_FORMELFLD
{
	Text [ en-US ] = "Insert Formula" ;
};
String STR_INPUTFLD
{
	Text [ en-US ] = "Input field" ;
};
String STR_SETINPUTFLD
{
	Text [ en-US ] = "Input field (variable)" ;
};
String STR_USRINPUTFLD
{
	Text [ en-US ] = "Input field (user)" ;
};
String STR_CONDTXTFLD
{
	Text [ en-US ] = "Conditional text" ;
};
String STR_DDEFLD
{
	Text [ en-US ] = "DDE field" ;
};
String STR_MACROFLD
{
	Text [ en-US ] = "Execute macro" ;
};
String STR_SEQFLD
{
	Text [ en-US ] = "Number range" ;
};
String STR_SETREFPAGEFLD
{
	Text [ en-US ] = "Set page variable" ;
};
String STR_GETREFPAGEFLD
{
	Text [ en-US ] = "Show page variable" ;
};
String STR_INTERNETFLD
{
	Text [ en-US ] = "Load URL" ;
};
String STR_JUMPEDITFLD
{
	Text [ en-US ] = "Placeholder" ;
};
String STR_COMBINED_CHARS
{
	Text [ en-US ] = "Combine characters" ;
};
String STR_DROPDOWN
{
	Text [ en-US ] = "Input list" ;
};
//
// Bereich Referenzen
//
String STR_SETREFFLD
{
	Text [ en-US ] = "Set Reference" ;
};
String STR_GETREFFLD
{
	Text [ en-US ] = "Insert Reference" ;
};
//
// Bereich Datenbank
//
String STR_DBFLD
{
	Text [ en-US ] = "Mail merge fields" ;
};
String STR_DBNEXTSETFLD
{
	Text [ en-US ] = "Next record" ;
};
String STR_DBNUMSETFLD
{
	Text [ en-US ] = "Any record" ;
};
String STR_DBSETNUMBERFLD
{
	Text [ en-US ] = "Record number" ;
};
String STR_PREVPAGEFLD
{
	Text [ en-US ] = "Previous page" ;
};
String STR_NEXTPAGEFLD
{
	Text [ en-US ] = "Next page" ;
};
String STR_HIDDENTXTFLD
{
	Text [ en-US ] = "Hidden text" ;
};
//
// Bereich Benutzerfelder
//
String STR_USERFLD
{
	Text [ en-US ] = "User Field" ;
};
String STR_POSTITFLD
{
	Text [ en-US ] = "Note" ;
};
String STR_SCRIPTFLD
{
	Text [ en-US ] = "Script" ;
};
String STR_AUTHORITY
{
	Text [ en-US ] = "Bibliography entry" ;
};
String STR_HIDDENPARAFLD
{
	Text [ en-US ] = "Hidden Paragraph" ;
};
//
// Bereich DokumentInfo
//
String STR_DOCINFOFLD
{
	Text [ en-US ] = "DocInformation" ;
};
/*--------------------------------------------------------------------
	Beschreibung: SubCmd-Strings
 --------------------------------------------------------------------*/
String FLD_DATE_STD
{
	Text [ en-US ] = "Date" ;
};
String FLD_DATE_FIX
{
	Text [ en-US ] = "Date (fixed)" ;
};
String FLD_TIME_STD
{
	Text [ en-US ] = "Time" ;
};
String FLD_TIME_FIX
{
	Text [ en-US ] = "Time (fixed)" ;
};
//
// SubCmd Statistik
//
String FLD_STAT_TABLE
{
	Text [ en-US ] = "Tables" ;
};
String FLD_STAT_CHAR
{
	Text [ en-US ] = "Characters" ;
};
String FLD_STAT_WORD
{
	Text [ en-US ] = "Words" ;
};
String FLD_STAT_PARA
{
	Text [ en-US ] = "Paragraphs" ;
};
String FLD_STAT_GRF
{
	Text [ en-US ] = "Graphics" ;
};
String FLD_STAT_OBJ
{
	Text [ en-US ] = "Objects" ;
};
String FLD_STAT_PAGE
{
	Text [ en-US ] = "Pages" ;
};
// SubCmd DDETypen
//
String FMT_DDE_HOT
{
	Text [ en-US ] = "DDE automatic" ;
};
String FMT_DDE_NORMAL
{
	Text [ en-US ] = "DDE manual" ;
};
String FLD_INPUT_TEXT
{
	Text = "[Text]" ;
};
/*--------------------------------------------------------------------
	Beschreibung: SubType Extuser
 --------------------------------------------------------------------*/
String FLD_EU_FIRMA
{
	Text [ en-US ] = "Company" ;
};
String FLD_EU_VORNAME
{
	Text [ en-US ] = "First Name" ;
};
String FLD_EU_NAME
{
	Text [ en-US ] = "Last Name" ;
};
String FLD_EU_ABK
{
	Text [ en-US ] = "Initials" ;
};
String FLD_EU_STRASSE
{
	Text [ en-US ] = "Street" ;
};
String FLD_EU_LAND
{
	Text [ en-US ] = "Country" ;
};
String FLD_EU_PLZ
{
	Text [ en-US ] = "Zip code" ;
};
String FLD_EU_ORT
{
	Text [ en-US ] = "City" ;
};
String FLD_EU_TITEL
{
	Text [ en-US ] = "Title" ;
};
String FLD_EU_POS
{
	Text [ en-US ] = "Position" ;
};
String FLD_EU_TELPRIV
{
	Text [ en-US ] = "Tel. (Home)" ;
};
String FLD_EU_TELFIRMA
{
	Text [ en-US ] = "Tel. (Work)" ;
};
String FLD_EU_FAX
{
	Text [ en-US ] = "Fax" ;
};
String FLD_EU_EMAIL
{
	Text [ en-US ] = "E-mail" ;
};
String FLD_EU_STATE
{
	Text [ en-US ] = "State" ;
};
String FLD_PAGEREF_OFF
{
	Text [ en-US ] = "off" ;
};
String FLD_PAGEREF_ON
{
	Text [ en-US ] = "on" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Pfadname
 --------------------------------------------------------------------*/
// Formate FileName
String FMT_FF_NAME
{
	Text [ en-US ] = "File name" ;
};
String FMT_FF_NAME_NOEXT
{
	Text [ en-US ] = "File name without extension" ;
};
String FMT_FF_PATHNAME
{
	Text [ en-US ] = "Path/File name" ;
};
String FMT_FF_PATH
{
	Text [ en-US ] = "Path" ;
};
String FMT_FF_UI_NAME
{
	Text [ en-US ] = "Style" ;
};
String FMT_FF_UI_RANGE
{
	Text [ en-US ] = "Category" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Format Kapitel
 --------------------------------------------------------------------*/
String FMT_CHAPTER_NAME
{
	Text [ en-US ] = "Chapter name" ;
};
String FMT_CHAPTER_NO
{
	Text [ en-US ] = "Chapter number" ;
};
String FMT_CHAPTER_NO_NOSEPARATOR
{
	Text [ en-US ] = "Chapter number without separator" ;
};
String FMT_CHAPTER_NAMENO
{
	Text [ en-US ] = "Chapter number and name" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Formate
 --------------------------------------------------------------------*/
String FMT_NUM_ABC
{
	Text = "A B C" ;
};
String FMT_NUM_SABC
{
	Text = "a b c" ;
};
String FMT_NUM_ABC_N
{
	Text = "A .. AA .. AAA" ;
};
String FMT_NUM_SABC_N
{
	Text = "a .. aa .. aaa" ;
};
String FMT_NUM_ROMAN
{
	Text [ en-US ] = "Roman (I II III)" ;
};
String FMT_NUM_SROMAN
{
	Text [ en-US ] = "Roman (i ii iii)" ;
};
String FMT_NUM_ARABIC
{
	Text [ en-US ] = "Arabic (1 2 3)" ;
};
String FMT_NUM_PAGEDESC
{
	Text [ en-US ] = "As Page Style" ;
};
String FMT_NUM_PAGESPECIAL
{
	Text [ en-US ] = "Text" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Author
 --------------------------------------------------------------------*/
String FMT_AUTHOR_NAME
{
	Text [ en-US ] = "Name" ;
};
String FMT_AUTHOR_SCUT
{
	Text [ en-US ] = "Initials" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Varibale setzen
 --------------------------------------------------------------------*/
String FMT_SETVAR_SYS
{
	Text [ en-US ] = "System" ;
};
String FMT_SETVAR_TEXT
{
	Text [ en-US ] = "Text" ;
};
String FMT_GETVAR_NAME
{
	Text [ en-US ] = "Name" ;
};
String FMT_GETVAR_TEXT
{
	Text [ en-US ] = "Text" ;
};
String FMT_USERVAR_CMD
{
	Text [ en-US ] = "Formula" ;
};
String FMT_USERVAR_TEXT
{
	Text [ en-US ] = "Text" ;
};
String FMT_DBFLD_DB
{
	Text [ en-US ] = "Database" ;
};
String FMT_DBFLD_SYS
{
	Text [ en-US ] = "System" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Ablagefelder
 --------------------------------------------------------------------*/
String FMT_REG_AUTHOR
{
	Text [ en-US ] = "Author" ;
};
String FMT_REG_TIME
{
	Text [ en-US ] = "Time" ;
};
String FMT_REG_DATE
{
	Text [ en-US ] = "Date" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Formate Referenzen
 --------------------------------------------------------------------*/
String FMT_REF_TEXT
{
	Text [ en-US ] = "Reference" ;
};
String FMT_REF_PAGE
{
	Text [ en-US ] = "Page" ;
};
String FMT_REF_CHAPTER
{
	Text [ en-US ] = "Chapter" ;
};
String FMT_REF_UPDOWN
{
	Text [ en-US ] = "Above/Below" ;
};
String FMT_REF_PAGE_PGDSC
{
	Text [ en-US ] = "As Page Style" ;
};
String FMT_REF_ONLYNUMBER
{
	Text [ en-US ] = "Category and Number" ;
};
String FMT_REF_ONLYCAPTION
{
	Text [ en-US ] = "Caption Text" ;
};
String FMT_REF_ONLYSEQNO
{
	Text [ en-US ] = "Numbering" ;
};
String FMT_REF_NUMBER
{
	Text [ en-US ] = "Number" ;
};
String FMT_REF_NUMBER_NO_CONTEXT
{
	Text [ en-US ] = "Number (no context)" ;
};
String FMT_REF_NUMBER_FULL_CONTEXT
{
	Text [ en-US ] = "Number (full context)" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Platzhalter
 --------------------------------------------------------------------*/
String FMT_MARK_TEXT
{
	Text [ en-US ] = "Text" ;
};
String FMT_MARK_TABLE
{
	Text [ en-US ] = "Table" ;
};
String FMT_MARK_FRAME
{
	Text [ en-US ] = "Frame" ;
};
String FMT_MARK_GRAFIC
{
	Text [ en-US ] = "Graphics" ;
};
String FMT_MARK_OLE
{
	Text [ en-US ] = "Object" ;
};
/*--------------------------------------------------------------------
	Beschreibung: Nur-Text
 --------------------------------------------------------------------*/
String FMT_TEXT
{
	Text = "Text" ;
};
/*--------------------------------------------------------------------
	Beschreibung: globale String-Ressourcen
 --------------------------------------------------------------------*/
String STR_ALL
{
	Text [ en-US ] = "All" ;
};
String STR_INSERT
{
	Text [ en-US ] = "Insert" ;
};
/*--------------------------------------------------------------------
	Beschreibung: AustauschStrings fuer Edit/NameFT
 --------------------------------------------------------------------*/
String STR_COND
{
	Text [ en-US ] = "~Condition" ;
};
String STR_TEXT
{
	Text [ en-US ] = "Then, Else" ;
};
String STR_DDE_CMD
{
	Text [ en-US ] = "DDE Statement" ;
};
String STR_INSTEXT
{
	Text [ en-US ] = "Hidden t~ext" ;
};
String STR_MACNAME
{
	Text [ en-US ] = "~Macro name" ;
};
String STR_PROMPT
{
	Text [ en-US ] = "~Reference" ;
};
String STR_COMBCHRS_FT
{
	Text [ en-US ] = "Ch~aracters" ;
};
String STR_SETNO
{
	Text [ en-US ] = "Record number" ;
};
String STR_OFFSET
{
	Text [ en-US ] = "O~ffset" ;
};
String STR_VALUE
{
	Text [ en-US ] = "Value" ;
};
String STR_FORMULA
{
	Text [ en-US ] = "Formula" ;
};
String STR_URLPROMPT
{
	Text [ en-US ] = "~URL" ;
};
String STR_ALL_DATABASE
{
	Text [ en-US ] = "<All>" ;
};
ImageButton BTN_FLDEDT_PREV
{
	Pos = MAP_APPFONT ( 263, 115 ) ;
	Size = MAP_APPFONT ( 24, 14 ) ;
	TabStop = TRUE ;
	SYMBOL = IMAGEBUTTON_PREV ;
	Helpid = HID_DLG_FLDEDT_PREV ;
};
ImageButton BTN_FLDEDT_NEXT
{
	Pos = MAP_APPFONT ( 294, 115 ) ;
	Size = MAP_APPFONT ( 24, 14 ) ;
	TabStop = TRUE ;
	SYMBOL = IMAGEBUTTON_NEXT ;
	Helpid = HID_DLG_FLDEDT_NEXT ;
};
PushButton PB_FLDEDT_ADDRESS
{
	Pos = MAP_APPFONT ( 294, 100 ) ;
	Size = MAP_APPFONT ( 24, 14 ) ;
	TabStop = TRUE ;
	Hide = TRUE ;
	Text [ en-US ] = "Edit" ;
	Helpid = HID_DLG_FLDEDT_ADDRESS ;
};
String STR_CUSTOM
{
	Text [ en-US ] = "Custom" ;
};

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