Merged l10n branch to trunk
authorplaa <plaa@180e2498-e6e9-4542-8430-84ac67f01cd8>
Sat, 18 Jun 2011 20:53:40 +0000 (20:53 +0000)
committerplaa <plaa@180e2498-e6e9-4542-8430-84ac67f01cd8>
Sat, 18 Jun 2011 20:53:40 +0000 (20:53 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@130 180e2498-e6e9-4542-8430-84ac67f01cd8

24 files changed:
1  2 
l10n/messages.properties
l10n/messages_de.properties
l10n/messages_es.properties
l10n/messages_fr.properties
src/net/sf/openrocket/database/Databases.java
src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java
src/net/sf/openrocket/gui/dialogs/AboutDialog.java
src/net/sf/openrocket/gui/dialogs/PrintDialog.java
src/net/sf/openrocket/gui/main/BasicFrame.java
src/net/sf/openrocket/l10n/DebugTranslator.java
src/net/sf/openrocket/rocketcomponent/BodyTube.java
src/net/sf/openrocket/rocketcomponent/ExternalComponent.java
src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java
src/net/sf/openrocket/rocketcomponent/InnerTube.java
src/net/sf/openrocket/rocketcomponent/LaunchLug.java
src/net/sf/openrocket/rocketcomponent/NoseCone.java
src/net/sf/openrocket/rocketcomponent/Rocket.java
src/net/sf/openrocket/rocketcomponent/RocketComponent.java
src/net/sf/openrocket/rocketcomponent/Stage.java
src/net/sf/openrocket/rocketcomponent/Transition.java
src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java
src/net/sf/openrocket/startup/Application.java
src/net/sf/openrocket/startup/Startup.java
src/net/sf/openrocket/util/Prefs.java

index 9defd41b64354d4ecdb7bff8d57c781962cfc4e7,65b4003eaf9f136eefea95b5e69b2e5c91d9162c..fcabdad2916c7c830abe78a17253a86517ca9a14
@@@ -13,6 -78,793 +78,815 @@@ button.ok = O
  button.cancel = Cancel
  button.close = Close
  
 -about.dlg.but.close = Close
 -about.dlg.lbl.translation = 
 -about.dlg.lbl.transwebsite = 
+ ! Common labels used in buttons of dialog windows
+ dlg.but.ok = OK
+ dlg.but.cancel = Cancel
+ dlg.but.close = Close
++
++! General file type names
++filetypes.pdf = PDF files
++
++
+ ! About Dialog
 -! Print panel dialog
 -printdlg.but.saveaspdf = Save as PDF
 -printdlg.but.preview = Preview
 -printdlg.but.settings = Settings
++AboutDialog.lbl.version = Version
++! The texts below provide additional credits for the translation maintainer
++! - In AboutDialog.lbl.translation replace "English" with the current language.
++! - AboutDialog.lbl.translator is the translator / group name (may be empty)
++! - AboutDialog.lbl.translatorWebsite is a URL to the translator / group (may be empty)
++! - AboutDialog.lbl.translatorIcon is the file name of an icon under pix/translators/ (may be empty)
++AboutDialog.lbl.translation = English translation by:
++AboutDialog.lbl.translator = 
++AboutDialog.lbl.translatorWebsite = 
++AboutDialog.lbl.translatorIcon = 
++
++
++! Print dialog
++PrintDialog.title = Print or export
++PrintDialog.but.previewAndPrint = Preview & Print
++PrintDialog.checkbox.showByStage = Show by stage
++PrintDialog.lbl.selectElements = Select elements to include:
++printdlg.but.saveaspdf = Save as PDF
++printdlg.but.preview = Preview
++printdlg.but.settings = Settings
++PrintDialog.error.preview.title = Unable to open preview
++PrintDialog.error.preview.desc1 = Unable to open PDF preview.
++PrintDialog.error.preview.desc2 = Please use the "Save as PDF" option instead.
++
+ ! Bug Report dialog
+ bugreport.dlg.title = Bug report
+ bugreport.dlg.but.Sendbugreport = Send bug report
+ bugreport.dlg.but.Sendbugreport.Ttip = Automatically send the bug report to the OpenRocket developers.
+ bugreport.dlg.successmsg1 = Bug report successfully sent.
+ bugreport.dlg.successmsg2 = Thank you for helping make OpenRocket better!
+ bugreport.dlg.successmsg3 = Bug report sent
+ bugreport.dlg.connectedInternet = <html>If connected to the Internet, you can simply click <em>Send bug report</em>.
+ bugreport.dlg.otherwise = Otherwise, send the text below to the address:
+ bugreport.lbl.Theinformation = The information above may be included in a public bug report.  Make sure it does not contain any sensitive information you do not want to be made public.
+ bugreport.dlg.failedmsg1 = OpenRocket was unable to send the bug report:
+ bugreport.dlg.failedmsg2 = Please send the report manually to
+ bugreport.dlg.failedmsg3 = Error sending report
+ bugreport.reportDialog.txt = <html><b>You can report a bug in OpenRocket by filling in and submitting the form below.</b><br>You can also report bugs and include attachments on the project web site.
+ bugreport.reportDialog.txt2 = <html><b>Please include a short description about what you were doing when the exception occurred.</b>
+ ! Debug log dialog
+ debuglogdlg.but.clear = Clear
+ debuglogdlg.OpenRocketdebuglog = OpenRocket debug log
+ debuglogdlg.Displayloglines = Display log lines:
+ debuglogdlg.Follow = Follow
+ debuglogdlg.col.Time = Time
+ debuglogdlg.col.Level = Level
+ debuglogdlg.col.Location = Location
+ debuglogdlg.col.Message = Message
+ debuglogdlg.lbl.Loglinenbr = Log line number:
+ debuglogdlg.lbl.Time = Time:
+ debuglogdlg.lbl.Level = Level:
+ ! Edit Motor configuration dialog
+ edtmotorconfdlg.but.removemotor = Remove motor
+ edtmotorconfdlg.but.Selectmotor = Select motor
+ edtmotorconfdlg.but.Removeconfiguration = Remove configuration
+ edtmotorconfdlg.but.Newconfiguration = New configuration
+ edtmotorconfdlg.lbl.Motormounts = <html><b>Motor mounts:</b>
+ edtmotorconfdlg.title.Editmotorconf = Edit motor configurations
+ edtmotorconfdlg.selectcomp = <html>Select which components function as motor mounts:
+ edtmotorconfdlg.lbl.Motorconfig = <html><b>Motor configurations:</b>
+ edtmotorconfdlg.lbl.Configname = Configuration name:
+ edtmotorconfdlg.lbl.Leavenamedefault = Leave name empty for default.
+ ! Example design dialog
+ exdesigndlg.but.open = Open
+ exdesigndlg.lbl.Selectexample = Select example designs to open:
+ exdesigndlg.lbl.Openexampledesign = Open example design
+ exdesigndlg.lbl.Exampledesignsnotfound = Example designs could not be found.
+ exdesigndlg.lbl.Examplesnotfound = Examples not found
+ ! Material edit panel
+ matedtpan.but.new = New
+ matedtpan.but.edit = Edit
+ matedtpan.but.delete = Delete
+ matedtpan.but.revertall = Revert all
+ matedtpan.col.Material = Material
+ matedtpan.col.Type = Type
+ matedtpan.col.Density = Density
+ matedtpan.col.but.ttip.New = Add a new material
+ matedtpan.title.Addcustmaterial = Add a custom material
+ matedtpan.but.ttip.edit = Edit an existing material
+ matedtpan.title.Editmaterial = Edit material
+ matedtpan.title2.Editmaterial = The built-in materials cannot be modified.
+ matedtpan.but.ttip.delete = Delete a user-defined material
+ matedtpan.but.ttip.revertall = Delete all user-defined materials
+ matedtpan.title.Deletealluser-defined = Delete all user-defined materials?
+ matedtpan.title.Revertall = Revert all?
+ matedtpan.lbl.edtmaterials = <html><i>Editing materials will not affect existing rocket designs.</i>
+ !MaterialModel
+ MaterialModel.title.Material = Material
+ MaterialModel.title.Defcustmat = Define custom material
+ ! Preference dialog
+ pref.dlg.but.add = Add
+ pref.dlg.but.reset = Reset
+ pref.dlg.but.checknow = Check now
+ pref.dlg.but.defaultmetric = Default metric
+ pref.dlg.but.defaultimperial = Default imperial
+ pref.dlg.title.Preferences = Preferences 
+ pref.dlg.tab.Units = Units
+ pref.dlg.tab.Defaultunits = Default units
+ pref.dlg.tab.Materials = Materials
+ pref.dlg.tab.Custommaterials = Custom materials
+ pref.dlg.tab.Options = Options
+ pref.dlg.tab.Miscellaneousoptions = Miscellaneous options
+ pref.dlg.lbl.Positiontoinsert = Position to insert new body components:
+ pref.dlg.lbl.Confirmdeletion = Confirm deletion of simulations:
+ pref.dlg.lbl.User-definedthrust = User-defined thrust curves:
+ pref.dlg.Allthrustcurvefiles = All thrust curve files (*.eng; *.rse; *.zip; directories)
+ pref.dlg.RASPfiles = RASP motor files (*.eng)
+ pref.dlg.RockSimfiles = RockSim engine files (*.rse)
+ pref.dlg.ZIParchives = ZIP archives (*.zip)
+ pref.dlg.checkbox.Checkupdates = Check for software updates at startup
+ pref.dlg.ttip.Checkupdatesnow = Check for software updates now
+ pref.dlg.lbl.Selectprefunits = Select your preferred units:
+ pref.dlg.lbl.Rocketdimensions = Rocket dimensions:
+ pref.dlg.lbl.Linedensity = Line density:
+ pref.dlg.lbl.Motordimensions = Motor dimensions:
+ pref.dlg.lbl.Surfacedensity = Surface density:
+ pref.dlg.lbl.Distance = Distance:
+ pref.dlg.lbl.Bulkdensity = Bulk density::
+ pref.dlg.lbl.Velocity = Velocity:
+ pref.dlg.lbl.Surfaceroughness = Surface roughness:
+ pref.dlg.lbl.Acceleration = Acceleration:
+ pref.dlg.lbl.Area = Area:
+ pref.dlg.lbl.Mass = Mass:
+ pref.dlg.lbl.Angle = Angle:
+ pref.dlg.lbl.Force = Force:
+ pref.dlg.lbl.Rollrate = Roll rate:
+ pref.dlg.lbl.Totalimpulse = Total impulse:
+ pref.dlg.lbl.Temperature = Temperature:
+ pref.dlg.lbl.Momentofinertia = Moment of inertia:
+ pref.dlg.lbl.Pressure = Pressure:
+ pref.dlg.lbl.Stability = Stability:
+ pref.dlg.lbl.effect1 = The effects will take place the next time you open a window.
+ pref.dlg.lbl.Checkingupdates = Checking for updates...
+ pref.dlg.lbl.msg1 = An error occurred while communicating with the server.
+ pref.dlg.lbl.msg2 = Unable to retrieve update information
+ pref.dlg.lbl.msg3 = You are running the latest version of OpenRocket.
+ pref.dlg.lbl.msg4 = No updates available
+ pref.dlg.PrefChoiseSelector1 = Always ask
+ pref.dlg.PrefChoiseSelector2 = Insert in middle
+ pref.dlg.PrefChoiseSelector3 = Add to end
+ pref.dlg.PrefBooleanSelector1 = Delete
+ pref.dlg.PrefBooleanSelector2 = Confirm
+ pref.dlg.Add = Add
+ pref.dlg.DescriptionArea.Adddirectories = Add directories, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external thrust curves.  Changes will take effect the next time you start OpenRocket.
+ ! Simulation edit dialog
+ simedtdlg.but.runsimulation = Run simulation
+ simedtdlg.but.resettodefault = Reset to default
+ simedtdlg.but.add = Add
+ simedtdlg.but.remove = Remove
+ simedtdlg.title.Editsim = Edit simulation
+ simedtdlg.lbl.Simname = Simulation name:
+ simedtdlg.tab.Launchcond = Launch conditions
+ simedtdlg.tab.Simopt = Simulation options
+ simedtdlg.tab.Plotdata = Plot data
+ simedtdlg.tab.Exportdata = Export data
+ simedtdlg.lbl.Motorcfg = Motor configuration:
+ simedtdlg.lbl.ttip.Motorcfg = Select the motor configuration to use.
+ simedtdlg.combo.ttip.motorconf = Select the motor configuration to use.
+ simedtdlg.lbl.Wind = Wind
+ simedtdlg.lbl.Averwindspeed = Average windspeed:
+ simedtdlg.lbl.ttip.Averwindspeed = The average windspeed relative to the ground.
+ simedtdlg.lbl.Stddeviation = Standard deviation:
+ simedtdlg.lbl.ttip.Stddeviation = <html>The standard deviation of the windspeed.<br>The windspeed is within twice the standard deviation from the average for 95% of the time.
+ simedtdlg.lbl.Turbulenceintensity = Turbulence intensity:
+ simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>The turbulence intensity is the standard deviation divided by the average windspeed.<br>
+ simedtdlg.lbl.ttip.Turbulenceintensity2 = Typical values range from
+ simedtdlg.lbl.ttip.Turbulenceintensity3 = to
+ simedtdlg.border.Atmoscond = Atmospheric conditions
+ simedtdlg.checkbox.InterStdAtmosphere = Use International Standard Atmosphere
+ simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Select to use the International Standard Atmosphere model.<br>This model has a temperature of
+ simedtdlg.checkbox.ttip.InterStdAtmosphere2 = and a pressure of
+ simedtdlg.checkbox.ttip.InterStdAtmosphere3 = at sea level.
+ simedtdlg.lbl.Temperature = Temperature:
+ simedtdlg.lbl.ttip.Temperature = The temperature at the launch site.
+ simedtdlg.lbl.Pressure = Pressure:
+ simedtdlg.lbl.ttip.Pressure = The atmospheric pressure at the launch site.
+ simedtdlg.lbl.Launchsite = Launch site
+ simedtdlg.lbl.Latitude = Latitude:
+ simedtdlg.lbl.ttip.Latitude = <html>The launch site latitude affects the gravitational pull of Earth.<br>Positive values are on the Northern hemisphere, negative values on the Southern hemisphere.
+ simedtdlg.lbl.Altitude = Altitude:
+ simedtdlg.lbl.ttip.Altitude = <html>The launch altitude above mean sea level.<br>This affects the position of the rocket in the atmospheric model.
+ simedtdlg.border.Launchrod = Launch rod
+ simedtdlg.lbl.Length = Length:
+ simedtdlg.lbl.ttip.Length = The length of the launch rod.
+ simedtdlg.lbl.Angle = Angle:
+ simedtdlg.lbl.ttip.Angle = The angle of the launch rod from vertical.
+ simedtdlg.lbl.Direction = Direction:
+ simedtdlg.lbl.ttip.Direction1 = <html>Direction of the launch rod relative to the wind.<br>
+ simedtdlg.lbl.ttip.Direction2 =  = towards the wind,
+ simedtdlg.lbl.ttip.Direction3 = = downwind.
+ simedtdlg.border.Simopt = Simulator options
+ simedtdlg.lbl.Calcmethod = Calculation method:
+ simedtdlg.lbl.ttip.Calcmethod = <html>The Extended Barrowman method calculates aerodynamic forces according <br>to the Barrowman equations extended to accommodate more components.
+ simedtdlg.lbl.ExtBarrowman = Extended Barrowman
+ simedtdlg.lbl.Simmethod = Simulation method:
+ simedtdlg.lbl.ttip.Simmethod1 = <html>The six degree-of-freedom simulator allows the rocket total freedom during flight.<br>
+ simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4<sup>th</sup> order Runge-Kutta 4 numerical integration.
+ simedtdlg.lbl.Timestep = Time step:
+ simedtdlg.lbl.ttip.Timestep1 = <html>The time between simulation steps.<br>A smaller time step results in a more accurate but slower simulation.<br>
+ simedtdlg.lbl.ttip.Timestep2 = The 4<sup>th</sup> order simulation method is quite accurate with a time step of
+ simedtdlg.but.ttip.resettodefault = Reset the time step to its default value (
+ simedtdlg.border.Simlist = Simulator listeners
+ simedtdlg.txt.longA1 = <html><i>Simulation listeners</i> is an advanced feature that allows user-written code to listen to and interact with the simulation.  
+ simedtdlg.txt.longA2 = For details on writing simulation listeners, see the OpenRocket technical documentation.
+ simedtdlg.lbl.Curlist = Current listeners:
+ simedtdlg.lbl.Addsimlist = Add simulation listener
+ simedtdlg.lbl.Noflightdata = No flight data available.
+ simedtdlg.lbl.runsimfirst = Please run the simulation first.
+ simedtdlg.chart.Simflight = Simulated flight
+ simedtdlg.dlg.Simres = Simulation results
+ simedtdlg.IntensityDesc.None = None
+ simedtdlg.IntensityDesc.Verylow = Very low
+ simedtdlg.IntensityDesc.Low = Low
+ simedtdlg.IntensityDesc.Medium = Medium
+ simedtdlg.IntensityDesc.High = High
+ simedtdlg.IntensityDesc.Veryhigh = Very high
+ simedtdlg.IntensityDesc.Extreme = Extreme
+ ! Simulation Panel
+ simpanel.but.newsimulation = New simulation
+ simpanel.but.editsimulation = Edit simulation
+ simpanel.but.runsimulations = Run simulations
+ simpanel.but.deletesimulations = Delete simulations
+ simpanel.but.plotexport = Plot / export
+ simpanel.but.ttip.newsimulation = Add a new simulation
+ simpanel.but.ttip.editsim = Edit the selected simulation
+ simpanel.but.ttip.runsimu = Re-run the selected simulations
+ simpanel.but.ttip.deletesim = Delete the selected simulations
+ simpanel.checkbox.donotask = Do not ask me again
+ simpanel.lbl.defpref = You can change the default operation in the preferences.
+ simpanel.dlg.lbl.DeleteSim1 = Delete the selected simulations?
+ simpanel.dlg.lbl.DeleteSim2 = <html><i>This operation cannot be undone.</i>
+ simpanel.dlg.lbl.DeleteSim3 = Delete simulations
+ simpanel.col.Name = Name
+ simpanel.col.Motors = Motors
+ simpanel.col.Apogee = Apogee
+ simpanel.col.Maxvelocity = Max. velocity
+ simpanel.col.Maxacceleration = Max. acceleration
+ simpanel.col.Timetoapogee = Time to apogee
+ simpanel.col.Flighttime = Flight time
+ simpanel.col.Groundhitvelocity = Ground hit velocity
+ ! SimulationRunDialog
+ SimuRunDlg.title.RunSim = Running simulations...
+ SimuRunDlg.lbl.Running = Running ...
+ SimuRunDlg.lbl.Simutime = Simulation time:
+ SimuRunDlg.lbl.Altitude = Altitude:
+ SimuRunDlg.lbl.Velocity = Velocity:
+ SimuRunDlg.msg.Unabletosim = Unable to simulate:
+ SimuRunDlg.msg.errorOccurred = An error occurred during the simulation:
+ SimuRunDlg.msg.AnException1 = An exception occurred during the simulation:
+ SimuRunDlg.msg.AnException2 = Please report this as a bug along with the details below.
+ SimuRunDlg.msg.AssertionError1 = A computation error occurred during the simulation.
+ SimuRunDlg.msg.AssertionError2 = Please report this as a bug along with the details below.
+ SimuRunDlg.msg.unknownerror1 = An unknown error was encountered during the simulation.
+ SimuRunDlg.msg.unknownerror2 = The program may be unstable, you should save all your designs and restart OpenRocket now!
+ ! SimulationExportPanel
+ SimExpPan.desc = Comma Separated Files (*.csv)
+ SimExpPan.border.Vartoexport = Variables to export
+ SimExpPan.but.Selectall = Select all
+ SimExpPan.but.Selectnone = Select none
+ SimExpPan.border.Fieldsep = Field separator
+ SimExpPan.lbl.Fieldsepstr = Field separator string:
+ SimExpPan.lbl.longA1 = <html>The string used to separate the fields in the exported file.<br>
+ SimExpPan.lbl.longA2 = Use ',' for a Comma Separated Values (CSV) file.
+ SimExpPan.checkbox.Includesimudesc = Include simulation description
+ SimExpPan.checkbox.ttip.Includesimudesc = Include a comment at the beginning of the file describing the simulation.
+ SimExpPan.border.Comments = Comments
+ SimExpPan.checkbox.Includefielddesc = Include field descriptions
+ SimExpPan.checkbox.ttip.Includefielddesc = Include a comment line with the descriptions of the exported variables.
+ SimExpPan.checkbox.Incflightevents = Include flight events
+ SimExpPan.checkbox.ttip.Incflightevents = Include a comment line for every flight event.
+ SimExpPan.lbl.Commentchar = Comment character:
+ SimExpPan.lbl.ttip.Commentchar = The character(s) that mark a comment line.
+ SimExpPan.but.Exporttofile = Export to file...
+ SimExpPan.Fileexists.desc1 = File \"
+ SimExpPan.Fileexists.desc2 = \" exists.  Overwrite?
+ SimExpPan.Fileexists.title = File exists
+ SimExpPan.ExportingVar.desc1 = Exporting 1 variable out of
+ SimExpPan.ExportingVar.desc2 = Exporting 
+ SimExpPan.ExportingVar.desc3 = variables out of
+ SimExpPan.Col.Variable = Variable
+ SimExpPan.Col.Unit = Unit
+ ! MotorPlot
+ MotorPlot.title.Motorplot = Motor plot
+ MotorPlot.but.Select = Select
+ MotorPlot.Chart.Motorthrustcurve = Motor thrust curve
+ MotorPlot.Chart.Time = Time / s
+ MotorPlot.Chart.Thrust = Thrust / N
+ MotorPlot.txt.Designation = Designation:
+ MotorPlot.txt.Manufacturer = Manufacturer:
+ MotorPlot.txt.Type = Type:
+ MotorPlot.txt.Delays = Delays:
+ MotorPlot.txt.Comment = Comment:\n
+ ! Simulation plot panel
+ simplotpanel.lbl.Presetplotconf = Preset plot configurations:
+ simplotpanel.lbl.Xaxistype = X axis type:
+ simplotpanel.lbl.Unit = Unit:
+ simplotpanel.lbl.Yaxistypes = Y axis types:
+ simplotpanel.lbl.Flightevents = Flight events:
+ simplotpanel.but.All = All
+ simplotpanel.but.None = None
+ simplotpanel.but.NewYaxisplottype = New Y axis plot type
+ simplotpanel.but.Plotflight = Plot flight
+ simplotpanel.lbl.Axis = Axis:
+ simplotpanel.but.ttip.Removethisplot = Remove this plot
+ simplotpanel.Desc = The data will be plotted in time order even if the X axis type is not time.
+ simplotpanel.OptionPane.lbl1 = A maximum of 15 plots is allowed. 
+ simplotpanel.OptionPane.lbl2 = Cannot add plot
+ simplotpanel.AUTO_NAME = Auto
+ simplotpanel.LEFT_NAME = Left
+ simplotpanel.RIGHT_NAME = Right
+ simplotpanel.CUSTOM = Custom
+ ! Component add buttons
+ compaddbuttons.Bodycompandfinsets = Body components and fin sets
+ compaddbuttons.Nosecone = Nose cone
+ compaddbuttons.Bodytube = Body tube
+ compaddbuttons.Transition = Transition
+ compaddbuttons.Trapezoidal = Trapezoidal
+ compaddbuttons.Elliptical = Elliptical
+ compaddbuttons.Freeform = Freeform
+ compaddbuttons.Launchlug = Launch lug
+ compaddbuttons.Innercomponent = Inner component
+ compaddbuttons.Innertube = Inner tube
+ compaddbuttons.Coupler = Coupler
+ compaddbuttons.Centeringring = Centering\nring
+ compaddbuttons.Bulkhead = Bulkhead
+ compaddbuttons.Engineblock = Engine\nblock
+ compaddbuttons.Massobjects = Mass objects
+ compaddbuttons.Parachute = Parachute
+ compaddbuttons.Streamer = Streamer
+ compaddbuttons.Shockcord = Shock cord
+ compaddbuttons.Masscomponent = Mass\ncomponent
+ compaddbuttons.Donotaskmeagain = Do not ask me again
+ compaddbuttons.Selectcomppos = Select component position
+ compaddbuttons.lbl.Youcanchange = You can change the default operation in the preferences.
+ compaddbuttons.lbl.insertcomp = Insert the component after the current component or as the last component?
+ compaddbuttons.askPosition.Inserthere = Insert here
+ compaddbuttons.askPosition.Addtotheend = Add to the end
+ compaddbuttons.askPosition.Cancel = Cancel
+ ! Component Analysis Dialog
+ componentanalysisdlg.componentanalysis = Component analysis
+ componentanalysisdlg.lbl.winddir = Wind direction:
+ componentanalysisdlg.TitledBorder.warnings = Warnings:
+ componentanalysisdlg.ToggleBut.worst = Worst
+ componentanalysisdlg.lbl.angleofattack = Angle of attack:
+ componentanalysisdlg.lbl.machnumber = Mach number:
+ componentanalysisdlg.lbl.rollrate = Roll rate:
+ componentanalysisdlg.lbl.activestages = Active stages:
+ componentanalysisdlg.lbl.motorconf = Motor configuration:
+ componentanalysisdlg.TabStability.Col = Component
+ componentanalysisdlg.TabStability = Stability
+ componentanalysisdlg.TabStability.ttip = Stability information
+ componentanalysisdlg.dragTableModel.Col.Component = Component
+ componentanalysisdlg.dragTableModel.Col.Pressure = <html>Pressure C<sub>D</sub>
+ componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>
+ componentanalysisdlg.dragTableModel.Col.friction = <html>Friction C<sub>D</sub>
+ componentanalysisdlg.dragTableModel.Col.total = <html>Total C<sub>D</sub>
+ componentanalysisdlg.dragTabchar = Drag characteristics
+ componentanalysisdlg.dragTabchar.ttip = Drag characteristics
+ componentanalysisdlg.rollTableModel.Col.component = Component
+ componentanalysisdlg.rollTableModel.Col.rollforc = Roll forcing coefficient
+ componentanalysisdlg.rollTableModel.Col.rolldamp = Roll damping coefficient
+ componentanalysisdlg.rollTableModel.Col.total = <html>Total C<sub>l</sub>
+ componentanalysisdlg.rollTableModel = Roll dynamics
+ componentanalysisdlg.rollTableModel.ttip = Roll dynamics
+ componentanalysisdlg.println.closingmethod = Closing method called:
+ componentanalysisdlg.println.settingnam = SETTING NAN VALUES
+ componentanalysisdlg.lbl.reflenght = Reference length: 
+ componentanalysisdlg.lbl.refarea = Reference area: 
+ !componentanalysisdlg.But.close =Close
+ ! Custom Material dialog
+ custmatdlg.title.Custommaterial = Custom material
+ custmatdlg.lbl.Materialname = Material name: 
+ custmatdlg.lbl.Materialtype = Material type:
+ custmatdlg.lbl.Materialdensity = Material density:
+ custmatdlg.checkbox.Addmaterial = Add material to database
+ ! Ring Component Config
+ ringcompcfg.OuterRadius = OuterRadius
+ ringcompcfg.Automatic = Automatic
+ ringcompcfg.InnerRadius = InnerRadius
+ ringcompcfg.Thickness = Thickness
+ ringcompcfg.Length = Length
+ ringcompcfg.Positionrelativeto = Position relative to:
+ ringcompcfg.plus = plus
+ ringcompcfg.PositionValue = PositionValue
+ ringcompcfg.Radialdistance = Radial distance:
+ ringcompcfg.Distancefrom = Distance from the rocket centerline
+ ringcompcfg.Radialdirection = Radial direction
+ ringcompcfg.radialdirectionfrom = The radial direction from the rocket centerline
+ ringcompcfg.but.Reset = Reset
+ ringcompcfg.but.Resetcomponant = Reset the component to the rocket centerline
+ ringcompcfg.EngineBlock.desc = <html>An <b>engine block</b> stops the motor from moving forwards in the motor mount tube.<br><br>In order to add a motor, create a <b>body tube</b> or <b>inner tube</b> and mark it as a motor mount in the <em>Motor</em> tab.
+ ringcompcfg.note.desc = Note: An inner tube will not affect the aerodynamics of the rocket even if it is located outside of the body tube.
+ ! Body Tube Config
+ BodyTubecfg.lbl.Bodytubelength = Body tube length:
+ BodyTubecfg.lbl.Outerdiameter = Outer diameter:
+ BodyTubecfg.lbl.Innerdiameter = Inner diameter:
+ BodyTubecfg.lbl.Wallthickness = Wall thickness:
+ BodyTubecfg.tab.General = General
+ BodyTubecfg.tab.Generalproperties = General properties
+ BodyTubecfg.tab.Motor = Motor
+ BodyTubecfg.tab.Motormountconf = Motor mount configuration
+ BodyTubecfg.checkbox.Automatic = Automatic
+ BodyTubecfg.checkbox.Filled = Filled
+ ! FinSetConfig
+ FinSetConfig.tab.Fintabs = Fin tabs
+ FinSetConfig.tab.Through-the-wall = Through-the-wall fin tabs
+ FinSetConfig.but.Converttofreeform = Convert to freeform
+ FinSetConfig.but.Converttofreeform.ttip = Convert this fin set into a freeform fin set
+ FinSetConfig.Convertfinset = Convert fin set
+ FinSetConfig.but.Splitfins = Split fins
+ FinSetConfig.but.Splitfins.ttip = Split the fin set into separate fins
+ FinSetConfig.lbl.Through-the-wall  = Through-the-wall fin tabs:
+ FinSetConfig.lbl.Tablength = Tab length:
+ FinSetConfig.ttip.Tablength = The length of the fin tab.
+ FinSetConfig.lbl.Tabheight = Tab height:
+ FinSetConfig.ttip.Tabheight = The spanwise height of the fin tab.
+ FinSetConfig.lbl.Tabposition = Tab position:
+ FinSetConfig.ttip.Tabposition = The position of the fin tab.
+ FinSetConfig.lbl.relativeto = relative to
+ ! MotorDatabaseLoadingDialog
+ MotorDbLoadDlg.title = Loading motors
+ MotorDbLoadDlg.Loadingmotors = Loading motors...
+ ! RocketConfig
+ RocketCfg.lbl.Designname = Design name:
+ RocketCfg.lbl.Designer = Designer:
+ RocketCfg.lbl.Comments = Comments:
+ RocketCfg.lbl.Revisionhistory = Revision history:
+ RocketCfg.lbl.Material = Material:
+ ! ShockCordConfig
+ ShockCordCfg.lbl.Shockcordlength = Shock cord length
+ ! RocketComponentConfig
+ RocketCompCfg.lbl.Componentname = Component name:
+ RocketCompCfg.ttip.Thecomponentname = The component name.
+ RocketCompCfg.tab.Override = Override
+ RocketCompCfg.tab.MassandCGoverride = Mass and CG override options
+ RocketCompCfg.tab.Figure = Figure
+ RocketCompCfg.tab.Figstyleopt = Figure style options
+ RocketCompCfg.tab.Comment = Comment
+ RocketCompCfg.tab.Specifyacomment = Specify a comment for the component
+ RocketCompCfg.lbl.Mass = Mass:
+ RocketCompCfg.lbl.Componentmass = Component mass:
+ RocketCompCfg.lbl.overriddento = (overridden to
+ RocketCompCfg.lbl.overriddenby = (overridden by
+ RocketCompCfg.lbl.Componentmaterial = Component material:
+ RocketCompCfg.lbl.Componentfinish = Component finish:
+ RocketCompCfg.lbl.ttip.componentmaterialaffects = The component material affects the weight of the component.
+ RocketCompCfg.combo.ttip.componentmaterialaffects = The component material affects the weight of the component.
+ RocketCompCfg.lbl.longA1 = <html>The component finish affects the aerodynamic drag of the component.<br>
+ RocketCompCfg.lbl.longA2 = The value indicated is the average roughness height of the surface.
+ RocketCompCfg.but.Setforall = Set for all
+ RocketCompCfg.but.ttip.Setforall = Set this finish for all components of the rocket.
+ RocketCompCfg.lbl.Overridemassorcenter = Override the mass or center of gravity of the
+ RocketCompCfg.checkbox.Overridemass = Override mass:
+ RocketCompCfg.checkbox.Overridecenterofgrav = Override center of gravity:
+ RocketCompCfg.checkbox.OverridemassandCG = Override mass and CG of all subcomponents
+ RocketCompCfg.lbl.longB1 = <html>The overridden mass does not include motors.<br>
+ RocketCompCfg.lbl.longB2 = The center of gravity is measured from the front end of the
+ RocketCompCfg.lbl.Commentsonthe = Comments on the
+ RocketCompCfg.lbl.Figurestyle = Figure style:
+ RocketCompCfg.lbl.Componentcolor = Component color:
+ RocketCompCfg.lbl.Choosecolor = Choose color
+ RocketCompCfg.checkbox.Usedefaultcolor = Use default color
+ RocketCompCfg.lbl.Complinestyle = Component line style:
+ RocketCompCfg.but.Saveasdefstyle = Save as default style
+ RocketCompCfg.lbl.Diameter = Diameter:
+ RocketCompCfg.lbl.Length = Length:
+ RocketCompCfg.lbl.Thickness = Thickness:
+ RocketCompCfg.checkbox.Endcapped = End capped
+ RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped.
+ RocketCompCfg.title.Noseconeshoulder = Nose cone shoulder
+ RocketCompCfg.title.Aftshoulder = Aft shoulder
+ RocketCompCfg.border.Foreshoulder = Fore shoulder 
+ !RocketCompCfg.lbl.Length = Length:
+ ! BulkheadConfig
+ BulkheadCfg.tab.Radius = Radius:
+ BulkheadCfg.tab.Thickness = Thickness:
+ BulkheadCfg.tab.General = General
+ BulkheadCfg.tab.Generalproperties = General properties
+ !CenteringRingConfig
+ CenteringRingCfg.tab.Outerdiam = Outer diameter:
+ CenteringRingCfg.tab.Innerdiam = Inner diameter:
+ CenteringRingCfg.tab.Thickness = Thickness:
+ CenteringRingCfg.tab.General = General
+ CenteringRingCfg.tab.Generalproperties = General properties
+ !ComponentConfigDialog
+ ComponentCfgDlg.configuration = configuration
+ ComponentCfgDlg.Modify = Modify
+ !EllipticalFinSetConfig
+ EllipticalFinSetCfg.Nbroffins = Number of fins:
+ EllipticalFinSetCfg.Rotation = Rotation:
+ EllipticalFinSetCfg.Fincant = Fin cant:
+ EllipticalFinSetCfg.Rootchord = Root chord:
+ EllipticalFinSetCfg.Height = Height:
+ EllipticalFinSetCfg.Positionrelativeto = Position relative to:
+ EllipticalFinSetCfg.plus = plus
+ EllipticalFinSetCfg.FincrossSection = Fin cross section:
+ EllipticalFinSetCfg.Thickness = Thickness:
+ EllipticalFinSetCfg.General = General
+ EllipticalFinSetCfg.Generalproperties = General properties
+ EllipticalFinSetCfg.ttip.Fincant = The angle that the fins are canted with respect to the rocket body.
+ !FreeformFinSetConfig
+ FreeformFinSetCfg.tab.General = General
+ FreeformFinSetCfg.tab.ttip.General = General properties
+ FreeformFinSetCfg.tab.Shape = Shape
+ FreeformFinSetCfg.tab.ttip.Finshape = Fin shape
+ FreeformFinSetCfg.lbl.Numberoffins = Number of fins:
+ FreeformFinSetCfg.lbl.Finrotation = Fin rotation:
+ FreeformFinSetCfg.lbl.Fincant = Fin cant:
+ FreeformFinSetCfg.lbl.ttip.Fincant = The angle that the fins are canted with respect to the rocket body.
+ FreeformFinSetCfg.lbl.Posrelativeto = Position relative to:
+ FreeformFinSetCfg.lbl.plus = plus
+ FreeformFinSetCfg.lbl.FincrossSection = Fin cross section:
+ FreeformFinSetCfg.lbl.Thickness = Thickness:
+ !InnerTubeConfig
+ InnerTubeCfg.tab.Motor = Motor
+ InnerTubeCfg.tab.ttip.Motor = Motor mount configuration
+ InnerTubeCfg.tab.Cluster = Cluster
+ InnerTubeCfg.tab.ttip.Cluster = Cluster configuration
+ InnerTubeCfg.tab.Radialpos = Radial position
+ InnerTubeCfg.tab.ttip.Radialpos = Radial position
+ InnerTubeCfg.lbl.Selectclustercfg = Select cluster configuration:
+ InnerTubeCfg.lbl.TubeSep = Tube separation:
+ InnerTubeCfg.lbl.ttip.TubeSep = The separation of the tubes, 1.0 = touching each other
+ InnerTubeCfg.lbl.Rotation = Rotation:
+ InnerTubeCfg.lbl.ttip.Rotation = Rotation angle of the cluster configuration
+ InnerTubeCfg.lbl.Rotangle = Rotation angle of the cluster configuration
+ InnerTubeCfg.but.Splitcluster = Split cluster
+ InnerTubeCfg.lbl.longA1 = <html>Split the cluster into separate components.<br>
+ InnerTubeCfg.lbl.longA2 = This also duplicates all components attached to this inner tube.
+ InnerTubeCfg.but.Resetsettings = Reset settings
+ InnerTubeCfg.but.ttip.Resetsettings = Reset the separation and rotation to the default values
+ ! LaunchLugConfig
+ LaunchLugCfg.lbl.Length = Length:
+ LaunchLugCfg.lbl.Outerdiam = Outer diameter:
+ LaunchLugCfg.lbl.Innerdiam = Inner diameter:
+ LaunchLugCfg.lbl.Thickness = Thickness:
+ LaunchLugCfg.lbl.Radialpos = Radial position:
+ LaunchLugCfg.lbl.Posrelativeto = Position relative to:
+ LaunchLugCfg.lbl.plus = plus
+ LaunchLugCfg.tab.General = General
+ LaunchLugCfg.tab.Generalprop = General properties
+ ! MassComponentConfig
+ MassComponentCfg.lbl.Mass = Mass
+ MassComponentCfg.lbl.Length = Length
+ MassComponentCfg.lbl.Diameter = Diameter
+ MassComponentCfg.lbl.PosRelativeto = Position relative to:
+ MassComponentCfg.lbl.plus = plus
+ MassComponentCfg.tab.General = General
+ MassComponentCfg.tab.ttip.General = General properties
+ MassComponentCfg.tab.Radialpos = Radial position
+ MassComponentCfg.tab.ttip.Radialpos = Radial position configuration
+ MassComponentCfg.lbl.Radialdistance = Radial distance:
+ MassComponentCfg.lbl.Radialdirection = Radial direction:
+ MassComponentCfg.but.Reset = Reset
+ ! MotorConfig
+ MotorCfg.checkbox.compmotormount = This component is a motor mount
+ MotorCfg.lbl.Motorcfg = Motor configuration:
+ MotorCfg.but.New = New
+ MotorCfg.lbl.Currentmotor = Current motor:
+ MotorCfg.lbl.Motoroverhang = Motor overhang:
+ MotorCfg.lbl.Ignitionat = Ignition at:
+ MotorCfg.lbl.plus = plus
+ MotorCfg.lbl.seconds = seconds
+ MotorCfg.lbl.longA1 = The current design has only one stage.
+ MotorCfg.lbl.longA2 = Stages can be added by clicking \"New stage\".
+ MotorCfg.lbl.longB1 = The current design has
+ MotorCfg.lbl.longB2 = stages.
+ MotorCfg.but.Selectmotor = Select motor
+ MotorCfg.but.Removemotor = Remove motor
+ MotorCfg.lbl.motorLabel = None
+ ! NoseConeConfig
+ NoseConeCfg.lbl.Noseconeshape = Nose cone shape:
+ NoseConeCfg.lbl.Shapeparam = Shape parameter:
+ NoseConeCfg.lbl.Noseconelength = Nose cone length:
+ NoseConeCfg.lbl.Basediam = Base diameter:
+ NoseConeCfg.checkbox.Automatic = Automatic
+ NoseConeCfg.lbl.Wallthickness = Wall thickness:
+ NoseConeCfg.checkbox.Filled = Filled
+ NoseConeCfg.tab.General = General
+ NoseConeCfg.tab.ttip.General = General properties
+ NoseConeCfg.tab.Shoulder = Shoulder
+ NoseConeCfg.tab.ttip.Shoulder = Shoulder properties
+ ! ParachuteConfig
+ ParachuteCfg.lbl.Canopy = Canopy:
+ ParachuteCfg.lbl.Diameter = Diameter:
+ ParachuteCfg.lbl.Material = Material:
+ ParachuteCfg.combo.MaterialModel = The component material affects the weight of the component.
+ ParachuteCfg.lbl.longA1 = <html>Drag coefficient C<sub>D</sub>:
+ ParachuteCfg.lbl.longB1 = <html>The drag coefficient relative to the total area of the parachute.<br>
+ ParachuteCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate.  
+ ParachuteCfg.lbl.longB3 = A typical value for parachutes is 0.8.
+ ParachuteCfg.but.Reset = Reset
+ ParachuteCfg.lbl.Shroudlines = Shroud lines:
+ ParachuteCfg.lbl.Numberoflines = Number of lines:
+ ParachuteCfg.lbl.Linelength = Line length:
+ ParachuteCfg.lbl.Material = Material:
+ ParachuteCfg.lbl.Posrelativeto = Position relative to:
+ ParachuteCfg.lbl.plus = plus
+ ParachuteCfg.lbl.Packedlength = Packed length:
+ ParachuteCfg.lbl.Packeddiam = Packed diameter:
+ ParachuteCfg.lbl.Deploysat = Deploys at:
+ ParachuteCfg.lbl.seconds = seconds
+ ParachuteCfg.lbl.Altitude = Altitude:
+ ParachuteCfg.tab.General = General
+ ParachuteCfg.tab.ttip.General = General properties
+ ParachuteCfg.tab.Radialpos = Radial position
+ ParachuteCfg.tab.ttip.Radialpos = Radial position configuration
+ ParachuteCfg.lbl.Radialdistance = Radial distance:
+ ParachuteCfg.lbl.Radialdirection = Radial direction:
+ ParachuteCfg.but.Reset = Reset
+ ! ShockCordConfig 
+ ShockCordCfg.lbl.Shockcordlength = Shock cord length
+ ShockCordCfg.lbl.Shockcordmaterial = Shock cord material:
+ ShockCordCfg.lbl.Posrelativeto = Position relative to:
+ ShockCordCfg.lbl.plus = plus
+ ShockCordCfg.lbl.Packedlength = Packed length:
+ ShockCordCfg.lbl.Packeddiam = Packed diameter:
+ ShockCordCfg.tab.General = General
+ ShockCordCfg.tab.ttip.General = General properties
+ !SleeveConfig
+ SleeveCfg.tab.Outerdiam = Outer diameter:
+ SleeveCfg.tab.Innerdiam = Inner diameter:
+ SleeveCfg.tab.Wallthickness = Wall thickness:
+ SleeveCfg.tab.Length = Length:
+ SleeveCfg.tab.General = General
+ SleeveCfg.tab.Generalproperties = General properties
+ ! StreamerConfig
+ StreamerCfg.lbl.Striplength = Strip length:
+ StreamerCfg.lbl.Stripwidth = Strip width:
+ StreamerCfg.lbl.Striparea = Strip area:
+ StreamerCfg.lbl.Aspectratio = Aspect ratio:
+ StreamerCfg.lbl.Material = Material:
+ StreamerCfg.combo.ttip.MaterialModel = The component material affects the weight of the component.
+ StreamerCfg.lbl.longA1 = <html>Drag coefficient C<sub>D</sub>:
+ StreamerCfg.lbl.longB1 = <html>The drag coefficient relative to the total area of the streamer.<br>
+ StreamerCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate.
+ StreamerCfg.lbl.Automatic = Automatic
+ StreamerCfg.lbl.longC1 = The drag coefficient is relative to the area of the streamer.
+ StreamerCfg.lbl.Posrelativeto = Position relative to:
+ StreamerCfg.lbl.plus = plus
+ StreamerCfg.lbl.Packedlength = Packed length:
+ StreamerCfg.lbl.Packeddiam = Packed diameter:
+ StreamerCfg.lbl.Deploysat = Deploys at:
+ StreamerCfg.lbl.seconds = seconds
+ StreamerCfg.lbl.Altitude = Altitude:
+ StreamerCfg.tab.General = General
+ StreamerCfg.tab.ttip.General = General properties
+ StreamerCfg.tab.Radialpos = Radial position
+ StreamerCfg.tab.ttip.Radialpos = Radial position configuration
+ StreamerCfg.lbl.Radialdistance = Radial distance:
+ StreamerCfg.lbl.Radialdirection = Radial direction:
+ StreamerCfg.but.Reset = Reset
+ ! ThicknessRingComponentConfig
+ ThicknessRingCompCfg.tab.Outerdiam = Outer diameter:
+ ThicknessRingCompCfg.tab.Innerdiam = Inner diameter:
+ ThicknessRingCompCfg.tab.Wallthickness = Wall thickness:
+ ThicknessRingCompCfg.tab.Length = Length:
+ ThicknessRingCompCfg.tab.General = General
+ ThicknessRingCompCfg.tab.Generalprop = General properties
+ ! TransitionConfig
+ TransitionCfg.lbl.Transitionshape = Transition shape:
+ TransitionCfg.checkbox.Clipped = Clipped
+ TransitionCfg.lbl.Shapeparam = Shape parameter:
+ TransitionCfg.lbl.Transitionlength = Transition length:
+ TransitionCfg.lbl.Forediam = Fore diameter:
+ TransitionCfg.checkbox.Automatic = Automatic
+ TransitionCfg.lbl.Aftdiam = Aft diameter:
+ TransitionCfg.lbl.Wallthickness = Wall thickness:
+ TransitionCfg.checkbox.Filled = Filled
+ TransitionCfg.tab.General = General
+ TransitionCfg.tab.Generalproperties = General properties
+ TransitionCfg.tab.Shoulder = Shoulder
+ TransitionCfg.tab.Shoulderproperties = Shoulder properties
+ ! TrapezoidFinSetConfig
+ TrapezoidFinSetCfg.lbl.Nbroffins = Number of fins:
+ TrapezoidFinSetCfg.lbl.ttip.Nbroffins = The number of fins in the fin set.
+ TrapezoidFinSetCfg.lbl.Finrotation = Fin rotation:
+ TrapezoidFinSetCfg.lbl.ttip.Finrotation = The angle of the first fin in the fin set.
+ TrapezoidFinSetCfg.lbl.Fincant = Fin cant:
+ TrapezoidFinSetCfg.lbl.ttip.Fincant =The angle that the fins are canted with respect to the rocket body.
+ TrapezoidFinSetCfg.lbl.Rootchord = Root chord:
+ TrapezoidFinSetCfg.lbl.Tipchord = Tip chord:
+ TrapezoidFinSetCfg.lbl.Height = Height:
+ TrapezoidFinSetCfg.lbl.Sweeplength = Sweep length:
+ TrapezoidFinSetCfg.lbl.Sweepangle = Sweep angle:
+ TrapezoidFinSetCfg.lbl.FincrossSection = Fin cross section:
+ TrapezoidFinSetCfg.lbl.Thickness = Thickness:
+ TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative to:
+ TrapezoidFinSetCfg.lbl.plus = plus
+ TrapezoidFinSetCfg.tab.General = General
+ TrapezoidFinSetCfg.tab.Generalproperties = General properties
+ !MotorConfigurationModel
+ MotorCfgModel.Editcfg = Edit configurations
+ ! StorageOptionChooser
+ StorageOptChooser.lbl.Simdatatostore = Simulated data to store:
+ StorageOptChooser.rdbut.Allsimdata = All simulated data
+ StorageOptChooser.lbl.longA1 = <html>Store all simulated data.<br>
+ StorageOptChooser.lbl.longA2 = This can result in very large files!
+ StorageOptChooser.rdbut.Every = Every
+ StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>
+ StorageOptChooser.lbl.longB2 = Larger values result in smaller files.
+ StorageOptChooser.lbl.seconds = seconds
+ StorageOptChooser.rdbut.Onlyprimfig = Only primary figures
+ StorageOptChooser.lbl.longC1 = <html>Store only the values shown in the summary table.<br>
+ StorageOptChooser.lbl.longC2 = This results in the smallest files.
+ StorageOptChooser.checkbox.Compfile = Compress file
+ StorageOptChooser.lbl.UsingComp = Using compression reduces the file size significantly.
+ StorageOptChooser.lbl.longD1 = An estimate on how large the resulting file would be with the present options.
+ StorageOptChooser.ttip.Saveopt = Save options
+ StorageOptChooser.lbl.Estfilesize = Estimated file size:
+ StorageOptChooser.lbl.Saveopt = Save options
+ ! ThrustCurveMotorSelectionPanel
+ TCMotorSelPan.lbl.Selrocketmotor = Select rocket motor:
+ TCMotorSelPan.checkbox.hideSimilar = Hide very similar thrust curves
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Show all motors
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Show motors with diameter less than that of the motor mount
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Show motors with diameter equal to that of the motor mount
+ TCMotorSelPan.lbl.Motormountdia = Motor mount diameter:
+ TCMotorSelPan.lbl.Search = Search:
+ TCMotorSelPan.lbl.Selectthrustcurve = Select thrust curve:
+ TCMotorSelPan.lbl.Ejectionchargedelay = Ejection charge delay:
+ TCMotorSelPan.equalsIgnoreCase.None = None
+ TCMotorSelPan.lbl.NumberofsecondsorNone = (Number of seconds or \"None\")
+ TCMotorSelPan.lbl.Totalimpulse = Total impulse:
+ TCMotorSelPan.lbl.Avgthrust = Avg. thrust:
+ TCMotorSelPan.lbl.Maxthrust = Max. thrust:
+ TCMotorSelPan.lbl.Burntime = Burn time:
+ TCMotorSelPan.lbl.Launchmass = Launch mass:
+ TCMotorSelPan.lbl.Emptymass = Empty mass:
+ TCMotorSelPan.lbl.Datapoints = Data points:
+ TCMotorSelPan.lbl.Digest = Digest:
+ TCMotorSelPan.title.Thrustcurve = Thrust curve:
+ TCMotorSelPan.title.Thrust = Thrust
+ TCMotorSelPan.delayBox.None = None
+ ! PlotDialog
+ PlotDialog.title.Flightdataplot = Flight data plot
+ PlotDialog.Chart.Simulatedflight = Simulated flight
+ PlotDialog.CheckBox.Showdatapoints = Show data points
+ PlotDialog.lbl.Chart = Click+drag down+right to zoom in, up+left to zoom out
  
  ! "main" prefix is used for the main application dialog
  
@@@ -22,6 -874,7 +896,7 @@@ main.menu.file.open = Open..
  main.menu.file.openExample = Open example...
  main.menu.file.save = Save
  main.menu.file.saveAs = Save as...
 -main.menu.file.print = Print...
++main.menu.file.print = Print / Export PDF...
  main.menu.file.close = Close
  main.menu.file.quit = Quit
  
@@@ -41,7 -894,289 +916,285 @@@ main.menu.help = Hel
  main.menu.help.license = License
  main.menu.help.bugReport = Bug report
  main.menu.help.debugLog = Debug log
- main.menu.help. = About
+ main.menu.help.about = About
+ main.menu.debug = Debug
+ main.menu.debug.whatisthismenu = What is this menu?
+ main.menu.debug.createtestrocket = Create test rocket
+ ! database
+ ! Translate here all material database
+ !
+ ! Material database
+ ! BULK_MATERIAL
+ Databases.materials.Acrylic = Acrylic
+ Databases.materials.Balsa = Balsa
+ Databases.materials.Birch = Birch
+ Databases.materials.Cardboard = Cardboard
+ Databases.materials.Carbonfiber = Carbon fiber
+ Databases.materials.Cork = Cork
+ Databases.materials.DepronXPS = Depron (XPS)
+ Databases.materials.Fiberglass = Fiberglass
+ Databases.materials.Kraftphenolic = Kraft phenolic
+ Databases.materials.Maple = Maple
+ Databases.materials.Paperoffice = Paper (office)
+ Databases.materials.Pine = Pine
+ Databases.materials.Plywoodbirch = Plywood (birch)
+ Databases.materials.PolycarbonateLexan = Polycarbonate (Lexan)
+ Databases.materials.Polystyrene = Polystyrene
+ Databases.materials.PVC = PVC
+ Databases.materials.Spruce = Spruce
+ Databases.materials.StyrofoamgenericEPS = Styrofoam (generic EPS)
+ Databases.materials.StyrofoamBluefoamXPS = Styrofoam \"Blue foam\" (XPS)
+ Databases.materials.Quantumtubing = Quantum tubing
+ !SURFACE_MATERIAL
+ Databases.materials.Ripstopnylon = Ripstop nylon
+ Databases.materials.Mylar = Mylar
+ Databases.materials.Polyethylenethin = Polyethylene (thin)
+ Databases.materials.Polyethyleneheavy = Polyethylene (heavy)
+ Databases.materials.Silk = Silk
+ Databases.materials.Paperoffice = Paper (office)
+ Databases.materials.Cellophane = Cellophane
 -Databases.materials.Creape paper = Cr\u00eape paper
++Databases.materials.Crepepaper = Cr\u00eape paper
+ ! LINE_MATERIAL
+ Databases.materials.Threadheavy-duty = Thread (heavy-duty)
+ Databases.materials.Elasticcordround2mm = Elastic cord (round 2mm, 1/16 in)
+ Databases.materials.Elasticcordflat6mm = Elastic cord (flat  6mm, 1/4 in)
+ Databases.materials.Elasticcordflat12mm = Elastic cord (flat 12mm, 1/2 in)
+ Databases.materials.Elasticcordflat19mm = Elastic cord (flat 19mm, 3/4 in)
+ Databases.materials.Elasticcordflat25mm = Elastic cord (flat 25mm, 1 in)
+ Databases.materials.Braidednylon2mm = Braided nylon (2 mm, 1/16 in)
+ Databases.materials.Braidednylon3mm = Braided nylon (3 mm, 1/8 in)
+ Databases.materials.Tubularnylon11mm = Tubular nylon (11 mm, 7/16 in)
+ Databases.materials.Tubularnylon14mm = Tubular nylon (14 mm, 9/16 in)
+ Databases.materials.Tubularnylon25mm = Tubular nylon (25 mm, 1 in)
+ ! ExternalComponent
+ ExternalComponent.Rough = Rough
+ ExternalComponent.Unfinished = Unfinished
+ ExternalComponent.Regularpaint = Regular paint
+ ExternalComponent.Smoothpaint = Smooth paint
+ ExternalComponent.Polished = Polished
+ ! LineStyle
+ LineStyle.Solid = Solid
+ LineStyle.Dashed = Dashed
+ LineStyle.Dotted = Dotted
+ LineStyle.Dash-dotted = Dash-dotted
+ LineStyle.Defaultstyle = Default style
+ ! Shape
+ Shape.Conical = Conical
+ Shape.Conical.desc1 = A conical nose cone has a profile of a triangle.
+ Shape.Conical.desc2 = A conical transition has straight sides.
+ Shape.Ogive = Ogive
+ Shape.Ogive.desc1 = An ogive nose cone has a profile that is a segment of a circle.  The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube, values less than 1 produce <b>secant ogives</b>.
+ Shape.Ogive.desc2 = An ogive transition has a profile that is a segment of a circle.          The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube at the aft end, values less than 1 produce <b>secant ogives</b>.
+ Shape.Ellipsoid = Ellipsoid
+ Shape.Ellipsoid.desc1 = An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2&times;<i>Length</i> and <i>Diameter</i>.
+ Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2&times;<i>Length</i> and <i>Diameter</i>.  If the transition is not clipped, then the profile is extended at the center by the corresponding radius.            
+ Shape.Powerseries = Power series
 -Shape.Powerseries.descA1 = A power series nose cone has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 this is a <b>
 -Shape.Powerseries.descA2 = -power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a <b>
 -Shape.Powerseries.descA3 = -power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.
 -Shape.Powerseries.descB1 = A power series transition has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 the transition is <b>
 -Shape.Powerseries.descB2 = -power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a <b>
 -Shape.Powerseries.descB3 = -power</b>, and for <i>k</i>=1 <b>conical</b>.
++Shape.Powerseries.desc1 = A power series nose cone has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 this is a <b>\u00BD-power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a <b>\u00BE-power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.
++Shape.Powerseries.desc2 = A power series transition has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 the transition is <b>\u00BD-power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a <b>\u00BE-power</b>, and for <i>k</i>=1 <b>conical</b>.
+ Shape.Parabolicseries = Parabolic series
+ Shape.Parabolicseries.desc1 = A parabolic series nose cone has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.
+ Shape.Parabolicseries.desc2 = A parabolic series transition has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.
+ Shape.Haackseries = Haack series
+ Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an <b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.
+ Shape.Haackseries.desc2 = The Haack series <i>nose cones</i> are designed to minimize drag.  These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, while a value of 0.333 produces an <b>LV-Haack</b> shape.             
+ ! RocketComponent
+ RocketComponent.Position.TOP = Top of the parent component
+ RocketComponent.Position.MIDDLE = Middle of the parent component
+ RocketComponent.Position.BOTTOM = Bottom of the parent component
+ RocketComponent.Position.AFTER = After the parent component
+ RocketComponent.Position.ABSOLUTE = Tip of the nose cone
+ ! LaunchLug
+ LaunchLug.Launchlug = Launch lug
+ ! NoseCone
+ NoseCone.NoseCone = Nose cone
+ ! Transition
+ Transition.Transition = Transition
+ !Stage
+ Stage.Stage = Stage
+ ! BodyTube
+ BodyTube.BodyTube = Body tube
+ ! TubeCoupler
+ TubeCoupler.TubeCoupler = Tube coupler
+ !InnerTube
+ InnerTube.InnerTube = Inner Tube
+ ! TrapezoidFinSet
+ TrapezoidFinSet.TrapezoidFinSet = Trapezoidal fin set
+ ! FreeformFinSet
+ FreeformFinSet.FreeformFinSet = Freeform fin set
+ !MassComponent
+ MassComponent.MassComponent = Mass component
+ ! Parachute
+ Parachute.Parachute = Parachute
+ ! ShockCord
+ ShockCord.ShockCord = Shock cord
+ ! Bulkhead
+ Bulkhead.Bulkhead = Bulkhead
+ !Rocket
+ Rocket.motorCount.Nomotor = [No motors]
+ Rocket.compname.Rocket = Rocket
+ !MotorMount
+ MotorMount.IgnitionEvent.AUTOMATIC = Automatic (launch or ejection charge)
+ MotorMount.IgnitionEvent.LAUNCH = Launch
+ MotorMount.IgnitionEvent.EJECTION_CHARGE = First ejection charge of previous stage
+ MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage
+ MotorMount.IgnitionEvent.NEVER = Never
+ !ComponentIcons 
+ ComponentIcons.Nosecone = Nose cone
+ ComponentIcons.Bodytube = Body tube
+ ComponentIcons.Transition = Transition
+ ComponentIcons.Trapezoidalfinset = Trapezoidal fin set
+ ComponentIcons.Ellipticalfinset = Elliptical fin set
+ ComponentIcons.Freeformfinset = Freeform fin set
+ ComponentIcons.Launchlug = Launch lug
+ ComponentIcons.Innertube = Inner tube
+ ComponentIcons.Tubecoupler = Tube coupler
+ ComponentIcons.Centeringring = Centering ring
+ ComponentIcons.Bulkhead = Bulk head
+ ComponentIcons.Engineblock = Engine block
+ ComponentIcons.Parachute = Parachute
+ ComponentIcons.Streamer = Streamer
+ ComponentIcons.Shockcord = Shock cord
+ ComponentIcons.Masscomponent = Mass component
+ ComponentIcons.disabled = (disabled)
+ ! StageAction
+ StageAction.Stage = Stage
+ ! RecoveryDevice
+ RecoveryDevice.DeployEvent.LAUNCH = Launch (plus NN seconds)
+ RecoveryDevice.DeployEvent.EJECTION = First ejection charge of this stage
+ RecoveryDevice.DeployEvent.APOGEE = Apogee
+ RecoveryDevice.DeployEvent.ALTITUDE = Specific altitude during descent
+ RecoveryDevice.DeployEvent.NEVER = Never
+ ! FlightEvent
+ FlightEvent.Type.LAUNCH = Launch
+ FlightEvent.Type.IGNITION = Motor ignition
+ FlightEvent.Type.LIFTOFF = Lift-off
+ FlightEvent.Type.LAUNCHROD = Launch rod clearance
+ FlightEvent.Type.BURNOUT = Motor burnout
+ FlightEvent.Type.EJECTION_CHARGE = Ejection charge
+ FlightEvent.Type.STAGE_SEPARATION = Stage separation
+ FlightEvent.Type.APOGEE = Apogee
+ FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Recovery device deployment
+ FlightEvent.Type.GROUND_HIT = Ground hit
+ FlightEvent.Type.SIMULATION_END = Simulation end
+ FlightEvent.Type.ALTITUDE = Altitude change
+ ! ThrustCurveMotorColumns
+ TCurveMotorCol.MANUFACTURER = Manufacturer
+ TCurveMotorCol.DESIGNATION = Designation
+ TCurveMotorCol.TYPE = Type
+ TCurveMotorCol.DIAMETER = Diameter
+ TCurveMotorCol.LENGTH = Length
+ ! RocketInfo
+ RocketInfo.lengthLine.Length = Length
+ RocketInfo.lengthLine.maxdiameter = , max. diameter
+ RocketInfo.massText1 = Mass with motors 
+ RocketInfo.massText2 = Mass with no motors
+ RocketInfo.at = at M=
+ RocketInfo.cgText = CG:
+ RocketInfo.cpText = CP:
+ RocketInfo.stabText = Stability:
+ RocketInfo.Warning = Warning:
+ RocketInfo.Calculating = Calculating...
+ RocketInfo.Apogee = Apogee:
+ RocketInfo.Maxvelocity = Max. velocity:
+ RocketInfo.Maxacceleration = Max. acceleration:
+ RocketInfo.apogeeValue = N/A
+ RocketInfo.Mach = (Mach
+ RocketInfo.velocityValue = N/A
+ RocketInfo.accelerationValue = N/A
+ ! FinSet
+ FinSet.CrossSection.SQUARE = Square
+ FinSet.CrossSection.ROUNDED = Rounded
+ FinSet.CrossSection.AIRFOIL = Airfoil
+ FinSet.TabRelativePosition.FRONT = Root chord leading edge
+ FinSet.TabRelativePosition.CENTER = Root chord midpoint
+ FinSet.TabRelativePosition.END = Root chord trailing edge
  
+ ! FlightDataType
+ FlightDataType.TYPE_TIME = Time
+ FlightDataType.TYPE_ALTITUDE = Altitude
+ FlightDataType.TYPE_VELOCITY_Z = Vertical velocity
+ FlightDataType.TYPE_ACCELERATION_Z = Vertical acceleration
+ FlightDataType.TYPE_VELOCITY_TOTAL = Total velocity
+ FlightDataType.TYPE_ACCELERATION_TOTAL = Total acceleration
+ FlightDataType.TYPE_POSITION_X = Position upwind
+ FlightDataType.TYPE_POSITION_Y = Position parallel to wind
+ FlightDataType.TYPE_POSITION_XY = Lateral distance
+ FlightDataType.TYPE_POSITION_DIRECTION = Lateral direction
+ FlightDataType.TYPE_VELOCITY_XY = Lateral velocity
+ FlightDataType.TYPE_ACCELERATION_XY = Lateral acceleration
+ FlightDataType.TYPE_AOA = Angle of attack
+ FlightDataType.TYPE_ROLL_RATE = Roll rate
+ FlightDataType.TYPE_PITCH_RATE = Pitch rate
+ FlightDataType.TYPE_YAW_RATE = Yaw rate
+ FlightDataType.TYPE_MASS = Mass
+ FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia
+ FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia
+ FlightDataType.TYPE_CP_LOCATION = CP location
+ FlightDataType.TYPE_CG_LOCATION = CG location
+ FlightDataType.TYPE_STABILITY = Stability margin calibers
+ FlightDataType.TYPE_MACH_NUMBER = Mach number
+ FlightDataType.TYPE_REYNOLDS_NUMBER = Reynolds number
+ FlightDataType.TYPE_THRUST_FORCE = Thrust
+ FlightDataType.TYPE_DRAG_FORCE = Drag force
+ FlightDataType.TYPE_DRAG_COEFF = Drag coefficient
+ FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient
+ FlightDataType.TYPE_FRICTION_DRAG_COEFF = Friction drag coefficient
+ FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Pressure drag coefficient
+ FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient
+ FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient
+ FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient
+ FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient
+ FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient
+ FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient
+ FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient
+ FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient
+ FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient
+ FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient
+ FlightDataType.TYPE_REFERENCE_LENGTH = Reference lenght
+ FlightDataType.TYPE_REFERENCE_AREA = Reference area
+ FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith)
+ FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth)
+ FlightDataType.TYPE_WIND_VELOCITY = Wind velocity
+ FlightDataType.TYPE_AIR_TEMPERATURE = Air temperature
+ FlightDataType.TYPE_AIR_PRESSURE = Air pressure
+ FlightDataType.TYPE_SPEED_OF_SOUND = Speed of sound
+ FlightDataType.TYPE_TIME_STEP = Simulation time step
+ FlightDataType.TYPE_COMPUTATION_TIME = Computation time
  
+ ! PlotConfiguration
+ PlotConfiguration.Verticalmotion = Vertical motion vs. time
+ PlotConfiguration.Totalmotion = Total motion vs. time
+ PlotConfiguration.Flightside = Flight side profile
+ PlotConfiguration.Stability = Stability vs. time
+ PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number
+ PlotConfiguration.Rollcharacteristics = Roll characteristics
+ PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time
+ PlotConfiguration.Simulationtime = Simulation time step and computation time
  
+ ! Warning
+ Warning.LargeAOA.str1 = Large angle of attack encountered.
+ Warning.LargeAOA.str2 = Large angle of attack encountered (
+ Warning.DISCONTINUITY = Discontinuity in rocket body diameter.
+ Warning.THICK_FIN = Thick fins may not be modeled accurately.
+ Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate.
+ Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation
+ Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Recovery device opened while motor still burning.
+ Warning.FILE_INVALID_PARAMETER = Invalid parameter encountered, ignoring.
index 0000000000000000000000000000000000000000,9731785f1af156ea7bacdf107f50f2e4863e9e1a..bd51927fb259a5eece8925c61ee58ca7e0833677
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,1171 +1,1171 @@@
 -Databases.materials.Creape paper = Krepppapier\r
+ ! Set to the name of the current translation file (used for debugging purposes)\r
+ debug.currentFile = messages_de.properties\r
\r
+ ! RocketActions\r
+ RocketActions.checkbox.Donotaskmeagain = Nicht wieder fragen\r
+ RocketActions.lbl.Youcanchangedefop = Die Standardaktion kann in den Einstellungen geändert werden.\r
+ RocketActions.showConfirmDialog.lbl1 = Simulationen löschen?\r
+ RocketActions.showConfirmDialog.lbl2 = <html><i>Diese Aktion kann nicht rückgängig gemacht werden.</i>\r
+ RocketActions.showConfirmDialog.title = Simulationen löschen\r
+ RocketActions.DelCompAct.Delete = Löschen\r
+ RocketActions.DelCompAct.ttip.Delete = Die ausgewählte Komponente löschen.\r
+ RocketActions.DelSimuAct.Delete = Löschen\r
+ RocketActions.DelSimuAct.ttip.Delete = Die ausgewählte Simulation löschen.\r
+ RocketActions.DelAct.Delete = Löschen\r
+ RocketActions.DelAct.ttip.Delete = Die ausgewählte Komponente oder Simulation löschen.\r
+ RocketActions.CutAction.Cut = Ausschneiden\r
+ RocketActions.CutAction.ttip.Cut = Diese Komponente oder Simulation ausschneiden und aus dem Design entfernen\r
+ RocketActions.CopyAct.Copy = Kopieren\r
+ RocketActions.CopyAct.ttip.Copy = Komponente (und Subkomponenten) in die Zwischenablage kopieren.\r
+ RocketActions.PasteAct.Paste = Einfügen\r
+ RocketActions.PasteAct.ttip.Paste = Fügt die Komponente oder Simulation aus der Zwischenablage in das Design ein.\r
+ RocketActions.EditAct.Edit = Bearbeiten\r
+ RocketActions.EditAct.ttip.Edit = Die ausgewählte Komponente bearbeiten.\r
+ RocketActions.NewStageAct.Newstage = Neue Stufe\r
+ RocketActions.NewStageAct.ttip.Newstage = Fügt eine neue Stufe in das Raketendesign ein.\r
+ RocketActions.ActBoosterstage = Booster-Stufe\r
+ RocketActions.MoveUpAct.Moveup = Nach oben verschieben\r
+ RocketActions.MoveUpAct.ttip.Moveup = Verschiebt diese Komponente nach oben.\r
+ RocketActions.MoveDownAct.Movedown = Nach unten verschieben\r
+ RocketActions.MoveDownAct.ttip.Movedown = Verschiebt diese Komponente nach unten.\r
\r
+ ! RocketPanel\r
+ RocketPanel.FigTypeAct.Sideview = Seitenansicht\r
+ RocketPanel.FigTypeAct.ttip.Sideview = Seitenansicht\r
+ RocketPanel.FigTypeAct.Backview = Rückansicht\r
+ RocketPanel.FigTypeAct.ttip.Backview = Vorderansicht\r
+ RocketPanel.lbl.Motorcfg = Motorkonfiguration\r
+ RocketPanel.lbl.infoMessage = <html>Zum Auswählen klicken&nbsp;&nbsp; Shift+Klick andere auswählen &nbsp;&nbsp; Doppelklick zum Bearbeiten &nbsp;&nbsp; Klicken+Ziehen zum Verschieben\r
\r
\r
+ ! BasicFrame\r
+ BasicFrame.SimpleFileFilter1 = Alle Raketendesigns (*.ork; *.rkt)\r
+ BasicFrame.SimpleFileFilter2 = OpenRocket Designs (*.ork)\r
+ BasicFrame.SimpleFileFilter3 = RockSim Designs (*.rkt)\r
+ BasicFrame.tab.Rocketdesign = Raketendesign\r
+ BasicFrame.tab.Flightsim = Flugsimulation\r
+ BasicFrame.title.Addnewcomp = Neue Komponente hinzufügen\r
+ BasicFrame.item.Openrocketdesign = Raketendesign öffnen\r
+ BasicFrame.item.Openexamplerocketdesign = Beispieldesign öffnen\r
+ BasicFrame.item.SavecurRocketdesign = Aktuelles Raketendesign speichern\r
+ BasicFrame.item.SavecurRocketdesnewfile = Aktuelles Raketendesign in eine neue Datei speichern\r
+ BasicFrame.item.Printpart = Komponentenliste und Leitwerkschablone drucken\r
+ BasicFrame.item.Closedesign = Aktuelles Raketendesign schließen\r
+ BasicFrame.item.Quitprogram = Programm beenden\r
+ BasicFrame.menu.Rocketedt = Rakete bearbeiten\r
+ BasicFrame.dlg.lbl1 = Design '\r
+ BasicFrame.dlg.lbl2 = ist nicht gespeichert.\r
+ BasicFrame.dlg.lbl3 = Möchten Sie es speichern?\r
+ BasicFrame.dlg.title = Design nicht gespeichert\r
+ BasicFrame.StageName.Sustainer = Sustainer\r
+ BasicFrame.WarningDialog.txt1 = Die folgenden Probleme würden beim Öffnen festgestellt\r
+ BasicFrame.WarningDialog.txt2 = Einige Designeigenschaften wurde eventuell nicht korrekt geladen.\r
+ BasicFrame.WarningDialog.title = Warnungen während des Öffnens der Datei\r
\r
+ ! Labels used in buttons of dialog windows\r
+ button.ok = OK\r
+ button.cancel = Abbrechen\r
+ button.close = Schließen\r
\r
+ ! Common labels used in buttons of dialog windows\r
+ dlg.but.ok = OK\r
+ dlg.but.cancel = Abbrechen\r
+ dlg.but.close = Schließen\r
\r
+ ! About Dialog\r
+ about.dlg.but.close = Schließen\r
+ about.dlg.lbl.translation = Ins Deutsche übersetzt von Stefan Lobas (ERIG e.V.)\r
+ about.dlg.lbl.transwebsite = http://www.er-ig.de/\r
\r
+ ! Bug Report dialog\r
+ bugreport.dlg.title = Fehlerbericht\r
+ bugreport.dlg.but.Sendbugreport = Fehlerbericht senden\r
+ bugreport.dlg.but.Sendbugreport.Ttip = Automatische einen Fehlerbericht an die OpenRocket-Entwickler senden.\r
+ bugreport.dlg.successmsg1 = Fehlerbericht erfolgreich gesendet.\r
+ bugreport.dlg.successmsg2 = Danke für die Hilfe, OpenRocket noch besser zu machen!\r
+ bugreport.dlg.successmsg3 = Fehlerbericht gesendet\r
+ bugreport.dlg.connectedInternet = <html>Wenn Sie mit dem Internet verbunden sind, können Sie einfach auf <em>Fehlerbericht senden</em> klicken.\r
+ bugreport.dlg.otherwise = Sonst senden Sie den den folgenden Text an diese Adresse:\r
+ bugreport.lbl.Theinformation = Die oben stehenden Informationen können in einem öffentlichen Fehlerbericht erscheinen. Bitte stellen Sie sicher, dass der Bericht keine sensiblen Informationen enthält, die nicht veröffentlicht werden sollen!\r
+ bugreport.dlg.failedmsg1 = OpenRocket konnte den Fehlerbericht nicht versenden:\r
+ bugreport.dlg.failedmsg2 = Bitte senden Sie den Bericht manuell an\r
+ bugreport.dlg.failedmsg3 = Fehler beim Versenden des Berichts\r
+ bugreport.reportDialog.txt = <html><b>Sie können eine Fehler in OpenRocket mitteilen, indem Sie das unten stehende Formular ausfüllen und abschicken.</b><br>Sie können Fehler mit angehängten Dateien auch auf der Projekt-Website mitteilen.\r
+ bugreport.reportDialog.txt2 = Bitte beschreiben Sie kurz, was Sie getan haben, als der Fehler auftrat.</b>\r
\r
\r
+ ! Debug log dialog\r
+ debuglogdlg.but.clear = Löschen\r
+ debuglogdlg.OpenRocketdebuglog = OpenRocket Fehler-Log\r
+ debuglogdlg.Displayloglines = Zeige Log-Zeilen:\r
+ debuglogdlg.Follow = Folgen\r
+ debuglogdlg.col.Time = Zeit\r
+ debuglogdlg.col.Level = Level\r
+ debuglogdlg.col.Location = Ort\r
+ debuglogdlg.col.Message = Nachricht\r
+ debuglogdlg.lbl.Loglinenbr = Log-Zeilennummer\r
+ debuglogdlg.lbl.Time = Zeit:\r
+ debuglogdlg.lbl.Level = Level:\r
\r
\r
+ ! Edit Motor configuration dialog\r
+ edtmotorconfdlg.but.removemotor = Motor entfernen\r
+ edtmotorconfdlg.but.Selectmotor = Motor auswählen\r
+ edtmotorconfdlg.but.Removeconfiguration = Konfiguration entfernen\r
+ edtmotorconfdlg.but.Newconfiguration = Neue Konfiguration\r
+ edtmotorconfdlg.lbl.Motormounts = <html><b>Motorhalterungen:</b>\r
+ edtmotorconfdlg.title.Editmotorconf = Motorkonfiguration bearbeiten\r
+ edtmotorconfdlg.selectcomp = <html>Auswählen, welche Komponenten Motorhalterungen sind:\r
+ edtmotorconfdlg.lbl.Motorconfig = <html><b>Motorkonfigurationen:</b>\r
+ edtmotorconfdlg.lbl.Configname = Name der Konfiguration:\r
+ edtmotorconfdlg.lbl.Leavenamedefault = Leer lassen für Standardwert.\r
\r
+ ! Example design dialog\r
+ exdesigndlg.but.open = Öffnen\r
+ exdesigndlg.lbl.Selectexample = Beispieldesigns zum Öffnen auswählen:\r
+ exdesigndlg.lbl.Openexampledesign = Beispieldesign öffnen\r
+ exdesigndlg.lbl.Exampledesignsnotfound = Beispieldesigns konnten nicht gefunden werden.\r
+ exdesigndlg.lbl.Examplesnotfound = Beispieldesign konnten nicht gefunden werden\r
\r
+ ! Print panel dialog\r
+ printdlg.but.saveaspdf = Als PDF speichern\r
+ printdlg.but.preview = Vorschau\r
+ printdlg.but.settings = Einstellungen\r
\r
+ ! Material edit panel\r
+ matedtpan.but.new = Neu\r
+ matedtpan.but.edit = Bearbeiten\r
+ matedtpan.but.delete = Löschen\r
+ matedtpan.but.revertall = Alle löschen\r
+ matedtpan.col.Material = Material\r
+ matedtpan.col.Type = Typ\r
+ matedtpan.col.Density = Dichte\r
+ matedtpan.col.but.ttip.New = Neues Material hinzufügen\r
+ matedtpan.title.Addcustmaterial = Benutzerdefiniertes Material hinzufügen\r
+ matedtpan.but.ttip.edit = Bestehendes Material bearbeiten\r
+ matedtpan.title.Editmaterial = Material bearbeiten\r
+ matedtpan.title2.Editmaterial = Die mitgelieferten Materialien können nicht verändert werden.\r
+ matedtpan.but.ttip.delete = Benutzerdefiniertes Material löschen\r
+ matedtpan.but.ttip.revertall = Alle benutzerdefinierten Materialien löschen\r
+ matedtpan.title.Deletealluser-defined = Alle benutzerdefinierten Materialien löschen?\r
+ matedtpan.title.Revertall = Alle löschen?\r
+ matedtpan.lbl.edtmaterials = <html><i>Das Bearbeiten der Materialien beeinflusst keine bereits existierenden Raketendesigns.</i>\r
\r
+ !MaterialModel\r
+ MaterialModel.title.Material = Material\r
+ MaterialModel.title.Defcustmat = Benutzerdefiniertes Material definieren\r
\r
\r
+ ! Preference dialog\r
+ pref.dlg.but.add = Hinzufügen\r
+ pref.dlg.but.reset = Zurücksetzen\r
+ pref.dlg.but.checknow = Jetzt überprüfen\r
+ pref.dlg.but.defaultmetric = Metrisches System\r
+ pref.dlg.but.defaultimperial = Imperialistisches System\r
+ pref.dlg.title.Preferences = Einstellungen\r
+ pref.dlg.tab.Units = Einheiten\r
+ pref.dlg.tab.Defaultunits = Standardeinheiten\r
+ pref.dlg.tab.Materials = Materialien\r
+ pref.dlg.tab.Custommaterials = Benutzerdefinierte Materialien\r
+ pref.dlg.tab.Options = Optionen\r
+ pref.dlg.tab.Miscellaneousoptions = Weiter Optionen\r
+ pref.dlg.lbl.Positiontoinsert = Position, um neue Komponenten einzufügen:\r
+ pref.dlg.lbl.Confirmdeletion = Löschen von Simulationen bestätigen\r
+ pref.dlg.lbl.User-definedthrust = Benutzerdefinierte Schubkurven:\r
+ pref.dlg.Allthrustcurvefiles = Alle Schubkurvendateien (*.eng; *.rrse; *.zzip; Verzeichnisse)\r
+ pref.dlg.RASPfiles = RASP Schubkurven (*.eng)\r
+ pref.dlg.RockSimfiles = RockSim Schubkurven(*.rse)\r
+ pref.dlg.ZIParchives = ZIP-Archiv (*.zip)\r
+ pref.dlg.checkbox.Checkupdates = Beim Starten auf neue Version prüfen\r
+ pref.dlg.ttip.Checkupdatesnow = Jetzt auf neue Version prüfen\r
+ pref.dlg.lbl.Selectprefunits = Wählen Sie Ihre bevorzugten Einheiten aus:\r
+ pref.dlg.lbl.Rocketdimensions = Raketendimensionen:\r
+ pref.dlg.lbl.Linedensity = Liniendichte:\r
+ pref.dlg.lbl.Motordimensions = Motordimensionen:\r
+ pref.dlg.lbl.Surfacedensity = Oberflächendichte:\r
+ pref.dlg.lbl.Distance = Entfernung:\r
+ pref.dlg.lbl.Bulkdensity = Bulk density::\r
+ pref.dlg.lbl.Velocity = Geschwindigkeit\r
+ pref.dlg.lbl.Surfaceroughness = Oberflächenrauhheit:\r
+ pref.dlg.lbl.Acceleration = Beschleunigung:\r
+ pref.dlg.lbl.Area = Fläche\r
+ pref.dlg.lbl.Mass = Masse:\r
+ pref.dlg.lbl.Angle = Winkel:\r
+ pref.dlg.lbl.Force = Kraft:\r
+ pref.dlg.lbl.Rollrate = Roll-Rate:\r
+ pref.dlg.lbl.Totalimpulse = Gesamtimpuls:\r
+ pref.dlg.lbl.Temperature = Temperatur:\r
+ pref.dlg.lbl.Momentofinertia = Trägheitsmoment:\r
+ pref.dlg.lbl.Pressure = Druck:\r
+ pref.dlg.lbl.Stability = Stabilität\r
+ pref.dlg.lbl.effect1 = Die Änderungen werden wirksam, wenn Sie das nächste Mal ein Fenster öffnen.\r
+ pref.dlg.lbl.Checkingupdates = Prüfe, ob Aktualisierungen verfügbar sind...\r
+ pref.dlg.lbl.msg1 = Ein Fehler trat bei der Kommunikation mit dem Server auf.\r
+ pref.dlg.lbl.msg2 = Es konnten keine Informationen über Programmaktualisierungen empfangen werden.\r
+ pref.dlg.lbl.msg3 = Sie benutzen die neueste Version von OpenRocket.\r
+ pref.dlg.lbl.msg4 = Keine Aktualisierungen verfügbar.\r
+ pref.dlg.PrefChoiseSelector1 = Immer fragen\r
+ pref.dlg.PrefChoiseSelector2 = in der Mitte einfügen\r
+ a = an das Ende anhängen\r
+ pref.dlg.PrefBooleanSelector1 = Löschen\r
+ pref.dlg.PrefBooleanSelector2 = Bestätigen\r
+ pref.dlg.Add = Hinzufügen\r
+ pref.dlg.DescriptionArea.Adddirectories = Um eigene Schubkurven zu laden, Verzeichnisse, RASP-Motordateien (*.eng), RockSim-Motordateien (*.rse) oder ZIP-Archive mit Semikolon getrennt eingeben. Änderungen werden beim nächsten Neustart von OpenRocket übernommen.\r
\r
\r
+ ! Simulation edit dialog\r
+ simedtdlg.but.runsimulation = Simulation starten\r
+ simedtdlg.but.resettodefault = Auf Standardeinstellungen zurücksetzen\r
+ simedtdlg.but.add = Hinzufügen\r
+ simedtdlg.but.remove = Entfernen\r
+ simedtdlg.title.Editsim = Simulation bearbeiten\r
+ simedtdlg.lbl.Simname = Name der Simulation:\r
+ simedtdlg.tab.Launchcond = Startbedingungen\r
+ simedtdlg.tab.Simopt = Simulationsoptionen\r
+ simedtdlg.tab.Plotdata = Daten plotten\r
+ simedtdlg.tab.Exportdata = Daten exportieren\r
+ simedtdlg.lbl.Motorcfg = Motorkonfiguration:\r
+ simedtdlg.lbl.ttip.Motorcfg = Motorkonfiguration auswählen\r
+ simedtdlg.combo.ttip.motorconf = Die Motorkonfiguration auswählen.\r
+ simedtdlg.lbl.Wind = Wind\r
+ simedtdlg.lbl.Averwindspeed = Durchschnittliche Windgeschwindigkeit:\r
+ simedtdlg.lbl.ttip.Averwindspeed = Die durchschnittliche Windgeschwindigkeit relativ zum Boden.\r
+ simedtdlg.lbl.Stddeviation = Standardabweichung\r
+ simedtdlg.lbl.ttip.Stddeviation = <html>Die Standardabweichung der Windgeschwindigkeit. <br>Die Windgeschwindigkeit liegt im Durchschnitt zu 95% der Zeit in der doppelten Standardabweichung.\r
+ simedtdlg.lbl.Turbulenceintensity = Intensität der Turbulenz:\r
+ simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>Die Intensität der Turbulenz ist die Standardabweichung geteilt durch durch die durchschnittliche Windgeschwindigkeit.<br>\r
+ simedtdlg.lbl.ttip.Turbulenceintensity2 = Typischer Wertebereich von\r
+ simedtdlg.lbl.ttip.Turbulenceintensity3 = bis\r
+ simedtdlg.border.Atmoscond = Atmosphärische Bedingungen\r
+ simedtdlg.checkbox.InterStdAtmosphere = Internationale Standardatmosphäre benutzen\r
+ simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Auswählen, um das Modell der Internationalen Standardatmosphäre zu verwenden.<br>In diesem Modell gilt eine Temperatur von\r
+ simedtdlg.checkbox.ttip.InterStdAtmosphere2 = und ein Luftdruck von\r
+ simedtdlg.checkbox.ttip.InterStdAtmosphere3 = auf Meeresniveau.\r
+ simedtdlg.lbl.Temperature = Temperatur:\r
+ simedtdlg.lbl.ttip.Temperature = Die Temperatur am Startplatz.\r
+ simedtdlg.lbl.Pressure = Luftdruck:\r
+ simedtdlg.lbl.ttip.Pressure = Der Luftdruck am Startplatz.\r
+ simedtdlg.lbl.Launchsite = Startplatz\r
+ simedtdlg.lbl.Latitude = Breitengrad:\r
+ simedtdlg.lbl.ttip.Latitude = <html>Der Breitengrad des Startplatzes beeinflusst die wirksame Gravitationskraft.<br>Positive Werte liegen auf der Nordhalbkugel, negative Werte auf der Südhalbkugel.\r
+ simedtdlg.lbl.Altitude = Höhe:\r
+ simedtdlg.lbl.ttip.Altitude = <html>Die Höhe des Startplatzes über Meeresniveau.<br>Die Höhe des Startplatzes beeinflusst die Position der Rakete im atmosphärischen Modell.\r
+ simedtdlg.border.Launchrod = Startrampe\r
+ simedtdlg.lbl.Length = Länge:\r
+ simedtdlg.lbl.ttip.Length = Die Länge der Startrampe\r
+ simedtdlg.lbl.Angle = Winkel:\r
+ simedtdlg.lbl.ttip.Angle = Der Winkel der Startrampe aus der Vertikalen.\r
+ simedtdlg.lbl.Direction = Richtung:\r
+ simedtdlg.lbl.ttip.Direction1 = <html>Richtung der Startrampe relativ zur Windrichtung<br>\r
+ simedtdlg.lbl.ttip.Direction2 =  = gegen den Wind.\r
+ simedtdlg.lbl.ttip.Direction3 = = mit dem Wind\r
+ simedtdlg.border.Simopt = Simulationsoptionen\r
+ simedtdlg.lbl.Calcmethod = Berechnungsmethode\r
+ simedtdlg.lbl.ttip.Calcmethod = <html>Die erweiterte Methode nach Barrowman berechnet die aerodynamischen Kräfte<br>nach den Gleichungen von Barrowman, die um weitere Faktoren erweitert wurden.\r
+ simedtdlg.lbl.ExtBarrowman = Barrowman (erweitert)\r
+ simedtdlg.lbl.Simmethod = Simulationsmethode:\r
+ simedtdlg.lbl.ttip.Simmethod1 = <html>Der Sechs-Freiheitsgradsimulator erlaubt der Rakete völlige Bewegungsfreiheit während des Fluges.<br>\r
+ simedtdlg.lbl.ttip.Simmethod2 = Das Integrieren wird nach dem numerischen Runge-Kutta-Verfahren 4. Ordnung durchgeführt.\r
+ simedtdlg.lbl.Timestep = Zeitschritt:\r
+ simedtdlg.lbl.ttip.Timestep1 = <html>Die Zeit zwischen den Simulationsschritten.<br>Kleinere Schritte ergeben genauere Ergebnisse, die Simulationen dauern aber länger.<br>\r
+ simedtdlg.lbl.ttip.Timestep2 = Die Berechnung der Simulation mit dem Verfahren 4. Ordnung liefert gute Ergebnisse mit Zeitschritten von\r
+ simedtdlg.but.ttip.resettodefault = Zeitschritte zurücksetzen auf den Standardwert (\r
+ simedtdlg.border.Simlist = Simulationsempfänger\r
+ simedtdlg.txt.longA1 = <html><i>Simulationsempfänger</i> sind ein fortgeschrittenes Feature, dass es benutzerdefinierten Programmen erlaubt, die Simulationsdaten zu empfangen und mit der Simulation zu interagieren.  \r
+ simedtdlg.txt.longA2 = Mehr Information zum Schreiben von Simualtionsempfängern sind in der OpenRocket technical documentation zu finden.\r
+ simedtdlg.lbl.Curlist = Aktuelle Simulationsempfänger:\r
+ simedtdlg.lbl.Addsimlist = Simulationsempfänger hinzufügen\r
+ simedtdlg.lbl.Noflightdata = Keine Flugdaten verfügbar.\r
+ simedtdlg.lbl.runsimfirst = Bitte erst die Simulation ausführen.\r
+ simedtdlg.chart.Simflight = Simulierter Flug\r
+ simedtdlg.dlg.Simres = Ergebnisse der Simulation\r
+ simedtdlg.IntensityDesc.None = Keine\r
+ simedtdlg.IntensityDesc.Verylow = Sehr niedrig\r
+ simedtdlg.IntensityDesc.Low = Niedrig\r
+ simedtdlg.IntensityDesc.Medium = Mittel\r
+ simedtdlg.IntensityDesc.High = Hoch\r
+ simedtdlg.IntensityDesc.Veryhigh = Sehr hoch\r
+ simedtdlg.IntensityDesc.Extreme = Extrem\r
\r
\r
\r
+ ! Simulation Panel\r
+ simpanel.but.newsimulation = Neue Simulation\r
+ simpanel.but.editsimulation = Simulation bearbeiten\r
+ simpanel.but.runsimulations = Simulation ausführen\r
+ simpanel.but.deletesimulations = Simulation löschen\r
+ simpanel.but.plotexport = Plotten / exportieren\r
+ simpanel.but.ttip.newsimulation = Neue Simulation hinzufügen\r
+ simpanel.but.ttip.editsim = Ausgewählte Simulation bearbeiten\r
+ simpanel.but.ttip.runsimu = Neuberechnen der ausgewählten Simulationen\r
+ simpanel.but.ttip.deletesim = Ausgewählte Simulationen löschen\r
+ simpanel.checkbox.donotask = Nicht wieder fragen\r
+ simpanel.lbl.defpref = Die Standardaktion kann in den Einstellungen geändert werden.\r
+ simpanel.dlg.lbl.DeleteSim1 = Die ausgewählten Simulationen löschen?\r
+ simpanel.dlg.lbl.DeleteSim2 = <html><i>Diese Aktion kann nicht rückgängig gemacht werden.</i>\r
+ simpanel.dlg.lbl.DeleteSim3 = Simulationen löschen\r
+ simpanel.col.Name = Name der Simulation:\r
+ simpanel.col.Motors = Motoren\r
+ simpanel.col.Apogee = Apogäum\r
+ simpanel.col.Maxvelocity = max. Geschwindigkeit\r
+ simpanel.col.Maxacceleration = max. Beschleunigung\r
+ simpanel.col.Timetoapogee = Zeit bis zum Apogäum\r
+ simpanel.col.Flighttime = Flugzeit\r
+ simpanel.col.Groundhitvelocity = Landegeschwindigkeit\r
\r
+ ! SimulationRunDialog\r
+ SimuRunDlg.title.RunSim = Simuliere...\r
+ SimuRunDlg.lbl.Running = Arbeite...\r
+ SimuRunDlg.lbl.Simutime = Simulationsdauer:\r
+ SimuRunDlg.lbl.Altitude = Höhe:\r
+ SimuRunDlg.lbl.Velocity = Geschwindigkeit:\r
+ SimuRunDlg.msg.Unabletosim = Simulieren nicht möglich:\r
+ SimuRunDlg.msg.errorOccurred = Während der Simulation trat ein Fehler auf:\r
+ SimuRunDlg.msg.AnException1 = Während der Simulation trat eine Ausnahme auf:\r
+ SimuRunDlg.msg.AnException2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details.\r
+ SimuRunDlg.msg.AssertionError1 = Während der Simulation trat ein Berechnungsfehler auf:\r
+ SimuRunDlg.msg.AssertionError2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details.\r
+ SimuRunDlg.msg.unknownerror1 = Während der Simulation trat ein unbekannter Fehler auf:\r
+ SimuRunDlg.msg.unknownerror2 = Das Programm könnte instabil sein, speichern Sie Ihr Design und starten Sie OpenRocket neu!\r
\r
\r
\r
+ ! SimulationExportPanel\r
+ SimExpPan.desc = Komma getrennte Werte (*.csv)\r
+ SimExpPan.border.Vartoexport = zu exportierende Variablen\r
+ SimExpPan.but.Selectall = Alle auswählen\r
+ SimExpPan.but.Selectnone = Keine auswählen\r
+ SimExpPan.border.Fieldsep = Feldtrennung\r
+ SimExpPan.lbl.Fieldsepstr = Trennzeichen\r
+ SimExpPan.lbl.longA1 = <html>Das Trennzeichen wird benutzt, um die Felder in der exportierten Datei voneinander zu trennen.<br>\r
+ SimExpPan.lbl.longA2 = Für eine CSV-Datei (Comma Separated Values) ein ',' benutzen.\r
+ SimExpPan.checkbox.Includesimudesc = Simulationsbeschreibung einfügen\r
+ SimExpPan.checkbox.ttip.Includesimudesc = Fügt einen Kommentar mit einer Simulationsbeschreibung am Anfang der Datei ein.\r
+ SimExpPan.border.Comments = Kommentare\r
+ SimExpPan.checkbox.Includefielddesc = Feldbeschreibungen einfügen\r
+ SimExpPan.checkbox.ttip.Includefielddesc = Fügt eine Kommentarzeile mit der Beschreibung der exportierten Variablen ein.\r
+ SimExpPan.checkbox.Incflightevents = Flugereignisse einfügen\r
+ SimExpPan.checkbox.ttip.Incflightevents = Fügt eine Kommentarzeile für jedes Flugereignis ein.\r
+ SimExpPan.lbl.Commentchar = Kommentarzeichen:\r
+ SimExpPan.lbl.ttip.Commentchar = Zeichen, das einen Kommentar in der exportierten Datei kennzeichnet.\r
+ SimExpPan.but.Exporttofile = In Datei exportieren...\r
+ SimExpPan.Fileexists.desc1 = File \"",Datei \«"\r
+ SimExpPan.Fileexists.desc2 = \" existiert bereits. Überschreiben?"\r
+ SimExpPan.Fileexists.title = Datei existiert bereits\r
+ SimExpPan.ExportingVar.desc1 = Exportiere Variable 1 aus\r
+ SimExpPan.ExportingVar.desc2 = Exportiere\r
+ SimExpPan.ExportingVar.desc3 = Variablen aus\r
+ SimExpPan.Col.Variable = Variable\r
+ SimExpPan.Col.Unit = Einheit\r
\r
+ ! MotorPlot\r
+ MotorPlot.title.Motorplot = Motorkurve\r
+ MotorPlot.but.Select = Auswahl\r
+ MotorPlot.Chart.Motorthrustcurve = Motorschubkurve\r
+ MotorPlot.Chart.Time = Zeit / s\r
+ MotorPlot.Chart.Thrust = Schub / N\r
+ MotorPlot.txt.Designation = Bezeichnung:\r
+ MotorPlot.txt.Manufacturer = Hersteller\r
+ MotorPlot.txt.Type = Typ:\r
+ MotorPlot.txt.Delays = Verzögerungen:\r
+ MotorPlot.txt.Comment = Kommentare:\n\r
\r
\r
\r
+ ! Simulation plot panel\r
+ simplotpanel.lbl.Presetplotconf = Plotparameter setzen\r
+ simplotpanel.lbl.Xaxistype = X-Achse:\r
+ simplotpanel.lbl.Unit = Einheit:\r
+ simplotpanel.lbl.Yaxistypes = Y-Achse:\r
+ simplotpanel.lbl.Flightevents = Flugereignisse:\r
+ simplotpanel.but.All = Alle auswählen\r
+ simplotpanel.but.None = Keine\r
+ simplotpanel.but.NewYaxisplottype = Neuer Y-Achsenplot-Typ\r
+ simplotpanel.but.Plotflight = Flug plotten\r
+ simplotpanel.lbl.Axis = Achsen:\r
+ simplotpanel.but.ttip.Removethisplot = Diesen Plot löschen\r
+ simplotpanel.Desc = Die Daten werden in zeitlicher Reihenfolge geplottet, auch wenn der X-Achsen-Typ nicht Zeit ist.\r
+ simplotpanel.OptionPane.lbl1 = Es sind maximal 15 Plots erlaubt.\r
+ simplotpanel.OptionPane.lbl2 = Plot konnte nicht hinzugefügt werden\r
+ simplotpanel.AUTO_NAME = Auto\r
+ simplotpanel.LEFT_NAME = Links\r
+ simplotpanel.RIGHT_NAME = Rechts\r
+ simplotpanel.CUSTOM = Benutzerdefiniert\r
\r
+ ! Component add buttons\r
+ compaddbuttons.Bodycompandfinsets = Körperteile und Leitwerke\r
+ compaddbuttons.Nosecone = Spitze\r
+ compaddbuttons.Bodytube = Körperrohr\r
+ compaddbuttons.Transition = Übergang\r
+ compaddbuttons.Trapezoidal = Trapeziod\r
+ compaddbuttons.Elliptical = Elliptisch\r
+ compaddbuttons.Freeform = Freiform\r
+ compaddbuttons.Launchlug = Leit-\nröhrchen\r
+ compaddbuttons.Innercomponent = Innenteile\r
+ compaddbuttons.Innertube = Innenrohr\r
+ compaddbuttons.Coupler = Koppler\r
+ compaddbuttons.Centeringring = Zentrier-\nring\r
+ compaddbuttons.Bulkhead = Schott\r
+ compaddbuttons.Engineblock = Motor-\nblock\r
+ compaddbuttons.Massobjects = Massenobjekte\r
+ compaddbuttons.Parachute = Fallschirm\r
+ compaddbuttons.Streamer = Strömer\r
+ compaddbuttons.Shockcord = Gummiseil\r
+ compaddbuttons.Masscomponent = Massen-\nobjekt\r
+ compaddbuttons.Donotaskmeagain = Nicht wieder fragen\r
+ compaddbuttons.Selectcomppos = Komponentenposition auswählen\r
+ compaddbuttons.lbl.Youcanchange = Die Standardaktion kann in den Einstellungen geändert werden.\r
+ compaddbuttons.lbl.insertcomp = Die Komponente nach der aktuellen Komponente oder als letzte Komponente einfügen?\r
+ compaddbuttons.askPosition.Inserthere = Hier einfügen\r
+ compaddbuttons.askPosition.Addtotheend = Zum Ende hinzufügen\r
+ compaddbuttons.askPosition.Cancel = Abbrechen\r
\r
+ ! Component Analysis Dialog\r
+ componentanalysisdlg.componentanalysis = Component analysis\r
+ componentanalysisdlg.lbl.winddir = Windrichtung\r
+ componentanalysisdlg.TitledBorder.warnings = Warnungen:\r
+ componentanalysisdlg.ToggleBut.worst = Worst\r
+ componentanalysisdlg.lbl.angleofattack = Angriffswinkel:\r
+ componentanalysisdlg.lbl.machnumber = Machzahl:\r
+ componentanalysisdlg.lbl.rollrate = Rollrate:\r
+ componentanalysisdlg.lbl.activestages = Aktive Stufen:\r
+ componentanalysisdlg.lbl.motorconf = Motorkonfiguration:\r
+ componentanalysisdlg.TabStability.Col = Komponente\r
+ componentanalysisdlg.TabStability = Stabilität\r
+ componentanalysisdlg.TabStability.ttip = Stabilitätsinformationen\r
+ componentanalysisdlg.dragTableModel.Col.Component = Komponente\r
+ componentanalysisdlg.dragTableModel.Col.Pressure = <html>Druck C<sub>D</sub>\r
+ componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>\r
+ componentanalysisdlg.dragTableModel.Col.friction = <html>Reibung C<sub>D</sub>\r
+ componentanalysisdlg.dragTableModel.Col.total = <html>Gesamt C<sub>D</sub>\r
+ componentanalysisdlg.dragTabchar = Drag characteristics\r
+ componentanalysisdlg.dragTabchar.ttip = Drag characteristics\r
+ componentanalysisdlg.rollTableModel.Col.component = Komponente\r
+ componentanalysisdlg.rollTableModel.Col.rollforc = Roll forcing coefficient\r
+ componentanalysisdlg.rollTableModel.Col.rolldamp = Roll damping coefficient\r
+ componentanalysisdlg.rollTableModel.Col.total = <html>Gesamt C<sub>l</sub>\r
+ componentanalysisdlg.rollTableModel = Rolldynamik\r
+ componentanalysisdlg.rollTableModel.ttip = Rolldynamik\r
+ componentanalysisdlg.println.closingmethod = Closing method called:\r
+ componentanalysisdlg.println.settingnam = SETTING NAN VALUES\r
+ componentanalysisdlg.lbl.reflenght = Referenzlänge:\r
+ componentanalysisdlg.lbl.refarea = Referenzfläche:\r
+ !componentanalysisdlg.But.close =Close\r
\r
+ ! Custom Material dialog\r
+ custmatdlg.title.Custommaterial = Benutzerdefiniertes Material\r
+ custmatdlg.lbl.Materialname = Name des Materials:\r
+ custmatdlg.lbl.Materialtype = Materialtyp\r
+ custmatdlg.lbl.Materialdensity = Materialdichte:\r
+ custmatdlg.checkbox.Addmaterial = Material zur Datenbank hinzufügen\r
\r
\r
+ ! Ring Component Config\r
+ ringcompcfg.OuterRadius = Äußerer Radius\r
+ ringcompcfg.Automatic = Automatisch\r
+ ringcompcfg.InnerRadius = Innerer Radius\r
+ ringcompcfg.Thickness = Wandstärke\r
+ ringcompcfg.Length = Länge\r
+ ringcompcfg.Positionrelativeto = Relative Position zu:\r
+ ringcompcfg.plus = plus\r
+ ringcompcfg.PositionValue = Positionswert\r
+ ringcompcfg.Radialdistance = Radialer Abstand:\r
+ ringcompcfg.Distancefrom = Abstand von der Raketenmittellinie\r
+ ringcompcfg.Radialdirection = Radiale Richtung\r
+ ringcompcfg.radialdirectionfrom = Die radiale Richtung von der Raketenmittellinie\r
+ ringcompcfg.but.Reset = Zurücksetzen\r
+ ringcompcfg.but.Resetcomponant = Komponente auf die Raketenmittellinie zurücksetzen\r
+ ringcompcfg.EngineBlock.desc = <html>Eine <b>Motorhalterung</b> verhindert, dass der Motor sich im Rohr nach vorne bewegt.<br><br>Um einen Motor hinzuzufügen, ein <b>Körperrohr</b> oder ein <b>Innenrohr</b> hinzufügen und im Reiter <em>Motor</em> als Motorhalterung markieren.\r
+ ringcompcfg.note.desc = Hinweis: Innenrohre beeinflussen die Aerodynamik der Rakete nicht, auch wenn sie außerhalb des Körperohres liegen.\r
\r
\r
+ ! Body Tube Config\r
+ BodyTubecfg.lbl.Bodytubelength = Länge des Körperrohres:\r
+ BodyTubecfg.lbl.Outerdiameter = Außendurchmesser:\r
+ BodyTubecfg.lbl.Innerdiameter = Innendurchmesser:\r
+ BodyTubecfg.lbl.Wallthickness = Wandstärke:\r
+ BodyTubecfg.tab.General = Allgemein\r
+ BodyTubecfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+ BodyTubecfg.tab.Motor = Motor\r
+ BodyTubecfg.tab.Motormountconf = Motorkonfiguration\r
+ BodyTubecfg.checkbox.Automatic = Automatisch\r
+ BodyTubecfg.checkbox.Filled = Gefüllt\r
\r
+ ! FinSetConfig\r
+ FinSetConfig.tab.Fintabs = Leitwerke\r
+ FinSetConfig.tab.Through-the-wall = Durchsteckbare Leitwerke\r
+ FinSetConfig.but.Converttofreeform = In Freiform konvertieren\r
+ FinSetConfig.but.Converttofreeform.ttip = Konvertiert diese Leitwerke in eine Freiform\r
+ FinSetConfig.Convertfinset = Leitwerke konvertieren\r
+ FinSetConfig.but.Splitfins = Geteilte Leitwerke\r
+ FinSetConfig.but.Splitfins.ttip = Teilt den Leitwerkssatz in getrennte Leitwerke\r
+ FinSetConfig.lbl.Through-the-wall  = Durchsteckbare Leitwerke:\r
+ FinSetConfig.lbl.Tablength = Länge:\r
+ FinSetConfig.ttip.Tablength = Länge des Leitwerks.\r
+ FinSetConfig.lbl.Tabheight = Höhe:\r
+ FinSetConfig.ttip.Tabheight = Spannweite des Leitwerks.\r
+ FinSetConfig.lbl.Tabposition = Position:\r
+ FinSetConfig.ttip.Tabposition = Position des Leitwerks.\r
+ FinSetConfig.lbl.relativeto = relativ zu\r
\r
+ ! MotorDatabaseLoadingDialog\r
+ MotorDbLoadDlg.title = Lade Motoren\r
+ MotorDbLoadDlg.Loadingmotors = Lade Motoren...\r
\r
+ ! RocketConfig\r
+ RocketCfg.lbl.Designname = Name der Rakete:\r
+ RocketCfg.lbl.Designer = Ersteller:\r
+ RocketCfg.lbl.Comments = Kommentare:\r
+ RocketCfg.lbl.Revisionhistory = Versionsgeschichte:\r
+ RocketCfg.lbl.Material = Material:\r
\r
+ ! ShockCordConfig\r
+ ShockCordCfg.lbl.Shockcordlength = Gummiseillänge\r
\r
+ ! RocketComponentConfig\r
+ RocketCompCfg.lbl.Componentname = Komponentenname:\r
+ RocketCompCfg.ttip.Thecomponentname = Name der Komponente.\r
+ RocketCompCfg.tab.Override = Werte überschreiben\r
+ RocketCompCfg.tab.MassandCGoverride = Massen- und Schwerpunktsoptionen\r
+ RocketCompCfg.tab.Figure = Form\r
+ RocketCompCfg.tab.Figstyleopt = Formoptionen\r
+ RocketCompCfg.tab.Comment = Kommentar\r
+ RocketCompCfg.tab.Specifyacomment = Kommentar zu dieser Komponente\r
+ RocketCompCfg.lbl.Mass = Masse:\r
+ RocketCompCfg.lbl.Componentmass = Masse der Komponente:\r
+ RocketCompCfg.lbl.overriddento = (überschrieben auf\r
+ RocketCompCfg.lbl.overriddenby = (überschrieben durch\r
+ RocketCompCfg.lbl.Componentmaterial = Material:\r
+ RocketCompCfg.lbl.Componentfinish = Oberfläche:\r
+ RocketCompCfg.lbl.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente.\r
+ RocketCompCfg.combo.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente.\r
+ RocketCompCfg.lbl.longA1 = <html>Die Oberfläche beeinflusst den aerodynamischen Widerstand der Komponente.<br>\r
+ RocketCompCfg.lbl.longA2 = Der angegebene Wert ist die durchschnittliche Rautiefe der Oberfläche.\r
+ RocketCompCfg.but.Setforall = Für alle setzen\r
+ RocketCompCfg.but.ttip.Setforall = Diese Oberflächen für alle Komponenten der Rakete setzen.\r
+ RocketCompCfg.lbl.Overridemassorcenter = Überschreiben von Masse oder Schwerpunkts von \r
+ RocketCompCfg.checkbox.Overridemass = Masse überschreiben:\r
+ RocketCompCfg.checkbox.Overridecenterofgrav = Schwerpunkt überschreiben:\r
+ RocketCompCfg.checkbox.OverridemassandCG = Masse und Schwerpunkt für alle Unterkomponenten überschreiben\r
+ RocketCompCfg.lbl.longB1 = <html>Die überschriebene Masse enthält keine Motoren.<br>\r
+ RocketCompCfg.lbl.longB2 = Die Messung des Schwerpunktes beginnt am Ende von\r
+ RocketCompCfg.lbl.Commentsonthe = Kommentare zu\r
+ RocketCompCfg.lbl.Figurestyle = Form:\r
+ RocketCompCfg.lbl.Componentcolor = Farbe:\r
+ RocketCompCfg.lbl.Choosecolor = Farbe auswählen\r
+ RocketCompCfg.checkbox.Usedefaultcolor = Standardfarbe verwenden\r
+ RocketCompCfg.lbl.Complinestyle = Linienstil:\r
+ RocketCompCfg.but.Saveasdefstyle = Als Standardstil speichern\r
+ RocketCompCfg.lbl.Diameter = Durchmesser:\r
+ RocketCompCfg.lbl.Length = Länge:\r
+ RocketCompCfg.lbl.Thickness = Wandstärke:\r
+ RocketCompCfg.checkbox.Endcapped = Verschlossenes Ende\r
+ RocketCompCfg.ttip.Endcapped = Gibt an, ob das Ende der Schulter geschlossen ist.\r
+ RocketCompCfg.title.Noseconeshoulder = Spitzenschulter\r
+ RocketCompCfg.title.Aftshoulder = Schulter hinten\r
+ RocketCompCfg.border.Foreshoulder = Schulter vorn\r
+ !RocketCompCfg.lbl.Length = Length:\r
\r
+ ! BulkheadConfig\r
+ BulkheadCfg.tab.Radius = Radius:\r
+ BulkheadCfg.tab.Thickness = Wandstärke:\r
+ BulkheadCfg.tab.General = Allgemein\r
+ BulkheadCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
\r
+ !CenteringRingConfig\r
+ CenteringRingCfg.tab.Outerdiam = Außendurchmesser:\r
+ CenteringRingCfg.tab.Innerdiam = Innendurchmesser:\r
+ CenteringRingCfg.tab.Thickness = Wandstärke:\r
+ CenteringRingCfg.tab.General = Allgemein\r
+ CenteringRingCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
\r
+ !ComponentConfigDialog\r
+ ComponentCfgDlg.configuration = Konfiguration\r
+ ComponentCfgDlg.Modify = Verändern\r
\r
+ !EllipticalFinSetConfig\r
+ EllipticalFinSetCfg.Nbroffins = Anzahl der Leitwerke\r
+ EllipticalFinSetCfg.Rotation = Rotation:\r
+ EllipticalFinSetCfg.Fincant = Neigung:\r
+ EllipticalFinSetCfg.Rootchord = Blatttiefe:\r
+ EllipticalFinSetCfg.Height = Höhe:\r
+ EllipticalFinSetCfg.Positionrelativeto = Position relativ zu:\r
+ EllipticalFinSetCfg.plus = plus\r
+ EllipticalFinSetCfg.FincrossSection = Querschnitt:\r
+ EllipticalFinSetCfg.Thickness = Wandstärke:\r
+ EllipticalFinSetCfg.General = Allgemein\r
+ EllipticalFinSetCfg.Generalproperties = Allgemeine Eigenschaften\r
+ EllipticalFinSetCfg.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind.\r
\r
+ !FreeformFinSetConfig\r
+ FreeformFinSetCfg.tab.General = Allgemein\r
+ FreeformFinSetCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+ FreeformFinSetCfg.tab.Shape = Form\r
+ FreeformFinSetCfg.tab.ttip.Finshape = Leitwerksform\r
+ FreeformFinSetCfg.lbl.Numberoffins = Anzahl der Leitwerke\r
+ FreeformFinSetCfg.lbl.Finrotation = Rotation:\r
+ FreeformFinSetCfg.lbl.Fincant = Neigung:\r
+ FreeformFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind.\r
+ FreeformFinSetCfg.lbl.Posrelativeto = Position relativ zu:\r
+ FreeformFinSetCfg.lbl.plus = plus\r
+ FreeformFinSetCfg.lbl.FincrossSection = Querschnitt:\r
+ FreeformFinSetCfg.lbl.Thickness = Wandstärke:\r
\r
+ !InnerTubeConfig\r
+ InnerTubeCfg.tab.Motor = Motor\r
+ InnerTubeCfg.tab.ttip.Motor = Motorkonfiguration\r
+ InnerTubeCfg.tab.Cluster = Cluster\r
+ InnerTubeCfg.tab.ttip.Cluster = Cluster-Konfiguration\r
+ InnerTubeCfg.tab.Radialpos = Radiale Position\r
+ InnerTubeCfg.tab.ttip.Radialpos = Radiale Position\r
+ InnerTubeCfg.lbl.Selectclustercfg = Cluster-Konfiguration auswählen:\r
+ InnerTubeCfg.lbl.TubeSep = Rohrtrennung\r
+ InnerTubeCfg.lbl.ttip.TubeSep = Die Trennung der Rohre, 1.0 = die Rohre berühren sich\r
+ InnerTubeCfg.lbl.Rotation = Rotation:\r
+ InnerTubeCfg.lbl.ttip.Rotation = Rotationswinkel der Cluster-Konfiguration\r
+ InnerTubeCfg.lbl.Rotangle = Rotationswinkel der Cluster-Konfiguration\r
+ InnerTubeCfg.but.Splitcluster = Cluster aufteilen\r
+ InnerTubeCfg.lbl.longA1 = <html>Den Cluster in einzelne Komponenten aufteilen.<br>\r
+ InnerTubeCfg.lbl.longA2 = Die dupliziert alle Komponenten innerhalb dieses Innenrohrs.\r
+ InnerTubeCfg.but.Resetsettings = Einstellungen zurücksetzen\r
+ InnerTubeCfg.but.ttip.Resetsettings = Setzt die Aufteilung und Rotation auf die Standardwerte zurück\r
\r
+ ! LaunchLugConfig\r
+ LaunchLugCfg.lbl.Length = Länge:\r
+ LaunchLugCfg.lbl.Outerdiam = Außendurchmesser:\r
+ LaunchLugCfg.lbl.Innerdiam = Innendurchmesser:\r
+ LaunchLugCfg.lbl.Thickness = Wandstärke:\r
+ LaunchLugCfg.lbl.Radialpos = Radiale Position:\r
+ LaunchLugCfg.lbl.Posrelativeto = Position relativ zu:\r
+ LaunchLugCfg.lbl.plus = plus\r
+ LaunchLugCfg.tab.General = Allgemein\r
+ LaunchLugCfg.tab.Generalprop = Allgemeine Eigenschaften\r
\r
+ ! MassComponentConfig\r
+ MassComponentCfg.lbl.Mass = Masse\r
+ MassComponentCfg.lbl.Length = Länge\r
+ MassComponentCfg.lbl.Diameter = Durchmesser\r
+ MassComponentCfg.lbl.PosRelativeto = Position relativ zu:\r
+ MassComponentCfg.lbl.plus = plus\r
+ MassComponentCfg.tab.General = Allgemein\r
+ MassComponentCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+ MassComponentCfg.tab.Radialpos = Radiale Position\r
+ MassComponentCfg.tab.ttip.Radialpos = Konfiguration der radialen Position\r
+ MassComponentCfg.lbl.Radialdistance = Radialer Abstand:\r
+ MassComponentCfg.lbl.Radialdirection = radiale Richtung:\r
+ MassComponentCfg.but.Reset = Zurücksetzen\r
\r
+ ! MotorConfig\r
+ MotorCfg.checkbox.compmotormount = Diese Komponente ist eine Motorhalterung\r
+ MotorCfg.lbl.Motorcfg = Motorkonfiguration\r
+ MotorCfg.but.New = Neu\r
+ MotorCfg.lbl.Currentmotor = Aktueller Motor:\r
+ MotorCfg.lbl.Motoroverhang = Motorüberstand:\r
+ MotorCfg.lbl.Ignitionat = Zündung bei:\r
+ MotorCfg.lbl.plus = plus\r
+ MotorCfg.lbl.seconds = Sekunden\r
+ MotorCfg.lbl.longA1 = Das aktuelle Design hat im Moment nur eine Stufe.\r
+ MotorCfg.lbl.longA2 = Stufen können durch Klicken auf \«Neue Stufe\« hinzugefügt werden.\r
+ MotorCfg.lbl.longB1 = Das aktuelle Design hat im Moment nur eine Stufe.\r
+ MotorCfg.lbl.longB2 = Stufen.\r
+ MotorCfg.but.Selectmotor = Motor auswählen\r
+ MotorCfg.but.Removemotor = Motor entfernen\r
+ MotorCfg.lbl.motorLabel = Keiner\r
\r
+ ! NoseConeConfig\r
+ NoseConeCfg.lbl.Noseconeshape = Spitzenform:\r
+ NoseConeCfg.lbl.Shapeparam = Formparameter:\r
+ NoseConeCfg.lbl.Noseconelength = Spitzenlänge:\r
+ NoseConeCfg.lbl.Basediam = Basisdurchmesser:\r
+ NoseConeCfg.checkbox.Automatic = Automatisch\r
+ NoseConeCfg.lbl.Wallthickness = Wandstärke:\r
+ NoseConeCfg.checkbox.Filled = gefüllt\r
+ NoseConeCfg.tab.General = Allgemein\r
+ NoseConeCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+ NoseConeCfg.tab.Shoulder = Schulter\r
+ NoseConeCfg.tab.ttip.Shoulder = Schultereigenschaften\r
\r
+ ! ParachuteConfig\r
+ ParachuteCfg.lbl.Canopy = Fallschirmkappe:\r
+ ParachuteCfg.lbl.Diameter = Durchmesser:\r
+ ParachuteCfg.lbl.Material = Material:\r
+ ParachuteCfg.combo.MaterialModel = Das Material beeinflusst die Masse der Komponente.\r
+ ParachuteCfg.lbl.longA1 = <html>Luftwiderstandskoeffizient C<sub>D</sub>:\r
+ ParachuteCfg.lbl.longB1 = <html>Der Luftwiderstandsbeiwert relativ zur Gesamtfläche des Fallschirms.<br>\r
+ ParachuteCfg.lbl.longB2 = Ein größerer Luftwiderstand führt zu einer kleineren Sinkrate.\r
+ ParachuteCfg.lbl.longB3 = Ein typischer Wert für Fallschirme ist 0,8.\r
+ ParachuteCfg.but.Reset = Zurücksetzen\r
+ ParachuteCfg.lbl.Shroudlines = Fangleinen:\r
+ ParachuteCfg.lbl.Numberoflines = Anzahl der Leinen:\r
+ ParachuteCfg.lbl.Linelength = Länge der Leinen:\r
+ ParachuteCfg.lbl.Material = Material:\r
+ ParachuteCfg.lbl.Posrelativeto = Position relativ zu:\r
+ ParachuteCfg.lbl.plus = plus\r
+ ParachuteCfg.lbl.Packedlength = gepackte Länge:\r
+ ParachuteCfg.lbl.Packeddiam = gepackter Durchmesser:\r
+ ParachuteCfg.lbl.Deploysat = Auswurf bei\r
+ ParachuteCfg.lbl.seconds = Sekunden\r
+ ParachuteCfg.lbl.Altitude = Höhe:\r
+ ParachuteCfg.tab.General = Allgemein\r
+ ParachuteCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+ ParachuteCfg.tab.Radialpos = Radiale Position\r
+ ParachuteCfg.tab.ttip.Radialpos = Konfiguration der radialen Position\r
+ ParachuteCfg.lbl.Radialdistance = Radialer Abstand:\r
+ ParachuteCfg.lbl.Radialdirection = radiale Richtung:\r
+ ParachuteCfg.but.Reset = Zurücksetzen\r
\r
+ ! ShockCordConfig \r
+ ShockCordCfg.lbl.Shockcordlength = Länge des Gummiseils\r
+ ShockCordCfg.lbl.Shockcordmaterial = Material des Gummiseils:\r
+ ShockCordCfg.lbl.Posrelativeto = Position relativ zu:\r
+ ShockCordCfg.lbl.plus = plus\r
+ ShockCordCfg.lbl.Packedlength = gepackte Länge:\r
+ ShockCordCfg.lbl.Packeddiam = gepackter Durchmesser:\r
+ ShockCordCfg.tab.General = Allgemein\r
+ ShockCordCfg.tab.ttip.General = Allgemeine Eigenschaften\r
\r
+ !SleeveConfig\r
+ SleeveCfg.tab.Outerdiam = Außendurchmesser:\r
+ SleeveCfg.tab.Innerdiam = Innendurchmesser:\r
+ SleeveCfg.tab.Wallthickness = Wandstärke:\r
+ SleeveCfg.tab.Length = Länge:\r
+ SleeveCfg.tab.General = Allgemein\r
+ SleeveCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
\r
+ ! StreamerConfig\r
+ StreamerCfg.lbl.Striplength = Länge des Strömers:\r
+ StreamerCfg.lbl.Stripwidth = Breite des Strömers:\r
+ StreamerCfg.lbl.Striparea = Fläche des Strömers:\r
+ StreamerCfg.lbl.Aspectratio = Seitenverhältnis:\r
+ StreamerCfg.lbl.Material = Material:\r
+ StreamerCfg.combo.ttip.MaterialModel = Das Material beeinflusst die Masse der Komponente.\r
+ StreamerCfg.lbl.longA1 = <html>Widerstandskoeffizient C<sub>D</sub>:\r
+ StreamerCfg.lbl.longB1 = <html>Der Widerstandskoeffizient des Strömers hängt von der Gesamtfläche ab.<br>\r
+ StreamerCfg.lbl.longB2 = Ein größerer Luftwiderstandskoeffizient führt zu einer kleineren Sinkrate.\r
+ StreamerCfg.lbl.Automatic = Automatisch\r
+ StreamerCfg.lbl.longC1 = Der Luftwiderstandskoeffizient hängt von der Fläche des Strömers ab.\r
+ StreamerCfg.lbl.Posrelativeto = Position relativ zu:\r
+ StreamerCfg.lbl.plus = plus\r
+ StreamerCfg.lbl.Packedlength = gepackte Länge:\r
+ StreamerCfg.lbl.Packeddiam = gepackter Durchmesser:\r
+ StreamerCfg.lbl.Deploysat = Auswurf bei\r
+ StreamerCfg.lbl.seconds = Sekunden\r
+ StreamerCfg.lbl.Altitude = Höhe:\r
+ StreamerCfg.tab.General = Allgemein\r
+ StreamerCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+ StreamerCfg.tab.Radialpos = Radiale Position\r
+ StreamerCfg.tab.ttip.Radialpos = Konfiguration der radialen Position\r
+ StreamerCfg.lbl.Radialdistance = Radialer Abstand:\r
+ StreamerCfg.lbl.Radialdirection = radiale Richtung:\r
+ StreamerCfg.but.Reset = Zurücksetzen\r
\r
+ ! ThicknessRingComponentConfig\r
+ ThicknessRingCompCfg.tab.Outerdiam = Außendurchmesser:\r
+ ThicknessRingCompCfg.tab.Innerdiam = Innendurchmesser:\r
+ ThicknessRingCompCfg.tab.Wallthickness = Wandstärke:\r
+ ThicknessRingCompCfg.tab.Length = Länge:\r
+ ThicknessRingCompCfg.tab.General = Allgemein\r
+ ThicknessRingCompCfg.tab.Generalprop = Allgemeine Eigenschaften\r
\r
+ ! TransitionConfig\r
+ TransitionCfg.lbl.Transitionshape = Form des Übergangs\r
+ TransitionCfg.checkbox.Clipped = geklemmt\r
+ TransitionCfg.lbl.Shapeparam = Formparameter:\r
+ TransitionCfg.lbl.Transitionlength = Länge des Übergangs:\r
+ TransitionCfg.lbl.Forediam = Vorderer Durchmesser\r
+ TransitionCfg.checkbox.Automatic = Automatisch\r
+ TransitionCfg.lbl.Aftdiam = Hinterer Durchmesser\r
+ TransitionCfg.lbl.Wallthickness = Wandstärke:\r
+ TransitionCfg.checkbox.Filled = gefüllt\r
+ TransitionCfg.tab.General = Allgemein\r
+ TransitionCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+ TransitionCfg.tab.Shoulder = Schulter\r
+ TransitionCfg.tab.Shoulderproperties = Schultereigenschaften\r
\r
+ ! TrapezoidFinSetConfig\r
+ TrapezoidFinSetCfg.lbl.Nbroffins = Anzahl der Leitwerke\r
+ TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Anzahl der Leitwerke in diesem Satz\r
+ TrapezoidFinSetCfg.lbl.Finrotation = Rotation der Leitwerke\r
+ TrapezoidFinSetCfg.lbl.ttip.Finrotation = Winkel des ersten Leitwerks in diesem Satz\r
+ TrapezoidFinSetCfg.lbl.Fincant = Neigung:\r
+ TrapezoidFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind.\r
+ TrapezoidFinSetCfg.lbl.Rootchord = Blatttiefe:\r
+ TrapezoidFinSetCfg.lbl.Tipchord = Blatttiefe (Spitze)\r
+ TrapezoidFinSetCfg.lbl.Height = Höhe:\r
+ TrapezoidFinSetCfg.lbl.Sweeplength = Blattbreite:\r
+ TrapezoidFinSetCfg.lbl.Sweepangle = Pfeilungswinkel\r
+ TrapezoidFinSetCfg.lbl.FincrossSection = Leitwerksquerschnitt\r
+ TrapezoidFinSetCfg.lbl.Thickness = Wandstärke:\r
+ TrapezoidFinSetCfg.lbl.Posrelativeto = Position relativ zu:\r
+ TrapezoidFinSetCfg.lbl.plus = plus\r
+ TrapezoidFinSetCfg.tab.General = Allgemein\r
+ TrapezoidFinSetCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
\r
+ !MotorConfigurationModel\r
+ MotorCfgModel.Editcfg = Konfigurationen bearbeiten\r
\r
+ ! StorageOptionChooser\r
+ StorageOptChooser.lbl.Simdatatostore = Zu speichernde Simulationsdaten:\r
+ StorageOptChooser.rdbut.Allsimdata = Alle Simulationsdaten\r
+ StorageOptChooser.lbl.longA1 = <html>Speichert alle Simulationsdaten.<br>\r
+ StorageOptChooser.lbl.longA2 = Dies kann sehr große Dateien erzeugen!\r
+ StorageOptChooser.rdbut.Every = Alle Simulationsdaten\r
+ StorageOptChooser.lbl.longB1 = <html>Speicher plotbare Daten in etwa diesem Abstand.<br>\r
+ StorageOptChooser.lbl.longB2 = Größere Werte erzeugen kleinere Dateien.\r
+ StorageOptChooser.lbl.seconds = Sekunden\r
+ StorageOptChooser.rdbut.Onlyprimfig = Nur die wichtigsten Werte\r
+ StorageOptChooser.lbl.longC1 = <html>Speichert nur die Werte, die in der Zusammenfassung stehen.<br>\r
+ StorageOptChooser.lbl.longC2 = Dies ergibt die kleinsten Dateien\r
+ StorageOptChooser.checkbox.Compfile = Datei komprimieren\r
+ StorageOptChooser.lbl.UsingComp = Kompression der Datei verringert die Größe signifikant.\r
+ StorageOptChooser.lbl.longD1 = Eine Schätzung der Dateigröße mit den gegebenen Optionen.\r
+ StorageOptChooser.ttip.Saveopt = Speicheroptionen\r
+ StorageOptChooser.lbl.Estfilesize = Voraussichtliche Dateigröße:\r
+ StorageOptChooser.lbl.Saveopt = Speicheroptionen\r
\r
+ ! ThrustCurveMotorSelectionPanel\r
+ TCMotorSelPan.lbl.Selrocketmotor = Raketenmotor auswählen:\r
+ TCMotorSelPan.checkbox.hideSimilar = Ähnliche Schubkurven verbergen\r
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Alle Motoren anzeigen\r
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Motoren anzeigen, deren Durchmesser kleiner als der der Motorhalterung ist\r
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Motoren anzeigen, deren Durchmesser gleich der der Motorhalterung ist\r
+ TCMotorSelPan.lbl.Motormountdia = Durchmesser der Motorhalterung\r
+ TCMotorSelPan.lbl.Search = Suchen:\r
+ TCMotorSelPan.lbl.Selectthrustcurve = Schubkurve auswählen:\r
+ TCMotorSelPan.lbl.Ejectionchargedelay = Verzögerung der Ausstoßladung:\r
+ TCMotorSelPan.equalsIgnoreCase.None = keine\r
+ TCMotorSelPan.lbl.NumberofsecondsorNone = (Anzahl der Sekunden oder \«keine\«)\r
+ TCMotorSelPan.lbl.Totalimpulse = Gesamtimpuls:\r
+ TCMotorSelPan.lbl.Avgthrust = Durchschn. Schub:\r
+ TCMotorSelPan.lbl.Maxthrust = max. Schub\r
+ TCMotorSelPan.lbl.Burntime = Brenndauer:\r
+ TCMotorSelPan.lbl.Launchmass = Startmasse:\r
+ TCMotorSelPan.lbl.Emptymass = Leermasse:\r
+ TCMotorSelPan.lbl.Datapoints = Datenpunkte:\r
+ TCMotorSelPan.lbl.Digest = Übersicht:\r
+ TCMotorSelPan.title.Thrustcurve = Schubkurve:\r
+ TCMotorSelPan.title.Thrust = Schub:\r
+ TCMotorSelPan.delayBox.None = keine\r
\r
\r
+ ! PlotDialog\r
+ PlotDialog.title.Flightdataplot = Flugdatenplot\r
+ PlotDialog.Chart.Simulatedflight = Simulierter Flug\r
+ PlotDialog.CheckBox.Showdatapoints = Datenpunkte anzeigen\r
+ PlotDialog.lbl.Chart = Klicken+ziehen: runter+rechts um hinein zu zoomen, hoch+links um heraus zu zoomen \r
\r
\r
+ ! "main" prefix is used for the main application dialog\r
\r
+ main.menu.file = Datei\r
+ main.menu.file.new = Neu\r
+ main.menu.file.open = Öffnen..\r
+ main.menu.file.openExample = Beispiel öffnen..\r
+ main.menu.file.save = Speichern\r
+ main.menu.file.saveAs = Speichern unter...\r
+ main.menu.file.print = Drucken...\r
+ main.menu.file.close = Schließen\r
+ main.menu.file.quit = Beenden\r
\r
+ main.menu.edit = Bearbeiten\r
+ main.menu.edit.undo = Rückgängig\r
+ main.menu.edit.redo = Wiederholen\r
+ main.menu.edit.cut = Ausschneiden\r
+ main.menu.edit.copy = Kopieren\r
+ main.menu.edit.paste = Einfügen\r
+ main.menu.edit.delete = Löschen\r
+ main.menu.edit.preferences = Einstellungen\r
\r
+ main.menu.analyze = Analysieren\r
+ main.menu.analyze.componentAnalysis = Komponente analysieren\r
\r
+ main.menu.help = Hilfe\r
+ main.menu.help.license = Lizenz\r
+ main.menu.help.bugReport = Fehlerbericht\r
+ main.menu.help.debugLog = Debug-Log\r
+ main.menu.help.about = Über\r
\r
+ main.menu.debug = Debug\r
+ main.menu.debug.whatisthismenu = Was macht diese Menü?\r
+ main.menu.debug.createtestrocket = Eine Testrakete erstellen\r
\r
+ ! database\r
+ ! Translate here all material database\r
+ !\r
\r
+ ! Material database\r
+ ! BULK_MATERIAL\r
+ Databases.materials.Acrylic = Acryl\r
+ Databases.materials.Balsa = Balsa\r
+ Databases.materials.Birch = Birke\r
+ Databases.materials.Cardboard = Karton\r
+ Databases.materials.Carbonfiber = Kohlefaser\r
+ Databases.materials.Cork = Kork\r
+ Databases.materials.DepronXPS = Depron (XPS)\r
+ Databases.materials.Fiberglass = Glasfaser\r
+ Databases.materials.Kraftphenolic = Pertinax\r
+ Databases.materials.Maple = Ahorn\r
+ Databases.materials.Paperoffice = Papier (Büro)\r
+ Databases.materials.Pine = Kiefer\r
+ Databases.materials.Plywoodbirch = Sperrholz (Birke)\r
+ Databases.materials.PolycarbonateLexan = Polycarbonat (Lexan)\r
+ Databases.materials.Polystyrene = Polystyrène\r
+ Databases.materials.PVC = PVC\r
+ Databases.materials.Spruce = Fichte\r
+ Databases.materials.StyrofoamgenericEPS = Styropor (EPS)\r
+ Databases.materials.StyrofoamBluefoamXPS = Styrodur (XPS)\r
+ Databases.materials.Quantumtubing = Quantum tubing\r
+ !SURFACE_MATERIAL\r
+ Databases.materials.Ripstopnylon = Ripstop Nylon\r
+ Databases.materials.Mylar = Mylar\r
+ Databases.materials.Polyethylenethin = Polyethylen (dünn)\r
+ Databases.materials.Polyethyleneheavy = Polyethylen (schwer)\r
+ Databases.materials.Silk = Seide\r
+ Databases.materials.Paperoffice = Papier (Büro)\r
+ Databases.materials.Cellophane = Zellophan\r
++Databases.materials.Crepepaper = Krepppapier\r
+ ! LINE_MATERIAL\r
+ Databases.materials.Threadheavy-duty = Faden (stark)\r
+ Databases.materials.Elasticcordround2mm = Elastikband (rund, 2mm, 1/16 in)\r
+ Databases.materials.Elasticcordflat6mm = Elastikband (flach, 6mm, 1/4 in)\r
+ Databases.materials.Elasticcordflat12mm = Elastikband (flach, 12mm, 1/2 in)\r
+ Databases.materials.Elasticcordflat19mm = Elastikband (flach, 19mm, 3/4 in)\r
+ Databases.materials.Elasticcordflat25mm = Elastikband (flach, 25mm, 1 in)\r
+ Databases.materials.Braidednylon2mm = Nylonflachband (2 mm, 1/16 in)\r
+ Databases.materials.Braidednylon3mm = Nylonflachband (3 mm, 1/8 in)\r
+ Databases.materials.Tubularnylon11mm = Tubular Nylon (11 mm, 7/16 in)\r
+ Databases.materials.Tubularnylon14mm = Tubular Nylon (14 mm, 9/16 in)\r
+ Databases.materials.Tubularnylon25mm = Tubular Nylon (25 mm, 1 in)\r
\r
+ ! ExternalComponent\r
+ ExternalComponent.Rough = Rau\r
+ ExternalComponent.Unfinished = unbehandelt\r
+ ExternalComponent.Regularpaint = normale Farbe\r
+ ExternalComponent.Smoothpaint = glatte Farbe\r
+ ExternalComponent.Polished = poliert\r
\r
+ ! LineStyle\r
+ LineStyle.Solid = durchgehend\r
+ LineStyle.Dashed = gestrichelt\r
+ LineStyle.Dotted = gepunktet\r
+ LineStyle.Dash-dotted = Strich-Punkt\r
+ LineStyle.Defaultstyle = Standardstil\r
\r
+ ! Shape\r
+ Shape.Conical = Konisch\r
+ Shape.Conical.desc1 = Eine konische Spitze hat ein dreieckiges Profil\r
+ Shape.Conical.desc2 = Ein konischer Übergang hat gerade Kanten\r
+ Shape.Ogive = Ogive\r
+ Shape.Ogive.desc1 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine <b>tangentiale Ogive</b>, die einen weichen Übergang zum Körperrohr hat, Werte kleiner 1 erzeugen eine <b>sekante Ogive<b>.\r
+ Shape.Ogive.desc2 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine <b>tangentiale Ogive</b>, die einen weichen Übergang zum Körperrohr am hinteren Ende hat, Werte kleiner 1 erzeugen eine <b>sekante Ogive<b>.\r
+ Shape.Ellipsoid = Ellipsoid\r
+ Shape.Ellipsoid.desc1 = Eine ellipsoide Spitze hat ein Profil einer Halbellipse mit der einer Hauptachsenlänge von 2&times;<i>Länge</i> und <i>Durchmesser</i> \r
+ Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2&times;<i>Length</i> and <i>Diameter</i>.  If the transition is not clipped, then the profile is extended at the center by the corresponding radius.            \r
+ Shape.Powerseries = Power series\r
+ Shape.Powerseries.descA1 = A power series nose cone has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 this is a <b>\r
+ Shape.Powerseries.descA2 = -power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a <b>\r
+ Shape.Powerseries.descA3 = -power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.\r
+ Shape.Powerseries.descB1 = A power series transition has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 the transition is <b>\r
+ Shape.Powerseries.descB2 = -power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a <b>\r
+ Shape.Powerseries.descB3 = -power</b>, and for <i>k</i>=1 <b>conical</b>.\r
+ Shape.Parabolicseries = Parabolic series\r
+ Shape.Parabolicseries.desc1 = A parabolic series nose cone has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.\r
+ Shape.Parabolicseries.desc2 = A parabolic series transition has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.\r
+ Shape.Haackseries = Haack series\r
+ Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an <b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.\r
+ Shape.Haackseries.desc2 = The Haack series <i>nose cones</i> are designed to minimize drag.  These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, while a value of 0.333 produces an <b>LV-Haack</b> shape.             \r
\r
\r
+ ! RocketComponent\r
+ RocketComponent.Position.TOP = oberes Ende der übergeordneten Komponente\r
+ RocketComponent.Position.MIDDLE = Mitte der übergeordneten Komponente\r
+ RocketComponent.Position.BOTTOM = unteres Ende der übergeordneten Komponente\r
+ RocketComponent.Position.AFTER = nach der übergeordneten Komponente\r
+ RocketComponent.Position.ABSOLUTE = zur Spitze\r
\r
+ ! LaunchLug\r
+ LaunchLug.Launchlug = Leitröhrchen\r
+ ! NoseCone\r
+ NoseCone.NoseCone = Spitze\r
+ ! Transition\r
+ Transition.Transition = Übergang\r
+ !Stage\r
+ Stage.Stage = Stufe\r
+ ! BodyTube\r
+ BodyTube.BodyTube = Körperrohr\r
+ ! TubeCoupler\r
+ TubeCoupler.TubeCoupler = Koppler\r
+ !InnerTube\r
+ InnerTube.InnerTube = Innenrohr\r
+ ! TrapezoidFinSet\r
+ TrapezoidFinSet.TrapezoidFinSet = Trapezoide Leitwerke\r
+ ! FreeformFinSet\r
+ FreeformFinSet.FreeformFinSet = Frei geformte Leitwerke\r
+ !MassComponent\r
+ MassComponent.MassComponent = Masse\r
+ ! Parachute\r
+ Parachute.Parachute = Fallschirm\r
+ ! ShockCord\r
+ ShockCord.ShockCord = Gummiseil\r
+ ! Bulkhead\r
+ Bulkhead.Bulkhead = Schott\r
\r
+ !Rocket\r
+ Rocket.motorCount.Nomotor = [Keine Motoren]\r
+ Rocket.compname.Rocket = Rakete\r
\r
+ !MotorMount\r
+ MotorMount.IgnitionEvent.AUTOMATIC = Automatisch (Start oder Ausstoßladung)\r
+ MotorMount.IgnitionEvent.LAUNCH = Start\r
+ MotorMount.IgnitionEvent.EJECTION_CHARGE = Erste Ausstoßladung der vorherigen Stufe\r
+ MotorMount.IgnitionEvent.BURNOUT = Erster Brennschluss der vorherigen Stufe\r
+ MotorMount.IgnitionEvent.NEVER = Nie\r
\r
+ !ComponentIcons \r
+ ComponentIcons.Nosecone = Spitze\r
+ ComponentIcons.Bodytube = Körperrohr\r
+ ComponentIcons.Transition = Übergang\r
+ ComponentIcons.Trapezoidalfinset = Trapezoide Leitwerke\r
+ ComponentIcons.Ellipticalfinset = Elliptische Leitwerke\r
+ ComponentIcons.Freeformfinset = Frei geformte Leitwerke\r
+ ComponentIcons.Launchlug = Leitröhrchen\r
+ ComponentIcons.Innertube = Innenrohr\r
+ ComponentIcons.Tubecoupler = Koppler\r
+ ComponentIcons.Centeringring = Zentrierring\r
+ ComponentIcons.Bulkhead = Schott\r
+ ComponentIcons.Engineblock = Motorhalterung\r
+ ComponentIcons.Parachute = Fallschirm\r
+ ComponentIcons.Streamer = Strömer\r
+ ComponentIcons.Shockcord = Gummiseil\r
+ ComponentIcons.Masscomponent = Masse\r
+ ComponentIcons.disabled = (deaktiviert)\r
\r
+ ! StageAction\r
+ StageAction.Stage = Stufe\r
\r
+ ! RecoveryDevice\r
+ RecoveryDevice.DeployEvent.LAUNCH = Start (plus NN Sekunden)\r
+ RecoveryDevice.DeployEvent.EJECTION = Erste Ausstoßladung dieser Stufe\r
+ RecoveryDevice.DeployEvent.APOGEE = Apogäum\r
+ RecoveryDevice.DeployEvent.ALTITUDE = Spezifische Höhe während der Landephase\r
+ RecoveryDevice.DeployEvent.NEVER = Nie\r
\r
+ ! FlightEvent\r
+ FlightEvent.Type.LAUNCH = Start\r
+ FlightEvent.Type.IGNITION = Motorzündung\r
+ FlightEvent.Type.LIFTOFF = Abheben\r
+ FlightEvent.Type.LAUNCHROD = Verlassen der Startrampe\r
+ FlightEvent.Type.BURNOUT = Motorbrennschluss\r
+ FlightEvent.Type.EJECTION_CHARGE = Ausstoßladung\r
+ FlightEvent.Type.STAGE_SEPARATION = Stufentrennung\r
+ FlightEvent.Type.APOGEE = Apogäum\r
+ FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Auslösung des Bergungssystems\r
+ FlightEvent.Type.GROUND_HIT = Landung\r
+ FlightEvent.Type.SIMULATION_END = Ende der Simulation\r
+ FlightEvent.Type.ALTITUDE = Höhenänderung\r
\r
+ ! ThrustCurveMotorColumns\r
+ TCurveMotorCol.MANUFACTURER = Hersteller\r
+ TCurveMotorCol.DESIGNATION = Bezeichnung\r
+ TCurveMotorCol.TYPE = Typ\r
+ TCurveMotorCol.DIAMETER = Durchmesser\r
+ TCurveMotorCol.LENGTH = Länge\r
\r
+ ! RocketInfo\r
+ RocketInfo.lengthLine.Length = Länge\r
+ RocketInfo.lengthLine.maxdiameter = , max. Durchmesser\r
+ RocketInfo.massText1 = Masse mit Motoren\r
+ RocketInfo.massText2 = Masse ohne Motoren\r
+ RocketInfo.at = bei M=\r
+ RocketInfo.cgText = CG:\r
+ RocketInfo.cpText = CP:\r
+ RocketInfo.stabText = Stabilität:\r
+ RocketInfo.Warning = Warnung:\r
+ RocketInfo.Calculating = Berechne...\r
+ RocketInfo.Apogee = Apogäum:\r
+ RocketInfo.Maxvelocity = max. Geschwindigkeit:\r
+ RocketInfo.Maxacceleration = max. Beschleunigung:\r
+ RocketInfo.apogeeValue = N/A\r
+ RocketInfo.Mach = (Mach\r
+ RocketInfo.velocityValue = N/A\r
+ RocketInfo.accelerationValue = N/A\r
\r
+ ! FinSet\r
+ FinSet.CrossSection.SQUARE = Quadrat\r
+ FinSet.CrossSection.ROUNDED = Abgerundet\r
+ FinSet.CrossSection.AIRFOIL = Tragfläche\r
+ FinSet.TabRelativePosition.FRONT = Root chord leading edge\r
+ FinSet.TabRelativePosition.CENTER = Root chord midpoint\r
+ FinSet.TabRelativePosition.END = Root chord trailing edge\r
\r
+ ! FlightDataType\r
+ FlightDataType.TYPE_TIME = Zeit\r
+ FlightDataType.TYPE_ALTITUDE = Höhe\r
+ FlightDataType.TYPE_VELOCITY_Z = Vertikalgeschwindigkeit\r
+ FlightDataType.TYPE_ACCELERATION_Z = Vertikalbeschleunigung\r
+ FlightDataType.TYPE_VELOCITY_TOTAL = Gesamtgeschwindigkeit\r
+ FlightDataType.TYPE_ACCELERATION_TOTAL = Gesamtbeschleunigung\r
+ FlightDataType.TYPE_POSITION_X = Position upwind\r
+ FlightDataType.TYPE_POSITION_Y = Position parallel to wind\r
+ FlightDataType.TYPE_POSITION_XY = Lateral distance\r
+ FlightDataType.TYPE_POSITION_DIRECTION = Lateral direction\r
+ FlightDataType.TYPE_VELOCITY_XY = Lateral velocity\r
+ FlightDataType.TYPE_ACCELERATION_XY = Lateral acceleration\r
+ FlightDataType.TYPE_AOA = Angriffswinkel\r
+ FlightDataType.TYPE_ROLL_RATE = Rollrate\r
+ FlightDataType.TYPE_PITCH_RATE = Nickrate\r
+ FlightDataType.TYPE_YAW_RATE = Gierrate\r
+ FlightDataType.TYPE_MASS = Masse\r
+ FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia\r
+ FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia\r
+ FlightDataType.TYPE_CP_LOCATION = Position vom CP\r
+ FlightDataType.TYPE_CG_LOCATION = Position vom CG\r
+ FlightDataType.TYPE_STABILITY = Stabilität in Kalibern\r
+ FlightDataType.TYPE_MACH_NUMBER = Machzahl\r
+ FlightDataType.TYPE_REYNOLDS_NUMBER = Reynoldszahl\r
+ FlightDataType.TYPE_THRUST_FORCE = Schub\r
+ FlightDataType.TYPE_DRAG_FORCE = Luftwiderstandskraft\r
+ FlightDataType.TYPE_DRAG_COEFF = Luftwiderstandskoeffizient\r
+ FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient\r
+ FlightDataType.TYPE_FRICTION_DRAG_COEFF = Reibungskoeffizient\r
+ FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Pressure drag coefficient\r
+ FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient\r
+ FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient\r
+ FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient\r
+ FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient\r
+ FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient\r
+ FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient\r
+ FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient\r
+ FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient\r
+ FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient\r
+ FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient\r
+ FlightDataType.TYPE_REFERENCE_LENGTH = Referenzlänge\r
+ FlightDataType.TYPE_REFERENCE_AREA = Referenzfläche\r
+ FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith)\r
+ FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth)\r
+ FlightDataType.TYPE_WIND_VELOCITY = Windgeschwindigkeit\r
+ FlightDataType.TYPE_AIR_TEMPERATURE = Lufttemperatur\r
+ FlightDataType.TYPE_AIR_PRESSURE = Luftdruck\r
+ FlightDataType.TYPE_SPEED_OF_SOUND = Schallgeschwindigkeit\r
+ FlightDataType.TYPE_TIME_STEP = Simulationszeitschritt\r
+ FlightDataType.TYPE_COMPUTATION_TIME = Berechnnungszeit\r
\r
+ ! PlotConfiguration\r
+ PlotConfiguration.Verticalmotion = Vertikale Bewegung über Zeit\r
+ PlotConfiguration.Totalmotion = Gesamte Bewegung über Zeit\r
+ PlotConfiguration.Flightside = Flight side profile\r
+ PlotConfiguration.Stability = Stabilität über Zeit\r
+ PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number\r
+ PlotConfiguration.Rollcharacteristics = Roll characteristics\r
+ PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time\r
+ PlotConfiguration.Simulationtime = Simulationszeitschritt und Berechnungszeit\r
\r
+ ! Warning\r
+ Warning.LargeAOA.str1 = Large angle of attack encountered.\r
+ Warning.LargeAOA.str2 = Large angle of attack encountered (\r
+ Warning.DISCONTINUITY = Unstetigkeit im Raketendurchmesser\r
+ Warning.THICK_FIN = Dicke Leitwerke können nicht präzise modelliert werden.\r
+ Warning.JAGGED_EDGED_FIN = Gezackte Ecken in Leitwerken können unpräzise Ergebnisse liefern.\r
+ Warning.LISTENERS_AFFECTED = Simulationsempfänger haben die Simulation beeinflusst.\r
+ Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Bergungssystem wurde ausgelöst während der Motor noch gebrannt hat.\r
+ Warning.FILE_INVALID_PARAMETER = Ignoriere ungültigen Parameter.\r
index 0000000000000000000000000000000000000000,585ddbd8d62117bcf6e008f24450d3e95d12636e..b1aeebb9c3d8e406f7969dcc461da30806d6e7f1
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,1182 +1,1182 @@@
 -compaddbuttons.Bodytube = Tubo del fuselaje
+ #
+ # Spanish base translation file
+ # translations provided by Tripoli Spain
+ #
+ # Should you need to add new logical keys here is the proposed method
+ #
+ # className.ComponantType.componantName
+ #
+  
+ ! Set to the name of the current translation file (used for debugging purposes)
+ debug.currentFile = messages_es.properties
+ ! RocketActions
+ RocketActions.checkbox.Donotaskmeagain = No preguntarme nuevamente
+ RocketActions.lbl.Youcanchangedefop = Puede modificar la operación por defecto con sus preferencias
+ RocketActions.showConfirmDialog.lbl1 = ¿Borrar las simulaciones seleccionadas?
+ RocketActions.showConfirmDialog.lbl2 = <html><i>Esta operación no puede deshacerse.</i>
+ RocketActions.showConfirmDialog.title = Borrar simulaciones
+ RocketActions.DelCompAct.Delete = Borrar
+ RocketActions.DelCompAct.ttip.Delete = Borrar el componente seleccionado
+ RocketActions.DelSimuAct.Delete = Borrar
+ RocketActions.DelSimuAct.ttip.Delete = Borrar la simulación seleccionada
+ RocketActions.DelAct.Delete = Borrar
+ RocketActions.DelAct.ttip.Delete = Borrar el componente o simulación, seleccionado
+ RocketActions.CutAction.Cut = Cortar
+ RocketActions.CutAction.ttip.Cut = Cortar este componente o simulación y copiarlo a la libreta de notas y quitarlo de este diseño
+ RocketActions.CopyAct.Copy = Copiar
+ RocketActions.CopyAct.ttip.Copy = Copiar este componente (y subcomponentes) a la libreta de notas
+ RocketActions.PasteAct.Paste = Pegar
+ RocketActions.PasteAct.ttip.Paste = Pegar el componente o simulación de la libreta de notas al diseño.
+ RocketActions.EditAct.Edit = Mostrar
+ RocketActions.EditAct.ttip.Edit = Mostrar el componente seleccionado
+ RocketActions.NewStageAct.Newstage = Nueva etapa
+ RocketActions.NewStageAct.ttip.Newstage = Añadir una nueva etapa al diseño del cohete
+ RocketActions.ActBoosterstage = Etapa booster
+ RocketActions.MoveUpAct.Moveup = Mover hacia arriba
+ RocketActions.MoveUpAct.ttip.Moveup = Mover este componente hacia arriba
+ RocketActions.MoveDownAct.Movedown = Mover hacia abajo
+ RocketActions.MoveDownAct.ttip.Movedown = Mover este componente hacia abajo
+ ! RocketPanel
+ RocketPanel.FigTypeAct.Sideview = Vista lateral
+ RocketPanel.FigTypeAct.ttip.Sideview = Vista lateral
+ RocketPanel.FigTypeAct.Backview = Vista desde atrás
+ RocketPanel.FigTypeAct.ttip.Backview = Vista trasera
+ RocketPanel.lbl.Motorcfg = Configuración del motor
+ RocketPanel.lbl.infoMessage = <html>Click para seleccionar&nbsp;&nbsp; Mayúsculas+click para seleccionar otro&nbsp;&nbsp; Doble-click to mostrar &nbsp;&nbsp; Click+arrastrar para mover
+ ! BasicFrame
+ BasicFrame.SimpleFileFilter1 = Todos los diseños de cohete(*.ork; *.rkt)
+ BasicFrame.SimpleFileFilter2 = Diseños OpenRocket (*.ork)
+ BasicFrame.SimpleFileFilter3 = Diseños RockSim (*.rkt)
+ BasicFrame.tab.Rocketdesign = Diseños de cohete
+ BasicFrame.tab.Flightsim = Simulaciones de vuelo
+ BasicFrame.title.Addnewcomp = Añadir un nuevo componente
+ BasicFrame.item.Openrocketdesign = Abrir un diseño de cohete
+ BasicFrame.item.Openexamplerocketdesign = Abrir un ejemplo de diseño de cohete
+ BasicFrame.item.SavecurRocketdesign = Guardar el diseño actual
+ BasicFrame.item.SavecurRocketdesnewfile = Guardar el diseño actual como un nuevo documento
+ BasicFrame.item.Printpart = Imprimir un listado de componentes y un esquema de aleta
+ BasicFrame.item.Closedesign = Cerrar el diseño actual
+ BasicFrame.item.Quitprogram = Abandonar el programa
+ BasicFrame.menu.Rocketedt = Mostrando el cohete
+ BasicFrame.dlg.lbl1 = Diseño
+ BasicFrame.dlg.lbl2 = No se ha guardado
+ BasicFrame.dlg.lbl3 = ¿Quiere guardarlo?
+ BasicFrame.dlg.title = Diseño no guardado
+ BasicFrame.StageName.Sustainer = Cuerpo principal
+ BasicFrame.WarningDialog.txt1 = Mientras se abría, se encontraron los siguiente problemas
+ BasicFrame.WarningDialog.txt2 = Algunas configuraciones de diseño no pudieron cargarse correctamente.
+ BasicFrame.WarningDialog.title = Precauciones mientras se abre el archivo
+ ! Labels used in buttons of dialog windows
+ button.ok = OK
+ button.cancel = Borrar
+ button.close = Cerrar
+ ! Common labels used in buttons of dialog windows
+ dlg.but.ok = OK
+ dlg.but.cancel = Borrar
+ dlg.but.close = Cerrar
+ ! About Dialog
+ about.dlg.but.close = Cerrar
+ about.dlg.lbl.translation = Traducido al español por Tripoli Spain
+ about.dlg.lbl.transwebsite = http://www.tripoli-spain.org/
+ ! Bug Report dialog
+ bugreport.dlg.title = Report de error
+ bugreport.dlg.but.Sendbugreport = Enviar un report de error
+ bugreport.dlg.but.Sendbugreport.Ttip = Enviar automáticamente un report de error a los creadores de Open Rocket
+ bugreport.dlg.successmsg1 = Report de error enviado con éxito
+ bugreport.dlg.successmsg2 = Gracias por ayudar a mejorar Open Rocket !
+ bugreport.dlg.successmsg3 = Report de error enviado
+ bugreport.dlg.connectedInternet = <html>Si está conectado a Internet, haga simplemente Clik <em>Enviar report de errores</em>.
+ bugreport.dlg.otherwise = De otro modo, envíe el texto debajo a la dirección:
+ bugreport.lbl.Theinformation = La información de arriba puede incluirse en un report de error público. Asegúrese de que no contiene ninguna información que usted no quiere hacer pública.
+ bugreport.dlg.failedmsg1 = OpenRocket fue incapaz de enviar el report de error:
+ bugreport.dlg.failedmsg2 = Por favor envíe manualmente el report a
+ bugreport.dlg.failedmsg3 = Error enviando el report
+ bugreport.reportDialog.txt = <html><b>Puede enviar un report de error en OpenRocket rellenando el formulario de abajo y enviándolo.</b><br>También puede reportar errores e incluir adjuntos sobre el proyecto de Web.
+ bugreport.reportDialog.txt2 = <html><b>Por favor incluya una breve descripción de lo que estaba haciendo cuando ocurrió la excepción.</b>
+ ! Debug log dialog
+ debuglogdlg.but.clear = Limpiar
+ debuglogdlg.OpenRocketdebuglog = Fichero de error de Open Rocket
+ debuglogdlg.Displayloglines = Mostrar líneas de registro:
+ debuglogdlg.Follow = Seguir
+ debuglogdlg.col.Time = Hora
+ debuglogdlg.col.Level = Nivel
+ debuglogdlg.col.Location = Situación
+ debuglogdlg.col.Message = Mensaje
+ debuglogdlg.lbl.Loglinenbr = Número de línea de registro:
+ debuglogdlg.lbl.Time = Hora:
+ debuglogdlg.lbl.Level = Nivel:
+ ! Edit Motor configuration dialog
+ edtmotorconfdlg.but.removemotor = Quitar motor
+ edtmotorconfdlg.but.Selectmotor = Seleccionar motor
+ edtmotorconfdlg.but.Removeconfiguration = Quitar configuración
+ edtmotorconfdlg.but.Newconfiguration = Nueva configuración
+ edtmotorconfdlg.lbl.Motormounts = <html><b>Porta motor:</b>
+ edtmotorconfdlg.title.Editmotorconf = Mostrar las configuraciones de motor
+ edtmotorconfdlg.selectcomp = <html>Seleccionar que componentes tienen la función de porta motor:
+ edtmotorconfdlg.lbl.Motorconfig = <html><b>Configuraciones del motor:</b>
+ edtmotorconfdlg.lbl.Configname = Nombre de la configuración:
+ edtmotorconfdlg.lbl.Leavenamedefault = Dejar vacío el nombre por defecto.
+ ! Example design dialog
+ exdesigndlg.but.open = Abrir
+ exdesigndlg.lbl.Selectexample = Al abrir seleccione ejemplos de diseños:
+ exdesigndlg.lbl.Openexampledesign = Abra un diseño como ejemplo
+ exdesigndlg.lbl.Exampledesignsnotfound = Los ejemplos de diseño podrían no hallarse.
+ exdesigndlg.lbl.Examplesnotfound = Ejemplos no hallados
+ ! Print panel dialog
+ printdlg.but.saveaspdf = Guardar como PDF
+ printdlg.but.preview = Previsualizar
+ printdlg.but.settings = Configuraciones
+ ! Material edit panel
+ matedtpan.but.new = Nuevo
+ matedtpan.but.edit = Editar
+ matedtpan.but.delete = Borrar
+ matedtpan.but.revertall = Invertir todo
+ matedtpan.col.Material = Material
+ matedtpan.col.Type = Tipo
+ matedtpan.col.Density = Densidad
+ matedtpan.col.but.ttip.New = Añadir un nuevo material
+ matedtpan.title.Addcustmaterial = Añadir un material hecho en casa
+ matedtpan.but.ttip.edit = Editar un material existente
+ matedtpan.title.Editmaterial = Editar material
+ matedtpan.title2.Editmaterial = Los materiales construidos no se pueden modificar
+ matedtpan.but.ttip.delete = Borrar un material pre definido
+ matedtpan.but.ttip.revertall = Borrar todos los materiales predefinidos
+ matedtpan.title.Deletealluser-defined = ¿Borrar todos los materiales predefinidos?
+ matedtpan.title.Revertall = ¿Revertir todo?
+ matedtpan.lbl.edtmaterials = <html><i>Editar materiales que no afectaran los diseños existentes.</i>
+ !MaterialModel
+ MaterialModel.title.Material = Material
+ MaterialModel.title.Defcustmat = Definir material hecho en casa
+ ! Preference dialog
+ pref.dlg.but.add = Agregar
+ pref.dlg.but.reset = Reiniciar
+ pref.dlg.but.checknow = Comprobar ahora
+ pref.dlg.but.defaultmetric = Sistema Métrico por defecto
+ pref.dlg.but.defaultimperial = Sistema Imperial por defecto
+ pref.dlg.title.Preferences = Preferencias 
+ pref.dlg.tab.Units = Unidades
+ pref.dlg.tab.Defaultunits = Unidades por defecto
+ pref.dlg.tab.Materials = Materiales
+ pref.dlg.tab.Custommaterials = Materiales hechos en casa
+ pref.dlg.tab.Options = Opciones
+ pref.dlg.tab.Miscellaneousoptions = Otras opciones
+ pref.dlg.lbl.Positiontoinsert = Posición para introducir nuevos componentes del fuselaje:
+ pref.dlg.lbl.Confirmdeletion = Confirmar borrar simulaciones:
+ pref.dlg.lbl.User-definedthrust = Curvas de potencia definidas por el usuario:
+ pref.dlg.Allthrustcurvefiles = Todos los ficheros de curvas de potencia (*.eng; *.rse; *.zip; directorios)
+ pref.dlg.RASPfiles = Ficheros de motor RASP (*.eng)
+ pref.dlg.RockSimfiles = Ficheros de motor Rocksim (*.rse)
+ pref.dlg.ZIParchives = Archivos ZIP (*.zip)
+ pref.dlg.checkbox.Checkupdates = Comprobar actualizaciones de  software al arrancar
+ pref.dlg.ttip.Checkupdatesnow = Comprobar actualizaciones de software ahora
+ pref.dlg.lbl.Selectprefunits = Seleccione sus unidades preferidas:
+ pref.dlg.lbl.Rocketdimensions = Dimensiones del cohete:
+ pref.dlg.lbl.Linedensity = Densidad:
+ pref.dlg.lbl.Motordimensions = Dimensiones del motor:
+ pref.dlg.lbl.Surfacedensity = Densidad superficial:
+ pref.dlg.lbl.Distance = Distancia:
+ pref.dlg.lbl.Bulkdensity = Densidad media:
+ pref.dlg.lbl.Velocity = Velocidad:
+ pref.dlg.lbl.Surfaceroughness = Rugosidad de la superficie:
+ pref.dlg.lbl.Acceleration = Aceleración:
+ pref.dlg.lbl.Area = Área:
+ pref.dlg.lbl.Mass = Masa:
+ pref.dlg.lbl.Angle = Ángulo:
+ pref.dlg.lbl.Force = Fuerza:
+ pref.dlg.lbl.Rollrate = Valor de giro:
+ pref.dlg.lbl.Totalimpulse = Impulso total:
+ pref.dlg.lbl.Temperature = Temperatura:
+ pref.dlg.lbl.Momentofinertia = Momento de inercia:
+ pref.dlg.lbl.Pressure = Presión:
+ pref.dlg.lbl.Stability = Estabilidad:
+ pref.dlg.lbl.effect1 = Los cambios tendrán efecto cuando se abra nuevamente una ventana.
+ pref.dlg.lbl.Checkingupdates = Comprobando actualizaciones...
+ pref.dlg.lbl.msg1 = Ocurrió un error mientras se comunicaba con el servidor.
+ pref.dlg.lbl.msg2 = Incapaz de recuperar la información de las actualizaciones
+ pref.dlg.lbl.msg3 = Usted está utilizando la última versión de Open Rocket.
+ pref.dlg.lbl.msg4 = No hay actualizaciones disponibles
+ pref.dlg.PrefChoiseSelector1 = Pregunte siempre
+ pref.dlg.PrefChoiseSelector2 = Insertar en medio
+ pref.dlg.PrefChoiseSelector3 = Añadir al final
+ pref.dlg.PrefBooleanSelector1 = Borrar
+ pref.dlg.PrefBooleanSelector2 = Confirmar
+ pref.dlg.Add = Añadir
+ pref.dlg.DescriptionArea.Adddirectories = Añadir directorios, RASP archivos de motor (*.eng), RockSim archivos de motor (*.rse) o ZIP archivos separados por punto y coma (;) para cargar curvas de empuje externas.  Los cambios tendrán efecto la próxima vez que abra OpenRocket.
+ ! Simulation edit dialog
+ simedtdlg.but.runsimulation = Lanzar la simulación
+ simedtdlg.but.resettodefault = Restaurar por defecto
+ simedtdlg.but.add = Agregar
+ simedtdlg.but.remove = Quitar
+ simedtdlg.title.Editsim = Mostrar la simulación
+ simedtdlg.lbl.Simname = Nombre de la simulación
+ simedtdlg.tab.Launchcond = Condiciones del lanzamiento
+ simedtdlg.tab.Simopt = Opciones de simulación
+ simedtdlg.tab.Plotdata = Datos del plotter
+ simedtdlg.tab.Exportdata = Exportar datos
+ simedtdlg.lbl.Motorcfg = Configuración del motor:
+ simedtdlg.lbl.ttip.Motorcfg = Seleccionar la configuración del motor a usar
+ simedtdlg.combo.ttip.motorconf = Seleccionar la configuración del motor a usar
+ simedtdlg.lbl.Wind = Viento
+ simedtdlg.lbl.Averwindspeed = Velocidad media del viento
+ simedtdlg.lbl.ttip.Averwindspeed = Velocidad media del viento en relación al suelo
+ simedtdlg.lbl.Stddeviation = Desviación standard
+ simedtdlg.lbl.ttip.Stddeviation = <html>Desviación standard de la velocidad del viento.<br>La velocidad del viento se encuentra dentro del doble de la desviación media en un 95% del tiempo.
+ simedtdlg.lbl.Turbulenceintensity = Intensidad de la turbulencia
+ simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>La intensidad de la turbulencia es la desviación standard dividida por la velocidad media del viento.<br>
+ simedtdlg.lbl.ttip.Turbulenceintensity2 = Valores típicos en el campo
+ simedtdlg.lbl.ttip.Turbulenceintensity3 = a
+ simedtdlg.border.Atmoscond = Condiciones atmosféricas
+ simedtdlg.checkbox.InterStdAtmosphere = Usa los patrones de Atmosfera Internacional
+ simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Seleccionar para usar el modelo de la International Standard Atmosphere model.<br>Este modelo tiene una temperatura de
+ simedtdlg.checkbox.ttip.InterStdAtmosphere2 = Y una presión de
+ simedtdlg.checkbox.ttip.InterStdAtmosphere3 = A nivel del mar.
+ simedtdlg.lbl.Temperature = Temperatura:
+ simedtdlg.lbl.ttip.Temperature = Temperatura en el lugar del lanzamiento.
+ simedtdlg.lbl.Pressure = Presión:
+ simedtdlg.lbl.ttip.Pressure = Presión atmosférica en el lugar del lanzamiento
+ simedtdlg.lbl.Launchsite = Lugar del lanzamiento
+ simedtdlg.lbl.Latitude = Latitud:
+ simedtdlg.lbl.ttip.Latitude = <html>La latitud del lugar de lanzamiento afecta la atracción terrestre.<br>Los valores positivos se dan en el hemisferio Norte, los negativos en el hemisferio Sur.
+ simedtdlg.lbl.Altitude = Altitud:
+ simedtdlg.lbl.ttip.Altitude = <html>Los valores por encima del nivel del mar.<br>Esto afecta la posición del modelo atmosférico.
+ simedtdlg.border.Launchrod = Varilla para lanzar
+ simedtdlg.lbl.Length = Longitud:
+ simedtdlg.lbl.ttip.Length = Longitud de la varilla de lanzamiento
+ simedtdlg.lbl.Angle = Ángulo:
+ simedtdlg.lbl.ttip.Angle = El ángulo de la varilla de lanzamiento con la vertical.
+ simedtdlg.lbl.Direction = Dirección:
+ simedtdlg.lbl.ttip.Direction1 = <html>Dirección de la varilla de lanzamiento relativa al viento.<br>
+ simedtdlg.lbl.ttip.Direction2 = Hacia el viento
+ simedtdlg.lbl.ttip.Direction3 = A favor del viento
+ simedtdlg.border.Simopt = Opciones del simulador
+ simedtdlg.lbl.Calcmethod = Método de cálculo
+ simedtdlg.lbl.ttip.Calcmethod = <html>El método Barrowman extendido calcula las fuerzas aerodinámicas <br>Para las ecuaciones Barrowman extendidas para recibir mas componentes.
+ simedtdlg.lbl.ExtBarrowman = Barrowman Extendido
+ simedtdlg.lbl.Simmethod = Método de simulación:
+ simedtdlg.lbl.ttip.Simmethod1 = <html>El simulador de seis-grados-de-libertad permite al cohete una total libertad durante el vuelo.<br>
+ simedtdlg.lbl.ttip.Simmethod2 = La integración mejora usando un 4<sup>th</sup> ordenar Runge-Kutta 4 integración numérica.
+ simedtdlg.lbl.Timestep = Duración de la etapa
+ simedtdlg.lbl.ttip.Timestep1 = <html>Tiempo entre etapas de simulación.<br>Un tiempo mas corto de etapa origina una simulación mas exacta pero mas lenta.<br>
+ simedtdlg.lbl.ttip.Timestep2 = The 4<sup>th</sup> ordenar el método de simulación es bastante preciso con un tiempo de etapa de
+ simedtdlg.but.ttip.resettodefault = Restituir el tiempo de etapa a su valor por defecto (
+ simedtdlg.border.Simlist = Oyentes del simulador
+ simedtdlg.txt.longA1 = <html><i>Oyentes del simulador</i> es una prestación avanzada que permite al código escrito del usuario oír e interaccionar con la simulación.  
+ simedtdlg.txt.longA2 = Para detalles de esta prestación de los oyentes, vea la documentación técnica del Open Rocket.
+ simedtdlg.lbl.Curlist = Oyentes actuales
+ simedtdlg.lbl.Addsimlist = Añadir la audición del simulador
+ simedtdlg.lbl.Noflightdata = No hay datos disponibles del vuelo.
+ simedtdlg.lbl.runsimfirst = Por favor accione la simulación primero.
+ simedtdlg.chart.Simflight = Vuelo simulado
+ simedtdlg.dlg.Simres = Resultados de la simulación
+ simedtdlg.IntensityDesc.None = Ninguno
+ simedtdlg.IntensityDesc.Verylow = Muy pesado
+ simedtdlg.IntensityDesc.Low = Pesado
+ simedtdlg.IntensityDesc.Medium = Medio
+ simedtdlg.IntensityDesc.High = Alto
+ simedtdlg.IntensityDesc.Veryhigh = Muy alto
+ simedtdlg.IntensityDesc.Extreme = Extremo
+ ! Simulation Panel
+ simpanel.but.newsimulation = Nueva simulación
+ simpanel.but.editsimulation = Editar la simulación
+ simpanel.but.runsimulations = Lanzar las simulaciones
+ simpanel.but.deletesimulations = Borrar las simulaciones
+ simpanel.but.plotexport = Exportar / Plot
+ simpanel.but.ttip.newsimulation = Añadir una nueva simulación
+ simpanel.but.ttip.editsim = Mostrar la simulación seleccionada
+ simpanel.but.ttip.runsimu = Accionar de nuevo las simulaciones seleccionadas
+ simpanel.but.ttip.deletesim = Borrar las simulaciones seleccionadas
+ simpanel.checkbox.donotask = No preguntarme de nuevo
+ simpanel.lbl.defpref = Puede cambiar la operación por defecto por las preferencias
+ simpanel.dlg.lbl.DeleteSim1 = ¿Borrar las simulaciones seleccionadas?
+ simpanel.dlg.lbl.DeleteSim2 = <html><i>Esta operación no puede deshacerse.</i>
+ simpanel.dlg.lbl.DeleteSim3 = Borrar las simulaciones
+ simpanel.col.Name = Nombre
+ simpanel.col.Motors = Motores
+ simpanel.col.Apogee = Apogeo
+ simpanel.col.Maxvelocity = Velocidad máxima
+ simpanel.col.Maxacceleration = Aceleración máxima
+ simpanel.col.Timetoapogee = Tiempo hasta el apogeo
+ simpanel.col.Flighttime = Duración del vuelo
+ simpanel.col.Groundhitvelocity = Velocidad de llegada a tierra
+ ! SimulationRunDialog
+ SimuRunDlg.title.RunSim = Accionando simulaciones
+ SimuRunDlg.lbl.Running = Accionando
+ SimuRunDlg.lbl.Simutime = Duración de la simulación:
+ SimuRunDlg.lbl.Altitude = Altitud:
+ SimuRunDlg.lbl.Velocity = Velocidad:
+ SimuRunDlg.msg.Unabletosim = Incapaz de simular:
+ SimuRunDlg.msg.errorOccurred = Ha ocurrido un error durante la simulación:
+ SimuRunDlg.msg.AnException1 = Ha ocurrido una excepción durante la simulación:
+ SimuRunDlg.msg.AnException2 = Por favor anote esto debajo como un error con todos los detalles.
+ SimuRunDlg.msg.AssertionError1 = Se ha producido un error informático durante la simulación.
+ SimuRunDlg.msg.AssertionError2 = Por favor anote esto debajo como un error con todos los detalles.
+ SimuRunDlg.msg.unknownerror1 = Se ha detectado un error desconocido durante la simulación.
+ SimuRunDlg.msg.unknownerror2 = El programa  puede ser inestable, Guarde todos sus diseños y reinicie OpenRocket ahora!
+ ! SimulationExportPanel
+ SimExpPan.desc = Documentos separados por comas (*.csv)
+ SimExpPan.border.Vartoexport = Variables para exportar
+ SimExpPan.but.Selectall = Seleccione todo
+ SimExpPan.but.Selectnone = No seleccione nada
+ SimExpPan.border.Fieldsep = Separador de campo
+ SimExpPan.lbl.Fieldsepstr = Barra separador de campo
+ SimExpPan.lbl.longA1 = <html>Las barras para separar campos en el documento exportado.<br>
+ SimExpPan.lbl.longA2 = Use ',' Para valores separados por comas (CSV) file.
+ SimExpPan.checkbox.Includesimudesc = Incluye descripción de la simulación
+ SimExpPan.checkbox.ttip.Includesimudesc = Incluye un comentario en el inicio del documento describiendo la simulación.
+ SimExpPan.border.Comments = Comentarios
+ SimExpPan.checkbox.Includefielddesc = Incluye descripciones de campo
+ SimExpPan.checkbox.ttip.Includefielddesc = Incluye una línea de comentario con las descripciones de las variables exportadas.
+ SimExpPan.checkbox.Incflightevents = Incluye los eventos del vuelo
+ SimExpPan.checkbox.ttip.Incflightevents = Incluye una línea de comentario para cada evento del vuelo
+ SimExpPan.lbl.Commentchar = Carácter de comentario
+ SimExpPan.lbl.ttip.Commentchar = La característica(as) que marcan una línea de comentario.
+ SimExpPan.but.Exporttofile = Exportar al documento ...
+ SimExpPan.Fileexists.desc1 = Archivo \"
+ SimExpPan.Fileexists.desc2 = \" existe.  Sobrescribir?
+ SimExpPan.Fileexists.title = El archivo existe
+ SimExpPan.ExportingVar.desc1 = Exportando una variable fuera de
+ SimExpPan.ExportingVar.desc2 = Exportando
+ SimExpPan.ExportingVar.desc3 = variables fuera de
+ SimExpPan.Col.Variable = Variable
+ SimExpPan.Col.Unit = Unidad
+ ! MotorPlot
+ MotorPlot.title.Motorplot = Curva del motor
+ MotorPlot.but.Select = Seleccionar la configuración del motor a usar
+ MotorPlot.Chart.Motorthrustcurve = Curva de empuje del motor
+ MotorPlot.Chart.Time = Tiempo / s
+ MotorPlot.Chart.Thrust = Empuje / N
+ MotorPlot.txt.Designation = Designación:
+ MotorPlot.txt.Manufacturer = Fabricante:
+ MotorPlot.txt.Type = Tipo:
+ MotorPlot.txt.Delays = Retardos:
+ MotorPlot.txt.Comment = Comentario:\n
+ ! Simulation plot panel
+ simplotpanel.lbl.Presetplotconf = Pre configuración del Plot:
+ simplotpanel.lbl.Xaxistype = Tipo de eje X:
+ simplotpanel.lbl.Unit = Unidad:
+ simplotpanel.lbl.Yaxistypes = Tipo de eje Y:
+ simplotpanel.lbl.Flightevents = Eventos del vuelo:
+ simplotpanel.but.All = Todo
+ simplotpanel.but.None = Ninguno
+ simplotpanel.but.NewYaxisplottype = Nuevo tipo de Eje Y del Plot
+ simplotpanel.but.Plotflight = Curva del vuelo
+ simplotpanel.lbl.Axis = Ejes:
+ simplotpanel.but.ttip.Removethisplot = Borrar esta curva
+ simplotpanel.Desc = Los datos según orden de tiempo serán impresos en el eje X si no hay tiempo
+ simplotpanel.OptionPane.lbl1 = Se permiten un máximo de 15 impresiones
+ simplotpanel.OptionPane.lbl2 = No puede añadirse la curva
+ simplotpanel.AUTO_NAME = Auto
+ simplotpanel.LEFT_NAME = Izquierda
+ simplotpanel.RIGHT_NAME = Derecha
+ simplotpanel.CUSTOM = Casero
+ ! Component add buttons
+ compaddbuttons.Bodycompandfinsets = Componentes del fuselaje y aletas
+ compaddbuttons.Nosecone = Ojiva
 -compaddbuttons.Launchlug = Guía en el fuselaje
++compaddbuttons.Bodytube = Tubo del\nfuselaje
+ compaddbuttons.Transition = Transición
+ compaddbuttons.Trapezoidal = Trapezoidal
+ compaddbuttons.Elliptical = Elíptico
+ compaddbuttons.Freeform = Forma libre
 -compaddbuttons.Innertube = Tubo interior
++compaddbuttons.Launchlug = Guía en el\nfuselaje
+ compaddbuttons.Innercomponent = Componente interior
 -compaddbuttons.Shockcord = Tirante de suspensión
++compaddbuttons.Innertube = Tubo\ninterior
+ compaddbuttons.Coupler = Acoplador
+ compaddbuttons.Centeringring = Arandela\nde centraje
+ compaddbuttons.Bulkhead = Cámara
+ compaddbuttons.Engineblock = Retén\nde motor
+ compaddbuttons.Massobjects = Objeto masa
+ compaddbuttons.Parachute = Paracaídas
+ compaddbuttons.Streamer = Banderola
 -Databases.materials.Creape paper = Cr\u00eape Papel
++compaddbuttons.Shockcord = Tirante de\nsuspensión
+ compaddbuttons.Masscomponent = Componente\nmasa
+ compaddbuttons.Donotaskmeagain = No me pregunte de nuevo
+ compaddbuttons.Selectcomppos = Seleccionar la posición del componente
+ compaddbuttons.lbl.Youcanchange = Puede cambiar la operación con las preferencias por defecto
+ compaddbuttons.lbl.insertcomp = ¿Inserta el componente despues del actual o como último?
+ compaddbuttons.askPosition.Inserthere = Inserte aquí
+ compaddbuttons.askPosition.Addtotheend = Añadir al final
+ compaddbuttons.askPosition.Cancel = Borrar
+ ! Component Analysis Dialog
+ componentanalysisdlg.componentanalysis = Análisis del componente
+ componentanalysisdlg.lbl.winddir = Dirección del viento:
+ componentanalysisdlg.TitledBorder.warnings = Advertencias:
+ componentanalysisdlg.ToggleBut.worst = Peor
+ componentanalysisdlg.lbl.angleofattack = Ángulo de ataque:
+ componentanalysisdlg.lbl.machnumber = Número Mach:
+ componentanalysisdlg.lbl.rollrate = Valor de giro:
+ componentanalysisdlg.lbl.activestages = Etapas activas:
+ componentanalysisdlg.lbl.motorconf = Configuración del Motor:
+ componentanalysisdlg.TabStability.Col = Componente
+ componentanalysisdlg.TabStability = Estabilidad
+ componentanalysisdlg.TabStability.ttip = Información de Estabilidad
+ componentanalysisdlg.dragTableModel.Col.Component = Componente
+ componentanalysisdlg.dragTableModel.Col.Pressure = <html>Presión C<sub>D</sub>
+ componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>
+ componentanalysisdlg.dragTableModel.Col.friction = <html>Rozamiento C<sub>D</sub>
+ componentanalysisdlg.dragTableModel.Col.total = <html>Total C<sub>D</sub>
+ componentanalysisdlg.dragTabchar = Características de rozamiento
+ componentanalysisdlg.dragTabchar.ttip = Características de rozamiento
+ componentanalysisdlg.rollTableModel.Col.component = Componente
+ componentanalysisdlg.rollTableModel.Col.rollforc = Coeficiente de giro
+ componentanalysisdlg.rollTableModel.Col.rolldamp = Coeficiente de corrección de giro
+ componentanalysisdlg.rollTableModel.Col.total = <html>Total C<sub>l</sub>
+ componentanalysisdlg.rollTableModel = Dinámica de giro
+ componentanalysisdlg.rollTableModel.ttip = Dinámica de giro
+ componentanalysisdlg.println.closingmethod = Llamado método de cierre:
+ componentanalysisdlg.println.settingnam = CONFIGURANDO VALORES NAN
+ componentanalysisdlg.lbl.reflenght = Longitud de referencia: 
+ componentanalysisdlg.lbl.refarea = Área de referencia: 
+ !componentanalysisdlg.But.close =Close
+ ! Custom Material dialog
+ custmatdlg.title.Custommaterial = Material hecho en casa
+ custmatdlg.lbl.Materialname = Nombre del material: 
+ custmatdlg.lbl.Materialtype = Tipo de material:
+ custmatdlg.lbl.Materialdensity = Densidad del material:
+ custmatdlg.checkbox.Addmaterial = Agregar este material a la base de datos
+ ! Ring Component Config
+ ringcompcfg.OuterRadius = Radio exterior
+ ringcompcfg.Automatic = Automático
+ ringcompcfg.InnerRadius = Radio interior
+ ringcompcfg.Thickness = Espesor
+ ringcompcfg.Length = Longitud
+ ringcompcfg.Positionrelativeto = Posición relativa a:
+ ringcompcfg.plus = plus
+ ringcompcfg.PositionValue = Valor de posición
+ ringcompcfg.Radialdistance = Distancia radial:
+ ringcompcfg.Distancefrom = Distancia desde la línea central del cohete
+ ringcompcfg.Radialdirection = Dirección radial:
+ ringcompcfg.radialdirectionfrom = En dirección radial desde la línea central del cohete
+ ringcompcfg.but.Reset = Reiniciar
+ ringcompcfg.but.Resetcomponant = Resituar el componente a la línea central del cohete
+ ringcompcfg.EngineBlock.desc = <html>Un <b>retén motor</b> Impide que el motor se desplace hacia delante dentro del tubo porta motor.<br><br>Para añadir un motor, cree un <b>tubo de fuselaje</b> o <b>dentro del tubo</b> y desígnelo como portamotor en el <em>Motor</em> tab.
+ ringcompcfg.note.desc = Nota: Un tubo interior no afectará la aerodinámica del cohete salvo que esté situado fuera del fuselaje.
+ ! Body Tube Config
+ BodyTubecfg.lbl.Bodytubelength = Longitud del tubo del fuselaje:
+ BodyTubecfg.lbl.Outerdiameter = Diámetro exterior:
+ BodyTubecfg.lbl.Innerdiameter = Diámetro interior:
+ BodyTubecfg.lbl.Wallthickness = Espesor de la pared:
+ BodyTubecfg.tab.General = General
+ BodyTubecfg.tab.Generalproperties = Propiedades generales
+ BodyTubecfg.tab.Motor = Motor
+ BodyTubecfg.tab.Motormountconf = Configuración del porta motor
+ BodyTubecfg.checkbox.Automatic = Automático
+ BodyTubecfg.checkbox.Filled = Archivado
+ ! FinSetConfig
+ FinSetConfig.tab.Fintabs = Raíz de aleta
+ FinSetConfig.tab.Through-the-wall = Raíces de aleta a través de la pared
+ FinSetConfig.but.Converttofreeform = Convertir a forma libre
+ FinSetConfig.but.Converttofreeform.ttip = Convertir esta forma de aleta a una forma libre
+ FinSetConfig.Convertfinset = Convertir la configuración de aleta
+ FinSetConfig.but.Splitfins = Separar las aletas
+ FinSetConfig.but.Splitfins.ttip = Dividir la configuración de aleta en varias separadas
+ FinSetConfig.lbl.Through-the-wall  = Raíces de aleta a través de la pared: 
+ FinSetConfig.lbl.Tablength = Longitud de la raíz:
+ FinSetConfig.ttip.Tablength = La longitud de la raíz de aleta.
+ FinSetConfig.lbl.Tabheight = Altura de la raíz: 
+ FinSetConfig.ttip.Tabheight = Envergadura en altura de la raíz de aleta.
+ FinSetConfig.lbl.Tabposition = Posición de la raíz:
+ FinSetConfig.ttip.Tabposition = Posición de la raíz de aleta.
+ FinSetConfig.lbl.relativeto = Relativo a
+ ! MotorDatabaseLoadingDialog
+ MotorDbLoadDlg.title = Cargando motores
+ MotorDbLoadDlg.Loadingmotors = Cargando motores...
+ ! RocketConfig
+ RocketCfg.lbl.Designname = Nombre del proyecto:
+ RocketCfg.lbl.Designer = Proyectista:
+ RocketCfg.lbl.Comments = Comentarios:
+ RocketCfg.lbl.Revisionhistory = Histórico de la revisión:
+ RocketCfg.lbl.Material = Material:
+ ! ShockCordConfig
+ ShockCordCfg.lbl.Shockcordlength = Longitud del tirante de suspensión
+ ! RocketComponentConfig
+ RocketCompCfg.lbl.Componentname = Nombre del componente:
+ RocketCompCfg.ttip.Thecomponentname = El nombre del componente.
+ RocketCompCfg.tab.Override = Elegir
+ RocketCompCfg.tab.MassandCGoverride = Elección de estimación de Masa y CG
+ RocketCompCfg.tab.Figure = Figura
+ RocketCompCfg.tab.Figstyleopt = Opciones de estilo de la figura
+ RocketCompCfg.tab.Comment = Comentarios
+ RocketCompCfg.tab.Specifyacomment = Especifique un comentario para el componente
+ RocketCompCfg.lbl.Mass = Masa:
+ RocketCompCfg.lbl.Componentmass = Masa del componente:
+ RocketCompCfg.lbl.overriddento = (Elegido para
+ RocketCompCfg.lbl.overriddenby = (Elegido por
+ RocketCompCfg.lbl.Componentmaterial = Material del componente:
+ RocketCompCfg.lbl.Componentfinish = Acabado:
+ RocketCompCfg.lbl.ttip.componentmaterialaffects = El material del componente afecta su peso.
+ RocketCompCfg.combo.ttip.componentmaterialaffects = El material del componente afecta su peso.
+ RocketCompCfg.lbl.longA1 = <html>El acabado del componente afecta su coeficiente de rozamiento.<br>
+ RocketCompCfg.lbl.longA2 = El valor indicado es el promedio de la rugosidad en altura de la superficie.
+ RocketCompCfg.but.Setforall = Aplicar a todos
+ RocketCompCfg.but.ttip.Setforall = Aplicar este acabado a todos los componentes del cohete.
+ RocketCompCfg.lbl.Overridemassorcenter = Elegir  la masa o el CG del
+ RocketCompCfg.checkbox.Overridemass = Elegir la masa:
+ RocketCompCfg.checkbox.Overridecenterofgrav = Elegir el CG:
+ RocketCompCfg.checkbox.OverridemassandCG = Elegir la masa y el CG de todos los subcomponentes
+ RocketCompCfg.lbl.longB1 = <html>La masa elegida no incluye los motores.<br>
+ RocketCompCfg.lbl.longB2 = El CG se mide desde el extremo frontal del
+ RocketCompCfg.lbl.Commentsonthe = Comentarios sobre
+ RocketCompCfg.lbl.Figurestyle = Estilo de figura:
+ RocketCompCfg.lbl.Componentcolor = Color del componente:
+ RocketCompCfg.lbl.Choosecolor = Elija color
+ RocketCompCfg.checkbox.Usedefaultcolor = Use color por defecto
+ RocketCompCfg.lbl.Complinestyle = Estilo de línea del componente:
+ RocketCompCfg.but.Saveasdefstyle = Guarde como estilo por defecto
+ RocketCompCfg.lbl.Diameter = Diámetro:
+ RocketCompCfg.lbl.Length = Longitud:
+ RocketCompCfg.lbl.Thickness = Espesor:
+ RocketCompCfg.checkbox.Endcapped = Extremo troncado
+ RocketCompCfg.ttip.Endcapped = Si el extremo del hombro está troncado.
+ RocketCompCfg.title.Noseconeshoulder = Hombro de la ojiva
+ RocketCompCfg.title.Aftshoulder = Trasera del hombro
+ RocketCompCfg.border.Foreshoulder = Hombro visible
+ !RocketCompCfg.lbl.Length = Length:
+ ! BulkheadConfig
+ BulkheadCfg.tab.Radius = Radio:
+ BulkheadCfg.tab.Thickness = Espesor:
+ BulkheadCfg.tab.General = General
+ BulkheadCfg.tab.Generalproperties = Propiedades generales
+ !CenteringRingConfig
+ CenteringRingCfg.tab.Outerdiam = Diámetro exterior:
+ CenteringRingCfg.tab.Innerdiam = Diámetro interior:
+ CenteringRingCfg.tab.Thickness = Espesor:
+ CenteringRingCfg.tab.General = General
+ CenteringRingCfg.tab.Generalproperties = Propiedades generales
+ !ComponentConfigDialog
+ ComponentCfgDlg.configuration = configuración
+ ComponentCfgDlg.Modify = Modificar
+ !EllipticalFinSetConfig
+ EllipticalFinSetCfg.Nbroffins = Número de aletas:
+ EllipticalFinSetCfg.Rotation = Rotación:
+ EllipticalFinSetCfg.Fincant = Canto de aleta:
+ EllipticalFinSetCfg.Rootchord = Anclaje de la raíz:
+ EllipticalFinSetCfg.Height = Altura:
+ EllipticalFinSetCfg.Positionrelativeto = Posición relativa a:
+ EllipticalFinSetCfg.plus = plus
+ EllipticalFinSetCfg.FincrossSection = Sección de corte de la aleta:
+ EllipticalFinSetCfg.Thickness = Espesor:
+ EllipticalFinSetCfg.General = General
+ EllipticalFinSetCfg.Generalproperties = Propiedades generales
+ EllipticalFinSetCfg.ttip.Fincant = Ángulo que forma el canto de la aleta con respecto al fuselaje.
+ !FreeformFinSetConfig
+ FreeformFinSetCfg.tab.General = General
+ FreeformFinSetCfg.tab.ttip.General = Propiedades generales
+ FreeformFinSetCfg.tab.Shape = Forma
+ FreeformFinSetCfg.tab.ttip.Finshape = Forma de la aleta
+ FreeformFinSetCfg.lbl.Numberoffins = Número de aletas:
+ FreeformFinSetCfg.lbl.Finrotation = Rotación de la aleta:
+ FreeformFinSetCfg.lbl.Fincant = Canto de la aleta:
+ FreeformFinSetCfg.lbl.ttip.Fincant = Angulo que el canto de las aletas forman con respecto al fuselaje.
+ FreeformFinSetCfg.lbl.Posrelativeto = Posición relativa a:
+ FreeformFinSetCfg.lbl.plus = plus
+ FreeformFinSetCfg.lbl.FincrossSection = Sección de la aleta:
+ FreeformFinSetCfg.lbl.Thickness = Espesor:
+ !InnerTubeConfig
+ InnerTubeCfg.tab.Motor = Motor
+ InnerTubeCfg.tab.ttip.Motor = Configuración del porta motor
+ InnerTubeCfg.tab.Cluster = Cluster
+ InnerTubeCfg.tab.ttip.Cluster = Configuración del cluster
+ InnerTubeCfg.tab.Radialpos = Posición radial
+ InnerTubeCfg.tab.ttip.Radialpos = Posición radial
+ InnerTubeCfg.lbl.Selectclustercfg = Elija la configuración del cluster:
+ InnerTubeCfg.lbl.TubeSep = Separación del tubo:
+ InnerTubeCfg.lbl.ttip.TubeSep = La separación de los tubos, 1.0 = tocándose uno a otro
+ InnerTubeCfg.lbl.Rotation = Rotación:
+ InnerTubeCfg.lbl.ttip.Rotation = Configuración del ángulo de rotación del cluster
+ InnerTubeCfg.lbl.Rotangle = Angulo de rotación de la configuración del cluster
+ InnerTubeCfg.but.Splitcluster = Split cluster
+ InnerTubeCfg.lbl.longA1 = <html>Split del cluster dentro de componentes separados.<br>
+ InnerTubeCfg.lbl.longA2 = Esto también duplica todos los componentes unidos a este tubo interior.
+ InnerTubeCfg.but.Resetsettings = Reiniciar configuración
+ InnerTubeCfg.but.ttip.Resetsettings = Reiniciar la separación y la rotación a valores predeterminados
+ ! LaunchLugConfig
+ LaunchLugCfg.lbl.Length = Longitud:
+ LaunchLugCfg.lbl.Outerdiam = Diámetro exterior:
+ LaunchLugCfg.lbl.Innerdiam = Diámetro interior:
+ LaunchLugCfg.lbl.Thickness = Espesor:
+ LaunchLugCfg.lbl.Radialpos = Posición radial:
+ LaunchLugCfg.lbl.Posrelativeto = Posición relativa a:
+ LaunchLugCfg.lbl.plus = plus
+ LaunchLugCfg.tab.General = General
+ LaunchLugCfg.tab.Generalprop = Propiedades generales
+ ! MassComponentConfig
+ MassComponentCfg.lbl.Mass = Masa
+ MassComponentCfg.lbl.Length = Longitud
+ MassComponentCfg.lbl.Diameter = Diámetro
+ MassComponentCfg.lbl.PosRelativeto = Posición relativa a:
+ MassComponentCfg.lbl.plus = plus
+ MassComponentCfg.tab.General = General
+ MassComponentCfg.tab.ttip.General = Propiedades generales
+ MassComponentCfg.tab.Radialpos = Posición radial
+ MassComponentCfg.tab.ttip.Radialpos = Configuración de la posición radial
+ MassComponentCfg.lbl.Radialdistance = Distancia radial:
+ MassComponentCfg.lbl.Radialdirection = Dirección radial:
+ MassComponentCfg.but.Reset = Reiniciar
+ ! MotorConfig
+ MotorCfg.checkbox.compmotormount = Este componente es un porta motor
+ MotorCfg.lbl.Motorcfg = Configuración del motor:
+ MotorCfg.but.New = Nuevo
+ MotorCfg.lbl.Currentmotor = Motor actual:
+ MotorCfg.lbl.Motoroverhang = Sobresalida del motor:
+ MotorCfg.lbl.Ignitionat = Encendido en:
+ MotorCfg.lbl.plus = plus
+ MotorCfg.lbl.seconds = segundos
+ MotorCfg.lbl.longA1 = El diseño actual tiene solo una etapa.
+ MotorCfg.lbl.longA2 = Pueden agregarse etapas haciendo clic \"Nueva etapa\".
+ MotorCfg.lbl.longB1 = El diseño actual tiene
+ MotorCfg.lbl.longB2 = etapas.
+ MotorCfg.but.Selectmotor = Seleccionar motor
+ MotorCfg.but.Removemotor = Quitar motor
+ MotorCfg.lbl.motorLabel = Ninguno
+ ! NoseConeConfig
+ NoseConeCfg.lbl.Noseconeshape = Forma de la ojiva:
+ NoseConeCfg.lbl.Shapeparam = Parámetros de la forma:
+ NoseConeCfg.lbl.Noseconelength = Longitud de la ojiva:
+ NoseConeCfg.lbl.Basediam = Diámetro de la base:
+ NoseConeCfg.checkbox.Automatic = Automático
+ NoseConeCfg.lbl.Wallthickness = Espesor de la pared:
+ NoseConeCfg.checkbox.Filled = Archivado
+ NoseConeCfg.tab.General = General
+ NoseConeCfg.tab.ttip.General = Propiedades generales
+ NoseConeCfg.tab.Shoulder = Hombro
+ NoseConeCfg.tab.ttip.Shoulder = Propiedades del hombro
+ ! ParachuteConfig
+ ParachuteCfg.lbl.Canopy = Campana:
+ ParachuteCfg.lbl.Diameter = Diámetro:
+ ParachuteCfg.lbl.Material = Material:
+ ParachuteCfg.combo.MaterialModel = El material del componente afecta su peso.
+ ParachuteCfg.lbl.longA1 = <html>Drag coeficiente C<sub>D</sub>:
+ ParachuteCfg.lbl.longB1 = <html>Coeficiente de rozamiento relativo al área total del paracaídas.<br>
+ ParachuteCfg.lbl.longB2 = Un mas alto coeficiente de rozamiento genera un valor de descenso mas lento.  
+ ParachuteCfg.lbl.longB3 = Un valor típico para los paracaídas es 0,8.
+ ParachuteCfg.but.Reset = Reiniciar
+ ParachuteCfg.lbl.Shroudlines = Cuerdas:
+ ParachuteCfg.lbl.Numberoflines = Número de cuerdas:
+ ParachuteCfg.lbl.Linelength = Longitud de cuerda:
+ ParachuteCfg.lbl.Material = Material:
+ ParachuteCfg.lbl.Posrelativeto = Posición relativa a:
+ ParachuteCfg.lbl.plus = plus
+ ParachuteCfg.lbl.Packedlength = Longitud empaquetado:
+ ParachuteCfg.lbl.Packeddiam = Diámetro del empaquetado:
+ ParachuteCfg.lbl.Deploysat = Despliegue en:
+ ParachuteCfg.lbl.seconds = segundos
+ ParachuteCfg.lbl.Altitude = Altitud:
+ ParachuteCfg.tab.General = General
+ ParachuteCfg.tab.ttip.General = Propiedades generales
+ ParachuteCfg.tab.Radialpos = Posición radial
+ ParachuteCfg.tab.ttip.Radialpos = Configuración de la posición radial
+ ParachuteCfg.lbl.Radialdistance = Distancia radial:
+ ParachuteCfg.lbl.Radialdirection = Dirección radial:
+ ParachuteCfg.but.Reset = Reiniciar
+ ! ShockCordConfig 
+ ShockCordCfg.lbl.Shockcordlength = Longitud del tirante de suspensión
+ ShockCordCfg.lbl.Shockcordmaterial = Material del tirante de suspensión:
+ ShockCordCfg.lbl.Posrelativeto = Posición relativa a:
+ ShockCordCfg.lbl.plus = plus
+ ShockCordCfg.lbl.Packedlength = Longitud del empaquetado:
+ ShockCordCfg.lbl.Packeddiam = Diámetro del empaquetado:
+ ShockCordCfg.tab.General = General
+ ShockCordCfg.tab.ttip.General = Propiedades generales
+ !SleeveConfig
+ SleeveCfg.tab.Outerdiam = Diámetro exterior:
+ SleeveCfg.tab.Innerdiam = Diámetro interior:
+ SleeveCfg.tab.Wallthickness = Espesor de la pared:
+ SleeveCfg.tab.Length = Longitud:
+ SleeveCfg.tab.General = General
+ SleeveCfg.tab.Generalproperties = Propiedades generales
+ ! StreamerConfig
+ StreamerCfg.lbl.Striplength = Longitud de la cinta:
+ StreamerCfg.lbl.Stripwidth = Ancho de la cinta:
+ StreamerCfg.lbl.Striparea = Área de la cinta:
+ StreamerCfg.lbl.Aspectratio = Relación de aspecto:
+ StreamerCfg.lbl.Material = Material:
+ StreamerCfg.combo.ttip.MaterialModel = El material del componente afecta su peso.
+ StreamerCfg.lbl.longA1 = <html>Coeficiente de fricción C<sub>D</sub>:
+ StreamerCfg.lbl.longB1 = <html>Coeficiente de fricción relativo al área total de la banderola.<br>
+ StreamerCfg.lbl.longB2 = Un mayor coeficiente de fricción genera un valor de descenso mas lento.
+ StreamerCfg.lbl.Automatic = Automático
+ StreamerCfg.lbl.longC1 = El coeficiente de Fricción es relativo al área de la banderola.
+ StreamerCfg.lbl.Posrelativeto = Posición relativa a:
+ StreamerCfg.lbl.plus = plus
+ StreamerCfg.lbl.Packedlength = Longitud de empaquetado:
+ StreamerCfg.lbl.Packeddiam = Diámetro de empaquetado:
+ StreamerCfg.lbl.Deploysat = Despliegue a:
+ StreamerCfg.lbl.seconds = segundos
+ StreamerCfg.lbl.Altitude = Altitud:
+ StreamerCfg.tab.General = General
+ StreamerCfg.tab.ttip.General = Propiedades generales
+ StreamerCfg.tab.Radialpos = Posición radial
+ StreamerCfg.tab.ttip.Radialpos = Configuración de posición radial
+ StreamerCfg.lbl.Radialdistance = Distancia radial:
+ StreamerCfg.lbl.Radialdirection = Dirección radial:
+ StreamerCfg.but.Reset = Reiniciar
+ ! ThicknessRingComponentConfig
+ ThicknessRingCompCfg.tab.Outerdiam = Diámetro exterior:
+ ThicknessRingCompCfg.tab.Innerdiam = Diámetro Interior:
+ ThicknessRingCompCfg.tab.Wallthickness = Espesor de la pared:
+ ThicknessRingCompCfg.tab.Length = Longitud:
+ ThicknessRingCompCfg.tab.General = General
+ ThicknessRingCompCfg.tab.Generalprop = Propiedades generales
+ ! TransitionConfig
+ TransitionCfg.lbl.Transitionshape = Forma de la transición:
+ TransitionCfg.checkbox.Clipped = Acortado
+ TransitionCfg.lbl.Shapeparam = Parámetro de forma:
+ TransitionCfg.lbl.Transitionlength = Longitud de la transición:
+ TransitionCfg.lbl.Forediam = Diámetro delantero:
+ TransitionCfg.checkbox.Automatic = Automático
+ TransitionCfg.lbl.Aftdiam = Diámetro trasero:
+ TransitionCfg.lbl.Wallthickness = Espesor de la pared:
+ TransitionCfg.checkbox.Filled = Archivado
+ TransitionCfg.tab.General = General
+ TransitionCfg.tab.Generalproperties = Propiedades generales
+ TransitionCfg.tab.Shoulder = Hombro
+ TransitionCfg.tab.Shoulderproperties = Propiedades del hombro
+ ! TrapezoidFinSetConfig
+ TrapezoidFinSetCfg.lbl.Nbroffins = Número de aletas:
+ TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Número de aletas en la base de aletas.
+ TrapezoidFinSetCfg.lbl.Finrotation = Rotación de las aletas:
+ TrapezoidFinSetCfg.lbl.ttip.Finrotation = Ángulo de la primera aleta en la base de aletas.
+ TrapezoidFinSetCfg.lbl.Fincant = Canto de aleta:
+ TrapezoidFinSetCfg.lbl.ttip.Fincant = El ángulo del canto de las aletas respecto al fuselaje.
+ TrapezoidFinSetCfg.lbl.Rootchord = Anclaje de la raíz:
+ TrapezoidFinSetCfg.lbl.Tipchord = Forma de la extremidad:
+ TrapezoidFinSetCfg.lbl.Height = Altura:
+ TrapezoidFinSetCfg.lbl.Sweeplength = Longitud del barrido:
+ TrapezoidFinSetCfg.lbl.Sweepangle = Ángulo de barrido:
+ TrapezoidFinSetCfg.lbl.FincrossSection = Sección de la aleta:
+ TrapezoidFinSetCfg.lbl.Thickness = Espesor:
+ TrapezoidFinSetCfg.lbl.Posrelativeto = Posición relativa a:
+ TrapezoidFinSetCfg.lbl.plus = plus
+ TrapezoidFinSetCfg.tab.General = General
+ TrapezoidFinSetCfg.tab.Generalproperties = Propiedades generales
+ !MotorConfigurationModel
+ MotorCfgModel.Editcfg = Editar configuraciones
+ ! StorageOptionChooser
+ StorageOptChooser.lbl.Simdatatostore = Almacenar datos simulados
+ StorageOptChooser.rdbut.Allsimdata = Todos los datos simulados
+ StorageOptChooser.lbl.longA1 = <html>Almacenar todos los datos simulados.<br>
+ StorageOptChooser.lbl.longA2 = Puede significar archivos muy grandes
+ StorageOptChooser.rdbut.Every = Cada
+ StorageOptChooser.lbl.longB1 = <html>Almacenar valores de impresión aproximadamente este lejano apartado.<br>
+ StorageOptChooser.lbl.longB2 = Resultados de valores grandes en archivos mas pequeños.
+ StorageOptChooser.lbl.seconds = Segundos
+ StorageOptChooser.rdbut.Onlyprimfig = Solamente figuras primarios
+ StorageOptChooser.lbl.longC1 = <html>Almacenas sólo los valores en la tabla sumario.<br>
+ StorageOptChooser.lbl.longC2 = Estos resultados en los archivos mas pequeños.
+ StorageOptChooser.checkbox.Compfile = Archivo comprimido
+ StorageOptChooser.lbl.UsingComp = Usando la compresión reducimos el tamaño de los archivos. 
+ StorageOptChooser.lbl.longD1 = Una estimación de cuan grande será un archivo podría tenerse con las presentes opciones.
+ StorageOptChooser.ttip.Saveopt = Guardar opciones
+ StorageOptChooser.lbl.Estfilesize = Estimación del tamaño del archivo:
+ StorageOptChooser.lbl.Saveopt = Guardar opciones
+ ! ThrustCurveMotorSelectionPanel
+ TCMotorSelPan.lbl.Selrocketmotor = Selecciones el motor del cohete:
+ TCMotorSelPan.checkbox.hideSimilar = Borrar las curvas muy similares
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Mostrar todos los motores
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Mostrar motores con diámetro inferior al del tubo portamotor
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Mostrar motores con diámetro igual al del tubo portamotor
+ TCMotorSelPan.lbl.Motormountdia = Diámetro del portamotor:
+ TCMotorSelPan.lbl.Search = Buscar:
+ TCMotorSelPan.lbl.Selectthrustcurve = Seleccione curva de empuje:
+ TCMotorSelPan.lbl.Ejectionchargedelay = Retardo de la carga de eyección:
+ TCMotorSelPan.equalsIgnoreCase.None = Ninguno
+ TCMotorSelPan.lbl.NumberofsecondsorNone = (Número de segundos o \"Ninguno\")
+ TCMotorSelPan.lbl.Totalimpulse = Impulso total:
+ TCMotorSelPan.lbl.Avgthrust = Empuje medio:
+ TCMotorSelPan.lbl.Maxthrust = Empuje máximo:
+ TCMotorSelPan.lbl.Burntime = Tiempo de quemado:
+ TCMotorSelPan.lbl.Launchmass = Masa a lanzar:
+ TCMotorSelPan.lbl.Emptymass = Masa vacía:
+ TCMotorSelPan.lbl.Datapoints = Puntos dato:
+ TCMotorSelPan.lbl.Digest = Resumen:
+ TCMotorSelPan.title.Thrustcurve = Curva de empuje:
+ TCMotorSelPan.title.Thrust = Empuje
+ TCMotorSelPan.delayBox.None = Ninguno
+ ! PlotDialog
+ PlotDialog.title.Flightdataplot = Representar los datos de vuelo
+ PlotDialog.Chart.Simulatedflight = Vuelo simulado
+ PlotDialog.CheckBox.Showdatapoints = Mostrar los puntos datos
+ PlotDialog.lbl.Chart = Click+bajar el rozamiento+derecha ampliar, arriba+izquierda disminuir
+ ! "main" prefix is used for the main application dialog
+ main.menu.file = Archivo
+ main.menu.file.new = Nuevo
+ main.menu.file.open = Abrir ...
+ main.menu.file.openExample = Abrir ejemplo ...
+ main.menu.file.save = Guardar
+ main.menu.file.saveAs = Guardar como ...
+ main.menu.file.print = Imprimir ...
+ main.menu.file.close = Cerrar
+ main.menu.file.quit = Silenciar
+ main.menu.edit = Representar
+ main.menu.edit.undo = Invertir
+ main.menu.edit.redo = Rehacer
+ main.menu.edit.cut = Cortar
+ main.menu.edit.copy = Copiar
+ main.menu.edit.paste = Pegar
+ main.menu.edit.delete = Borrar
+ main.menu.edit.preferences = Preferencias
+ main.menu.analyze = Analizar
+ main.menu.analyze.componentAnalysis = Análisis de componentes
+ main.menu.help = Ayuda
+ main.menu.help.license = Licencia
+ main.menu.help.bugReport = Report de supresiones
+ main.menu.help.debugLog = Registro de recuperaciones
+ main.menu.help.about = Acerca de
+ main.menu.debug = Recuperación
+ main.menu.debug.whatisthismenu = ¿Que es este menú?
+ main.menu.debug.createtestrocket = Crear prueba de modelo
+ ! database
+ ! Translate here all material database
+ !
+ ! Material database
+ ! BULK_MATERIAL
+ Databases.materials.Acrylic = Acrílico
+ Databases.materials.Balsa = Balsa
+ Databases.materials.Birch = Abedul
+ Databases.materials.Cardboard = Cartón
+ Databases.materials.Carbonfiber = Fibra de Carbono
+ Databases.materials.Cork = Corcho
+ Databases.materials.DepronXPS = Depron (XPS)
+ Databases.materials.Fiberglass = Fibra de vidrio
+ Databases.materials.Kraftphenolic = Cartón fenólico
+ Databases.materials.Maple = Arce
+ Databases.materials.Paperoffice = Papel (oficina)
+ Databases.materials.Pine = Pino
+ Databases.materials.Plywoodbirch = Contrachapado (birch)
+ Databases.materials.PolycarbonateLexan = Policarbonato (Lexan)
+ Databases.materials.Polystyrene = Poliestireno
+ Databases.materials.PVC = PVC
+ Databases.materials.Spruce = Pulido
+ Databases.materials.StyrofoamgenericEPS = Porex (generico EPS)
+ Databases.materials.StyrofoamBluefoamXPS = Porex \"Foam azul\" (XPS)
+ Databases.materials.Quantumtubing = Quantum tubing
+ !SURFACE_MATERIAL
+ Databases.materials.Ripstopnylon = Ripstop nylon
+ Databases.materials.Mylar = Mylar
+ Databases.materials.Polyethylenethin = Polietileno (delgado)
+ Databases.materials.Polyethyleneheavy = Polietileno (grueso)
+ Databases.materials.Silk = Seda
+ Databases.materials.Paperoffice = Papel (oficina)
+ Databases.materials.Cellophane = Celofán
++Databases.materials.Crepepaper = Cr\u00eape Papel
+ ! LINE_MATERIAL
+ Databases.materials.Threadheavy-duty = Trenzado (Alta resistencia)
+ Databases.materials.Elasticcordround2mm = Cordón elástico (aprox. 2mm, 1/16 in)
+ Databases.materials.Elasticcordflat6mm = Cordón elástico (Plano  6mm, 1/4 in)
+ Databases.materials.Elasticcordflat12mm = Cordón elástico (Plano 12mm, 1/2 in)
+ Databases.materials.Elasticcordflat19mm = Cordón elástico (Plano 19mm, 3/4 in)
+ Databases.materials.Elasticcordflat25mm = Cordón elástico (Plano 25mm, 1 in)
+ Databases.materials.Braidednylon2mm = Nylon trenzado (2 mm, 1/16 in)
+ Databases.materials.Braidednylon3mm = Nylon trenzado (3 mm, 1/8 in)
+ Databases.materials.Tubularnylon11mm = Nylon tubular (11 mm, 7/16 in)
+ Databases.materials.Tubularnylon14mm = Nylon tubular (14 mm, 9/16 in)
+ Databases.materials.Tubularnylon25mm = Nylon tubular (25 mm, 1 in)
+ ! ExternalComponent
+ ExternalComponent.Rough = Rugoso
+ ExternalComponent.Unfinished = Inacabado
+ ExternalComponent.Regularpaint = Pintura normal
+ ExternalComponent.Smoothpaint = Pintura fina
+ ExternalComponent.Polished = Pulido
+ ! LineStyle
+ LineStyle.Solid = Sólido
+ LineStyle.Dashed = Pulverizado
+ LineStyle.Dotted = Punteado
+ LineStyle.Dash-dotted = Pulverizado con puntos
+ LineStyle.Defaultstyle = Estilo por defecto
+ ! Shape
+ Shape.Conical = Cónico
+ Shape.Conical.desc1 = Una ojiva cónica de perfil triangular
+ Shape.Conical.desc2 = Transición cónica de lados rectos
+ Shape.Ogive = Ojiva
+ Shape.Ogive.desc1 = Una ojiva con perfil de segmento circular.  El parámetro de forma de valor 1 produce una <b>Tangente a la ojiva</b>, Que tiene una transición suave al fuselaje, produce un valor menor que 1 <b>Secante a la ojiva</b>.
+ Shape.Ogive.desc2 = Una ojiva con perfil de segmento circular.  El parámetro de forma de valor 1 produce una <b>Tangente a la ojiva</b>, Que tiene una transición suave al fuselaje, produce un valor menor que 1 <b>Secante a la ojiva</b>.
+ Shape.Ellipsoid = Elipsoide
+ Shape.Ellipsoid.desc1 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;<i>Longitud</i> y <i>Diámetro</i>.
+ Shape.Ellipsoid.desc2 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;<i>Longitud</i> y <i>Diámetro</i>. Si la transición no se interrumpe, entonces el perfil se extiende al centro con el correspondiente radio.                
+ Shape.Powerseries = Series potentes
+ Shape.Powerseries.descA1 = Una serie de ojivas potentes tiene un perfil de<i>Radio</i>&nbsp;&veces;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longitud</i>)<sup><i>k</i></sup> donde <i>k</i> es el parámetro de forma.  Para <i>k</i>=0.5 este es un <b>
+ Shape.Powerseries.descA2 = -potencia</b> o <b>parabólico</b> ojiva, para <i>k</i>=0.75 un <b>
+ Shape.Powerseries.descA3 = -potencia</b>, y para <i>k</i>=1 a <b>cónica</b> ojiva.
+ Shape.Powerseries.descB1 = Una serie de transiciones potentes tiene un perfil de <i>Radio</i>&nbsp;&veces;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longitud</i>)<sup><i>k</i></sup> donde <i>k</i> es el parámetro de forma.  Para <i>k</i>=0.5 la transición es <b>
+ Shape.Powerseries.descB2 = -potencia</b> o <b>parabólica</b>, para <i>k</i>=0.75 a <b>
+ Shape.Powerseries.descB3 = -potencia</b>, y para <i>k</i>=1 <b>cónica</b>.
+ Shape.Parabolicseries = Serie parabólica
+ Shape.Parabolicseries.desc1 = A parabólica series ojiva Cone has a perfil de a parábola.  The forma parámetro defines el segmento de el parábola a utilice.  The forma parámetro 1.0 produces a <b>full parábola</b> que es tangente a el body tubo, 0.75 produces a <b>3/4 parábola</b>, 0.5 procudes a <b>1/2 parábola</b> y 0 produces a <b>cónico</b> ojiva .
+ Shape.Parabolicseries.desc2 = A parabólica series transición has a perfil de a parábola.  The forma parámetro defines el segmento de el parábola a utilice.  The forma parámetro 1.0 produces a <b>full parábola</b> que es tangente a el body tubo at el aft extremo, 0.75 produces a <b>3/4 parábola</b>, 0.5 procudes a <b>1/2 parábola</b> y 0 produces a <b>cónico</b> transición.
+ Shape.Haackseries = Haack series
+ Shape.Haackseries.desc1 = The Haack series ojiva  are designado a minimizar drag.  The forma parámetro 0 produces un <b>LD-Haack</b> o <b>Von Karman</b> ojiva , que minimizas drag para fijado longitud y diámetro, mientras a valor de 0.333 produces un <b>LV-Haack</b> ojiva , que minimizas drag para fijado longitud y volumen.
+ Shape.Haackseries.desc2 = The Haack series <i>ojiva </i> are designado a minimizar drag.  estas transición formas are sus equivalentes, pero do no necesariamente produce optima drag para transiciones.  The forma parámetro 0 produces un <b>LD-Haack</b> o <b>Von Karman</b> forma, mientras a valor de 0.333 produces un <b>LV-Haack</b> shape.           
+ ! RocketComponent
+ RocketComponent.Position.TOP = Parte alta del componente
+ RocketComponent.Position.MIDDLE = Parte media del componente
+ RocketComponent.Position.BOTTOM = Extremo inferior del componente
+ RocketComponent.Position.AFTER = Despues del componente
+ RocketComponent.Position.ABSOLUTE = Punta de la ojiva
+ ! LaunchLug
+ LaunchLug.Launchlug = Guía
+ ! NoseCone
+ NoseCone.NoseCone = Ojiva
+ ! Transition
+ Transition.Transition = Transición cónica de lados rectos
+ !Stage
+ Stage.Stage = Etapa
+ ! BodyTube
+ BodyTube.BodyTube = Tubo del fuselaje
+ ! TubeCoupler
+ TubeCoupler.TubeCoupler = Acoplador
+ !InnerTube
+ InnerTube.InnerTube = Tubo interior
+ ! TrapezoidFinSet
+ TrapezoidFinSet.TrapezoidFinSet = Aleta en configuración trapezoidal
+ ! FreeformFinSet
+ FreeformFinSet.FreeformFinSet = Forma libre de aleta
+ !MassComponent
+ MassComponent.MassComponent = Componente masa
+ ! Parachute
+ Parachute.Parachute = Paracaídas
+ ! ShockCord
+ ShockCord.ShockCord = Tirante de suspensión
+ ! Bulkhead
+ Bulkhead.Bulkhead = Media cámara
+ !Rocket
+ Rocket.motorCount.Nomotor = [Sin motores]
+ Rocket.compname.Rocket = Cohete
+ !MotorMount
+ MotorMount.IgnitionEvent.AUTOMATIC = Automático (Lanzamiento o carga de eyección)
+ MotorMount.IgnitionEvent.LAUNCH = Lanzamiento
+ MotorMount.IgnitionEvent.EJECTION_CHARGE = Primera carga de eyección de la etapa previa
+ MotorMount.IgnitionEvent.BURNOUT = Primer encendido de la etapa previa
+ MotorMount.IgnitionEvent.NEVER = Nunca
+ !ComponentIcons 
+ ComponentIcons.Nosecone = Ojiva
+ ComponentIcons.Bodytube = Tubo del fuselaje
+ ComponentIcons.Transition = Transición
+ ComponentIcons.Trapezoidalfinset = Aleta en configuración trapezoidal
+ ComponentIcons.Ellipticalfinset = Aleta en configuración elíptica
+ ComponentIcons.Freeformfinset = Forma libre de aleta
+ ComponentIcons.Launchlug = Guía de lanzamiento
+ ComponentIcons.Innertube = Tubo interior
+ ComponentIcons.Tubecoupler = Tubo de acoplamiento
+ ComponentIcons.Centeringring = Arandela de centraje
+ ComponentIcons.Bulkhead = Media cámara
+ ComponentIcons.Engineblock = Tope motor
+ ComponentIcons.Parachute = Paracaídas
+ ComponentIcons.Streamer = Banderola
+ ComponentIcons.Shockcord = Tirante de suspensión
+ ComponentIcons.Masscomponent = Componente masa
+ ComponentIcons.disabled = (Desconectado)
+ ! StageAction
+ StageAction.Stage = Etapa
+ ! RecoveryDevice
+ RecoveryDevice.DeployEvent.LAUNCH = Lanzamiento (mas NN segundos)
+ RecoveryDevice.DeployEvent.EJECTION = Primera carga de eyección de esta etapa
+ RecoveryDevice.DeployEvent.APOGEE = Apogeo
+ RecoveryDevice.DeployEvent.ALTITUDE = Altura específica durante el descenso
+ RecoveryDevice.DeployEvent.NEVER = Nunca
+ ! FlightEvent
+ FlightEvent.Type.LAUNCH = Lanzamiento
+ FlightEvent.Type.IGNITION = Encendido del motor
+ FlightEvent.Type.LIFTOFF = Despegue
+ FlightEvent.Type.LAUNCHROD = Despeje de la varilla de lanzamiento
+ FlightEvent.Type.BURNOUT = Apagado del motor
+ FlightEvent.Type.EJECTION_CHARGE = Carga de eyección
+ FlightEvent.Type.STAGE_SEPARATION = Separación de etapa
+ FlightEvent.Type.APOGEE = Apogeo
+ FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Sistema de despliegue del sistema de recuperación
+ FlightEvent.Type.GROUND_HIT = Contacto con el suelo
+ FlightEvent.Type.SIMULATION_END = Fin de la simulación
+ FlightEvent.Type.ALTITUDE = Cambio de altura
+ ! ThrustCurveMotorColumns
+ TCurveMotorCol.MANUFACTURER = Fabricante
+ TCurveMotorCol.DESIGNATION = Designación
+ TCurveMotorCol.TYPE = Tipo
+ TCurveMotorCol.DIAMETER = Diámetro
+ TCurveMotorCol.LENGTH = Longitud
+ ! RocketInfo
+ RocketInfo.lengthLine.Length = Longitud
+ RocketInfo.lengthLine.maxdiameter = , max. Diámetro
+ RocketInfo.massText1 = Masa con motores
+ RocketInfo.massText2 = Masa sin motores
+ RocketInfo.at = a M=
+ RocketInfo.cgText = CG:
+ RocketInfo.cpText = CP:
+ RocketInfo.stabText = Estabilidad:
+ RocketInfo.Warning = Peligro:
+ RocketInfo.Calculating = Calculando...
+ RocketInfo.Apogee = Apogeo:
+ RocketInfo.Maxvelocity = Max. velocidad:
+ RocketInfo.Maxacceleration = Max. aceleración:
+ RocketInfo.apogeeValue = N/A
+ RocketInfo.Mach = (Mach
+ RocketInfo.velocityValue = N/A
+ RocketInfo.accelerationValue = N/A
+ ! FinSet
+ FinSet.CrossSection.SQUARE = Cuadrado
+ FinSet.CrossSection.ROUNDED = Redondo
+ FinSet.CrossSection.AIRFOIL = Superficie de sustentación
+ FinSet.TabRelativePosition.FRONT = Borde principal del extremo de anclaje
+ FinSet.TabRelativePosition.CENTER = Borde principal del anclaje
+ FinSet.TabRelativePosition.END = Borde principal de tracción
+ ! FlightDataType
+ FlightDataType.TYPE_TIME = Tiempo de quemado:
+ FlightDataType.TYPE_ALTITUDE = Altura específica durante el descenso
+ FlightDataType.TYPE_VELOCITY_Z = Velocidad vertical
+ FlightDataType.TYPE_ACCELERATION_Z = Aceleración vertical
+ FlightDataType.TYPE_VELOCITY_TOTAL = Velocidad total
+ FlightDataType.TYPE_ACCELERATION_TOTAL = Aceleración total
+ FlightDataType.TYPE_POSITION_X = Posición contra viento
+ FlightDataType.TYPE_POSITION_Y = Posición paralela al viento
+ FlightDataType.TYPE_POSITION_XY = Distancia lateral
+ FlightDataType.TYPE_POSITION_DIRECTION = Dirección lateral
+ FlightDataType.TYPE_VELOCITY_XY = Velocidad lateral
+ FlightDataType.TYPE_ACCELERATION_XY = Aceleración lateral
+ FlightDataType.TYPE_AOA = Ángulo de ataque:
+ FlightDataType.TYPE_ROLL_RATE = Relación de rotación
+ FlightDataType.TYPE_PITCH_RATE = Relación de pico
+ FlightDataType.TYPE_YAW_RATE = Relación de desvío
+ FlightDataType.TYPE_MASS = Masa
+ FlightDataType.TYPE_LONGITUDINAL_INERTIA = Momento de inercia longitudinal
+ FlightDataType.TYPE_ROTATIONAL_INERTIA = Momento de inercia rotacional
+ FlightDataType.TYPE_CP_LOCATION = CP situación
+ FlightDataType.TYPE_CG_LOCATION = CG situación
+ FlightDataType.TYPE_STABILITY = Calibración del margen de estabilidad
+ FlightDataType.TYPE_MACH_NUMBER = Número Mach
+ FlightDataType.TYPE_REYNOLDS_NUMBER = Número de Reynolds
+ FlightDataType.TYPE_THRUST_FORCE = Empuje
+ FlightDataType.TYPE_DRAG_FORCE = Fuerza de rozamiento
+ FlightDataType.TYPE_DRAG_COEFF = Coeficiente de rozamiento
+ FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coeficiente de rozamiento axial
+ FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coeficiente de rozamiento por fricción
+ FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Presión del coeficiente de rozamiento
+ FlightDataType.TYPE_BASE_DRAG_COEFF = Coeficiente de rozamiento base
+ FlightDataType.TYPE_NORMAL_FORCE_COEFF = Coeficiente de rozamiento normal
+ FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pico del coeficiente de rozamiento
+ FlightDataType.TYPE_YAW_MOMENT_COEFF = Coeficiente de rozamiento de desviación
+ FlightDataType.TYPE_SIDE_FORCE_COEFF = Coeficiente de fuerza lateral
+ FlightDataType.TYPE_ROLL_MOMENT_COEFF = Coeficiente del momento de rotación
+ FlightDataType.TYPE_ROLL_FORCING_COEFF = Fuerza del coeficiente de rotación
+ FlightDataType.TYPE_ROLL_DAMPING_COEFF = Disminución del coeficiente de rotación
+ FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Disminución del coeficiente de pico
+ FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Disminución del coeficiente de desviación
+ FlightDataType.TYPE_REFERENCE_LENGTH = Longitud de referencia: 
+ FlightDataType.TYPE_REFERENCE_AREA = Área de referencia
+ FlightDataType.TYPE_ORIENTATION_THETA = Orientación vertical (zenit)
+ FlightDataType.TYPE_ORIENTATION_PHI = Orientación lateral (azimut)
+ FlightDataType.TYPE_WIND_VELOCITY = Velocidad del viento
+ FlightDataType.TYPE_AIR_TEMPERATURE = Temperatura del aire
+ FlightDataType.TYPE_AIR_PRESSURE = Presión del aire
+ FlightDataType.TYPE_SPEED_OF_SOUND = Velocidad del sonido
+ FlightDataType.TYPE_TIME_STEP = Simulación del tiempo de etapa
+ FlightDataType.TYPE_COMPUTATION_TIME = Cálculo del tiempo
+ ! PlotConfiguration
+ PlotConfiguration.Verticalmotion = Movimiento vertical vs. Tiempo
+ PlotConfiguration.Totalmotion = Movimiento total vs. Tiempo
+ PlotConfiguration.Flightside = Perfil lateral de vuelo
+ PlotConfiguration.Stability = Estabilidad vs. Tiempo
+ PlotConfiguration.Dragcoef = Coeficiente de rozamiento vs. Número Mach
+ PlotConfiguration.Rollcharacteristics = Características de rotación
+ PlotConfiguration.Angleofattack = Ángulo de orientación y ataque vs. Tiempo
+ PlotConfiguration.Simulationtime = Simulación del tiempo de etapa y cálculo del tiempo
+ ! Warning
+ Warning.LargeAOA.str1 = Evaluación de la amplitud del ángulo de ataque.
+ Warning.LargeAOA.str2 = Evaluación de la amplitud del ángulo de ataque (
+ Warning.DISCONTINUITY = Discontinuidad en el diámetro del fuselaje.
+ Warning.THICK_FIN = Las aletas gruesas no están correctamente modeladas.
+ Warning.JAGGED_EDGED_FIN = las predicciones afiladas de la aleta pueden ser inexactas.
+ Warning.LISTENERS_AFFECTED = Los oyentes modificaron la simulación del vuelo
+ Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Sistema de recuperación abierto mientras el motor todavía empujaba
+ Warning.FILE_INVALID_PARAMETER = Parámetro no válido encontrado. Ignorarlo.
index 0000000000000000000000000000000000000000,e5c2f238663cbb367854661ee54521dc31e3e065..d4c0972aeedddfc88d53f3fae9a8b30c2850f549
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,1180 +1,1180 @@@
 -about.dlg.but.close = Fermer\r
 -about.dlg.lbl.translation = Traduit en français par Tripoli France\r
 -about.dlg.lbl.transwebsite = http://tripoli.france.free.fr/\r
\r
+ #\r
+ # French base translation file\r
+ # Translated by Tripoli France\r
\r
\r
+ ! Set to the name of the current translation file (used for debugging purposes)\r
+ debug.currentFile = messages_fr.properties\r
\r
+ ! RocketActions\r
+ RocketActions.checkbox.Donotaskmeagain = Ne plus me demander\r
+ RocketActions.lbl.Youcanchangedefop = Vous pouvez changer le mode opératoire par defaut dans les préferences.\r
+ RocketActions.showConfirmDialog.lbl1 = Supprimer les simulations sélectionnées?\r
+ RocketActions.showConfirmDialog.lbl2 = <html><i>Cette opération n'est pas réversible.</i>\r
+ RocketActions.showConfirmDialog.title = Effacer les simulations\r
+ RocketActions.DelCompAct.Delete = Effacer\r
+ RocketActions.DelCompAct.ttip.Delete = Effacer la pièce sélectionnée.\r
+ RocketActions.DelSimuAct.Delete = Effacer\r
+ RocketActions.DelSimuAct.ttip.Delete = Effacer la simulation sélectionnée.\r
+ RocketActions.DelAct.Delete = Effacer \r
+ RocketActions.DelAct.ttip.Delete = Effacer la pièce ou la simulation sélectionnée.\r
+ RocketActions.CutAction.Cut = Couper\r
+ RocketActions.CutAction.ttip.Cut = Couper cette pièce ou simulation, l'ajouter au presse papier et l'enlever du projet\r
+ RocketActions.CopyAct.Copy = Copier\r
+ RocketActions.CopyAct.ttip.Copy = Copier les pièces (et les pièces liées) dans le presse papier.\r
+ RocketActions.PasteAct.Paste = Coller\r
+ RocketActions.PasteAct.ttip.Paste = Coller la pièce ou simulation présente dans le presse papier dans le projet.\r
+ RocketActions.EditAct.Edit = Modifier\r
+ RocketActions.EditAct.ttip.Edit = Modifier la pièce sélectionnée.\r
+ RocketActions.NewStageAct.Newstage = Nouvel étage\r
+ RocketActions.NewStageAct.ttip.Newstage = Ajouter un nouvel étage au projet.\r
+ RocketActions.ActBoosterstage = Etage Booster\r
+ RocketActions.MoveUpAct.Moveup = Monter\r
+ RocketActions.MoveUpAct.ttip.Moveup = Monter la pièce.\r
+ RocketActions.MoveDownAct.Movedown = Descendre\r
+ RocketActions.MoveDownAct.ttip.Movedown = Descendre la pièce.\r
\r
+ ! RocketPanel\r
+ RocketPanel.FigTypeAct.Sideview = Vue de coté\r
+ RocketPanel.FigTypeAct.ttip.Sideview = Vue de coté\r
+ RocketPanel.FigTypeAct.Backview = Vue arrière\r
+ RocketPanel.FigTypeAct.ttip.Backview = Vue arrière \r
+ RocketPanel.lbl.Motorcfg = Configuration Moteur:\r
+ RocketPanel.lbl.infoMessage = <html>Cliquer pour sélectionner &nbsp;&nbsp; Shift+cliquer pour sélectionner plusieurs &nbsp;&nbsp; Double-cliquer pour modifier &nbsp;&nbsp; Click+déplacer pour déplacer\r
\r
\r
+ ! BasicFrame\r
+ BasicFrame.SimpleFileFilter1 = Tous les fichiers fusée (*.ork; *.rkt)\r
+ BasicFrame.SimpleFileFilter2 = Fichiers OpenRocket (*.ork)\r
+ BasicFrame.SimpleFileFilter3 = Fichiers RockSim (*.rkt)\r
+ BasicFrame.tab.Rocketdesign = Projet fusée\r
+ BasicFrame.tab.Flightsim = Simulations de vol\r
+ BasicFrame.title.Addnewcomp = Ajouter une nouvelle pièce\r
+ BasicFrame.item.Openrocketdesign = Ouvrir un projet fusée\r
+ BasicFrame.item.Openexamplerocketdesign = Ouvrir un exemple de projet fusée\r
+ BasicFrame.item.SavecurRocketdesign = Sauvegarder le projet fusée courant\r
+ BasicFrame.item.SavecurRocketdesnewfile = Sauvegarder le projet fusée courant dans un nouveau fichier\r
+ BasicFrame.item.Printpart = Imprimer la liste des pièces et les modèles d'ailerons\r
+ BasicFrame.item.Closedesign = Fermer le projet fusée courant\r
+ BasicFrame.item.Quitprogram = Quitter le programme\r
+ BasicFrame.menu.Rocketedt = Modification de la fusée\r
+ BasicFrame.dlg.lbl1 = Le projet '\r
+ BasicFrame.dlg.lbl2 = ' N'a pas été sauvegardé.\r
+ BasicFrame.dlg.lbl3 = Voulez vous le sauvegarder?\r
+ BasicFrame.dlg.title = Projet non sauvegardé\r
+ BasicFrame.StageName.Sustainer = Sustainer\r
+ BasicFrame.WarningDialog.txt1 = Les problemes suivant sont survenus lors de l'ouverture de\r
+ BasicFrame.WarningDialog.txt2 = Certains elements du projet n'ont peut etre pas été chargé correctement.\r
+ BasicFrame.WarningDialog.title = Avertissement lors de l'ouverture du fichier\r
\r
+ ! Labels used in buttons of dialog windows\r
+ button.ok = OK\r
+ button.cancel = Annuler\r
+ button.close = Fermer\r
\r
+ ! Common labels used in buttons of dialog windows\r
+ dlg.but.ok = Accepter\r
+ dlg.but.cancel = Annuler\r
+ dlg.but.close = Fermer\r
\r
+ ! About Dialog\r
 -compaddbuttons.Bodytube = Tube du corps\r
++AboutDialog.lbl.translation = Traduit en français par\r
++AboutDialog.lbl.translator = Tripoli France\r
++AboutDialog.lbl.translatorWebsite = http://tripoli.france.free.fr/\r
\r
+ ! Bug Report dialog\r
+ bugreport.dlg.title = Rapport d'erreurs\r
+ bugreport.dlg.but.Sendbugreport = Envoyer un rapport d'erreurs\r
+ bugreport.dlg.but.Sendbugreport.Ttip = Envoyer automatiquement un rapport d'erreurs aux developpeurs d'OpenRocket\r
+ bugreport.dlg.successmsg1 = Rapport d'erreurs envoyé avec succès.\r
+ bugreport.dlg.successmsg2 = Merci d'avoir contribué à l'amélioration d'OpenRocket!\r
+ bugreport.dlg.successmsg3 = Rapport d'erreurs envoyé\r
+ bugreport.dlg.connectedInternet = <html>Si vous etes connecté sur Internet, vous pouvez tout simplement cliquer sur <em>Envoyer un rapport d'erreurs</em>.\r
+ bugreport.dlg.otherwise = Sinon envoyez le texte ci-dessous à l'adresse:\r
+ bugreport.lbl.Theinformation = Les informations ci-dessus sont succeptibles d'etre incluse dans un rapport d'erreur publique.  Assurez vous qu'il ne contienne pas d'informations sensibles que vous ne voulez pas rendre publique.\r
+ bugreport.dlg.failedmsg1 = OpenRocket n'a pas réussi à envoyer le rapport d'erreur:\r
+ bugreport.dlg.failedmsg2 = S'il vous plait envoyez le rapport manuellement à\r
+ bugreport.dlg.failedmsg3 = Erreur d'envoi du rapport\r
+ bugreport.reportDialog.txt = <html><b>Vous pouvez signaler une erreur avec OpenRocket en remplissant et en envoyant le message ci-dessous.</b><br>Vous pouvez egalement signaler des erreurs et inclure des pieces jointes sur le site web du projet.\r
+ bugreport.reportDialog.txt2 = <html><b>S'il vous plait ajoutez une courte description de ce que vous faisiez lorsque l'erreur s'est produite.</b>\r
\r
\r
+ ! Debug log dialog\r
+ debuglogdlg.but.clear = Effacer\r
+ debuglogdlg.OpenRocketdebuglog = Fichier debug d'OpenRocket\r
+ debuglogdlg.Displayloglines = Afficher les numéros des lignes:\r
+ debuglogdlg.Follow = Suivre\r
+ debuglogdlg.col.Time = Heure\r
+ debuglogdlg.col.Level = Niveau\r
+ debuglogdlg.col.Location = Emplacement\r
+ debuglogdlg.col.Message = Message\r
+ debuglogdlg.lbl.Loglinenbr = Numéro de la ligne:\r
+ debuglogdlg.lbl.Time = Heure:\r
+ debuglogdlg.lbl.Level = Niveau:\r
\r
\r
+ ! Edit Motor configuration dialog\r
+ edtmotorconfdlg.but.removemotor = Enlever le moteur\r
+ edtmotorconfdlg.but.Selectmotor = Choisir le moteur\r
+ edtmotorconfdlg.but.Removeconfiguration = Supprimer la configuration\r
+ edtmotorconfdlg.but.Newconfiguration = Nouvelle configuration\r
+ edtmotorconfdlg.lbl.Motormounts = <html><b>Portes moteur:</b>\r
+ edtmotorconfdlg.title.Editmotorconf = Changer la configuration moteur\r
+ edtmotorconfdlg.selectcomp = <html>Choisir les pièces utilisées par le porte moteur:\r
+ edtmotorconfdlg.lbl.Motorconfig = <html><b>Configurations moteur:</b>\r
+ edtmotorconfdlg.lbl.Configname = Nom de la configuration:\r
+ edtmotorconfdlg.lbl.Leavenamedefault = Laisser le champ vide par défaut.\r
\r
+ ! Example design dialog\r
+ exdesigndlg.but.open = Ouvrir\r
+ exdesigndlg.lbl.Selectexample = Chosir l'exemple de projet à ouvrir:\r
+ exdesigndlg.lbl.Openexampledesign = Ouvrir un exemple de projet\r
+ exdesigndlg.lbl.Exampledesignsnotfound = Impossible de trouver les exemples de projets.\r
+ exdesigndlg.lbl.Examplesnotfound = Exemples non trouvés\r
\r
+ ! Print panel dialog\r
+ printdlg.but.saveaspdf = Sauvegarder en PDF\r
+ printdlg.but.preview = Prévisualisation\r
+ printdlg.but.settings = Configuration\r
\r
+ ! Material edit panel\r
+ matedtpan.but.new = Nouveau\r
+ matedtpan.but.edit = Editer\r
+ matedtpan.but.delete = Effacer\r
+ matedtpan.but.revertall = Revenir aux valeurs précédente\r
+ matedtpan.col.Material = Matériaux\r
+ matedtpan.col.Type = Type\r
+ matedtpan.col.Density = Densité\r
+ matedtpan.col.but.ttip.New = Ajouter un nouveau matériau\r
+ matedtpan.title.Addcustmaterial = Ajouter un matériau personnalisé\r
+ matedtpan.but.ttip.edit = Modifier un matériau existant\r
+ matedtpan.title.Editmaterial = Modifier un matériau\r
+ matedtpan.title2.Editmaterial = Les matériaux prédéfinis ne peuvent pas être modifiés.\r
+ matedtpan.but.ttip.delete = Supprimer un matériau personnalisé\r
+ matedtpan.but.ttip.revertall = Supprimer tous les matériaux personnalisés\r
+ matedtpan.title.Deletealluser-defined = Effacer tous les matériaux personalisés?\r
+ matedtpan.title.Revertall = Revenir aux valeurs précédentes?\r
+ matedtpan.lbl.edtmaterials = <html><i>Modifier les matériaux n'affectera pas les projets fusée existants.</i>\r
\r
+ !MaterialModel\r
+ MaterialModel.title.Material = Matériau\r
+ MaterialModel.title.Defcustmat = Définir un matériau personnalisé\r
\r
\r
+ ! Preference dialog\r
+ pref.dlg.but.add = Ajouter\r
+ pref.dlg.but.reset = Réinitialiser\r
+ pref.dlg.but.checknow = Vérifier maintenant\r
+ pref.dlg.but.defaultmetric = Système métrique\r
+ pref.dlg.but.defaultimperial = Système imperial\r
+ pref.dlg.title.Preferences = Préférences \r
+ pref.dlg.tab.Units = Unités\r
+ pref.dlg.tab.Defaultunits = Unités par défaut\r
+ pref.dlg.tab.Materials = Matériaux\r
+ pref.dlg.tab.Custommaterials = Matériaux personnalisés\r
+ pref.dlg.tab.Options = Options\r
+ pref.dlg.tab.Miscellaneousoptions = Autres options\r
+ pref.dlg.lbl.Positiontoinsert = Position pour insérer des composants internes:\r
+ pref.dlg.lbl.Confirmdeletion = Confirmer l'effacement des simulations:\r
+ pref.dlg.lbl.User-definedthrust = Courbes de poussée personnalisées:\r
+ pref.dlg.Allthrustcurvefiles = Tous les fichiers de courbes de poussée (*.eng; *.rse; *.zip; répertoires)\r
+ pref.dlg.RASPfiles = Fichiers moteur RASP (*.eng)\r
+ pref.dlg.RockSimfiles = Fichiers moteur RockSim (*.rse)\r
+ pref.dlg.ZIParchives = Archives ZIP (*.zip)\r
+ pref.dlg.checkbox.Checkupdates = Rechercher les mises à jour au démarrage\r
+ pref.dlg.ttip.Checkupdatesnow = Recherchez les mises à jour maintenant\r
+ pref.dlg.lbl.Selectprefunits = Choisissez vos unités favorites:\r
+ pref.dlg.lbl.Rocketdimensions = Dimensions de la fusée:\r
+ pref.dlg.lbl.Linedensity = Epaisseur des lignes:\r
+ pref.dlg.lbl.Motordimensions = Dimensions du moteur:\r
+ pref.dlg.lbl.Surfacedensity = Densité de la Surface:\r
+ pref.dlg.lbl.Distance = Distance:\r
+ pref.dlg.lbl.Bulkdensity =  Densité apparente:\r
+ pref.dlg.lbl.Velocity = Vitesse:\r
+ pref.dlg.lbl.Surfaceroughness = Rugosité de la Surface:\r
+ pref.dlg.lbl.Acceleration = Accélération:\r
+ pref.dlg.lbl.Area = Surface:\r
+ pref.dlg.lbl.Mass = Masse:\r
+ pref.dlg.lbl.Angle = Angle:\r
+ pref.dlg.lbl.Force = Force:\r
+ pref.dlg.lbl.Rollrate = Taux de roulis:\r
+ pref.dlg.lbl.Totalimpulse = Impulsion totale:\r
+ pref.dlg.lbl.Temperature = Température:\r
+ pref.dlg.lbl.Momentofinertia = Moment d'inertie:\r
+ pref.dlg.lbl.Pressure = Pression:\r
+ pref.dlg.lbl.Stability = Stabilité:\r
+ pref.dlg.lbl.effect1 = Les changements prendront effet la prochaine fois que vous ouvrirez une fenêtre.\r
+ pref.dlg.lbl.Checkingupdates = Recherche des mises à jour...\r
+ pref.dlg.lbl.msg1 = Une erreur est survenue durant la communication avec le serveur.\r
+ pref.dlg.lbl.msg2 = Incapable de récupérer les informations de mise à jour\r
+ pref.dlg.lbl.msg3 = Vous utilisez la dernière version d'OpenRocket.\r
+ pref.dlg.lbl.msg4 = Pas de mises à jour disponible\r
+ pref.dlg.PrefChoiseSelector1 = Toujours demander\r
+ pref.dlg.PrefChoiseSelector2 = Insérer au milieu\r
+ pref.dlg.PrefChoiseSelector3 = Ajouter à la fin\r
+ pref.dlg.PrefBooleanSelector1 = Supprimer\r
+ pref.dlg.PrefBooleanSelector2 = Confirmer\r
+ pref.dlg.Add = Ajouter\r
+ pref.dlg.DescriptionArea.Adddirectories = Ajouter des répertoires, des fichiers moteurs RASP (*.eng), des fichiers moteurs RockSim (*.rse) ou des fichiers achives ZIP separés par un point virgule (;) pour charger des courbes de pousées externes.  Les changements prendront effet au prochain démarrage d'OpenRocket.\r
\r
\r
+ ! Simulation edit dialog\r
+ simedtdlg.but.runsimulation = Lancer la simulation\r
+ simedtdlg.but.resettodefault = Restaurer les paramètres par défaut\r
+ simedtdlg.but.add = Ajouter\r
+ simedtdlg.but.remove = Enlever\r
+ simedtdlg.title.Editsim = Modifier la simulation\r
+ simedtdlg.lbl.Simname = Nom de la simulation:\r
+ simedtdlg.tab.Launchcond = Conditions de lancement\r
+ simedtdlg.tab.Simopt = Options de simulation\r
+ simedtdlg.tab.Plotdata = Tracer les données\r
+ simedtdlg.tab.Exportdata = Exporter les données\r
+ simedtdlg.lbl.Motorcfg = Configuration moteur:\r
+ simedtdlg.lbl.ttip.Motorcfg = Choisir la configuration moteur à utiliser.\r
+ simedtdlg.combo.ttip.motorconf = Choisir la configuration moteur à utiliser.\r
+ simedtdlg.lbl.Wind = Vent\r
+ simedtdlg.lbl.Averwindspeed = Vitesse moyenne du vent:\r
+ simedtdlg.lbl.ttip.Averwindspeed = Vitesse moyenne du vent par rapport au sol.\r
+ simedtdlg.lbl.Stddeviation = Dérive standard:\r
+ simedtdlg.lbl.ttip.Stddeviation = <html>La dérive standard de la vitesse du vent.<br>La vitesse du vent est le double de l'écart-type de la moyenne dans 95% des cas.\r
+ simedtdlg.lbl.Turbulenceintensity = Intensité de la turbulence:\r
+ simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>L'intensité de la turbulence résulte de la division de la dérive par la vitesse moyenne de vent.<br>\r
+ simedtdlg.lbl.ttip.Turbulenceintensity2 = Les valeurs typiques vont de \r
+ simedtdlg.lbl.ttip.Turbulenceintensity3 = à\r
+ simedtdlg.border.Atmoscond = Conditions atmosphériques\r
+ simedtdlg.checkbox.InterStdAtmosphere = Utiliser les paramètres de l'Atmosphère Standard\r
+ simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Sélectionner pour utiliser les paramètres de l'Atmosphère Standard.<br>Ce modèle à une température de\r
+ simedtdlg.checkbox.ttip.InterStdAtmosphere2 = et une pression de \r
+ simedtdlg.checkbox.ttip.InterStdAtmosphere3 = au niveau de la mer.\r
+ simedtdlg.lbl.Temperature = Température:\r
+ simedtdlg.lbl.ttip.Temperature = Température du site de lancement.\r
+ simedtdlg.lbl.Pressure = Pression:\r
+ simedtdlg.lbl.ttip.Pressure = Pression atmosphérique du site de lancement.\r
+ simedtdlg.lbl.Launchsite = Site de lancement\r
+ simedtdlg.lbl.Latitude = Latitude:\r
+ simedtdlg.lbl.ttip.Latitude = <html>La latitude du site de lancement affecte l'attraction gravitationnelle de la Terre.<br>> Les valeurs positives sont dans l'hémisphère Nord, les valeurs négatives sur l'hémisphère Sud.\r
+ simedtdlg.lbl.Altitude = Altitude:\r
+ simedtdlg.lbl.ttip.Altitude = <html>Altitude du site de lancement par rapport au niveau de la mer.<br>Cela affecte la position de la fusée dans le modèle atmosphérique.\r
+ simedtdlg.border.Launchrod = Rampe de lancement\r
+ simedtdlg.lbl.Length = Longueur:\r
+ simedtdlg.lbl.ttip.Length = Longueur de la rampe.\r
+ simedtdlg.lbl.Angle = Angle:\r
+ simedtdlg.lbl.ttip.Angle = Angle de la rampe de lancement par rapport à la verticale.\r
+ simedtdlg.lbl.Direction = Direction:\r
+ simedtdlg.lbl.ttip.Direction1 = <html>Direction de la rampe de lance par rapport au vent.<br>\r
+ simedtdlg.lbl.ttip.Direction2 =  = Face au vent,\r
+ simedtdlg.lbl.ttip.Direction3 = = vent arrière.\r
+ simedtdlg.border.Simopt = Options de simulation\r
+ simedtdlg.lbl.Calcmethod = Méthode de calcul:\r
+ simedtdlg.lbl.ttip.Calcmethod = <html>La méthode Barrowman étendue calcule les forces aérodynamique selon <br>les équations de Barrowman étendues pour arranger plus de pièces.\r
+ simedtdlg.lbl.ExtBarrowman = Barrowman étendu\r
+ simedtdlg.lbl.Simmethod = Méthode de Simulation:\r
+ simedtdlg.lbl.ttip.Simmethod1 = <html>Le simulateur de six degrés de liberté permet la liberté totale de fusée en vol.<br>\r
+ simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4<sup>th</sup> order Runge-Kutta 4 numerical integration.\r
+ simedtdlg.lbl.Timestep = Règlage du pas de temps:\r
+ simedtdlg.lbl.ttip.Timestep1 = <html>Le temps entre les étapes de la simulation.<br>Avec un pas de temps plus petit la simulation est plus lente mais également plus précise.<br>\r
+ simedtdlg.lbl.ttip.Timestep2 = The 4<sup>th</sup> order simulation method is quite accurate with a time step of\r
+ simedtdlg.but.ttip.resettodefault = Réinitialiser le pas de temps à sa valeur par défaut (\r
+ simedtdlg.border.Simlist = Auditeurs de simulation\r
+ simedtdlg.txt.longA1 = <html><i>Les auditeurs de simulation</i> sont une fonction avancé qui permet à l'utilisateur d'écrire du code pour suivre et interagir avec la simulation.  \r
+ simedtdlg.txt.longA2 = Pour plus de détails sur les auditeurs de simulation, reférez vous à la documentation technique d'OpenRocket.\r
+ simedtdlg.lbl.Curlist = Auditeurs de simulation actuel:\r
+ simedtdlg.lbl.Addsimlist = Ajouter un "auditeur de simulation"\r
+ simedtdlg.lbl.Noflightdata = Aucune donnée de vol disponible.\r
+ simedtdlg.lbl.runsimfirst = S'il vous plait faites tourner la simulation d'abord.\r
+ simedtdlg.chart.Simflight = Vol simulé\r
+ simedtdlg.dlg.Simres = Résultats de la simulation\r
+ simedtdlg.IntensityDesc.None = Aucune\r
+ simedtdlg.IntensityDesc.Verylow = Très basse\r
+ simedtdlg.IntensityDesc.Low = Basse\r
+ simedtdlg.IntensityDesc.Medium = Moyenne\r
+ simedtdlg.IntensityDesc.High = Haute\r
+ simedtdlg.IntensityDesc.Veryhigh = Très haute\r
+ simedtdlg.IntensityDesc.Extreme = Extreme\r
\r
\r
\r
\r
+ ! Simulation Panel\r
+ simpanel.but.newsimulation = Nouvelle simulation\r
+ simpanel.but.editsimulation = Modifier la simulation\r
+ simpanel.but.runsimulations = Lancer les simulations\r
+ simpanel.but.deletesimulations = Effacer les simulations\r
+ simpanel.but.plotexport = Tracer / exporter\r
+ simpanel.but.ttip.newsimulation = Ajouter une nouvelle simulation\r
+ simpanel.but.ttip.editsim = Modifier la simulation sélectionnée\r
+ simpanel.but.ttip.runsimu = Recommencer la simulation sélectionnée\r
+ simpanel.but.ttip.deletesim = Effacer les simulations sélectionnées\r
+ simpanel.checkbox.donotask = Ne plus me demander\r
+ simpanel.lbl.defpref = Vous pouvez changer le mode opératoire par défaut dans préferences.\r
+ simpanel.dlg.lbl.DeleteSim1 = Effacer les simulations sélectionnées?\r
+ simpanel.dlg.lbl.DeleteSim2 = <html><i>Cette opération n'est pas réversible.</i>\r
+ simpanel.dlg.lbl.DeleteSim3 = Effacer les simulations\r
+ simpanel.col.Name = Nom\r
+ simpanel.col.Motors = Moteurs\r
+ simpanel.col.Apogee = Apogée\r
+ simpanel.col.Maxvelocity = Vélocité Max.\r
+ simpanel.col.Maxacceleration = Accélération Max.\r
+ simpanel.col.Timetoapogee = Temps pour atteindre l'apogée\r
+ simpanel.col.Flighttime = Temps de vol\r
+ simpanel.col.Groundhitvelocity = Vitesse à l'atterrissage\r
\r
+ ! SimulationRunDialog\r
+ SimuRunDlg.title.RunSim = Simulations en cour...\r
+ SimuRunDlg.lbl.Running = En cour ...\r
+ SimuRunDlg.lbl.Simutime = Temps de simulation:\r
+ SimuRunDlg.lbl.Altitude = Altitude:\r
+ SimuRunDlg.lbl.Velocity = Vélocité:\r
+ SimuRunDlg.msg.Unabletosim = Simulation impossible:\r
+ SimuRunDlg.msg.errorOccurred = Une erreur s'est produite durant la simulation:\r
+ SimuRunDlg.msg.AnException1 = Une exception s'est produite lors de la simulation:\r
+ SimuRunDlg.msg.AnException2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous.\r
+ SimuRunDlg.msg.AssertionError1 = Une erreur de calcul s'est produite lors de la simulation.\r
+ SimuRunDlg.msg.AssertionError2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous.\r
+ SimuRunDlg.msg.unknownerror1 = Une erreur inconnue s'est produite lors de la simulation.\r
+ SimuRunDlg.msg.unknownerror2 = Le programme peut être instable, vous devez enregistrer toutes vos créations et redémarrez OpenRocket maintenant!\r
\r
\r
+ ! SimulationExportPanel\r
+ SimExpPan.desc = Fichiers dont les données sont séparées par une virgule (*.csv)\r
+ SimExpPan.border.Vartoexport = Variables à exporter\r
+ SimExpPan.but.Selectall = Tout sélectionner\r
+ SimExpPan.but.Selectnone = Ne rien sélectionner\r
+ SimExpPan.border.Fieldsep = Séparateur de champ\r
+ SimExpPan.lbl.Fieldsepstr = Séparateur de champ:\r
+ SimExpPan.lbl.longA1 = <html>La chaîne utilisée pour séparer les champs dans le fichier exporté.<br>\r
+ SimExpPan.lbl.longA2 = Utiliser ',' pour un fichier (CSV).\r
+ SimExpPan.checkbox.Includesimudesc = Inclure la description de la simulation\r
+ SimExpPan.checkbox.ttip.Includesimudesc = Inclure un commentaire au début du fichier pour décrire la simulation.\r
+ SimExpPan.border.Comments = Commentaires\r
+ SimExpPan.checkbox.Includefielddesc = Inclure les descriptions des champs\r
+ SimExpPan.checkbox.ttip.Includefielddesc = Inclure une ligne de commentaire avec la description des variables exportées.\r
+ SimExpPan.checkbox.Incflightevents = Inclure les événements de vol\r
+ SimExpPan.checkbox.ttip.Incflightevents = Inclure une ligne de commentaire pour chaque évènement de vol.\r
+ SimExpPan.lbl.Commentchar = Symbole pour les commentaires:\r
+ SimExpPan.lbl.ttip.Commentchar = Le symbole utilisé pour une ligne de commentaires.\r
+ SimExpPan.but.Exporttofile = Exporter dans un fichier...\r
+ SimExpPan.Fileexists.desc1 = Le fichier \"\r
+ SimExpPan.Fileexists.desc2 = \" existe déjà.  Ecraser?\r
+ SimExpPan.Fileexists.title = Le fichier existe\r
+ SimExpPan.ExportingVar.desc1 = Exporter 1 variable sur un total de\r
+ SimExpPan.ExportingVar.desc2 = Exportation\r
+ SimExpPan.ExportingVar.desc3 = variable sur un total de\r
+ SimExpPan.Col.Variable = Variable\r
+ SimExpPan.Col.Unit = Unité\r
\r
+ ! MotorPlot\r
+ MotorPlot.title.Motorplot = Courbe du moteur\r
+ MotorPlot.but.Select = Selection\r
+ MotorPlot.Chart.Motorthrustcurve = Courbe de poussée moteur\r
+ MotorPlot.Chart.Time = Temps / s\r
+ MotorPlot.Chart.Thrust = Poussée / N\r
+ MotorPlot.txt.Designation = Désignation:\r
+ MotorPlot.txt.Manufacturer = Manufacturer:\r
+ MotorPlot.txt.Type = Type:\r
+ MotorPlot.txt.Delays = Retards:\r
+ MotorPlot.txt.Comment = Commentaires:\n\r
\r
\r
\r
+ ! Simulation plot panel\r
+ simplotpanel.lbl.Presetplotconf = Prédéfinir les paramètres du tracé:\r
+ simplotpanel.lbl.Xaxistype = Axe des X:\r
+ simplotpanel.lbl.Unit = Unités:\r
+ simplotpanel.lbl.Yaxistypes = Axe des Y:\r
+ simplotpanel.lbl.Flightevents = Evénements du vol:\r
+ simplotpanel.but.All = Tous\r
+ simplotpanel.but.None = Aucun\r
+ simplotpanel.but.NewYaxisplottype = Nouveau type de tracé de l'axe Y\r
+ simplotpanel.but.Plotflight = Tracer le vol\r
+ simplotpanel.lbl.Axis = Axes:\r
+ simplotpanel.but.ttip.Removethisplot = Effacer le tracé\r
+ simplotpanel.Desc = Les données seront tracées en fonction du temps même si le type d'Axe des abscisses n'est pas le temps.\r
+ simplotpanel.OptionPane.lbl1 = Un maximum de 15 tracés est permis. \r
+ simplotpanel.OptionPane.lbl2 = Impossible d'ajouter le tracé\r
+ simplotpanel.AUTO_NAME = Auto\r
+ simplotpanel.LEFT_NAME = Gauche\r
+ simplotpanel.RIGHT_NAME = Droite\r
+ simplotpanel.CUSTOM = Personnalisé\r
\r
\r
\r
+ ! Component add buttons\r
+ compaddbuttons.Bodycompandfinsets = Pièces du corps et ailerons\r
+ compaddbuttons.Nosecone = Cône\r
 -compaddbuttons.Launchlug = Tube de guidage\r
++compaddbuttons.Bodytube = Tube du\ncorps\r
+ compaddbuttons.Transition = Transition\r
+ compaddbuttons.Trapezoidal = Trapézoïdale\r
+ compaddbuttons.Elliptical = Elliptique\r
+ compaddbuttons.Freeform = Forme libre\r
 -compaddbuttons.Centeringring = Anneau\nde centrage\r
++compaddbuttons.Launchlug = Tube de\nguidage\r
+ compaddbuttons.Innercomponent = Pièces internes\r
+ compaddbuttons.Innertube = Tube interne\r
+ compaddbuttons.Coupler = Coupleur\r
 -compaddbuttons.Engineblock = Bague \nde rétention\nmoteur\r
++compaddbuttons.Centeringring = Anneau de\ncentrage\r
+ compaddbuttons.Bulkhead = Cloison\r
 -compaddbuttons.Shockcord = Cordon amortisseur\r
++compaddbuttons.Engineblock = Bague de\nrétention\nmoteur\r
+ compaddbuttons.Massobjects = Pièces pleines\r
+ compaddbuttons.Parachute = Parachute\r
+ compaddbuttons.Streamer = Banderole\r
 -Databases.materials.Creapepaper = Cr\u00eape paper\r
++compaddbuttons.Shockcord = Cordon\namortisseur\r
+ compaddbuttons.Masscomponent = Poids\r
+ compaddbuttons.Donotaskmeagain = Ne plus me poser la question\r
+ compaddbuttons.Selectcomppos = Position de la pièce\r
+ compaddbuttons.lbl.Youcanchange = Vous pouvez modifier le fonctionnement par défaut dans les préférences.\r
+ compaddbuttons.lbl.insertcomp = Insérez la pièce après l'élément actuel ou en tant que dernier élément?\r
+ compaddbuttons.askPosition.Inserthere = Ajouter ici\r
+ compaddbuttons.askPosition.Addtotheend = Ajouter à la fin\r
+ compaddbuttons.askPosition.Cancel = Annuler\r
\r
+ ! Component Analysis Dialog\r
+ componentanalysisdlg.Componentanalysis = Analyse pièce\r
+ componentanalysisdlg.lbl.winddir = Direction du vent:\r
+ componentanalysisdlg.TitledBorder.warnings = Avertissements:\r
+ componentanalysisdlg.ToggleBut.worst = Pire\r
+ componentanalysisdlg.lbl.angleofattack = Angle d'attaque:\r
+ componentanalysisdlg.lbl.machnumber = Mach number:\r
+ componentanalysisdlg.lbl.rollrate = Taux de roulis:\r
+ componentanalysisdlg.lbl.activestages = Etages actifs:\r
+ componentanalysisdlg.lbl.motorconf = Configuration moteur:\r
+ componentanalysisdlg.TabStability.Col.Component = Pièce\r
+ componentanalysisdlg.TabStability = Stabilité\r
+ componentanalysisdlg.TabStability.ttip = Information de stabilité\r
+ componentanalysisdlg.dragTableModel.Col.Component = Pièce\r
+ componentanalysisdlg.dragTableModel.Col.Pressure = <html>Pression C<sub>D</sub>\r
+ componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>\r
+ componentanalysisdlg.dragTableModel.Col.friction = <html>Friction C<sub>D</sub>\r
+ componentanalysisdlg.dragTableModel.Col.total = <html>Total C<sub>D</sub>\r
+ componentanalysisdlg.dragTabchar = Caractéristiques de traînée\r
+ componentanalysisdlg.dragTabchar.ttip = Caractéristiques de traînée\r
+ componentanalysisdlg.rollTableModel.Col.component = Pièce\r
+ componentanalysisdlg.rollTableModel.Col.rollforc = Coefficient de forçage de roulis\r
+ componentanalysisdlg.rollTableModel.Col.rolldamp = Coefficient amortisseur de roulis\r
+ componentanalysisdlg.rollTableModel.Col.total = <html>Total C<sub>l</sub>\r
+ componentanalysisdlg.rollTableModel = Dynamique du roulis\r
+ componentanalysisdlg.rollTableModel.ttip = Dynamique du roulis\r
+ componentanalysisdlg.println.closingmethod = Méthode de clôture appelée:\r
+ componentanalysisdlg.println.settingnam = SETTING NAN VALUES\r
+ componentanalysisdlg.lbl.reflenght = Longueur de référence: \r
+ componentanalysisdlg.lbl.refarea = Aire de référence: \r
+ !componentanalysisdlg.but.close =Fermer\r
\r
+ ! Custom Material dialog\r
+ custmatdlg.title.Custommaterial = Matériau personnalisé\r
+ custmatdlg.lbl.Materialname = Nom du matériau: \r
+ custmatdlg.lbl.Materialtype = Type de matériau:\r
+ custmatdlg.lbl.Materialdensity = Densité du matériau:\r
+ custmatdlg.checkbox.Addmaterial = Ajouter la pièce dans la base de données\r
\r
\r
+ ! Ring Component Config\r
+ ringcompcfg.OuterRadius = Diamètre extérieur\r
+ ringcompcfg.Automatic = Automatique\r
+ ringcompcfg.InnerRadius = Diamètre intérieur\r
+ ringcompcfg.Thickness = Epaisseur\r
+ ringcompcfg.Length = Longueur\r
+ ringcompcfg.Positionrelativeto = Position relative à:\r
+ ringcompcfg.plus = plus\r
+ !ringcompcfg.PositionValue = PositionValue\r
+ ringcompcfg.Radialdistance = Rayon:\r
+ ringcompcfg.Distancefrom = Distance de l'axe central de la fusée\r
+ ringcompcfg.Radialdirection = Azimut\r
+ ringcompcfg.radialdirectionfrom = Sens par rapport à l'axe central de la fusée\r
+ ringcompcfg.but.Reset = Réinitialisation\r
+ ringcompcfg.but.Resetcomponant = Réinitialiser la pièce à l'axe de la fusée\r
+ ringcompcfg.EngineBlock.desc = <html>Un <b>bloc moteur </b> empêche le moteur de se déplacer vers l'avant dans le tube porte moteur.<br><br>Pour ajouter un moteur, créer un <b>tube</b> ou un <b>tube interne</b> et marquer le comme porte moteur dans l'onglet <em>Moteur</em>.\r
+ ringcompcfg.note.desc = A noter: Un tube interne n'affectera pas l'aerodynamisme de la fusée meme si il est situé en dehors du tube.\r
\r
\r
\r
+ ! Body Tube Config\r
+ BodyTubecfg.lbl.Bodytubelength = Longueur du tube:\r
+ BodyTubecfg.lbl.Outerdiameter = Diamètre externe:\r
+ BodyTubecfg.lbl.Innerdiameter = Diamètre interne:\r
+ BodyTubecfg.lbl.Wallthickness = Epaisseur des parois:\r
+ BodyTubecfg.tab.General = Général\r
+ BodyTubecfg.tab.Generalproperties = Propriétés générales\r
+ BodyTubecfg.tab.Motor = Moteur\r
+ BodyTubecfg.tab.Motormountconf = Configuration porte moteur\r
+ BodyTubecfg.checkbox.Automatic = Automatique\r
+ BodyTubecfg.checkbox.Filled = Aspérités bouchées\r
\r
+ ! FinSetConfig\r
+ FinSetConfig.tab.Fintabs = Pattes des ailerons\r
+ FinSetConfig.tab.Through-the-wall = Ailerons traversant le fuselage\r
+ FinSetConfig.but.Converttofreeform = Convertir en forme libre\r
+ FinSetConfig.but.Converttofreeform.ttip = Convertir ce jeu d'ailerons en forme libre\r
+ FinSetConfig.Convertfinset = Convertir le jeu d'ailerons\r
+ FinSetConfig.but.Splitfins = Séparer les ailerons\r
+ FinSetConfig.but.Splitfins.ttip = Diviser le jeu d'ailerons en aileron indépendant\r
+ FinSetConfig.lbl.Through-the-wall  = Ailerons traversant le fuselage:\r
+ FinSetConfig.lbl.Tablength = Longueur de la patte:\r
+ FinSetConfig.ttip.Tablength = La longueur de la patte de l'aileron.\r
+ FinSetConfig.lbl.Tabheight = Hauteur de la patte:\r
+ FinSetConfig.ttip.Tabheight = La hauteur de l'envergure de la patte de l'aileron.\r
+ FinSetConfig.lbl.Tabposition = Position de la patte:\r
+ FinSetConfig.ttip.Tabposition = La position de la patte de l'ailerons.\r
+ FinSetConfig.lbl.relativeto = relative à\r
\r
+ ! MotorDatabaseLoadingDialog\r
+ MotorDbLoadDlg.title = Chargement des moteurs\r
+ MotorDbLoadDlg.Loadingmotors = Chargement des moteurs...\r
\r
+ ! RocketConfig\r
+ RocketCfg.lbl.Designname = Nom du projet:\r
+ RocketCfg.lbl.Designer = Concepteur:\r
+ RocketCfg.lbl.Comments = Commentaires:\r
+ RocketCfg.lbl.Revisionhistory = Historique des modifications:\r
+ RocketCfg.lbl.Material = Matériaux:\r
\r
+ ! ShockCordConfig\r
+ ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur\r
\r
+ ! RocketComponentConfig\r
+ RocketCompCfg.lbl.Componentname = Nom de la pièce:\r
+ RocketCompCfg.ttip.Thecomponentname = Le nom de la pièce.\r
+ RocketCompCfg.tab.Override = Forcer la valeur\r
+ RocketCompCfg.tab.MassandCGoverride = Forçage de la Masse et du CG\r
+ RocketCompCfg.tab.Figure = Forme\r
+ RocketCompCfg.tab.Figstyleopt = Options de la forme\r
+ RocketCompCfg.tab.Comment = Commentaires\r
+ RocketCompCfg.tab.Specifyacomment = Commentaires concernant la pièce\r
+ RocketCompCfg.lbl.Mass = Masse:\r
+ RocketCompCfg.lbl.Componentmass = Masse de la pièce:\r
+ RocketCompCfg.lbl.overriddento = (forcé à\r
+ RocketCompCfg.lbl.overriddenby = (forcé par\r
+ RocketCompCfg.lbl.Componentmaterial = Matériaux composant la pièce:\r
+ RocketCompCfg.lbl.Componentfinish = Finition de la pièce:\r
+ RocketCompCfg.lbl.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce.\r
+ RocketCompCfg.combo.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce.\r
+ RocketCompCfg.lbl.longA1 = <html>La finition de la pièce affecte l'aérodynamisme de la pièce.<br>\r
+ RocketCompCfg.lbl.longA2 = La valeur indiquée est la hauteur moyenne de la rugosité de la surface.\r
+ RocketCompCfg.but.Setforall = Appliquer à tous\r
+ RocketCompCfg.but.ttip.Setforall = Régler la finition pour tous les composants de la fusée.\r
+ RocketCompCfg.lbl.Overridemassorcenter = Forcer la masse ou le centre de gravité du \r
+ RocketCompCfg.checkbox.Overridemass = Forcer la masse:\r
+ RocketCompCfg.checkbox.Overridecenterofgrav = Forcer le centre de gravité:\r
+ RocketCompCfg.checkbox.OverridemassandCG = Forcer la masse et le centre de gravité de tous les sous composants\r
+ RocketCompCfg.lbl.longB1 = <html>Le forçage de la masse n'inclus pas le ou les moteurs.<br>\r
+ RocketCompCfg.lbl.longB2 = Le centre de gravité est mesuré à partir de l'extrémité avant de la fusée\r
+ RocketCompCfg.lbl.Commentsonthe = Commentaires à propos du \r
+ RocketCompCfg.lbl.Figurestyle = Modèle de forme:\r
+ RocketCompCfg.lbl.Componentcolor = Couleur de la pièce:\r
+ RocketCompCfg.lbl.Choosecolor = Choisir la couleur\r
+ RocketCompCfg.checkbox.Usedefaultcolor = Utiliser la couleur par défaut\r
+ RocketCompCfg.lbl.Complinestyle = Style de lignes pour les pièces:\r
+ RocketCompCfg.but.Saveasdefstyle = Sauver le modèle par défaut\r
+ RocketCompCfg.lbl.Diameter = Diamètre:\r
+ RocketCompCfg.lbl.Length = Longueur:\r
+ RocketCompCfg.lbl.Thickness = Epaisseur:\r
+ RocketCompCfg.checkbox.Endcapped = Arrière clos \r
+ RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped.\r
+ RocketCompCfg.title.Noseconeshoulder = accotement du cône\r
+ RocketCompCfg.title.Aftshoulder = accotement arrière\r
+ RocketCompCfg.border.Foreshoulder = Fore shoulder \r
+ !RocketCompCfg.lbl.Length = Length:\r
\r
+ ! BulkheadConfig\r
+ BulkheadCfg.tab.Radius = Rayon:\r
+ BulkheadCfg.tab.Thickness = Epaisseur:\r
+ BulkheadCfg.tab.General = Général\r
+ BulkheadCfg.tab.Generalproperties = Propriétés générales\r
\r
+ !CenteringRingConfig\r
+ CenteringRingCfg.tab.Outerdiam = Diamètre externe:\r
+ CenteringRingCfg.tab.Innerdiam = Diamètre interne:\r
+ CenteringRingCfg.tab.Thickness = Epaisseur:\r
+ CenteringRingCfg.tab.General = Général\r
+ CenteringRingCfg.tab.Generalproperties = Propriétés Générales\r
\r
+ !ComponentConfigDialog\r
+ ComponentCfgDlg.configuration = configuration\r
+ ComponentCfgDlg.Modify = Modifier\r
\r
+ !EllipticalFinSetConfig\r
+ EllipticalFinSetCfg.Nbroffins = Nombre d'ailerons:\r
+ EllipticalFinSetCfg.Rotation = Rotation:\r
+ EllipticalFinSetCfg.Fincant = Inclinaison de l'aileron:\r
+ EllipticalFinSetCfg.Rootchord = Emplanture:\r
+ EllipticalFinSetCfg.Height = Hauteur:\r
+ EllipticalFinSetCfg.Positionrelativeto = Position relative à:\r
+ EllipticalFinSetCfg.plus = plus\r
+ EllipticalFinSetCfg.FincrossSection = Coupe de l'aileron:\r
+ EllipticalFinSetCfg.Thickness = Epaisseur:\r
+ EllipticalFinSetCfg.General = Général\r
+ EllipticalFinSetCfg.Generalproperties = Propriétés Générales\r
+ EllipticalFinSetCfg.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au corps de la fusée\r
\r
+ !FreeformFinSetConfig\r
+ FreeformFinSetCfg.tab.General = Général\r
+ FreeformFinSetCfg.tab.ttip.General = Propriétés générales\r
+ FreeformFinSetCfg.tab.Shape = Forme\r
+ FreeformFinSetCfg.tab.ttip.Finshape = Forme de l'aileron\r
+ FreeformFinSetCfg.lbl.Numberoffins = Nombre d'ailerons:\r
+ FreeformFinSetCfg.lbl.Finrotation = Rotation des ailerons:\r
+ FreeformFinSetCfg.lbl.Fincant = Inclinaison de l'aileron:\r
+ FreeformFinSetCfg.lbl.ttip.Fincant = angle d'inclinaison des ailerons par rapport au corps de la fusée.\r
+ FreeformFinSetCfg.lbl.Posrelativeto = Position par rapport à:\r
+ FreeformFinSetCfg.lbl.plus = plus\r
+ FreeformFinSetCfg.lbl.FincrossSection = Coupe de l'aileron:\r
+ FreeformFinSetCfg.lbl.Thickness = Epaisseur:\r
\r
+ !InnerTubeConfig\r
+ InnerTubeCfg.tab.Motor = Moteur\r
+ InnerTubeCfg.tab.ttip.Motor = Configuration du porte moteur\r
+ InnerTubeCfg.tab.Cluster = Cluster\r
+ InnerTubeCfg.tab.ttip.Cluster = Configuration du cluster\r
+ InnerTubeCfg.tab.Radialpos = Position circulaire\r
+ InnerTubeCfg.tab.ttip.Radialpos = Position circulaire\r
+ InnerTubeCfg.lbl.Selectclustercfg = Choisir la configuration du cluster:\r
+ InnerTubeCfg.lbl.TubeSep = Séparation du tube:\r
+ InnerTubeCfg.lbl.ttip.TubeSep = La Séparation des tubes, 1.0 = chacun se touche\r
+ InnerTubeCfg.lbl.Rotation = Rotation:\r
+ InnerTubeCfg.lbl.ttip.Rotation = Angle de rotation du cluster\r
+ InnerTubeCfg.lbl.Rotangle = Angle de rotation de la configuration du cluster\r
+ InnerTubeCfg.but.Splitcluster = Séparer le cluster\r
+ InnerTubeCfg.lbl.longA1 = <html>séparer le cluster en pièces distinctes.<br>\r
+ InnerTubeCfg.lbl.longA2 = Cela duplique également tous les composants rattacher à ce tube interne.\r
+ InnerTubeCfg.but.Resetsettings = Réinitialiser les réglages\r
+ InnerTubeCfg.but.ttip.Resetsettings = Réinitialiser la séparation et la rotation aux valeurs par défauts\r
\r
+ ! LaunchLugConfig\r
+ LaunchLugCfg.lbl.Length = Longueur:\r
+ LaunchLugCfg.lbl.Outerdiam = Diamètre externe:\r
+ LaunchLugCfg.lbl.Innerdiam = Diamètre interne:\r
+ LaunchLugCfg.lbl.Thickness = Epaisseur:\r
+ LaunchLugCfg.lbl.Radialpos = Position circulaire:\r
+ LaunchLugCfg.lbl.Posrelativeto = Position relative à:\r
+ LaunchLugCfg.lbl.plus = plus\r
+ LaunchLugCfg.tab.General = Général\r
+ LaunchLugCfg.tab.Generalprop = Propriétés Générales\r
\r
+ ! MassComponentConfig\r
+ MassComponentCfg.lbl.Mass = Masse\r
+ MassComponentCfg.lbl.Length = Longueur\r
+ MassComponentCfg.lbl.Diameter = Diamètre\r
+ MassComponentCfg.lbl.PosRelativeto = Position relative à:\r
+ MassComponentCfg.lbl.plus = plus\r
+ MassComponentCfg.tab.General = Général\r
+ MassComponentCfg.tab.ttip.General = Propriétés Générales\r
+ MassComponentCfg.tab.Radialpos = Position sur le périmètre\r
+ MassComponentCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre\r
+ MassComponentCfg.lbl.Radialdistance = Rayon:\r
+ MassComponentCfg.lbl.Radialdirection = Azimut:\r
+ MassComponentCfg.but.Reset = Réinitialiser\r
\r
+ ! MotorConfig\r
+ MotorCfg.checkbox.compmotormount = Cette pièce est un porte moteur\r
+ MotorCfg.lbl.Motorcfg = Configuration du moteur:\r
+ MotorCfg.but.New = Nouveau\r
+ MotorCfg.lbl.Currentmotor = Moteur actuel:\r
+ MotorCfg.lbl.Motoroverhang = Surplomb du moteur:\r
+ MotorCfg.lbl.Ignitionat = Allumage à:\r
+ MotorCfg.lbl.plus = plus\r
+ MotorCfg.lbl.seconds = secondes\r
+ MotorCfg.lbl.longA1 = Le projet actuel n'a qu'un étage.\r
+ MotorCfg.lbl.longA2 = Des étages peuvent-être ajoutés en cliquant \"Nouvel étage\".\r
+ MotorCfg.lbl.longB1 = Le projet actuel a\r
+ MotorCfg.lbl.longB2 = étage(s).\r
+ MotorCfg.but.Selectmotor = Choisir le moteur\r
+ MotorCfg.but.Removemotor = Enlever le moteur\r
+ MotorCfg.lbl.motorLabel = Aucun\r
\r
+ ! NoseConeConfig\r
+ NoseConeCfg.lbl.Noseconeshape = Forme du nez de la fusée:\r
+ NoseConeCfg.lbl.Shapeparam = Paramètre de la forme:\r
+ NoseConeCfg.lbl.Noseconelength = Longueur du nez de la fusée:\r
+ NoseConeCfg.lbl.Basediam = Diamètre de la base:\r
+ NoseConeCfg.checkbox.Automatic = Automatique\r
+ NoseConeCfg.lbl.Wallthickness = Epaisseur de la paroi:\r
+ NoseConeCfg.checkbox.Filled = Aspérités bouchées\r
+ NoseConeCfg.tab.General = Général\r
+ NoseConeCfg.tab.ttip.General = Propriétés générales\r
+ NoseConeCfg.tab.Shoulder = Accotement\r
+ NoseConeCfg.tab.ttip.Shoulder = Propriétés de l'accotement\r
\r
+ ! ParachuteConfig\r
+ ParachuteCfg.lbl.Canopy = Canopée:\r
+ ParachuteCfg.lbl.Diameter = Diamètre:\r
+ ParachuteCfg.lbl.Material = Matériau:\r
+ ParachuteCfg.combo.MaterialModel = La nature du matériau affecte le poids de la pièce.\r
+ ParachuteCfg.lbl.longA1 = <html>Coefficient de traînée C<sub>D</sub>:\r
+ ParachuteCfg.lbl.longB1 = <html>Le coefficient de traînée dépend de la surface totale du parachute.<br>\r
+ ParachuteCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente.  \r
+ ParachuteCfg.lbl.longB3 = Une valeur standard pour le parachute est 0.8.\r
+ ParachuteCfg.but.Reset = Réinitialiser\r
+ ParachuteCfg.lbl.Shroudlines = Suspentes:\r
+ ParachuteCfg.lbl.Numberoflines = Nombre de suspentes:\r
+ ParachuteCfg.lbl.Linelength = Longueur des suspentes:\r
+ ParachuteCfg.lbl.Material = Matériau:\r
+ ParachuteCfg.lbl.Posrelativeto = Position relative à:\r
+ ParachuteCfg.lbl.plus = plus\r
+ ParachuteCfg.lbl.Packedlength = Longueur plié:\r
+ ParachuteCfg.lbl.Packeddiam = Diamètre plié:\r
+ ParachuteCfg.lbl.Deploysat = Déploiement à:\r
+ ParachuteCfg.lbl.seconds = secondes\r
+ ParachuteCfg.lbl.Altitude = Altitude:\r
+ ParachuteCfg.tab.General = Général\r
+ ParachuteCfg.tab.ttip.General = Propriétés générales\r
+ ParachuteCfg.tab.Radialpos = Position sur le périmètre\r
+ ParachuteCfg.tab.ttip.Radialpos = Configuration de la position radial\r
+ ParachuteCfg.lbl.Radialdistance = Rayon:\r
+ ParachuteCfg.lbl.Radialdirection = Azimut:\r
+ ParachuteCfg.but.Reset = Réinitialiser\r
\r
+ ! ShockCordConfig \r
+ ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur\r
+ ShockCordCfg.lbl.Shockcordmaterial = Matériau du cordon amortisseur:\r
+ ShockCordCfg.lbl.Posrelativeto = Position relative à:\r
+ ShockCordCfg.lbl.plus = plus\r
+ ShockCordCfg.lbl.Packedlength = Longueur emballé:\r
+ ShockCordCfg.lbl.Packeddiam = Diamètre emballé:\r
+ ShockCordCfg.tab.General = Général\r
+ ShockCordCfg.tab.ttip.General = Propriétés générales\r
\r
+ !SleeveConfig\r
+ SleeveCfg.tab.Outerdiam = Diamètre externe:\r
+ SleeveCfg.tab.Innerdiam = Diamètre interne:\r
+ SleeveCfg.tab.Wallthickness = Epaisseur des parois:\r
+ SleeveCfg.tab.Length = Longueur:\r
+ SleeveCfg.tab.General = Général\r
+ SleeveCfg.tab.Generalproperties = Propriétés générales\r
\r
+ ! StreamerConfig\r
+ StreamerCfg.lbl.Striplength = Longueur de la bande:\r
+ StreamerCfg.lbl.Stripwidth = Largeur de la bande:\r
+ StreamerCfg.lbl.Striparea = Surface de la bande:\r
+ StreamerCfg.lbl.Aspectratio = Aspect ratio:\r
+ StreamerCfg.lbl.Material = Matériau:\r
+ StreamerCfg.combo.ttip.MaterialModel = La nature du matériau affecte le poids de la pièce.\r
+ StreamerCfg.lbl.longA1 = <html>Coefficient de traînée C<sub>D</sub>:\r
+ StreamerCfg.lbl.longB1 = <html>Le coefficient de trainée dépend de la surface totale de la banderole.<br>\r
+ StreamerCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente.\r
+ StreamerCfg.lbl.Automatic = Automatique\r
+ StreamerCfg.lbl.longC1 = le coefficient de trainée dépend de la surface totale de la banderole.\r
+ StreamerCfg.lbl.Posrelativeto = Position relative à:\r
+ StreamerCfg.lbl.plus = plus\r
+ StreamerCfg.lbl.Packedlength = Longueur emballé:\r
+ StreamerCfg.lbl.Packeddiam = Diamètre emballé:\r
+ StreamerCfg.lbl.Deploysat = Déploiement à:\r
+ StreamerCfg.lbl.seconds = secondes\r
+ StreamerCfg.lbl.Altitude = Altitude:\r
+ StreamerCfg.tab.General = Général\r
+ StreamerCfg.tab.ttip.General = Propriétés générales\r
+ StreamerCfg.tab.Radialpos = Position sur le périmètre\r
+ StreamerCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre\r
+ StreamerCfg.lbl.Radialdistance = Rayon:\r
+ StreamerCfg.lbl.Radialdirection = Azimut:\r
+ StreamerCfg.but.Reset = Réinitialiser\r
\r
+ ! ThicknessRingComponentConfig\r
+ ThicknessRingCompCfg.tab.Outerdiam = Diamètre externe:\r
+ ThicknessRingCompCfg.tab.Innerdiam = Diamètre interne:\r
+ ThicknessRingCompCfg.tab.Wallthickness = Epaisseur de la paroi:\r
+ ThicknessRingCompCfg.tab.Length = Longueur:\r
+ ThicknessRingCompCfg.tab.General = Général\r
+ ThicknessRingCompCfg.tab.Generalprop = Propriétés générales\r
\r
+ ! TransitionConfig\r
+ TransitionCfg.lbl.Transitionshape = Forme de la transition:\r
+ TransitionCfg.checkbox.Clipped = Emboitée\r
+ TransitionCfg.lbl.Shapeparam = Paramètre de la forme:\r
+ TransitionCfg.lbl.Transitionlength = Longueur de la transition:\r
+ TransitionCfg.lbl.Forediam = Diamètre avant:\r
+ TransitionCfg.checkbox.Automatic = Automatique\r
+ TransitionCfg.lbl.Aftdiam = Diamètre arrière:\r
+ TransitionCfg.lbl.Wallthickness = Epaisseur de la paroi:\r
+ TransitionCfg.checkbox.Filled = Aspérités bouchées\r
+ TransitionCfg.tab.General = Général\r
+ TransitionCfg.tab.Generalproperties = Propriétés Générales\r
+ TransitionCfg.tab.Shoulder = Accotement\r
+ TransitionCfg.tab.Shoulderproperties = Propriétés de l'accotement \r
\r
+ ! TrapezoidFinSetConfig\r
+ TrapezoidFinSetCfg.lbl.Nbroffins = Nombre d'ailerons:\r
+ TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Le nombre d'ailerons composant le jeu.\r
+ TrapezoidFinSetCfg.lbl.Finrotation = Rotation de l'aileron:\r
+ TrapezoidFinSetCfg.lbl.ttip.Finrotation = Angle du premier aileron dans le jeu.\r
+ TrapezoidFinSetCfg.lbl.Fincant = Inclinaison de l'aileron:\r
+ TrapezoidFinSetCfg.lbl.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au tube du corps de la fusée.\r
+ TrapezoidFinSetCfg.lbl.Rootchord = Longueur de la base de l'aileron:\r
+ TrapezoidFinSetCfg.lbl.Tipchord = Longueur du bout de l'aileron:\r
+ TrapezoidFinSetCfg.lbl.Height = Hauteur:\r
+ TrapezoidFinSetCfg.lbl.Sweeplength = Longueur du bord d'attaque:\r
+ TrapezoidFinSetCfg.lbl.Sweepangle = Angle du bord d'attaque:\r
+ TrapezoidFinSetCfg.lbl.FincrossSection = Coupe de l'aileron:\r
+ TrapezoidFinSetCfg.lbl.Thickness = Epaisseur:\r
+ TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative à:\r
+ TrapezoidFinSetCfg.lbl.plus = plus\r
+ TrapezoidFinSetCfg.tab.General = Général\r
+ TrapezoidFinSetCfg.tab.Generalproperties = Propriétés générales\r
\r
+ !MotorConfigurationModel\r
+ MotorCfgModel.Editcfg = Modifier les configurations\r
\r
+ ! StorageOptionChooser\r
+ StorageOptChooser.lbl.Simdatatostore = Données simulées à stocker:\r
+ StorageOptChooser.rdbut.Allsimdata = Toutes les données des simulations\r
+ StorageOptChooser.lbl.longA1 = <html>Enregistrer toutes les données des simulations.<br>\r
+ StorageOptChooser.lbl.longA2 = Cela peut entraîner de très gros fichiers!\r
+ StorageOptChooser.rdbut.Every = Every\r
+ StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>\r
+ StorageOptChooser.lbl.longB2 = Des valeurs plus grandes produisent des fichiers plus petits.\r
+ StorageOptChooser.lbl.seconds = secondes\r
+ StorageOptChooser.rdbut.Onlyprimfig = Seuls les chiffres primaires\r
+ StorageOptChooser.lbl.longC1 = <html>Stocker seulement les valeurs montrées dans le tableau récapitulatif.<br>\r
+ StorageOptChooser.lbl.longC2 = Cela produira des fichiers plus petit.\r
+ StorageOptChooser.checkbox.Compfile = Compresse le fichier\r
+ StorageOptChooser.lbl.UsingComp = Utiliser la compression réduit significativement la taille du fichier.\r
+ StorageOptChooser.lbl.longD1 = Une estimation sur la taille qu'aurait le fichier résultant avec les options actuelles.\r
+ StorageOptChooser.ttip.Saveopt = Options de sauvegarde\r
+ StorageOptChooser.lbl.Estfilesize = Taille estimée du fichier:\r
+ StorageOptChooser.lbl.Saveopt = Options de sauvegarde\r
\r
+ ! ThrustCurveMotorSelectionPanel\r
+ TCMotorSelPan.lbl.Selrocketmotor = Choisir le moteur fusée:\r
+ TCMotorSelPan.checkbox.hideSimilar = Cacher les courbes de poussées similaires\r
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Montrer tous les moteurs\r
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Montrer les moteurs avec un diametre inferieur au porte moteur\r
+ TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Montrer les moteurs avec un diametre egale au porte moteur\r
+ TCMotorSelPan.lbl.Motormountdia = Diametre du tube porte moteur:\r
+ TCMotorSelPan.lbl.Search = Rechercher:\r
+ TCMotorSelPan.lbl.Selectthrustcurve = Choisir la courbe de poussée:\r
+ TCMotorSelPan.lbl.Ejectionchargedelay = Retard de la charge d'ejection:\r
+ TCMotorSelPan.equalsIgnoreCase.None = Aucun\r
+ TCMotorSelPan.lbl.NumberofsecondsorNone = (Nombre de secondes ou \"Aucun\")\r
+ TCMotorSelPan.lbl.Totalimpulse = Impulsion totale:\r
+ TCMotorSelPan.lbl.Avgthrust = Poussée moyenne:\r
+ TCMotorSelPan.lbl.Maxthrust = Poussée Max.:\r
+ TCMotorSelPan.lbl.Burntime = Temps de combustion:\r
+ TCMotorSelPan.lbl.Launchmass = Masse au lancement:\r
+ TCMotorSelPan.lbl.Emptymass = Masse à vide:\r
+ TCMotorSelPan.lbl.Datapoints = Points de données:\r
+ TCMotorSelPan.lbl.Digest = Assimilation:\r
+ TCMotorSelPan.title.Thrustcurve = Courbe de poussée:\r
+ TCMotorSelPan.title.Thrust = Poussée\r
+ TCMotorSelPan.delayBox.None = Aucun\r
\r
+ ! PlotDialog\r
+ PlotDialog.title.Flightdataplot = Tracé du vol\r
+ PlotDialog.Chart.Simulatedflight = Simulation du vol\r
+ PlotDialog.CheckBox.Showdatapoints = Afficher un point pour chaque valeur\r
+ PlotDialog.lbl.Chart = Cliquer+déplacer en bas +droite pour agrandir, haut+gauche pour rétrécir\r
\r
+ ! "main" prefix is used for the main application dialog\r
\r
+ main.menu.file = Fichier\r
+ main.menu.file.new = Nouveau\r
+ main.menu.file.open = Ouvrir...\r
+ main.menu.file.openExample = Ouvrir exemple...\r
+ main.menu.file.save = Sauvegarder\r
+ main.menu.file.saveAs = Sauvegarder sous...\r
+ main.menu.file.print = Imprimer...\r
+ main.menu.file.close = Fermer\r
+ main.menu.file.quit = Quitter\r
\r
+ main.menu.edit = Editer\r
+ main.menu.edit.undo = Annuler modification\r
+ main.menu.edit.redo = Refaire modification\r
+ main.menu.edit.cut = Couper\r
+ main.menu.edit.copy = Copier\r
+ main.menu.edit.paste = Coller\r
+ main.menu.edit.delete = Effacer\r
+ main.menu.edit.preferences = Préférences\r
\r
+ main.menu.analyze = Analyse\r
+ main.menu.analyze.componentAnalysis = Analyse des Pièces\r
\r
+ main.menu.help = Aide\r
+ main.menu.help.license = Licence\r
+ main.menu.help.bugReport = Rapport d'erreurs\r
+ main.menu.help.debugLog = Debug log\r
+ main.menu.help.about = A propos\r
\r
+ main.menu.debug = Debug\r
+ main.menu.debug.whatisthismenu = Quel est ce menu?\r
+ main.menu.debug.createtestrocket = Créer une fusée test\r
\r
+ ! database\r
+ ! Translate here all material database\r
+ !\r
\r
+ ! Material database\r
+ ! BULK_MATERIAL\r
+ Databases.materials.Acrylic = Acrylique\r
+ Databases.materials.Balsa = Balsa\r
+ Databases.materials.Birch = Bouleau\r
+ Databases.materials.Cardboard = Carton\r
+ Databases.materials.Carbonfiber = Fibre de carbone\r
+ Databases.materials.Cork = Liège\r
+ Databases.materials.DepronXPS = Depron (XPS)\r
+ Databases.materials.Fiberglass = Fibre de verre\r
+ Databases.materials.Kraftphenolic = Kraft phénolique\r
+ Databases.materials.Maple = Érable\r
+ Databases.materials.Paperoffice = Papier (bureau)\r
+ Databases.materials.Pine = Pin\r
+ Databases.materials.Plywoodbirch = Contre-plaqué (bouleau)\r
+ Databases.materials.PolycarbonateLexan = Polycarbonate (Lexan)\r
+ Databases.materials.Polystyrene = Polystyrène\r
+ Databases.materials.PVC = PVC\r
+ Databases.materials.Spruce = Sapin\r
+ Databases.materials.StyrofoamgenericEPS = Polystyrène (générique EPS)\r
+ Databases.materials.StyrofoamBluefoamXPS = \"Mousse Bleue\" de polystyrène (XPS)\r
+ Databases.materials.Quantumtubing = Quantum tubing\r
+ !SURFACE_MATERIAL\r
+ Databases.materials.Ripstopnylon = Ripstop nylon\r
+ Databases.materials.Mylar = Mylar\r
+ Databases.materials.Polyethylenethin = Polyéthylène (fin)\r
+ Databases.materials.Polyethyleneheavy = Polyéthylène (lourd)\r
+ Databases.materials.Silk = Soie\r
+ Databases.materials.Paperoffice1 = Papier (bureau)\r
+ Databases.materials.Cellophane = Cellophane\r
++Databases.materials.Crepepaper = Cr\u00eape paper\r
+ ! LINE_MATERIAL\r
+ Databases.materials.Threadheavy-duty = Fil(résistant)\r
+ Databases.materials.Elasticcordround2mm = Corde Elastique (ronde 2mm, 1/16 in)\r
+ Databases.materials.Elasticcordflat6mm = Corde Elastique (plate 6mm, 1/4 in)\r
+ Databases.materials.Elasticcordflat12mm = Corde Elastique (plate 12mm, 1/2 in)\r
+ Databases.materials.Elasticcordflat19mm = Corde Elastique (plate 19mm, 3/4 in)\r
+ Databases.materials.Elasticcordflat25mm = Corde Elastique (plate 25mm, 1 in)\r
+ Databases.materials.Braidednylon2mm = Nylon tressé (2 mm, 1/16 in)\r
+ Databases.materials.Braidednylon3mm = Nylon tressé (3 mm, 1/8 in)\r
+ Databases.materials.Tubularnylon11mm = Nylon tubulaire (11 mm, 7/16 in)\r
+ Databases.materials.Tubularnylon14mm = Nylon tubulaire (14 mm, 9/16 in)\r
+ Databases.materials.Tubularnylon25mm = Nylon tubulaire (25 mm, 1 in)\r
\r
+ ! ExternalComponent\r
+ ExternalComponent.Rough = Rugeuse\r
+ ExternalComponent.Unfinished = Non peinte\r
+ ExternalComponent.Regularpaint = Peinture classique\r
+ ExternalComponent.Smoothpaint = Fine couche\r
+ ExternalComponent.Polished = Polie\r
\r
\r
+ ! LineStyle\r
+ LineStyle.Solid = Ligne pleine\r
+ LineStyle.Dashed = Tiret\r
+ LineStyle.Dotted = Ligne pointillée\r
+ LineStyle.Dash-dotted = Ligne Pointillée et Tiret\r
+ LineStyle.Defaultstyle = Style par défaut\r
\r
+ ! Shape\r
+ Shape.Conical = Conique\r
+ Shape.Conical.desc1 = Un cône conique a un profil triangulaire.\r
+ Shape.Conical.desc2 = Une transition conique a des côtés droits.\r
+ Shape.Ogive = Ogive\r
+ Shape.Ogive.desc1 = Un cône ogival a un profil qui est un segment de cercle. La valeur du paramètre de forme 1 produit une <b>ogive tangente</b>, qui a une transition en douceur vers le tube de la fusée, des valeurs inférieures à 1 produisent des <b>ogives sécantes</b>.\r
+ Shape.Ogive.desc2 = Une transition en ogive a un profil qui est un segment de cercle.         La valeur du paramètre de forme 1 produit une <b>ogive tangente</b>, qui a une transition en douceur vers le tube de la fusée à l'extrémité arrière, des valeurs inférieures à 1 produisent des <b>ogives sécantes</b>.\r
+ Shape.Ellipsoid = Ellipsoïde\r
+ Shape.Ellipsoid.desc1 = Un cône ellipsoïdal a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2&times;<i>la longueur</i> et <i>diamètre</i>.\r
+ Shape.Ellipsoid.desc2 = Une transition ellipsoïdale a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2&times;<i>longueur</i> et <i>diamètre</i>.  Si la transition n'est pas coupée alors le profil est étendu au centre par le rayon correspondant.         \r
+ Shape.Powerseries = Série Haute puissance\r
+ Shape.Powerseries.descA1 = Un cône de puissance a un profil de <i>Rayon</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longueur</i>)<sup><i>k</i></sup> ou <i>k</i> est le paramètre de la forme.  Pour <i>k</i>=0,5 c'est une <b>\r
+ Shape.Powerseries.descA2 = -puissance</b> ou une ogive <b>parabolique</b>, pour <i>k</i>=0,75 une <b>\r
+ Shape.Powerseries.descA3 = -puissance</b>, et pour <i>k</i>=1 un cône <b>conique</b>.\r
+ Shape.Powerseries.descB1 = Une transition de la série haute puissance a un profile de <i>Rayon</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longueur</i>)<sup><i>k</i></sup> ou <i>k</i> est le paramètre de la forme.  Pour <i>k</i>=0,5 la transition est <b>\r
+ Shape.Powerseries.descB2 = -puissance</b> ou <b>parabolique</b>, pour <i>k</i>=0,75 une <b>\r
+ Shape.Powerseries.descB3 = -puissance</b>, et pour <i>k</i>=1 <b>conique</b>.\r
+ Shape.Parabolicseries = Série parabolique\r
+ Shape.Parabolicseries.desc1 = Un cône parabolique a un profil d'une parabole.  Le paramètre de forme définit le segment de la parabole à utiliser.  Le paramètre 1 produit une <b>parabole pleine</b> qui est tangent au tube de la fusée, 0,75 produit un <b>3/4 de parabole</b>, 0,5 produit une <b>1/2 parabole</b> et 0 produit un cône <b>conique</b>.\r
+ Shape.Parabolicseries.desc2 = Une transistion de type parabolique a un profile en forme de parabole.  Le paramètre de forme définit le segment de la parabole à utiliser.  Le paramètre 1,0 produit une <b>parabole pleine</b> qui est tangent au tube de la fusée à l'extrémité arrière, 0,75 produit une <b>3/4 parabole</b>, 0,5 produit une <b>1/2 parabole</b> et 0 produit une transition <b>conique</b>.\r
+ Shape.Haackseries = Série Haack\r
+ Shape.Haackseries.desc1 = Les cônes du type Haack sont conçus pour minimiser la trainée.  Le paramètre de forme égale à 0 produit une <b>LD-Haack</b> ou un cône <b>Von Karman</b>, ce qui a pour effet de minimiser la trainée pour une longueur et un diamètre fixe, tandis qu'une valeur de 0,333 produit un cône <b>LV-Haack</b>, ce qui minimise la trainée pour une longueur et un volume fixe.\r
+ Shape.Haackseries.desc2 = Les <i>cônes</i> du type Haack sont conçus pour minimiser la trainée.  Ces formes de transition sont leurs équivalents, mais ne produisent pas nécessairement des valeurs optimales.  Le paramètre 0 produit une forme <b>LD-Haack</b> ou <b>Von Karman</b>, tandis qu'une valeur de 0,333 produit une forme <b>LV-Haack</b>.               \r
\r
\r
+ ! RocketComponent\r
+ RocketComponent.Position.TOP = Haut de la pièce parent\r
+ RocketComponent.Position.MIDDLE = Milieu de la pièce parent(porteuse)\r
+ RocketComponent.Position.BOTTOM = Bas de la pièce parent\r
+ RocketComponent.Position.AFTER = Après la pièce parent\r
+ RocketComponent.Position.ABSOLUTE = Pointe de l'ogive\r
\r
\r
+ ! LaunchLug\r
+ LaunchLug.Launchlug = Tube de guidage\r
+ ! NoseCone\r
+ NoseCone.NoseCone = Ogive\r
+ ! Transition\r
+ Transition.Transition = Transition\r
+ !Stage\r
+ Stage.Stage = Etage\r
+ ! BodyTube\r
+ BodyTube.BodyTube = Tube du corps\r
+ ! TubeCoupler\r
+ TubeCoupler.TubeCoupler = Coupleur de tube\r
+ !InnerTube\r
+ InnerTube.InnerTube = Tube interne\r
+ ! TrapezoidFinSet\r
+ TrapezoidFinSet.TrapezoidFinSet = Ailerons Trapezoidaux\r
+ ! FreeformFinSet\r
+ FreeformFinSet.FreeformFinSet = Ailerons personnalisés\r
+ !MassComponent\r
+ MassComponent.MassComponent = Poids\r
+ ! Parachute\r
+ Parachute.Parachute = Parachute\r
+ ! ShockCord\r
+ ShockCord.ShockCord = Cordon amortisseur\r
+ ! Bulkhead\r
+ Bulkhead.Bulkhead = Cloison\r
\r
+ !Rocket\r
+ Rocket.motorCount.Nomotor = [aucun moteurs]\r
+ Rocket.compname.Rocket = Fusée\r
\r
+ !MotorMount\r
+ MotorMount.IgnitionEvent.AUTOMATIC = Automatique (lancement ou charge d'éjection)\r
+ MotorMount.IgnitionEvent.LAUNCH = Lancement\r
+ MotorMount.IgnitionEvent.EJECTION_CHARGE = Premiere charge d'ejection ou étage precedent\r
+ MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage\r
+ MotorMount.IgnitionEvent.NEVER = Jamais\r
\r
+ !ComponentIcons \r
+ ComponentIcons.Nosecone = Ogive\r
+ ComponentIcons.Bodytube = Tube\r
+ ComponentIcons.Transition = Transition\r
+ ComponentIcons.Trapezoidalfinset = Jeu d'ailerons de forme trapézoïdale\r
+ ComponentIcons.Ellipticalfinset = Jeu d'ailerons de forme elliptique \r
+ ComponentIcons.Freeformfinset = Jeu d'ailerons de forme personnalisé\r
+ ComponentIcons.Launchlug = Tube de guidage\r
+ ComponentIcons.Innertube = Tube interne\r
+ ComponentIcons.Tubecoupler = Coupleur de tube\r
+ ComponentIcons.Centeringring = Anneau de centrage\r
+ ComponentIcons.Bulkhead = Cloison\r
+ ComponentIcons.Engineblock = Bague de retension moteur\r
+ ComponentIcons.Parachute = Parachute\r
+ ComponentIcons.Streamer = Banderolle\r
+ ComponentIcons.Shockcord = Cordon amortisseur\r
+ ComponentIcons.Masscomponent = Mass component\r
+ ComponentIcons.disabled = (désactivé)\r
\r
+ ! StageAction\r
+ StageAction.Stage = Etage\r
\r
+ ! RecoveryDevice\r
+ RecoveryDevice.DeployEvent.LAUNCH = Lancement(plus NN secondes)\r
+ RecoveryDevice.DeployEvent.EJECTION = Première charge d'éjection de cet étage\r
+ RecoveryDevice.DeployEvent.APOGEE = Apogée\r
+ RecoveryDevice.DeployEvent.ALTITUDE = Altitude spécifiée durant la descente\r
+ RecoveryDevice.DeployEvent.NEVER = Jamais\r
\r
+ ! FlightEvent\r
+ FlightEvent.Type.LAUNCH = Lancement\r
+ FlightEvent.Type.IGNITION = Allumage du moteur\r
+ FlightEvent.Type.LIFTOFF = Décollage\r
+ FlightEvent.Type.LAUNCHROD = Dégagement de rampe de lancement\r
+ FlightEvent.Type.BURNOUT = Fin de combustion du moteur\r
+ FlightEvent.Type.EJECTION_CHARGE = Charge d'éjection\r
+ FlightEvent.Type.STAGE_SEPARATION = Séparation d'étage\r
+ FlightEvent.Type.APOGEE = Apogée\r
+ FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Déploiement du dispositif de récupération\r
+ FlightEvent.Type.GROUND_HIT = Atterrissage\r
+ FlightEvent.Type.SIMULATION_END = Fin de la simulation\r
+ FlightEvent.Type.ALTITUDE = Changement d'altitude\r
\r
+ ! ThrustCurveMotorColumns\r
+ TCurveMotorCol.MANUFACTURER = Fabricant\r
+ TCurveMotorCol.DESIGNATION = Désignation\r
+ TCurveMotorCol.TYPE = Type\r
+ TCurveMotorCol.DIAMETER = Diamètre\r
+ TCurveMotorCol.LENGTH = Longueur\r
\r
+ ! RocketInfo\r
+ RocketInfo.lengthLine.Length = Longueur\r
+ RocketInfo.lengthLine.maxdiameter = , diamètre max.\r
+ RocketInfo.massText1 = Masse avec moteurs \r
+ RocketInfo.massText2 = Masse sans moteurs\r
+ RocketInfo.at = à M=\r
+ RocketInfo.cgText = CG:\r
+ RocketInfo.cpText = CP:\r
+ RocketInfo.stabText = Stabilité:\r
+ RocketInfo.Warning = Avertissement:\r
+ RocketInfo.Calculating = Calcul en cours...\r
+ RocketInfo.Apogee = Apogée:\r
+ RocketInfo.Maxvelocity = Vitesse Max.:\r
+ RocketInfo.Maxacceleration = Accélération Max.:\r
+ RocketInfo.apogeeValue = N/A\r
+ RocketInfo.Mach = (Mach\r
+ RocketInfo.velocityValue = N/A\r
+ RocketInfo.accelerationValue = N/A\r
\r
+ ! FinSet\r
+ FinSet.CrossSection.SQUARE = Carré\r
+ FinSet.CrossSection.ROUNDED = Arondie\r
+ FinSet.CrossSection.AIRFOIL = Airfoil\r
+ FinSet.TabRelativePosition.FRONT = Root chord leading edge\r
+ FinSet.TabRelativePosition.CENTER = Root chord midpoint\r
+ FinSet.TabRelativePosition.END = Root chord trailing edge\r
\r
+ ! FlightDataType\r
+ FlightDataType.TYPE_TIME = Temps\r
+ FlightDataType.TYPE_ALTITUDE = Altitude\r
+ FlightDataType.TYPE_VELOCITY_Z = Vitesse verticale\r
+ FlightDataType.TYPE_ACCELERATION_Z = Accélération verticale\r
+ FlightDataType.TYPE_VELOCITY_TOTAL = Vitesse totale\r
+ FlightDataType.TYPE_ACCELERATION_TOTAL = Accélération totale\r
+ FlightDataType.TYPE_POSITION_X = Position contre le vent\r
+ FlightDataType.TYPE_POSITION_Y = Position parallèle au vent\r
+ FlightDataType.TYPE_POSITION_XY = Distance latérale\r
+ FlightDataType.TYPE_POSITION_DIRECTION = Direction latérale\r
+ FlightDataType.TYPE_VELOCITY_XY = Vitesse latérale\r
+ FlightDataType.TYPE_ACCELERATION_XY = Accélération latérale\r
+ FlightDataType.TYPE_AOA = Angle d'attaque\r
+ FlightDataType.TYPE_ROLL_RATE = Taux de roulis\r
+ FlightDataType.TYPE_PITCH_RATE = Taux de tangage\r
+ FlightDataType.TYPE_YAW_RATE = Taux d'embardée\r
+ FlightDataType.TYPE_MASS = Masse\r
+ FlightDataType.TYPE_LONGITUDINAL_INERTIA = Moment d'inertie longitudinale\r
+ FlightDataType.TYPE_ROTATIONAL_INERTIA = Moment d'inertie rotatif\r
+ FlightDataType.TYPE_CP_LOCATION = Emplacement du CP\r
+ FlightDataType.TYPE_CG_LOCATION = Emplacement du CG\r
+ FlightDataType.TYPE_STABILITY = Calibres marge de stabilité\r
+ FlightDataType.TYPE_MACH_NUMBER = Mach number\r
+ FlightDataType.TYPE_REYNOLDS_NUMBER = Nombre de Reynolds\r
+ FlightDataType.TYPE_THRUST_FORCE = Poussée\r
+ FlightDataType.TYPE_DRAG_FORCE = Force de traînée\r
+ FlightDataType.TYPE_DRAG_COEFF = Coefficient de traînée\r
+ FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coefficient de trainée axiale\r
+ FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coefficient de traînée de friction\r
+ FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Coefficient de traînée de pression\r
+ FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient\r
+ FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient\r
+ FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient\r
+ FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient\r
+ FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient\r
+ FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient\r
+ FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient\r
+ FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient\r
+ FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient\r
+ FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient\r
+ FlightDataType.TYPE_REFERENCE_LENGTH = Longueur de référence\r
+ FlightDataType.TYPE_REFERENCE_AREA = Surface de référence\r
+ FlightDataType.TYPE_ORIENTATION_THETA = Orientation verticale (zénith)\r
+ FlightDataType.TYPE_ORIENTATION_PHI = Orientation latérale (azimut)\r
+ FlightDataType.TYPE_WIND_VELOCITY = Vitesse de vent\r
+ FlightDataType.TYPE_AIR_TEMPERATURE = Température de l'air\r
+ FlightDataType.TYPE_AIR_PRESSURE = Pression atmosphérique\r
+ FlightDataType.TYPE_SPEED_OF_SOUND = Vitesse du son\r
+ FlightDataType.TYPE_TIME_STEP = Pas de simulation du temps\r
+ FlightDataType.TYPE_COMPUTATION_TIME = Temps de calcul\r
\r
+ ! PlotConfiguration\r
+ PlotConfiguration.Verticalmotion = Mouvement vertical par rapport au temps\r
+ PlotConfiguration.Totalmotion = Mouvement total par rapport au temps\r
+ PlotConfiguration.Flightside = Flight side profile\r
+ PlotConfiguration.Stability = Stabilité par rapport temps\r
+ PlotConfiguration.Dragcoef = Coefficients de traînée par rapport au Mach number\r
+ PlotConfiguration.Rollcharacteristics = Caractéristiques de roulis\r
+ PlotConfiguration.Angleofattack = Angle d'attaque et orientation par rapport au temps\r
+ PlotConfiguration.Simulationtime = Pas du temps et temps de calcul\r
\r
+ ! Warning\r
+ Warning.LargeAOA.str1 = Grand angle d'attaque rencontré.\r
+ Warning.LargeAOA.str2 = Grand angle d'attaque rencontré (\r
+ Warning.DISCONTINUITY = Discontinuité dans le diametre du corps de la fusée.\r
+ Warning.THICK_FIN = Les ailerons fin ne seront peut etre pas modélisés correctement.\r
+ Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate.\r
+ Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation\r
+ Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Le dispositif de récupération s'est ouvert alors que la combustion du moteur n'était pas finie.\r
+ Warning.FILE_INVALID_PARAMETER = Parametre invalide rencontré, ignorer.\r
index fe6abcbf2f29606dfa762f5e4c580cea44aa7f57,52b935348e72a5ee676c865209fe35b608c9e560..fae1eb47eeb8090748a8f410adf2062d942dce0b
@@@ -15,7 -16,8 +16,8 @@@ import net.sf.openrocket.util.Prefs
   */
  public class Databases {
        private static final LogHelper log = Application.getLogger();
 -
+       private static final Translator trans = Application.getTranslator();
 +      
        /* Static implementations of specific databases: */
  
        /**
        static {
                
                // Add default materials
-               BULK_MATERIAL.add(new Material.Bulk("Acrylic", 1190, false));
-               BULK_MATERIAL.add(new Material.Bulk("Balsa", 170, false));
-               BULK_MATERIAL.add(new Material.Bulk("Birch", 670, false));
-               BULK_MATERIAL.add(new Material.Bulk("Cardboard", 680, false));
-               BULK_MATERIAL.add(new Material.Bulk("Carbon fiber", 1780, false));
-               BULK_MATERIAL.add(new Material.Bulk("Cork", 240, false));
-               BULK_MATERIAL.add(new Material.Bulk("Depron (XPS)", 40, false));
-               BULK_MATERIAL.add(new Material.Bulk("Fiberglass", 1850, false));
-               BULK_MATERIAL.add(new Material.Bulk("Kraft phenolic", 950, false));
-               BULK_MATERIAL.add(new Material.Bulk("Maple", 755, false));
-               BULK_MATERIAL.add(new Material.Bulk("Paper (office)", 820, false));
-               BULK_MATERIAL.add(new Material.Bulk("Pine", 530, false));
-               BULK_MATERIAL.add(new Material.Bulk("Plywood (birch)", 630, false));
-               BULK_MATERIAL.add(new Material.Bulk("Polycarbonate (Lexan)", 1200, false));
-               BULK_MATERIAL.add(new Material.Bulk("Polystyrene", 1050, false));
-               BULK_MATERIAL.add(new Material.Bulk("PVC", 1390, false));
-               BULK_MATERIAL.add(new Material.Bulk("Spruce", 450, false));
-               BULK_MATERIAL.add(new Material.Bulk("Styrofoam (generic EPS)", 20, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Acrylic"), 1190, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Balsa"), 170, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Birch"), 670, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Cardboard"), 680, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Carbonfiber"), 1780, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Cork"), 240, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.DepronXPS"), 40, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Fiberglass"), 1850, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Kraftphenolic"), 950, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Maple"), 755, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Paperoffice"), 820, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Pine"), 530, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Plywoodbirch"), 630, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.PolycarbonateLexan"), 1200, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Polystyrene"), 1050, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.PVC"), 1390, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Spruce"), 450, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.StyrofoamgenericEPS"), 20, false));
                //              BULK_MATERIAL.add(new Material.Bulk("Styrofoam (Blue foam, XPS)", 32, false));
-               BULK_MATERIAL.add(new Material.Bulk("Styrofoam \"Blue foam\" (XPS)", 32, false));
-               BULK_MATERIAL.add(new Material.Bulk("Quantum tubing", 1050, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.StyrofoamBluefoamXPS"), 32, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Quantumtubing"), 1050, false));
                
-               SURFACE_MATERIAL.add(new Material.Surface("Ripstop nylon", 0.067, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Mylar", 0.021, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Polyethylene (thin)", 0.015, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Polyethylene (heavy)", 0.040, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Silk", 0.060, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Paper (office)", 0.080, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Cellophane", 0.018, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Cr\u00eape paper", 0.025, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Ripstopnylon"), 0.067, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Mylar"), 0.021, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Polyethylenethin"), 0.015, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Polyethyleneheavy"), 0.040, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Silk"), 0.060, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Paperoffice"), 0.080, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Cellophane"), 0.018, false));
 -              SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Creapepaper"), 0.025, false));
++              SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Crepepaper"), 0.025, false));
                
-               LINE_MATERIAL.add(new Material.Line("Thread (heavy-duty)", 0.0003, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (round 2mm, 1/16 in)", 0.0018, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat  6mm, 1/4 in)", 0.0043, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 12mm, 1/2 in)", 0.008, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 19mm, 3/4 in)", 0.0012, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 25mm, 1 in)", 0.0016, false));
-               LINE_MATERIAL.add(new Material.Line("Braided nylon (2 mm, 1/16 in)", 0.001, false));
-               LINE_MATERIAL.add(new Material.Line("Braided nylon (3 mm, 1/8 in)", 0.0035, false));
-               LINE_MATERIAL.add(new Material.Line("Tubular nylon (11 mm, 7/16 in)", 0.013, false));
-               LINE_MATERIAL.add(new Material.Line("Tubular nylon (14 mm, 9/16 in)", 0.016, false));
-               LINE_MATERIAL.add(new Material.Line("Tubular nylon (25 mm, 1 in)", 0.029, false));
+               //// Thread (heavy-duty)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Threadheavy-duty"), 0.0003, false));
+               //// Elastic cord (round 2mm, 1/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordround2mm"), 0.0018, false));
+               //// Elastic cord (flat  6mm, 1/4 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat6mm"), 0.0043, false));
+               //// Elastic cord (flat 12mm, 1/2 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat12mm"), 0.008, false));
+               //// Elastic cord (flat 19mm, 3/4 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat19mm"), 0.0012, false));
+               //// Elastic cord (flat 25mm, 1 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat25mm"), 0.0016, false));
+               //// Braided nylon (2 mm, 1/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Braidednylon2mm"), 0.001, false));
+               //// Braided nylon (3 mm, 1/8 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Braidednylon3mm"), 0.0035, false));
+               //// Tubular nylon (11 mm, 7/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon11mm"), 0.013, false));
+               //// Tubular nylon (14 mm, 9/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon14mm"), 0.016, false));
+               //// Tubular nylon (25 mm, 1 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon25mm"), 0.029, false));
                
  
                // Add user-defined materials
index 44925a354bff4503e865fe3158e4616a7dcf3f0c,448a449c7295985c3ce07224ead21527878bf027..3779f5483876eda4cef9309dc882146f908b6cb6
@@@ -340,12 -372,13 +370,13 @@@ public class RocketComponentConfig exte
        private JPanel figureTab() {
                JPanel panel = new JPanel(new MigLayout("align 20% 20%"));
                
-               panel.add(new StyledLabel("Figure style:", Style.BOLD), "wrap para");
+               //// Figure style:
+               panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.Figurestyle"), Style.BOLD), "wrap para");
                
-               panel.add(new JLabel("Component color:"), "gapleft para, gapright 10lp");
+               //// Component color:
+               panel.add(new JLabel(trans.get("RocketCompCfg.lbl.Componentcolor")), "gapleft para, gapright 10lp");
                
 -              colorButton = new JButton(new ColorIcon(component.getColor()));
 +              colorButton = new JButton(new ColorIcon(getColor()));
                colorButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 6b8ec1ececf856c71442238a89e63d6f39c53b9b,f65749a205247695de68842418782b5324f25304..5eb2fde972b4565e04ae4778abc491dc16100a72
@@@ -10,9 -10,10 +10,12 @@@ import javax.swing.JLabel
  import javax.swing.JPanel;
  
  import net.miginfocom.swing.MigLayout;
 +import net.sf.openrocket.gui.components.DescriptionArea;
  import net.sf.openrocket.gui.components.StyledLabel;
++import net.sf.openrocket.gui.components.StyledLabel.Style;
  import net.sf.openrocket.gui.components.URLLabel;
+ import net.sf.openrocket.l10n.Translator;
+ import net.sf.openrocket.startup.Application;
  import net.sf.openrocket.util.Chars;
  import net.sf.openrocket.util.GUIUtil;
  import net.sf.openrocket.util.Icons;
@@@ -21,16 -22,8 +24,18 @@@ import net.sf.openrocket.util.Prefs
  public class AboutDialog extends JDialog {
        
        public static final String OPENROCKET_URL = "http://openrocket.sourceforge.net/";
+       private static final Translator trans = Application.getTranslator();
        
-                       "Doug Pedrick (RockSim file format, printing)<br><br>" +
 +      private static final String CREDITS = "<html><center>" +
 +                      "<font size=\"+1\"><b>OpenRocket has been developed by:</b></font><br><br>" +
 +                      "Sampo Niskanen (main developer)<br>" +
++                      "Doug Pedrick (RockSim file format, printing)<br>" +
++                      "Boris du Reau (internationalization, translation lead)<br><br>" +
 +                      "<b>OpenRocket utilizes the following libraries:</b><br><br>" +
 +                      "MiG Layout (http://www.miglayout.com/)<br>" +
 +                      "JFreeChart (http://www.jfree.org/jfreechart/)<br>" +
 +                      "iText (http://www.itextpdf.com/)";
 +      
        
        public AboutDialog(JFrame parent) {
                super(parent, true);
                final String version = Prefs.getVersion();
                
                JPanel panel = new JPanel(new MigLayout("fill"));
++              JPanel sub;
                
--              panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")),
-                               "spany 4, top");
 -                              "spany, top");
++
++              // OpenRocket logo
++              panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), "top");
+               
 -              panel.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para");
 -              panel.add(new StyledLabel("Version " + version, 3), "ax 50%, growy, wrap rel");
++
++              // OpenRocket version info + copyright
++              sub = new JPanel(new MigLayout("fill"));
                
-               panel.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para");
-               panel.add(new StyledLabel("Version " + version, 3), "ax 50%, growy, wrap rel");
 -              //              String source = Prefs.getBuildSource();
 -              //              if (!Prefs.DEFAULT_BUILD_SOURCE.equalsIgnoreCase(source)) {
 -              //                      panel.add(new StyledLabel("Distributed by " + source, -1), 
 -              //                                      "ax 50%, growy, wrap para");
 -              //              } else {
 -              //                      panel.add(new StyledLabel(" ", -1), "ax 50%, growy, wrap para");
 -              //              }
++              sub.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para");
++              sub.add(new StyledLabel(trans.get("lbl.version").trim() + " " + version, 3), "ax 50%, growy, wrap rel");
++              sub.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2011 Sampo Niskanen"), "ax 50%, growy, wrap para");
                
-               //              String source = Prefs.getBuildSource();
-               //              if (!Prefs.DEFAULT_BUILD_SOURCE.equalsIgnoreCase(source)) {
-               //                      panel.add(new StyledLabel("Distributed by " + source, -1), 
-               //                                      "ax 50%, growy, wrap para");
-               //              } else {
-               //                      panel.add(new StyledLabel(" ", -1), "ax 50%, growy, wrap para");
-               //              }
 -              panel.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2010 Sampo Niskanen"),
 -                              "ax 50%, growy, wrap para");
++              sub.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para");
++              panel.add(sub, "grow");
                
-               panel.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2011 Sampo Niskanen"),
-                               "ax 50%, growy, wrap para");
 -              panel.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para");
++
++              // Translation information (if present)
++              String translation = trans.get("lbl.translation").trim();
++              String translator = trans.get("lbl.translator").trim();
++              String translatorWebsite = trans.get("lbl.translatorWebsite").trim();
++              String translatorIcon = trans.get("lbl.translatorIcon").trim();
                
-               panel.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para");
 -              //// translations author if language is not English
 -              String translator = trans.get("about.dlg.lbl.translation").trim();
 -              String translatorUrl = trans.get("about.dlg.lbl.transwebsite").trim();
 -              if (translator.length() > 0) {
 -                      panel.add(new StyledLabel(translator), "ax 50%, growy, wrap para");
 -                      if (translatorUrl.length() > 0) {
 -                              panel.add(new URLLabel(translatorUrl), "ax 50%, growy, wrap para");
++              if (translator.length() > 0 || translatorWebsite.length() > 0 || translatorIcon.length() > 0) {
++                      sub = new JPanel(new MigLayout("fill"));
++                      
++                      sub.add(new StyledLabel(translation, Style.BOLD), "ax 50%, growy, wrap para");
++                      
++                      if (translatorIcon.length() > 0) {
++                              sub.add(new JLabel(Icons.loadImageIcon("pix/translators/" + translatorIcon, translator)),
++                                              "ax 50%, growy, wrap para");
++                      }
++                      if (translator.length() > 0) {
++                              sub.add(new JLabel(translator), "ax 50%, growy, wrap rel");
++                      }
++                      if (translatorWebsite.length() > 0) {
++                              sub.add(new URLLabel(translatorWebsite), "ax 50%, growy, wrap para");
+                       }
++                      
++                      panel.add(sub);
+               }
                
-               panel.add(info, "width 10px, height 100lp, grow, spanx, wrap para");
 +
 +              DescriptionArea info = new DescriptionArea(5);
 +              info.setText(CREDITS);
-               JButton close = new JButton("Close");
++              panel.add(info, "newline, width 10px, height 100lp, grow, spanx, wrap para");
 +              
 +              //              JTextArea area = new JTextArea(CREATORS);
 +              //              area.setEditable(false);
 +              //              area.setLineWrap(true);
 +              //              area.setWrapStyleWord(true);
 +              //              panel.add(new JScrollPane(area), "width 10px, height 100lp, grow, spanx, wrap para");
 +              
 +
 -              JButton close = new JButton(trans.get("dlg.but.close"));
+               //Close button
++              JButton close = new JButton(trans.get("button.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                GUIUtil.setDisposableDialogOptions(this, close);
        }
        
--
  }
index 1d5556ba0c3b734f8af17f651bcde3cefa685071,06119318337be94e42fc64a8938024d6d62b23b5..c820c071e59e7358628c0a2f635b0d3d557eae8d
   */
  package net.sf.openrocket.gui.dialogs;
  
 +import java.awt.Desktop;
 +import java.awt.Window;
 +import java.awt.event.ActionEvent;
 +import java.awt.event.ActionListener;
 +import java.io.File;
 +import java.io.FileOutputStream;
 +import java.io.IOException;
 +import java.util.Enumeration;
 +import java.util.Iterator;
 +
 +import javax.swing.JButton;
 +import javax.swing.JCheckBox;
 +import javax.swing.JDialog;
 +import javax.swing.JFileChooser;
 +import javax.swing.JLabel;
 +import javax.swing.JOptionPane;
 +import javax.swing.JPanel;
 +import javax.swing.JScrollPane;
 +import javax.swing.event.TreeSelectionEvent;
 +import javax.swing.event.TreeSelectionListener;
 +import javax.swing.filechooser.FileFilter;
 +import javax.swing.tree.TreeNode;
 +import javax.swing.tree.TreePath;
 +
 +import net.miginfocom.swing.MigLayout;
  import net.sf.openrocket.document.OpenRocketDocument;
 -import net.sf.openrocket.gui.print.PDFPrintStreamDoc;
 -import net.sf.openrocket.gui.print.PrintUtilities;
 +import net.sf.openrocket.gui.main.ExceptionHandler;
 +import net.sf.openrocket.gui.print.PrintController;
 +import net.sf.openrocket.gui.print.PrintSettings;
 +import net.sf.openrocket.gui.print.PrintableContext;
 +import net.sf.openrocket.gui.print.TemplateProperties;
 +import net.sf.openrocket.gui.print.components.CheckTreeManager;
 +import net.sf.openrocket.gui.print.components.RocketPrintTree;
+ import net.sf.openrocket.l10n.Translator;
 +import net.sf.openrocket.logging.LogHelper;
 +import net.sf.openrocket.rocketcomponent.Rocket;
  import net.sf.openrocket.startup.Application;
 -import sun.print.ServiceDialog;
 -
 -import javax.print.DocFlavor;
 -import javax.print.DocPrintJob;
 -import javax.print.PrintException;
 -import javax.print.PrintService;
 -import javax.print.PrintServiceLookup;
 -import javax.print.attribute.Attribute;
 -import javax.print.attribute.AttributeSet;
 -import javax.print.attribute.HashPrintRequestAttributeSet;
 -import javax.print.attribute.PrintRequestAttributeSet;
 -import javax.print.attribute.standard.Destination;
 -import javax.print.attribute.standard.Fidelity;
 -import javax.swing.JDialog;
 -import javax.swing.JMenu;
 -import javax.swing.JTabbedPane;
 -import java.awt.Component;
 -import java.awt.Container;
 -import java.awt.Dialog;
 -import java.awt.GraphicsConfiguration;
 -import java.awt.GraphicsDevice;
 -import java.awt.GraphicsEnvironment;
 -import java.awt.HeadlessException;
 -import java.awt.Rectangle;
 -import java.io.ByteArrayOutputStream;
 +import net.sf.openrocket.util.GUIUtil;
 +import net.sf.openrocket.util.Prefs;
  
  /**
 - * This class is not a dialog by inheritance, but is by delegation.  It front-ends a java print dialog by
 - * augmenting it with application specific (rocket) settings.
 + * This class isolates the Swing components used to create a panel that is added to a standard Java print dialog.
   */
 -public class PrintDialog {
 -
 -    /**
 -     * The service UI dialog.
 -     */
 -    private ServiceDialog dialog;
 -
 -    /**
 -     * A javax doc flavor specific for printing PDF documents.
 -     */
 -    private static final DocFlavor.INPUT_STREAM PDF = DocFlavor.INPUT_STREAM.PDF;
 -
 -    private static final Translator trans = Application.getTranslator();
 -
 -    /**
 -     * Construct a print dialog using an Open Rocket document - which contains the rocket data to ultimately be
 -     * printed.
 -     *
 -     * @param orDocument the rocket container
 -     */
 -    public PrintDialog (OpenRocketDocument orDocument) {
 -        PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
 -        PrintService svc = PrintServiceLookup.lookupDefaultPrintService();
 -        PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
 -        attrs.add(PrintUtilities.getDefaultMedia().getMediaSizeName());
 -
 -        final PrintPanel panel = new PrintPanel(orDocument, this);
 -        PrintService ps = printDialog(null, 100, 100, services, svc, PDF, attrs, panel);
 -        if (ps != null) {
 -            DocPrintJob dpj = ps.createPrintJob();
 -            try {
 -                System.err.println(attrs.size());
 -                ByteArrayOutputStream baos = panel.generateReport();
 -                dpj.print(new PDFPrintStreamDoc(baos, null), attrs);
 -            }
 -            catch (PrintException e) {
 -                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
 -            }
 -        }
 -    }
 -
 -    /**
 -     * Get the set of attributes from the service ui print dialog.
 -     *
 -     * @return a set of print attributes
 -     */
 -    PrintRequestAttributeSet getAttributes () {
 -        return dialog.getAttributes();
 -    }
 -
 -    /**
 -     * Get the service ui dialog.  This is the actual dialog that gets displayed - we co-opt it for adding a rocket
 -     * specific tab.
 -     *
 -     * @return the Java service ui print dialog
 -     */
 -    JDialog getDialog () {
 -        return dialog;
 -    }
 -
 -    /**
 -     * Mimics the ServiceUI.printDialog method, but with enhancements for our own print settings tab.
 -     *
 -     * @param gc             used to select screen. null means primary or default screen.
 -     * @param x              location of dialog including border in screen coordinates
 -     * @param y              location of dialog including border in screen coordinates
 -     * @param services       to be browsable, must be non-null.
 -     * @param defaultService - initial PrintService to display.
 -     * @param flavor         - the flavor to be printed, or null.
 -     * @param attributes     on input is the initial application supplied preferences. This cannot be null but may be
 -     *                       empty. On output the attributes reflect changes made by the user.
 -     * @param addnl          a panel to be added, as a tab, to the internal tabbed pane of the resulting print dialog
 -     *
 -     * @return print service selected by the user, or null if the user cancelled the dialog.
 -     *
 -     * @throws HeadlessException        if GraphicsEnvironment.isHeadless() returns true.
 -     * @throws IllegalArgumentException if services is null or empty, or attributes is null, or the initial PrintService
 -     *                                  is not in the list of browsable services.
 -     */
 -    private PrintService printDialog (GraphicsConfiguration gc,
 -                                      int x, int y,
 -                                      PrintService[] services,
 -                                      PrintService defaultService,
 -                                      DocFlavor flavor,
 -                                      PrintRequestAttributeSet attributes,
 -                                      PrintPanel addnl)
 -            throws HeadlessException {
 -        int defaultIndex = -1;
 -
 -        if (GraphicsEnvironment.isHeadless()) {
 -            throw new HeadlessException();
 -        }
 -        else if ((services == null) || (services.length == 0)) {
 -            throw new IllegalArgumentException("services must be non-null " +
 -                                               "and non-empty");
 -        }
 -        else if (attributes == null) {
 -            throw new IllegalArgumentException("attributes must be non-null");
 -        }
 -
 -        if (defaultService != null) {
 -            for (int i = 0; i < services.length; i++) {
 -                if (services[i].equals(defaultService)) {
 -                    defaultIndex = i;
 -                    break;
 -                }
 -            }
 -
 -            if (defaultIndex < 0) {
 -                throw new IllegalArgumentException("services must contain " +
 -                                                   "defaultService");
 -            }
 -        }
 -        else {
 -            defaultIndex = 0;
 -        }
 -
 -        Rectangle gcBounds = (gc == null) ? GraphicsEnvironment.
 -                getLocalGraphicsEnvironment().getDefaultScreenDevice().
 -                getDefaultConfiguration().getBounds() : gc.getBounds();
 -
 -        dialog = new ServiceDialog(gc,
 -                                   x + gcBounds.x,
 -                                   y + gcBounds.y,
 -                                   services, defaultIndex,
 -                                   flavor, attributes,
 -                                   (Dialog) null);
 -        Rectangle dlgBounds = dialog.getBounds();
 -
 -        // get union of all GC bounds
 -        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
 -        GraphicsDevice[] gs = ge.getScreenDevices();
 -        for (GraphicsDevice g : gs) {
 -            gcBounds = gcBounds.union(g.getDefaultConfiguration().getBounds());
 -        }
 -
 -        // if portion of dialog is not within the gc boundary
 -        if (!gcBounds.contains(dlgBounds)) {
 -            // put in the center relative to parent frame/dialog
 -            dialog.setLocationRelativeTo(null);
 -        }
 -        if (addnl != null && addnl.getTitle() != null) {
 -            JTabbedPane tp = (JTabbedPane) getDescendantOfClass(JTabbedPane.class, dialog);
 -            tp.add(addnl, addnl.getTitle(), 0);
 -            tp.setSelectedIndex(0);
 -        }
 +public class PrintDialog extends JDialog implements TreeSelectionListener {
 +      
 +      private static final LogHelper log = Application.getLogger();
++      private static final Translator trans = Application.getTranslator();
 +      
-       private static final String SETTINGS_BUTTON_TEXT = "Settings";
-       private static final String PREVIEW_BUTTON_TEXT = "Preview & Print";
-       private static final String SAVE_AS_PDF_BUTTON_TEXT = "Save as PDF";
-       private static final String SHOW_BY_STAGE = "Show By Stage";
++      private final Desktop desktop;
 +      
 +      private final RocketPrintTree stagedTree;
 +      private final RocketPrintTree noStagedTree;
 +      private OpenRocketDocument document;
 +      private RocketPrintTree currentTree;
-       private Desktop desktop = null;
 +      
 +      private JButton previewButton;
 +      private JButton saveAsPDF;
 +      private JButton cancel;
 +      
 +      /**
 +       * Constructor.
 +       *
 +       * @param orDocument the OR rocket container
 +       */
 +      public PrintDialog(Window parent, OpenRocketDocument orDocument) {
-               super(parent, "Print or export", ModalityType.APPLICATION_MODAL);
++              super(parent, trans.get("title"), ModalityType.APPLICATION_MODAL);
 +              
  
 -        dialog.setVisible(true);
 +              JPanel panel = new JPanel(new MigLayout("fill, gap rel unrel"));
 +              this.add(panel);
 +              
  
 -        if (dialog.getStatus() == ServiceDialog.APPROVE) {
 -            PrintRequestAttributeSet newas = dialog.getAttributes();
 -            Class dstCategory = Destination.class;
 -            Class fdCategory = Fidelity.class;
 +              // before any Desktop APIs are used, first check whether the API is
 +              // supported by this particular VM on this particular host
 +              if (Desktop.isDesktopSupported()) {
 +                      desktop = Desktop.getDesktop();
++              } else {
++                      desktop = null;
 +              }
 +              
 +              document = orDocument;
 +              Rocket rocket = orDocument.getRocket();
 +              
 +              noStagedTree = RocketPrintTree.create(rocket.getName());
 +              noStagedTree.setShowsRootHandles(false);
 +              CheckTreeManager ctm = new net.sf.openrocket.gui.print.components.CheckTreeManager(noStagedTree);
 +              ctm.addTreeSelectionListener(this);
 +              
 +              final int stages = rocket.getStageCount();
 +              
  
-               JLabel label = new JLabel("Select elements to include:");
 -            if (attributes.containsKey(dstCategory) &&
 -                !newas.containsKey(dstCategory)) {
 -                attributes.remove(dstCategory);
 -            }
++              JLabel label = new JLabel(trans.get("lbl.selectElements"));
 +              panel.add(label, "wrap unrel");
 +              
 +              // Create the tree
 +              if (stages > 1) {
 +                      stagedTree = RocketPrintTree.create(rocket.getName(), rocket.getChildren());
 +                      ctm = new CheckTreeManager(stagedTree);
 +                      stagedTree.setShowsRootHandles(false);
 +                      ctm.addTreeSelectionListener(this);
 +              } else {
 +                      stagedTree = noStagedTree;
 +              }
 +              currentTree = stagedTree;
 +              
 +              // Add the tree to the UI
 +              final JScrollPane scrollPane = new JScrollPane(stagedTree);
 +              panel.add(scrollPane, "width 400lp, height 200lp, grow, wrap para");
 +              
  
 -            attributes.addAll(newas);
 +              // Checkboxes and buttons
-               final JCheckBox sortByStage = new JCheckBox(SHOW_BY_STAGE);
++              final JCheckBox sortByStage = new JCheckBox(trans.get("checkbox.showByStage"));
 +              sortByStage.setEnabled(stages > 1);
 +              sortByStage.setSelected(stages > 1);
 +              sortByStage.addActionListener(new ActionListener() {
 +                      @Override
 +                      public void actionPerformed(ActionEvent e) {
 +                              if (sortByStage.isEnabled()) {
 +                                      if (((JCheckBox) e.getSource()).isSelected()) {
 +                                              scrollPane.setViewportView(stagedTree);
 +                                              stagedTree.setExpandsSelectedPaths(true);
 +                                              currentTree = stagedTree;
 +                                      }
 +                                      else {
 +                                              scrollPane.setViewportView(noStagedTree);
 +                                              noStagedTree.setExpandsSelectedPaths(true);
 +                                              currentTree = noStagedTree;
 +                                      }
 +                              }
 +                      }
 +              });
 +              panel.add(sortByStage, "aligny top, split");
 +              
  
 -            Fidelity fd = (Fidelity) attributes.get(fdCategory);
 -            if (fd != null) {
 -                if (fd == Fidelity.FIDELITY_TRUE) {
 -                    removeUnsupportedAttributes(dialog.getPrintService(),
 -                                                flavor, attributes);
 -                }
 -            }
 -            return dialog.getPrintService();
 -        }
 -        else {
 -            return null;
 -        }
 -    }
 +              panel.add(new JPanel(), "growx");
 +              
  
-               JButton settingsButton = new JButton(SETTINGS_BUTTON_TEXT);
 -    private Component getDescendantOfClass (Class c, Container cont) {
 -        if (c == null || cont == null) {
 -            return null;
 -        }
 -        Component[] children = (cont instanceof JMenu)
 -                               ? ((JMenu) cont).getMenuComponents()
 -                               : cont.getComponents();
 -        for (int i = 0, n = children.length; i < n; i++) {
 -            Component comp = children[i];
 -            if (c.isInstance(comp)) {
 -                return comp;
 -            }
 -            comp = getDescendantOfClass(c, (Container) comp);
 -            if (comp != null) {
 -                return comp;
 -            }
 -        }
 -        return null;
 -    }
++              JButton settingsButton = new JButton(trans.get("printdlg.but.settings"));
 +              settingsButton.addActionListener(new ActionListener() {
 +                      @Override
 +                      public void actionPerformed(ActionEvent e) {
 +                              PrintSettings settings = Prefs.getPrintSettings();
 +                              log.debug("settings=" + settings);
 +                              PrintSettingsDialog settingsDialog = new PrintSettingsDialog(PrintDialog.this, settings);
 +                              settingsDialog.setVisible(true);
 +                              Prefs.setPrintSettings(settings);
 +                      }
 +              });
 +              panel.add(settingsButton, "wrap para");
 +              
  
-               previewButton = new JButton(PREVIEW_BUTTON_TEXT);
 -    /**
 -     * Removes any attributes from the given AttributeSet that are unsupported by the given PrintService/DocFlavor
 -     * combination.
 -     * 
 -     * @param ps      the print service for which unsupported attributes will be determined
 -     * @param flavor  the document flavor; PDF in our case
 -     * @param aset    the set of attributes requested
 -     */
 -    private static void removeUnsupportedAttributes (PrintService ps,
 -                                                     DocFlavor flavor,
 -                                                     AttributeSet aset) {
 -        AttributeSet asUnsupported = ps.getUnsupportedAttributes(flavor,
 -                                                                 aset);
++              previewButton = new JButton(trans.get("but.previewAndPrint"));
 +              previewButton.addActionListener(new ActionListener() {
 +                      @Override
 +                      public void actionPerformed(ActionEvent e) {
 +                              onPreview();
 +                              PrintDialog.this.setVisible(false);
 +                      }
 +              });
 +              panel.add(previewButton, "split, right, gap para");
 +              
  
-               saveAsPDF = new JButton(SAVE_AS_PDF_BUTTON_TEXT);
 -        if (asUnsupported != null) {
 -            Attribute[] usAttrs = asUnsupported.toArray();
++              saveAsPDF = new JButton(trans.get("printdlg.but.saveaspdf"));
 +              saveAsPDF.addActionListener(new ActionListener() {
 +                      @Override
 +                      public void actionPerformed(ActionEvent e) {
 +                              if (onSavePDF()) {
 +                                      PrintDialog.this.setVisible(false);
 +                              }
 +                      }
 +              });
 +              panel.add(saveAsPDF, "right, gap para");
 +              
  
-               cancel = new JButton("Cancel");
 -            for (Attribute usAttr : usAttrs) {
 -                Class<? extends Attribute> category = usAttr.getCategory();
++              cancel = new JButton(trans.get("button.cancel"));
 +              cancel.addActionListener(new ActionListener() {
 +                      @Override
 +                      public void actionPerformed(ActionEvent e) {
 +                              PrintDialog.this.setVisible(false);
 +                      }
 +              });
 +              panel.add(cancel, "right, gap para");
 +              
  
 -                if (ps.isAttributeCategorySupported(category)) {
 -                    Attribute attr =
 -                            (Attribute) ps.getDefaultAttributeValue(category);
 +              expandAll(currentTree, true);
 +              if (currentTree != noStagedTree) {
 +                      expandAll(noStagedTree, true);
 +              }
 +              
  
 -                    if (attr != null) {
 -                        aset.add(attr);
 -                    }
 -                    else {
 -                        aset.remove(category);
 -                    }
 -                }
 -                else {
 -                    aset.remove(category);
 -                }
 -            }
 -        }
 -    }
 +              GUIUtil.setDisposableDialogOptions(this, previewButton);
 +              
 +      }
 +      
 +      
 +      @Override
 +      public void valueChanged(final TreeSelectionEvent e) {
 +              final TreePath path = e.getNewLeadSelectionPath();
 +              if (path != null) {
 +                      previewButton.setEnabled(true);
 +                      saveAsPDF.setEnabled(true);
 +              } else {
 +                      previewButton.setEnabled(false);
 +                      saveAsPDF.setEnabled(false);
 +              }
 +      }
 +      
 +      /**
 +       * If expand is true, expands all nodes in the tree. Otherwise, collapses all nodes in the theTree.
 +       *
 +       * @param theTree   the tree to expand/contract
 +       * @param expand expand if true, contract if not
 +       */
 +      public void expandAll(RocketPrintTree theTree, boolean expand) {
 +              TreeNode root = (TreeNode) theTree.getModel().getRoot();
 +              // Traverse theTree from root
 +              expandAll(theTree, new TreePath(root), expand);
 +      }
 +      
 +      /**
 +       * Recursively walk a tree, and if expand is true, expands all nodes in the tree. Otherwise, collapses all nodes in
 +       * the theTree.
 +       *
 +       * @param theTree   the tree to expand/contract
 +       * @param parent the node to iterate/recurse over
 +       * @param expand expand if true, contract if not
 +       */
 +      private void expandAll(RocketPrintTree theTree, TreePath parent, boolean expand) {
 +              theTree.addSelectionPath(parent);
 +              // Traverse children
 +              TreeNode node = (TreeNode) parent.getLastPathComponent();
 +              if (node.getChildCount() >= 0) {
 +                      for (Enumeration<?> e = node.children(); e.hasMoreElements();) {
 +                              TreeNode n = (TreeNode) e.nextElement();
 +                              TreePath path = parent.pathByAddingChild(n);
 +                              expandAll(theTree, path, expand);
 +                      }
 +              }
 +              // Expansion or collapse must be done bottom-up
 +              if (expand) {
 +                      theTree.expandPath(parent);
 +              } else {
 +                      theTree.collapsePath(parent);
 +              }
 +      }
 +      
 +      
  
-                               log.error("Could not create temporary file for previewing.", e);
-                               JOptionPane.showMessageDialog(this, "Could not create a temporary file for previewing.",
-                                                                                               "Error creating file", JOptionPane.ERROR_MESSAGE);
 +      /**
 +       * Generate a report using a temporary file.  The file will be deleted upon JVM exit.
 +       *
 +       * @param paper the name of the paper size
 +       *
 +       * @return a file, populated with the "printed" output (the rocket info)
 +       *
 +       * @throws IOException thrown if the file could not be generated
 +       */
 +      private File generateReport(PrintSettings settings) throws IOException {
 +              final File f = File.createTempFile("openrocket-", ".pdf");
 +              f.deleteOnExit();
 +              return generateReport(f, settings);
 +      }
 +      
 +      /**
 +       * Generate a report to a specified file.
 +       *
 +       * @param f     the file to which rocket data will be written
 +       * @param paper the name of the paper size
 +       *
 +       * @return a file, populated with the "printed" output (the rocket info)
 +       *
 +       * @throws IOException thrown if the file could not be generated
 +       */
 +      private File generateReport(File f, PrintSettings settings) throws IOException {
 +              Iterator<PrintableContext> toBePrinted = currentTree.getToBePrinted();
 +              new PrintController().print(document, toBePrinted, new FileOutputStream(f), settings);
 +              return f;
 +      }
 +      
 +      
 +      /**
 +       * Handler for when the Preview button is clicked.
 +       */
 +      private void onPreview() {
 +              if (desktop != null) {
 +                      try {
 +                              PrintSettings settings = Prefs.getPrintSettings();
 +                              // TODO: HIGH: Remove UIManager, and pass settings to the actual printing methods
 +                              TemplateProperties.setColors(settings);
 +                              File f = generateReport(settings);
 +                              desktop.open(f);
 +                      } catch (IOException e) {
-                       JOptionPane.showMessageDialog(this,
-                                                                                       "Your environment does not support automatically opening the default PDF viewer.",
-                                                                                       "Error creating file", JOptionPane.INFORMATION_MESSAGE);
++                              log.error("Could not open preview.", e);
++                              JOptionPane.showMessageDialog(this, new String[] {
++                                              trans.get("error.preview.desc1"),
++                                              trans.get("error.preview.desc2") },
++                                              trans.get("error.preview.title"),
++                                              JOptionPane.ERROR_MESSAGE);
 +                      }
 +              } else {
-                               return "PDF files";
++                      JOptionPane.showMessageDialog(this, new String[] {
++                                      trans.get("error.preview.desc1"),
++                                      trans.get("error.preview.desc2") },
++                                      trans.get("error.preview.title"),
++                                      JOptionPane.INFORMATION_MESSAGE);
 +              }
 +      }
 +      
 +      /**
 +       * Handler for when the "Save as PDF" button is clicked.
 +       *
 +       * @return      true if the PDF was saved
 +       */
 +      private boolean onSavePDF() {
 +              
 +              JFileChooser chooser = new JFileChooser();
 +              // Note: source for ExampleFileFilter can be found in FileChooserDemo,
 +              // under the demo/jfc directory in the Java 2 SDK, Standard Edition.
 +              FileFilter filter = new FileFilter() {
 +                      
 +                      //Accept all directories and all pdf files.
 +                      @Override
 +                      public boolean accept(File f) {
 +                              if (f.isDirectory())
 +                                      return true;
 +                              return f.getName().toLowerCase().endsWith(".pdf");
 +                      }
 +                      
 +                      //The description of this filter
 +                      @Override
 +                      public String getDescription() {
++                              return trans.get("filetypes.pdf");
 +                      }
 +              };
 +              chooser.setFileFilter(filter);
 +              int returnVal = chooser.showSaveDialog(this);
 +              if (returnVal == JFileChooser.APPROVE_OPTION) {
 +                      
 +                      try {
 +                              String fname = chooser.getSelectedFile().getCanonicalPath();
 +                              if (!getExtension(fname).equals("pdf")) {
 +                                      fname = fname + ".pdf";
 +                              }
 +                              File f = new File(fname);
 +                              PrintSettings settings = Prefs.getPrintSettings();
 +                              // TODO: HIGH: Remove UIManager, and pass settings to the actual printing methods
 +                              TemplateProperties.setColors(settings);
 +                              generateReport(f, settings);
 +                      } catch (IOException e) {
 +                              ExceptionHandler.handleErrorCondition(e);
 +                      }
 +                      return true;
 +              } else {
 +                      return false;
 +              }
 +      }
 +      
 +      /**
 +       * Get the extension of a file.
 +       */
 +      private static String getExtension(String s) {
 +              String ext = null;
 +              int i = s.lastIndexOf('.');
 +              
 +              if (i > 0 && i < s.length() - 1) {
 +                      ext = s.substring(i + 1).toLowerCase();
 +              }
 +              return ext != null ? ext : "";
 +      }
  }
index 2605dc7d6bd120bbc1796f432dcc7cc8315dde81,966354bf8a1f0b3ab3f20c0307a28a5027bf269f..55df50394d49fbd9b3b5cbb00d384b031852ae69
@@@ -115,13 -119,15 +118,15 @@@ public class BasicFrame extends JFrame 
                                        ".ork", ".ork.gz", ".rkt", ".rkt.gz");
        
        private static final FileFilter OPENROCKET_DESIGN_FILTER =
-                       new SimpleFileFilter("OpenRocket designs (*.ork)", ".ork", ".ork.gz");
+                       //// OpenRocket designs (*.ork)
+                       new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter2"), ".ork", ".ork.gz");
        
        private static final FileFilter ROCKSIM_DESIGN_FILTER =
-                       new SimpleFileFilter("RockSim designs (*.rkt)", ".rkt", ".rkt.gz");
+                       //// RockSim designs (*.rkt)
+                       new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter3"), ".rkt", ".rkt.gz");
        
  
 -      
 +
  
        public static final int COMPONENT_TAB = 0;
        public static final int SIMULATION_TAB = 1;
                        log.info("Warnings while reading file: " + warnings);
                        WarningDialog.showWarnings(parent,
                                        new Object[] {
-                                                       "The following problems were encountered while opening " + filename + ".",
-                                                       "Some design features may not have been loaded correctly."
 -                                      //// The following problems were encountered while opening
 -                                      trans.get("BasicFrame.WarningDialog.txt1") +" " + filename + ".",
++                                                      //// The following problems were encountered while opening
++                                                      trans.get("BasicFrame.WarningDialog.txt1") + " " + filename + ".",
+                                                       //// Some design features may not have been loaded correctly.
 -                                      trans.get("BasicFrame.WarningDialog.txt2")
++                                                      trans.get("BasicFrame.WarningDialog.txt2")
                                        },
-                                       "Warnings while opening file", warnings);
+                                       //// Warnings while opening file
+                                       trans.get("BasicFrame.WarningDialog.title"), warnings);
                }
                
  
                        log.info("Confirming whether to save the design");
                        ComponentConfigDialog.hideDialog();
                        int result = JOptionPane.showConfirmDialog(this,
-                                       "Design '" + rocket.getName() + "' has not been saved.  " +
-                                                       "Do you want to save it?",
-                                       "Design not saved", JOptionPane.YES_NO_CANCEL_OPTION,
 -                                      trans.get("BasicFrame.dlg.lbl1") + rocket.getName() + 
 -                                      trans.get("BasicFrame.dlg.lbl2")+ "  " +
 -                                      trans.get("BasicFrame.dlg.lbl3"),
++                                      trans.get("BasicFrame.dlg.lbl1") + rocket.getName() +
++                                                      trans.get("BasicFrame.dlg.lbl2") + "  " +
++                                                      trans.get("BasicFrame.dlg.lbl3"),
+                                       trans.get("BasicFrame.dlg.title"), JOptionPane.YES_NO_CANCEL_OPTION,
                                        JOptionPane.QUESTION_MESSAGE);
                        if (result == JOptionPane.YES_OPTION) {
                                // Save
index 19e6c84a7655c742ff9dae14016b3fbd5aa19783,19e6c84a7655c742ff9dae14016b3fbd5aa19783..5a2bf5920876a3c3b913f98727d3afd111856a13
@@@ -2,14 -2,14 +2,32 @@@ package net.sf.openrocket.l10n
  
  /**
   * A translator implementation that returns the logical key in brackets instead
-- * of an actual translation.
++ * of an actual translation.  The class optionally verifies that the translation
++ * is actually obtainable from some other translator.
   * 
   * @author Sampo Niskanen <sampo.niskanen@iki.fi>
   */
  public class DebugTranslator implements Translator {
        
++      private final Translator translator;
++      
++      
++      /**
++       * Sole constructor.
++       * 
++       * @param translator    the translator to verify the translation exists, or <code>null</code> not to verify.
++       */
++      public DebugTranslator(Translator translator) {
++              this.translator = translator;
++      }
++      
++      
++
        @Override
        public String get(String key) {
++              if (translator != null) {
++                      translator.get(key);
++              }
                return "[" + key + "]";
        }
        
index adf0aa190134682296f72818f1dbf2aac297b30d,297ec1c3befa93382aa017d1667f240c1b3ee342..0b53eb0266c27ecf4ed87625582a7fadaa91ce22
@@@ -1,13 -1,15 +1,15 @@@
  package net.sf.openrocket.rocketcomponent;
  
- import net.sf.openrocket.motor.Motor;
- import net.sf.openrocket.util.Coordinate;
- import net.sf.openrocket.util.MathUtil;
 +import java.util.ArrayList;
 +import java.util.Collection;
 +import java.util.HashMap;
 +
+ import net.sf.openrocket.l10n.Translator;
+ import net.sf.openrocket.motor.Motor;
+ import net.sf.openrocket.startup.Application;
+ import net.sf.openrocket.util.Coordinate;
+ import net.sf.openrocket.util.MathUtil;
 -import java.util.ArrayList;
 -import java.util.Collection;
 -import java.util.HashMap;
 -
  
  /**
   * Rocket body tube component.  Has only two parameters, a radius and length.
   */
  
  public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial {
+       private static final Translator trans = Application.getTranslator();
 -
++      
        private double radius = 0;
        private boolean autoRadius = false; // Radius chosen automatically based on parent component
+       
        // When changing the inner radius, thickness is modified
+       
        private boolean motorMount = false;
        private HashMap<String, Double> ejectionDelays = new HashMap<String, Double>();
        private HashMap<String, Motor> motors = new HashMap<String, Motor>();
                this.filled = false;
                this.thickness = thickness;
        }
+       
+       
        /************  Get/set component parameter methods ************/
+       
        /**
         * Return the outer radius of the body tube.
-      *
 -     * 
--     * @return  the outside radius of the tube
++       *
++       * @return  the outside radius of the tube
         */
--    @Override
--      public double getOuterRadius () {
++      @Override
++      public double getOuterRadius() {
                if (autoRadius) {
                        // Return auto radius from front or rear
                        double r = -1;
         * Set the outer radius of the body tube.  If the radius is less than the wall thickness,
         * the wall thickness is decreased accordingly of the value of the radius.
         * This method sets the automatic radius off.
-      *
 -     * 
--     * @param radius  the outside radius in standard units
++       *
++       * @param radius  the outside radius in standard units
         */
--    @Override
--      public void setOuterRadius (double radius) {
++      @Override
++      public void setOuterRadius(double radius) {
                if ((this.radius == radius) && (autoRadius == false))
                        return;
+               
                this.autoRadius = false;
                this.radius = Math.max(radius, 0);
+               
                if (this.thickness > this.radius)
                        this.thickness = this.radius;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        public boolean isRadiusAutomatic() {
                return autoRadius;
        }
+       
        /**
 -       * Sets whether the radius is selected automatically or not.  
 +       * Sets whether the radius is selected automatically or not.
         */
        public void setRadiusAutomatic(boolean auto) {
                if (autoRadius == auto)
                autoRadius = auto;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
+       
+       
        @Override
--      public double getAftRadius() {  return getOuterRadius(); }
++      public double getAftRadius() {
++              return getOuterRadius();
++      }
++      
        @Override
--      public double getForeRadius() { return getOuterRadius(); }
++      public double getForeRadius() {
++              return getOuterRadius();
++      }
++      
        @Override
        public boolean isAftRadiusAutomatic() {
                return isRadiusAutomatic();
                }
                return getOuterRadius();
        }
+       
+       
  
  
 -      
 -      
 -      
 -      
 -    @Override 
 +
-     @Override
++      @Override
        public double getInnerRadius() {
                if (filled)
                        return 0;
--              return Math.max(getOuterRadius()-thickness, 0);
++              return Math.max(getOuterRadius() - thickness, 0);
        }
-     @Override
+       
 -    @Override
++      @Override
        public void setInnerRadius(double r) {
--              setThickness(getOuterRadius()-r);
++              setThickness(getOuterRadius() - r);
        }
+       
+       
  
  
        /**
         */
        @Override
        public String getComponentName() {
-               return "Body tube";
+               //// Body tube
+               return trans.get("BodyTube.BodyTube");
        }
 -
 -    /**
 -     * Accept a visitor to this BodyTube in the component hierarchy.
 -     * 
 -     * @param theVisitor  the visitor that will be called back with a reference to this BodyTube
 -     */
 -    @Override 
 -    public void accept (final ComponentVisitor theVisitor) {
 -        theVisitor.visit(this);
 -    }
--
--
++      
++      
        /************ Component calculations ***********/
+       
        // From SymmetricComponent
        /**
         * Returns the outer radius at the position x.  This returns the same value as getOuterRadius().
                if (filled)
                        return 0.0;
                else
--                      return Math.max(getOuterRadius()-thickness,0);
++                      return Math.max(getOuterRadius() - thickness, 0);
        }
+       
+       
        /**
         * Returns the body tube's center of gravity.
         */
        @Override
        public double getLongitudinalUnitInertia() {
                // 1/12 * (3 * (r1^2 + r2^2) + h^2)
--              return (3 * (MathUtil.pow2(getInnerRadius())) + MathUtil.pow2(getOuterRadius()) +
--                              MathUtil.pow2(getLength())) / 12;
++              return (3 * (MathUtil.pow2(getInnerRadius())) + MathUtil.pow2(getOuterRadius()) + MathUtil.pow2(getLength())) / 12;
        }
+       
        @Override
        public double getRotationalUnitInertia() {
                // 1/2 * (r1^2 + r2^2)
--              return (MathUtil.pow2(getInnerRadius()) + MathUtil.pow2(getOuterRadius()))/2;
++              return (MathUtil.pow2(getInnerRadius()) + MathUtil.pow2(getOuterRadius())) / 2;
        }
+       
+       
  
  
        /**
index a7fdbcecb310a6adf5d72399e5399845f09ee466,0f19b43057a2596f1a9cad8ecff84f31a2640e98..ed543c12fe352eab0890e31d04817621afd87b05
@@@ -1,6 -1,10 +1,8 @@@
  package net.sf.openrocket.rocketcomponent;
  
 -import java.util.List;
 -
+ import net.sf.openrocket.l10n.Translator;
  import net.sf.openrocket.material.Material;
+ import net.sf.openrocket.startup.Application;
  import net.sf.openrocket.unit.UnitGroup;
  import net.sf.openrocket.util.Prefs;
  
@@@ -15,17 -17,22 +17,22 @@@ import java.util.List
   */
  
  public abstract class ExternalComponent extends RocketComponent {
 -      
 +
        public enum Finish {
-               ROUGH("Rough", 500e-6),
-               UNFINISHED("Unfinished", 150e-6),
-               NORMAL("Regular paint", 60e-6),
-               SMOOTH("Smooth paint", 20e-6),
-               POLISHED("Polished", 2e-6);
+               //// Rough
+               ROUGH("ExternalComponent.Rough", 500e-6),
+               //// Unfinished
+               UNFINISHED("ExternalComponent.Unfinished", 150e-6),
+               //// Regular paint
+               NORMAL("ExternalComponent.Regularpaint", 60e-6),
+               //// Smooth paint
+               SMOOTH("ExternalComponent.Smoothpaint", 20e-6),
+               //// Polished
+               POLISHED("ExternalComponent.Polished", 2e-6);
 -              
 +
                private final String name;
                private final double roughnessSize;
 -              
 +
                Finish(String name, double roughness) {
                        this.name = name;
                        this.roughnessSize = roughness;
                public double getRoughnessSize() {
                        return roughnessSize;
                }
 -              
 +
                @Override
                public String toString() {
-                       return name + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")";
+                       final Translator trans = Application.getTranslator();
+                       return trans.get(name) + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")";
                }
        }
 -      
 -      
 +
 +
        /**
         * The material of the component.
         */
index 792483d2618aa4cbd03c61e53b5cc2e7d0457728,cdbb7c3e607c833bab72f92c1440539314558933..ffa44be37b0bc04e1130afdaec234e064f007aa0
@@@ -9,13 -14,10 +14,10 @@@ import net.sf.openrocket.util.Coordinat
  
  public class FreeformFinSet extends FinSet {
        private static final LogHelper log = Application.getLogger();
+       private static final Translator trans = Application.getTranslator();
 -
++      
        private ArrayList<Coordinate> points = new ArrayList<Coordinate>();
+       
        public FreeformFinSet() {
                points.add(Coordinate.NUL);
                points.add(new Coordinate(0.025, 0.05));
                ((FreeformFinSet) c).points = this.points.clone();
                return c;
        }
-       private void validate(ArrayList<Coordinate> points) throws IllegalFinPointException {
-               final int n = points.size();
-               if (points.get(0).x != 0 || points.get(0).y != 0 ||
-                               points.get(n - 1).x < 0 || points.get(n - 1).y != 0) {
+       
 -      /**
 -       * Accept a visitor to this FreeformFinSet in the component hierarchy.
 -       * 
 -       * @param theVisitor  the visitor that will be called back with a reference to this FreeformFinSet
 -       */
 -      @Override
 -      public void accept(ComponentVisitor theVisitor) {
 -              theVisitor.visit(this);
 -      }
 -      
 -      private void validate(ArrayList<Coordinate> points) throws IllegalFinPointException {
 -              final int n = points.size();
 -              if (points.get(0).x != 0 || points.get(0).y != 0 ||
 -                              points.get(n - 1).x < 0 || points.get(n - 1).y != 0) {
++      private void validate(ArrayList<Coordinate> pts) throws IllegalFinPointException {
++              final int n = pts.size();
++              if (pts.get(0).x != 0 || pts.get(0).y != 0 ||
++                              pts.get(n - 1).x < 0 || pts.get(n - 1).y != 0) {
                        throw new IllegalFinPointException("Start or end point illegal.");
                }
                for (int i = 0; i < n - 1; i++) {
                        for (int j = i + 2; j < n - 1; j++) {
--                              if (intersects(points.get(i).x, points.get(i).y, points.get(i + 1).x, points.get(i + 1).y,
--                                                              points.get(j).x, points.get(j).y, points.get(j + 1).x, points.get(j + 1).y)) {
++                              if (intersects(pts.get(i).x, pts.get(i).y, pts.get(i + 1).x, pts.get(i + 1).y,
++                                                              pts.get(j).x, pts.get(j).y, pts.get(j + 1).x, pts.get(j + 1).y)) {
                                        throw new IllegalFinPointException("segments intersect");
                                }
                        }
--                      if (points.get(i).z != 0) {
++                      if (pts.get(i).z != 0) {
                                throw new IllegalFinPointException("z-coordinate not zero");
                        }
                }
index a4d5af4defb039245bd6f16e7bc265f1a613b544,448da1549f9ab032346030589b3d0b5459dec980..0b8c92d242fbca6150d342fdbdc29400408263cb
@@@ -1,14 -1,16 +1,16 @@@
  package net.sf.openrocket.rocketcomponent;
  
++import java.util.ArrayList;
++import java.util.HashMap;
++import java.util.List;
++
+ import net.sf.openrocket.l10n.Translator;
  import net.sf.openrocket.motor.Motor;
+ import net.sf.openrocket.startup.Application;
  import net.sf.openrocket.util.BugException;
  import net.sf.openrocket.util.Coordinate;
  import net.sf.openrocket.util.MathUtil;
  
--import java.util.ArrayList;
--import java.util.HashMap;
--import java.util.List;
--
  
  /**
   * This class defines an inner tube that can be used as a motor mount.  The component
@@@ -18,7 -20,8 +20,8 @@@
   */
  public class InnerTube extends ThicknessRingComponent
                implements Clusterable, RadialParent, MotorMount {
+       private static final Translator trans = Application.getTranslator();
 -
++      
        private ClusterConfiguration cluster = ClusterConfiguration.SINGLE;
        private double clusterScale = 1.0;
        private double clusterRotation = 0.0;
@@@ -81,6 -85,6 +85,7 @@@
         * Get the current cluster configuration.
         * @return  The current cluster configuration.
         */
++      @Override
        public ClusterConfiguration getClusterConfiguration() {
                return cluster;
        }
@@@ -89,6 -93,6 +94,7 @@@
         * Set the current cluster configuration.
         * @param cluster  The cluster configuration.
         */
++      @Override
        public void setClusterConfiguration(ClusterConfiguration cluster) {
                this.cluster = cluster;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
index 70f92a7f451df489fecc163ba5c905cd7c4ebb36,f61ce7ed6bb2275ea0961b48b119da1b7f45aad1..8a6b2751da247f3136f99fcf76714b716500884e
@@@ -10,15 -12,17 +12,17 @@@ import java.util.Collection
  
  public class LaunchLug extends ExternalComponent implements Coaxial {
  
+       private static final Translator trans = Application.getTranslator();
        private double radius;
        private double thickness;
 -      
 +
        private double radialDirection = 0;
 -      
 +
        /* These are calculated when the component is first attached to any Rocket */
        private double shiftY, shiftZ;
 -      
 -      
 +
 +
  
        public LaunchLug() {
                super(Position.MIDDLE);
        public Coordinate getComponentCG() {
                return new Coordinate(length / 2, 0, 0, getComponentMass());
        }
 -      
 +
        @Override
        public String getComponentName() {
-               return "Launch lug";
+               //// Launch lug
+               return trans.get("LaunchLug.Launchlug");
        }
 -      
 +
        @Override
        public double getLongitudinalUnitInertia() {
                // 1/12 * (3 * (r1^2 + r2^2) + h^2)
index 229fcbf5a93be462794f11d92f923d0313b35931,c271e2d442b6cd5044a24b298e35c6b082c97e7e..a4de3a9c8aeabcded7bc652c14c99b24539d0120
@@@ -8,31 -11,32 +11,32 @@@ import net.sf.openrocket.startup.Applic
   */
  
  public class NoseCone extends Transition {
+       private static final Translator trans = Application.getTranslator();
 -
++      
+       
        /********* Constructors **********/
        public NoseCone() {
--              this(Transition.Shape.OGIVE, 6*DEFAULT_RADIUS, DEFAULT_RADIUS);
++              this(Transition.Shape.OGIVE, 6 * DEFAULT_RADIUS, DEFAULT_RADIUS);
        }
+       
        public NoseCone(Transition.Shape type, double length, double radius) {
                super();
                super.setType(type);
                super.setForeRadiusAutomatic(false);
                super.setForeRadius(0);
                super.setForeShoulderLength(0);
--              super.setForeShoulderRadius(0.9*radius);
++              super.setForeShoulderRadius(0.9 * radius);
                super.setForeShoulderThickness(0);
                super.setForeShoulderCapped(filled);
                super.setThickness(0.002);
                super.setLength(length);
                super.setClipped(false);
+               
        }
+       
 -
++      
        /********** Get/set methods for component parameters **********/
--
++      
        @Override
        public double getForeRadius() {
                return 0;
@@@ -42,7 -46,7 +46,7 @@@
        public void setForeRadius(double r) {
                // No-op
        }
--
++      
        @Override
        public boolean isForeRadiusAutomatic() {
                return false;
        public void setForeRadiusAutomatic(boolean b) {
                // No-op
        }
--
++      
        @Override
        public double getForeShoulderLength() {
                return 0;
        }
--
++      
        @Override
        public double getForeShoulderRadius() {
                return 0;
        }
--
++      
        @Override
        public double getForeShoulderThickness() {
                return 0;
        }
--
++      
        @Override
        public boolean isForeShoulderCapped() {
                return false;
        }
--
++      
        @Override
        public void setForeShoulderCapped(boolean capped) {
                // No-op
        }
--
++      
        @Override
        public void setForeShoulderLength(double foreShoulderLength) {
                // No-op
        }
--
++      
        @Override
        public void setForeShoulderRadius(double foreShoulderRadius) {
                // No-op
        }
--
++      
        @Override
        public void setForeShoulderThickness(double foreShoulderThickness) {
                // No-op
        }
--
++      
        @Override
        public boolean isClipped() {
                return false;
        public void setClipped(boolean b) {
                // No-op
        }
+       
 -
+       
 -      /********** RocketComponent methods **********/
  
 +      /********** RocketComponent methods **********/
++      
        /**
         * Return component name.
         */
        @Override
        public String getComponentName() {
-               return "Nose cone";
+               //// Nose cone
+               return trans.get("NoseCone.NoseCone");
        }
 -    
 -    /**
 -     * Accept a visitor to this NoseCone in the component hierarchy.
 -     * 
 -     * @param theVisitor  the visitor that will be called back with a reference to this NoseCone
 -     */
 -    @Override
 -    public void accept(ComponentVisitor theVisitor) {
 -        theVisitor.visit(this);
 -    }
++      
  }
index 64c1f687c02e549644a981118aa7a5f193bfa45e,0be57cd16b6dcb88b3274d5f3ddd50a0937f010e..4115c87b6f43551e728d1877ff12544eedd604b1
@@@ -123,11 -135,11 +135,11 @@@ public class Rocket extends RocketCompo
                checkState();
                return this.getChildCount();
        }
+       
+       
        /**
         * Return the non-negative modification ID of this rocket.  The ID is changed
 -       * every time any change occurs in the rocket.  This can be used to check 
 +       * every time any change occurs in the rocket.  This can be used to check
         * whether it is necessary to void cached data in cases where listeners can not
         * or should not be used.
         * <p>
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
                return id;
        }
+       
        /**
         * Add a specified motor configuration ID to the motor configurations.
 -       * 
 +       *
         * @param id    the motor configuration ID.
         * @return              true if successful, false if the ID was already used.
         */
                motorConfigurationIDs.remove(id);
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
+       
+       
        /**
         * Check whether <code>id</code> is a valid motor configuration ID.
 -       * 
 +       *
         * @param id    the configuration ID.
         * @return              whether a motor configuration with that ID exists.
         */
                motorConfigurationNames.put(id, name);
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
+       
+       
        /**
 -       * Return either the motor configuration name (if set) or its description. 
 -       * 
 +       * Return either the motor configuration name (if set) or its description.
 +       *
         * @param id  the motor configuration ID.
         * @return    a textual representation of the configuration
         */
                name = getMotorConfigurationName(id);
                if (name != null && !name.equals(""))
                        return name;
+               
                return getMotorConfigurationDescription(id);
        }
+       
        /**
 -       * Return a description for the motor configuration, generated from the motor 
 +       * Return a description for the motor configuration, generated from the motor
         * designations of the components.
 -       * 
 +       *
         * @param id  the motor configuration ID.
         * @return    a textual representation of the configuration
         */
                                                motorCount++;
                                        }
                                }
+                               
                        }
                }
+               
                if (motorCount == 0) {
-                       return "[No motors]";
+                       //// [No motors]
+                       return trans.get("Rocket.motorCount.Nomotor");
                }
+               
 -              // Change multiple occurrences of a motor to n x motor 
 +              // Change multiple occurrences of a motor to n x motor
                List<String> stages = new ArrayList<String>();
+               
                for (List<String> stage : list) {
                        String stageName = "";
                        String previous = null;
        public boolean isCompatible(Class<? extends RocketComponent> type) {
                return (Stage.class.isAssignableFrom(type));
        }
+       
 -      /**
 -       * Accept a visitor to this Rocket in the component hierarchy.
 -       * 
 -       * @param theVisitor  the visitor that will be called back with a reference to this Rocket
 -       */
 -      @Override
 -      public void accept(final ComponentVisitor theVisitor) {
 -              theVisitor.visit(this);
 -      }
  }
index e109f6b389abdb4f0a57248e72a847d4938df140,b525a47d35e18dc16ebf77605fe23eb6697449e8..158c1b7d48c6910b8434f5bdd84167a99cab442e
@@@ -3,17 -14,21 +14,20 @@@ import net.sf.openrocket.l10n.Translato
  import net.sf.openrocket.logging.LogHelper;
  import net.sf.openrocket.startup.Application;
  import net.sf.openrocket.util.ArrayList;
- import net.sf.openrocket.util.*;
- import javax.swing.event.ChangeListener;
- import java.awt.*;
- import java.util.*;
- import java.util.List;
+ import net.sf.openrocket.util.BugException;
+ import net.sf.openrocket.util.ChangeSource;
+ import net.sf.openrocket.util.Coordinate;
+ import net.sf.openrocket.util.Invalidator;
+ import net.sf.openrocket.util.LineStyle;
+ import net.sf.openrocket.util.MathUtil;
+ import net.sf.openrocket.util.SafetyMutex;
+ import net.sf.openrocket.util.UniqueID;
  
  
 -public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable<RocketComponent>,
 -              Visitable<ComponentVisitor, RocketComponent> {
 +public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable<RocketComponent> {
        private static final LogHelper log = Application.getLogger();
+       private static final Translator trans = Application.getTranslator();
 -
++      
        /*
         * Text is suitable to the form
         *    Position relative to:  <title>
         * Return the component CG and mass (regardless of CG or mass overriding).
         */
        public abstract Coordinate getComponentCG(); // CG of non-overridden component
+       
  
        /**
 -       * Return the longitudinal (around the y- or z-axis) unitary moment of inertia.  
 +       * Return the longitudinal (around the y- or z-axis) unitary moment of inertia.
         * The unitary moment of inertia is the moment of inertia with the assumption that
         * the mass of the component is one kilogram.  The inertia is measured in
         * respect to the non-overridden CG.
         * @return   the longitudinal unitary moment of inertia of this component.
         */
        public abstract double getLongitudinalUnitInertia();
+       
+       
        /**
 -       * Return the rotational (around the x-axis) unitary moment of inertia.  
 +       * Return the rotational (around the x-axis) unitary moment of inertia.
         * The unitary moment of inertia is the moment of inertia with the assumption that
         * the mass of the component is one kilogram.  The inertia is measured in
         * respect to the non-overridden CG.
                checkState();
                return c;
        }
+       
+       
        /**
 -       * Called when any component in the tree fires a ComponentChangeEvent.  This is by 
 -       * default a no-op, but subclasses may override this method to e.g. invalidate 
 -       * cached data.  The overriding method *must* call 
 +       * Called when any component in the tree fires a ComponentChangeEvent.  This is by
 +       * default a no-op, but subclasses may override this method to e.g. invalidate
 +       * cached data.  The overriding method *must* call
         * <code>super.componentChanged(e)</code> at some point.
 -       * 
 +       *
         * @param e  The event fired
         */
        protected void componentChanged(ComponentChangeEvent e) {
                        mutex.unlock("copyWithOriginalID");
                }
        }
+       
+       
 -      /**
 -       * Accept a visitor to this RocketComponent in the component hierarchy.
 -       * 
 -       * @param theVisitor  the visitor that will be called back with a reference to this RocketComponent
 -       */
 -      @Override
 -      public void accept(final ComponentVisitor theVisitor) {
 -              theVisitor.visit(this);
 -      }
 -      
        //////////////  Methods that may not be overridden  ////////////
+       
  
  
        ////////// Common parameter setting/getting //////////
                mutex.verify();
                return color;
        }
+       
        /**
 -       * Set the color of the object to use in 2D figures.  
 +       * Set the color of the object to use in 2D figures.
         */
        public final void setColor(Color c) {
                if ((color == null && c == null) ||
                mutex.verify();
                return massOverriden;
        }
+       
        /**
         * Set whether the mass is currently overridden.
 -       * 
 +       *
         * @param o  whether the mass is overridden
         */
        public final void setMassOverridden(boolean o) {
                mutex.verify();
                return getComponentCG().setX(overrideCGX);
        }
+       
        /**
         * Return the x-coordinate of the current override CG.
 -       * 
 +       *
         * @return      the x-coordinate of the override CG.
         */
        public final double getOverrideCGX() {
                mutex.verify();
                return overrideCGX;
        }
+       
        /**
         * Set the current override CG to (x,0,0).
 -       * 
 +       *
         * @param x  the x-coordinate of the override CG to set.
         */
        public final void setOverrideCGX(double x) {
                else
                        fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
+       
        /**
         * Return whether the CG is currently overridden.
 -       * 
 +       *
         * @return  whether the CG is overridden
         */
        public final boolean isCGOverridden() {
                mutex.verify();
                return cgOverriden;
        }
+       
        /**
         * Set whether the CG is currently overridden.
 -       * 
 +       *
         * @param o  whether the CG is overridden
         */
        public final void setCGOverridden(boolean o) {
                mutex.verify();
                return comment;
        }
+       
        /**
         * Set the comment of the component.
 -       * 
 +       *
         * @param comment  the comment of the component.
         */
        public final void setComment(String comment) {
                checkState();
                return toRelative(c, null);
        }
+       
+       
        /**
 -       * Return coordinate <code>c</code> described in the coordinate system of 
 +       * Return coordinate <code>c</code> described in the coordinate system of
         * <code>dest</code>.  If <code>dest</code> is <code>null</code> returns
         * absolute coordinates.
         * <p>
                                        array[i] = array[i].setX(absoluteX + c.x);
                                }
                        }
+                       
                        // Check whether destination has been found or whether to backtrack
 -                      // TODO: LOW: Backtracking into clustered components uses only one component 
 +                      // TODO: LOW: Backtracking into clustered components uses only one component
                        if ((dest != null) && (component != dest)) {
                                Coordinate[] origin = dest.toAbsolute(Coordinate.NUL);
                                for (int i = 0; i < array.length; i++) {
                        mutex.unlock("toRelative");
                }
        }
+       
+       
        /**
 -       * Recursively sum the lengths of all subcomponents that have position 
 +       * Recursively sum the lengths of all subcomponents that have position
         * Position.AFTER.
 -       * 
 +       *
         * @return  Sum of the lengths.
         */
        private final double getTotalLength() {
                        mutex.unlock("getTotalLength");
                }
        }
+       
+       
  
        /////////// Total mass and CG calculation ////////////
+       
        /**
         * Return the (possibly overridden) mass of component.
 -       * 
 +       *
         * @return The mass of the component or the given override mass.
         */
        public final double getMass() {
                        return overrideMass;
                return getComponentMass();
        }
+       
        /**
         * Return the (possibly overridden) center of gravity and mass.
 -       * 
 +       *
         * Returns the CG with the weight of the coordinate set to the weight of the component.
         * Both CG and mass may be separately overridden.
 -       * 
 +       *
         * @return The CG of the component or the given override CG.
         */
        public final Coordinate getCG() {
                checkState();
                addChild(component, children.size());
        }
+       
+       
        /**
 -       * Adds a child to the rocket component tree.  The component is added to 
 +       * Adds a child to the rocket component tree.  The component is added to
         * the given position of the component's child list.
         * <p>
 -       * This method may be overridden to enforce more strict component addition rules.  
 +       * This method may be overridden to enforce more strict component addition rules.
         * The tests should be performed first and then this method called.
 -       * 
 +       *
         * @param component     The component to add.
         * @param index         Position to add component to.
 -       * @throws IllegalArgumentException  If the component is already part of 
 +       * @throws IllegalArgumentException  If the component is already part of
         *                                                                       some component tree.
         */
        public void addChild(RocketComponent component, int index) {
                        throw new IllegalStateException("Component " + component.getComponentName() +
                                        " not currently compatible with component " + getComponentName());
                }
+               
                children.add(index, component);
                component.parent = this;
+               
                this.checkComponentStructure();
                component.checkComponentStructure();
+               
                fireAddRemoveEvent(component);
        }
+       
+       
        /**
         * Removes a child from the rocket component tree.
 -       * 
 +       *
         * @param n  remove the n'th child.
         * @throws IndexOutOfBoundsException  if n is out of bounds
         */
                checkState();
                return parent;
        }
+       
        /**
         * Get the root component of the component tree.
 -       * 
 +       *
         * @return  The root component of the component tree.
         */
        public final RocketComponent getRoot() {
                        gp = gp.parent;
                return gp;
        }
+       
        /**
 -       * Returns the root Rocket component of this component tree.  Throws an 
 +       * Returns the root Rocket component of this component tree.  Throws an
         * IllegalStateException if the root component is not a Rocket.
 -       * 
 +       *
         * @return  The root Rocket component of the component tree.
         * @throws  IllegalStateException  If the root component is not a Rocket.
         */
                        getRoot().removeComponentChangeListener(l);
                }
        }
+       
+       
        /**
 -       * Adds a <code>ChangeListener</code> to the rocket tree.  This is identical to 
 -       * <code>addComponentChangeListener()</code> except that it uses a 
 +       * Adds a <code>ChangeListener</code> to the rocket tree.  This is identical to
 +       * <code>addComponentChangeListener()</code> except that it uses a
         * <code>ChangeListener</code>.  The same events are dispatched to the
 -       * <code>ChangeListener</code>, as <code>ComponentChangeEvent</code> is a subclass 
 +       * <code>ChangeListener</code>, as <code>ComponentChangeEvent</code> is a subclass
         * of <code>ChangeEvent</code>.
 -       * 
 +       *
         * @throws IllegalStateException - if the root component is not a <code>Rocket</code>
         */
        @Override
                        getRoot().removeChangeListener(l);
                }
        }
+       
+       
        /**
 -       * Fires a ComponentChangeEvent on the rocket structure.  The call is passed to the 
 +       * Fires a ComponentChangeEvent on the rocket structure.  The call is passed to the
         * root component, which must be of type Rocket (which overrides this method).
         * Events of all subcomponents are sent to all listeners.
 -       * 
 -       * If the component tree root is not a Rocket, the event is ignored.  This is the 
 -       * case when constructing components not in any Rocket tree.  In this case it 
 +       *
 +       * If the component tree root is not a Rocket, the event is ignored.  This is the
 +       * case when constructing components not in any Rocket tree.  In this case it
         * would be impossible for the component to have listeners in any case.
 -       *  
 +       *
         * @param e  Event to send
         */
        protected void fireComponentChangeEvent(ComponentChangeEvent e) {
        protected void invalidate() {
                invalidator.invalidate();
        }
+       
+       
        //////////  Iterator implementation  ///////////
+       
        /**
         * Private inner class to implement the Iterator.
 -       * 
 +       *
         * This iterator is fail-fast if the root of the structure is a Rocket.
         */
        private static class RocketComponentIterator implements Iterator<RocketComponent> {
index 5acbe85439791e0b8687e7c73ce32b69ca57b452,b984a2a5861f8de9d4c9394d29615641b200d77f..f5079bfe649d8935eadad95137e4c8ea5a045885
@@@ -1,13 -1,19 +1,19 @@@
  package net.sf.openrocket.rocketcomponent;
  
+ import net.sf.openrocket.l10n.Translator;
+ import net.sf.openrocket.startup.Application;
  public class Stage extends ComponentAssembly {
 -      
 +
+       private static final Translator trans = Application.getTranslator();
      @Override
      public String getComponentName () {
-         return "Stage";
+       //// Stage
+         return trans.get("Stage.Stage");
      }
 -      
 -      
 +
 +
        @Override
        public boolean allowsChildren() {
                return true;
index 0daa5f7f185bc481cc6da67179cfbfe2b1f997bc,098183596bd976a0c0eb0552fc4ca5fd06c17a0c..1c2adb36cbdb1ccb8e9a7aa38d8ce123dd3bf294
@@@ -1,21 -1,23 +1,20 @@@
  package net.sf.openrocket.rocketcomponent;
  
- import net.sf.openrocket.util.Coordinate;
- import net.sf.openrocket.util.MathUtil;
++import static java.lang.Math.*;
++import static net.sf.openrocket.util.MathUtil.*;
 +
 +import java.util.Collection;
 +
- import static java.lang.Math.sin;
- import static java.lang.Math.sqrt;
- import static net.sf.openrocket.util.Chars.FRAC12;
- import static net.sf.openrocket.util.Chars.FRAC34;
- import static net.sf.openrocket.util.MathUtil.pow2;
- import static net.sf.openrocket.util.MathUtil.pow3;
+ import net.sf.openrocket.l10n.Translator;
+ import net.sf.openrocket.startup.Application;
+ import net.sf.openrocket.util.Coordinate;
+ import net.sf.openrocket.util.MathUtil;
  
 -import java.util.Collection;
 -
 -import static java.lang.Math.sin;
 -import static java.lang.Math.sqrt;
 -import static net.sf.openrocket.util.Chars.FRAC12;
 -import static net.sf.openrocket.util.Chars.FRAC34;
 -import static net.sf.openrocket.util.MathUtil.pow2;
 -import static net.sf.openrocket.util.MathUtil.pow3;
 -
  
  public class Transition extends SymmetricComponent {
++      private static final Translator trans = Application.getTranslator();
        private static final double CLIP_PRECISION = 0.0001;
+       
  
        private Shape type;
        private double shapeParameter;
@@@ -33,7 -35,7 +32,7 @@@
        private double aftShoulderThickness;
        private double aftShoulderLength;
        private boolean aftShoulderCapped;
 -      private static final Translator trans = Application.getTranslator();
++      
  
        // Used to cache the clip length
        private double clipLength = -1;
                super.componentChanged(e);
                clipLength = -1;
        }
+       
 -    /**
 -     * Accept a visitor to this Transition in the component hierarchy.
 -     * 
 -     * @param theVisitor  the visitor that will be called back with a reference to this Transition
 -     */
 -    @Override 
 -    public void accept (final ComponentVisitor theVisitor) {
 -        theVisitor.visit(this);
 -    }
 -      
        /**
         * Check whether the given type can be added to this component.  Transitions allow any
         * InternalComponents to be added.
 -       * 
 -       * @param type  The RocketComponent class type to add.
 +       *
-        * @param type  The RocketComponent class type to add.
++       * @param ctype  The RocketComponent class type to add.
         * @return      Whether such a component can be added.
         */
        @Override
--      public boolean isCompatible(Class<? extends RocketComponent> type) {
--              if (InternalComponent.class.isAssignableFrom(type))
++      public boolean isCompatible(Class<? extends RocketComponent> ctype) {
++              if (InternalComponent.class.isAssignableFrom(ctype))
                        return true;
                return false;
        }
                                return sqrt(2 * radius * x - x * x); // radius/length * sphere
                        }
                },
-               POWER("Power series",
-                               "A power series nose cone has a profile of " +
-                                               "<i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)" +
-                                               "<sup><i>k</i></sup> " +
-                                               "where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 this is a " +
-                                               "<b>" + FRAC12 + "-power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a " +
-                                               "<b>" + FRAC34 + "-power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.",
-                               "A power series transition has a profile of " +
-                                               "<i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)" +
-                                               "<sup><i>k</i></sup> " +
-                                               "where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 the transition is " +
-                                               "<b>" + FRAC12 + "-power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a " +
-                                               "<b>" + FRAC34 + "-power</b>, and for <i>k</i>=1 <b>conical</b>.", true) {
++              
+               //// Power series
+               POWER(trans.get("Shape.Powerseries"),
 -                              //// A power series nose cone has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 this is a <b>
 -                              trans.get("Shape.Powerseries.descA1") + FRAC12 + 
 -                              //// -power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a <b>
 -                              trans.get("Shape.Powerseries.descA2") + FRAC34 + 
 -                              //// -power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.
 -                              trans.get("Shape.Powerseries.descA3"),
 -                              //// A power series transition has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 the transition is <b>
 -                              trans.get("Shape.Powerseries.descB1") + FRAC12 + 
 -                                              //// -power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a <b>
 -                              trans.get("Shape.Powerseries.descB2") + FRAC34 + 
 -                                              //// -power</b>, and for <i>k</i>=1 <b>conical</b>.
 -                              trans.get("Shape.Powerseries.descB3"), true) {
++                              trans.get("Shape.Powerseries.desc1"),
++                              trans.get("Shape.Powerseries.desc2"), true) {
                        @Override
                        public boolean usesParameter() { // Range 0...1
                                return true;
                                }
                                return radius * Math.pow(x / length, param);
                        }
+                       
                },
-               PARABOLIC("Parabolic series",
-                               "A parabolic series nose cone has a profile of a parabola.  The shape " +
-                                               "parameter defines the segment of the parabola to utilize.  The shape " +
-                                               "parameter 1.0 produces a <b>full parabola</b> which is tangent to the body " +
-                                               "tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a " +
-                                               "<b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.",
-                               "A parabolic series transition has a profile of a parabola.  The shape " +
-                                               "parameter defines the segment of the parabola to utilize.  The shape " +
-                                               "parameter 1.0 produces a <b>full parabola</b> which is tangent to the body " +
-                                               "tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a " +
-                                               "<b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.") {
++              
+               //// Parabolic series
+               PARABOLIC(trans.get("Shape.Parabolicseries"),
+                               ////A parabolic series nose cone has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.
+                               trans.get("Shape.Parabolicseries.desc1"),
+                               ////A parabolic series transition has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.
+                               trans.get("Shape.Parabolicseries.desc2")) {
+                       
                        // In principle a parabolic transition is clippable, but the difference is
                        // negligible.
 -              
++                      
                        @Override
                        public boolean usesParameter() { // Range 0...1
                                return true;
                                return radius * ((2 * x / length - param * pow2(x / length)) / (2 - param));
                        }
                },
-               HAACK("Haack series",
-                               "The Haack series nose cones are designed to minimize drag.  The shape parameter " +
-                                               "0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes " +
-                                               "drag for fixed length and diameter, while a value of 0.333 produces an " +
-                                               "<b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.",
-                               "The Haack series <i>nose cones</i> are designed to minimize drag.  " +
-                                               "These transition shapes are their equivalents, but do not necessarily produce " +
-                                               "optimal drag for transitions.  " +
-                                               "The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, " +
-                                               "while a value of 0.333 produces an <b>LV-Haack</b> shape.", true) {
+               
 -
+               //// Haack series
+               HAACK(trans.get("Shape.Haackseries"),
+                               //// The Haack series nose cones are designed to minimize drag.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an <b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.
+                               trans.get("Shape.Haackseries.desc1"),
+                               //// The Haack series <i>nose cones</i> are designed to minimize drag.  These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, while a value of 0.333 produces an <b>LV-Haack</b> shape.            
+                               trans.get("Shape.Haackseries.desc2"), true) {
++                      
                        @Override
                        public boolean usesParameter() {
                                return true;
index 9c3076a3301474d5c7509b00a00e641997356ff3,fb276a7c03349248e532b3a71357e1b94b6676d4..288726b1fd38c344405f0d09fe4a274074d260b2
@@@ -163,7 -167,17 +167,8 @@@ public class TrapezoidFinSet extends Fi
  
        @Override
        public String getComponentName() {
-               return "Trapezoidal fin set";
+               //// Trapezoidal fin set
+               return trans.get("TrapezoidFinSet.TrapezoidFinSet");
        }
  
 -    /**
 -     * Accept a visitor to this TrapezoidFinSet in the component hierarchy.
 -     * 
 -     * @param theVisitor  the visitor that will be called back with a reference to this TrapezoidFinSet
 -     */    
 -    @Override
 -    public void accept(ComponentVisitor theVisitor) {
 -        theVisitor.visit(this);
 -    }
  }
index 78d2941a7c3fa777c40ba57b983373a68d4a4e2a,020d714e57abb13c7f48c5554d320520e72b637f..bb8b20f771c452493804f23888207acc372cf4b6
@@@ -20,7 -18,7 +20,7 @@@ public final class Application 
        private static LogHelper logger;
        private static LogLevelBufferLogger logBuffer;
        
-       private static Translator baseTranslator = new DebugTranslator();
 -      private static Translator translator = new DebugTranslator();
++      private static Translator baseTranslator = new DebugTranslator(null);
        
        private static ThrustCurveMotorSetDatabase motorSetDatabase;
        
index f1c4aa4d4e124196425fc216a9acd2c53d9e6255,802bdcc737673171c6ee9188715f05cffbf299b3..f4141f9b057746b22d928ce85da1bb0376cbd05b
@@@ -139,10 -138,10 +139,9 @@@ public class Startup 
                }
                
                Translator t;
++              t = new ResourceBundleTranslator("l10n.messages");
                if (Locale.getDefault().getLanguage().equals("xx")) {
--                      t = new DebugTranslator();
--              } else {
--                      t = new ResourceBundleTranslator("l10n.messages");
++                      t = new DebugTranslator(t);
                }
                
                log.info("Set up translation for locale " + Locale.getDefault() +
index 9cd9e7abf8bb06d72fee8f4cd44fa72b3425882a,215389ab4d1d37109098a133f7a4f83be41582eb..047db50c7ae3c1a65599be088552aacb9a87168b
@@@ -22,7 -22,7 +22,8 @@@ import net.sf.openrocket.arch.SystemInf
  import net.sf.openrocket.database.Databases;
  import net.sf.openrocket.document.Simulation;
  import net.sf.openrocket.gui.main.ExceptionHandler;
 +import net.sf.openrocket.gui.print.PrintSettings;
+ import net.sf.openrocket.l10n.Translator;
  import net.sf.openrocket.logging.LogHelper;
  import net.sf.openrocket.material.Material;
  import net.sf.openrocket.rocketcomponent.BodyComponent;
@@@ -199,13 -199,18 +200,18 @@@ public class Prefs 
         * Within a holder class so they will load only when needed.
         */
        private static class DefaultMaterialHolder {
 -
+               private static final Translator trans = Application.getTranslator();
++              
+               //// Elastic cord (round 2mm, 1/16 in)
                private static final Material DEFAULT_LINE_MATERIAL =
-                               Databases.findMaterial(Material.Type.LINE, "Elastic cord (round 2mm, 1/16 in)",
+                               Databases.findMaterial(Material.Type.LINE, trans.get("Databases.materials.Elasticcordround2mm"),
                                                0.0018, false);
+               //// Ripstop nylon
                private static final Material DEFAULT_SURFACE_MATERIAL =
-                               Databases.findMaterial(Material.Type.SURFACE, "Ripstop nylon", 0.067, false);
+                               Databases.findMaterial(Material.Type.SURFACE, trans.get("Databases.materials.Ripstopnylon"), 0.067, false);
+               //// Cardboard
                private static final Material DEFAULT_BULK_MATERIAL =
-                               Databases.findMaterial(Material.Type.BULK, "Cardboard", 680, false);
+                               Databases.findMaterial(Material.Type.BULK, trans.get("Databases.materials.Cardboard"), 680, false);
        }
        
        //////////////////////