/**************************************************************
 *
 * 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 "minimizer.hrc"

Bitmap IMAGE_MINIMIZER_ROADMAP
{
    File = "minimizer/minimizepresi_80.png";
};

Bitmap IMAGE_MINIMIZER_ROADMAP_HC
{
    File = "minimizer/minimizepresi_80_h.png";
};

String STR_PRESENTATION_MINIMIZER
{
   Text[ en-US ] = "Presentation Minimizer";
};

String STR_INFO_DIALOG
{
   Text[ en-US ] = "Presentation Minimizer - Result";
};

String STR_STEPS
{
   Text[ en-US ] = "Steps";
};

String STR_HELP
{
   Text[ en-US ] = "~Help";
};

String STR_BACK
{
   Text[ en-US ] = "< ~Back";
};

String STR_NEXT
{
   Text[ en-US ] = "~Next >";
};

String STR_FINISH
{
   Text[ en-US ] = "~Finish";
};

String STR_CANCEL
{
   Text[ en-US ] = "Cancel";
};

String STR_INTRODUCTION
{
   Text[ en-US ] = "Introduction";
};

String STR_INTRODUCTION_T
{
   Text[ en-US ] = "The Presentation Minimizer is used to reduce the "
        "file size of the current presentation. Images will be compressed and "
        "data, that is no longer needed, will be removed.\n"
        "At the last step of the wizard you can choose to apply the changes "
        "to the current presentation or to create an optimized new version of"
        " the presentation.";
};

String STR_CHOSE_SETTINGS
{
   Text[ en-US ] = "~Choose settings for Presentation Minimizer";
};

String STR_REMOVE
{
   Text[ en-US ] = "~Delete";
};

String STR_GRAPHIC_OPTIMIZATION
{
   Text[ en-US ] = "Choose settings for optimizing pictures and graphics";
};

String STR_IMAGE_OPTIMIZATION
{
   Text[ en-US ] = "Graphics";
};

String STR_LOSSLESS_COMPRESSION
{
   Text[ en-US ] = "~Lossless compression";
};

String STR_JPEG_COMPRESSION
{
   Text[ en-US ] = "~JPEG compression";
};

String STR_QUALITY
{
   Text[ en-US ] = "~Quality in %";
};

String STR_REMOVE_CROP_AREA
{
   Text[ en-US ] = "~Delete cropped graphic areas";
};

String STR_IMAGE_RESOLUTION
{
   Text[ en-US ] = "Reduce ~image resolution";
};

String STR_IMAGE_RESOLUTION_0
{
   Text[ en-US ] = "<no change>";
};

String STR_IMAGE_RESOLUTION_1
{
   Text[ en-US ] = "90;90 DPI (screen resolution)";
};

String STR_IMAGE_RESOLUTION_2
{
   Text[ en-US ] = "150;150 DPI (projector resolution)";
};

String STR_IMAGE_RESOLUTION_3
{
   Text[ en-US ] = "300;300 DPI (print resolution)";
};

String STR_EMBED_LINKED_GRAPHICS
{
   Text[ en-US ] = "~Break links to external graphics";
};

String STR_OLE_OBJECTS
{
   Text[ en-US ] = "OLE Objects";
};

String STR_OLE_OPTIMIZATION
{
   Text[ en-US ] = "Choose settings for replacing OLE objects";
};

String STR_OLE_REPLACE
{
   Text[ en-US ] = "Create static replacement graphics for OLE objects";
};

String STR_ALL_OLE_OBJECTS
{
   Text[ en-US ] = "For ~all OLE objects";
};

String STR_ALIEN_OLE_OBJECTS_ONLY
{
   Text[ en-US ] = "~For OLE objects not based on OpenDocument format";
};

String STR_OLE_OBJECTS_DESC
{
   Text[ en-US ] = "Object Linking and Embedding (OLE) is a technology that "
        "allows embedding and linking to documents and other objects.\n"
        "The current presentation contains OLE objects.";
};

String STR_NO_OLE_OBJECTS_DESC
{
   Text[ en-US ] = "Object Linking and Embedding (OLE) is a technology that "
        "allows embedding and linking to documents and other objects.\n"
        "The current presentation contains no OLE objects.";
};

String STR_SLIDES
{
   Text[ en-US ] = "Slides";
};

String STR_CHOOSE_SLIDES
{
   Text[ en-US ] = "Choose which slides to delete";
};

String STR_MASTER_PAGES
{
   Text[ en-US ] = "Master Pages";
};

String STR_DELETE_MASTER_PAGES
{
   Text[ en-US ] = "Delete unused ~master pages";
};

String STR_DELETE_NOTES_PAGES
{
   Text[ en-US ] = "~Clear notes";
};

String STR_DELETE_HIDDEN_SLIDES
{
   Text[ en-US ] = "Delete hidden ~slides";
};

String STR_CUSTOM_SHOW
{
   Text[ en-US ] = "Delete slides that are not used for the ~custom slide show";
};

String STR_SUMMARY
{
   Text[ en-US ] = "Summary";
};

String STR_SUMMARY_TITLE
{
   Text[ en-US ] = "Choose where to apply the following changes";
};

String STR_PROGRESS
{
   Text[ en-US ] = "Progress";
};

String STR_OBJECTS_OPTIMIZED
{
   Text[ en-US ] = "Objects optimized";
};

String STR_APPLY_TO_CURRENT
{
   Text[ en-US ] = "~Apply changes to current presentation";
};

String STR_AUTOMATICALLY_OPEN
{
   Text[ en-US ] = "~Open newly created presentation";
};

String STR_SAVE_SETTINGS
{
   Text[ en-US ] = "~Save settings as";
};

String STR_SAVE_AS
{
   Text[ en-US ] = "~Duplicate presentation before applying changes";
};

String STR_DELETE_SLIDES
{
   Text[ en-US ] = "Delete %SLIDES slides.";
};

String STR_OPTIMIZE_IMAGES
{
   Text[ en-US ] = "Optimize %IMAGES graphics to %QUALITY% JPEG quality at %RESOLUTION DPI.";
};

String STR_CREATE_REPLACEMENT
{
   Text[ en-US ] = "Create replacement graphics for %OLE objects.";
};

String STR_CURRENT_FILESIZE
{
   Text[ en-US ] = "Current file size:";
};

String STR_ESTIMATED_FILESIZE
{
   Text[ en-US ] = "Estimated new file size:";
};

String STR_MB
{
   Text[ en-US ] = "%1 MB";
};

String STR_MY_SETTINGS
{
   Text[ en-US ] = "My Settings ";
};

String STR_DEFAULT_SESSION
{
   Text[ en-US ] = "default session";
};

String STR_MODIFY_WARNING
{
   Text[ en-US ] = "The optimization will modify the current document. "
                    "Do you want to continue?";
};

String STR_YES
{
   Text[ en-US ] = "~Yes";
};

String STR_OK
{
   Text[ en-US ] = "OK";
};

String STR_INFO_1
{
   Text[ en-US ] = "The Presentation Minimizer has successfully updated the "
        "presentation '%TITLE'. The file size has changed "
        "from %OLDFILESIZE MB to %NEWFILESIZE MB.";
};

String STR_INFO_2
{
   Text[ en-US ] = "The Presentation Minimizer has successfully updated the "
        "presentation '%TITLE'. The file size has changed "
        "from %OLDFILESIZE MB to approximated %NEWFILESIZE MB.";
};

String STR_INFO_3
{
   Text[ en-US ] = "The Presentation Minimizer has successfully updated the "
        "presentation '%TITLE'. The file size has changed to %NEWFILESIZE MB.";
};

String STR_INFO_4
{
   Text[ en-US ] = "The Presentation Minimizer has successfully updated the "
        "presentation '%TITLE'. "
        "The file size has changed to approximated %NEWFILESIZE MB.";
};

String STR_DUPLICATING_PRESENTATION
{
   Text[ en-US ] = "Duplicating presentation...";
};

String STR_DELETING_SLIDES
{
   Text[ en-US ] = "Deleting slides...";
};

String STR_OPTIMIZING_GRAPHICS
{
   Text[ en-US ] = "Optimizing graphics...";
};

String STR_CREATING_OLE_REPLACEMENTS
{
   Text[ en-US ] = "Creating replacement graphics for OLE objects...";
};

String STR_FILESIZESEPARATOR
{
   Text[ en-US ] = ".";
};
