###############################################################################
# Copyright (c) 2008, 2009 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
ConfigureRemoteServices.0=Default
HostSelectionDialog_0=Host:
HostSelectionDialog.0=New Connection...
HostSelectionDialog.1=Choose Host for Remote C/C++ Indexing Service
IndexFileLocationWidget.0=Index location
IndexFileLocationWidget.1=Browse...
IndexFileLocationWidget.2=Restore Default

NewRemoteCppProjectWizard_0=New Remote C/C++ Project
NewRemoteCppProjectWizard_1=Create remote C or C++ project of the selected type
ServiceModelPropertyPage.0=Moving Index File
ServiceModelPropertyPage.1=Index file move error
ServiceModelPropertyPage.2=Cannot move the index to ''{0}'', index file is now located at ''{1}''.
ServiceModelWizardPage_0=Configure Services
ServiceModelWizardPage_description=Configure services for the remote project
ServiceModelWidget.0=Service
ServiceModelWidget.1=Provider
ServiceModelWidget.2=Configure...
ServiceModelWidget.3=Provider Configuration
ServiceModelWidget.4=Not configured
RemoteBuildServiceProvider.0=RDT Remote Build Service
NullCIndexServiceProvider.0=Null search query
NullCIndexServiceProvider.1=Null query - no matches to report.
NullCIndexServiceProvider.name=Null C/C++ Indexing Service
NullBuildServiceProvider.name=Null Build Service
NullServiceProvider.config=N/A
RemoteCIndexSubsystem.0=Registering Scope...
RemoteCIndexSubsystem.1=Indexing Resources...
RemoteCIndexSubsystem.10=Removing index file...
RemoteCIndexSubsystem.11= Please re-configure project's remote include paths or symbols.
RemoteCIndexSubsystem.2=Indexing 
RemoteCIndexSubsystem.3=Registering Scope...
RemoteCIndexSubsystem.4=Unregistering Scope...
RemoteCIndexSubsystem.5=Getting Callers for 
RemoteCIndexSubsystem.6=Getting callees for 
RemoteCIndexSubsystem.7=Getting definitions for 
RemoteCIndexSubsystem.8=Searching for
RemoteCIndexSubsystem.9=Open Declaration
RemoteDevelopmentPropertiesPage_0=Please select an option sub-category from the left
RemoteMakefileWizard.0=Remote Makefile Project
RemoteMakefileWizard.1=Empty Project
RemoteServicesProviderSelectionDialog_0=Choose Provider For Builder Execution Services
RemoteServicesProviderSelectionDialog_1=Provider:
RemoteServicesProviderSelectionDialog.0=Connection:
RemoteServicesProviderSelectionDialog.1=New Connection...
WizardProjectConversion.windowLabel=Convert Projects
WizardProjectConversion.title=Convert to a remote project
WizardProjectConversion.description=Convert to a remote project and configure remote services for project.
WizardProjectConversion.monitor.convertingToRemoteProject=Converting to remote project...
WizardProjectConversion.servicesTableLabel=Configure remote services
WizardProjectConversion.servicesTableForProjectLabel=Configure remote services for {0}


