/**************************************************************
 *
 * 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 SAMPLES		1000
#define STYLES		1100
#define AgendaDlgName		1200
#define AgendaDlgNoCancel	1201
#define AgendaDlgFrame		1202
#define AgendaDlgButton1	1203
#define AgendaDlgButton2	1204
#define CorrespondenceNoTextmark	1300
#define CorrespondenceMsgError	1302
#define CorrespondenceDialog	1303
#define CorrespondenceFields    1350
#define TextField    1400
#define Newsletter    1450

// --------------------------------------------------------------------
String SAMPLES
{
	Text [ en-US ] = "In order to use the full functionality of this sample, create a document that is based on this template.";
};

String SAMPLES + 1
{
	Text [ en-US ] = "Remarks";
};

// --------------------------------------------------------------------
String STYLES
{
    Text [ en-US ] = "Theme Selection";
};

String STYLES + 1
{
    Text [ en-US ] = "Error while saving the document to the clipboard! The following action cannot be undone.";
};

String STYLES + 2
{
    Text [ en-US ] = "~Cancel";
};

String STYLES + 3
{
    Text [ en-US ] = "~OK";
};

// --------------------------------------------------------------------
String AgendaDlgName
{
    Text [ en-US ] = "Minutes Template";
};

String AgendaDlgNoCancel
{
    Text [ en-US ] = "An option must be confirmed.";
};

String AgendaDlgFrame
{
    Text [ en-US ] = "Minutes Type";
};

String AgendaDlgButton1
{
    Text [ en-US ] = "Results Minutes";
};

String AgendaDlgButton2
{
    Text [ en-US ] = "Evaluation Minutes";
};

// --------------------------------------------------------------------
String CorrespondenceNoTextmark
{
    Text [ en-US ] = "The bookmark 'Recipient' is missing.";
};

String CorrespondenceNoTextmark+1
{
    Text [ en-US ] = "Form letter fields can not be included.";
};

String CorrespondenceMsgError
{
    Text [ en-US ] = "An error has occurred.";
};

String CorrespondenceDialog
{
    Text [ en-US ] = "Addressee";
};

String CorrespondenceDialog+1
{
    Text [ en-US ] = "One recipient";
};

String CorrespondenceDialog+2
{
    Text [ en-US ] = "Several recipients (address database)";
};

String CorrespondenceDialog+3
{
    Text [ en-US ] = "Use of This Template";
};


String CorrespondenceFields
{
    Text [ en-US ] = "Click placeholder and overwrite";
};

String CorrespondenceFields+1
{
    Text [ en-US ] = "Company";
};

String CorrespondenceFields+2
{
    Text [ en-US ] = "Department";
};

String CorrespondenceFields+3
{
    Text [ en-US ] = "First Name";
};

String CorrespondenceFields+4
{
    Text [ en-US ] = "Last Name";
};

String CorrespondenceFields+5
{
    Text [ en-US ] = "Street";
};

String CorrespondenceFields+6
{
    Text [ en-US ] = "Country";
};


String CorrespondenceFields+7
{
    Text [ en-US ] = "ZIP/Postal Code";
};

String CorrespondenceFields+8
{
    Text [ en-US ] = "City";
};

String CorrespondenceFields+9
{
    Text [ en-US ] = "Title";
};


String CorrespondenceFields+10
{
    Text [ en-US ] = "Position";
};


String CorrespondenceFields+11
{
    Text [ en-US ] = "Form of Address";
};


String CorrespondenceFields+12
{
    Text [ en-US ] = "Initials";
};


String CorrespondenceFields+13
{
    Text [ en-US ] = "Salutation";
};


String CorrespondenceFields+14
{
    Text [ en-US ] = "Home Phone";
};


String CorrespondenceFields+15
{
    Text [ en-US ] = "Work Phone";
};


String CorrespondenceFields+16
{
    Text [ en-US ] = "Fax";
};


String CorrespondenceFields+17
{
    Text [ en-US ] = "E-Mail";
};


String CorrespondenceFields+18
{
    Text [ en-US ] = "URL";
};


String CorrespondenceFields+19
{
    Text [ en-US ] = "Notes";
};


String CorrespondenceFields+20
{
    Text [ en-US ] = "Alt. Field 1";
};


String CorrespondenceFields+21
{
    Text [ en-US ] = "Alt. Field 2";
};


String CorrespondenceFields+22
{
    Text [ en-US ] = "Alt. Field 3";
};


String CorrespondenceFields+23
{
    Text [ en-US ] = "Alt. Field 4";
};


String CorrespondenceFields+24
{
    Text [ en-US ] = "ID";
};


String CorrespondenceFields+25
{
    Text [ en-US ] = "State";
};


String CorrespondenceFields+26
{
    Text [ en-US ] = "Office Phone";
};


String CorrespondenceFields+27
{
    Text [ en-US ] = "Pager";
};


String CorrespondenceFields+28
{
    Text [ en-US ] = "Mobile Phone";
};


String CorrespondenceFields+29
{
    Text [ en-US ] = "Other Phone";
};

String CorrespondenceFields+30
{
    Text [ en-US ] = "Calendar URL";
};

String CorrespondenceFields+31
{
    Text [ en-US ] = "Invite";
};


String TextField
{
    Text [ en-US ] = "User data field is not defined!";

};

String Newsletter
{
    Text [ en-US ] = "General layout";
};


String Newsletter + 1
{
    Text [ en-US ] = "Default layout";
};

String Newsletter + 2
{
    Text [ en-US ] = "Commemorative publication layout";
};

String Newsletter + 3
{
    Text [ en-US ] = "Brochure layout";
};

String Newsletter + 10
{
    Text [ en-US ] = "Format";
};

String Newsletter + 11
{
    Text [ en-US ] = "Single-sided";
};

String Newsletter + 12
{
    Text [ en-US ] = "Double-sided";
};
