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


# Translation:
#
# In this file, a couple of messages are split across multiple lines.  The main
# reason for that is that fdb is a command-line program, so we prefer to keep
# messages at less than 80 characters so that they fit in a typical command
# window.  When translating strings, you can either keep the line breaks in the
# same places, or move them, or even remove them altogether if a message will
# fit on a single line.

defaultBuildName=development
about=Apache fdb (Flash Player Debugger) [build ${build}]
copyright=Copyright 2016 The Apache Software Foundation. All rights reserved.
noResponseException=Player did not respond to the command as expected; command aborted.
notSuspendedException=Command cannot be issued while Player is running
illegalStateException=Command not valid without a session.
illegalMonitorStateException=Command not valid on a running Player.  Press 'Enter' key to halt it
playerDidNotStop=Player did not stop as expected.  Press 'Enter' key to halt it
noSuchElementException=Command expected at least one more argument.
numberFormatException=Command argument was string, expected integer.
socketException=Another Flash debugger is probably running; please close it.  Details: '${message}'.
versionException=Command not supported in this context.
unexpectedError=Unexpected error while processing command.
stackTraceFollows=For diagnostic purposes stack trace follows:\ 
sessionEndedAbruptly=Session ended abruptly.
noUriReceived=No URI received from Player
noSourceFilesFound=No source files found
unknownBreakpointLocation=<unknown>
unknownFilename=<unknown>
inFunctionAt=in ${functionName}() at\ 
inSwf=\ in ${swf}
inWorker=Worker ${worker}
workerRunning=Running
workerSuspended=Suspended
workerSelected=(Active)
mainThread=Main Thread
nonRestorable=\ ; Non-restorable from prior session
sourceDirectoriesSearched=Source directories searched:
attemptingToSuspend=Attempting to suspend Player execution...
playerStopped=Player stopped
playerRunning=Player running
suspendReason_Unknown=Unknown
suspendReason_HitBreakpoint=Breakpoint
suspendReason_HitWatchpoint=Watch
suspendReason_ProgramThrewException=Fault
suspendReason_StopRequest=StopRequest
suspendReason_ProgramFinishedStepping=Step
suspendReason_HaltOpcode=HaltOpcode
suspendReason_ScriptHasLoadedIntoFlashPlayer=ScriptLoaded
noStackAvailable=No stack available
atFilename=\ at\ 
noVariables=no variables
noArguments=no arguments
notInValidFrame=Not in a valid frame.  Use 'frame' command to return to current one.
noLocals=no locals
noScopeChain=no scope chain
noActiveSession=No active session
runWillLaunchUri='run' will launch ${uri}
targetUnknown=Target unknown
noSWFs=no SWFs.
unrecognizedFault=Unrecognized fault.
noFunctionsFound=No functions found
functionListBeingPrepared=Function list being prepared in background; try again later.
functionsInSourceFile=Functions in ${sourceFile}
breakpointNotYetResolved=\ (not yet resolved)
breakpointAmbiguous=\ (ambiguous)
breakpointNoCode=\ (no executable code on the specified line)
sessionTerminated=Player session terminated
additionalCodeLoaded=Additional ActionScript code has been loaded from a SWF or a frame.\n\
To see all currently loaded files, type 'info files'.
workerChanged=Active worker has changed to worker
workerNotFound=No worker found with that ID
setAdditionalBreakpoints=Set additional breakpoints as desired, and then type 'continue'.
fixBreakpoints=Fix or remove bad breakpoints, then type 'continue'.
executionHalted=Execution halted
hitBreakpoint=Breakpoint ${breakpointNumber}
haltedInFunction=${reasonForHalting}, ${functionName}() at ${fileAndLine}
haltedInFile=${reasonForHalting}, ${fileAndLine}
linePrefixWhenDisplayingConsoleError=[Error]
linePrefixWhenDisplayingFault=[Fault]
linePrefixWhenWorkerCreated=[WorkerCreate]
linePrefixWhenWorkerExit=[WorkerDestroy]
linePrefixWhenSwfLoaded=[SWF]
linePrefixWhenSwfUnloaded=[UnloadSWF]
informationAboutFault=, information=
sizeAfterDecompression=${size} bytes after decompression
breakpointNotPropagated=WARNING:  breakpoint ${breakpointNumber} not propagated to all swfs.\n\
You need to clear it and set it again.
playerAlreadyRunning=Player is already running, no need to resume.
doYouWantToHalt=Do you want to attempt to halt execution?
debugInfoBeingLoaded=debug information currently being loaded
attemptingToHalt=Attempting to halt.\n\
To help out, try nudging the Player (e.g. press a button)
couldNotHalt=Couldn't halt, no ActionScript is running.
escapingFromDebuggerPendingLoop=Escaping from debugger pending loop; setting $nowaiting = 1
continuingDueToError=Continuing due to error '${error}'
currentLocationUnknown=current location unknown
cannotStep=You can't step now.  Set breakpoints and then type 'continue'.
abortingStep=The Player has not returned in time; aborting remaining ${count} steps
finishCommandNotMeaningfulOnOutermostFrame='finish' not meaningful on outermost frame
finishCommandNotMeaningfulWithoutStack='finish' not meaningful without a stack
noBreakpointNumber=No breakpoint number ${breakpointNumber}
badBreakpointNumber=warning bad breakpoint number at or near '${token}'
commandFailed=Command failed.
createdBreakpoint=Breakpoint ${breakpointNumber}: file ${file}, line ${line}
createdBreakpointWithOffset=Breakpoint ${breakpointNumber} at ${offset}: file ${file}, line ${line}
breakpointCreatedButNotYetResolved=Breakpoint ${breakpointNumber} created, but not yet resolved.\n\
The breakpoint will be resolved when the corresponding file or function is loaded.
fileNumber=file #${fileNumber}
breakpointNotSetNoCode=Breakpoint not set; no executable code at line ${line} of ${filename}
breakpointLocationUnknown=Breakpoint location unknown.
breakpointNotCleared=Breakpoint not cleared.
attemptingToResolve=Attempting to resolve breakpoint ${breakpointNumber}, expression "${expression}":
noExecutableCode=There is no executable code on the specified line.
resolvedBreakpointToFunction=Resolved breakpoint ${breakpointNumber} to ${functionName}() at ${file}:${line}
resolvedBreakpointToFile=Resolved breakpoint ${breakpointNumber} to ${file}:${line}
setCommand=Set command requires a variable followed by an expression
missingOperator=Expression must contain '${operator}' operator.
noSideEffectsAllowed=Expression must not have side effects such as assignment.
couldNotEvaluate=Expression could not be evaluated.
commandHistoryIsEmpty=The history is empty
historyHasNotReached=History has not yet reached ${number}
variableUnknown=Variable ${variable} unknown
expressionCouldNotBeParsed=Expression could not be parsed correctly:
couldNotConvertToNumber=Could not convert to a number: ${value}
commandsLimitedToSpecifiedSwf=Commands limited to source files from ${swf}
commandsApplyToAllSwfs=Source files from all swfs available within commands.
notValidSwf=${swf} is not a valid SWF.
frameDoesNotExist=Frame '${frameNumber}' does not exist.
notANumber='${token}' not a number.
expectedLineNumber=Expected line number; got ${token}
expectedFileNumber=Expected file number; got ${token}
noSourceFileWithSpecifiedName=No source file named '${name}'.
noFunctionWithSpecifiedName=No function named '${name}'.
ambiguousMatchingFilenames=Ambiguous matching file names:
ambiguousMatchingFunctionNames=Ambiguous matching function names:
functionInFile=${functionName} in ${filename}
expectedFile=Expected file name or file number starting with #; got ${token}
noSuchFileOrFunction=No file or function named '${token}'.
localVariable=local
functionArgumentVariable=argument
mustBeOnlyOneVariable=Expression must contain only a single variable
lineJunk=Junk at end of line specification
sourceFileNotFound=Source file not found.  Use the "directory" command to specify its\n\
location on this machine.  Type "help directory" for important details\n\
on how to specify a directory for source files that are in a package.
lineNumberOutOfRange=Line number ${line} out of range; file ${filename} has ${total} lines
noFilesFound=No files found
sessionInProgress=Session already in progress
waitingForPlayerToConnect=Waiting for Player to connect
waitingToConnectToPlayer=Trying to connect to Player
launchingWithUrl=Attempting to launch and connect to Player using URL
playerConnectedSessionStarting=Player connected; session starting.
setBreakpointsThenResume=Set breakpoints and then type 'continue' to resume the session.
warningNotAllCommandsSupported=WARNING: The Player that you are using does not support all fdb commands.
fileDoesNotExist=File not found: ${uri}
failedToConnect=Failed to connect; session timed out.\n\
Ensure that:\n\
\ \ 1. you compiled your Flash movie with debugging on, and\n\
\ \ 2. you are running the Debugger version of the Flash Player.
manuallyLaunchPlayer=Just type 'run', and then manually launch the Player.
sourceCommandRequiresPath='source' command requires pathname of file to source.
fileNotFound=${filename}: No such file or directory.
argumentRequired=Argument required (fault to handle).
breakpointNotChanged=Breakpoint not changed.
badWatchpointNumber=Bad watchpoint number.
couldNotResolveExpression=Could not resolve expression into variable.
notAllBreakpointsEnabled=Not all breakpoints enabled
programNotBeingRun=The program is not being run.
commandNotValidUntilPlayerSuspended=Command not valid until Player execution suspended; try 'halt' command.
noHelpFileFound=No help file (fdbhelp*.txt) found.
invalidTargetFault=Bad target name for ActionSetTarget instruction
recursionLimitFault=Upper bound on recusion limit reached
invalidWithFault=Target of 'with' statement not an object
protoLimitFault=Search up prototype chain reached limit
invalidUrlFault=Opening a URL failed
exceptionFault=User exception thrown
stackUnderflowFault=Stack underflow occurred
divideByZeroFault=Divide by zero error
scriptTimeoutFault=ActionScript code is not progressing
errorWhileProcessingFile=An error occurred while processing the file (${exceptionMessage})
unrecognizedAction=Unrecognized action ${action}
typeCommandsForBreakpoint=Type commands for when breakpoint ${breakpointNumber} is hit, one per line.\n\
End with a line saying just 'end'.
breakpointNowUnconditional=Breakpoint ${breakpointNumber} now unconditional.
watchpointCouldNotBeSet=A watchpoint for '${expression}' could not be set

changedWatchpointMode=Watchpoint ${watchpointNumber} on expression '${expression}' now ${watchpointMode}
# the following three strings are inserted into the above 'changedWatchpointMode' string at the ${watchpontMode} location
watchpointMode_read=read
watchpointMode_write=write
watchpointMode_readWrite=read-write

createdWatchpoint=Watchpoint ${watchpointNumber} set on expression '${expression}'
couldNotFindWatchpoint=The watch for '${variable}' could not be found or removed.
noDisplayNumber=No display number ${displayNumber}
badDisplayNumber=warning bad display number at or near '${token}'
breakpointLocationNoLongerExists=Source file and line number no longer exist for breakpoint ${breakpointNumber}
unknownCommand=Unknown command '${command}', ignoring it
unknownSubcommand=Unknown ${commandCategory} command '${command}', ignoring it
unknownEvent=Received unknown event of type '${type}', info = ${info}
problemWithConnection=Problem with session connection, '${socketErrorMessage}', probably best to 'kill' it.
unexpectedErrorWithStackTrace=Unexpected error while processing command.\n\
For diagnostic purposes stack trace follows: 
ambiguousCommand=Ambiguous command '${input}':
faultHasNoTableEntry=Fault ${faultName} has no table entry
swfInfo=${swfName} - ${size} bytes after decompression, ${scriptCount} scripts [#${min} - #${max}]${plus} ${moreInfo}, url is ${url}
remainingSourceBeingLoaded=remaining source is still being loaded

# the following string is appended to the end of any question; tells the user what to type
yesOrNoAppendedToAllQuestions=\ (y or n)\ 
# the following string is what character the user should to answer "yes" to a yes/no question
singleCharacterUserTypesForYes=y
# a bunch of questions:
askDeleteAllBreakpoints=Delete all breakpoints?
askDeleteAllAutoDisplay=Delete all auto-display expressions?
askKillProgram=Kill the program being debugged?
askProgramIsRunningExitAnyway=The program is running.  Exit anyway?
askReinitSourcePath=Reinitialize source path to empty?
askExpressionContainsAssignment=Your expression contains assignment! Continue?
# the following string is output if someone answers "no" to any of the above questions
yesNoQueryNotConfirmed=Not confirmed.
stopOnlyIfConditionMet=stop only if ${breakpointCondition}
breakpointAlreadyHit=breakpoint already hit ${count} time(s)
silentBreakpoint=silent
getterFunction=Getter
setterFunction=Setter
function=Function
unknownVariableType=<unknown>
variableAttribute_dontEnumerate=don't enumerate
variableAttribute_readOnly=read-only
variableAttribute_localVariable=local
variableAttribute_functionArgument=argument
variableAttribute_getterFunction=getter
variableAttribute_setterFunction=setter
variableAttribute_hasNamespace=has namespace
key16=Messages received:
key17=Messages sent:
key18=No source files found
key19=No functions found
key20=Function list being prepared in background;  Try again later.
key21=--- SessionManager properties
key22=--- Session properties
stopped=Stopped
key24=Player running.
key25=No break information found
key26=Variable unknown
key27=Source information unknown, disassembled current location
key28=Junk at end of line specification
key29=No swf found for file ${arg3}
key30=No function found
key31=---- Displaying unmapped instructions at 0x${arg4} that were skipped ----
key32=Line number ${arg5} out of range; file ${arg6} has ${arg7} lines
key33=No files found
key34=Player is not currently suspended on any actions.
key35=in '${swfName}'
atAddress=at ${address}
haltedDueToFault=due to ${fault}
noWorkersRunning=There are no workers running.