###############################################################################
# Copyright (c) 2010, 2011 Ministry of Internal Affairs and Communications 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:
#     Yasuharu GOTOU (MIC) - initial API and implementation
###############################################################################
DialogOpenURL_Open_URL = Open URL

Validation_confirmT = Confirmation
Validation_confirm = This function will use W3C Markup Validation Service. Please check "About The W3C Markup Validation Service"\n\nhttp://validator.w3.org/about.html\nbefore using it.\n\n(This function requires network connection.)
Validation_localfileM = Please submit the local file by using Web form of W3C Markup Validation Service.
Validation_localfileT = Local file/Private URL

CaptionView_time = Time
CaptionView_caption = Caption

Error = Error
Not_supported = is not supported.

