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


timeoutAfterUnknownDelay = Timeout durante l'attesa della risposta di debug da Flash Player
timeout = Timeout durante l'attesa di ${time} millisecondi della risposta di debug da Flash Player
notConnected = Il debugger non \u00e8 pi\u00f9 connesso a Flash Player
notSuspended = Operazione consentita solo se Flash Player \u00e8 stato sospeso
suspended = Operazione consentita solo se Flash Player non \u00e8 stato sospeso
unexpectedPlayerVersion = Versione di Flash Player non prevista
webBrowserGenericName = Browser Web
flashPlayerGenericName = Flash Player
maybeAlreadyRunningForDebug = Se il programma \u00e8 gi\u00e0 in esecuzione, chiuderlo prima di eseguire il debug.
maybeAlreadyRunningForRun = Se il programma \u00e8 gi\u00e0 in esecuzione, chiuderlo prima di iniziare l'esecuzione.
