################################################################################
##
##  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=S,M,D,M,D,F,S

# Shared by DateChooser, DateField
firstDayOfWeek=1
yearSymbol=

# Localizable Strings


# Alert

okLabel=OK
yesLabel=Ja
noLabel=Nein
cancelLabel=Abbrechen

# ProgressBar

label=LADEVORGANG LÄUFT: %3%%


# Developer RTE Section


# ColorPicker

notImplemented='{0}' not implemented yet.

# Loader

notLoadable={0} kann nicht geladen werden.

# NavBar

errWrongType=FEHLER: Der dataProvider von '{0}' muss String, ViewStack, Array oder IList sein.
errWrongContainer=FEHLER: Der dataProvider von '{0}' darf keine Objekte des Typs flash.display.DisplayObject enthalten.

# components using interaction (Tree)

unknownInput=Unbekannter inputType: '{0}'.

# videoClasses.CuePointManager

wrongTime=Zeit muss eine Zahl sein.
wrongName=Der Name darf weder undefiniert noch null sein.
wrongTimeName=Zeit muss eine Zahl sein und/oder der Name darf weder undefiniert noch null sein.
wrongFormat=Unerwartetes Format für cuePoint-Parameter.
wrongType=Typ muss eine Zahl sein.
incorrectType=Typ muss 0, 1 oder 2 sein.
wrongDisabled=Deaktiviert muss eine Zahl sein.
wrongNumParams=Ein Zahlenparameter muss eine Zahl sein.
unexpectedEnd=Unerwartetes Ende des cuePoint-Parameter-Strings.
cannotDisable=ActionScript Cue-Points können nicht deaktiviert werden.
undefinedArray=CuePoint.array ist nicht definiert.
wrongIndex=CuePoint.index muss eine Zahl zwischen -1 und cuePoint.array.length sein.
undefinedParameter=CuePoint-Parameter ist nicht definiert.

# videoClasses.NCManager

invalidCall=Bei einer http-Verbindung kann keine erneute Verbindung aufgerufen werden.

# videoClasses.SMILManager

rootNotFound=URL: '{0}' Es wurde kein Stammknoten gefunden. Wenn die Datei eine FLV-Datei ist, muss sie die Erweiterung .flv aufweisen.
rootNotSMIL=URL: '{0}' Stammknoten ist nicht smil: '{1}'.
missingAttributes=URL: '{0}' Tag '{1}' benötigt die Attribute für ID, Breite und Höhe. Die Werte für die Breite und Höhe müssen Zahlen größer als/gleich 0 sein.
tagNotFound=URL: '{0}' Mindestens ein Video mit ref-Tag ist erforderlich.
missingAttributeSrc=URL: '{0}' Attribut 'src' ist im Tag '{1}' erforderlich.

# videoClasses.VideoError

errorMessages=Verbindung zum Server kann nicht hergestellt werden oder keine FLV-Datei auf dem Server gefunden.,Kein entsprechender Cue-Point gefunden.,Ungültiger Cue-Point.,Ungültige Suche.,Ungültiger contentPath.,Ungültiges XML.,Keine übereinstimmende Bitrate; darf kein Standard-FLV sein.,Standard-VideoPlayer kann nicht gelöscht werden.

# videoClasses.VideoPlayer

nullURL=Null-URL an VideoPlayer.load gesendet.
badArgs=Ungültige Argumente zu _play.

# videoClasses.FPADManager

missingRoot=URL: '{0}' Es wurde kein Stammknoten gefunden. Wenn die URL für eine FLV-Datei gilt, muss diese die Erweiterung .flv aufweisen und darf keine Parameter haben.
notfpad=URL: '{0}' Stammknoten ist kein fpad.
missingProxy=URL: '{0}' Für fpad xml ist ein Proxy-Tag erforderlich.

# TextInput, TextArea

unsupportedMode=IMEMode '{0}' wird nicht unterstützt.

# AccImpl

requiredField=Erforderliches Feld
