Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / resources / l10n / messages.properties
index 4ffdbd98f9ce70a25e4d4e3e62da4da0bcd74e2d..1c68f3fd20bd7561b89746040ca537b053426a7a 100644 (file)
@@ -1,4 +1,3 @@
-
 #
 # English base translation file
 #
@@ -26,7 +25,7 @@ RocketActions.DelCompAct.Delete = Delete
 RocketActions.DelCompAct.ttip.Delete = Delete the selected component.
 RocketActions.DelSimuAct.Delete = Delete
 RocketActions.DelSimuAct.ttip.Delete = Delete the selected simulation.
-RocketActions.DelAct.Delete = Delete 
+RocketActions.DelAct.Delete = Delete
 RocketActions.DelAct.ttip.Delete = Delete the selected component or simulation.
 RocketActions.CutAction.Cut = Cut
 RocketActions.CutAction.ttip.Cut = Cut this component or simulation to the clipboard and remove from this design
@@ -48,7 +47,7 @@ RocketActions.MoveDownAct.ttip.Movedown = Move this component downwards.
 RocketPanel.FigTypeAct.Sideview = Side view
 RocketPanel.FigTypeAct.ttip.Sideview = Side view
 RocketPanel.FigTypeAct.Backview = Back view
-RocketPanel.FigTypeAct.ttip.Backview = Rear view 
+RocketPanel.FigTypeAct.ttip.Backview = Rear view
 RocketPanel.FigViewAct.2D = 2D View
 RocketPanel.FigViewAct.ttip.2D = 2D View
 RocketPanel.FigViewAct.3D = 3D View
@@ -90,12 +89,12 @@ dlg.but.ok = OK
 dlg.but.cancel = Cancel
 dlg.but.close = Close
 
-
 ! General file type names
 filetypes.pdf = PDF files (*.pdf)
 BasicFrame.SimpleFileFilter1 = All rocket designs (*.ork; *.rkt)
 BasicFrame.SimpleFileFilter2 = OpenRocket designs (*.ork)
 BasicFrame.SimpleFileFilter3 = RockSim designs (*.rkt)
+BasicFrame.SimpleFileFilter4 = OpenRocket presets (*.orc)
 filetypes.images = Image files
 
 
@@ -107,9 +106,9 @@ AboutDialog.lbl.version = Version
 ! - 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 =  
+AboutDialog.lbl.translator =
+AboutDialog.lbl.translatorWebsite =
+AboutDialog.lbl.translatorIcon =
 
 
 ! Print dialog
@@ -124,7 +123,6 @@ 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.
 
-
 !PrintSettingsDialog
 PrintSettingsDialog.title = Print settings
 PrintSettingsDialog.lbl.Templatefillcolor = Template fill color:
@@ -171,6 +169,9 @@ debuglogdlg.lbl.Logmessage = Log message:
 debuglogdlg.lbl.Stacktrace = Stack trace:
 
 
+! MotorChooserDialog
+MotorChooserDialog.title = Select a rocket motor
+
 ! Edit Motor configuration dialog
 edtmotorconfdlg.but.removemotor = Remove motor
 edtmotorconfdlg.but.Selectmotor = Select motor
@@ -221,7 +222,7 @@ 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.title.Preferences = Preferences
 pref.dlg.tab.Units = Units
 pref.dlg.tab.Defaultunits = Default units
 pref.dlg.tab.Materials = Materials
@@ -231,6 +232,7 @@ 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.lbl.Windspeed = Wind speed
 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)
@@ -286,6 +288,7 @@ simedtdlg.lbl.Simname = Simulation name:
 simedtdlg.tab.Launchcond = Launch conditions
 simedtdlg.tab.Simopt = Simulation options
 simedtdlg.tab.Plotdata = Plot data
+simedtdlg.tab.CustomExpressions = Custom expressions
 simedtdlg.tab.Exportdata = Export data
 simedtdlg.lbl.Motorcfg = Motor configuration:
 simedtdlg.lbl.ttip.Motorcfg = Select the motor configuration to use.
@@ -340,7 +343,7 @@ simedtdlg.lbl.ttip.Timestep1 = <html>The time between simulation steps.<br>A sma
 simedtdlg.lbl.ttip.Timestep2 = The 4<sup>th</sup> order simulation method is quite accurate with a time step of
 simedtdlg.but.ttip.resettodefault = Reset the time step to its default value (
 simedtdlg.border.Simlist = Simulator listeners
-simedtdlg.txt.longA1 = <html><i>Simulation listeners</i> is an advanced feature that allows user-written code to listen to and interact with the simulation.  
+simedtdlg.txt.longA1 = <html><i>Simulation listeners</i> is an advanced feature that allows user-written code to listen to and interact with the simulation.
 simedtdlg.txt.longA2 = For details on writing simulation listeners, see the OpenRocket technical documentation.
 simedtdlg.lbl.Curlist = Current listeners:
 simedtdlg.lbl.Addsimlist = Add simulation listener
@@ -391,6 +394,14 @@ simpanel.col.Maxacceleration = Max. acceleration
 simpanel.col.Timetoapogee = Time to apogee
 simpanel.col.Flighttime = Flight time
 simpanel.col.Groundhitvelocity = Ground hit velocity
+simpanel.ttip.uptodate = <i>Up to date</i>
+simpanel.ttip.loaded = <i>Data loaded from a file</i>
+simpanel.ttip.outdated = <i><font color=\"red\">Data is out of date</font></i><br>Click <i><b>Run simulations</b></i> to simulate.
+simpanel.ttip.external = <i>Imported data</i>
+simpanel.ttip.notSimulated = <i>Not simulated yet</i><br>Click <i><b>Run simulations</b></i> to simulate.
+simpanel.ttip.noData = No simulation data available.
+simpanel.ttip.noWarnings = <font color=\"gray\">No warnings.</font>
+simpanel.ttip.warnings = <font color=\"red\">Warnings:</font>
 
 ! SimulationRunDialog
 SimuRunDlg.title.RunSim = Running simulations...
@@ -410,6 +421,7 @@ SimuRunDlg.msg.unknownerror2 = The program may be unstable, you should save all
 
 RK4SimulationStepper.error.valuesTooLarge = Simulation values exceeded limits.  Try selecting a shorter time step.
 
+SimulationModifierTree.OptimizationParameters = Optimization Parameters
 
 ! SimulationExportPanel
 SimExpPan.desc = Comma Separated Files (*.csv)
@@ -434,7 +446,7 @@ 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.desc2 = Exporting
 SimExpPan.ExportingVar.desc3 = variables out of
 SimExpPan.Col.Variable = Variable
 SimExpPan.Col.Unit = Unit
@@ -444,6 +456,82 @@ CsvOptionPanel.separator.space = SPACE
 CsvOptionPanel.separator.tab = TAB
 
 
+! Custom expression general stuff
+customExpression.Name = Name
+customExpression.Symbol = Symbol
+customExpression.Expression = Expression
+customExpression.Units = Units
+customExpression.Operator = Operator
+customExpression.Description = Description
+
+! Custom expression panel
+customExpressionPanel.but.NewExpression = New expression
+customExpressionPanel.but.ttip.NewExpression = Add a new custom expression
+customExpressionPanel.but.Import = Import
+customExpressionPanel.but.ttip.Import = Import custom expressions from another .ork file
+customExpressionPanel.lbl.UpdateNote = You must run the simulation before data will be available for plotting.
+customExpressionPanel.lbl.CalcNote = Expressions will be calculated in the order shown.
+customExpressionPanel.lbl.CustomExpressions = Custom Expressions
+customExpression.Units.but.ttip.Remove = Remove this expression
+customExpression.Units.but.ttip.Edit = Edit this expression
+customExpression.Units.but.ttip.MoveUp = Move expression up in calculation order
+customExpression.Units.but.ttip.MoveDown = Move expression down in calculation order
+
+
+! Custom expression builder window
+ExpressionBuilderDialog.title = Expression Builder
+ExpressionBuilderDialog.InsertVariable = Insert Variable
+ExpressionBuilderDialog.InsertOperator = Insert Operator
+ExpressionBuilderDialog.led.ttip.Name = Name must not have already been used
+ExpressionBuilderDialog.led.ttip.Symbol = Symbol must not have already been used
+ExpressionBuilderDialog.led.ttip.Expression = Expression must use only known symbols and operators
+ExpressionBuilderDialog.CopyToOtherSimulations = Copy to other simulations
+ExpressionBuilderDialog.CopyToOtherSimulations.ttip = <html>Make a copy of this expression in other simulations in this document.<br>Will not overwrite or modify any existing expressions in other simulations. 
+
+! Custom expression variable selector
+CustomVariableSelector.title = Variable Selector
+
+! Custom operator selector
+CustomOperatorSelector.title = Operator Selector
+
+! Operators
+Operator.plus = Addition
+Operator.minus = Subtraction
+Operator.star = Multiplication
+Operator.div = Division
+Operator.mod = Modulo
+Operator.pow = Exponentiation
+Operator.abs = Absolute value
+Operator.ceil = Ceiling (next integer value)
+Operator.floor = Floor (previous integer value)
+Operator.sqrt = Square root
+Operator.cbrt = Cubic root
+Operator.exp = Euler\'s number raised to the value (e^x)
+Operator.ln = Natural logarithm
+Operator.sin = Sine
+Operator.cos = Cosine
+Operator.tan = Tangent
+Operator.asin = Arc sine
+Operator.acos = Arc cosine
+Operator.atan = Arc tangent
+Operator.hsin = Hyperbolic sine
+Operator.hcos = Hyperbolic cosine
+Operator.htan = Hyperbolic tangent
+Operator.log10 = Base 10 logarithm
+Operator.round = Round to nearest integer value
+Operator.random = Random number between zero and given value
+Operator.expm1 = The same as exp(x)-1, but more accurate for small x 
+Operator.mean = The arithmetic mean of a given range
+Operator.min = The minimum value in a given range
+Operator.max = The maximum value in a given range
+Operator.var = The variance of a given range
+Operator.stdev = The standard deviation of a given range
+Operator.rms = The root-mean-squared value of a given range
+Operator.lclip = Clips a value (1st parameter) to be no less than a given value (2nd parameter)
+Operator.uclip = Clips a value (1st parameter) to be no greater than a given value (2nd parameter)
+Operator.binf = Gives the fraction of values in a given range (1st parameter) inside a bin with given lower (2nd parameter) and upper (3rd parameter) bounds
+Operator.trapz = Integrates the given range using trapezoidal integration
+Operator.tnear = Find the time corresponding to the point in a range (1st parameter) nearest to a given value (2nd parameter)
 
 ! MotorPlot
 MotorPlot.title.Motorplot = Motor plot
@@ -457,8 +545,6 @@ 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:
@@ -472,7 +558,7 @@ 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.lbl1 = A maximum of 15 plots is allowed.
 simplotpanel.OptionPane.lbl2 = Cannot add plot
 simplotpanel.AUTO_NAME = Auto
 simplotpanel.LEFT_NAME = Left
@@ -481,7 +567,6 @@ simplotpanel.CUSTOM = Custom
 SimulationPlotPanel.error.noPlotSelected = Please add one or more variables to plot on the Y-axis.
 SimulationPlotPanel.error.noPlotSelected.title = Nothing to plot
 
-
 ! Component add buttons
 compaddbuttons.Bodycompandfinsets = Body components and fin sets
 compaddbuttons.Nosecone = Nose cone
@@ -521,6 +606,9 @@ componentanalysisdlg.lbl.rollrate = Roll rate:
 componentanalysisdlg.lbl.activestages = Active stages:
 componentanalysisdlg.lbl.motorconf = Motor configuration:
 componentanalysisdlg.TabStability.Col = Component
+componentanalysisdlg.TabStability.Col.CG = CG
+componentanalysisdlg.TabStability.Col.Mass = Mass
+componentanalysisdlg.TabStability.Col.CP = CP
 componentanalysisdlg.TabStability = Stability
 componentanalysisdlg.TabStability.ttip = Stability information
 componentanalysisdlg.dragTableModel.Col.Component = Component
@@ -538,14 +626,16 @@ 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.lbl.reflenght = Reference length:
+componentanalysisdlg.lbl.refarea = Reference area:
 !componentanalysisdlg.But.close =Close
 componentanalysisdlg.TabStability.Col.Component = Component
+componentanalysisdlg.TOTAL = Total
+componentanalysisdlg.noWarnings = <html><i><font color=\"gray\">No warnings.</font></i>
 
 ! Custom Material dialog
 custmatdlg.title.Custommaterial = Custom material
-custmatdlg.lbl.Materialname = Material name: 
+custmatdlg.lbl.Materialname = Material name:
 custmatdlg.lbl.Materialtype = Material type:
 custmatdlg.lbl.Materialdensity = Material density:
 custmatdlg.checkbox.Addmaterial = Add material to database
@@ -658,7 +748,7 @@ 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.border.Foreshoulder = Fore shoulder
 !RocketCompCfg.lbl.Length = Length:
 
 ! BulkheadConfig
@@ -753,6 +843,7 @@ LaunchLugCfg.tab.Generalprop = General properties
 
 ! MassComponentConfig
 MassComponentCfg.lbl.Mass = Mass:
+MassComponentCfg.lbl.Density = Approximate density:
 MassComponentCfg.lbl.Length = Length:
 MassComponentCfg.lbl.Diameter = Diameter:
 MassComponentCfg.lbl.PosRelativeto = Position relative to:
@@ -802,7 +893,7 @@ ParachuteCfg.lbl.Material = Material:
 ParachuteCfg.combo.MaterialModel = The component material affects the weight of the component.
 ParachuteCfg.lbl.longA1 = <html>Drag coefficient C<sub>D</sub>:
 ParachuteCfg.lbl.longB1 = <html>The drag coefficient relative to the total area of the parachute.<br>
-ParachuteCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate.  
+ParachuteCfg.lbl.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:
@@ -825,7 +916,7 @@ ParachuteCfg.lbl.Radialdirection = Radial direction:
 ParachuteCfg.but.Reset = Reset
 ParachuteCfg.lbl.plusdelay = plus
 
-! ShockCordConfig 
+! ShockCordConfig
 ShockCordCfg.lbl.Shockcordlength = Shock cord length:
 ShockCordCfg.lbl.Shockcordmaterial = Shock cord material:
 ShockCordCfg.lbl.Posrelativeto = Position relative to:
@@ -958,6 +1049,7 @@ TCMotorSelPan.lbl.Digest = Digest:
 TCMotorSelPan.title.Thrustcurve = Thrust curve:
 TCMotorSelPan.title.Thrust = Thrust
 TCMotorSelPan.delayBox.None = None
+TCMotorSelPan.noDescription = No description available.
 
 
 ! PlotDialog
@@ -969,7 +1061,7 @@ PlotDialog.lbl.Chart = Click and drag down+right to zoom in, up+left to zoom out
 
 ! "main" prefix is used for the main application dialog
 
-# FIXME: Rename the description keys 
+# FIXME: Rename the description keys
 
 main.menu.file = File
 main.menu.file.desc = File-handling related tasks
@@ -977,6 +1069,8 @@ main.menu.file.new = New
 main.menu.file.new.desc = Create a new rocket design
 main.menu.file.open = Open...
 BasicFrame.item.Openrocketdesign = Open a rocket design
+main.menu.file.openRecent = Open Recent...
+BasicFrame.item.Openrecentrocketdesign = Open a recent rocket design
 main.menu.file.openExample = Open example...
 BasicFrame.item.Openexamplerocketdesign = Open an example rocket design
 main.menu.file.save = Save
@@ -1011,6 +1105,8 @@ main.menu.analyze.componentAnalysis = Component analysis
 main.menu.analyze.componentAnalysis.desc = Analyze the rocket components separately
 main.menu.analyze.optimization = Rocket optimization
 main.menu.analyze.optimization.desc = General rocket design optimization
+main.menu.analyze.customExpressions = Custom expressions
+main.menu.analyze.customExpressions.desc = Define new flight data types by writing custom mathematical expressions 
 
 main.menu.help = Help
 main.menu.help.desc = Information about OpenRocket
@@ -1033,55 +1129,61 @@ main.menu.debug.createtestrocket = Create test rocket
 ! Translate here all material database
 !
 
+Material.CUSTOM = Custom
+
 ! Material database
+Databases.materials.types.Bulk = Bulk
+Databases.materials.types.Line = Line
+Databases.materials.types.Surface = Surface
+
 ! BULK_MATERIAL
-Databases.materials.Acrylic = Acrylic
-Databases.materials.Aluminum = Aluminum
-Databases.materials.Balsa = Balsa
-Databases.materials.Basswood = Basswood
-Databases.materials.Birch = Birch
-Databases.materials.Brass = Brass
-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.Steel = Steel
-Databases.materials.StyrofoamgenericEPS = Styrofoam (generic EPS)
-Databases.materials.StyrofoamBluefoamXPS = Styrofoam \"Blue foam\" (XPS)
-Databases.materials.Titanium = Titanium
-Databases.materials.Quantumtubing = Quantum tubing
-Databases.materials.BlueTube = Blue tube
+material.acrylic = Acrylic
+material.aluminum = Aluminum
+material.balsa = Balsa
+material.basswood = Basswood
+material.birch = Birch
+material.brass = Brass
+material.cardboard = Cardboard
+material.carbon_fiber = Carbon fiber
+material.cork = Cork
+material.depron_xps = Depron (XPS)
+material.fiberglass = Fiberglass
+material.kraft_phenolic = Kraft phenolic
+material.maple = Maple
+material.paper_office = Paper (office)
+material.pine = Pine
+material.plywood_birch = Plywood (birch)
+material.polycarbonate_lexan = Polycarbonate (Lexan)
+material.polystyrene = Polystyrene
+material.pvc = PVC
+material.spruce = Spruce
+material.steel = Steel
+material.styrofoam_generic_eps = Styrofoam (generic EPS)
+material.styrofoam_blue_foam_xps = Styrofoam \"Blue foam\" (XPS)
+material.titanium = Titanium
+material.quantum_tubing = Quantum tubing
+material.blue_tube = Blue tube
 !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.Crepepaper = Cr\u00eape paper
+material.ripstop_nylon = Ripstop nylon
+material.mylar = Mylar
+material.polyethylene_thin = Polyethylene (thin)
+material.polyethylene_heavy = Polyethylene (heavy)
+material.silk = Silk
+material.paper_office = Paper (office)
+material.cellophane = Cellophane
+material.crepe_paper = 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)
+material.thread_heavy_duty = Thread (heavy-duty)
+material.elastic_cord_round_2_mm_1_16_in = Elastic cord (round 2 mm, 1/16 in)
+material.elastic_cord_flat_6_mm_1_4_in = Elastic cord (flat 6 mm, 1/4 in)
+material.elastic_cord_flat_12_mm_1_2_in = Elastic cord (flat 12 mm, 1/2 in)
+material.elastic_cord_flat_19_mm_3_4_in = Elastic cord (flat 19 mm, 3/4 in)
+material.elastic_cord_flat_25_mm_1_in = Elastic cord (flat 25 mm, 1 in)
+material.braided_nylon_2_mm_1_16_in = Braided nylon (2 mm, 1/16 in)
+material.braided_nylon_3_mm_1_8_in = Braided nylon (3 mm, 1/8 in)
+material.tubular_nylon_11_mm_7_16_in = Tubular nylon (11 mm, 7/16 in)
+material.tubular_nylon_14_mm_9_16_in = Tubular nylon (14 mm, 9/16 in)
+material.tubular_nylon_25_mm_1_in = Tubular nylon (25 mm, 1 in)
 
 ! ExternalComponent
 ExternalComponent.Rough = Rough
@@ -1106,16 +1208,16 @@ Shape.Ogive.desc1 = An ogive nose cone has a profile that is a segment of a circ
 Shape.Ogive.desc2 = An ogive transition has a profile that is a segment of a circle.   The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube at the aft end, values less than 1 produce <b>secant ogives</b>.
 Shape.Ellipsoid = Ellipsoid
 Shape.Ellipsoid.desc1 = An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2&times;<i>Length</i> and <i>Diameter</i>.
-Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2&times;<i>Length</i> and <i>Diameter</i>.  If the transition is not clipped, then the profile is extended at the center by the corresponding radius.             
+Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2&times;<i>Length</i> and <i>Diameter</i>.  If the transition is not clipped, then the profile is extended at the center by the corresponding radius.
 Shape.Powerseries = Power series
-Shape.Powerseries.desc1 = A power series nose cone has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 this is a <b>\u00BD-power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a <b>\u00BE-power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.
-Shape.Powerseries.desc2 = A power series transition has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 the transition is <b>\u00BD-power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a <b>\u00BE-power</b>, and for <i>k</i>=1 <b>conical</b>.
+Shape.Powerseries.desc1 = A power series nose cone has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 this is a <b>\u00bd-power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a <b>\u00be-power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.
+Shape.Powerseries.desc2 = A power series transition has a profile of <i>Radius</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Length</i>)<sup><i>k</i></sup> where <i>k</i> is the shape parameter.  For <i>k</i>=0.5 the transition is <b>\u00bd-power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a <b>\u00be-power</b>, and for <i>k</i>=1 <b>conical</b>.
 Shape.Parabolicseries = Parabolic series
 Shape.Parabolicseries.desc1 = A parabolic series nose cone has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.
 Shape.Parabolicseries.desc2 = A parabolic series transition has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.
 Shape.Haackseries = Haack series
 Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an <b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.
-Shape.Haackseries.desc2 = The Haack series <i>nose cones</i> are designed to minimize drag.  These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, while a value of 0.333 produces an <b>LV-Haack</b> shape.              
+Shape.Haackseries.desc2 = The Haack series <i>nose cones</i> are designed to minimize drag.  These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, while a value of 0.333 produces an <b>LV-Haack</b> shape.
 
 
 ! RocketComponent
@@ -1159,6 +1261,14 @@ Parachute.Parachute = Parachute
 ShockCord.ShockCord = Shock cord
 ! Bulkhead
 Bulkhead.Bulkhead = Bulkhead
+! CenteringRing
+CenteringRing.CenteringRing = Centering ring
+! EngineBlock
+EngineBlock.EngineBlock = Engine block
+! Streamer
+Streamer.Streamer = Streamer
+! Sleeve
+Sleeve.Sleeve = Sleeve
 
 !Rocket
 Rocket.motorCount.Nomotor = [No motors]
@@ -1171,7 +1281,7 @@ MotorMount.IgnitionEvent.EJECTION_CHARGE = First ejection charge of previous sta
 MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage
 MotorMount.IgnitionEvent.NEVER = Never
 
-!ComponentIcons 
+!ComponentIcons
 ComponentIcons.Nosecone = Nose cone
 ComponentIcons.Bodytube = Body tube
 ComponentIcons.Transition = Transition
@@ -1198,6 +1308,8 @@ 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.CURRENT_STAGE_SEPARATION = Current stage separation
+RecoveryDevice.DeployEvent.LOWER_STAGE_SEPARATION = Lower stage separation
 RecoveryDevice.DeployEvent.NEVER = Never
 
 ! FlightEvent
@@ -1221,10 +1333,19 @@ TCurveMotorCol.TYPE = Type
 TCurveMotorCol.DIAMETER = Diameter
 TCurveMotorCol.LENGTH = Length
 
+TCurveMotor.ttip.diameter = Diameter:
+TCurveMotor.ttip.length = Length:
+TCurveMotor.ttip.maxThrust = Maximum thrust:
+TCurveMotor.ttip.avgThrust = Average thrust:
+TCurveMotor.ttip.burnTime = Burn time:
+TCurveMotor.ttip.totalImpulse = Total impulse:
+TCurveMotor.ttip.launchMass = Launch mass:
+TCurveMotor.ttip.emptyMass = Empty mass:
+
 ! RocketInfo
 RocketInfo.lengthLine.Length = Length
 RocketInfo.lengthLine.maxdiameter = , max. diameter
-RocketInfo.massText1 = Mass with motors 
+RocketInfo.massText1 = Mass with motors
 RocketInfo.massText2 = Mass with no motors
 RocketInfo.at = at M=
 RocketInfo.cgText = CG:
@@ -1266,6 +1387,7 @@ FlightDataType.TYPE_ROLL_RATE = Roll rate
 FlightDataType.TYPE_PITCH_RATE = Pitch rate
 FlightDataType.TYPE_YAW_RATE = Yaw rate
 FlightDataType.TYPE_MASS = Mass
+FlightDataType.TYPE_PROPELLANT_MASS = Propellant mass
 FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia
 FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia
 FlightDataType.TYPE_CP_LOCATION = CP location
@@ -1302,6 +1424,7 @@ FlightDataType.TYPE_COMPUTATION_TIME = Computation time
 FlightDataType.TYPE_LATITUDE = Latitude
 FlightDataType.TYPE_LONGITUDE = Longitude
 FlightDataType.TYPE_CORIOLIS_ACCELERATION = Coriolis acceleration
+FlightDataType.TYPE_GRAVITY = Gravitational acceleration
 
 ! PlotConfiguration
 PlotConfiguration.Verticalmotion = Vertical motion vs. time
@@ -1322,6 +1445,10 @@ 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.
+Warning.PARALLEL_FINS = Too many parallel fins
+Warning.SUPERSONIC = Body calculations may not be entirely accurate at supersonic speeds.
+Warning.RECOVERY_LAUNCH_ROD = Recovery device device deployed while on the launch guide.
+Warning.RECOVERY_HIGH_SPEED = Recovery device deployment at high speed
 
 
 ! Scale dialog
@@ -1354,6 +1481,7 @@ OpenRocketPrintable.Transitiontemplates = Transition templates
 OpenRocketPrintable.Noseconetemplates = Nose Cone templates
 OpenRocketPrintable.Finmarkingguide = Fin marking guide
 OpenRocketPrintable.DesignReport = Design Report
+OpenRocketPrintable.Centeringringtemplates = Centering Ring templates
 
 OpenRocketDocument.Redo = Redo
 OpenRocketDocument.Undo = Undo
@@ -1576,11 +1704,53 @@ GuidedTourSelectionDialog.btn.start = Start tour!
 
 ! Custom Fin BMP Importer
 CustomFinImport.button.label = Import from image
-CustomFinImport.badFinImage = Invalid fin image. Must be a black and white image (black for the fin), not touching any side, except the bottom of the image, which is the base of the fin.
-CustomFinImport.errorLoadingFile = Error loading file: 
-CustomFinImport.errorParsingFile = Error parsing fin image: 
+CustomFinImport.badFinImage = Invalid fin image. Make sure the fin is a solid black or dark color and touching the bottom of the image.
+CustomFinImport.errorLoadingFile = Error loading file:
+CustomFinImport.errorParsingFile = Error parsing fin image:
 CustomFinImport.undo = Import freeform fin set
 CustomFinImport.error.title = Error loading fin profile
 CustomFinImport.error.badimage = Could not deduce fin shape from image.
-CustomFinImport.description = The image must be a black and white image (black for the fin), not touching any side, except the bottom of the image, which is the base of the fin.
+CustomFinImport.description = The image will be converted internally to black and white image (black for the fin), so make sure you use a solid dark color for the fin, and white or a light color for the background. The fin must be touching the bottom of the image, which is the base of the fin.
+
+
+PresetModel.lbl.select = Select preset
+PresetModel.lbl.database = From database...
+
+
+! Component Preset Chooser Dialog
+ComponentPresetChooserDialog.title = Choose component preset
+ComponentPresetChooserDialog.filter.label = Filter by text:
+ComponentPresetChooserDialog.checkbox.filterAftDiameter = Match aft diameter
+ComponentPresetChooserDialog.checkbox.filterForeDiameter = Match fore diameter
+ComponentPresetChooserDialog.menu.sortAsc = Sort Ascending
+ComponentPresetChooserDialog.menu.sortDesc = Sort Descending
+ComponentPresetChooserDialog.menu.units = Units
+ComponentPresetChooserDialog.checkbox.showAllCompatible = Show all compatible
+table.column.Favorite = Favorite
+table.column.Manufacturer = Manufacturer
+table.column.PartNo = Part Number
+table.column.Description = Description
+table.column.Type = Type
+table.column.Length = Length
+table.column.Width = Width
+table.column.InnerDiameter = Inner Diameter
+table.column.OuterDiameter = Outer Diameter
+table.column.AftOuterDiameter = Aft Outer Diameter
+table.column.AftShoulderLength = Aft Shoulder Length
+table.column.AftShoulderDiameter = Aft Shoulder Diameter
+table.column.ForeShoulderLength = Fore Shoulder Length
+table.column.ForeShoulderDiameter = Fore Shoulder Diameter
+table.column.ForeOuterDiameter = Fore Outer Diameter
+table.column.Shape = Shape
+table.column.Material = Material
+table.column.Finish = Finish
+table.column.Thickness = Thickness
+table.column.Filled = Filled
+table.column.Mass = Mass
+table.column.Diameter = Diameter
+table.column.Sides = Sides
+table.column.LineCount = Line Count
+table.column.LineLength = Line Length
+table.column.LineMaterial = Line Material
+