More updates to localization provided by Ruslan Uss.
This commit is contained in:
parent
02550a8258
commit
b0d03cc473
@ -394,6 +394,14 @@ simpanel.col.Maxacceleration = Max. acceleration
|
|||||||
simpanel.col.Timetoapogee = Time to apogee
|
simpanel.col.Timetoapogee = Time to apogee
|
||||||
simpanel.col.Flighttime = Flight time
|
simpanel.col.Flighttime = Flight time
|
||||||
simpanel.col.Groundhitvelocity = Ground hit velocity
|
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
|
! SimulationRunDialog
|
||||||
SimuRunDlg.title.RunSim = Running simulations...
|
SimuRunDlg.title.RunSim = Running simulations...
|
||||||
@ -1425,6 +1433,10 @@ Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate.
|
|||||||
Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation
|
Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation
|
||||||
Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Recovery device opened while motor still burning.
|
Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Recovery device opened while motor still burning.
|
||||||
Warning.FILE_INVALID_PARAMETER = Invalid parameter encountered, ignoring.
|
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
|
! Scale dialog
|
||||||
|
@ -394,6 +394,14 @@ simpanel.col.Maxacceleration = \u041c\u0430\u043a\u0441. \u0443\u0441\u043a\u043
|
|||||||
simpanel.col.Timetoapogee = \u0412\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u043f\u043e\u0433\u0435\u044f
|
simpanel.col.Timetoapogee = \u0412\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u043f\u043e\u0433\u0435\u044f
|
||||||
simpanel.col.Flighttime = \u0412\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0435\u0442\u0430
|
simpanel.col.Flighttime = \u0412\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0435\u0442\u0430
|
||||||
simpanel.col.Groundhitvelocity = \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u0435\u043d\u0438\u044f
|
simpanel.col.Groundhitvelocity = \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u0435\u043d\u0438\u044f
|
||||||
|
simpanel.ttip.uptodate = <i>\u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u044b</i>
|
||||||
|
simpanel.ttip.loaded = <i>\u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u0430</i>
|
||||||
|
simpanel.ttip.outdated = <i><font color=\"red\">\u0414\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438</font></i><br>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 <i><b>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u044b</b></i> \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430.
|
||||||
|
simpanel.ttip.external = <i>\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435</i>
|
||||||
|
simpanel.ttip.notSimulated = <i>\u0420\u0430\u0441\u0447\u0435\u0442 \u0435\u0449\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f</i><br>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 <i><b>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u044b</b></i> \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430.
|
||||||
|
simpanel.ttip.noData = \u041d\u0435\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.
|
||||||
|
simpanel.ttip.noWarnings = <font color=\"gray\">\u041d\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439.</font>
|
||||||
|
simpanel.ttip.warnings = <font color=\"red\">\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:</font>
|
||||||
|
|
||||||
! SimulationRunDialog
|
! SimulationRunDialog
|
||||||
SimuRunDlg.title.RunSim = \u0420\u0430\u0441\u0447\u0435\u0442\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435...
|
SimuRunDlg.title.RunSim = \u0420\u0430\u0441\u0447\u0435\u0442\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435...
|
||||||
@ -563,8 +571,8 @@ compaddbuttons.Bodycompandfinsets = \u041a\u043e\u0440\u043f\u0443\u0441\u043d\u
|
|||||||
compaddbuttons.Nosecone = \u0413\u043e\u043b\u043e\u0432\u043d\u043e\u0439\n\u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c
|
compaddbuttons.Nosecone = \u0413\u043e\u043b\u043e\u0432\u043d\u043e\u0439\n\u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c
|
||||||
compaddbuttons.Bodytube = \u041a\u043e\u0440\u043f\u0443\u0441\u043d\u0430\u044f\n\u0442\u0440\u0443\u0431\u0430
|
compaddbuttons.Bodytube = \u041a\u043e\u0440\u043f\u0443\u0441\u043d\u0430\u044f\n\u0442\u0440\u0443\u0431\u0430
|
||||||
compaddbuttons.Transition = \u041f\u0435\u0440\u0435\u0445\u043e\u0434
|
compaddbuttons.Transition = \u041f\u0435\u0440\u0435\u0445\u043e\u0434
|
||||||
compaddbuttons.Trapezoidal = \u0422\u0440\u0430\u043f\u0435\u0446\u0438\u0435\u0432\u0438\u0434\u043d\u044b\u0439
|
compaddbuttons.Trapezoidal = \u0422\u0440\u0430\u043f\u0435\u0446\u0438\u0435\u0432\u0438\u0434\u043d\u043e\u0435\n\u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435
|
||||||
compaddbuttons.Elliptical = \u042d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439
|
compaddbuttons.Elliptical = \u042d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435\n\u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435
|
||||||
compaddbuttons.Freeform = \u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439\n\u0444\u043e\u0440\u043c\u044b
|
compaddbuttons.Freeform = \u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439\n\u0444\u043e\u0440\u043c\u044b
|
||||||
compaddbuttons.Launchlug = \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435\n\u043a\u043e\u043b\u044c\u0446\u043e
|
compaddbuttons.Launchlug = \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435\n\u043a\u043e\u043b\u044c\u0446\u043e
|
||||||
compaddbuttons.Innercomponent = \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438
|
compaddbuttons.Innercomponent = \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438
|
||||||
@ -1098,7 +1106,7 @@ main.menu.analyze.customExpressions.desc = \u041e\u043f\u0440\u0435\u0434\u0435\
|
|||||||
|
|
||||||
main.menu.help = \u0421\u043f\u0440\u0430\u0432\u043a\u0430
|
main.menu.help = \u0421\u043f\u0440\u0430\u0432\u043a\u0430
|
||||||
main.menu.help.desc = \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 OpenRocket
|
main.menu.help.desc = \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 OpenRocket
|
||||||
main.menu.help.tours = \u042d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u0438
|
main.menu.help.tours = \u041f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430
|
||||||
main.menu.help.tours.desc = \u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u044d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u044e \u043f\u043e OpenRocket
|
main.menu.help.tours.desc = \u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u044d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u044e \u043f\u043e OpenRocket
|
||||||
main.menu.help.license = \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f
|
main.menu.help.license = \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f
|
||||||
main.menu.help.license.desc = \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 OpenRocket
|
main.menu.help.license.desc = \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 OpenRocket
|
||||||
@ -1191,8 +1199,8 @@ Shape.Conical = \u041a\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439
|
|||||||
Shape.Conical.desc1 = \u041a\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c.
|
Shape.Conical.desc1 = \u041a\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c.
|
||||||
Shape.Conical.desc2 = \u0423 \u043a\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u0440\u044f\u043c\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b.
|
Shape.Conical.desc2 = \u0423 \u043a\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u0440\u044f\u043c\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b.
|
||||||
Shape.Ogive = \u0421\u0442\u0440\u0435\u043b\u043e\u0432\u0438\u0434\u043d\u044b\u0439
|
Shape.Ogive = \u0421\u0442\u0440\u0435\u043b\u043e\u0432\u0438\u0434\u043d\u044b\u0439
|
||||||
Shape.Ogive.desc1 = An ogive nose cone has a profile that is a segment of a circle. The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube, values less than 1 produce <b>secant ogives</b>.
|
Shape.Ogive.desc1 = \u0421\u0442\u0440\u0435\u043b\u043e\u0432\u0438\u0434\u043d\u044b\u0439 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0434\u0443\u0433\u0438 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u043e\u0440\u043c\u044b, \u0440\u0430\u0432\u043d\u044b\u0439 1, \u0434\u0430\u0435\u0442 <b>\u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c</b>, \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u043d\u0443\u044e \u0442\u0440\u0443\u0431\u0443, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043c\u0435\u043d\u044c\u0448\u0438\u0439 1, \u0434\u0430\u0435\u0442 <b>\u0443\u043f\u043b\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c</b>.
|
||||||
Shape.Ogive.desc2 = An ogive transition has a profile that is a segment of a circle. The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube at the aft end, values less than 1 produce <b>secant ogives</b>.
|
Shape.Ogive.desc2 = \u0421\u0442\u0440\u0435\u043b\u043e\u0432\u0438\u0434\u043d\u044b\u0439 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0434\u0443\u0433\u0438 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u043e\u0440\u043c\u044b, \u0440\u0430\u0432\u043d\u044b\u0439 1, \u0434\u0430\u0435\u0442 <b>\u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c</b>, \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u043d\u0443\u044e \u0442\u0440\u0443\u0431\u0443, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043c\u0435\u043d\u044c\u0448\u0438\u0439 1, \u0434\u0430\u0435\u0442 <b>\u0443\u043f\u043b\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c</b>.
|
||||||
Shape.Ellipsoid = \u042d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434
|
Shape.Ellipsoid = \u042d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434
|
||||||
Shape.Ellipsoid.desc1 = An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2×<i>Length</i> and <i>Diameter</i>.
|
Shape.Ellipsoid.desc1 = An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2×<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×<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×<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.
|
||||||
@ -1402,6 +1410,7 @@ FlightDataType.TYPE_COMPUTATION_TIME = \u0412\u0440\u0435\u043c\u044f \u0440\u04
|
|||||||
FlightDataType.TYPE_LATITUDE = \u0428\u0438\u0440\u043e\u0442\u0430
|
FlightDataType.TYPE_LATITUDE = \u0428\u0438\u0440\u043e\u0442\u0430
|
||||||
FlightDataType.TYPE_LONGITUDE = \u0414\u043e\u043b\u0433\u043e\u0442\u0430
|
FlightDataType.TYPE_LONGITUDE = \u0414\u043e\u043b\u0433\u043e\u0442\u0430
|
||||||
FlightDataType.TYPE_CORIOLIS_ACCELERATION = \u041a\u043e\u0440\u0438\u043e\u043b\u0438\u0441\u043e\u0432\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435
|
FlightDataType.TYPE_CORIOLIS_ACCELERATION = \u041a\u043e\u0440\u0438\u043e\u043b\u0438\u0441\u043e\u0432\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435
|
||||||
|
FlightDataType.TYPE_GRAVITY = \u0413\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435
|
||||||
|
|
||||||
! PlotConfiguration
|
! PlotConfiguration
|
||||||
PlotConfiguration.Verticalmotion = \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 / \u0412\u0440\u0435\u043c\u044f
|
PlotConfiguration.Verticalmotion = \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 / \u0412\u0440\u0435\u043c\u044f
|
||||||
@ -1420,8 +1429,12 @@ Warning.DISCONTINUITY = \u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u
|
|||||||
Warning.THICK_FIN = \u0422\u043e\u043b\u0441\u0442\u044b\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.
|
Warning.THICK_FIN = \u0422\u043e\u043b\u0441\u0442\u044b\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.
|
||||||
Warning.JAGGED_EDGED_FIN = \u0421\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0441 \u0437\u0430\u043e\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u0440\u0430\u044f\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.
|
Warning.JAGGED_EDGED_FIN = \u0421\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0441 \u0437\u0430\u043e\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u0440\u0430\u044f\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.
|
||||||
Warning.LISTENERS_AFFECTED = \u0421\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u0440\u0430\u0441\u0447\u0435\u0442 \u043f\u043e\u043b\u0435\u0442\u0430
|
Warning.LISTENERS_AFFECTED = \u0421\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u0440\u0430\u0441\u0447\u0435\u0442 \u043f\u043e\u043b\u0435\u0442\u0430
|
||||||
Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043f\u0430\u0441\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435.
|
Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = \u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043f\u0430\u0441\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435.
|
||||||
Warning.FILE_INVALID_PARAMETER = \u0412\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e.
|
Warning.FILE_INVALID_PARAMETER = \u0412\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e.
|
||||||
|
Warning.PARALLEL_FINS = \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432.
|
||||||
|
Warning.SUPERSONIC = \u0420\u0430\u0441\u0447\u0435\u0442\u044b \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043f\u0440\u0438 \u0441\u0432\u0435\u0440\u0445\u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0445 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044f\u0445 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0442\u043e\u0447\u043d\u044b.
|
||||||
|
Warning.RECOVERY_LAUNCH_ROD = \u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043f\u0430\u0441\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0435.
|
||||||
|
Warning.RECOVERY_HIGH_SPEED = \u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043f\u0430\u0441\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438
|
||||||
|
|
||||||
|
|
||||||
! Scale dialog
|
! Scale dialog
|
||||||
@ -1668,14 +1681,14 @@ CompassSelectionButton.lbl.NW = NW
|
|||||||
SlideShowDialog.btn.next = \u0414\u0430\u043b\u0435\u0435
|
SlideShowDialog.btn.next = \u0414\u0430\u043b\u0435\u0435
|
||||||
SlideShowDialog.btn.prev = \u041d\u0430\u0437\u0430\u0434
|
SlideShowDialog.btn.prev = \u041d\u0430\u0437\u0430\u0434
|
||||||
|
|
||||||
SlideShowLinkListener.error.title = \u042d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b
|
SlideShowLinkListener.error.title = \u041f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b
|
||||||
SlideShowLinkListener.error.msg = Sorry, the selected tour has not yet been written.
|
SlideShowLinkListener.error.msg = \u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0435\u0449\u0435 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e.
|
||||||
|
|
||||||
GuidedTourSelectionDialog.title = Guided tours
|
GuidedTourSelectionDialog.title = \u041f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430
|
||||||
GuidedTourSelectionDialog.lbl.selectTour = Select guided tour:
|
GuidedTourSelectionDialog.lbl.selectTour = \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e:
|
||||||
GuidedTourSelectionDialog.lbl.description = Tour description:
|
GuidedTourSelectionDialog.lbl.description = \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430:
|
||||||
GuidedTourSelectionDialog.lbl.length = Number of slides:
|
GuidedTourSelectionDialog.lbl.length = \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u0430\u0439\u0434\u043e\u0432:
|
||||||
GuidedTourSelectionDialog.btn.start = Start tour!
|
GuidedTourSelectionDialog.btn.start = \u041d\u0430\u0447\u0430\u0442\u044c!
|
||||||
|
|
||||||
|
|
||||||
! Custom Fin BMP Importer
|
! Custom Fin BMP Importer
|
||||||
|
@ -102,6 +102,7 @@ public abstract class Warning {
|
|||||||
private double length = Double.NaN;
|
private double length = Double.NaN;
|
||||||
private double delay = Double.NaN;
|
private double delay = Double.NaN;
|
||||||
|
|
||||||
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
String str = "No motor with designation '" + designation + "'";
|
String str = "No motor with designation '" + designation + "'";
|
||||||
if (manufacturer != null)
|
if (manufacturer != null)
|
||||||
@ -315,4 +316,13 @@ public abstract class Warning {
|
|||||||
//// Invalid parameter encountered, ignoring.
|
//// Invalid parameter encountered, ignoring.
|
||||||
public static final Warning FILE_INVALID_PARAMETER =
|
public static final Warning FILE_INVALID_PARAMETER =
|
||||||
new Other(trans.get("Warning.FILE_INVALID_PARAMETER"));
|
new Other(trans.get("Warning.FILE_INVALID_PARAMETER"));
|
||||||
|
|
||||||
|
public static final Warning PARALLEL_FINS =
|
||||||
|
new Other(trans.get("Warning.PARALLEL_FINS"));
|
||||||
|
|
||||||
|
public static final Warning SUPERSONIC =
|
||||||
|
new Other(trans.get("Warning.SUPERSONIC"));
|
||||||
|
|
||||||
|
public static final Warning RECOVERY_LAUNCH_ROD =
|
||||||
|
new Other(trans.get("Warning.RECOVERY_LAUNCH_ROD"));
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ public class FinSetCalc extends RocketComponentCalc {
|
|||||||
default:
|
default:
|
||||||
// Assume 75% efficiency
|
// Assume 75% efficiency
|
||||||
cna *= 0.75;
|
cna *= 0.75;
|
||||||
warnings.add("Too many parallel fins");
|
warnings.add(Warning.PARALLEL_FINS);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import static net.sf.openrocket.util.MathUtil.pow2;
|
|||||||
import net.sf.openrocket.aerodynamics.AerodynamicForces;
|
import net.sf.openrocket.aerodynamics.AerodynamicForces;
|
||||||
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
|
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
|
||||||
import net.sf.openrocket.aerodynamics.FlightConditions;
|
import net.sf.openrocket.aerodynamics.FlightConditions;
|
||||||
|
import net.sf.openrocket.aerodynamics.Warning;
|
||||||
import net.sf.openrocket.aerodynamics.WarningSet;
|
import net.sf.openrocket.aerodynamics.WarningSet;
|
||||||
import net.sf.openrocket.rocketcomponent.BodyTube;
|
import net.sf.openrocket.rocketcomponent.BodyTube;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
@ -140,7 +141,7 @@ public class SymmetricComponentCalc extends RocketComponentCalc {
|
|||||||
|
|
||||||
// Add warning on supersonic flight
|
// Add warning on supersonic flight
|
||||||
if (conditions.getMach() > 1.1) {
|
if (conditions.getMach() > 1.1) {
|
||||||
warnings.add("Body calculations may not be entirely accurate at supersonic speeds.");
|
warnings.add(Warning.SUPERSONIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -571,42 +571,38 @@ public class SimulationPanel extends JPanel {
|
|||||||
tip = "<html><b>" + sim.getName() + "</b><br>";
|
tip = "<html><b>" + sim.getName() + "</b><br>";
|
||||||
switch (sim.getStatus()) {
|
switch (sim.getStatus()) {
|
||||||
case UPTODATE:
|
case UPTODATE:
|
||||||
//// <i>Up to date</i><br>
|
tip += trans.get ("simpanel.ttip.uptodate") + "<br>";
|
||||||
tip += "<i>Up to date</i><br>";
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LOADED:
|
case LOADED:
|
||||||
//// <i>Data loaded from a file</i><br>
|
tip += trans.get ("simpanel.ttip.loaded") + "<br>";
|
||||||
tip += "<i>Data loaded from a file</i><br>";
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OUTDATED:
|
case OUTDATED:
|
||||||
tip += "<i><font color=\"red\">Data is out of date</font></i><br>";
|
tip += trans.get ("simpanel.ttip.outdated") + "<br>";
|
||||||
tip += "Click <i><b>Run simulations</b></i> to simulate.<br>";
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXTERNAL:
|
case EXTERNAL:
|
||||||
tip += "<i>Imported data</i><br>";
|
tip += trans.get ("simpanel.ttip.external") + "<br>";
|
||||||
return tip;
|
return tip;
|
||||||
|
|
||||||
case NOT_SIMULATED:
|
case NOT_SIMULATED:
|
||||||
tip += "<i>Not simulated yet</i><br>";
|
tip += trans.get ("simpanel.ttip.notSimulated");
|
||||||
tip += "Click <i><b>Run simulations</b></i> to simulate.";
|
|
||||||
return tip;
|
return tip;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
tip += "No simulation data available.";
|
tip += trans.get ("simpanel.ttip.noData");
|
||||||
return tip;
|
return tip;
|
||||||
}
|
}
|
||||||
WarningSet warnings = data.getWarningSet();
|
WarningSet warnings = data.getWarningSet();
|
||||||
|
|
||||||
if (warnings.isEmpty()) {
|
if (warnings.isEmpty()) {
|
||||||
tip += "<font color=\"gray\">No warnings.</font>";
|
tip += trans.get ("simpanel.ttip.noWarnings");
|
||||||
return tip;
|
return tip;
|
||||||
}
|
}
|
||||||
|
|
||||||
tip += "<font color=\"red\">Warnings:</font>";
|
tip += trans.get ("simpanel.ttip.warnings");
|
||||||
for (Warning w : warnings) {
|
for (Warning w : warnings) {
|
||||||
tip += "<br>" + w.toString();
|
tip += "<br>" + w.toString();
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package net.sf.openrocket.simulation;
|
package net.sf.openrocket.simulation;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import net.sf.openrocket.aerodynamics.FlightConditions;
|
import net.sf.openrocket.aerodynamics.FlightConditions;
|
||||||
import net.sf.openrocket.aerodynamics.Warning;
|
import net.sf.openrocket.aerodynamics.Warning;
|
||||||
|
import net.sf.openrocket.l10n.Translator;
|
||||||
import net.sf.openrocket.logging.LogHelper;
|
import net.sf.openrocket.logging.LogHelper;
|
||||||
import net.sf.openrocket.motor.Motor;
|
import net.sf.openrocket.motor.Motor;
|
||||||
import net.sf.openrocket.motor.MotorId;
|
import net.sf.openrocket.motor.MotorId;
|
||||||
@ -18,7 +18,6 @@ import net.sf.openrocket.rocketcomponent.MotorMount;
|
|||||||
import net.sf.openrocket.rocketcomponent.RecoveryDevice;
|
import net.sf.openrocket.rocketcomponent.RecoveryDevice;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
import net.sf.openrocket.rocketcomponent.Stage;
|
import net.sf.openrocket.rocketcomponent.Stage;
|
||||||
import net.sf.openrocket.simulation.customexpression.CustomExpression;
|
|
||||||
import net.sf.openrocket.simulation.exception.MotorIgnitionException;
|
import net.sf.openrocket.simulation.exception.MotorIgnitionException;
|
||||||
import net.sf.openrocket.simulation.exception.SimulationException;
|
import net.sf.openrocket.simulation.exception.SimulationException;
|
||||||
import net.sf.openrocket.simulation.exception.SimulationLaunchException;
|
import net.sf.openrocket.simulation.exception.SimulationLaunchException;
|
||||||
@ -33,6 +32,7 @@ import net.sf.openrocket.util.Quaternion;
|
|||||||
|
|
||||||
public class BasicEventSimulationEngine implements SimulationEngine {
|
public class BasicEventSimulationEngine implements SimulationEngine {
|
||||||
|
|
||||||
|
private static final Translator trans = Application.getTranslator();
|
||||||
private static final LogHelper log = Application.getLogger();
|
private static final LogHelper log = Application.getLogger();
|
||||||
|
|
||||||
// TODO: MEDIUM: Allow selecting steppers
|
// TODO: MEDIUM: Allow selecting steppers
|
||||||
@ -470,15 +470,14 @@ public class BasicEventSimulationEngine implements SimulationEngine {
|
|||||||
|
|
||||||
// Check for launch rod
|
// Check for launch rod
|
||||||
if (!status.isLaunchRodCleared()) {
|
if (!status.isLaunchRodCleared()) {
|
||||||
status.getWarnings().add(Warning.fromString("Recovery device device deployed while on " +
|
status.getWarnings().add(Warning.RECOVERY_LAUNCH_ROD);
|
||||||
"the launch guide."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check current velocity
|
// Check current velocity
|
||||||
if (status.getRocketVelocity().length() > 20) {
|
if (status.getRocketVelocity().length() > 20) {
|
||||||
// TODO: LOW: Custom warning.
|
// TODO: LOW: Custom warning.
|
||||||
status.getWarnings().add(Warning.fromString("Recovery device deployment at high " +
|
status.getWarnings().add(Warning.fromString(trans.get("Warning.RECOVERY_HIGH_SPEED") +
|
||||||
"speed ("
|
" ("
|
||||||
+ UnitGroup.UNITS_VELOCITY.toStringUnit(status.getRocketVelocity().length())
|
+ UnitGroup.UNITS_VELOCITY.toStringUnit(status.getRocketVelocity().length())
|
||||||
+ ")."));
|
+ ")."));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user