/*
 * Help Viewer
 *
 * Copyright 1996 Ulrich Schmid
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

/* This file is not yet complete !! */

#define LANGUAGE_ID                  It
#define LANGUAGE_NUMBER              9

/* Menu */

#define MENU_FILE                    "&File"
#define MENU_FILE_OPEN               "&Apri..."
#define MENU_FILE_PRINT              "s&tampa"
#define MENU_FILE_PRINTER_SETUP      "&Setup stampante..."
#define MENU_FILE_EXIT               "&Esci"

#define MENU_EDIT                    "&Modifica"
#define MENU_EDIT_COPY_DIALOG        "&Copia..."
#define MENU_EDIT_ANNOTATE           "&Annota..."

#define MENU_BOOKMARK                "&Segnalibro"
#define MENU_BOOKMARK_DEFINE         "&Definisci..."

#define MENU_HELP                    "&?"
#define MENU_HELP_ON_HELP            "&Aiuto sulla guida"
#define MENU_HELP_ON_TOP             "Sempre in primo &piano"
#define MENU_HELP_INFO               "&Informazioni su..."
#define MENU_HELP_ABOUT_WINE         "&Informazion su WINE"

/* Strings */

#define STRING_WINE_HELP             "Guida di WINE"
#define STRING_ERROR                 "ERRORE"
#define STRING_WARNING               "ATTENZIONE"
#define STRING_INFO                  "Informazione"
#define STRING_NOT_IMPLEMENTED       "Non ancora implementato"
#define STRING_HLPFILE_ERROR_s       "Errore di lettura HelpFile `%s'"
#define STRING_CONTENTS              "&Sommario"
#define STRING_SEARCH                "&Ricerca"
#define STRING_BACK                  "&Precedente"
#define STRING_HISTORY               "&Indice"
#define STRING_ALL_FILES             "Tutti i file (*.*)"
#define STRING_HELP_FILES_HLP        "HelpFiles (*.hlp)"

#include "Xx.rc"
