#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2008 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 implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR

################################################################################
# BEGIN NO TRANSLATION
################################################################################
# Default Publish Path
# !! DO NOT TRANSLATE THE FOLLOWING LINE !!
publishPath=<user.home>/<app.name>/Publish
################################################################################
# END NO TRANSLATION
################################################################################

# Plug-in
pluginName=EPF \u53d1\u5e03\u7528\u6237\u754c\u9762
providerName=Eclipse.org

# Default Feedback URL
feedbackURL=http://www.published_website.com/feedback

# Publish Configuration Action
publishConfigAction=\u53d1\u5e03(&P)...
publishConfigActionTooltip=\u53d1\u5e03\u914d\u7f6e\u7684 Web \u7ad9\u70b9

# Preference Page
rootPageName=\u53d1\u5e03/\u6d4f\u89c8
roleDiagramPageName=\u89d2\u8272\u56fe
activityDiagramPageName=\u6d3b\u52a8\u56fe
publishingOptions=\u53d1\u5e03\u9009\u9879

# Publishing Actions
configActionSet=\u914d\u7f6e
configMenu=\u914d\u7f6e(&O)

# Print Configuration Action
printConfigAction=\u6253\u5370

# the title for the published site
#don't define here, let user specify it.
#title=OpenUP/Basic

