/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 * 
 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
 * 
 * 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
 * https://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.  Sun
 * designates this particular file as subject to the "Classpath" exception as
 * provided by Sun 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 AUTOMATIC_DOWNLOAD_MESSAGE = "A transfer\u00eancia deve iniciar automaticamente.<br>Caso contr\u00e1rio, <a href=\"{0}\" class=\"download_link\">baixe ele aqui</a>.<br>";

var PRODUCT_NAME = "NetBeans {0}";
var INSTALLER_MESSAGE = "Instalador para {0}";
var NOFILE_MESSAGE = "Nenhum arquivo foi requisitado";

var NETBEANS_DOWNLOAD_STARTED_PAGE_TITLE       = "O download do NetBeans foi iniciado";
var NETBEANS_DOWNLOAD_STARTED_PAGE_DESCRIPTION = "O download do NetBeans foi iniciado";

var NETBEANS_DOWNLOAD_STARTED_HEADER = "A transfer\u00eancia do IDE NetBeans {0} foi iniciada";
var RELEASE_NOTES_LABEL = "Notas da vers\u00e3o";
var INSTALL_NOTES_LABEL = "Instru\u00e7\u00f5es de instala\u00e7\u00e3o";
var FIND_OUT_MORE_LABEL = "Localizar mais";
var PLUGINS_LABEL = "Plugins";
var PLUGINS_DESCRIPTION = "Contribui\u00e7\u00e3o da comunidade NetBeans e terceiros.";
var TUTORIALS_LABEL = "Tutorials";
var TUTORIALS_DESCRIPTION = "Escrito e gravado pela comunidade NetBeans e profissionais.";
var TRAINING_LABEL = "Treinamento";
var TRAINING_DESCRIPTION = "Cursos para ajud\u00e1-lo a melhorar suas habilidades.";
var SUPPORT_LABEL = "Suporte";
var SUPPORT_DESCRIPTION = "Op\u00e7\u00f5es de suporte flex\u00edveis para ajud\u00e1-lo a ficar focado em inova\u00e7\u00f5es.";

// $PRODUCT_NAME $TYPE (Installer for $PLATFORM/Zip)/$Language ($Language_ID) $filename ($SIZE) MD5: $MD5
var INFO_MESSAGE = "{0}{1} {2}/{3} ({4})<br>{5} ({6} MB)<br>MD5: {7}";
var INFO_MESSAGE_OTHER = "{0} ({1} MB)<br>MD5: {2}";

//DO NOT TRANSLATE
var SUBSCRIPTION_PHP_URL = "http://services.netbeans.org/sub.php";
