#
# 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-2006 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.
#

## manifest.mf
OpenIDE-Module-Name=Exemplos de servizos web Metro
OpenIDE-Module-Display-Category=Servizos web
OpenIDE-Module-Short-Description=Fornece exemplos de servizos web Metro
OpenIDE-Module-Long-Description=Este m\u00f3dulo fornece exemplos de servizos web baseados en Metro.

## xmlfs localization
Templates/Project/Samples/Metro=Servizos web
#Templates/Project/Samples/Metro/SecureCalculator=Secure Calculator (Java EE 6)
#Templates/Project/Samples/Metro/Calculator=Calculator (Java EE 6)

# A11Y Panels
ACS_NWP1_NamePanel_A11YDesc=Nome do proxecto e panel de localizaci\u00f3n

#PanelProjectLocationVisual
TXT_NewWebApp=Exemplos de aplicativo web
LBL_NWP1_ProjectTitleName=Nome e localizaci\u00f3n

LBL_NWP1_ProjectName_Label=Nome do proxecto:
#LBL_NPW1_DefaultProjectName=ExampleWebApplication{0}
LBL_NWP1_ProjectLocation_Label=Localizaci\u00f3n do proxecto:
LBL_NWP1_BrowseLocation_Button=Examinar...
LBL_NWP1_CreatedProjectFolder_Lablel=Cartafol do proxecto:

LBL_NWP1_Server = Servidor:

LBL_NWP1_ProjectName_LabelMnemonic=N
LBL_NWP1_ProjectLocation_LabelMnemonic=L
LBL_NWP1_CreatedProjectFolder_LablelMnemonic=D

ACS_LBL_NWP1_ProjectName_A11YDesc=Nome do proxecto
ACS_LBL_NPW1_ProjectLocation_A11YDesc=Localizaci\u00f3n do proxecto
ACS_LBL_NWP1_BrowseLocation_A11YDesc=Buscar a localizaci\u00f3n do proxecto
ACS_LBL_NWP1_CreatedProjectFolder_A11YDesc=Cartafol do proxecto

LBL_NWP1_SelectProjectLocation=Seleccionar a localizaci\u00f3n do proxecto
MSG_IllegalProjectName=O nome do proxecto non \u00e9 un nome de cartafol correcto.
MSG_ProjectFolderExists=O cartafol do proxecto xa existe e non est\u00e1 baleiro.
MSG_NoJsr109Server=<html>Non hai ning\u00fan servidor de aplicativos Java EE 6 rexistrado no visor de servizos.</html>.
LBL_NWP1_SetAsMain_CheckBox=Definir como proxecto principal
LBL_NWP1_SetAsMain_CheckBoxMnemonic=M
ACS_LBL_NWP1_SetAsMain_A11YDesc=Definir como proxecto principal
MNEMONIC_SET_AS_MAIN=M

