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

# Symbols

# Shared by DateChooser, DateField, CalendarLayout
dayNamesShortest=일,월,화,수,목,금,토

# Shared by DateChooser, DateField
firstDayOfWeek=0
yearSymbol=년

# Localizable Strings


# Alert

okLabel=확인
yesLabel=예
noLabel=아니오
cancelLabel=취소

# ProgressBar

label=%3%%을(를) 불러오는 중


# Developer RTE Section


# ColorPicker

notImplemented={0}'이(가) 아직 구현되지 않았습니다.

# Loader

notLoadable={0}'을(를) 불러올 수 없습니다.

# NavBar

errWrongType=오류: '{0}'의 dataProvider는 String, ViewStack, Array 또는 IList여야 합니다.
errWrongContainer=오류: '{0}'의 dataProvider에는 flash.display.DisplayObject 유형의 개체가 있으면 안 됩니다.

# components using interaction (Tree)

unknownInput={0}'은(는) 알 수 없는 inputType입니다.

# videoClasses.CuePointManager

wrongTime=time은 숫자여야 합니다.
wrongName=name은 undefined이거나 null일 수 없습니다.
wrongTimeName=time은 숫자여야 하며 name은 undefined 또는 null일 수 없습니다.
wrongFormat=예기치 않은 cuePoint 매개 변수 형식입니다.
wrongType=type은 숫자여야 합니다.
incorrectType=유형은 0, 1 또는 2여야 합니다.
wrongDisabled=disabled는 숫자여야 합니다.
wrongNumParams=num 매개 변수는 숫자여야 합니다.
unexpectedEnd=예기치 않은 cuePoint 매개 변수 문자열의 끝입니다.
cannotDisable=ActionScript 큐 포인트를 사용하지 않도록 설정할 수 없습니다.
undefinedArray=cuePoint.array가 정의되지 않았습니다.
wrongIndex=cuePoint.index는 -1과 cuePoint.array.length 사이의 숫자여야 합니다.
undefinedParameter=cuePoint 매개 변수가 정의되지 않았습니다.

# videoClasses.NCManager

invalidCall=HTTP 연결을 사용하면 다시 연결을 호출할 수 없습니다.

# videoClasses.SMILManager

rootNotFound=URL: '{0}' 루트 노드를 찾을 수 없습니다. FLV 파일의 경우 .flv 확장명을 사용해야 합니다.
rootNotSMIL=URL: '{0}' smil이 아닌 루트 노드: '{1}'
missingAttributes=URL: '{0}' 태그 '{1}'에 id, width 및 height 특성이 있어야 합니다. width 및 height는 0보다 크거나 같은 숫자여야 합니다.
tagNotFound=URL: '{0}' ref 태그가 있는 비디오가 하나 이상 있어야 합니다.
missingAttributeSrc=URL: '{0}' '{1}' 태그에 src 특성이 있어야 합니다.

# videoClasses.VideoError

errorMessages=서버에 연결할 수 없거나 서버에서 FLV를 찾을 수 없음.,일치하는 큐 포인트를 찾을 수 없음.,잘못된 큐 포인트.,잘못된 찾기.,잘못된 contentPath.,잘못된 XML.,비트 전송률이 일치하지 않음.,기본 FLV가 아니어야 함.,기본 VideoPlayer를 삭제할 수 없음.

# videoClasses.VideoPlayer

nullURL=VideoPlayer.load에 null URL이 전달되었습니다.
badArgs=_play에 대한 인수가 잘못되었습니다.

# videoClasses.FPADManager

missingRoot=URL: '{0}' 루트 노드를 찾을 수 없습니다. FLV에 대한 URL의 경우 .flv 확장명을 사용해야 하며 매개 변수를 사용할 수 없습니다.
notfpad=URL: '{0}' 루트 노드가 fpad가 아닙니다.
missingProxy=URL: '{0}' fpad xml에 프록시 태그가 있어야 합니다.

# TextInput, TextArea

unsupportedMode=IMEMode '{0}'은(는) 지원되지 않습니다.

# AccImpl

requiredField=필수 필드
