# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used in Swing
# Currently, the following components need this for support:
#
#    ColorChooser
#    FileChooser
#    OptionPane
#
# When this file is read in, the strings are put into the
# defaults table.  This is an implementation detail of the current
# workings of Swing.  DO NOT DEPEND ON THIS.
# This may change in future versions of Swing as we improve localization
# support.
#
#                        MNEMONIC NOTE:
# Many of strings in this file are used by widgets that have a
# mnemonic, for example:
#   ColorChooser.rgbNameTextAndMnemonic=R&GB
#
# Indicates that the tab in the ColorChooser for RGB colors will have
# the text 'RGB', further the mnemonic character will be 'g' and that
# a decoration will be provided under the 'G'. This will typically
# look like:  RGB
#              -
#
# One important thing to remember is that the mnemonic MUST exist in
# the String, if it does not exist you should add text that makes it
# exist. This will typically take the form 'XXXX (M)' where M is the
# character for the mnemonic.
#
# @author Steve Wilson

############ FILE CHOOSER STRINGS #############
FileChooser.fileDescription.textAndMnemonic=\uC77C\uBC18 \uD30C\uC77C
FileChooser.directoryDescription.textAndMnemonic=\uB514\uB809\uD1A0\uB9AC
FileChooser.newFolderError.textAndMnemonic=\uC0C8 \uD3F4\uB354\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
FileChooser.newFolderErrorSeparator= :
FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C
FileChooser.newFolderParentDoesntExist.textAndMnemonic=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\n\uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC9C0\uC815\uB41C \uACBD\uB85C\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
FileChooser.renameErrorTitle.textAndMnemonic=\uD30C\uC77C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uBC14\uAFB8\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD
FileChooser.renameError.textAndMnemonic={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
FileChooser.renameErrorFileExists.textAndMnemonic={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC74C: \uC9C0\uC815\uD55C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uB2E4\uB978 \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624.
FileChooser.acceptAllFileFilter.textAndMnemonic=\uBAA8\uB4E0 \uD30C\uC77C
FileChooser.cancelButton.textAndMnemonic=\uCDE8\uC18C
FileChooser.saveButton.textAndMnemonic=\uC800\uC7A5
FileChooser.openButton.textAndMnemonic=\uC5F4\uAE30
FileChooser.saveDialogTitle.textAndMnemonic=\uC800\uC7A5
FileChooser.openDialogTitle.textAndMnemonic=\uC5F4\uAE30
FileChooser.updateButton.textAndMnemonic=\uC5C5\uB370\uC774\uD2B8(&U)
FileChooser.helpButton.textAndMnemonic=\uB3C4\uC6C0\uB9D0(&H)
FileChooser.directoryOpenButton.textAndMnemonic=\uC5F4\uAE30

# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
FileChooser.fileSizeMegaBytes={0} MB
FileChooser.fileSizeGigaBytes={0} GB

# These strings are platform dependent not look and feel dependent.
FileChooser.win32.newFolder=\uC0C8 \uD3F4\uB354
FileChooser.win32.newFolder.subsequent=\uC0C8 \uD3F4\uB354({0})
FileChooser.other.newFolder=NewFolder
FileChooser.other.newFolder.subsequent=NewFolder.{0}


## file chooser tooltips ###
FileChooser.cancelButtonToolTip.textAndMnemonic=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790 \uC911\uB2E8
FileChooser.saveButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uD30C\uC77C \uC800\uC7A5
FileChooser.openButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uD30C\uC77C \uC5F4\uAE30
FileChooser.updateButtonToolTip.textAndMnemonic=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D \uC5C5\uB370\uC774\uD2B8
FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser \uB3C4\uC6C0\uB9D0
FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30

FileChooser.filesListAccessibleName=\uD30C\uC77C \uBAA9\uB85D
FileChooser.filesDetailsAccessibleName=\uD30C\uC77C \uC138\uBD80\uC815\uBCF4

############ COLOR CHOOSER STRINGS #############
ColorChooser.preview.textAndMnemonic=\uBBF8\uB9AC\uBCF4\uAE30
ColorChooser.ok.textAndMnemonic=\uD655\uC778
ColorChooser.cancel.textAndMnemonic=\uCDE8\uC18C
ColorChooser.reset.textAndMnemonic=\uC7AC\uC124\uC815(&R)
ColorChooser.sample.textAndMnemonic=\uC0D8\uD50C \uD14D\uC2A4\uD2B8  \uC0D8\uD50C \uD14D\uC2A4\uD2B8
ColorChooser.swatches.textAndMnemonic=\uACAC\uBCF8(&S)
ColorChooser.swatchesRecent.textAndMnemonic=\uCD5C\uADFC \uBAA9\uB85D:
ColorChooser.hsv.textAndMnemonic=HSV(&H)
ColorChooser.hsvHue.textAndMnemonic=\uC0C9\uC870
ColorChooser.hsvSaturation.textAndMnemonic=\uCC44\uB3C4
ColorChooser.hsvValue.textAndMnemonic=\uAC12
ColorChooser.hsvTransparency.textAndMnemonic=\uD22C\uBA85
ColorChooser.hsl.textAndMnemonic=HSL(&L)
ColorChooser.hslHue.textAndMnemonic=\uC0C9\uC870
ColorChooser.hslSaturation.textAndMnemonic=\uCC44\uB3C4
ColorChooser.hslLightness.textAndMnemonic=\uBC1D\uAE30
ColorChooser.hslTransparency.textAndMnemonic=\uD22C\uBA85
ColorChooser.rgb.textAndMnemonic=RGB(&G)
ColorChooser.rgbRed.textAndMnemonic=\uBE68\uAC04\uC0C9(&D)
ColorChooser.rgbGreen.textAndMnemonic=\uB179\uC0C9(&N)
ColorChooser.rgbBlue.textAndMnemonic=\uD30C\uB780\uC0C9(&B)
ColorChooser.rgbAlpha.textAndMnemonic=\uC54C\uD30C
ColorChooser.rgbHexCode.textAndMnemonic=\uC0C9\uC0C1 \uCF54\uB4DC(&C)
ColorChooser.cmyk.textAndMnemonic=C&MYK
ColorChooser.cmykCyan.textAndMnemonic=\uCCAD\uB85D\uC0C9
ColorChooser.cmykMagenta.textAndMnemonic=\uC9C4\uD64D\uC0C9
ColorChooser.cmykYellow.textAndMnemonic=\uB178\uB780\uC0C9
ColorChooser.cmykBlack.textAndMnemonic=\uAC80\uC815\uC0C9
ColorChooser.cmykAlpha.textAndMnemonic=\uC54C\uD30C

############ OPTION PANE STRINGS #############
# We only define mnemonics for YES/NO, but for completeness you can
# define mnemonics for any of the buttons.
OptionPane.yesButton.textAndMnemonic=\uC608(&Y)
OptionPane.noButton.textAndMnemonic=\uC544\uB2C8\uC624(&N)
OptionPane.okButton.textAndMnemonic=\uD655\uC778
#OptionPane.okButtonMnemonic=0
OptionPane.cancelButton.textAndMnemonic=\uCDE8\uC18C
#OptionPane.cancelButtonMnemonic=0
OptionPane.title.textAndMnemonic=\uC635\uC158 \uC120\uD0DD
# Title for the dialog for the showInputDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
OptionPane.inputDialog.titleAndMnemonic=\uC785\uB825
# Title for the dialog for the showMessageDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
OptionPane.messageDialog.titleAndMnemonic=\uBA54\uC2DC\uC9C0

############ Printing Dialog Strings ############
PrintingDialog.titleProgress.textAndMnemonic=\uC778\uC1C4
PrintingDialog.titleAborting.textAndMnemonic=\uC778\uC1C4(\uC911\uB2E8 \uC911)

PrintingDialog.contentInitial.textAndMnemonic=\uC778\uC1C4 \uC9C4\uD589 \uC911...

# The following string will be formatted by a MessageFormat
# and {0} will be replaced by page number being printed
PrintingDialog.contentProgress.textAndMnemonic=\uC778\uC1C4\uB41C \uD398\uC774\uC9C0 {0}...

PrintingDialog.contentAborting.textAndMnemonic=\uC778\uC1C4 \uC911\uB2E8 \uC911...

PrintingDialog.abortButton.textAndMnemonic=\uC911\uB2E8(&A)
PrintingDialog.abortButtonToolTip.textAndMnemonic=\uC778\uC1C4 \uC911\uB2E8

############ Internal Frame Strings ############
InternalFrame.iconButtonToolTip=\uCD5C\uC18C\uD654
InternalFrame.maxButtonToolTip=\uCD5C\uB300\uD654
InternalFrame.restoreButtonToolTip=\uBCF5\uC6D0
InternalFrame.closeButtonToolTip=\uB2EB\uAE30

############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton.textAndMnemonic=\uBCF5\uC6D0(&R)
InternalFrameTitlePane.moveButton.textAndMnemonic=\uC774\uB3D9(&M)
InternalFrameTitlePane.sizeButton.textAndMnemonic=\uD06C\uAE30(&S)
InternalFrameTitlePane.minimizeButton.textAndMnemonic=\uCD5C\uC18C\uD654(&N)
InternalFrameTitlePane.maximizeButton.textAndMnemonic=\uCD5C\uB300\uD654(&X)
InternalFrameTitlePane.closeButton.textAndMnemonic=\uB2EB\uAE30(&C)

############ Text strings #############
# Used for html forms
FormView.submitButton.textAndMnemonic=\uC9C8\uC758 \uC81C\uCD9C
FormView.resetButton.textAndMnemonic=\uC7AC\uC124\uC815
FormView.browseFileButton.textAndMnemonic=\uCC3E\uC544\uBCF4\uAE30...

############ Abstract Document Strings ############
AbstractDocument.styleChange.textAndMnemonic=\uC2A4\uD0C0\uC77C \uBCC0\uACBD
AbstractDocument.addition.textAndMnemonic=\uCD94\uAC00
AbstractDocument.deletion.textAndMnemonic=\uC0AD\uC81C
AbstractDocument.undo.textAndMnemonic=\uC2E4\uD589 \uCDE8\uC18C
AbstractDocument.redo.textAndMnemonic=\uC7AC\uC2E4\uD589

############ Abstract Button Strings ############
AbstractButton.click.textAndMnemonic=\uB204\uB974\uAE30

############ Abstract Undoable Edit Strings ############
AbstractUndoableEdit.undo.textAndMnemonic=\uC2E4\uD589 \uCDE8\uC18C
AbstractUndoableEdit.redo.textAndMnemonic=\uC7AC\uC2E4\uD589

############ Combo Box Strings ############
ComboBox.togglePopup.textAndMnemonic=togglePopup

############ Progress Monitor Strings ############
ProgressMonitor.progress.textAndMnemonic=\uC9C4\uD589...

############ Split Pane Strings ############
SplitPane.leftButton.textAndMnemonic=\uC67C\uCABD \uB2E8\uCD94
SplitPane.rightButton.textAndMnemonic=\uC624\uB978\uCABD \uB2E8\uCD94
# Used for Isindex
IsindexView.prompt=\uB2E4\uC74C\uC740 \uAC80\uC0C9 \uAC00\uB2A5\uD55C \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uAC80\uC0C9 \uD0A4\uC6CC\uB4DC \uC785\uB825:

############ InternalFrameTitlePane Strings ############
InternalFrameTitlePane.iconifyButtonAccessibleName=\uC544\uC774\uCF58\uD654
InternalFrameTitlePane.maximizeButtonAccessibleName=\uCD5C\uB300\uD654
InternalFrameTitlePane.closeButtonAccessibleName=\uB2EB\uAE30
