From: plaa Date: Sat, 18 Jun 2011 20:53:40 +0000 (+0000) Subject: Merged l10n branch to trunk X-Git-Tag: upstream/1.1.6^2~13 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=8e4a8571c20ba96164ddd8a68226d43ccd549d21;p=debian%2Fopenrocket Merged l10n branch to trunk git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@130 180e2498-e6e9-4542-8430-84ac67f01cd8 --- 8e4a8571c20ba96164ddd8a68226d43ccd549d21 diff --cc l10n/messages.properties index 9defd41b,65b4003e..fcabdad2 --- a/l10n/messages.properties +++ b/l10n/messages.properties @@@ -13,6 -78,793 +78,815 @@@ button.ok = O button.cancel = Cancel button.close = Close + ! 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 -about.dlg.but.close = Close -about.dlg.lbl.translation = -about.dlg.lbl.transwebsite = ++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 = If connected to the Internet, you can simply click Send bug report. + 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 = You can report a bug in OpenRocket by filling in and submitting the form below.
You can also report bugs and include attachments on the project web site. + bugreport.reportDialog.txt2 = Please include a short description about what you were doing when the exception occurred. + + + ! 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 = Motor mounts: + edtmotorconfdlg.title.Editmotorconf = Edit motor configurations + edtmotorconfdlg.selectcomp = Select which components function as motor mounts: + edtmotorconfdlg.lbl.Motorconfig = Motor configurations: + 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 + -! Print panel dialog -printdlg.but.saveaspdf = Save as PDF -printdlg.but.preview = Preview -printdlg.but.settings = Settings + + ! 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 = Editing materials will not affect existing rocket designs. + + !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 = The standard deviation of the windspeed.
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 = The turbulence intensity is the standard deviation divided by the average windspeed.
+ 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 = Select to use the International Standard Atmosphere model.
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 = The launch site latitude affects the gravitational pull of Earth.
Positive values are on the Northern hemisphere, negative values on the Southern hemisphere. + simedtdlg.lbl.Altitude = Altitude: + simedtdlg.lbl.ttip.Altitude = The launch altitude above mean sea level.
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 = Direction of the launch rod relative to the wind.
+ 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 = The Extended Barrowman method calculates aerodynamic forces according
to the Barrowman equations extended to accommodate more components. + simedtdlg.lbl.ExtBarrowman = Extended Barrowman + simedtdlg.lbl.Simmethod = Simulation method: + simedtdlg.lbl.ttip.Simmethod1 = The six degree-of-freedom simulator allows the rocket total freedom during flight.
+ simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4th order Runge-Kutta 4 numerical integration. + simedtdlg.lbl.Timestep = Time step: + simedtdlg.lbl.ttip.Timestep1 = The time between simulation steps.
A smaller time step results in a more accurate but slower simulation.
+ simedtdlg.lbl.ttip.Timestep2 = The 4th 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 = Simulation listeners 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 = This operation cannot be undone. + 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 = The string used to separate the fields in the exported file.
+ 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 = Pressure CD + componentanalysisdlg.dragTableModel.Col.Base = Base CD + componentanalysisdlg.dragTableModel.Col.friction = Friction CD + componentanalysisdlg.dragTableModel.Col.total = Total CD + 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 = Total Cl + 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 = An engine block stops the motor from moving forwards in the motor mount tube.

In order to add a motor, create a body tube or inner tube and mark it as a motor mount in the Motor 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 = The component finish affects the aerodynamic drag of the component.
+ 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 = The overridden mass does not include motors.
+ 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 = Split the cluster into separate components.
+ 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 = Drag coefficient CD: + ParachuteCfg.lbl.longB1 = The drag coefficient relative to the total area of the parachute.
+ 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 = Drag coefficient CD: + StreamerCfg.lbl.longB1 = The drag coefficient relative to the total area of the streamer.
+ 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 = Store all simulated data.
+ StorageOptChooser.lbl.longA2 = This can result in very large files! + StorageOptChooser.rdbut.Every = Every + StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
+ StorageOptChooser.lbl.longB2 = Larger values result in smaller files. + StorageOptChooser.lbl.seconds = seconds + StorageOptChooser.rdbut.Onlyprimfig = Only primary figures + StorageOptChooser.lbl.longC1 = Store only the values shown in the summary table.
+ 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 tangent ogive, which has a smooth transition to the body tube, values less than 1 produce secant ogives. + Shape.Ogive.desc2 = An ogive transition has a profile that is a segment of a circle. The shape parameter value 1 produces a tangent ogive, which has a smooth transition to the body tube at the aft end, values less than 1 produce secant ogives. + Shape.Ellipsoid = Ellipsoid + Shape.Ellipsoid.desc1 = An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. + Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. 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 Radius × (x / Length)k where k is the shape parameter. For k=0.5 this is a -Shape.Powerseries.descA2 = -power or parabolic nose cone, for k=0.75 a -Shape.Powerseries.descA3 = -power, and for k=1 a conical nose cone. -Shape.Powerseries.descB1 = A power series transition has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 the transition is -Shape.Powerseries.descB2 = -power or parabolic, for k=0.75 a -Shape.Powerseries.descB3 = -power, and for k=1 conical. ++Shape.Powerseries.desc1 = A power series nose cone has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 this is a \u00BD-power or parabolic nose cone, for k=0.75 a \u00BE-power, and for k=1 a conical nose cone. ++Shape.Powerseries.desc2 = A power series transition has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 the transition is \u00BD-power or parabolic, for k=0.75 a \u00BE-power, and for k=1 conical. + 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 full parabola which is tangent to the body tube, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical 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 full parabola which is tangent to the body tube at the aft end, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical transition. + Shape.Haackseries = Haack series + Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag. The shape parameter 0 produces an LD-Haack or Von Karman nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an LV-Haack nose cone, which minimizes drag for fixed length and volume. + Shape.Haackseries.desc2 = The Haack series nose cones 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 LD-Haack or Von Karman shape, while a value of 0.333 produces an LV-Haack 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. diff --cc l10n/messages_de.properties index 00000000,9731785f..bd51927f mode 000000,100644..100644 --- a/l10n/messages_de.properties +++ b/l10n/messages_de.properties @@@ -1,0 -1,1171 +1,1171 @@@ + ! Set to the name of the current translation file (used for debugging purposes) + debug.currentFile = messages_de.properties + + ! RocketActions + RocketActions.checkbox.Donotaskmeagain = Nicht wieder fragen + RocketActions.lbl.Youcanchangedefop = Die Standardaktion kann in den Einstellungen geändert werden. + RocketActions.showConfirmDialog.lbl1 = Simulationen löschen? + RocketActions.showConfirmDialog.lbl2 = Diese Aktion kann nicht rückgängig gemacht werden. + RocketActions.showConfirmDialog.title = Simulationen löschen + RocketActions.DelCompAct.Delete = Löschen + RocketActions.DelCompAct.ttip.Delete = Die ausgewählte Komponente löschen. + RocketActions.DelSimuAct.Delete = Löschen + RocketActions.DelSimuAct.ttip.Delete = Die ausgewählte Simulation löschen. + RocketActions.DelAct.Delete = Löschen + RocketActions.DelAct.ttip.Delete = Die ausgewählte Komponente oder Simulation löschen. + RocketActions.CutAction.Cut = Ausschneiden + RocketActions.CutAction.ttip.Cut = Diese Komponente oder Simulation ausschneiden und aus dem Design entfernen + RocketActions.CopyAct.Copy = Kopieren + RocketActions.CopyAct.ttip.Copy = Komponente (und Subkomponenten) in die Zwischenablage kopieren. + RocketActions.PasteAct.Paste = Einfügen + RocketActions.PasteAct.ttip.Paste = Fügt die Komponente oder Simulation aus der Zwischenablage in das Design ein. + RocketActions.EditAct.Edit = Bearbeiten + RocketActions.EditAct.ttip.Edit = Die ausgewählte Komponente bearbeiten. + RocketActions.NewStageAct.Newstage = Neue Stufe + RocketActions.NewStageAct.ttip.Newstage = Fügt eine neue Stufe in das Raketendesign ein. + RocketActions.ActBoosterstage = Booster-Stufe + RocketActions.MoveUpAct.Moveup = Nach oben verschieben + RocketActions.MoveUpAct.ttip.Moveup = Verschiebt diese Komponente nach oben. + RocketActions.MoveDownAct.Movedown = Nach unten verschieben + RocketActions.MoveDownAct.ttip.Movedown = Verschiebt diese Komponente nach unten. + + ! RocketPanel + RocketPanel.FigTypeAct.Sideview = Seitenansicht + RocketPanel.FigTypeAct.ttip.Sideview = Seitenansicht + RocketPanel.FigTypeAct.Backview = Rückansicht + RocketPanel.FigTypeAct.ttip.Backview = Vorderansicht + RocketPanel.lbl.Motorcfg = Motorkonfiguration + RocketPanel.lbl.infoMessage = Zum Auswählen klicken   Shift+Klick andere auswählen    Doppelklick zum Bearbeiten    Klicken+Ziehen zum Verschieben + + + ! BasicFrame + BasicFrame.SimpleFileFilter1 = Alle Raketendesigns (*.ork; *.rkt) + BasicFrame.SimpleFileFilter2 = OpenRocket Designs (*.ork) + BasicFrame.SimpleFileFilter3 = RockSim Designs (*.rkt) + BasicFrame.tab.Rocketdesign = Raketendesign + BasicFrame.tab.Flightsim = Flugsimulation + BasicFrame.title.Addnewcomp = Neue Komponente hinzufügen + BasicFrame.item.Openrocketdesign = Raketendesign öffnen + BasicFrame.item.Openexamplerocketdesign = Beispieldesign öffnen + BasicFrame.item.SavecurRocketdesign = Aktuelles Raketendesign speichern + BasicFrame.item.SavecurRocketdesnewfile = Aktuelles Raketendesign in eine neue Datei speichern + BasicFrame.item.Printpart = Komponentenliste und Leitwerkschablone drucken + BasicFrame.item.Closedesign = Aktuelles Raketendesign schließen + BasicFrame.item.Quitprogram = Programm beenden + BasicFrame.menu.Rocketedt = Rakete bearbeiten + BasicFrame.dlg.lbl1 = Design ' + BasicFrame.dlg.lbl2 = ist nicht gespeichert. + BasicFrame.dlg.lbl3 = Möchten Sie es speichern? + BasicFrame.dlg.title = Design nicht gespeichert + BasicFrame.StageName.Sustainer = Sustainer + BasicFrame.WarningDialog.txt1 = Die folgenden Probleme würden beim Öffnen festgestellt + BasicFrame.WarningDialog.txt2 = Einige Designeigenschaften wurde eventuell nicht korrekt geladen. + BasicFrame.WarningDialog.title = Warnungen während des Öffnens der Datei + + ! Labels used in buttons of dialog windows + button.ok = OK + button.cancel = Abbrechen + button.close = Schließen + + ! Common labels used in buttons of dialog windows + dlg.but.ok = OK + dlg.but.cancel = Abbrechen + dlg.but.close = Schließen + + ! About Dialog + about.dlg.but.close = Schließen + about.dlg.lbl.translation = Ins Deutsche übersetzt von Stefan Lobas (ERIG e.V.) + about.dlg.lbl.transwebsite = http://www.er-ig.de/ + + ! Bug Report dialog + bugreport.dlg.title = Fehlerbericht + bugreport.dlg.but.Sendbugreport = Fehlerbericht senden + bugreport.dlg.but.Sendbugreport.Ttip = Automatische einen Fehlerbericht an die OpenRocket-Entwickler senden. + bugreport.dlg.successmsg1 = Fehlerbericht erfolgreich gesendet. + bugreport.dlg.successmsg2 = Danke für die Hilfe, OpenRocket noch besser zu machen! + bugreport.dlg.successmsg3 = Fehlerbericht gesendet + bugreport.dlg.connectedInternet = Wenn Sie mit dem Internet verbunden sind, können Sie einfach auf Fehlerbericht senden klicken. + bugreport.dlg.otherwise = Sonst senden Sie den den folgenden Text an diese Adresse: + 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! + bugreport.dlg.failedmsg1 = OpenRocket konnte den Fehlerbericht nicht versenden: + bugreport.dlg.failedmsg2 = Bitte senden Sie den Bericht manuell an + bugreport.dlg.failedmsg3 = Fehler beim Versenden des Berichts + bugreport.reportDialog.txt = Sie können eine Fehler in OpenRocket mitteilen, indem Sie das unten stehende Formular ausfüllen und abschicken.
Sie können Fehler mit angehängten Dateien auch auf der Projekt-Website mitteilen. + bugreport.reportDialog.txt2 = Bitte beschreiben Sie kurz, was Sie getan haben, als der Fehler auftrat. + + + ! Debug log dialog + debuglogdlg.but.clear = Löschen + debuglogdlg.OpenRocketdebuglog = OpenRocket Fehler-Log + debuglogdlg.Displayloglines = Zeige Log-Zeilen: + debuglogdlg.Follow = Folgen + debuglogdlg.col.Time = Zeit + debuglogdlg.col.Level = Level + debuglogdlg.col.Location = Ort + debuglogdlg.col.Message = Nachricht + debuglogdlg.lbl.Loglinenbr = Log-Zeilennummer + debuglogdlg.lbl.Time = Zeit: + debuglogdlg.lbl.Level = Level: + + + ! Edit Motor configuration dialog + edtmotorconfdlg.but.removemotor = Motor entfernen + edtmotorconfdlg.but.Selectmotor = Motor auswählen + edtmotorconfdlg.but.Removeconfiguration = Konfiguration entfernen + edtmotorconfdlg.but.Newconfiguration = Neue Konfiguration + edtmotorconfdlg.lbl.Motormounts = Motorhalterungen: + edtmotorconfdlg.title.Editmotorconf = Motorkonfiguration bearbeiten + edtmotorconfdlg.selectcomp = Auswählen, welche Komponenten Motorhalterungen sind: + edtmotorconfdlg.lbl.Motorconfig = Motorkonfigurationen: + edtmotorconfdlg.lbl.Configname = Name der Konfiguration: + edtmotorconfdlg.lbl.Leavenamedefault = Leer lassen für Standardwert. + + ! Example design dialog + exdesigndlg.but.open = Öffnen + exdesigndlg.lbl.Selectexample = Beispieldesigns zum Öffnen auswählen: + exdesigndlg.lbl.Openexampledesign = Beispieldesign öffnen + exdesigndlg.lbl.Exampledesignsnotfound = Beispieldesigns konnten nicht gefunden werden. + exdesigndlg.lbl.Examplesnotfound = Beispieldesign konnten nicht gefunden werden + + ! Print panel dialog + printdlg.but.saveaspdf = Als PDF speichern + printdlg.but.preview = Vorschau + printdlg.but.settings = Einstellungen + + ! Material edit panel + matedtpan.but.new = Neu + matedtpan.but.edit = Bearbeiten + matedtpan.but.delete = Löschen + matedtpan.but.revertall = Alle löschen + matedtpan.col.Material = Material + matedtpan.col.Type = Typ + matedtpan.col.Density = Dichte + matedtpan.col.but.ttip.New = Neues Material hinzufügen + matedtpan.title.Addcustmaterial = Benutzerdefiniertes Material hinzufügen + matedtpan.but.ttip.edit = Bestehendes Material bearbeiten + matedtpan.title.Editmaterial = Material bearbeiten + matedtpan.title2.Editmaterial = Die mitgelieferten Materialien können nicht verändert werden. + matedtpan.but.ttip.delete = Benutzerdefiniertes Material löschen + matedtpan.but.ttip.revertall = Alle benutzerdefinierten Materialien löschen + matedtpan.title.Deletealluser-defined = Alle benutzerdefinierten Materialien löschen? + matedtpan.title.Revertall = Alle löschen? + matedtpan.lbl.edtmaterials = Das Bearbeiten der Materialien beeinflusst keine bereits existierenden Raketendesigns. + + !MaterialModel + MaterialModel.title.Material = Material + MaterialModel.title.Defcustmat = Benutzerdefiniertes Material definieren + + + ! Preference dialog + pref.dlg.but.add = Hinzufügen + pref.dlg.but.reset = Zurücksetzen + pref.dlg.but.checknow = Jetzt überprüfen + pref.dlg.but.defaultmetric = Metrisches System + pref.dlg.but.defaultimperial = Imperialistisches System + pref.dlg.title.Preferences = Einstellungen + pref.dlg.tab.Units = Einheiten + pref.dlg.tab.Defaultunits = Standardeinheiten + pref.dlg.tab.Materials = Materialien + pref.dlg.tab.Custommaterials = Benutzerdefinierte Materialien + pref.dlg.tab.Options = Optionen + pref.dlg.tab.Miscellaneousoptions = Weiter Optionen + pref.dlg.lbl.Positiontoinsert = Position, um neue Komponenten einzufügen: + pref.dlg.lbl.Confirmdeletion = Löschen von Simulationen bestätigen + pref.dlg.lbl.User-definedthrust = Benutzerdefinierte Schubkurven: + pref.dlg.Allthrustcurvefiles = Alle Schubkurvendateien (*.eng; *.rrse; *.zzip; Verzeichnisse) + pref.dlg.RASPfiles = RASP Schubkurven (*.eng) + pref.dlg.RockSimfiles = RockSim Schubkurven(*.rse) + pref.dlg.ZIParchives = ZIP-Archiv (*.zip) + pref.dlg.checkbox.Checkupdates = Beim Starten auf neue Version prüfen + pref.dlg.ttip.Checkupdatesnow = Jetzt auf neue Version prüfen + pref.dlg.lbl.Selectprefunits = Wählen Sie Ihre bevorzugten Einheiten aus: + pref.dlg.lbl.Rocketdimensions = Raketendimensionen: + pref.dlg.lbl.Linedensity = Liniendichte: + pref.dlg.lbl.Motordimensions = Motordimensionen: + pref.dlg.lbl.Surfacedensity = Oberflächendichte: + pref.dlg.lbl.Distance = Entfernung: + pref.dlg.lbl.Bulkdensity = Bulk density:: + pref.dlg.lbl.Velocity = Geschwindigkeit + pref.dlg.lbl.Surfaceroughness = Oberflächenrauhheit: + pref.dlg.lbl.Acceleration = Beschleunigung: + pref.dlg.lbl.Area = Fläche + pref.dlg.lbl.Mass = Masse: + pref.dlg.lbl.Angle = Winkel: + pref.dlg.lbl.Force = Kraft: + pref.dlg.lbl.Rollrate = Roll-Rate: + pref.dlg.lbl.Totalimpulse = Gesamtimpuls: + pref.dlg.lbl.Temperature = Temperatur: + pref.dlg.lbl.Momentofinertia = Trägheitsmoment: + pref.dlg.lbl.Pressure = Druck: + pref.dlg.lbl.Stability = Stabilität + pref.dlg.lbl.effect1 = Die Änderungen werden wirksam, wenn Sie das nächste Mal ein Fenster öffnen. + pref.dlg.lbl.Checkingupdates = Prüfe, ob Aktualisierungen verfügbar sind... + pref.dlg.lbl.msg1 = Ein Fehler trat bei der Kommunikation mit dem Server auf. + pref.dlg.lbl.msg2 = Es konnten keine Informationen über Programmaktualisierungen empfangen werden. + pref.dlg.lbl.msg3 = Sie benutzen die neueste Version von OpenRocket. + pref.dlg.lbl.msg4 = Keine Aktualisierungen verfügbar. + pref.dlg.PrefChoiseSelector1 = Immer fragen + pref.dlg.PrefChoiseSelector2 = in der Mitte einfügen + a = an das Ende anhängen + pref.dlg.PrefBooleanSelector1 = Löschen + pref.dlg.PrefBooleanSelector2 = Bestätigen + pref.dlg.Add = Hinzufügen + 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. + + + ! Simulation edit dialog + simedtdlg.but.runsimulation = Simulation starten + simedtdlg.but.resettodefault = Auf Standardeinstellungen zurücksetzen + simedtdlg.but.add = Hinzufügen + simedtdlg.but.remove = Entfernen + simedtdlg.title.Editsim = Simulation bearbeiten + simedtdlg.lbl.Simname = Name der Simulation: + simedtdlg.tab.Launchcond = Startbedingungen + simedtdlg.tab.Simopt = Simulationsoptionen + simedtdlg.tab.Plotdata = Daten plotten + simedtdlg.tab.Exportdata = Daten exportieren + simedtdlg.lbl.Motorcfg = Motorkonfiguration: + simedtdlg.lbl.ttip.Motorcfg = Motorkonfiguration auswählen + simedtdlg.combo.ttip.motorconf = Die Motorkonfiguration auswählen. + simedtdlg.lbl.Wind = Wind + simedtdlg.lbl.Averwindspeed = Durchschnittliche Windgeschwindigkeit: + simedtdlg.lbl.ttip.Averwindspeed = Die durchschnittliche Windgeschwindigkeit relativ zum Boden. + simedtdlg.lbl.Stddeviation = Standardabweichung + simedtdlg.lbl.ttip.Stddeviation = Die Standardabweichung der Windgeschwindigkeit.
Die Windgeschwindigkeit liegt im Durchschnitt zu 95% der Zeit in der doppelten Standardabweichung. + simedtdlg.lbl.Turbulenceintensity = Intensität der Turbulenz: + simedtdlg.lbl.ttip.Turbulenceintensity1 = Die Intensität der Turbulenz ist die Standardabweichung geteilt durch durch die durchschnittliche Windgeschwindigkeit.
+ simedtdlg.lbl.ttip.Turbulenceintensity2 = Typischer Wertebereich von + simedtdlg.lbl.ttip.Turbulenceintensity3 = bis + simedtdlg.border.Atmoscond = Atmosphärische Bedingungen + simedtdlg.checkbox.InterStdAtmosphere = Internationale Standardatmosphäre benutzen + simedtdlg.checkbox.ttip.InterStdAtmosphere1 = Auswählen, um das Modell der Internationalen Standardatmosphäre zu verwenden.
In diesem Modell gilt eine Temperatur von + simedtdlg.checkbox.ttip.InterStdAtmosphere2 = und ein Luftdruck von + simedtdlg.checkbox.ttip.InterStdAtmosphere3 = auf Meeresniveau. + simedtdlg.lbl.Temperature = Temperatur: + simedtdlg.lbl.ttip.Temperature = Die Temperatur am Startplatz. + simedtdlg.lbl.Pressure = Luftdruck: + simedtdlg.lbl.ttip.Pressure = Der Luftdruck am Startplatz. + simedtdlg.lbl.Launchsite = Startplatz + simedtdlg.lbl.Latitude = Breitengrad: + simedtdlg.lbl.ttip.Latitude = Der Breitengrad des Startplatzes beeinflusst die wirksame Gravitationskraft.
Positive Werte liegen auf der Nordhalbkugel, negative Werte auf der Südhalbkugel. + simedtdlg.lbl.Altitude = Höhe: + simedtdlg.lbl.ttip.Altitude = Die Höhe des Startplatzes über Meeresniveau.
Die Höhe des Startplatzes beeinflusst die Position der Rakete im atmosphärischen Modell. + simedtdlg.border.Launchrod = Startrampe + simedtdlg.lbl.Length = Länge: + simedtdlg.lbl.ttip.Length = Die Länge der Startrampe + simedtdlg.lbl.Angle = Winkel: + simedtdlg.lbl.ttip.Angle = Der Winkel der Startrampe aus der Vertikalen. + simedtdlg.lbl.Direction = Richtung: + simedtdlg.lbl.ttip.Direction1 = Richtung der Startrampe relativ zur Windrichtung
+ simedtdlg.lbl.ttip.Direction2 = = gegen den Wind. + simedtdlg.lbl.ttip.Direction3 = = mit dem Wind + simedtdlg.border.Simopt = Simulationsoptionen + simedtdlg.lbl.Calcmethod = Berechnungsmethode + simedtdlg.lbl.ttip.Calcmethod = Die erweiterte Methode nach Barrowman berechnet die aerodynamischen Kräfte
nach den Gleichungen von Barrowman, die um weitere Faktoren erweitert wurden. + simedtdlg.lbl.ExtBarrowman = Barrowman (erweitert) + simedtdlg.lbl.Simmethod = Simulationsmethode: + simedtdlg.lbl.ttip.Simmethod1 = Der Sechs-Freiheitsgradsimulator erlaubt der Rakete völlige Bewegungsfreiheit während des Fluges.
+ simedtdlg.lbl.ttip.Simmethod2 = Das Integrieren wird nach dem numerischen Runge-Kutta-Verfahren 4. Ordnung durchgeführt. + simedtdlg.lbl.Timestep = Zeitschritt: + simedtdlg.lbl.ttip.Timestep1 = Die Zeit zwischen den Simulationsschritten.
Kleinere Schritte ergeben genauere Ergebnisse, die Simulationen dauern aber länger.
+ simedtdlg.lbl.ttip.Timestep2 = Die Berechnung der Simulation mit dem Verfahren 4. Ordnung liefert gute Ergebnisse mit Zeitschritten von + simedtdlg.but.ttip.resettodefault = Zeitschritte zurücksetzen auf den Standardwert ( + simedtdlg.border.Simlist = Simulationsempfänger + simedtdlg.txt.longA1 = Simulationsempfänger sind ein fortgeschrittenes Feature, dass es benutzerdefinierten Programmen erlaubt, die Simulationsdaten zu empfangen und mit der Simulation zu interagieren. + simedtdlg.txt.longA2 = Mehr Information zum Schreiben von Simualtionsempfängern sind in der OpenRocket technical documentation zu finden. + simedtdlg.lbl.Curlist = Aktuelle Simulationsempfänger: + simedtdlg.lbl.Addsimlist = Simulationsempfänger hinzufügen + simedtdlg.lbl.Noflightdata = Keine Flugdaten verfügbar. + simedtdlg.lbl.runsimfirst = Bitte erst die Simulation ausführen. + simedtdlg.chart.Simflight = Simulierter Flug + simedtdlg.dlg.Simres = Ergebnisse der Simulation + simedtdlg.IntensityDesc.None = Keine + simedtdlg.IntensityDesc.Verylow = Sehr niedrig + simedtdlg.IntensityDesc.Low = Niedrig + simedtdlg.IntensityDesc.Medium = Mittel + simedtdlg.IntensityDesc.High = Hoch + simedtdlg.IntensityDesc.Veryhigh = Sehr hoch + simedtdlg.IntensityDesc.Extreme = Extrem + + + + ! Simulation Panel + simpanel.but.newsimulation = Neue Simulation + simpanel.but.editsimulation = Simulation bearbeiten + simpanel.but.runsimulations = Simulation ausführen + simpanel.but.deletesimulations = Simulation löschen + simpanel.but.plotexport = Plotten / exportieren + simpanel.but.ttip.newsimulation = Neue Simulation hinzufügen + simpanel.but.ttip.editsim = Ausgewählte Simulation bearbeiten + simpanel.but.ttip.runsimu = Neuberechnen der ausgewählten Simulationen + simpanel.but.ttip.deletesim = Ausgewählte Simulationen löschen + simpanel.checkbox.donotask = Nicht wieder fragen + simpanel.lbl.defpref = Die Standardaktion kann in den Einstellungen geändert werden. + simpanel.dlg.lbl.DeleteSim1 = Die ausgewählten Simulationen löschen? + simpanel.dlg.lbl.DeleteSim2 = Diese Aktion kann nicht rückgängig gemacht werden. + simpanel.dlg.lbl.DeleteSim3 = Simulationen löschen + simpanel.col.Name = Name der Simulation: + simpanel.col.Motors = Motoren + simpanel.col.Apogee = Apogäum + simpanel.col.Maxvelocity = max. Geschwindigkeit + simpanel.col.Maxacceleration = max. Beschleunigung + simpanel.col.Timetoapogee = Zeit bis zum Apogäum + simpanel.col.Flighttime = Flugzeit + simpanel.col.Groundhitvelocity = Landegeschwindigkeit + + ! SimulationRunDialog + SimuRunDlg.title.RunSim = Simuliere... + SimuRunDlg.lbl.Running = Arbeite... + SimuRunDlg.lbl.Simutime = Simulationsdauer: + SimuRunDlg.lbl.Altitude = Höhe: + SimuRunDlg.lbl.Velocity = Geschwindigkeit: + SimuRunDlg.msg.Unabletosim = Simulieren nicht möglich: + SimuRunDlg.msg.errorOccurred = Während der Simulation trat ein Fehler auf: + SimuRunDlg.msg.AnException1 = Während der Simulation trat eine Ausnahme auf: + SimuRunDlg.msg.AnException2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details. + SimuRunDlg.msg.AssertionError1 = Während der Simulation trat ein Berechnungsfehler auf: + SimuRunDlg.msg.AssertionError2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details. + SimuRunDlg.msg.unknownerror1 = Während der Simulation trat ein unbekannter Fehler auf: + SimuRunDlg.msg.unknownerror2 = Das Programm könnte instabil sein, speichern Sie Ihr Design und starten Sie OpenRocket neu! + + + + ! SimulationExportPanel + SimExpPan.desc = Komma getrennte Werte (*.csv) + SimExpPan.border.Vartoexport = zu exportierende Variablen + SimExpPan.but.Selectall = Alle auswählen + SimExpPan.but.Selectnone = Keine auswählen + SimExpPan.border.Fieldsep = Feldtrennung + SimExpPan.lbl.Fieldsepstr = Trennzeichen + SimExpPan.lbl.longA1 = Das Trennzeichen wird benutzt, um die Felder in der exportierten Datei voneinander zu trennen.
+ SimExpPan.lbl.longA2 = Für eine CSV-Datei (Comma Separated Values) ein ',' benutzen. + SimExpPan.checkbox.Includesimudesc = Simulationsbeschreibung einfügen + SimExpPan.checkbox.ttip.Includesimudesc = Fügt einen Kommentar mit einer Simulationsbeschreibung am Anfang der Datei ein. + SimExpPan.border.Comments = Kommentare + SimExpPan.checkbox.Includefielddesc = Feldbeschreibungen einfügen + SimExpPan.checkbox.ttip.Includefielddesc = Fügt eine Kommentarzeile mit der Beschreibung der exportierten Variablen ein. + SimExpPan.checkbox.Incflightevents = Flugereignisse einfügen + SimExpPan.checkbox.ttip.Incflightevents = Fügt eine Kommentarzeile für jedes Flugereignis ein. + SimExpPan.lbl.Commentchar = Kommentarzeichen: + SimExpPan.lbl.ttip.Commentchar = Zeichen, das einen Kommentar in der exportierten Datei kennzeichnet. + SimExpPan.but.Exporttofile = In Datei exportieren... + SimExpPan.Fileexists.desc1 = File \"",Datei \«" + SimExpPan.Fileexists.desc2 = \" existiert bereits. Überschreiben?" + SimExpPan.Fileexists.title = Datei existiert bereits + SimExpPan.ExportingVar.desc1 = Exportiere Variable 1 aus + SimExpPan.ExportingVar.desc2 = Exportiere + SimExpPan.ExportingVar.desc3 = Variablen aus + SimExpPan.Col.Variable = Variable + SimExpPan.Col.Unit = Einheit + + ! MotorPlot + MotorPlot.title.Motorplot = Motorkurve + MotorPlot.but.Select = Auswahl + MotorPlot.Chart.Motorthrustcurve = Motorschubkurve + MotorPlot.Chart.Time = Zeit / s + MotorPlot.Chart.Thrust = Schub / N + MotorPlot.txt.Designation = Bezeichnung: + MotorPlot.txt.Manufacturer = Hersteller + MotorPlot.txt.Type = Typ: + MotorPlot.txt.Delays = Verzögerungen: + MotorPlot.txt.Comment = Kommentare:\n + + + + ! Simulation plot panel + simplotpanel.lbl.Presetplotconf = Plotparameter setzen + simplotpanel.lbl.Xaxistype = X-Achse: + simplotpanel.lbl.Unit = Einheit: + simplotpanel.lbl.Yaxistypes = Y-Achse: + simplotpanel.lbl.Flightevents = Flugereignisse: + simplotpanel.but.All = Alle auswählen + simplotpanel.but.None = Keine + simplotpanel.but.NewYaxisplottype = Neuer Y-Achsenplot-Typ + simplotpanel.but.Plotflight = Flug plotten + simplotpanel.lbl.Axis = Achsen: + simplotpanel.but.ttip.Removethisplot = Diesen Plot löschen + simplotpanel.Desc = Die Daten werden in zeitlicher Reihenfolge geplottet, auch wenn der X-Achsen-Typ nicht Zeit ist. + simplotpanel.OptionPane.lbl1 = Es sind maximal 15 Plots erlaubt. + simplotpanel.OptionPane.lbl2 = Plot konnte nicht hinzugefügt werden + simplotpanel.AUTO_NAME = Auto + simplotpanel.LEFT_NAME = Links + simplotpanel.RIGHT_NAME = Rechts + simplotpanel.CUSTOM = Benutzerdefiniert + + ! Component add buttons + compaddbuttons.Bodycompandfinsets = Körperteile und Leitwerke + compaddbuttons.Nosecone = Spitze + compaddbuttons.Bodytube = Körperrohr + compaddbuttons.Transition = Übergang + compaddbuttons.Trapezoidal = Trapeziod + compaddbuttons.Elliptical = Elliptisch + compaddbuttons.Freeform = Freiform + compaddbuttons.Launchlug = Leit-\nröhrchen + compaddbuttons.Innercomponent = Innenteile + compaddbuttons.Innertube = Innenrohr + compaddbuttons.Coupler = Koppler + compaddbuttons.Centeringring = Zentrier-\nring + compaddbuttons.Bulkhead = Schott + compaddbuttons.Engineblock = Motor-\nblock + compaddbuttons.Massobjects = Massenobjekte + compaddbuttons.Parachute = Fallschirm + compaddbuttons.Streamer = Strömer + compaddbuttons.Shockcord = Gummiseil + compaddbuttons.Masscomponent = Massen-\nobjekt + compaddbuttons.Donotaskmeagain = Nicht wieder fragen + compaddbuttons.Selectcomppos = Komponentenposition auswählen + compaddbuttons.lbl.Youcanchange = Die Standardaktion kann in den Einstellungen geändert werden. + compaddbuttons.lbl.insertcomp = Die Komponente nach der aktuellen Komponente oder als letzte Komponente einfügen? + compaddbuttons.askPosition.Inserthere = Hier einfügen + compaddbuttons.askPosition.Addtotheend = Zum Ende hinzufügen + compaddbuttons.askPosition.Cancel = Abbrechen + + ! Component Analysis Dialog + componentanalysisdlg.componentanalysis = Component analysis + componentanalysisdlg.lbl.winddir = Windrichtung + componentanalysisdlg.TitledBorder.warnings = Warnungen: + componentanalysisdlg.ToggleBut.worst = Worst + componentanalysisdlg.lbl.angleofattack = Angriffswinkel: + componentanalysisdlg.lbl.machnumber = Machzahl: + componentanalysisdlg.lbl.rollrate = Rollrate: + componentanalysisdlg.lbl.activestages = Aktive Stufen: + componentanalysisdlg.lbl.motorconf = Motorkonfiguration: + componentanalysisdlg.TabStability.Col = Komponente + componentanalysisdlg.TabStability = Stabilität + componentanalysisdlg.TabStability.ttip = Stabilitätsinformationen + componentanalysisdlg.dragTableModel.Col.Component = Komponente + componentanalysisdlg.dragTableModel.Col.Pressure = Druck CD + componentanalysisdlg.dragTableModel.Col.Base = Base CD + componentanalysisdlg.dragTableModel.Col.friction = Reibung CD + componentanalysisdlg.dragTableModel.Col.total = Gesamt CD + componentanalysisdlg.dragTabchar = Drag characteristics + componentanalysisdlg.dragTabchar.ttip = Drag characteristics + componentanalysisdlg.rollTableModel.Col.component = Komponente + componentanalysisdlg.rollTableModel.Col.rollforc = Roll forcing coefficient + componentanalysisdlg.rollTableModel.Col.rolldamp = Roll damping coefficient + componentanalysisdlg.rollTableModel.Col.total = Gesamt Cl + componentanalysisdlg.rollTableModel = Rolldynamik + componentanalysisdlg.rollTableModel.ttip = Rolldynamik + componentanalysisdlg.println.closingmethod = Closing method called: + componentanalysisdlg.println.settingnam = SETTING NAN VALUES + componentanalysisdlg.lbl.reflenght = Referenzlänge: + componentanalysisdlg.lbl.refarea = Referenzfläche: + !componentanalysisdlg.But.close =Close + + ! Custom Material dialog + custmatdlg.title.Custommaterial = Benutzerdefiniertes Material + custmatdlg.lbl.Materialname = Name des Materials: + custmatdlg.lbl.Materialtype = Materialtyp + custmatdlg.lbl.Materialdensity = Materialdichte: + custmatdlg.checkbox.Addmaterial = Material zur Datenbank hinzufügen + + + ! Ring Component Config + ringcompcfg.OuterRadius = Äußerer Radius + ringcompcfg.Automatic = Automatisch + ringcompcfg.InnerRadius = Innerer Radius + ringcompcfg.Thickness = Wandstärke + ringcompcfg.Length = Länge + ringcompcfg.Positionrelativeto = Relative Position zu: + ringcompcfg.plus = plus + ringcompcfg.PositionValue = Positionswert + ringcompcfg.Radialdistance = Radialer Abstand: + ringcompcfg.Distancefrom = Abstand von der Raketenmittellinie + ringcompcfg.Radialdirection = Radiale Richtung + ringcompcfg.radialdirectionfrom = Die radiale Richtung von der Raketenmittellinie + ringcompcfg.but.Reset = Zurücksetzen + ringcompcfg.but.Resetcomponant = Komponente auf die Raketenmittellinie zurücksetzen + ringcompcfg.EngineBlock.desc = Eine Motorhalterung verhindert, dass der Motor sich im Rohr nach vorne bewegt.

Um einen Motor hinzuzufügen, ein Körperrohr oder ein Innenrohr hinzufügen und im Reiter Motor als Motorhalterung markieren. + ringcompcfg.note.desc = Hinweis: Innenrohre beeinflussen die Aerodynamik der Rakete nicht, auch wenn sie außerhalb des Körperohres liegen. + + + ! Body Tube Config + BodyTubecfg.lbl.Bodytubelength = Länge des Körperrohres: + BodyTubecfg.lbl.Outerdiameter = Außendurchmesser: + BodyTubecfg.lbl.Innerdiameter = Innendurchmesser: + BodyTubecfg.lbl.Wallthickness = Wandstärke: + BodyTubecfg.tab.General = Allgemein + BodyTubecfg.tab.Generalproperties = Allgemeine Eigenschaften + BodyTubecfg.tab.Motor = Motor + BodyTubecfg.tab.Motormountconf = Motorkonfiguration + BodyTubecfg.checkbox.Automatic = Automatisch + BodyTubecfg.checkbox.Filled = Gefüllt + + ! FinSetConfig + FinSetConfig.tab.Fintabs = Leitwerke + FinSetConfig.tab.Through-the-wall = Durchsteckbare Leitwerke + FinSetConfig.but.Converttofreeform = In Freiform konvertieren + FinSetConfig.but.Converttofreeform.ttip = Konvertiert diese Leitwerke in eine Freiform + FinSetConfig.Convertfinset = Leitwerke konvertieren + FinSetConfig.but.Splitfins = Geteilte Leitwerke + FinSetConfig.but.Splitfins.ttip = Teilt den Leitwerkssatz in getrennte Leitwerke + FinSetConfig.lbl.Through-the-wall = Durchsteckbare Leitwerke: + FinSetConfig.lbl.Tablength = Länge: + FinSetConfig.ttip.Tablength = Länge des Leitwerks. + FinSetConfig.lbl.Tabheight = Höhe: + FinSetConfig.ttip.Tabheight = Spannweite des Leitwerks. + FinSetConfig.lbl.Tabposition = Position: + FinSetConfig.ttip.Tabposition = Position des Leitwerks. + FinSetConfig.lbl.relativeto = relativ zu + + ! MotorDatabaseLoadingDialog + MotorDbLoadDlg.title = Lade Motoren + MotorDbLoadDlg.Loadingmotors = Lade Motoren... + + ! RocketConfig + RocketCfg.lbl.Designname = Name der Rakete: + RocketCfg.lbl.Designer = Ersteller: + RocketCfg.lbl.Comments = Kommentare: + RocketCfg.lbl.Revisionhistory = Versionsgeschichte: + RocketCfg.lbl.Material = Material: + + ! ShockCordConfig + ShockCordCfg.lbl.Shockcordlength = Gummiseillänge + + ! RocketComponentConfig + RocketCompCfg.lbl.Componentname = Komponentenname: + RocketCompCfg.ttip.Thecomponentname = Name der Komponente. + RocketCompCfg.tab.Override = Werte überschreiben + RocketCompCfg.tab.MassandCGoverride = Massen- und Schwerpunktsoptionen + RocketCompCfg.tab.Figure = Form + RocketCompCfg.tab.Figstyleopt = Formoptionen + RocketCompCfg.tab.Comment = Kommentar + RocketCompCfg.tab.Specifyacomment = Kommentar zu dieser Komponente + RocketCompCfg.lbl.Mass = Masse: + RocketCompCfg.lbl.Componentmass = Masse der Komponente: + RocketCompCfg.lbl.overriddento = (überschrieben auf + RocketCompCfg.lbl.overriddenby = (überschrieben durch + RocketCompCfg.lbl.Componentmaterial = Material: + RocketCompCfg.lbl.Componentfinish = Oberfläche: + RocketCompCfg.lbl.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente. + RocketCompCfg.combo.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente. + RocketCompCfg.lbl.longA1 = Die Oberfläche beeinflusst den aerodynamischen Widerstand der Komponente.
+ RocketCompCfg.lbl.longA2 = Der angegebene Wert ist die durchschnittliche Rautiefe der Oberfläche. + RocketCompCfg.but.Setforall = Für alle setzen + RocketCompCfg.but.ttip.Setforall = Diese Oberflächen für alle Komponenten der Rakete setzen. + RocketCompCfg.lbl.Overridemassorcenter = Überschreiben von Masse oder Schwerpunkts von + RocketCompCfg.checkbox.Overridemass = Masse überschreiben: + RocketCompCfg.checkbox.Overridecenterofgrav = Schwerpunkt überschreiben: + RocketCompCfg.checkbox.OverridemassandCG = Masse und Schwerpunkt für alle Unterkomponenten überschreiben + RocketCompCfg.lbl.longB1 = Die überschriebene Masse enthält keine Motoren.
+ RocketCompCfg.lbl.longB2 = Die Messung des Schwerpunktes beginnt am Ende von + RocketCompCfg.lbl.Commentsonthe = Kommentare zu + RocketCompCfg.lbl.Figurestyle = Form: + RocketCompCfg.lbl.Componentcolor = Farbe: + RocketCompCfg.lbl.Choosecolor = Farbe auswählen + RocketCompCfg.checkbox.Usedefaultcolor = Standardfarbe verwenden + RocketCompCfg.lbl.Complinestyle = Linienstil: + RocketCompCfg.but.Saveasdefstyle = Als Standardstil speichern + RocketCompCfg.lbl.Diameter = Durchmesser: + RocketCompCfg.lbl.Length = Länge: + RocketCompCfg.lbl.Thickness = Wandstärke: + RocketCompCfg.checkbox.Endcapped = Verschlossenes Ende + RocketCompCfg.ttip.Endcapped = Gibt an, ob das Ende der Schulter geschlossen ist. + RocketCompCfg.title.Noseconeshoulder = Spitzenschulter + RocketCompCfg.title.Aftshoulder = Schulter hinten + RocketCompCfg.border.Foreshoulder = Schulter vorn + !RocketCompCfg.lbl.Length = Length: + + ! BulkheadConfig + BulkheadCfg.tab.Radius = Radius: + BulkheadCfg.tab.Thickness = Wandstärke: + BulkheadCfg.tab.General = Allgemein + BulkheadCfg.tab.Generalproperties = Allgemeine Eigenschaften + + !CenteringRingConfig + CenteringRingCfg.tab.Outerdiam = Außendurchmesser: + CenteringRingCfg.tab.Innerdiam = Innendurchmesser: + CenteringRingCfg.tab.Thickness = Wandstärke: + CenteringRingCfg.tab.General = Allgemein + CenteringRingCfg.tab.Generalproperties = Allgemeine Eigenschaften + + !ComponentConfigDialog + ComponentCfgDlg.configuration = Konfiguration + ComponentCfgDlg.Modify = Verändern + + !EllipticalFinSetConfig + EllipticalFinSetCfg.Nbroffins = Anzahl der Leitwerke + EllipticalFinSetCfg.Rotation = Rotation: + EllipticalFinSetCfg.Fincant = Neigung: + EllipticalFinSetCfg.Rootchord = Blatttiefe: + EllipticalFinSetCfg.Height = Höhe: + EllipticalFinSetCfg.Positionrelativeto = Position relativ zu: + EllipticalFinSetCfg.plus = plus + EllipticalFinSetCfg.FincrossSection = Querschnitt: + EllipticalFinSetCfg.Thickness = Wandstärke: + EllipticalFinSetCfg.General = Allgemein + EllipticalFinSetCfg.Generalproperties = Allgemeine Eigenschaften + EllipticalFinSetCfg.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind. + + !FreeformFinSetConfig + FreeformFinSetCfg.tab.General = Allgemein + FreeformFinSetCfg.tab.ttip.General = Allgemeine Eigenschaften + FreeformFinSetCfg.tab.Shape = Form + FreeformFinSetCfg.tab.ttip.Finshape = Leitwerksform + FreeformFinSetCfg.lbl.Numberoffins = Anzahl der Leitwerke + FreeformFinSetCfg.lbl.Finrotation = Rotation: + FreeformFinSetCfg.lbl.Fincant = Neigung: + FreeformFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind. + FreeformFinSetCfg.lbl.Posrelativeto = Position relativ zu: + FreeformFinSetCfg.lbl.plus = plus + FreeformFinSetCfg.lbl.FincrossSection = Querschnitt: + FreeformFinSetCfg.lbl.Thickness = Wandstärke: + + !InnerTubeConfig + InnerTubeCfg.tab.Motor = Motor + InnerTubeCfg.tab.ttip.Motor = Motorkonfiguration + InnerTubeCfg.tab.Cluster = Cluster + InnerTubeCfg.tab.ttip.Cluster = Cluster-Konfiguration + InnerTubeCfg.tab.Radialpos = Radiale Position + InnerTubeCfg.tab.ttip.Radialpos = Radiale Position + InnerTubeCfg.lbl.Selectclustercfg = Cluster-Konfiguration auswählen: + InnerTubeCfg.lbl.TubeSep = Rohrtrennung + InnerTubeCfg.lbl.ttip.TubeSep = Die Trennung der Rohre, 1.0 = die Rohre berühren sich + InnerTubeCfg.lbl.Rotation = Rotation: + InnerTubeCfg.lbl.ttip.Rotation = Rotationswinkel der Cluster-Konfiguration + InnerTubeCfg.lbl.Rotangle = Rotationswinkel der Cluster-Konfiguration + InnerTubeCfg.but.Splitcluster = Cluster aufteilen + InnerTubeCfg.lbl.longA1 = Den Cluster in einzelne Komponenten aufteilen.
+ InnerTubeCfg.lbl.longA2 = Die dupliziert alle Komponenten innerhalb dieses Innenrohrs. + InnerTubeCfg.but.Resetsettings = Einstellungen zurücksetzen + InnerTubeCfg.but.ttip.Resetsettings = Setzt die Aufteilung und Rotation auf die Standardwerte zurück + + ! LaunchLugConfig + LaunchLugCfg.lbl.Length = Länge: + LaunchLugCfg.lbl.Outerdiam = Außendurchmesser: + LaunchLugCfg.lbl.Innerdiam = Innendurchmesser: + LaunchLugCfg.lbl.Thickness = Wandstärke: + LaunchLugCfg.lbl.Radialpos = Radiale Position: + LaunchLugCfg.lbl.Posrelativeto = Position relativ zu: + LaunchLugCfg.lbl.plus = plus + LaunchLugCfg.tab.General = Allgemein + LaunchLugCfg.tab.Generalprop = Allgemeine Eigenschaften + + ! MassComponentConfig + MassComponentCfg.lbl.Mass = Masse + MassComponentCfg.lbl.Length = Länge + MassComponentCfg.lbl.Diameter = Durchmesser + MassComponentCfg.lbl.PosRelativeto = Position relativ zu: + MassComponentCfg.lbl.plus = plus + MassComponentCfg.tab.General = Allgemein + MassComponentCfg.tab.ttip.General = Allgemeine Eigenschaften + MassComponentCfg.tab.Radialpos = Radiale Position + MassComponentCfg.tab.ttip.Radialpos = Konfiguration der radialen Position + MassComponentCfg.lbl.Radialdistance = Radialer Abstand: + MassComponentCfg.lbl.Radialdirection = radiale Richtung: + MassComponentCfg.but.Reset = Zurücksetzen + + ! MotorConfig + MotorCfg.checkbox.compmotormount = Diese Komponente ist eine Motorhalterung + MotorCfg.lbl.Motorcfg = Motorkonfiguration + MotorCfg.but.New = Neu + MotorCfg.lbl.Currentmotor = Aktueller Motor: + MotorCfg.lbl.Motoroverhang = Motorüberstand: + MotorCfg.lbl.Ignitionat = Zündung bei: + MotorCfg.lbl.plus = plus + MotorCfg.lbl.seconds = Sekunden + MotorCfg.lbl.longA1 = Das aktuelle Design hat im Moment nur eine Stufe. + MotorCfg.lbl.longA2 = Stufen können durch Klicken auf \«Neue Stufe\« hinzugefügt werden. + MotorCfg.lbl.longB1 = Das aktuelle Design hat im Moment nur eine Stufe. + MotorCfg.lbl.longB2 = Stufen. + MotorCfg.but.Selectmotor = Motor auswählen + MotorCfg.but.Removemotor = Motor entfernen + MotorCfg.lbl.motorLabel = Keiner + + ! NoseConeConfig + NoseConeCfg.lbl.Noseconeshape = Spitzenform: + NoseConeCfg.lbl.Shapeparam = Formparameter: + NoseConeCfg.lbl.Noseconelength = Spitzenlänge: + NoseConeCfg.lbl.Basediam = Basisdurchmesser: + NoseConeCfg.checkbox.Automatic = Automatisch + NoseConeCfg.lbl.Wallthickness = Wandstärke: + NoseConeCfg.checkbox.Filled = gefüllt + NoseConeCfg.tab.General = Allgemein + NoseConeCfg.tab.ttip.General = Allgemeine Eigenschaften + NoseConeCfg.tab.Shoulder = Schulter + NoseConeCfg.tab.ttip.Shoulder = Schultereigenschaften + + ! ParachuteConfig + ParachuteCfg.lbl.Canopy = Fallschirmkappe: + ParachuteCfg.lbl.Diameter = Durchmesser: + ParachuteCfg.lbl.Material = Material: + ParachuteCfg.combo.MaterialModel = Das Material beeinflusst die Masse der Komponente. + ParachuteCfg.lbl.longA1 = Luftwiderstandskoeffizient CD: + ParachuteCfg.lbl.longB1 = Der Luftwiderstandsbeiwert relativ zur Gesamtfläche des Fallschirms.
+ ParachuteCfg.lbl.longB2 = Ein größerer Luftwiderstand führt zu einer kleineren Sinkrate. + ParachuteCfg.lbl.longB3 = Ein typischer Wert für Fallschirme ist 0,8. + ParachuteCfg.but.Reset = Zurücksetzen + ParachuteCfg.lbl.Shroudlines = Fangleinen: + ParachuteCfg.lbl.Numberoflines = Anzahl der Leinen: + ParachuteCfg.lbl.Linelength = Länge der Leinen: + ParachuteCfg.lbl.Material = Material: + ParachuteCfg.lbl.Posrelativeto = Position relativ zu: + ParachuteCfg.lbl.plus = plus + ParachuteCfg.lbl.Packedlength = gepackte Länge: + ParachuteCfg.lbl.Packeddiam = gepackter Durchmesser: + ParachuteCfg.lbl.Deploysat = Auswurf bei + ParachuteCfg.lbl.seconds = Sekunden + ParachuteCfg.lbl.Altitude = Höhe: + ParachuteCfg.tab.General = Allgemein + ParachuteCfg.tab.ttip.General = Allgemeine Eigenschaften + ParachuteCfg.tab.Radialpos = Radiale Position + ParachuteCfg.tab.ttip.Radialpos = Konfiguration der radialen Position + ParachuteCfg.lbl.Radialdistance = Radialer Abstand: + ParachuteCfg.lbl.Radialdirection = radiale Richtung: + ParachuteCfg.but.Reset = Zurücksetzen + + ! ShockCordConfig + ShockCordCfg.lbl.Shockcordlength = Länge des Gummiseils + ShockCordCfg.lbl.Shockcordmaterial = Material des Gummiseils: + ShockCordCfg.lbl.Posrelativeto = Position relativ zu: + ShockCordCfg.lbl.plus = plus + ShockCordCfg.lbl.Packedlength = gepackte Länge: + ShockCordCfg.lbl.Packeddiam = gepackter Durchmesser: + ShockCordCfg.tab.General = Allgemein + ShockCordCfg.tab.ttip.General = Allgemeine Eigenschaften + + !SleeveConfig + SleeveCfg.tab.Outerdiam = Außendurchmesser: + SleeveCfg.tab.Innerdiam = Innendurchmesser: + SleeveCfg.tab.Wallthickness = Wandstärke: + SleeveCfg.tab.Length = Länge: + SleeveCfg.tab.General = Allgemein + SleeveCfg.tab.Generalproperties = Allgemeine Eigenschaften + + ! StreamerConfig + StreamerCfg.lbl.Striplength = Länge des Strömers: + StreamerCfg.lbl.Stripwidth = Breite des Strömers: + StreamerCfg.lbl.Striparea = Fläche des Strömers: + StreamerCfg.lbl.Aspectratio = Seitenverhältnis: + StreamerCfg.lbl.Material = Material: + StreamerCfg.combo.ttip.MaterialModel = Das Material beeinflusst die Masse der Komponente. + StreamerCfg.lbl.longA1 = Widerstandskoeffizient CD: + StreamerCfg.lbl.longB1 = Der Widerstandskoeffizient des Strömers hängt von der Gesamtfläche ab.
+ StreamerCfg.lbl.longB2 = Ein größerer Luftwiderstandskoeffizient führt zu einer kleineren Sinkrate. + StreamerCfg.lbl.Automatic = Automatisch + StreamerCfg.lbl.longC1 = Der Luftwiderstandskoeffizient hängt von der Fläche des Strömers ab. + StreamerCfg.lbl.Posrelativeto = Position relativ zu: + StreamerCfg.lbl.plus = plus + StreamerCfg.lbl.Packedlength = gepackte Länge: + StreamerCfg.lbl.Packeddiam = gepackter Durchmesser: + StreamerCfg.lbl.Deploysat = Auswurf bei + StreamerCfg.lbl.seconds = Sekunden + StreamerCfg.lbl.Altitude = Höhe: + StreamerCfg.tab.General = Allgemein + StreamerCfg.tab.ttip.General = Allgemeine Eigenschaften + StreamerCfg.tab.Radialpos = Radiale Position + StreamerCfg.tab.ttip.Radialpos = Konfiguration der radialen Position + StreamerCfg.lbl.Radialdistance = Radialer Abstand: + StreamerCfg.lbl.Radialdirection = radiale Richtung: + StreamerCfg.but.Reset = Zurücksetzen + + ! ThicknessRingComponentConfig + ThicknessRingCompCfg.tab.Outerdiam = Außendurchmesser: + ThicknessRingCompCfg.tab.Innerdiam = Innendurchmesser: + ThicknessRingCompCfg.tab.Wallthickness = Wandstärke: + ThicknessRingCompCfg.tab.Length = Länge: + ThicknessRingCompCfg.tab.General = Allgemein + ThicknessRingCompCfg.tab.Generalprop = Allgemeine Eigenschaften + + ! TransitionConfig + TransitionCfg.lbl.Transitionshape = Form des Übergangs + TransitionCfg.checkbox.Clipped = geklemmt + TransitionCfg.lbl.Shapeparam = Formparameter: + TransitionCfg.lbl.Transitionlength = Länge des Übergangs: + TransitionCfg.lbl.Forediam = Vorderer Durchmesser + TransitionCfg.checkbox.Automatic = Automatisch + TransitionCfg.lbl.Aftdiam = Hinterer Durchmesser + TransitionCfg.lbl.Wallthickness = Wandstärke: + TransitionCfg.checkbox.Filled = gefüllt + TransitionCfg.tab.General = Allgemein + TransitionCfg.tab.Generalproperties = Allgemeine Eigenschaften + TransitionCfg.tab.Shoulder = Schulter + TransitionCfg.tab.Shoulderproperties = Schultereigenschaften + + ! TrapezoidFinSetConfig + TrapezoidFinSetCfg.lbl.Nbroffins = Anzahl der Leitwerke + TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Anzahl der Leitwerke in diesem Satz + TrapezoidFinSetCfg.lbl.Finrotation = Rotation der Leitwerke + TrapezoidFinSetCfg.lbl.ttip.Finrotation = Winkel des ersten Leitwerks in diesem Satz + TrapezoidFinSetCfg.lbl.Fincant = Neigung: + TrapezoidFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind. + TrapezoidFinSetCfg.lbl.Rootchord = Blatttiefe: + TrapezoidFinSetCfg.lbl.Tipchord = Blatttiefe (Spitze) + TrapezoidFinSetCfg.lbl.Height = Höhe: + TrapezoidFinSetCfg.lbl.Sweeplength = Blattbreite: + TrapezoidFinSetCfg.lbl.Sweepangle = Pfeilungswinkel + TrapezoidFinSetCfg.lbl.FincrossSection = Leitwerksquerschnitt + TrapezoidFinSetCfg.lbl.Thickness = Wandstärke: + TrapezoidFinSetCfg.lbl.Posrelativeto = Position relativ zu: + TrapezoidFinSetCfg.lbl.plus = plus + TrapezoidFinSetCfg.tab.General = Allgemein + TrapezoidFinSetCfg.tab.Generalproperties = Allgemeine Eigenschaften + + !MotorConfigurationModel + MotorCfgModel.Editcfg = Konfigurationen bearbeiten + + ! StorageOptionChooser + StorageOptChooser.lbl.Simdatatostore = Zu speichernde Simulationsdaten: + StorageOptChooser.rdbut.Allsimdata = Alle Simulationsdaten + StorageOptChooser.lbl.longA1 = Speichert alle Simulationsdaten.
+ StorageOptChooser.lbl.longA2 = Dies kann sehr große Dateien erzeugen! + StorageOptChooser.rdbut.Every = Alle Simulationsdaten + StorageOptChooser.lbl.longB1 = Speicher plotbare Daten in etwa diesem Abstand.
+ StorageOptChooser.lbl.longB2 = Größere Werte erzeugen kleinere Dateien. + StorageOptChooser.lbl.seconds = Sekunden + StorageOptChooser.rdbut.Onlyprimfig = Nur die wichtigsten Werte + StorageOptChooser.lbl.longC1 = Speichert nur die Werte, die in der Zusammenfassung stehen.
+ StorageOptChooser.lbl.longC2 = Dies ergibt die kleinsten Dateien + StorageOptChooser.checkbox.Compfile = Datei komprimieren + StorageOptChooser.lbl.UsingComp = Kompression der Datei verringert die Größe signifikant. + StorageOptChooser.lbl.longD1 = Eine Schätzung der Dateigröße mit den gegebenen Optionen. + StorageOptChooser.ttip.Saveopt = Speicheroptionen + StorageOptChooser.lbl.Estfilesize = Voraussichtliche Dateigröße: + StorageOptChooser.lbl.Saveopt = Speicheroptionen + + ! ThrustCurveMotorSelectionPanel + TCMotorSelPan.lbl.Selrocketmotor = Raketenmotor auswählen: + TCMotorSelPan.checkbox.hideSimilar = Ähnliche Schubkurven verbergen + TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Alle Motoren anzeigen + TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Motoren anzeigen, deren Durchmesser kleiner als der der Motorhalterung ist + TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Motoren anzeigen, deren Durchmesser gleich der der Motorhalterung ist + TCMotorSelPan.lbl.Motormountdia = Durchmesser der Motorhalterung + TCMotorSelPan.lbl.Search = Suchen: + TCMotorSelPan.lbl.Selectthrustcurve = Schubkurve auswählen: + TCMotorSelPan.lbl.Ejectionchargedelay = Verzögerung der Ausstoßladung: + TCMotorSelPan.equalsIgnoreCase.None = keine + TCMotorSelPan.lbl.NumberofsecondsorNone = (Anzahl der Sekunden oder \«keine\«) + TCMotorSelPan.lbl.Totalimpulse = Gesamtimpuls: + TCMotorSelPan.lbl.Avgthrust = Durchschn. Schub: + TCMotorSelPan.lbl.Maxthrust = max. Schub + TCMotorSelPan.lbl.Burntime = Brenndauer: + TCMotorSelPan.lbl.Launchmass = Startmasse: + TCMotorSelPan.lbl.Emptymass = Leermasse: + TCMotorSelPan.lbl.Datapoints = Datenpunkte: + TCMotorSelPan.lbl.Digest = Übersicht: + TCMotorSelPan.title.Thrustcurve = Schubkurve: + TCMotorSelPan.title.Thrust = Schub: + TCMotorSelPan.delayBox.None = keine + + + ! PlotDialog + PlotDialog.title.Flightdataplot = Flugdatenplot + PlotDialog.Chart.Simulatedflight = Simulierter Flug + PlotDialog.CheckBox.Showdatapoints = Datenpunkte anzeigen + PlotDialog.lbl.Chart = Klicken+ziehen: runter+rechts um hinein zu zoomen, hoch+links um heraus zu zoomen + + + ! "main" prefix is used for the main application dialog + + main.menu.file = Datei + main.menu.file.new = Neu + main.menu.file.open = Öffnen.. + main.menu.file.openExample = Beispiel öffnen.. + main.menu.file.save = Speichern + main.menu.file.saveAs = Speichern unter... + main.menu.file.print = Drucken... + main.menu.file.close = Schließen + main.menu.file.quit = Beenden + + main.menu.edit = Bearbeiten + main.menu.edit.undo = Rückgängig + main.menu.edit.redo = Wiederholen + main.menu.edit.cut = Ausschneiden + main.menu.edit.copy = Kopieren + main.menu.edit.paste = Einfügen + main.menu.edit.delete = Löschen + main.menu.edit.preferences = Einstellungen + + main.menu.analyze = Analysieren + main.menu.analyze.componentAnalysis = Komponente analysieren + + main.menu.help = Hilfe + main.menu.help.license = Lizenz + main.menu.help.bugReport = Fehlerbericht + main.menu.help.debugLog = Debug-Log + main.menu.help.about = Über + + main.menu.debug = Debug + main.menu.debug.whatisthismenu = Was macht diese Menü? + main.menu.debug.createtestrocket = Eine Testrakete erstellen + + ! database + ! Translate here all material database + ! + + ! Material database + ! BULK_MATERIAL + Databases.materials.Acrylic = Acryl + Databases.materials.Balsa = Balsa + Databases.materials.Birch = Birke + Databases.materials.Cardboard = Karton + Databases.materials.Carbonfiber = Kohlefaser + Databases.materials.Cork = Kork + Databases.materials.DepronXPS = Depron (XPS) + Databases.materials.Fiberglass = Glasfaser + Databases.materials.Kraftphenolic = Pertinax + Databases.materials.Maple = Ahorn + Databases.materials.Paperoffice = Papier (Büro) + Databases.materials.Pine = Kiefer + Databases.materials.Plywoodbirch = Sperrholz (Birke) + Databases.materials.PolycarbonateLexan = Polycarbonat (Lexan) + Databases.materials.Polystyrene = Polystyrène + Databases.materials.PVC = PVC + Databases.materials.Spruce = Fichte + Databases.materials.StyrofoamgenericEPS = Styropor (EPS) + Databases.materials.StyrofoamBluefoamXPS = Styrodur (XPS) + Databases.materials.Quantumtubing = Quantum tubing + !SURFACE_MATERIAL + Databases.materials.Ripstopnylon = Ripstop Nylon + Databases.materials.Mylar = Mylar + Databases.materials.Polyethylenethin = Polyethylen (dünn) + Databases.materials.Polyethyleneheavy = Polyethylen (schwer) + Databases.materials.Silk = Seide + Databases.materials.Paperoffice = Papier (Büro) + Databases.materials.Cellophane = Zellophan -Databases.materials.Creape paper = Krepppapier ++Databases.materials.Crepepaper = Krepppapier + ! LINE_MATERIAL + Databases.materials.Threadheavy-duty = Faden (stark) + Databases.materials.Elasticcordround2mm = Elastikband (rund, 2mm, 1/16 in) + Databases.materials.Elasticcordflat6mm = Elastikband (flach, 6mm, 1/4 in) + Databases.materials.Elasticcordflat12mm = Elastikband (flach, 12mm, 1/2 in) + Databases.materials.Elasticcordflat19mm = Elastikband (flach, 19mm, 3/4 in) + Databases.materials.Elasticcordflat25mm = Elastikband (flach, 25mm, 1 in) + Databases.materials.Braidednylon2mm = Nylonflachband (2 mm, 1/16 in) + Databases.materials.Braidednylon3mm = Nylonflachband (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 = Rau + ExternalComponent.Unfinished = unbehandelt + ExternalComponent.Regularpaint = normale Farbe + ExternalComponent.Smoothpaint = glatte Farbe + ExternalComponent.Polished = poliert + + ! LineStyle + LineStyle.Solid = durchgehend + LineStyle.Dashed = gestrichelt + LineStyle.Dotted = gepunktet + LineStyle.Dash-dotted = Strich-Punkt + LineStyle.Defaultstyle = Standardstil + + ! Shape + Shape.Conical = Konisch + Shape.Conical.desc1 = Eine konische Spitze hat ein dreieckiges Profil + Shape.Conical.desc2 = Ein konischer Übergang hat gerade Kanten + Shape.Ogive = Ogive + Shape.Ogive.desc1 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine tangentiale Ogive, die einen weichen Übergang zum Körperrohr hat, Werte kleiner 1 erzeugen eine sekante Ogive. + Shape.Ogive.desc2 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine tangentiale Ogive, die einen weichen Übergang zum Körperrohr am hinteren Ende hat, Werte kleiner 1 erzeugen eine sekante Ogive. + Shape.Ellipsoid = Ellipsoid + Shape.Ellipsoid.desc1 = Eine ellipsoide Spitze hat ein Profil einer Halbellipse mit der einer Hauptachsenlänge von 2×Länge und Durchmesser + Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. 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 Radius × (x / Length)k where k is the shape parameter. For k=0.5 this is a + Shape.Powerseries.descA2 = -power or parabolic nose cone, for k=0.75 a + Shape.Powerseries.descA3 = -power, and for k=1 a conical nose cone. + Shape.Powerseries.descB1 = A power series transition has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 the transition is + Shape.Powerseries.descB2 = -power or parabolic, for k=0.75 a + Shape.Powerseries.descB3 = -power, and for k=1 conical. + 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 full parabola which is tangent to the body tube, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical 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 full parabola which is tangent to the body tube at the aft end, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical transition. + Shape.Haackseries = Haack series + Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag. The shape parameter 0 produces an LD-Haack or Von Karman nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an LV-Haack nose cone, which minimizes drag for fixed length and volume. + Shape.Haackseries.desc2 = The Haack series nose cones 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 LD-Haack or Von Karman shape, while a value of 0.333 produces an LV-Haack shape. + + + ! RocketComponent + RocketComponent.Position.TOP = oberes Ende der übergeordneten Komponente + RocketComponent.Position.MIDDLE = Mitte der übergeordneten Komponente + RocketComponent.Position.BOTTOM = unteres Ende der übergeordneten Komponente + RocketComponent.Position.AFTER = nach der übergeordneten Komponente + RocketComponent.Position.ABSOLUTE = zur Spitze + + ! LaunchLug + LaunchLug.Launchlug = Leitröhrchen + ! NoseCone + NoseCone.NoseCone = Spitze + ! Transition + Transition.Transition = Übergang + !Stage + Stage.Stage = Stufe + ! BodyTube + BodyTube.BodyTube = Körperrohr + ! TubeCoupler + TubeCoupler.TubeCoupler = Koppler + !InnerTube + InnerTube.InnerTube = Innenrohr + ! TrapezoidFinSet + TrapezoidFinSet.TrapezoidFinSet = Trapezoide Leitwerke + ! FreeformFinSet + FreeformFinSet.FreeformFinSet = Frei geformte Leitwerke + !MassComponent + MassComponent.MassComponent = Masse + ! Parachute + Parachute.Parachute = Fallschirm + ! ShockCord + ShockCord.ShockCord = Gummiseil + ! Bulkhead + Bulkhead.Bulkhead = Schott + + !Rocket + Rocket.motorCount.Nomotor = [Keine Motoren] + Rocket.compname.Rocket = Rakete + + !MotorMount + MotorMount.IgnitionEvent.AUTOMATIC = Automatisch (Start oder Ausstoßladung) + MotorMount.IgnitionEvent.LAUNCH = Start + MotorMount.IgnitionEvent.EJECTION_CHARGE = Erste Ausstoßladung der vorherigen Stufe + MotorMount.IgnitionEvent.BURNOUT = Erster Brennschluss der vorherigen Stufe + MotorMount.IgnitionEvent.NEVER = Nie + + !ComponentIcons + ComponentIcons.Nosecone = Spitze + ComponentIcons.Bodytube = Körperrohr + ComponentIcons.Transition = Übergang + ComponentIcons.Trapezoidalfinset = Trapezoide Leitwerke + ComponentIcons.Ellipticalfinset = Elliptische Leitwerke + ComponentIcons.Freeformfinset = Frei geformte Leitwerke + ComponentIcons.Launchlug = Leitröhrchen + ComponentIcons.Innertube = Innenrohr + ComponentIcons.Tubecoupler = Koppler + ComponentIcons.Centeringring = Zentrierring + ComponentIcons.Bulkhead = Schott + ComponentIcons.Engineblock = Motorhalterung + ComponentIcons.Parachute = Fallschirm + ComponentIcons.Streamer = Strömer + ComponentIcons.Shockcord = Gummiseil + ComponentIcons.Masscomponent = Masse + ComponentIcons.disabled = (deaktiviert) + + ! StageAction + StageAction.Stage = Stufe + + ! RecoveryDevice + RecoveryDevice.DeployEvent.LAUNCH = Start (plus NN Sekunden) + RecoveryDevice.DeployEvent.EJECTION = Erste Ausstoßladung dieser Stufe + RecoveryDevice.DeployEvent.APOGEE = Apogäum + RecoveryDevice.DeployEvent.ALTITUDE = Spezifische Höhe während der Landephase + RecoveryDevice.DeployEvent.NEVER = Nie + + ! FlightEvent + FlightEvent.Type.LAUNCH = Start + FlightEvent.Type.IGNITION = Motorzündung + FlightEvent.Type.LIFTOFF = Abheben + FlightEvent.Type.LAUNCHROD = Verlassen der Startrampe + FlightEvent.Type.BURNOUT = Motorbrennschluss + FlightEvent.Type.EJECTION_CHARGE = Ausstoßladung + FlightEvent.Type.STAGE_SEPARATION = Stufentrennung + FlightEvent.Type.APOGEE = Apogäum + FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Auslösung des Bergungssystems + FlightEvent.Type.GROUND_HIT = Landung + FlightEvent.Type.SIMULATION_END = Ende der Simulation + FlightEvent.Type.ALTITUDE = Höhenänderung + + ! ThrustCurveMotorColumns + TCurveMotorCol.MANUFACTURER = Hersteller + TCurveMotorCol.DESIGNATION = Bezeichnung + TCurveMotorCol.TYPE = Typ + TCurveMotorCol.DIAMETER = Durchmesser + TCurveMotorCol.LENGTH = Länge + + ! RocketInfo + RocketInfo.lengthLine.Length = Länge + RocketInfo.lengthLine.maxdiameter = , max. Durchmesser + RocketInfo.massText1 = Masse mit Motoren + RocketInfo.massText2 = Masse ohne Motoren + RocketInfo.at = bei M= + RocketInfo.cgText = CG: + RocketInfo.cpText = CP: + RocketInfo.stabText = Stabilität: + RocketInfo.Warning = Warnung: + RocketInfo.Calculating = Berechne... + RocketInfo.Apogee = Apogäum: + RocketInfo.Maxvelocity = max. Geschwindigkeit: + RocketInfo.Maxacceleration = max. Beschleunigung: + RocketInfo.apogeeValue = N/A + RocketInfo.Mach = (Mach + RocketInfo.velocityValue = N/A + RocketInfo.accelerationValue = N/A + + ! FinSet + FinSet.CrossSection.SQUARE = Quadrat + FinSet.CrossSection.ROUNDED = Abgerundet + FinSet.CrossSection.AIRFOIL = Tragfläche + FinSet.TabRelativePosition.FRONT = Root chord leading edge + FinSet.TabRelativePosition.CENTER = Root chord midpoint + FinSet.TabRelativePosition.END = Root chord trailing edge + + ! FlightDataType + FlightDataType.TYPE_TIME = Zeit + FlightDataType.TYPE_ALTITUDE = Höhe + FlightDataType.TYPE_VELOCITY_Z = Vertikalgeschwindigkeit + FlightDataType.TYPE_ACCELERATION_Z = Vertikalbeschleunigung + FlightDataType.TYPE_VELOCITY_TOTAL = Gesamtgeschwindigkeit + FlightDataType.TYPE_ACCELERATION_TOTAL = Gesamtbeschleunigung + 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 = Angriffswinkel + FlightDataType.TYPE_ROLL_RATE = Rollrate + FlightDataType.TYPE_PITCH_RATE = Nickrate + FlightDataType.TYPE_YAW_RATE = Gierrate + FlightDataType.TYPE_MASS = Masse + FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia + FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia + FlightDataType.TYPE_CP_LOCATION = Position vom CP + FlightDataType.TYPE_CG_LOCATION = Position vom CG + FlightDataType.TYPE_STABILITY = Stabilität in Kalibern + FlightDataType.TYPE_MACH_NUMBER = Machzahl + FlightDataType.TYPE_REYNOLDS_NUMBER = Reynoldszahl + FlightDataType.TYPE_THRUST_FORCE = Schub + FlightDataType.TYPE_DRAG_FORCE = Luftwiderstandskraft + FlightDataType.TYPE_DRAG_COEFF = Luftwiderstandskoeffizient + FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient + FlightDataType.TYPE_FRICTION_DRAG_COEFF = Reibungskoeffizient + 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 = Referenzlänge + FlightDataType.TYPE_REFERENCE_AREA = Referenzfläche + FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith) + FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth) + FlightDataType.TYPE_WIND_VELOCITY = Windgeschwindigkeit + FlightDataType.TYPE_AIR_TEMPERATURE = Lufttemperatur + FlightDataType.TYPE_AIR_PRESSURE = Luftdruck + FlightDataType.TYPE_SPEED_OF_SOUND = Schallgeschwindigkeit + FlightDataType.TYPE_TIME_STEP = Simulationszeitschritt + FlightDataType.TYPE_COMPUTATION_TIME = Berechnnungszeit + + ! PlotConfiguration + PlotConfiguration.Verticalmotion = Vertikale Bewegung über Zeit + PlotConfiguration.Totalmotion = Gesamte Bewegung über Zeit + PlotConfiguration.Flightside = Flight side profile + PlotConfiguration.Stability = Stabilität über Zeit + PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number + PlotConfiguration.Rollcharacteristics = Roll characteristics + PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time + PlotConfiguration.Simulationtime = Simulationszeitschritt und Berechnungszeit + + ! Warning + Warning.LargeAOA.str1 = Large angle of attack encountered. + Warning.LargeAOA.str2 = Large angle of attack encountered ( + Warning.DISCONTINUITY = Unstetigkeit im Raketendurchmesser + Warning.THICK_FIN = Dicke Leitwerke können nicht präzise modelliert werden. + Warning.JAGGED_EDGED_FIN = Gezackte Ecken in Leitwerken können unpräzise Ergebnisse liefern. + Warning.LISTENERS_AFFECTED = Simulationsempfänger haben die Simulation beeinflusst. + Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Bergungssystem wurde ausgelöst während der Motor noch gebrannt hat. + Warning.FILE_INVALID_PARAMETER = Ignoriere ungültigen Parameter. diff --cc l10n/messages_es.properties index 00000000,585ddbd8..b1aeebb9 mode 000000,100644..100644 --- a/l10n/messages_es.properties +++ b/l10n/messages_es.properties @@@ -1,0 -1,1182 +1,1182 @@@ + # + # 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 = Esta operación no puede deshacerse. + 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 = Click para seleccionar   Mayúsculas+click para seleccionar otro   Doble-click to mostrar    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 = Si está conectado a Internet, haga simplemente Clik Enviar report de errores. + 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 = Puede enviar un report de error en OpenRocket rellenando el formulario de abajo y enviándolo.
También puede reportar errores e incluir adjuntos sobre el proyecto de Web. + bugreport.reportDialog.txt2 = Por favor incluya una breve descripción de lo que estaba haciendo cuando ocurrió la excepción. + + + ! 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 = Porta motor: + edtmotorconfdlg.title.Editmotorconf = Mostrar las configuraciones de motor + edtmotorconfdlg.selectcomp = Seleccionar que componentes tienen la función de porta motor: + edtmotorconfdlg.lbl.Motorconfig = Configuraciones del motor: + 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 = Editar materiales que no afectaran los diseños existentes. + + !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 = Desviación standard de la velocidad del viento.
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 = La intensidad de la turbulencia es la desviación standard dividida por la velocidad media del viento.
+ 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 = Seleccionar para usar el modelo de la International Standard Atmosphere model.
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 = La latitud del lugar de lanzamiento afecta la atracción terrestre.
Los valores positivos se dan en el hemisferio Norte, los negativos en el hemisferio Sur. + simedtdlg.lbl.Altitude = Altitud: + simedtdlg.lbl.ttip.Altitude = Los valores por encima del nivel del mar.
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 = Dirección de la varilla de lanzamiento relativa al viento.
+ 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 = El método Barrowman extendido calcula las fuerzas aerodinámicas
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 = El simulador de seis-grados-de-libertad permite al cohete una total libertad durante el vuelo.
+ simedtdlg.lbl.ttip.Simmethod2 = La integración mejora usando un 4th ordenar Runge-Kutta 4 integración numérica. + simedtdlg.lbl.Timestep = Duración de la etapa + simedtdlg.lbl.ttip.Timestep1 = Tiempo entre etapas de simulación.
Un tiempo mas corto de etapa origina una simulación mas exacta pero mas lenta.
+ simedtdlg.lbl.ttip.Timestep2 = The 4th 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 = Oyentes del simulador 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 = Esta operación no puede deshacerse. + 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 = Las barras para separar campos en el documento exportado.
+ 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.Bodytube = Tubo del fuselaje ++compaddbuttons.Bodytube = Tubo del\nfuselaje + compaddbuttons.Transition = Transición + compaddbuttons.Trapezoidal = Trapezoidal + compaddbuttons.Elliptical = Elíptico + compaddbuttons.Freeform = Forma libre -compaddbuttons.Launchlug = Guía en el fuselaje ++compaddbuttons.Launchlug = Guía en el\nfuselaje + compaddbuttons.Innercomponent = Componente interior -compaddbuttons.Innertube = Tubo interior ++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 -compaddbuttons.Shockcord = Tirante de suspensión ++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 = Presión CD + componentanalysisdlg.dragTableModel.Col.Base = Base CD + componentanalysisdlg.dragTableModel.Col.friction = Rozamiento CD + componentanalysisdlg.dragTableModel.Col.total = Total CD + 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 = Total Cl + 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 = Un retén motor Impide que el motor se desplace hacia delante dentro del tubo porta motor.

Para añadir un motor, cree un tubo de fuselaje o dentro del tubo y desígnelo como portamotor en el Motor 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 = El acabado del componente afecta su coeficiente de rozamiento.
+ 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 = La masa elegida no incluye los motores.
+ 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 = Split del cluster dentro de componentes separados.
+ 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 = Drag coeficiente CD: + ParachuteCfg.lbl.longB1 = Coeficiente de rozamiento relativo al área total del paracaídas.
+ 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 = Coeficiente de fricción CD: + StreamerCfg.lbl.longB1 = Coeficiente de fricción relativo al área total de la banderola.
+ 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 = Almacenar todos los datos simulados.
+ StorageOptChooser.lbl.longA2 = Puede significar archivos muy grandes + StorageOptChooser.rdbut.Every = Cada + StorageOptChooser.lbl.longB1 = Almacenar valores de impresión aproximadamente este lejano apartado.
+ 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 = Almacenas sólo los valores en la tabla sumario.
+ 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.Creape paper = Cr\u00eape Papel ++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 Tangente a la ojiva, Que tiene una transición suave al fuselaje, produce un valor menor que 1 Secante a la ojiva. + Shape.Ogive.desc2 = Una ojiva con perfil de segmento circular. El parámetro de forma de valor 1 produce una Tangente a la ojiva, Que tiene una transición suave al fuselaje, produce un valor menor que 1 Secante a la ojiva. + Shape.Ellipsoid = Elipsoide + Shape.Ellipsoid.desc1 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;Longitud y Diámetro. + Shape.Ellipsoid.desc2 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;Longitud y Diámetro. 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 deRadio &veces; (x / Longitud)k donde k es el parámetro de forma. Para k=0.5 este es un + Shape.Powerseries.descA2 = -potencia o parabólico ojiva, para k=0.75 un + Shape.Powerseries.descA3 = -potencia, y para k=1 a cónica ojiva. + Shape.Powerseries.descB1 = Una serie de transiciones potentes tiene un perfil de Radio &veces; (x / Longitud)k donde k es el parámetro de forma. Para k=0.5 la transición es + Shape.Powerseries.descB2 = -potencia o parabólica, para k=0.75 a + Shape.Powerseries.descB3 = -potencia, y para k=1 cónica. + 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 full parábola que es tangente a el body tubo, 0.75 produces a 3/4 parábola, 0.5 procudes a 1/2 parábola y 0 produces a cónico 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 full parábola que es tangente a el body tubo at el aft extremo, 0.75 produces a 3/4 parábola, 0.5 procudes a 1/2 parábola y 0 produces a cónico 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 LD-Haack o Von Karman ojiva , que minimizas drag para fijado longitud y diámetro, mientras a valor de 0.333 produces un LV-Haack ojiva , que minimizas drag para fijado longitud y volumen. + Shape.Haackseries.desc2 = The Haack series ojiva 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 LD-Haack o Von Karman forma, mientras a valor de 0.333 produces un LV-Haack 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. diff --cc l10n/messages_fr.properties index 00000000,e5c2f238..d4c0972a mode 000000,100644..100644 --- a/l10n/messages_fr.properties +++ b/l10n/messages_fr.properties @@@ -1,0 -1,1180 +1,1180 @@@ + + # + # French base translation file + # Translated by Tripoli France + + + ! Set to the name of the current translation file (used for debugging purposes) + debug.currentFile = messages_fr.properties + + ! RocketActions + RocketActions.checkbox.Donotaskmeagain = Ne plus me demander + RocketActions.lbl.Youcanchangedefop = Vous pouvez changer le mode opératoire par defaut dans les préferences. + RocketActions.showConfirmDialog.lbl1 = Supprimer les simulations sélectionnées? + RocketActions.showConfirmDialog.lbl2 = Cette opération n'est pas réversible. + RocketActions.showConfirmDialog.title = Effacer les simulations + RocketActions.DelCompAct.Delete = Effacer + RocketActions.DelCompAct.ttip.Delete = Effacer la pièce sélectionnée. + RocketActions.DelSimuAct.Delete = Effacer + RocketActions.DelSimuAct.ttip.Delete = Effacer la simulation sélectionnée. + RocketActions.DelAct.Delete = Effacer + RocketActions.DelAct.ttip.Delete = Effacer la pièce ou la simulation sélectionnée. + RocketActions.CutAction.Cut = Couper + RocketActions.CutAction.ttip.Cut = Couper cette pièce ou simulation, l'ajouter au presse papier et l'enlever du projet + RocketActions.CopyAct.Copy = Copier + RocketActions.CopyAct.ttip.Copy = Copier les pièces (et les pièces liées) dans le presse papier. + RocketActions.PasteAct.Paste = Coller + RocketActions.PasteAct.ttip.Paste = Coller la pièce ou simulation présente dans le presse papier dans le projet. + RocketActions.EditAct.Edit = Modifier + RocketActions.EditAct.ttip.Edit = Modifier la pièce sélectionnée. + RocketActions.NewStageAct.Newstage = Nouvel étage + RocketActions.NewStageAct.ttip.Newstage = Ajouter un nouvel étage au projet. + RocketActions.ActBoosterstage = Etage Booster + RocketActions.MoveUpAct.Moveup = Monter + RocketActions.MoveUpAct.ttip.Moveup = Monter la pièce. + RocketActions.MoveDownAct.Movedown = Descendre + RocketActions.MoveDownAct.ttip.Movedown = Descendre la pièce. + + ! RocketPanel + RocketPanel.FigTypeAct.Sideview = Vue de coté + RocketPanel.FigTypeAct.ttip.Sideview = Vue de coté + RocketPanel.FigTypeAct.Backview = Vue arrière + RocketPanel.FigTypeAct.ttip.Backview = Vue arrière + RocketPanel.lbl.Motorcfg = Configuration Moteur: + RocketPanel.lbl.infoMessage = Cliquer pour sélectionner    Shift+cliquer pour sélectionner plusieurs    Double-cliquer pour modifier    Click+déplacer pour déplacer + + + ! BasicFrame + BasicFrame.SimpleFileFilter1 = Tous les fichiers fusée (*.ork; *.rkt) + BasicFrame.SimpleFileFilter2 = Fichiers OpenRocket (*.ork) + BasicFrame.SimpleFileFilter3 = Fichiers RockSim (*.rkt) + BasicFrame.tab.Rocketdesign = Projet fusée + BasicFrame.tab.Flightsim = Simulations de vol + BasicFrame.title.Addnewcomp = Ajouter une nouvelle pièce + BasicFrame.item.Openrocketdesign = Ouvrir un projet fusée + BasicFrame.item.Openexamplerocketdesign = Ouvrir un exemple de projet fusée + BasicFrame.item.SavecurRocketdesign = Sauvegarder le projet fusée courant + BasicFrame.item.SavecurRocketdesnewfile = Sauvegarder le projet fusée courant dans un nouveau fichier + BasicFrame.item.Printpart = Imprimer la liste des pièces et les modèles d'ailerons + BasicFrame.item.Closedesign = Fermer le projet fusée courant + BasicFrame.item.Quitprogram = Quitter le programme + BasicFrame.menu.Rocketedt = Modification de la fusée + BasicFrame.dlg.lbl1 = Le projet ' + BasicFrame.dlg.lbl2 = ' N'a pas été sauvegardé. + BasicFrame.dlg.lbl3 = Voulez vous le sauvegarder? + BasicFrame.dlg.title = Projet non sauvegardé + BasicFrame.StageName.Sustainer = Sustainer + BasicFrame.WarningDialog.txt1 = Les problemes suivant sont survenus lors de l'ouverture de + BasicFrame.WarningDialog.txt2 = Certains elements du projet n'ont peut etre pas été chargé correctement. + BasicFrame.WarningDialog.title = Avertissement lors de l'ouverture du fichier + + ! Labels used in buttons of dialog windows + button.ok = OK + button.cancel = Annuler + button.close = Fermer + + ! Common labels used in buttons of dialog windows + dlg.but.ok = Accepter + dlg.but.cancel = Annuler + dlg.but.close = Fermer + + ! About Dialog -about.dlg.but.close = Fermer -about.dlg.lbl.translation = Traduit en français par Tripoli France -about.dlg.lbl.transwebsite = http://tripoli.france.free.fr/ ++AboutDialog.lbl.translation = Traduit en français par ++AboutDialog.lbl.translator = Tripoli France ++AboutDialog.lbl.translatorWebsite = http://tripoli.france.free.fr/ + + ! Bug Report dialog + bugreport.dlg.title = Rapport d'erreurs + bugreport.dlg.but.Sendbugreport = Envoyer un rapport d'erreurs + bugreport.dlg.but.Sendbugreport.Ttip = Envoyer automatiquement un rapport d'erreurs aux developpeurs d'OpenRocket + bugreport.dlg.successmsg1 = Rapport d'erreurs envoyé avec succès. + bugreport.dlg.successmsg2 = Merci d'avoir contribué à l'amélioration d'OpenRocket! + bugreport.dlg.successmsg3 = Rapport d'erreurs envoyé + bugreport.dlg.connectedInternet = Si vous etes connecté sur Internet, vous pouvez tout simplement cliquer sur Envoyer un rapport d'erreurs. + bugreport.dlg.otherwise = Sinon envoyez le texte ci-dessous à l'adresse: + 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. + bugreport.dlg.failedmsg1 = OpenRocket n'a pas réussi à envoyer le rapport d'erreur: + bugreport.dlg.failedmsg2 = S'il vous plait envoyez le rapport manuellement à + bugreport.dlg.failedmsg3 = Erreur d'envoi du rapport + bugreport.reportDialog.txt = Vous pouvez signaler une erreur avec OpenRocket en remplissant et en envoyant le message ci-dessous.
Vous pouvez egalement signaler des erreurs et inclure des pieces jointes sur le site web du projet. + bugreport.reportDialog.txt2 = S'il vous plait ajoutez une courte description de ce que vous faisiez lorsque l'erreur s'est produite. + + + ! Debug log dialog + debuglogdlg.but.clear = Effacer + debuglogdlg.OpenRocketdebuglog = Fichier debug d'OpenRocket + debuglogdlg.Displayloglines = Afficher les numéros des lignes: + debuglogdlg.Follow = Suivre + debuglogdlg.col.Time = Heure + debuglogdlg.col.Level = Niveau + debuglogdlg.col.Location = Emplacement + debuglogdlg.col.Message = Message + debuglogdlg.lbl.Loglinenbr = Numéro de la ligne: + debuglogdlg.lbl.Time = Heure: + debuglogdlg.lbl.Level = Niveau: + + + ! Edit Motor configuration dialog + edtmotorconfdlg.but.removemotor = Enlever le moteur + edtmotorconfdlg.but.Selectmotor = Choisir le moteur + edtmotorconfdlg.but.Removeconfiguration = Supprimer la configuration + edtmotorconfdlg.but.Newconfiguration = Nouvelle configuration + edtmotorconfdlg.lbl.Motormounts = Portes moteur: + edtmotorconfdlg.title.Editmotorconf = Changer la configuration moteur + edtmotorconfdlg.selectcomp = Choisir les pièces utilisées par le porte moteur: + edtmotorconfdlg.lbl.Motorconfig = Configurations moteur: + edtmotorconfdlg.lbl.Configname = Nom de la configuration: + edtmotorconfdlg.lbl.Leavenamedefault = Laisser le champ vide par défaut. + + ! Example design dialog + exdesigndlg.but.open = Ouvrir + exdesigndlg.lbl.Selectexample = Chosir l'exemple de projet à ouvrir: + exdesigndlg.lbl.Openexampledesign = Ouvrir un exemple de projet + exdesigndlg.lbl.Exampledesignsnotfound = Impossible de trouver les exemples de projets. + exdesigndlg.lbl.Examplesnotfound = Exemples non trouvés + + ! Print panel dialog + printdlg.but.saveaspdf = Sauvegarder en PDF + printdlg.but.preview = Prévisualisation + printdlg.but.settings = Configuration + + ! Material edit panel + matedtpan.but.new = Nouveau + matedtpan.but.edit = Editer + matedtpan.but.delete = Effacer + matedtpan.but.revertall = Revenir aux valeurs précédente + matedtpan.col.Material = Matériaux + matedtpan.col.Type = Type + matedtpan.col.Density = Densité + matedtpan.col.but.ttip.New = Ajouter un nouveau matériau + matedtpan.title.Addcustmaterial = Ajouter un matériau personnalisé + matedtpan.but.ttip.edit = Modifier un matériau existant + matedtpan.title.Editmaterial = Modifier un matériau + matedtpan.title2.Editmaterial = Les matériaux prédéfinis ne peuvent pas être modifiés. + matedtpan.but.ttip.delete = Supprimer un matériau personnalisé + matedtpan.but.ttip.revertall = Supprimer tous les matériaux personnalisés + matedtpan.title.Deletealluser-defined = Effacer tous les matériaux personalisés? + matedtpan.title.Revertall = Revenir aux valeurs précédentes? + matedtpan.lbl.edtmaterials = Modifier les matériaux n'affectera pas les projets fusée existants. + + !MaterialModel + MaterialModel.title.Material = Matériau + MaterialModel.title.Defcustmat = Définir un matériau personnalisé + + + ! Preference dialog + pref.dlg.but.add = Ajouter + pref.dlg.but.reset = Réinitialiser + pref.dlg.but.checknow = Vérifier maintenant + pref.dlg.but.defaultmetric = Système métrique + pref.dlg.but.defaultimperial = Système imperial + pref.dlg.title.Preferences = Préférences + pref.dlg.tab.Units = Unités + pref.dlg.tab.Defaultunits = Unités par défaut + pref.dlg.tab.Materials = Matériaux + pref.dlg.tab.Custommaterials = Matériaux personnalisés + pref.dlg.tab.Options = Options + pref.dlg.tab.Miscellaneousoptions = Autres options + pref.dlg.lbl.Positiontoinsert = Position pour insérer des composants internes: + pref.dlg.lbl.Confirmdeletion = Confirmer l'effacement des simulations: + pref.dlg.lbl.User-definedthrust = Courbes de poussée personnalisées: + pref.dlg.Allthrustcurvefiles = Tous les fichiers de courbes de poussée (*.eng; *.rse; *.zip; répertoires) + pref.dlg.RASPfiles = Fichiers moteur RASP (*.eng) + pref.dlg.RockSimfiles = Fichiers moteur RockSim (*.rse) + pref.dlg.ZIParchives = Archives ZIP (*.zip) + pref.dlg.checkbox.Checkupdates = Rechercher les mises à jour au démarrage + pref.dlg.ttip.Checkupdatesnow = Recherchez les mises à jour maintenant + pref.dlg.lbl.Selectprefunits = Choisissez vos unités favorites: + pref.dlg.lbl.Rocketdimensions = Dimensions de la fusée: + pref.dlg.lbl.Linedensity = Epaisseur des lignes: + pref.dlg.lbl.Motordimensions = Dimensions du moteur: + pref.dlg.lbl.Surfacedensity = Densité de la Surface: + pref.dlg.lbl.Distance = Distance: + pref.dlg.lbl.Bulkdensity = Densité apparente: + pref.dlg.lbl.Velocity = Vitesse: + pref.dlg.lbl.Surfaceroughness = Rugosité de la Surface: + pref.dlg.lbl.Acceleration = Accélération: + pref.dlg.lbl.Area = Surface: + pref.dlg.lbl.Mass = Masse: + pref.dlg.lbl.Angle = Angle: + pref.dlg.lbl.Force = Force: + pref.dlg.lbl.Rollrate = Taux de roulis: + pref.dlg.lbl.Totalimpulse = Impulsion totale: + pref.dlg.lbl.Temperature = Température: + pref.dlg.lbl.Momentofinertia = Moment d'inertie: + pref.dlg.lbl.Pressure = Pression: + pref.dlg.lbl.Stability = Stabilité: + pref.dlg.lbl.effect1 = Les changements prendront effet la prochaine fois que vous ouvrirez une fenêtre. + pref.dlg.lbl.Checkingupdates = Recherche des mises à jour... + pref.dlg.lbl.msg1 = Une erreur est survenue durant la communication avec le serveur. + pref.dlg.lbl.msg2 = Incapable de récupérer les informations de mise à jour + pref.dlg.lbl.msg3 = Vous utilisez la dernière version d'OpenRocket. + pref.dlg.lbl.msg4 = Pas de mises à jour disponible + pref.dlg.PrefChoiseSelector1 = Toujours demander + pref.dlg.PrefChoiseSelector2 = Insérer au milieu + pref.dlg.PrefChoiseSelector3 = Ajouter à la fin + pref.dlg.PrefBooleanSelector1 = Supprimer + pref.dlg.PrefBooleanSelector2 = Confirmer + pref.dlg.Add = Ajouter + 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. + + + ! Simulation edit dialog + simedtdlg.but.runsimulation = Lancer la simulation + simedtdlg.but.resettodefault = Restaurer les paramètres par défaut + simedtdlg.but.add = Ajouter + simedtdlg.but.remove = Enlever + simedtdlg.title.Editsim = Modifier la simulation + simedtdlg.lbl.Simname = Nom de la simulation: + simedtdlg.tab.Launchcond = Conditions de lancement + simedtdlg.tab.Simopt = Options de simulation + simedtdlg.tab.Plotdata = Tracer les données + simedtdlg.tab.Exportdata = Exporter les données + simedtdlg.lbl.Motorcfg = Configuration moteur: + simedtdlg.lbl.ttip.Motorcfg = Choisir la configuration moteur à utiliser. + simedtdlg.combo.ttip.motorconf = Choisir la configuration moteur à utiliser. + simedtdlg.lbl.Wind = Vent + simedtdlg.lbl.Averwindspeed = Vitesse moyenne du vent: + simedtdlg.lbl.ttip.Averwindspeed = Vitesse moyenne du vent par rapport au sol. + simedtdlg.lbl.Stddeviation = Dérive standard: + simedtdlg.lbl.ttip.Stddeviation = La dérive standard de la vitesse du vent.
La vitesse du vent est le double de l'écart-type de la moyenne dans 95% des cas. + simedtdlg.lbl.Turbulenceintensity = Intensité de la turbulence: + simedtdlg.lbl.ttip.Turbulenceintensity1 = L'intensité de la turbulence résulte de la division de la dérive par la vitesse moyenne de vent.
+ simedtdlg.lbl.ttip.Turbulenceintensity2 = Les valeurs typiques vont de + simedtdlg.lbl.ttip.Turbulenceintensity3 = à + simedtdlg.border.Atmoscond = Conditions atmosphériques + simedtdlg.checkbox.InterStdAtmosphere = Utiliser les paramètres de l'Atmosphère Standard + simedtdlg.checkbox.ttip.InterStdAtmosphere1 = Sélectionner pour utiliser les paramètres de l'Atmosphère Standard.
Ce modèle à une température de + simedtdlg.checkbox.ttip.InterStdAtmosphere2 = et une pression de + simedtdlg.checkbox.ttip.InterStdAtmosphere3 = au niveau de la mer. + simedtdlg.lbl.Temperature = Température: + simedtdlg.lbl.ttip.Temperature = Température du site de lancement. + simedtdlg.lbl.Pressure = Pression: + simedtdlg.lbl.ttip.Pressure = Pression atmosphérique du site de lancement. + simedtdlg.lbl.Launchsite = Site de lancement + simedtdlg.lbl.Latitude = Latitude: + simedtdlg.lbl.ttip.Latitude = La latitude du site de lancement affecte l'attraction gravitationnelle de la Terre.
> Les valeurs positives sont dans l'hémisphère Nord, les valeurs négatives sur l'hémisphère Sud. + simedtdlg.lbl.Altitude = Altitude: + simedtdlg.lbl.ttip.Altitude = Altitude du site de lancement par rapport au niveau de la mer.
Cela affecte la position de la fusée dans le modèle atmosphérique. + simedtdlg.border.Launchrod = Rampe de lancement + simedtdlg.lbl.Length = Longueur: + simedtdlg.lbl.ttip.Length = Longueur de la rampe. + simedtdlg.lbl.Angle = Angle: + simedtdlg.lbl.ttip.Angle = Angle de la rampe de lancement par rapport à la verticale. + simedtdlg.lbl.Direction = Direction: + simedtdlg.lbl.ttip.Direction1 = Direction de la rampe de lance par rapport au vent.
+ simedtdlg.lbl.ttip.Direction2 = = Face au vent, + simedtdlg.lbl.ttip.Direction3 = = vent arrière. + simedtdlg.border.Simopt = Options de simulation + simedtdlg.lbl.Calcmethod = Méthode de calcul: + simedtdlg.lbl.ttip.Calcmethod = La méthode Barrowman étendue calcule les forces aérodynamique selon
les équations de Barrowman étendues pour arranger plus de pièces. + simedtdlg.lbl.ExtBarrowman = Barrowman étendu + simedtdlg.lbl.Simmethod = Méthode de Simulation: + simedtdlg.lbl.ttip.Simmethod1 = Le simulateur de six degrés de liberté permet la liberté totale de fusée en vol.
+ simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4th order Runge-Kutta 4 numerical integration. + simedtdlg.lbl.Timestep = Règlage du pas de temps: + simedtdlg.lbl.ttip.Timestep1 = Le temps entre les étapes de la simulation.
Avec un pas de temps plus petit la simulation est plus lente mais également plus précise.
+ simedtdlg.lbl.ttip.Timestep2 = The 4th order simulation method is quite accurate with a time step of + simedtdlg.but.ttip.resettodefault = Réinitialiser le pas de temps à sa valeur par défaut ( + simedtdlg.border.Simlist = Auditeurs de simulation + simedtdlg.txt.longA1 = Les auditeurs de simulation sont une fonction avancé qui permet à l'utilisateur d'écrire du code pour suivre et interagir avec la simulation. + simedtdlg.txt.longA2 = Pour plus de détails sur les auditeurs de simulation, reférez vous à la documentation technique d'OpenRocket. + simedtdlg.lbl.Curlist = Auditeurs de simulation actuel: + simedtdlg.lbl.Addsimlist = Ajouter un "auditeur de simulation" + simedtdlg.lbl.Noflightdata = Aucune donnée de vol disponible. + simedtdlg.lbl.runsimfirst = S'il vous plait faites tourner la simulation d'abord. + simedtdlg.chart.Simflight = Vol simulé + simedtdlg.dlg.Simres = Résultats de la simulation + simedtdlg.IntensityDesc.None = Aucune + simedtdlg.IntensityDesc.Verylow = Très basse + simedtdlg.IntensityDesc.Low = Basse + simedtdlg.IntensityDesc.Medium = Moyenne + simedtdlg.IntensityDesc.High = Haute + simedtdlg.IntensityDesc.Veryhigh = Très haute + simedtdlg.IntensityDesc.Extreme = Extreme + + + + + ! Simulation Panel + simpanel.but.newsimulation = Nouvelle simulation + simpanel.but.editsimulation = Modifier la simulation + simpanel.but.runsimulations = Lancer les simulations + simpanel.but.deletesimulations = Effacer les simulations + simpanel.but.plotexport = Tracer / exporter + simpanel.but.ttip.newsimulation = Ajouter une nouvelle simulation + simpanel.but.ttip.editsim = Modifier la simulation sélectionnée + simpanel.but.ttip.runsimu = Recommencer la simulation sélectionnée + simpanel.but.ttip.deletesim = Effacer les simulations sélectionnées + simpanel.checkbox.donotask = Ne plus me demander + simpanel.lbl.defpref = Vous pouvez changer le mode opératoire par défaut dans préferences. + simpanel.dlg.lbl.DeleteSim1 = Effacer les simulations sélectionnées? + simpanel.dlg.lbl.DeleteSim2 = Cette opération n'est pas réversible. + simpanel.dlg.lbl.DeleteSim3 = Effacer les simulations + simpanel.col.Name = Nom + simpanel.col.Motors = Moteurs + simpanel.col.Apogee = Apogée + simpanel.col.Maxvelocity = Vélocité Max. + simpanel.col.Maxacceleration = Accélération Max. + simpanel.col.Timetoapogee = Temps pour atteindre l'apogée + simpanel.col.Flighttime = Temps de vol + simpanel.col.Groundhitvelocity = Vitesse à l'atterrissage + + ! SimulationRunDialog + SimuRunDlg.title.RunSim = Simulations en cour... + SimuRunDlg.lbl.Running = En cour ... + SimuRunDlg.lbl.Simutime = Temps de simulation: + SimuRunDlg.lbl.Altitude = Altitude: + SimuRunDlg.lbl.Velocity = Vélocité: + SimuRunDlg.msg.Unabletosim = Simulation impossible: + SimuRunDlg.msg.errorOccurred = Une erreur s'est produite durant la simulation: + SimuRunDlg.msg.AnException1 = Une exception s'est produite lors de la simulation: + SimuRunDlg.msg.AnException2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous. + SimuRunDlg.msg.AssertionError1 = Une erreur de calcul s'est produite lors de la simulation. + SimuRunDlg.msg.AssertionError2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous. + SimuRunDlg.msg.unknownerror1 = Une erreur inconnue s'est produite lors de la simulation. + SimuRunDlg.msg.unknownerror2 = Le programme peut être instable, vous devez enregistrer toutes vos créations et redémarrez OpenRocket maintenant! + + + ! SimulationExportPanel + SimExpPan.desc = Fichiers dont les données sont séparées par une virgule (*.csv) + SimExpPan.border.Vartoexport = Variables à exporter + SimExpPan.but.Selectall = Tout sélectionner + SimExpPan.but.Selectnone = Ne rien sélectionner + SimExpPan.border.Fieldsep = Séparateur de champ + SimExpPan.lbl.Fieldsepstr = Séparateur de champ: + SimExpPan.lbl.longA1 = La chaîne utilisée pour séparer les champs dans le fichier exporté.
+ SimExpPan.lbl.longA2 = Utiliser ',' pour un fichier (CSV). + SimExpPan.checkbox.Includesimudesc = Inclure la description de la simulation + SimExpPan.checkbox.ttip.Includesimudesc = Inclure un commentaire au début du fichier pour décrire la simulation. + SimExpPan.border.Comments = Commentaires + SimExpPan.checkbox.Includefielddesc = Inclure les descriptions des champs + SimExpPan.checkbox.ttip.Includefielddesc = Inclure une ligne de commentaire avec la description des variables exportées. + SimExpPan.checkbox.Incflightevents = Inclure les événements de vol + SimExpPan.checkbox.ttip.Incflightevents = Inclure une ligne de commentaire pour chaque évènement de vol. + SimExpPan.lbl.Commentchar = Symbole pour les commentaires: + SimExpPan.lbl.ttip.Commentchar = Le symbole utilisé pour une ligne de commentaires. + SimExpPan.but.Exporttofile = Exporter dans un fichier... + SimExpPan.Fileexists.desc1 = Le fichier \" + SimExpPan.Fileexists.desc2 = \" existe déjà. Ecraser? + SimExpPan.Fileexists.title = Le fichier existe + SimExpPan.ExportingVar.desc1 = Exporter 1 variable sur un total de + SimExpPan.ExportingVar.desc2 = Exportation + SimExpPan.ExportingVar.desc3 = variable sur un total de + SimExpPan.Col.Variable = Variable + SimExpPan.Col.Unit = Unité + + ! MotorPlot + MotorPlot.title.Motorplot = Courbe du moteur + MotorPlot.but.Select = Selection + MotorPlot.Chart.Motorthrustcurve = Courbe de poussée moteur + MotorPlot.Chart.Time = Temps / s + MotorPlot.Chart.Thrust = Poussée / N + MotorPlot.txt.Designation = Désignation: + MotorPlot.txt.Manufacturer = Manufacturer: + MotorPlot.txt.Type = Type: + MotorPlot.txt.Delays = Retards: + MotorPlot.txt.Comment = Commentaires:\n + + + + ! Simulation plot panel + simplotpanel.lbl.Presetplotconf = Prédéfinir les paramètres du tracé: + simplotpanel.lbl.Xaxistype = Axe des X: + simplotpanel.lbl.Unit = Unités: + simplotpanel.lbl.Yaxistypes = Axe des Y: + simplotpanel.lbl.Flightevents = Evénements du vol: + simplotpanel.but.All = Tous + simplotpanel.but.None = Aucun + simplotpanel.but.NewYaxisplottype = Nouveau type de tracé de l'axe Y + simplotpanel.but.Plotflight = Tracer le vol + simplotpanel.lbl.Axis = Axes: + simplotpanel.but.ttip.Removethisplot = Effacer le tracé + 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. + simplotpanel.OptionPane.lbl1 = Un maximum de 15 tracés est permis. + simplotpanel.OptionPane.lbl2 = Impossible d'ajouter le tracé + simplotpanel.AUTO_NAME = Auto + simplotpanel.LEFT_NAME = Gauche + simplotpanel.RIGHT_NAME = Droite + simplotpanel.CUSTOM = Personnalisé + + + + ! Component add buttons + compaddbuttons.Bodycompandfinsets = Pièces du corps et ailerons + compaddbuttons.Nosecone = Cône -compaddbuttons.Bodytube = Tube du corps ++compaddbuttons.Bodytube = Tube du\ncorps + compaddbuttons.Transition = Transition + compaddbuttons.Trapezoidal = Trapézoïdale + compaddbuttons.Elliptical = Elliptique + compaddbuttons.Freeform = Forme libre -compaddbuttons.Launchlug = Tube de guidage ++compaddbuttons.Launchlug = Tube de\nguidage + compaddbuttons.Innercomponent = Pièces internes + compaddbuttons.Innertube = Tube interne + compaddbuttons.Coupler = Coupleur -compaddbuttons.Centeringring = Anneau\nde centrage ++compaddbuttons.Centeringring = Anneau de\ncentrage + compaddbuttons.Bulkhead = Cloison -compaddbuttons.Engineblock = Bague \nde rétention\nmoteur ++compaddbuttons.Engineblock = Bague de\nrétention\nmoteur + compaddbuttons.Massobjects = Pièces pleines + compaddbuttons.Parachute = Parachute + compaddbuttons.Streamer = Banderole -compaddbuttons.Shockcord = Cordon amortisseur ++compaddbuttons.Shockcord = Cordon\namortisseur + compaddbuttons.Masscomponent = Poids + compaddbuttons.Donotaskmeagain = Ne plus me poser la question + compaddbuttons.Selectcomppos = Position de la pièce + compaddbuttons.lbl.Youcanchange = Vous pouvez modifier le fonctionnement par défaut dans les préférences. + compaddbuttons.lbl.insertcomp = Insérez la pièce après l'élément actuel ou en tant que dernier élément? + compaddbuttons.askPosition.Inserthere = Ajouter ici + compaddbuttons.askPosition.Addtotheend = Ajouter à la fin + compaddbuttons.askPosition.Cancel = Annuler + + ! Component Analysis Dialog + componentanalysisdlg.Componentanalysis = Analyse pièce + componentanalysisdlg.lbl.winddir = Direction du vent: + componentanalysisdlg.TitledBorder.warnings = Avertissements: + componentanalysisdlg.ToggleBut.worst = Pire + componentanalysisdlg.lbl.angleofattack = Angle d'attaque: + componentanalysisdlg.lbl.machnumber = Mach number: + componentanalysisdlg.lbl.rollrate = Taux de roulis: + componentanalysisdlg.lbl.activestages = Etages actifs: + componentanalysisdlg.lbl.motorconf = Configuration moteur: + componentanalysisdlg.TabStability.Col.Component = Pièce + componentanalysisdlg.TabStability = Stabilité + componentanalysisdlg.TabStability.ttip = Information de stabilité + componentanalysisdlg.dragTableModel.Col.Component = Pièce + componentanalysisdlg.dragTableModel.Col.Pressure = Pression CD + componentanalysisdlg.dragTableModel.Col.Base = Base CD + componentanalysisdlg.dragTableModel.Col.friction = Friction CD + componentanalysisdlg.dragTableModel.Col.total = Total CD + componentanalysisdlg.dragTabchar = Caractéristiques de traînée + componentanalysisdlg.dragTabchar.ttip = Caractéristiques de traînée + componentanalysisdlg.rollTableModel.Col.component = Pièce + componentanalysisdlg.rollTableModel.Col.rollforc = Coefficient de forçage de roulis + componentanalysisdlg.rollTableModel.Col.rolldamp = Coefficient amortisseur de roulis + componentanalysisdlg.rollTableModel.Col.total = Total Cl + componentanalysisdlg.rollTableModel = Dynamique du roulis + componentanalysisdlg.rollTableModel.ttip = Dynamique du roulis + componentanalysisdlg.println.closingmethod = Méthode de clôture appelée: + componentanalysisdlg.println.settingnam = SETTING NAN VALUES + componentanalysisdlg.lbl.reflenght = Longueur de référence: + componentanalysisdlg.lbl.refarea = Aire de référence: + !componentanalysisdlg.but.close =Fermer + + ! Custom Material dialog + custmatdlg.title.Custommaterial = Matériau personnalisé + custmatdlg.lbl.Materialname = Nom du matériau: + custmatdlg.lbl.Materialtype = Type de matériau: + custmatdlg.lbl.Materialdensity = Densité du matériau: + custmatdlg.checkbox.Addmaterial = Ajouter la pièce dans la base de données + + + ! Ring Component Config + ringcompcfg.OuterRadius = Diamètre extérieur + ringcompcfg.Automatic = Automatique + ringcompcfg.InnerRadius = Diamètre intérieur + ringcompcfg.Thickness = Epaisseur + ringcompcfg.Length = Longueur + ringcompcfg.Positionrelativeto = Position relative à: + ringcompcfg.plus = plus + !ringcompcfg.PositionValue = PositionValue + ringcompcfg.Radialdistance = Rayon: + ringcompcfg.Distancefrom = Distance de l'axe central de la fusée + ringcompcfg.Radialdirection = Azimut + ringcompcfg.radialdirectionfrom = Sens par rapport à l'axe central de la fusée + ringcompcfg.but.Reset = Réinitialisation + ringcompcfg.but.Resetcomponant = Réinitialiser la pièce à l'axe de la fusée + ringcompcfg.EngineBlock.desc = Un bloc moteur empêche le moteur de se déplacer vers l'avant dans le tube porte moteur.

Pour ajouter un moteur, créer un tube ou un tube interne et marquer le comme porte moteur dans l'onglet Moteur. + 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. + + + + ! Body Tube Config + BodyTubecfg.lbl.Bodytubelength = Longueur du tube: + BodyTubecfg.lbl.Outerdiameter = Diamètre externe: + BodyTubecfg.lbl.Innerdiameter = Diamètre interne: + BodyTubecfg.lbl.Wallthickness = Epaisseur des parois: + BodyTubecfg.tab.General = Général + BodyTubecfg.tab.Generalproperties = Propriétés générales + BodyTubecfg.tab.Motor = Moteur + BodyTubecfg.tab.Motormountconf = Configuration porte moteur + BodyTubecfg.checkbox.Automatic = Automatique + BodyTubecfg.checkbox.Filled = Aspérités bouchées + + ! FinSetConfig + FinSetConfig.tab.Fintabs = Pattes des ailerons + FinSetConfig.tab.Through-the-wall = Ailerons traversant le fuselage + FinSetConfig.but.Converttofreeform = Convertir en forme libre + FinSetConfig.but.Converttofreeform.ttip = Convertir ce jeu d'ailerons en forme libre + FinSetConfig.Convertfinset = Convertir le jeu d'ailerons + FinSetConfig.but.Splitfins = Séparer les ailerons + FinSetConfig.but.Splitfins.ttip = Diviser le jeu d'ailerons en aileron indépendant + FinSetConfig.lbl.Through-the-wall = Ailerons traversant le fuselage: + FinSetConfig.lbl.Tablength = Longueur de la patte: + FinSetConfig.ttip.Tablength = La longueur de la patte de l'aileron. + FinSetConfig.lbl.Tabheight = Hauteur de la patte: + FinSetConfig.ttip.Tabheight = La hauteur de l'envergure de la patte de l'aileron. + FinSetConfig.lbl.Tabposition = Position de la patte: + FinSetConfig.ttip.Tabposition = La position de la patte de l'ailerons. + FinSetConfig.lbl.relativeto = relative à + + ! MotorDatabaseLoadingDialog + MotorDbLoadDlg.title = Chargement des moteurs + MotorDbLoadDlg.Loadingmotors = Chargement des moteurs... + + ! RocketConfig + RocketCfg.lbl.Designname = Nom du projet: + RocketCfg.lbl.Designer = Concepteur: + RocketCfg.lbl.Comments = Commentaires: + RocketCfg.lbl.Revisionhistory = Historique des modifications: + RocketCfg.lbl.Material = Matériaux: + + ! ShockCordConfig + ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur + + ! RocketComponentConfig + RocketCompCfg.lbl.Componentname = Nom de la pièce: + RocketCompCfg.ttip.Thecomponentname = Le nom de la pièce. + RocketCompCfg.tab.Override = Forcer la valeur + RocketCompCfg.tab.MassandCGoverride = Forçage de la Masse et du CG + RocketCompCfg.tab.Figure = Forme + RocketCompCfg.tab.Figstyleopt = Options de la forme + RocketCompCfg.tab.Comment = Commentaires + RocketCompCfg.tab.Specifyacomment = Commentaires concernant la pièce + RocketCompCfg.lbl.Mass = Masse: + RocketCompCfg.lbl.Componentmass = Masse de la pièce: + RocketCompCfg.lbl.overriddento = (forcé à + RocketCompCfg.lbl.overriddenby = (forcé par + RocketCompCfg.lbl.Componentmaterial = Matériaux composant la pièce: + RocketCompCfg.lbl.Componentfinish = Finition de la pièce: + RocketCompCfg.lbl.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce. + RocketCompCfg.combo.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce. + RocketCompCfg.lbl.longA1 = La finition de la pièce affecte l'aérodynamisme de la pièce.
+ RocketCompCfg.lbl.longA2 = La valeur indiquée est la hauteur moyenne de la rugosité de la surface. + RocketCompCfg.but.Setforall = Appliquer à tous + RocketCompCfg.but.ttip.Setforall = Régler la finition pour tous les composants de la fusée. + RocketCompCfg.lbl.Overridemassorcenter = Forcer la masse ou le centre de gravité du + RocketCompCfg.checkbox.Overridemass = Forcer la masse: + RocketCompCfg.checkbox.Overridecenterofgrav = Forcer le centre de gravité: + RocketCompCfg.checkbox.OverridemassandCG = Forcer la masse et le centre de gravité de tous les sous composants + RocketCompCfg.lbl.longB1 = Le forçage de la masse n'inclus pas le ou les moteurs.
+ RocketCompCfg.lbl.longB2 = Le centre de gravité est mesuré à partir de l'extrémité avant de la fusée + RocketCompCfg.lbl.Commentsonthe = Commentaires à propos du + RocketCompCfg.lbl.Figurestyle = Modèle de forme: + RocketCompCfg.lbl.Componentcolor = Couleur de la pièce: + RocketCompCfg.lbl.Choosecolor = Choisir la couleur + RocketCompCfg.checkbox.Usedefaultcolor = Utiliser la couleur par défaut + RocketCompCfg.lbl.Complinestyle = Style de lignes pour les pièces: + RocketCompCfg.but.Saveasdefstyle = Sauver le modèle par défaut + RocketCompCfg.lbl.Diameter = Diamètre: + RocketCompCfg.lbl.Length = Longueur: + RocketCompCfg.lbl.Thickness = Epaisseur: + RocketCompCfg.checkbox.Endcapped = Arrière clos + RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped. + RocketCompCfg.title.Noseconeshoulder = accotement du cône + RocketCompCfg.title.Aftshoulder = accotement arrière + RocketCompCfg.border.Foreshoulder = Fore shoulder + !RocketCompCfg.lbl.Length = Length: + + ! BulkheadConfig + BulkheadCfg.tab.Radius = Rayon: + BulkheadCfg.tab.Thickness = Epaisseur: + BulkheadCfg.tab.General = Général + BulkheadCfg.tab.Generalproperties = Propriétés générales + + !CenteringRingConfig + CenteringRingCfg.tab.Outerdiam = Diamètre externe: + CenteringRingCfg.tab.Innerdiam = Diamètre interne: + CenteringRingCfg.tab.Thickness = Epaisseur: + CenteringRingCfg.tab.General = Général + CenteringRingCfg.tab.Generalproperties = Propriétés Générales + + !ComponentConfigDialog + ComponentCfgDlg.configuration = configuration + ComponentCfgDlg.Modify = Modifier + + !EllipticalFinSetConfig + EllipticalFinSetCfg.Nbroffins = Nombre d'ailerons: + EllipticalFinSetCfg.Rotation = Rotation: + EllipticalFinSetCfg.Fincant = Inclinaison de l'aileron: + EllipticalFinSetCfg.Rootchord = Emplanture: + EllipticalFinSetCfg.Height = Hauteur: + EllipticalFinSetCfg.Positionrelativeto = Position relative à: + EllipticalFinSetCfg.plus = plus + EllipticalFinSetCfg.FincrossSection = Coupe de l'aileron: + EllipticalFinSetCfg.Thickness = Epaisseur: + EllipticalFinSetCfg.General = Général + EllipticalFinSetCfg.Generalproperties = Propriétés Générales + EllipticalFinSetCfg.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au corps de la fusée + + !FreeformFinSetConfig + FreeformFinSetCfg.tab.General = Général + FreeformFinSetCfg.tab.ttip.General = Propriétés générales + FreeformFinSetCfg.tab.Shape = Forme + FreeformFinSetCfg.tab.ttip.Finshape = Forme de l'aileron + FreeformFinSetCfg.lbl.Numberoffins = Nombre d'ailerons: + FreeformFinSetCfg.lbl.Finrotation = Rotation des ailerons: + FreeformFinSetCfg.lbl.Fincant = Inclinaison de l'aileron: + FreeformFinSetCfg.lbl.ttip.Fincant = angle d'inclinaison des ailerons par rapport au corps de la fusée. + FreeformFinSetCfg.lbl.Posrelativeto = Position par rapport à: + FreeformFinSetCfg.lbl.plus = plus + FreeformFinSetCfg.lbl.FincrossSection = Coupe de l'aileron: + FreeformFinSetCfg.lbl.Thickness = Epaisseur: + + !InnerTubeConfig + InnerTubeCfg.tab.Motor = Moteur + InnerTubeCfg.tab.ttip.Motor = Configuration du porte moteur + InnerTubeCfg.tab.Cluster = Cluster + InnerTubeCfg.tab.ttip.Cluster = Configuration du cluster + InnerTubeCfg.tab.Radialpos = Position circulaire + InnerTubeCfg.tab.ttip.Radialpos = Position circulaire + InnerTubeCfg.lbl.Selectclustercfg = Choisir la configuration du cluster: + InnerTubeCfg.lbl.TubeSep = Séparation du tube: + InnerTubeCfg.lbl.ttip.TubeSep = La Séparation des tubes, 1.0 = chacun se touche + InnerTubeCfg.lbl.Rotation = Rotation: + InnerTubeCfg.lbl.ttip.Rotation = Angle de rotation du cluster + InnerTubeCfg.lbl.Rotangle = Angle de rotation de la configuration du cluster + InnerTubeCfg.but.Splitcluster = Séparer le cluster + InnerTubeCfg.lbl.longA1 = séparer le cluster en pièces distinctes.
+ InnerTubeCfg.lbl.longA2 = Cela duplique également tous les composants rattacher à ce tube interne. + InnerTubeCfg.but.Resetsettings = Réinitialiser les réglages + InnerTubeCfg.but.ttip.Resetsettings = Réinitialiser la séparation et la rotation aux valeurs par défauts + + ! LaunchLugConfig + LaunchLugCfg.lbl.Length = Longueur: + LaunchLugCfg.lbl.Outerdiam = Diamètre externe: + LaunchLugCfg.lbl.Innerdiam = Diamètre interne: + LaunchLugCfg.lbl.Thickness = Epaisseur: + LaunchLugCfg.lbl.Radialpos = Position circulaire: + LaunchLugCfg.lbl.Posrelativeto = Position relative à: + LaunchLugCfg.lbl.plus = plus + LaunchLugCfg.tab.General = Général + LaunchLugCfg.tab.Generalprop = Propriétés Générales + + ! MassComponentConfig + MassComponentCfg.lbl.Mass = Masse + MassComponentCfg.lbl.Length = Longueur + MassComponentCfg.lbl.Diameter = Diamètre + MassComponentCfg.lbl.PosRelativeto = Position relative à: + MassComponentCfg.lbl.plus = plus + MassComponentCfg.tab.General = Général + MassComponentCfg.tab.ttip.General = Propriétés Générales + MassComponentCfg.tab.Radialpos = Position sur le périmètre + MassComponentCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre + MassComponentCfg.lbl.Radialdistance = Rayon: + MassComponentCfg.lbl.Radialdirection = Azimut: + MassComponentCfg.but.Reset = Réinitialiser + + ! MotorConfig + MotorCfg.checkbox.compmotormount = Cette pièce est un porte moteur + MotorCfg.lbl.Motorcfg = Configuration du moteur: + MotorCfg.but.New = Nouveau + MotorCfg.lbl.Currentmotor = Moteur actuel: + MotorCfg.lbl.Motoroverhang = Surplomb du moteur: + MotorCfg.lbl.Ignitionat = Allumage à: + MotorCfg.lbl.plus = plus + MotorCfg.lbl.seconds = secondes + MotorCfg.lbl.longA1 = Le projet actuel n'a qu'un étage. + MotorCfg.lbl.longA2 = Des étages peuvent-être ajoutés en cliquant \"Nouvel étage\". + MotorCfg.lbl.longB1 = Le projet actuel a + MotorCfg.lbl.longB2 = étage(s). + MotorCfg.but.Selectmotor = Choisir le moteur + MotorCfg.but.Removemotor = Enlever le moteur + MotorCfg.lbl.motorLabel = Aucun + + ! NoseConeConfig + NoseConeCfg.lbl.Noseconeshape = Forme du nez de la fusée: + NoseConeCfg.lbl.Shapeparam = Paramètre de la forme: + NoseConeCfg.lbl.Noseconelength = Longueur du nez de la fusée: + NoseConeCfg.lbl.Basediam = Diamètre de la base: + NoseConeCfg.checkbox.Automatic = Automatique + NoseConeCfg.lbl.Wallthickness = Epaisseur de la paroi: + NoseConeCfg.checkbox.Filled = Aspérités bouchées + NoseConeCfg.tab.General = Général + NoseConeCfg.tab.ttip.General = Propriétés générales + NoseConeCfg.tab.Shoulder = Accotement + NoseConeCfg.tab.ttip.Shoulder = Propriétés de l'accotement + + ! ParachuteConfig + ParachuteCfg.lbl.Canopy = Canopée: + ParachuteCfg.lbl.Diameter = Diamètre: + ParachuteCfg.lbl.Material = Matériau: + ParachuteCfg.combo.MaterialModel = La nature du matériau affecte le poids de la pièce. + ParachuteCfg.lbl.longA1 = Coefficient de traînée CD: + ParachuteCfg.lbl.longB1 = Le coefficient de traînée dépend de la surface totale du parachute.
+ ParachuteCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente. + ParachuteCfg.lbl.longB3 = Une valeur standard pour le parachute est 0.8. + ParachuteCfg.but.Reset = Réinitialiser + ParachuteCfg.lbl.Shroudlines = Suspentes: + ParachuteCfg.lbl.Numberoflines = Nombre de suspentes: + ParachuteCfg.lbl.Linelength = Longueur des suspentes: + ParachuteCfg.lbl.Material = Matériau: + ParachuteCfg.lbl.Posrelativeto = Position relative à: + ParachuteCfg.lbl.plus = plus + ParachuteCfg.lbl.Packedlength = Longueur plié: + ParachuteCfg.lbl.Packeddiam = Diamètre plié: + ParachuteCfg.lbl.Deploysat = Déploiement à: + ParachuteCfg.lbl.seconds = secondes + ParachuteCfg.lbl.Altitude = Altitude: + ParachuteCfg.tab.General = Général + ParachuteCfg.tab.ttip.General = Propriétés générales + ParachuteCfg.tab.Radialpos = Position sur le périmètre + ParachuteCfg.tab.ttip.Radialpos = Configuration de la position radial + ParachuteCfg.lbl.Radialdistance = Rayon: + ParachuteCfg.lbl.Radialdirection = Azimut: + ParachuteCfg.but.Reset = Réinitialiser + + ! ShockCordConfig + ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur + ShockCordCfg.lbl.Shockcordmaterial = Matériau du cordon amortisseur: + ShockCordCfg.lbl.Posrelativeto = Position relative à: + ShockCordCfg.lbl.plus = plus + ShockCordCfg.lbl.Packedlength = Longueur emballé: + ShockCordCfg.lbl.Packeddiam = Diamètre emballé: + ShockCordCfg.tab.General = Général + ShockCordCfg.tab.ttip.General = Propriétés générales + + !SleeveConfig + SleeveCfg.tab.Outerdiam = Diamètre externe: + SleeveCfg.tab.Innerdiam = Diamètre interne: + SleeveCfg.tab.Wallthickness = Epaisseur des parois: + SleeveCfg.tab.Length = Longueur: + SleeveCfg.tab.General = Général + SleeveCfg.tab.Generalproperties = Propriétés générales + + ! StreamerConfig + StreamerCfg.lbl.Striplength = Longueur de la bande: + StreamerCfg.lbl.Stripwidth = Largeur de la bande: + StreamerCfg.lbl.Striparea = Surface de la bande: + StreamerCfg.lbl.Aspectratio = Aspect ratio: + StreamerCfg.lbl.Material = Matériau: + StreamerCfg.combo.ttip.MaterialModel = La nature du matériau affecte le poids de la pièce. + StreamerCfg.lbl.longA1 = Coefficient de traînée CD: + StreamerCfg.lbl.longB1 = Le coefficient de trainée dépend de la surface totale de la banderole.
+ StreamerCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente. + StreamerCfg.lbl.Automatic = Automatique + StreamerCfg.lbl.longC1 = le coefficient de trainée dépend de la surface totale de la banderole. + StreamerCfg.lbl.Posrelativeto = Position relative à: + StreamerCfg.lbl.plus = plus + StreamerCfg.lbl.Packedlength = Longueur emballé: + StreamerCfg.lbl.Packeddiam = Diamètre emballé: + StreamerCfg.lbl.Deploysat = Déploiement à: + StreamerCfg.lbl.seconds = secondes + StreamerCfg.lbl.Altitude = Altitude: + StreamerCfg.tab.General = Général + StreamerCfg.tab.ttip.General = Propriétés générales + StreamerCfg.tab.Radialpos = Position sur le périmètre + StreamerCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre + StreamerCfg.lbl.Radialdistance = Rayon: + StreamerCfg.lbl.Radialdirection = Azimut: + StreamerCfg.but.Reset = Réinitialiser + + ! ThicknessRingComponentConfig + ThicknessRingCompCfg.tab.Outerdiam = Diamètre externe: + ThicknessRingCompCfg.tab.Innerdiam = Diamètre interne: + ThicknessRingCompCfg.tab.Wallthickness = Epaisseur de la paroi: + ThicknessRingCompCfg.tab.Length = Longueur: + ThicknessRingCompCfg.tab.General = Général + ThicknessRingCompCfg.tab.Generalprop = Propriétés générales + + ! TransitionConfig + TransitionCfg.lbl.Transitionshape = Forme de la transition: + TransitionCfg.checkbox.Clipped = Emboitée + TransitionCfg.lbl.Shapeparam = Paramètre de la forme: + TransitionCfg.lbl.Transitionlength = Longueur de la transition: + TransitionCfg.lbl.Forediam = Diamètre avant: + TransitionCfg.checkbox.Automatic = Automatique + TransitionCfg.lbl.Aftdiam = Diamètre arrière: + TransitionCfg.lbl.Wallthickness = Epaisseur de la paroi: + TransitionCfg.checkbox.Filled = Aspérités bouchées + TransitionCfg.tab.General = Général + TransitionCfg.tab.Generalproperties = Propriétés Générales + TransitionCfg.tab.Shoulder = Accotement + TransitionCfg.tab.Shoulderproperties = Propriétés de l'accotement + + ! TrapezoidFinSetConfig + TrapezoidFinSetCfg.lbl.Nbroffins = Nombre d'ailerons: + TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Le nombre d'ailerons composant le jeu. + TrapezoidFinSetCfg.lbl.Finrotation = Rotation de l'aileron: + TrapezoidFinSetCfg.lbl.ttip.Finrotation = Angle du premier aileron dans le jeu. + TrapezoidFinSetCfg.lbl.Fincant = Inclinaison de l'aileron: + TrapezoidFinSetCfg.lbl.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au tube du corps de la fusée. + TrapezoidFinSetCfg.lbl.Rootchord = Longueur de la base de l'aileron: + TrapezoidFinSetCfg.lbl.Tipchord = Longueur du bout de l'aileron: + TrapezoidFinSetCfg.lbl.Height = Hauteur: + TrapezoidFinSetCfg.lbl.Sweeplength = Longueur du bord d'attaque: + TrapezoidFinSetCfg.lbl.Sweepangle = Angle du bord d'attaque: + TrapezoidFinSetCfg.lbl.FincrossSection = Coupe de l'aileron: + TrapezoidFinSetCfg.lbl.Thickness = Epaisseur: + TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative à: + TrapezoidFinSetCfg.lbl.plus = plus + TrapezoidFinSetCfg.tab.General = Général + TrapezoidFinSetCfg.tab.Generalproperties = Propriétés générales + + !MotorConfigurationModel + MotorCfgModel.Editcfg = Modifier les configurations + + ! StorageOptionChooser + StorageOptChooser.lbl.Simdatatostore = Données simulées à stocker: + StorageOptChooser.rdbut.Allsimdata = Toutes les données des simulations + StorageOptChooser.lbl.longA1 = Enregistrer toutes les données des simulations.
+ StorageOptChooser.lbl.longA2 = Cela peut entraîner de très gros fichiers! + StorageOptChooser.rdbut.Every = Every + StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
+ StorageOptChooser.lbl.longB2 = Des valeurs plus grandes produisent des fichiers plus petits. + StorageOptChooser.lbl.seconds = secondes + StorageOptChooser.rdbut.Onlyprimfig = Seuls les chiffres primaires + StorageOptChooser.lbl.longC1 = Stocker seulement les valeurs montrées dans le tableau récapitulatif.
+ StorageOptChooser.lbl.longC2 = Cela produira des fichiers plus petit. + StorageOptChooser.checkbox.Compfile = Compresse le fichier + StorageOptChooser.lbl.UsingComp = Utiliser la compression réduit significativement la taille du fichier. + StorageOptChooser.lbl.longD1 = Une estimation sur la taille qu'aurait le fichier résultant avec les options actuelles. + StorageOptChooser.ttip.Saveopt = Options de sauvegarde + StorageOptChooser.lbl.Estfilesize = Taille estimée du fichier: + StorageOptChooser.lbl.Saveopt = Options de sauvegarde + + ! ThrustCurveMotorSelectionPanel + TCMotorSelPan.lbl.Selrocketmotor = Choisir le moteur fusée: + TCMotorSelPan.checkbox.hideSimilar = Cacher les courbes de poussées similaires + TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Montrer tous les moteurs + TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Montrer les moteurs avec un diametre inferieur au porte moteur + TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Montrer les moteurs avec un diametre egale au porte moteur + TCMotorSelPan.lbl.Motormountdia = Diametre du tube porte moteur: + TCMotorSelPan.lbl.Search = Rechercher: + TCMotorSelPan.lbl.Selectthrustcurve = Choisir la courbe de poussée: + TCMotorSelPan.lbl.Ejectionchargedelay = Retard de la charge d'ejection: + TCMotorSelPan.equalsIgnoreCase.None = Aucun + TCMotorSelPan.lbl.NumberofsecondsorNone = (Nombre de secondes ou \"Aucun\") + TCMotorSelPan.lbl.Totalimpulse = Impulsion totale: + TCMotorSelPan.lbl.Avgthrust = Poussée moyenne: + TCMotorSelPan.lbl.Maxthrust = Poussée Max.: + TCMotorSelPan.lbl.Burntime = Temps de combustion: + TCMotorSelPan.lbl.Launchmass = Masse au lancement: + TCMotorSelPan.lbl.Emptymass = Masse à vide: + TCMotorSelPan.lbl.Datapoints = Points de données: + TCMotorSelPan.lbl.Digest = Assimilation: + TCMotorSelPan.title.Thrustcurve = Courbe de poussée: + TCMotorSelPan.title.Thrust = Poussée + TCMotorSelPan.delayBox.None = Aucun + + ! PlotDialog + PlotDialog.title.Flightdataplot = Tracé du vol + PlotDialog.Chart.Simulatedflight = Simulation du vol + PlotDialog.CheckBox.Showdatapoints = Afficher un point pour chaque valeur + PlotDialog.lbl.Chart = Cliquer+déplacer en bas +droite pour agrandir, haut+gauche pour rétrécir + + ! "main" prefix is used for the main application dialog + + main.menu.file = Fichier + main.menu.file.new = Nouveau + main.menu.file.open = Ouvrir... + main.menu.file.openExample = Ouvrir exemple... + main.menu.file.save = Sauvegarder + main.menu.file.saveAs = Sauvegarder sous... + main.menu.file.print = Imprimer... + main.menu.file.close = Fermer + main.menu.file.quit = Quitter + + main.menu.edit = Editer + main.menu.edit.undo = Annuler modification + main.menu.edit.redo = Refaire modification + main.menu.edit.cut = Couper + main.menu.edit.copy = Copier + main.menu.edit.paste = Coller + main.menu.edit.delete = Effacer + main.menu.edit.preferences = Préférences + + main.menu.analyze = Analyse + main.menu.analyze.componentAnalysis = Analyse des Pièces + + main.menu.help = Aide + main.menu.help.license = Licence + main.menu.help.bugReport = Rapport d'erreurs + main.menu.help.debugLog = Debug log + main.menu.help.about = A propos + + main.menu.debug = Debug + main.menu.debug.whatisthismenu = Quel est ce menu? + main.menu.debug.createtestrocket = Créer une fusée test + + ! database + ! Translate here all material database + ! + + ! Material database + ! BULK_MATERIAL + Databases.materials.Acrylic = Acrylique + Databases.materials.Balsa = Balsa + Databases.materials.Birch = Bouleau + Databases.materials.Cardboard = Carton + Databases.materials.Carbonfiber = Fibre de carbone + Databases.materials.Cork = Liège + Databases.materials.DepronXPS = Depron (XPS) + Databases.materials.Fiberglass = Fibre de verre + Databases.materials.Kraftphenolic = Kraft phénolique + Databases.materials.Maple = Érable + Databases.materials.Paperoffice = Papier (bureau) + Databases.materials.Pine = Pin + Databases.materials.Plywoodbirch = Contre-plaqué (bouleau) + Databases.materials.PolycarbonateLexan = Polycarbonate (Lexan) + Databases.materials.Polystyrene = Polystyrène + Databases.materials.PVC = PVC + Databases.materials.Spruce = Sapin + Databases.materials.StyrofoamgenericEPS = Polystyrène (générique EPS) + Databases.materials.StyrofoamBluefoamXPS = \"Mousse Bleue\" de polystyrène (XPS) + Databases.materials.Quantumtubing = Quantum tubing + !SURFACE_MATERIAL + Databases.materials.Ripstopnylon = Ripstop nylon + Databases.materials.Mylar = Mylar + Databases.materials.Polyethylenethin = Polyéthylène (fin) + Databases.materials.Polyethyleneheavy = Polyéthylène (lourd) + Databases.materials.Silk = Soie + Databases.materials.Paperoffice1 = Papier (bureau) + Databases.materials.Cellophane = Cellophane -Databases.materials.Creapepaper = Cr\u00eape paper ++Databases.materials.Crepepaper = Cr\u00eape paper + ! LINE_MATERIAL + Databases.materials.Threadheavy-duty = Fil(résistant) + Databases.materials.Elasticcordround2mm = Corde Elastique (ronde 2mm, 1/16 in) + Databases.materials.Elasticcordflat6mm = Corde Elastique (plate 6mm, 1/4 in) + Databases.materials.Elasticcordflat12mm = Corde Elastique (plate 12mm, 1/2 in) + Databases.materials.Elasticcordflat19mm = Corde Elastique (plate 19mm, 3/4 in) + Databases.materials.Elasticcordflat25mm = Corde Elastique (plate 25mm, 1 in) + Databases.materials.Braidednylon2mm = Nylon tressé (2 mm, 1/16 in) + Databases.materials.Braidednylon3mm = Nylon tressé (3 mm, 1/8 in) + Databases.materials.Tubularnylon11mm = Nylon tubulaire (11 mm, 7/16 in) + Databases.materials.Tubularnylon14mm = Nylon tubulaire (14 mm, 9/16 in) + Databases.materials.Tubularnylon25mm = Nylon tubulaire (25 mm, 1 in) + + ! ExternalComponent + ExternalComponent.Rough = Rugeuse + ExternalComponent.Unfinished = Non peinte + ExternalComponent.Regularpaint = Peinture classique + ExternalComponent.Smoothpaint = Fine couche + ExternalComponent.Polished = Polie + + + ! LineStyle + LineStyle.Solid = Ligne pleine + LineStyle.Dashed = Tiret + LineStyle.Dotted = Ligne pointillée + LineStyle.Dash-dotted = Ligne Pointillée et Tiret + LineStyle.Defaultstyle = Style par défaut + + ! Shape + Shape.Conical = Conique + Shape.Conical.desc1 = Un cône conique a un profil triangulaire. + Shape.Conical.desc2 = Une transition conique a des côtés droits. + Shape.Ogive = Ogive + 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 ogive tangente, qui a une transition en douceur vers le tube de la fusée, des valeurs inférieures à 1 produisent des ogives sécantes. + 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 ogive tangente, 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 ogives sécantes. + Shape.Ellipsoid = Ellipsoïde + Shape.Ellipsoid.desc1 = Un cône ellipsoïdal a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2×la longueur et diamètre. + Shape.Ellipsoid.desc2 = Une transition ellipsoïdale a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2×longueur et diamètre. Si la transition n'est pas coupée alors le profil est étendu au centre par le rayon correspondant. + Shape.Powerseries = Série Haute puissance + Shape.Powerseries.descA1 = Un cône de puissance a un profil de Rayon × (x / Longueur)k ou k est le paramètre de la forme. Pour k=0,5 c'est une + Shape.Powerseries.descA2 = -puissance ou une ogive parabolique, pour k=0,75 une + Shape.Powerseries.descA3 = -puissance, et pour k=1 un cône conique. + Shape.Powerseries.descB1 = Une transition de la série haute puissance a un profile de Rayon × (x / Longueur)k ou k est le paramètre de la forme. Pour k=0,5 la transition est + Shape.Powerseries.descB2 = -puissance ou parabolique, pour k=0,75 une + Shape.Powerseries.descB3 = -puissance, et pour k=1 conique. + Shape.Parabolicseries = Série parabolique + 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 parabole pleine qui est tangent au tube de la fusée, 0,75 produit un 3/4 de parabole, 0,5 produit une 1/2 parabole et 0 produit un cône conique. + 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 parabole pleine qui est tangent au tube de la fusée à l'extrémité arrière, 0,75 produit une 3/4 parabole, 0,5 produit une 1/2 parabole et 0 produit une transition conique. + Shape.Haackseries = Série Haack + 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 LD-Haack ou un cône Von Karman, 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 LV-Haack, ce qui minimise la trainée pour une longueur et un volume fixe. + Shape.Haackseries.desc2 = Les cônes 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 LD-Haack ou Von Karman, tandis qu'une valeur de 0,333 produit une forme LV-Haack. + + + ! RocketComponent + RocketComponent.Position.TOP = Haut de la pièce parent + RocketComponent.Position.MIDDLE = Milieu de la pièce parent(porteuse) + RocketComponent.Position.BOTTOM = Bas de la pièce parent + RocketComponent.Position.AFTER = Après la pièce parent + RocketComponent.Position.ABSOLUTE = Pointe de l'ogive + + + ! LaunchLug + LaunchLug.Launchlug = Tube de guidage + ! NoseCone + NoseCone.NoseCone = Ogive + ! Transition + Transition.Transition = Transition + !Stage + Stage.Stage = Etage + ! BodyTube + BodyTube.BodyTube = Tube du corps + ! TubeCoupler + TubeCoupler.TubeCoupler = Coupleur de tube + !InnerTube + InnerTube.InnerTube = Tube interne + ! TrapezoidFinSet + TrapezoidFinSet.TrapezoidFinSet = Ailerons Trapezoidaux + ! FreeformFinSet + FreeformFinSet.FreeformFinSet = Ailerons personnalisés + !MassComponent + MassComponent.MassComponent = Poids + ! Parachute + Parachute.Parachute = Parachute + ! ShockCord + ShockCord.ShockCord = Cordon amortisseur + ! Bulkhead + Bulkhead.Bulkhead = Cloison + + !Rocket + Rocket.motorCount.Nomotor = [aucun moteurs] + Rocket.compname.Rocket = Fusée + + !MotorMount + MotorMount.IgnitionEvent.AUTOMATIC = Automatique (lancement ou charge d'éjection) + MotorMount.IgnitionEvent.LAUNCH = Lancement + MotorMount.IgnitionEvent.EJECTION_CHARGE = Premiere charge d'ejection ou étage precedent + MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage + MotorMount.IgnitionEvent.NEVER = Jamais + + !ComponentIcons + ComponentIcons.Nosecone = Ogive + ComponentIcons.Bodytube = Tube + ComponentIcons.Transition = Transition + ComponentIcons.Trapezoidalfinset = Jeu d'ailerons de forme trapézoïdale + ComponentIcons.Ellipticalfinset = Jeu d'ailerons de forme elliptique + ComponentIcons.Freeformfinset = Jeu d'ailerons de forme personnalisé + ComponentIcons.Launchlug = Tube de guidage + ComponentIcons.Innertube = Tube interne + ComponentIcons.Tubecoupler = Coupleur de tube + ComponentIcons.Centeringring = Anneau de centrage + ComponentIcons.Bulkhead = Cloison + ComponentIcons.Engineblock = Bague de retension moteur + ComponentIcons.Parachute = Parachute + ComponentIcons.Streamer = Banderolle + ComponentIcons.Shockcord = Cordon amortisseur + ComponentIcons.Masscomponent = Mass component + ComponentIcons.disabled = (désactivé) + + ! StageAction + StageAction.Stage = Etage + + ! RecoveryDevice + RecoveryDevice.DeployEvent.LAUNCH = Lancement(plus NN secondes) + RecoveryDevice.DeployEvent.EJECTION = Première charge d'éjection de cet étage + RecoveryDevice.DeployEvent.APOGEE = Apogée + RecoveryDevice.DeployEvent.ALTITUDE = Altitude spécifiée durant la descente + RecoveryDevice.DeployEvent.NEVER = Jamais + + ! FlightEvent + FlightEvent.Type.LAUNCH = Lancement + FlightEvent.Type.IGNITION = Allumage du moteur + FlightEvent.Type.LIFTOFF = Décollage + FlightEvent.Type.LAUNCHROD = Dégagement de rampe de lancement + FlightEvent.Type.BURNOUT = Fin de combustion du moteur + FlightEvent.Type.EJECTION_CHARGE = Charge d'éjection + FlightEvent.Type.STAGE_SEPARATION = Séparation d'étage + FlightEvent.Type.APOGEE = Apogée + FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Déploiement du dispositif de récupération + FlightEvent.Type.GROUND_HIT = Atterrissage + FlightEvent.Type.SIMULATION_END = Fin de la simulation + FlightEvent.Type.ALTITUDE = Changement d'altitude + + ! ThrustCurveMotorColumns + TCurveMotorCol.MANUFACTURER = Fabricant + TCurveMotorCol.DESIGNATION = Désignation + TCurveMotorCol.TYPE = Type + TCurveMotorCol.DIAMETER = Diamètre + TCurveMotorCol.LENGTH = Longueur + + ! RocketInfo + RocketInfo.lengthLine.Length = Longueur + RocketInfo.lengthLine.maxdiameter = , diamètre max. + RocketInfo.massText1 = Masse avec moteurs + RocketInfo.massText2 = Masse sans moteurs + RocketInfo.at = à M= + RocketInfo.cgText = CG: + RocketInfo.cpText = CP: + RocketInfo.stabText = Stabilité: + RocketInfo.Warning = Avertissement: + RocketInfo.Calculating = Calcul en cours... + RocketInfo.Apogee = Apogée: + RocketInfo.Maxvelocity = Vitesse Max.: + RocketInfo.Maxacceleration = Accélération Max.: + RocketInfo.apogeeValue = N/A + RocketInfo.Mach = (Mach + RocketInfo.velocityValue = N/A + RocketInfo.accelerationValue = N/A + + ! FinSet + FinSet.CrossSection.SQUARE = Carré + FinSet.CrossSection.ROUNDED = Arondie + 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 = Temps + FlightDataType.TYPE_ALTITUDE = Altitude + FlightDataType.TYPE_VELOCITY_Z = Vitesse verticale + FlightDataType.TYPE_ACCELERATION_Z = Accélération verticale + FlightDataType.TYPE_VELOCITY_TOTAL = Vitesse totale + FlightDataType.TYPE_ACCELERATION_TOTAL = Accélération totale + FlightDataType.TYPE_POSITION_X = Position contre le vent + FlightDataType.TYPE_POSITION_Y = Position parallèle au vent + FlightDataType.TYPE_POSITION_XY = Distance latérale + FlightDataType.TYPE_POSITION_DIRECTION = Direction latérale + FlightDataType.TYPE_VELOCITY_XY = Vitesse latérale + FlightDataType.TYPE_ACCELERATION_XY = Accélération latérale + FlightDataType.TYPE_AOA = Angle d'attaque + FlightDataType.TYPE_ROLL_RATE = Taux de roulis + FlightDataType.TYPE_PITCH_RATE = Taux de tangage + FlightDataType.TYPE_YAW_RATE = Taux d'embardée + FlightDataType.TYPE_MASS = Masse + FlightDataType.TYPE_LONGITUDINAL_INERTIA = Moment d'inertie longitudinale + FlightDataType.TYPE_ROTATIONAL_INERTIA = Moment d'inertie rotatif + FlightDataType.TYPE_CP_LOCATION = Emplacement du CP + FlightDataType.TYPE_CG_LOCATION = Emplacement du CG + FlightDataType.TYPE_STABILITY = Calibres marge de stabilité + FlightDataType.TYPE_MACH_NUMBER = Mach number + FlightDataType.TYPE_REYNOLDS_NUMBER = Nombre de Reynolds + FlightDataType.TYPE_THRUST_FORCE = Poussée + FlightDataType.TYPE_DRAG_FORCE = Force de traînée + FlightDataType.TYPE_DRAG_COEFF = Coefficient de traînée + FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coefficient de trainée axiale + FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coefficient de traînée de friction + FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Coefficient de traînée de pression + 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 = Longueur de référence + FlightDataType.TYPE_REFERENCE_AREA = Surface de référence + FlightDataType.TYPE_ORIENTATION_THETA = Orientation verticale (zénith) + FlightDataType.TYPE_ORIENTATION_PHI = Orientation latérale (azimut) + FlightDataType.TYPE_WIND_VELOCITY = Vitesse de vent + FlightDataType.TYPE_AIR_TEMPERATURE = Température de l'air + FlightDataType.TYPE_AIR_PRESSURE = Pression atmosphérique + FlightDataType.TYPE_SPEED_OF_SOUND = Vitesse du son + FlightDataType.TYPE_TIME_STEP = Pas de simulation du temps + FlightDataType.TYPE_COMPUTATION_TIME = Temps de calcul + + ! PlotConfiguration + PlotConfiguration.Verticalmotion = Mouvement vertical par rapport au temps + PlotConfiguration.Totalmotion = Mouvement total par rapport au temps + PlotConfiguration.Flightside = Flight side profile + PlotConfiguration.Stability = Stabilité par rapport temps + PlotConfiguration.Dragcoef = Coefficients de traînée par rapport au Mach number + PlotConfiguration.Rollcharacteristics = Caractéristiques de roulis + PlotConfiguration.Angleofattack = Angle d'attaque et orientation par rapport au temps + PlotConfiguration.Simulationtime = Pas du temps et temps de calcul + + ! Warning + Warning.LargeAOA.str1 = Grand angle d'attaque rencontré. + Warning.LargeAOA.str2 = Grand angle d'attaque rencontré ( + Warning.DISCONTINUITY = Discontinuité dans le diametre du corps de la fusée. + Warning.THICK_FIN = Les ailerons fin ne seront peut etre pas modélisés correctement. + Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate. + Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation + Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Le dispositif de récupération s'est ouvert alors que la combustion du moteur n'était pas finie. + Warning.FILE_INVALID_PARAMETER = Parametre invalide rencontré, ignorer. diff --cc src/net/sf/openrocket/database/Databases.java index fe6abcbf,52b93534..fae1eb47 --- a/src/net/sf/openrocket/database/Databases.java +++ b/src/net/sf/openrocket/database/Databases.java @@@ -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: */ /** @@@ -36,48 -38,59 +38,59 @@@ 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 diff --cc src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index 44925a35,448a449c..3779f548 --- a/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@@ -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) { diff --cc src/net/sf/openrocket/gui/dialogs/AboutDialog.java index 6b8ec1ec,f65749a2..5eb2fde9 --- a/src/net/sf/openrocket/gui/dialogs/AboutDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/AboutDialog.java @@@ -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(); + private static final String CREDITS = "
" + + "OpenRocket has been developed by:

" + + "Sampo Niskanen (main developer)
" + - "Doug Pedrick (RockSim file format, printing)

" + ++ "Doug Pedrick (RockSim file format, printing)
" + ++ "Boris du Reau (internationalization, translation lead)

" + + "OpenRocket utilizes the following libraries:

" + + "MiG Layout (http://www.miglayout.com/)
" + + "JFreeChart (http://www.jfree.org/jfreechart/)
" + + "iText (http://www.itextpdf.com/)"; + public AboutDialog(JFrame parent) { super(parent, true); @@@ -38,39 -31,38 +43,63 @@@ 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); + } + + DescriptionArea info = new DescriptionArea(5); + info.setText(CREDITS); - panel.add(info, "width 10px, height 100lp, grow, spanx, wrap para"); ++ 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("Close"); + //Close button - JButton close = new JButton(trans.get("dlg.but.close")); ++ JButton close = new JButton(trans.get("button.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@@ -88,5 -80,5 +117,4 @@@ GUIUtil.setDisposableDialogOptions(this, close); } -- } diff --cc src/net/sf/openrocket/gui/dialogs/PrintDialog.java index 1d5556ba,06119318..c820c071 --- a/src/net/sf/openrocket/gui/dialogs/PrintDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/PrintDialog.java @@@ -3,368 -3,272 +3,373 @@@ */ 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 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); + } + } + + + /** + * 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 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) { - 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); ++ 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 { - JOptionPane.showMessageDialog(this, - "Your environment does not support automatically opening the default PDF viewer.", - "Error creating file", JOptionPane.INFORMATION_MESSAGE); ++ 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 "PDF files"; ++ 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 : ""; + } } diff --cc src/net/sf/openrocket/gui/main/BasicFrame.java index 2605dc7d,966354bf..55df5039 --- a/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/src/net/sf/openrocket/gui/main/BasicFrame.java @@@ -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; @@@ -1104,10 -1146,13 +1146,13 @@@ 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); } @@@ -1261,9 -1306,10 +1306,10 @@@ 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 diff --cc src/net/sf/openrocket/l10n/DebugTranslator.java index 19e6c84a,19e6c84a..5a2bf592 --- a/src/net/sf/openrocket/l10n/DebugTranslator.java +++ b/src/net/sf/openrocket/l10n/DebugTranslator.java @@@ -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 */ public class DebugTranslator implements Translator { ++ private final Translator translator; ++ ++ ++ /** ++ * Sole constructor. ++ * ++ * @param translator the translator to verify the translation exists, or null not to verify. ++ */ ++ public DebugTranslator(Translator translator) { ++ this.translator = translator; ++ } ++ ++ ++ @Override public String get(String key) { ++ if (translator != null) { ++ translator.get(key); ++ } return "[" + key + "]"; } diff --cc src/net/sf/openrocket/rocketcomponent/BodyTube.java index adf0aa19,297ec1c3..0b53eb02 --- a/src/net/sf/openrocket/rocketcomponent/BodyTube.java +++ b/src/net/sf/openrocket/rocketcomponent/BodyTube.java @@@ -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. @@@ -16,12 -18,13 +18,13 @@@ */ 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 ejectionDelays = new HashMap(); private HashMap motors = new HashMap(); @@@ -55,17 -58,17 +58,17 @@@ 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; @@@ -91,17 -94,17 +94,17 @@@ * 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); @@@ -115,9 -118,9 +118,9 @@@ 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) @@@ -126,12 -129,12 +129,18 @@@ 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(); @@@ -171,27 -174,27 +180,24 @@@ } 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); } - - + + /** @@@ -199,12 -202,23 +205,13 @@@ */ @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(). @@@ -222,10 -236,10 +229,10 @@@ 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. */ @@@ -250,17 -264,17 +257,16 @@@ @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; } - - + + /** diff --cc src/net/sf/openrocket/rocketcomponent/ExternalComponent.java index a7fdbcec,0f19b430..ed543c12 --- a/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java +++ b/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java @@@ -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; @@@ -34,14 -41,15 +41,15 @@@ 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. */ diff --cc src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java index 792483d2,cdbb7c3e..ffa44be3 --- a/src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java +++ b/src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java @@@ -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 points = new ArrayList(); - + public FreeformFinSet() { points.add(Coordinate.NUL); points.add(new Coordinate(0.025, 0.05)); @@@ -313,21 -316,31 +316,21 @@@ ((FreeformFinSet) c).points = this.points.clone(); return c; } - - private void validate(ArrayList 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 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 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"); } } diff --cc src/net/sf/openrocket/rocketcomponent/InnerTube.java index a4d5af4d,448da154..0b8c92d2 --- a/src/net/sf/openrocket/rocketcomponent/InnerTube.java +++ b/src/net/sf/openrocket/rocketcomponent/InnerTube.java @@@ -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); diff --cc src/net/sf/openrocket/rocketcomponent/LaunchLug.java index 70f92a7f,f61ce7ed..8a6b2751 --- a/src/net/sf/openrocket/rocketcomponent/LaunchLug.java +++ b/src/net/sf/openrocket/rocketcomponent/LaunchLug.java @@@ -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); @@@ -166,12 -170,13 +170,13 @@@ 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) diff --cc src/net/sf/openrocket/rocketcomponent/NoseCone.java index 229fcbf5,c271e2d4..a4de3a9c --- a/src/net/sf/openrocket/rocketcomponent/NoseCone.java +++ b/src/net/sf/openrocket/rocketcomponent/NoseCone.java @@@ -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; @@@ -52,47 -56,47 +56,47 @@@ 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; @@@ -102,17 -106,27 +106,18 @@@ 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); - } ++ } diff --cc src/net/sf/openrocket/rocketcomponent/Rocket.java index 64c1f687,0be57cd1..4115c87b --- a/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/src/net/sf/openrocket/rocketcomponent/Rocket.java @@@ -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. *

@@@ -525,10 -537,10 +537,10 @@@ 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. */ @@@ -554,11 -566,11 +566,11 @@@ motorConfigurationIDs.remove(id); fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - - + + /** * Check whether id is a valid motor configuration ID. - * + * * @param id the configuration ID. * @return whether a motor configuration with that ID exists. */ @@@ -627,11 -639,11 +639,11 @@@ 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 */ @@@ -642,14 -654,14 +654,14 @@@ 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 */ @@@ -687,17 -699,18 +699,18 @@@ 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 stages = new ArrayList(); - + for (List stage : list) { String stageName = ""; String previous = null; @@@ -818,5 -832,14 +832,5 @@@ public boolean isCompatible(Class 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); - } } diff --cc src/net/sf/openrocket/rocketcomponent/RocketComponent.java index e109f6b3,b525a47d..158c1b7d --- a/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@@ -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, - Visitable { +public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); - ++ /* * Text is suitable to the form * Position relative to: @@@ -142,10 -162,10 +161,10 @@@ * 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. @@@ -153,10 -173,10 +172,10 @@@ * @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. @@@ -244,14 -264,14 +263,14 @@@ 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) { @@@ -373,10 -393,20 +392,10 @@@ 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 ////////// @@@ -389,9 -419,9 +408,9 @@@ 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) || @@@ -456,10 -486,10 +475,10 @@@ mutex.verify(); return massOverriden; } - + /** * Set whether the mass is currently overridden. - * + * * @param o whether the mass is overridden */ public final void setMassOverridden(boolean o) { @@@ -484,20 -514,20 +503,20 @@@ 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) { @@@ -510,20 -540,20 +529,20 @@@ 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) { @@@ -621,10 -651,10 +640,10 @@@ mutex.verify(); return comment; } - + /** * Set the comment of the component. - * + * * @param comment the comment of the component. */ public final void setComment(String comment) { @@@ -774,10 -804,10 +793,10 @@@ 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> @@@ -863,9 -893,9 +882,9 @@@ 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++) { @@@ -878,12 -908,12 +897,12 @@@ 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() { @@@ -901,14 -931,14 +920,14 @@@ 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() { @@@ -917,13 -947,13 +936,13 @@@ 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() { @@@ -981,18 -1011,18 +1000,18 @@@ 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) { @@@ -1005,20 -1035,20 +1024,20 @@@ 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 */ @@@ -1141,10 -1171,10 +1160,10 @@@ checkState(); return parent; } - + /** * Get the root component of the component tree. - * + * * @return The root component of the component tree. */ public final RocketComponent getRoot() { @@@ -1154,11 -1184,11 +1173,11 @@@ 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. */ @@@ -1317,15 -1347,15 +1336,15 @@@ 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 @@@ -1348,17 -1378,17 +1367,17 @@@ 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) { @@@ -1656,13 -1686,13 +1675,13 @@@ 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> { diff --cc src/net/sf/openrocket/rocketcomponent/Stage.java index 5acbe854,b984a2a5..f5079bfe --- a/src/net/sf/openrocket/rocketcomponent/Stage.java +++ b/src/net/sf/openrocket/rocketcomponent/Stage.java @@@ -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; diff --cc src/net/sf/openrocket/rocketcomponent/Transition.java index 0daa5f7f,09818359..1c2adb36 --- a/src/net/sf/openrocket/rocketcomponent/Transition.java +++ b/src/net/sf/openrocket/rocketcomponent/Transition.java @@@ -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; @@@ -499,17 -502,27 +499,17 @@@ 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; } @@@ -609,20 -621,20 +608,11 @@@ 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> × (<i>x</i> / <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> × (<i>x</i> / <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> × (<i>x</i> / <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> × (<i>x</i> / <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; @@@ -648,24 -660,18 +638,19 @@@ } 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; @@@ -687,19 -693,14 +672,14 @@@ 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; diff --cc src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java index 9c3076a3,fb276a7c..288726b1 --- a/src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java +++ b/src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java @@@ -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); - } } diff --cc src/net/sf/openrocket/startup/Application.java index 78d2941a,020d714e..bb8b20f7 --- a/src/net/sf/openrocket/startup/Application.java +++ b/src/net/sf/openrocket/startup/Application.java @@@ -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; diff --cc src/net/sf/openrocket/startup/Startup.java index f1c4aa4d,802bdcc7..f4141f9b --- a/src/net/sf/openrocket/startup/Startup.java +++ b/src/net/sf/openrocket/startup/Startup.java @@@ -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() + diff --cc src/net/sf/openrocket/util/Prefs.java index 9cd9e7ab,215389ab..047db50c --- a/src/net/sf/openrocket/util/Prefs.java +++ b/src/net/sf/openrocket/util/Prefs.java @@@ -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); } //////////////////////