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

OpenIDE-Module-Name=Completado de c\u00f3digo do editor
OpenIDE-Module-Display-Category=Editando
OpenIDE-Module-Short-Description=Cont\u00e9n compatibilidade para o completado de c\u00f3digo no editor
OpenIDE-Module-Long-Description=O completado de c\u00f3digo \u00e9 un subm\u00f3dulo do Editor que cont\u00e9n API, SPI e infraestrutura para o completado de c\u00f3digo./ O m\u00f3dulo \u00e9 xen\u00e9rico e pode usarse en calquera editor baseado en Swing/

completion-no-suggestions=Sen suxesti\u00f3ns
completion-please-wait=Agarde...

HINT_doc_browser_back_button=Ir \u00e1 p\u00e1xina anterior
HINT_doc_browser_forward_button=Ir \u00e1 p\u00e1xina seguinte
HINT_doc_browser_show_web_button=Mostra documentaci\u00f3n nun navegador web externo
HINT_doc_browser_goto_source_button=Abrir a fonte no editor

TXT_completion_shortcut_tips={0}Press {1} Again for All Items



# uihandler structured logging
COMPL_INVOCATION=Completion invoked/ Explicit: {0}
COMPL_KEY_SELECT=Completion key selection {0} of index {1} implemented as {2}
COMPL_KEY_SELECT_DEFAULT=Completion default selection of index {1} implemented as {2}
COMPL_MOUSE_SELECT=Completion mouse selection of index {1} implemented as {2}
COMPL_CANCEL=Cancelouse o completado
#COMPL_INVOCATION_ICON_BASE=org/netbeans/modules/editor/completion/resources/open_in_external_browser.png
#COMPL_KEY_SELECT_ICON_BASE=org/netbeans/modules/editor/completion/resources/open_in_external_browser.png
#COMPL_KEY_SELECT_DEFAULT_ICON_BASE=org/netbeans/modules/editor/completion/resources/open_in_external_browser.png
#COMPL_MOUSE_SELECT_ICON_BASE=org/netbeans/modules/editor/completion/resources/open_in_external_browser.png
#COMPL_CANCEL_ICON_BASE=org/netbeans/modules/editor/completion/resources/open_in_external_browser.png
# end of uihandler

completion-show-main_menu_item=Completar &c\u00f3digo...
documentation-show-main_menu_item=Mostrar doc&umentaci\u00f3n
tooltip-show-main_menu_item=M&ostrar par\u00e1metros do m\u00e9todo


