More updates to localization provided by Ruslan Uss.
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 11 Sep 2012 16:10:51 +0000 (16:10 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 11 Sep 2012 16:10:51 +0000 (16:10 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@1015 180e2498-e6e9-4542-8430-84ac67f01cd8

core/resources/l10n/messages.properties
core/resources/l10n/messages_ru.properties
core/src/net/sf/openrocket/aerodynamics/Warning.java
core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java
core/src/net/sf/openrocket/aerodynamics/barrowman/SymmetricComponentCalc.java
core/src/net/sf/openrocket/gui/main/SimulationPanel.java
core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java

index 1b5da0edba944a488b7b3c50fae1d2345613553a..6df6b7131433a298b63f3c510d0ba3cf6c1dd01e 100644 (file)
@@ -394,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...
@@ -1425,6 +1433,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
index f94e5cf9bc275bcb9dc7b33c8ad5050265d46431..21382492815194e8bb86ff59c61842c448bfa02e 100644 (file)
@@ -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.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.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
 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.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.Trapezoidal = \u0422\u0440\u0430\u043f\u0435\u0446\u0438\u0435\u0432\u0438\u0434\u043d\u044b\u0439
-compaddbuttons.Elliptical = \u042d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\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\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.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
@@ -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.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.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
@@ -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.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.desc1 = An ogive nose cone has a profile that is a segment of a circle.  The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube, values less than 1 produce <b>secant ogives</b>.
-Shape.Ogive.desc2 = An ogive transition has a profile that is a segment of a circle.   The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube at the aft end, values less than 1 produce <b>secant ogives</b>.
+Shape.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 = \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.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.
@@ -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_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_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.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.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.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.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
@@ -1668,14 +1681,14 @@ CompassSelectionButton.lbl.NW = NW
 SlideShowDialog.btn.next = \u0414\u0430\u043b\u0435\u0435
 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.msg = Sorry, the selected tour has not yet been written.
+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 = \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.lbl.selectTour = Select guided tour:
-GuidedTourSelectionDialog.lbl.description = Tour description:
-GuidedTourSelectionDialog.lbl.length = Number of slides:
-GuidedTourSelectionDialog.btn.start = Start tour!
+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 = \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 = \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430:
+GuidedTourSelectionDialog.lbl.length = \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u0430\u0439\u0434\u043e\u0432:
+GuidedTourSelectionDialog.btn.start = \u041d\u0430\u0447\u0430\u0442\u044c!
 
 
 ! Custom Fin BMP Importer
index 56c65a3a4c53535a328b2870217ad9cb57bb4f33..363606d722c7984a446b191842ceb0d452640083 100644 (file)
@@ -102,6 +102,7 @@ public abstract class Warning {
                private double length = Double.NaN;
                private double delay = Double.NaN;
 
+               @Override
                public String toString() {
                        String str = "No motor with designation '" + designation + "'";
                        if (manufacturer != null)
@@ -315,4 +316,13 @@ public abstract class Warning {
        //// Invalid parameter encountered, ignoring.
        public static final 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"));
 }
index bd8ee75e52f80985be18967b8feb631c0edfc6da..96abf7a627694bd331bab37fbda70c5d6843a1cf 100644 (file)
@@ -163,7 +163,7 @@ public class FinSetCalc extends RocketComponentCalc {
                default:
                        // Assume 75% efficiency
                        cna *= 0.75;
-                       warnings.add("Too many parallel fins");
+                       warnings.add(Warning.PARALLEL_FINS);
                        break;
                }
                
index 23178a33b8a58d822f3f9e559541efd355ab7275..458cbe1973b660c9b5f4b36972f35ecd4e162626 100644 (file)
@@ -5,6 +5,7 @@ import static net.sf.openrocket.util.MathUtil.pow2;
 import net.sf.openrocket.aerodynamics.AerodynamicForces;
 import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
 import net.sf.openrocket.aerodynamics.FlightConditions;
+import net.sf.openrocket.aerodynamics.Warning;
 import net.sf.openrocket.aerodynamics.WarningSet;
 import net.sf.openrocket.rocketcomponent.BodyTube;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
@@ -140,7 +141,7 @@ public class SymmetricComponentCalc extends RocketComponentCalc {
 
                // Add warning on supersonic flight
                if (conditions.getMach() > 1.1) {
-                       warnings.add("Body calculations may not be entirely accurate at supersonic speeds.");
+                       warnings.add(Warning.SUPERSONIC);
                }
                
        }
index 66950a9469cc8e96bb7a6b62faeb65973658f409..b12b85617a5f27339689a8fb8ec4e45dfb14422b 100644 (file)
@@ -571,42 +571,38 @@ public class SimulationPanel extends JPanel {
                        tip = "<html><b>" + sim.getName() + "</b><br>";
                        switch (sim.getStatus()) {
                        case UPTODATE:
-                               //// <i>Up to date</i><br>
-                               tip += "<i>Up to date</i><br>";
+                               tip += trans.get ("simpanel.ttip.uptodate") + "<br>";
                                break;
                        
                        case LOADED:
-                               //// <i>Data loaded from a file</i><br>
-                               tip += "<i>Data loaded from a file</i><br>";
+                               tip += trans.get ("simpanel.ttip.loaded") + "<br>";
                                break;
                        
                        case OUTDATED:
-                               tip += "<i><font color=\"red\">Data is out of date</font></i><br>";
-                               tip += "Click <i><b>Run simulations</b></i> to simulate.<br>";
+                               tip += trans.get ("simpanel.ttip.outdated") + "<br>";
                                break;
                        
                        case EXTERNAL:
-                               tip += "<i>Imported data</i><br>";
+                               tip += trans.get ("simpanel.ttip.external") + "<br>";
                                return tip;
                                
                        case NOT_SIMULATED:
-                               tip += "<i>Not simulated yet</i><br>";
-                               tip += "Click <i><b>Run simulations</b></i> to simulate.";
+                               tip += trans.get ("simpanel.ttip.notSimulated");
                                return tip;
                        }
                        
                        if (data == null) {
-                               tip += "No simulation data available.";
+                               tip += trans.get ("simpanel.ttip.noData");
                                return tip;
                        }
                        WarningSet warnings = data.getWarningSet();
                        
                        if (warnings.isEmpty()) {
-                               tip += "<font color=\"gray\">No warnings.</font>";
+                               tip += trans.get ("simpanel.ttip.noWarnings");
                                return tip;
                        }
                        
-                       tip += "<font color=\"red\">Warnings:</font>";
+                       tip += trans.get ("simpanel.ttip.warnings");
                        for (Warning w : warnings) {
                                tip += "<br>" + w.toString();
                        }
index 139fb6883b69c7d21b54b8f0f505e2c04479a5ca..1735206246bccaefdae5ffe922df29a2b61cb44f 100644 (file)
@@ -1,12 +1,12 @@
 package net.sf.openrocket.simulation;
 
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 
 import net.sf.openrocket.aerodynamics.FlightConditions;
 import net.sf.openrocket.aerodynamics.Warning;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.motor.Motor;
 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.RocketComponent;
 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.SimulationException;
 import net.sf.openrocket.simulation.exception.SimulationLaunchException;
@@ -33,6 +32,7 @@ import net.sf.openrocket.util.Quaternion;
 
 public class BasicEventSimulationEngine implements SimulationEngine {
        
+       private static final Translator trans = Application.getTranslator();
        private static final LogHelper log = Application.getLogger();
        
        // TODO: MEDIUM: Allow selecting steppers
@@ -470,15 +470,14 @@ public class BasicEventSimulationEngine implements SimulationEngine {
                                        
                                        // Check for launch rod
                                        if (!status.isLaunchRodCleared()) {
-                                               status.getWarnings().add(Warning.fromString("Recovery device device deployed while on " +
-                                                               "the launch guide."));
+                                               status.getWarnings().add(Warning.RECOVERY_LAUNCH_ROD);
                                        }
                                        
                                        // Check current velocity
                                        if (status.getRocketVelocity().length() > 20) {
                                                // TODO: LOW: Custom warning.
-                                               status.getWarnings().add(Warning.fromString("Recovery device deployment at high " +
-                                                               "speed ("
+                                               status.getWarnings().add(Warning.fromString(trans.get("Warning.RECOVERY_HIGH_SPEED") +
+                                                               " ("
                                                                + UnitGroup.UNITS_VELOCITY.toStringUnit(status.getRocketVelocity().length())
                                                                + ")."));
                                        }