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

# mf-layer.xml
Services/MergeVisualizers=Visualitzadors combinaci\u00f3

GraphicalMergeVisualizer.displayName=Resoluci\u00f3 conflictes combinaci\u00f3 gr\u00e0fica
GraphicalMergeVisualizer.shortDescription=

# GraphicalMergeVisualizerBeanInfo
PROP_colorUnresolvedConflict=Color de text de conflictes sense resoldre
HINT_colorUnresolvedConflict=El color de fons del text d'un conflicte sense resoldre.
PROP_colorResolvedConflict=Color del text aplicat per resoldre conflicte
HINT_colorResolvedConflict=El color de fons del text aplicat a resoldre el conflicte
PROP_colorOtherConflict=Color de text no aplicat a resoldre conflicte
HINT_colorOtherConflict=El color de fons del text no aplicat a resoldre el conflicte

# MergeDialogComponent
MergeDialogComponent.title=Resoluci\u00f3 conflictes combinaci\u00f3
ACSN_Merge_Dialog_Component=Component resoluci\u00f3 conflictes
ACSD_Merge_Dialog_Component=Resoluci\u00f3 gr\u00e0fica de conflictes combinaci\u00f3.
ACSN_Merge_Tabbed_Pane=Fitxers amb conflictes
ACSD_Merge_Tabbed_Pane=Pestanyes de fitxers amb conflictes.

# MergePanel
MergePanel.nextButton.toolTipText=Seg\u00fce&nt difer\u00e8ncia
MergePanel.prevButton.toolTipText=Anterior difer\u00e8ncia
# Status of conflicts resolving:
# {0} .. current conflict
# {1} .. total number of conflicts
# {2} .. number of unresolved conflicts
MergePanel.statusLine=Conflicte: {0} de {1}, sense resoldre: {2}
ACS_EditorPane1A11yName=El primer fitxer
ACS_EditorPane1A11yDescr=El contingut del primer fitxer.
ACS_EditorPane2A11yName=El segon fitxer
ACS_EditorPane2A11yDescr=El contingut del segon fitxer.
ACS_EditorPane3A11yName=El resultat de la combinaci\u00f3
ACS_EditorPane3A11yDescr=El contingut del resultat de la combinaci\u00f3 i resoluci\u00f3 de conflictes.


MergePanel.acceptLeftButton.text=&Acceptar
MergePanel.acceptAndNextLeftButton=Acc&eptar i seg\u00fcent
MergePanel.acceptRightButton.text=Accep&tar
MergePanel.acceptAndNextRightButton=Acceptar i seg\u00fcent

ACS_MergePanel.acceptLeftButton.textA11yDesc=Acceptar opci\u00f3 esquerra.
ACS_MergePanel.acceptAndNextLeftButtonA11yDesc=Acceptar opci\u00f3 esquerra i anar al seg\u00fcent conflicte.
ACS_MergePanel.acceptRightButton.textA11yDesc=Acceptar opci\u00f3 dreta.
ACS_MergePanel.acceptAndNextRightButtonA11yDesc=Acceptar opci\u00f3 dreta i anar al seg\u00fcent conflicte.

# {0} .. The name fo the file to be saved
SaveFileQuestion=El fitxer {0} ha estat modificat. Desar-ho ?
# {0} .. The number of files to be saved 
SaveFilesQuestion={0} fitxers modificats. Desar-los ?
# Printed message, when the merge result saving fails.
# {0} .. the localized message reported by the IOException
MergeControl.failedToSave=Error en desar el resultat combinaci\u00f3: {0}
BTN_OK=Acceptar
ACS_BTN_OKA11yDesc=Acceptar canvis i tancar di\u00e0leg.
BTN_Cancel=&Cancel\u00b7lar
ACS_BTN_CancelA11yDesc=Cancel\u00b7lar canvis i tancar di\u00e0leg.
BTN_Help=A&juda
ACS_BTN_HelpA11yDesc=Mostrar l'ajuda per a aquest di\u00e0leg.

CloseAction=Tancar

SaveFileWarningQuestion=El fitxer {0} ha estat modificat, desar-ho?\nNo tots els conflictes a tots els fitxers han estat resolts.
SaveFilesWarningQuestion={0} fitxers han estat modificats, desar-los?\nNo tots els conflictes a tots els fitxers han estat resolts.
WarningQuestion=Els conflictes no han estat resolts. Tancar el visualitzador de totes formes?

