################################################################################
##
##  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=OK
yesLabel=Ναί
noLabel=Όχι
cancelLabel=Ακύρωση

# ProgressBar

label=ΦΟΡΤΩΣΗ %3%%


# Developer RTE Section


# ColorPicker

notImplemented='{0}' δεν έχει ακόμα  υλοποιηθεί.

# Loader

notLoadable=Αδυναμία φόρτωσης '{0}'.

# NavBar

errWrongType=Σφάλμα: Ο πάροχος στοιχείων '{0}' πρέπει να είναι ακολουθία χαρακτήρων ,viewstack, array  or Ilist.
errWrongContainer=Σφάλμα: Ο πάροχος στοιχείων '{0}' δεν πρέπει να περιλαμβάνει αντικείμενα τύπου flash.display.DisplayObject.

# components using interaction (Tree)

unknownInput=Άγνωστος τύπος εισαγωγής '{0}'.

# videoClasses.CuePointManager

wrongTime=Η ώρα πρέπει να είναι αριθμός.
wrongName=Το όνομα δεν μπορεί να μην έχει προσδιοριστεί ή να είναι κενό.
wrongTimeName=Η ώρα πρέπει να είναι αριθμός ή/και το όνομα δεν πρέπει να είναι απροσδιόριστο ή κενό.
wrongFormat=Απρόβλεπτη μορφωποίηση παραμέτρου.
wrongType=Τύπος Πρέπει να είναι Αριθμός.
incorrectType=Ο τύπος πρέπει να είναι 0, 1 ή 2.
wrongDisabled=Η απενεργοποίηση πρέπει να είναι αριθμός.
wrongNumParams=Οι αριθμητικοί παράμετροι πρέπει να είναι αριθμοί.
unexpectedEnd=Απρόβλεπτο τέλος στην παράμετρο (string).
cannotDisable=Δεν μπορεί να απενεργοποιηθούν τα ActionScript cue points.
undefinedArray=Δεν έχει καθορισθεί η διάταξη  cuePoint.
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), πλάτους και ύψους. Το πλάτος και το ύψος πρέπει να είναι αριθμοί μεγαλύτεροι ή ίσοι με το 0.
tagNotFound=URL: '{0}' απαιτείται τουλάχιστον ένα video του συγκεκριμένου πίνακα
missingAttributeSrc=URL: '{0}' Χρειάζεται η ιδιότητα src στην ετικέτα/επιγραφή '{1}'.

# videoClasses.VideoError

errorMessages= Δεν μπορεί να γίνει σύνδεση με τον server (διακομιστή) ή να βρεθεί FLV στον διακομιστή.,\
			   Δεν βρέθηκε ταύτιση με cuePoint .,\
			   Αγνωστο cuePoint.,\  
			   Άκυρη αναζήτηση.,\
			   Άκυρο περιεχόμενο διαδρομής,\
			   Άκυρο XML, Δεν υπάρχει ταύτιση ρυθμού μεταφοράς bit. \
			   Δεν πρέπει να υπάρχει προεπιλεγμένο FLV., \
			   Δεν μπορεί να διαγραφεί το προεπιλεγμένο video player.

# videoClasses.VideoPlayer

nullURL=Άκυρη URL στάλθηκε στο videoplayer.load.
badArgs=Λάθος παράμετροι για _play.

# videoClasses.FPADManager

missingRoot=URL: '{0}' Δεν βρέθηκε βασικός κόμβος. Αν το URL είναι για ένα FLV, πρέπει να έχει την προέκταση .flv και να μην δέχεται παραμέτρους.
notfpad=URL:'{0}' Ο βασικός κόμβος δεν είναι fpad.
missingProxy=URL: '{0}' fpad xml requires proxy tag.

# TextInput, TextArea

unsupportedMode=Δεν υποστηρίζεται ο τρόπος λειτουργίας IME '{0}'

# AccImpl

requiredField=Απαραίτητο Πεδίο
