#
# 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.
#

LBL_Add=\u8ffd\u52a0
LBL_PortMappingPort=\u30dd\u30fc\u30c8
LBL_PortMappingTargetAddres=\u30db\u30b9\u30c8\u30fb\u30a2\u30c9\u30ec\u30b9
LBL_PortMappingTargetPort=\u30db\u30b9\u30c8\u30fb\u30dd\u30fc\u30c8
LBL_PortMappingType=\u30bf\u30a4\u30d7
LBL_Run={0}\u306e\u5b9f\u884c
LBL_RunContainerProperties=\u30b3\u30f3\u30c6\u30ca\u306e\u30d7\u30ed\u30d1\u30c6\u30a3
LBL_RunPortBindings=\u30dd\u30fc\u30c8\u30fb\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0
LBL_RunTagAction=\u5b9f\u884c...
# {0} - conflicting port
MSG_ConflictingPort=\u30db\u30b9\u30c8\u4e0a\u3067\u30dd\u30fc\u30c8\u306e\u7af6\u5408\u304c\u3042\u308a\u307e\u3059({0})\u3002
MSG_MissingPort=\u30d0\u30a4\u30f3\u30c9\u3059\u308b\u30dd\u30fc\u30c8\u306f\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093\u3002
MSG_ReceivingImageInfo=\u30a4\u30e1\u30fc\u30b8\u8a73\u7d30\u306e\u53d7\u4fe1\u4e2d
PortMappingPanel.portLabel.text=\u30dd\u30fc\u30c8(&P):
PortMappingPanel.portTypeLabel.text=\u30dd\u30fc\u30c8\u30fb\u30bf\u30a4\u30d7(&T):
PortMappingPanel.hostPortLabel.text=\u30db\u30b9\u30c8\u30fb\u30dd\u30fc\u30c8(&H):
PortMappingPanel.hostAddressLabel.text=\u30db\u30b9\u30c8\u30fb\u30a2\u30c9\u30ec\u30b9(&A):
RunPortBindingsVisual.randomBindCheckBox.text=\u516c\u958b\u6e08\u30dd\u30fc\u30c8\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u30d0\u30a4\u30f3\u30c9(&B)
RunPortBindingsVisual.addExposedButton.text=\u516c\u958b\u6e08\u306e\u8ffd\u52a0(&E)
RunPortBindingsVisual.removeButton.text=\u524a\u9664(&R)
RunPortBindingsVisual.addButton.text=\u8ffd\u52a0(&A)
RunPortBindingsVisual.portMappingLabel.text=\u30ab\u30b9\u30bf\u30e0\u30fb\u30dd\u30fc\u30c8\u30fb\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0(&C):
RunContainerPropertiesVisual.nameLabel.text=\u540d\u524d(&N):
RunContainerPropertiesVisual.ttyCheckBox.text=\u7591\u4f3cTTY\u306e\u5272\u5f53\u3066(&A)
RunContainerPropertiesVisual.interactiveCheckBox.text=\u30a2\u30bf\u30c3\u30c1\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3067\u3082STDIN\u3092\u30aa\u30fc\u30d7\u30f3\u306b\u3057\u7d9a\u3051\u308b(&K)
RunContainerPropertiesVisual.commandLabel.text=\u30b3\u30de\u30f3\u30c9(&C):
RunContainerPropertiesVisual.userLabel.text=\u30e6\u30fc\u30b6\u30fc(&U):
RunContainerPropertiesVisual.privilegedCheckBox.text=\u6a29\u9650\u30e2\u30fc\u30c9\u3067\u5b9f\u884c(&R)
RunContainerPropertiesVisual.mountVolumesCheckBox.text=\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30de\u30a6\u30f3\u30c8(&M)
RunContainerPropertiesVisual.addButton.text=\u8ffd\u52a0(&A)
RunContainerPropertiesVisual.deleteButton.text=\u524a\u9664(&D)
RunContainerPropertiesVisual.volumesTable.columnModel.title1=\u30bd\u30fc\u30b9
RunContainerPropertiesVisual.volumesTable.columnModel.title0=\u30bf\u30fc\u30b2\u30c3\u30c8

