# 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.
OpenIDE-Module-Display-Category=C/C++
OpenIDE-Module-Long-Description=\u30ea\u30e2\u30fc\u30c8\u30fb\u30d6\u30ea\u30c3\u30b8API\u306b\u5bfe\u3059\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406
OpenIDE-Module-Name=\u30ea\u30e2\u30fc\u30c8\u30fb\u30d6\u30ea\u30c3\u30b8API\u306b\u5bfe\u3059\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406

OpenIDE-Module-Short-Description=\u30ea\u30e2\u30fc\u30c8\u30fb\u30d6\u30ea\u30c3\u30b8API\u306b\u5bfe\u3059\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406

CTL_FileSelector_Cancel=\u53d6\u6d88
CTL_FileSelector_Select=\u9078\u629e

CTL_Export_Title = \u5dee\u5206\u30d1\u30c3\u30c1\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
ACSD_Export = \u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30d1\u30b9\u30fb\u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d\u3068\u5834\u6240\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002
BK3002=\u30d1\u30c3\u30c1\u30fb\u30d5\u30a1\u30a4\u30eb(*.diff\u3001*.patch)
CTL_Export_ExportAction = \u30a8\u30af\u30b9\u30dd\u30fc\u30c8
MNE_Export_ExportAction = E
BK3005=\u65e2\u5b58\u306e{0}\u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b?

ExportDiffPanel.asFileRadioButton.text=\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4fdd\u5b58(&F)
ExportDiffPanel.attachRadioButton.text=\u554f\u984c\u306b\u6dfb\u4ed8(&A)
ExportDiffPanel.browseButton.text=\u53c2\u7167(&B)...

CTL_Attaching=\u30d1\u30c3\u30c1\u306b\u6dfb\u4ed8\u4e2d...
ExportDiffPanel.fileTextField.AccessibleContext.accessibleName=\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4fdd\u5b58






MSG_ActionContext_MultipleProjects = {0}\u500b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
MSG_ActionContext_MultipleFiles = {0}\u500b\u306e\u30d5\u30a1\u30a4\u30eb

CTL_OpenInEditor = \u958b\u304f

