/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
 * Other names may be trademarks of their respective owners.
 *
 * The contents of this file are subject to the terms of either the GNU General
 * Public License Version 2 only ("GPL") or the Common Development and Distribution
 * License("CDDL") (collectively, the "License"). You may not use this file except in
 * compliance with the License. You can obtain a copy of the License at
 * http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
 * License for the specific language governing permissions and limitations under the
 * License.  When distributing the software, include this License Header Notice in
 * each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP.  Oracle
 * designates this particular file as subject to the "Classpath" exception as
 * provided by Oracle in the GPL Version 2 section of the License file that
 * accompanied this code. If applicable, add the following below the License Header,
 * with the fields enclosed by brackets [] replaced by your own identifying
 * information: "Portions Copyrighted [year] [name of copyright owner]"
 * 
 * Contributor(s):
 * 
 * The Original Software is NetBeans. The Initial Developer of the Original Software
 * is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
 * Rights Reserved.
 * 
 * If you wish your version of this file to be governed by only the CDDL or only the
 * GPL Version 2, indicate your decision by adding "[Contributor] elects to include
 * this software in this distribution under the [CDDL or GPL Version 2] license." If
 * you do not indicate a single choice of license, a recipient has the option to
 * distribute your version of this file under either the CDDL, the GPL Version 2 or
 * to extend the choice of license to its licensees as provided above. However, if
 * you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
 * the option applies only if the new code is made subject to such option by the
 * copyright holder.
 */

var BUNDLED_SERVERS_GROUP_NAME = "Server&nbsp;inclusi";
                                                   
var NETBEANS_DOWNLOAD_BUNDLES_MSG = "Il download di NetBeans IDE comprende";
var NETBEANS_DOWNLOAD_BUNDLES_COMMUNITY_MSG = "Download dei pacchetti di NetBeans IDE nei linguaggi forniti dalla comunit\u00e0";
var NETBEANS_PACKS_MSG 		  = "Tecnologie&nbsp;supportate";

var JDK_DOWNLOAD_LINK    = "http://java.sun.com/javase/downloads/index.jsp";
var NBJDK_DOWNLOAD_LINK  = "http://java.sun.com/javase/downloads/netbeans.html"

var JAVA_COM_LINK        = "http://java.com/";

//var JDK_NOTE_ALL      = "Si richiedono Java 6 o Java 5 per l'installazione e l'esecuzione dei pacchetti PHP, Ruby e C/C++ di NetBeans. Puoi scaricare l'<a href=\"{0}\">ultima versione di Java a java.com</a>.<br><br>Il JDK 6 o JDK 5 sono richiesti per l'installazione ed esecuzione di Java SE, JavaFX, Java e di tutti i pacchetti di NetBeans. Puoi scaricare <a href=\"{1}\">il JDK da solo</a> oppure scaricare l'ultimo <a href=\"{2}\">JDK con il pacchetto Java SE di NetBeans IDE</a>.<br><br>";
var JDK_NOTE_ALL      = "\u00c8 richiesto Java 6 per installare ed eseguire i pacchetti PHP e C/C++ di NetBeans. Puoi scaricare l''<a href=\"{0}\">ultima versione di Java da java.com</a><br><br>\u00c8 richiesto JDK 6 per installare ed eseguire Java SE, Java EE e tutti i pacchetti NetBeans. Puoi scaricare <a href=\"{1}\">il JDK da solo</a> oppure scaricare l''ultimo <a href=\"{2}\">JDK con il pacchetto Java SE di NetBeans IDE</a>.<br><br>";

//var JDK_NOTE_MACOSX   = "Si richiede JDK 5.0 per installare ed eseguire NetBeans IDE.";
var JDK_NOTE_MACOSX   = "";

var FREE_SIZE_MESSAGE  = "Libero,&nbsp;{0}&nbsp;MB";
var NOT_AVAILABLE_SIZE = "--";

var NOTE_PREFIX    = "Attenzione: ";
var NOTE_AND_SEP   = "{0} e {1}";
var NOTE_COMMA_SEP = "{0}, {1}";

var SINGLE_NOT_AVAILABLE_ZIP      = "{0} non \u00e8 disponibile in {1}";
var SINGLE_NOT_AVAILABLE_BUNDLE   = "{0} non \u00e8 disponibil per {1}";
var MULTIPLE_NOT_AVAILABLE_ZIP    = "{0} non sono disponibili in {1}";
var MULTIPLE_NOT_AVAILABLE_BUNDLE = "{0} non sono disponibili per {1}";

var ZIP_FILES_LIST_NAME             = "File Zip";
var MODULE_CLUSTERS_FILES_LIST_NAME = "Gruppi di moduli";

var NOTE_SOLARIS = "Attenzione: Java ME \u00e8 disponibile solo per Windows e Linux. <br>Il pacchetto UML \u00e8 disponibile nel centro di aggiornamento.";
var NOTE_MACOSX  = "Attenzione: Java ME \u00e8 disponibile solo per Windows e Linux. <br>Il pacchetto UML \u00e8 disponibile nel centro di aggiornamento.";
var NOTE_ZIP     = "Attenzione: GlassFish e Apache Tomcat sono disponibili solo nei programmi di installazione di piattaforme specifiche. Il pacchetto UML \u00e8 disponibile nel centro di aggiornamento.";
var NOTE_OTHER   = "Attenzione: l'UML \u00e8 disponibile nel centro di aggiornamento.";
var NOTE_JAVAFX  = "Available only with <a href=\"{0}\">NetBeans&nbsp;6.5.1</a>";
var NOTE_ALL     = "Nota: le tecnologie in grigio non sono supportate in questa piattaforma";

var MORE_LANGUAGES    = "Altre lingue...";
var COMMUNITY_MESSAGE = "La comunit\u00e0 di NetBeans ha completamente contribuito alla(e) lingua(e) che possono essere scaricate da questa pagina. Per approfondire a proposito dei volumi della localizzazione scaricati verifica la <a href=\"http://wiki.netbeans.org/TFL10nCommunityStatus\">pagina di stato della comunit\u00e0</a>. Per scaricare le ultime contribuzioni della comunit\u00e0, visita la <a href=\"http://wiki.netbeans.org/TFLocalizationDevelopmentUC\">pagina del plugin della localizzazione</a>.";
var COMMUNITY_CONTRIBUTED_SEP    = " -- Contribuito dalla comunit\u00e0 -- " ;
var SUN_SUPPORTED_SEP            = " -- Supportato da Oracle -- " ;

var NETBEANS_DOWNLOAD_PAGE_TITLE       = "Scarica NetBeans IDE";
var NETBEANS_DOWNLOAD_PAGE_DESCRIPTION = "Scarica NetBeans IDE";


var NETBEANS_DOWNLOAD_HEADER = "Scarica NetBeans IDE {0}";
var DEVELOPMENT_TITLE        = "Sviluppo";
var ARCHIVE_TITLE            = "Archivio";
var PYTHON_TITLE             = "Python&nbsp;EA";
var EMAIL_LABEL              = "Indirizzo&nbsp;email&nbsp;(facoltativo):&nbsp;";
var SUBSCRIBE_LABEL          = "Registrati&nbsp;al&nbsp;bollettino:";
var MONTHLY_LABEL            = "Mensile&nbsp;&nbsp;&nbsp;&nbsp;";
var WEEKLY_LABEL             = "Settimanale";
var CONTACT_LABEL            = "Si&nbsp;pu\u00f2&nbsp;contattarmi&nbsp;a&nbsp;questa&nbsp;email";
var LANGUAGE_LABEL           = "Lingua dell'IDE";
var PLATFORM_LABEL           = "Piattaforma:";
var PLUGIN_MANAGER_LABEL     = "Puoi aggiungere o rimuovere i pacchetti pi\u00f9 tardi usando il gestore di plug-in dell'IDE (Strumenti | Plug-in).<br><br>";
var JAVATOOLSBUNDLE_LABEL    = "Puoi anche scaricare NetBeans IDE come parte del <a href=\"http://java.sun.com/javaee/downloads/index.jsp\">pacchetto degli strumenti Java EE 5</a> o <a href=\"http://download.netbeans.org/netbeans/6.1/mysql_bundle/\">il pacchetto MySQL con GlassFish</a>.";
var SOURCE_BINARY_LABEL      = "Il codice sorgente di NetBeans e le costruzioni di oggetti binari (build) senza i runtime inclusi sono anche disponibili nel <a id=\"zip_link\" href=\"{0}\">formato zip</a>.";
var BUILD_WIKI_LABEL         = "Vedi anche <a href=\"http://wiki.netbeans.org/wiki/view/WorkingWithNetBeansSources\">istruzioni su come costruire l'IDE dai sorgenti</a> o <a href=\"{0}\">le istruzioni di installazione</a>.";
var PLATFORM_DEV_LABEL       = "Puoi cominciare a sviluppare applicazioni basate sulla piattaforma NetBeans usando NetBeans IDE per Java SE. Informati di pi\u00f9 sulla <a href=\"{0}\">piattaforma NetBeans</a>.";
var PLATFORM_INFO_LINK       = "http://platform.netbeans.org/platform-get.html";

var LICENSE_NOTES_LINK      = "http://www.netbeans.org/about/legal/product-licences.html";

var ARCHIVE_BUILDS_LINK      = "http://services.netbeans.org/downloads/dev.php";
var DEVELOPMENT_BUILDS_LINK  = "http://bits.netbeans.org/download/trunk/nightly/latest/";
var PYTHON_LINK              = "http://download.netbeans.org/netbeans/6.5/python/ea/";

// TRANSLATE NOTE: change download*.gif to download*_<locale>.gif
var DOWNLOAD_BUTTON_NORMAL    = "download_it.gif";
var DOWNLOAD_BUTTON_DISABLED  = "download_d_it.gif";
var DOWNLOAD_BUTTON_HIGHLIGHT = "download_h_it.gif";

// DO NOT TRANSLATE
var START_PAGE = "start.html";
var ZIP_PAGE   = "zip.html";
