# 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 = Det oppsto et tidsavbrudd i p\u00e5vente av en feils\u00f8kingsrespons fra Flash Player
timeout = Det oppsto et tidsavbrudd i p\u00e5vente av en feils\u00f8kingsrespons fra Flash Player. Ventetiden var ${time} millisekunder
notConnected = Feils\u00f8king er ikke lenger koblet til Flash Player
notSuspended = Operasjon tillates kun n\u00e5r Flash Player er midlertidig inaktiv
suspended = Operasjon tillates kun n\u00e5r Flash Player ikke er midlertidig inaktiv
unexpectedPlayerVersion = Uventet versjon av Flash Player
webBrowserGenericName = Nettleser
flashPlayerGenericName = Flash Player
maybeAlreadyRunningForDebug = Hvis programmet allerede kj\u00f8rer, m\u00e5 du lukke det f\u00f8r du feils\u00f8ker.
maybeAlreadyRunningForRun = Hvis programmet allerede kj\u00f8rer, m\u00e5 du lukke det f\u00f8r du kj\u00f8rer.
