/*
 * 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.
 */

PLATFORM_LONG_NAMES  [0] = "Windows 2000/XP/Vista";
PLATFORM_SHORT_NAMES [0] = "Windows";
PLATFORM_LONG_NAMES  [1] = "Linux (x86/x64)";
PLATFORM_SHORT_NAMES [1] = "Linux";
PLATFORM_LONG_NAMES  [2] = "Solaris (x86/x64)";
PLATFORM_SHORT_NAMES [2] = "Solaris (x86/x64)";
PLATFORM_LONG_NAMES  [3] = "Solaris (sparc)";
PLATFORM_SHORT_NAMES [3] = "Solaris (sparc)";
PLATFORM_LONG_NAMES  [4] = "Mac OS X";
PLATFORM_SHORT_NAMES [4] = "Mac OS X";
PLATFORM_LONG_NAMES  [5] = "SO Independente Zip";
PLATFORM_SHORT_NAMES [5] = "SO Independente Zip";
/*
// Commented since NBI installers are not used for now
// Translate these strings as well (if they can be translated) and leave them commented
PLATFORM_LONG_NAMES  [4] = "Mac OS X (intel)";
PLATFORM_SHORT_NAMES [4] = "Mac OS X";

PLATFORM_LONG_NAMES  [5] = "Mac OS X (powerpc)";
PLATFORM_SHORT_NAMES [5] = "Mac OS X";
*/

BUNDLE_SHORT_NAMES[0] = "Web&nbsp;&amp;&nbsp;Java&nbsp;EE";
BUNDLE_SHORT_NAMES[1] = "Mobility";
BUNDLE_SHORT_NAMES[2] = "Java&nbsp;SE";
BUNDLE_SHORT_NAMES[3] = "Ruby";
BUNDLE_SHORT_NAMES[4] = "C/C++";
BUNDLE_SHORT_NAMES[5] = "Acesso antecipado ao suporte PHP";
BUNDLE_SHORT_NAMES[6] = "";

BUNDLE_LONG_NAMES[0] = "Web&nbsp;&amp;&nbsp;Java&nbsp;EE";
BUNDLE_LONG_NAMES[1] = "Mobility";
BUNDLE_LONG_NAMES[2] = "Java&nbsp;SE";
BUNDLE_LONG_NAMES[3] = "Ruby";
BUNDLE_LONG_NAMES[4] = "C/C++";
BUNDLE_LONG_NAMES[5] = "Acesso antecipado ao suporte PHP";
BUNDLE_LONG_NAMES[6] = "Tudo";

var NETBEANS_DOWNLOAD_PAGE_TITLE       = "Baixar o NetBeans IDE";
var NETBEANS_DOWNLOAD_PAGE_DESCRIPTION = "Baixar o NetBeans IDE";

var RELEASE_NOTES_LINK  = "https://netbeans.org/community/releases/61/relnotes.html";
var INSTALL_NOTES_LINK  = "https://netbeans.org/community/releases/61/install.html";
