# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# {0} - project directory
ClientSideProjectNode.library.description={0}\u306b\u3042\u308bJavaScript\u30e9\u30a4\u30d6\u30e9\u30ea
# {0} - project directory
ClientSideProjectNode.project.description={0}\u306b\u3042\u308bHTML5\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
ClientSideProjectPanel.configLabel.text=\u69cb\u6210(&C):
ClientSideProjectPanel.newButton.text=\u65b0\u898f...
ClientSideProjectPanel.deleteButton.text=\u524a\u9664
NewConfigurationPanel.nameLabel.text=\u540d\u524d(&N):
NewConfigurationPanel.typeLabel.text=\u30bf\u30a4\u30d7(&T):

SOURCES=\u30bd\u30fc\u30b9
SITE_ROOT=\u30b5\u30a4\u30c8\u30fb\u30eb\u30fc\u30c8
SOURCES_SITE_ROOT=\u30b5\u30a4\u30c8\u30fb\u30eb\u30fc\u30c8/\u30bd\u30fc\u30b9
UNIT_TESTS=\u5358\u4f53\u30c6\u30b9\u30c8
SELENIUM_TESTS=Selenium\u30c6\u30b9\u30c8

# browse folders
LBL_Folders=\u30d5\u30a9\u30eb\u30c0(&F):
LBL_SelectFolder=\u30d5\u30a9\u30eb\u30c0\u3092\u9078\u629e
ACSD_SelectFolder=\u300c\u30d5\u30a9\u30eb\u30c0\u3092\u9078\u629e\u300d\u30dc\u30bf\u30f3
LBL_Cancel=\u53d6\u6d88
ACSD_Cancel=\u53d6\u6d88\u3057\u30dc\u30bf\u30f3
LBL_BrowseFolders=\u30d5\u30a9\u30eb\u30c0\u3092\u53c2\u7167
ACSD_BrowseFolders=\u300c\u30d5\u30a9\u30eb\u30c0\u3092\u53c2\u7167\u300d\u30c0\u30a4\u30a2\u30ed\u30b0
LBL_SelectFile=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e
ACSD_SelectFile=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u30dc\u30bf\u30f3
LBL_BrowseFiles=\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167
ACSD_BrowseFiles=\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u30c0\u30a4\u30a2\u30ed\u30b0
BrowseFolders.jLabel1.AccessibleContext.accessibleName=\u30d5\u30a9\u30eb\u30c0
BrowseFolders.folderPanel.AccessibleContext.accessibleName=\u30d5\u30a9\u30eb\u30c0\u30fb\u30d1\u30cd\u30eb
BrowseFolders.folderPanel.AccessibleContext.accessibleDescription=\u30d5\u30a9\u30eb\u30c0\u30fb\u30c4\u30ea\u30fc\u7528\u306e\u30d1\u30cd\u30eb\u3002
BrowseFolders.AccessibleContext.accessibleName=\u30d5\u30a9\u30eb\u30c0\u53c2\u7167\u30d1\u30cd\u30eb
BrowseFolders.AccessibleContext.accessibleDescription=\u30d5\u30a9\u30eb\u30c0\u307e\u305f\u306f\u30d5\u30a1\u30a4\u30eb\u306e\u53c2\u7167\u7528\u30d1\u30cd\u30eb\u3002
BrowseFolders.jLabel1.AccessibleContext.accessibleDescription=\u30d5\u30a9\u30eb\u30c0\u30fb\u30d1\u30cd\u30eb\u306e\u30e9\u30d9\u30eb\u3002

