# Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
#    Victor Roldan Betancort - Initial API and implementation
#    Eike Stepper - maintenance

# NLS_MESSAGEFORMAT_VAR

# ==============================================================================
# Do not change the properties between this line and the last line containing:
# %%% END OF TRANSLATED PROPERTIES %%%
# Instead, either redefine an existing property, or create a new property,
# append it to the end of the file, and change the code to use the new name.
# ==============================================================================

pluginName = Net4j Signalling Platform UI Capabilities
providerName = Eclipse Modeling Project

# ==============================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# The above properties have been shipped for translation.
# ==============================================================================

activity.description = Debug tools like selection spy (Introspector) and several container views.
activity.name = Net4j Signalling Platform Debugging
activity.description.0 = Net4j usage examples like the Buddies collaboration system or the JMS provider implementation.
activity.name.0 = Net4j Signalling Platform Examples