From: kruland2607 Date: Tue, 11 Sep 2012 16:10:51 +0000 (+0000) Subject: More updates to localization provided by Ruslan Uss. X-Git-Tag: upstream/12.09^2~11 X-Git-Url: https://git.gag.com/?p=debian%2Fopenrocket;a=commitdiff_plain;h=1410c01707dc3ed2b2e14b18360c911ce152b959 More updates to localization provided by Ruslan Uss. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@1015 180e2498-e6e9-4542-8430-84ac67f01cd8 --- diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 1b5da0ed..6df6b713 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -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 = Up to date +simpanel.ttip.loaded = Data loaded from a file +simpanel.ttip.outdated = Data is out of date
Click Run simulations to simulate. +simpanel.ttip.external = Imported data +simpanel.ttip.notSimulated = Not simulated yet
Click Run simulations to simulate. +simpanel.ttip.noData = No simulation data available. +simpanel.ttip.noWarnings = No warnings. +simpanel.ttip.warnings = Warnings: ! 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 diff --git a/core/resources/l10n/messages_ru.properties b/core/resources/l10n/messages_ru.properties index f94e5cf9..21382492 100644 --- a/core/resources/l10n/messages_ru.properties +++ b/core/resources/l10n/messages_ru.properties @@ -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 = \u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u044b +simpanel.ttip.loaded = \u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 +simpanel.ttip.outdated = \u0414\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438
\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430. +simpanel.ttip.external = \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 +simpanel.ttip.notSimulated = \u0420\u0430\u0441\u0447\u0435\u0442 \u0435\u0449\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f
\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u044b \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 = \u041d\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439. +simpanel.ttip.warnings = \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f: ! 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 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.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 \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \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 \u0443\u043f\u043b\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c. +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 \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \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 \u0443\u043f\u043b\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c. 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×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. @@ -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 diff --git a/core/src/net/sf/openrocket/aerodynamics/Warning.java b/core/src/net/sf/openrocket/aerodynamics/Warning.java index 56c65a3a..363606d7 100644 --- a/core/src/net/sf/openrocket/aerodynamics/Warning.java +++ b/core/src/net/sf/openrocket/aerodynamics/Warning.java @@ -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")); } diff --git a/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java b/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java index bd8ee75e..96abf7a6 100644 --- a/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java +++ b/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java @@ -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; } diff --git a/core/src/net/sf/openrocket/aerodynamics/barrowman/SymmetricComponentCalc.java b/core/src/net/sf/openrocket/aerodynamics/barrowman/SymmetricComponentCalc.java index 23178a33..458cbe19 100644 --- a/core/src/net/sf/openrocket/aerodynamics/barrowman/SymmetricComponentCalc.java +++ b/core/src/net/sf/openrocket/aerodynamics/barrowman/SymmetricComponentCalc.java @@ -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); } } diff --git a/core/src/net/sf/openrocket/gui/main/SimulationPanel.java b/core/src/net/sf/openrocket/gui/main/SimulationPanel.java index 66950a94..b12b8561 100644 --- a/core/src/net/sf/openrocket/gui/main/SimulationPanel.java +++ b/core/src/net/sf/openrocket/gui/main/SimulationPanel.java @@ -571,42 +571,38 @@ public class SimulationPanel extends JPanel { tip = "" + sim.getName() + "
"; switch (sim.getStatus()) { case UPTODATE: - //// Up to date
- tip += "Up to date
"; + tip += trans.get ("simpanel.ttip.uptodate") + "
"; break; case LOADED: - //// Data loaded from a file
- tip += "Data loaded from a file
"; + tip += trans.get ("simpanel.ttip.loaded") + "
"; break; case OUTDATED: - tip += "Data is out of date
"; - tip += "Click Run simulations to simulate.
"; + tip += trans.get ("simpanel.ttip.outdated") + "
"; break; case EXTERNAL: - tip += "Imported data
"; + tip += trans.get ("simpanel.ttip.external") + "
"; return tip; case NOT_SIMULATED: - tip += "Not simulated yet
"; - tip += "Click Run simulations 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 += "No warnings."; + tip += trans.get ("simpanel.ttip.noWarnings"); return tip; } - tip += "Warnings:"; + tip += trans.get ("simpanel.ttip.warnings"); for (Warning w : warnings) { tip += "
" + w.toString(); } diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index 139fb688..17352062 100644 --- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -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()) + ").")); }