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

# UITextField

truncationIndicator=...

# Developer RTE Section

# Core

multipleChildSets_ClassAndInstance=이 구성 요소에 대해 여러 세트의 시각적 하위 요소가 지정되었습니다(구성 요소 정의 및 구성 요소 인스턴스).
multipleChildSets_ClassAndSubclass=이 구성 요소에 대해 여러 세트의 시각적 하위 요소가 지정되었습니다(기본 구성 요소 정의 및 파생 구성 요소 정의).

# EmbeddedFontRegistry
fontIncompatible=경고: {1}에 대해 지정되어 있는 포함된 글꼴 '{0}'이(가) 호환되지 않습니다. 이 구성 요소에서는 embedAsCff={2}을(를) 사용하여 포함된 글꼴을 선언해야 합니다.

# Repeater

notExecuting=반복 영역이 실행되고 있지 않습니다.

# UIComponent

stateUndefined=정의되지 않은 상태 '{0}'입니다.

# UIComponent / WindowedApplication

viewSource=소스 보기
badFile=파일이 없습니다.

# Version (FlexVersion)

versionAlreadySet=호환성 버전을 이미 설정했습니다.
versionAlreadyRead=호환성 버전을 이미 읽었습니다.

# UIFTETextField

badParameter=매개 변수 {0}은(는) 허용되는 값 중 하나여야 합니다.
nullParameter=매개 변수 {0}은(는) null이 아니어야 합니다.
badIndex=제공된 인덱스가 범위를 벗어났습니다.
notImplementedInFTETextField='{0}'이(가) FTETextField에 구현되지 않았습니다.
unsupportedTypeInFTETextField=FTETextField에서는 유형을 "input"으로 설정할 수 없습니다.

# Generated code for FlexInit
remoteClassMemoryLeak=경고:  클래스{0}이(가) {2}의 net.registerClassAlias()에 대한 호출에 사용되었습니다. 이로 인해 {1}이(가) 누수됩니다. 이 누수 문제를 해결하려면 최상위 레벨 응용 프로그램에서 {0}을(를) 정의하십시오.   
