/**************************************************************
 * 
 * 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";
};

