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

report.category.column.description = \uc124\uba85
report.category.column.document    = \ubb38\uc11c
report.category.sectionTitle       = \uac1c\uc694
report.information.description1    = \uc774 \ubb38\uc11c\ub294 \ub2e4\uc591\ud55c \ubb38\uc11c\ub4e4\uc758 \uac1c\uc694\uc640 \uc774 \ud504\ub85c\uc81d\ud2b8\uc640 \uad00\ub828\ub41c \uc5ec\ub7ec \ub9c1\ud06c \uc815\ubcf4\ub4e4\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774 \ubb38\uc11c\uc758 \ubaa8\ub4e0 \ub0b4\uc6a9\uc740 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub429\ub2c8\ub2e4.
report.information.description2    = (\ud504\ub85c\uc81d\ud2b8\ud300\uc744 \ub300\uc2e0\ud558\uc5ec \uc790\ub3d9 \uc0dd\uc131)
report.information.title           = \ud504\ub85c\uc81d\ud2b8 \uc815\ubcf4
report.menu.parentproject          = \ubd80\ubaa8 \ud504\ub85c\uc81d\ud2b8
report.menu.projectdocumentation   = \ud504\ub85c\uc81d\ud2b8 \ubb38\uc11c\ud654
report.menu.projectinformation     = \ud504\ub85c\uc81d\ud2b8 \uc815\ubcf4
report.menu.projectmodules         = \ubaa8\ub4c8
report.menu.projectreports         = \ud504\ub85c\uc81d\ud2b8 \ubcf4\uace0\uc11c
report.project.description1        = \uc774 \ubb38\uc11c\ub294 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub41c \ub2e4\uc591\ud55c \ubcf4\uace0\uc11c\ub4e4\uc758 \uac1c\uc694\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.
report.project.description2        = \uc544\ub798\uc5d0\uc11c\ub294 \uac01 \ubcf4\uace0\uc11c\uc5d0 \ub300\ud574 \uac04\ub7b5\ud788 \uc124\uba85\ud569\ub2c8\ub2e4.
report.project.title               = \uc0dd\uc131\ub41c \ubcf4\uace0\uc11c
