Merged l10n branch to trunk
authorplaa <plaa@180e2498-e6e9-4542-8430-84ac67f01cd8>
Sat, 18 Jun 2011 20:53:40 +0000 (20:53 +0000)
committerplaa <plaa@180e2498-e6e9-4542-8430-84ac67f01cd8>
Sat, 18 Jun 2011 20:53:40 +0000 (20:53 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@130 180e2498-e6e9-4542-8430-84ac67f01cd8

94 files changed:
l10n/i18nedit.properties [new file with mode: 0644]
l10n/messages.metaprops [new file with mode: 0644]
l10n/messages.properties
l10n/messages_de.properties [new file with mode: 0644]
l10n/messages_es.properties [new file with mode: 0644]
l10n/messages_fr.properties [new file with mode: 0644]
src/net/sf/openrocket/aerodynamics/Warning.java
src/net/sf/openrocket/database/Databases.java
src/net/sf/openrocket/gui/StorageOptionChooser.java
src/net/sf/openrocket/gui/adaptors/MaterialModel.java
src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java
src/net/sf/openrocket/gui/components/SimulationExportPanel.java
src/net/sf/openrocket/gui/components/StageSelector.java
src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java
src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java
src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java
src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java
src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java
src/net/sf/openrocket/gui/configdialog/FinSetConfig.java
src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java
src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java
src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java
src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java
src/net/sf/openrocket/gui/configdialog/MotorConfig.java
src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java
src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java
src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java
src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java
src/net/sf/openrocket/gui/configdialog/RocketConfig.java
src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java
src/net/sf/openrocket/gui/configdialog/SleeveConfig.java
src/net/sf/openrocket/gui/configdialog/StreamerConfig.java
src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java
src/net/sf/openrocket/gui/configdialog/TransitionConfig.java
src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java
src/net/sf/openrocket/gui/dialogs/AboutDialog.java
src/net/sf/openrocket/gui/dialogs/BugReportDialog.java
src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java
src/net/sf/openrocket/gui/dialogs/CustomMaterialDialog.java
src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java
src/net/sf/openrocket/gui/dialogs/DetailDialog.java
src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java
src/net/sf/openrocket/gui/dialogs/ExampleDesignDialog.java
src/net/sf/openrocket/gui/dialogs/LicenseDialog.java
src/net/sf/openrocket/gui/dialogs/MotorDatabaseLoadingDialog.java
src/net/sf/openrocket/gui/dialogs/PrintDialog.java
src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java
src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java
src/net/sf/openrocket/gui/dialogs/motor/MotorChooserDialog.java
src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorColumns.java
src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorPlotDialog.java
src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java
src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java
src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java
src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java
src/net/sf/openrocket/gui/figureelements/RocketInfo.java
src/net/sf/openrocket/gui/main/BasicFrame.java
src/net/sf/openrocket/gui/main/ComponentAddButtons.java
src/net/sf/openrocket/gui/main/ComponentIcons.java
src/net/sf/openrocket/gui/main/RocketActions.java
src/net/sf/openrocket/gui/main/SimulationEditDialog.java
src/net/sf/openrocket/gui/main/SimulationPanel.java
src/net/sf/openrocket/gui/main/SimulationRunDialog.java
src/net/sf/openrocket/gui/plot/PlotConfiguration.java
src/net/sf/openrocket/gui/plot/PlotDialog.java
src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java
src/net/sf/openrocket/gui/scalefigure/RocketPanel.java
src/net/sf/openrocket/l10n/DebugTranslator.java
src/net/sf/openrocket/rocketcomponent/BodyTube.java
src/net/sf/openrocket/rocketcomponent/Bulkhead.java
src/net/sf/openrocket/rocketcomponent/ExternalComponent.java
src/net/sf/openrocket/rocketcomponent/FinSet.java
src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java
src/net/sf/openrocket/rocketcomponent/InnerTube.java
src/net/sf/openrocket/rocketcomponent/LaunchLug.java
src/net/sf/openrocket/rocketcomponent/MassComponent.java
src/net/sf/openrocket/rocketcomponent/MotorMount.java
src/net/sf/openrocket/rocketcomponent/NoseCone.java
src/net/sf/openrocket/rocketcomponent/Parachute.java
src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java
src/net/sf/openrocket/rocketcomponent/Rocket.java
src/net/sf/openrocket/rocketcomponent/RocketComponent.java
src/net/sf/openrocket/rocketcomponent/ShockCord.java
src/net/sf/openrocket/rocketcomponent/Stage.java
src/net/sf/openrocket/rocketcomponent/Transition.java
src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java
src/net/sf/openrocket/rocketcomponent/TubeCoupler.java
src/net/sf/openrocket/simulation/FlightDataType.java
src/net/sf/openrocket/simulation/FlightEvent.java
src/net/sf/openrocket/startup/Application.java
src/net/sf/openrocket/startup/Startup.java
src/net/sf/openrocket/util/LineStyle.java
src/net/sf/openrocket/util/Prefs.java
src/net/sf/openrocket/utils/MotorPlot.java

diff --git a/l10n/i18nedit.properties b/l10n/i18nedit.properties
new file mode 100644 (file)
index 0000000..a9a11e4
--- /dev/null
@@ -0,0 +1,7 @@
+#I18NEdit settings for project
+locale.default=en
+locales=fr es
+personal.sampo.checksuperfluous=false
+personal.sampo.searchmode=2
+personal.sampo.sourcelocale=
+personal.sampo.targetlocale=fr
diff --git a/l10n/messages.metaprops b/l10n/messages.metaprops
new file mode 100644 (file)
index 0000000..f6cbf3f
--- /dev/null
@@ -0,0 +1,5910 @@
+#I18NEdit properties organization file, not to be edited!
+BasicFrame.SimpleFileFilter1..text.changed=20110317061957
+BasicFrame.SimpleFileFilter1..text.md5=JRZf/wtwgmUMw3KHtUjLdA\=\=
+BasicFrame.SimpleFileFilter1.es.text.changed=20110317062041
+BasicFrame.SimpleFileFilter1.es.text.md5=MtMBpFbM+exqmRntlI7v1Q\=\=
+BasicFrame.SimpleFileFilter1.fr.text.changed=20110317061957
+BasicFrame.SimpleFileFilter1.fr.text.md5=ncaip5O9E4vlC2ETLVIUoA\=\=
+BasicFrame.SimpleFileFilter2..text.changed=20110317061957
+BasicFrame.SimpleFileFilter2..text.md5=6sujDIsY3pgc0c0rCKOsow\=\=
+BasicFrame.SimpleFileFilter2.es.text.changed=20110317062041
+BasicFrame.SimpleFileFilter2.es.text.md5=5rzB5aRDWSVXD1FjmQWoCg\=\=
+BasicFrame.SimpleFileFilter2.fr.text.changed=20110317061957
+BasicFrame.SimpleFileFilter2.fr.text.md5=SI7TG4GE1jNcutiWXn6fkQ\=\=
+BasicFrame.SimpleFileFilter3..text.changed=20110317061957
+BasicFrame.SimpleFileFilter3..text.md5=JIwyt0zBWmT/RlRxivpZ0w\=\=
+BasicFrame.SimpleFileFilter3.es.text.changed=20110317062041
+BasicFrame.SimpleFileFilter3.es.text.md5=qEUv4rYMUFCQzFIJicEDiA\=\=
+BasicFrame.SimpleFileFilter3.fr.text.changed=20110317061957
+BasicFrame.SimpleFileFilter3.fr.text.md5=BG/VE3BnQX3bjndJGt7UXA\=\=
+BasicFrame.StageName.Sustainer..text.changed=20110317061957
+BasicFrame.StageName.Sustainer..text.md5=ZlimkhOIOYxUh+OEovBpyQ\=\=
+BasicFrame.StageName.Sustainer.es.text.changed=20110317062041
+BasicFrame.StageName.Sustainer.es.text.md5=ZlimkhOIOYxUh+OEovBpyQ\=\=
+BasicFrame.StageName.Sustainer.fr.text.changed=20110317061957
+BasicFrame.StageName.Sustainer.fr.text.md5=ZlimkhOIOYxUh+OEovBpyQ\=\=
+BasicFrame.WarningDialog.title..text.changed=20110317061957
+BasicFrame.WarningDialog.title..text.md5=dVwfT+ApXpXTfOSFT+bAww\=\=
+BasicFrame.WarningDialog.title.es.text.changed=20110317062041
+BasicFrame.WarningDialog.title.es.text.md5=dVwfT+ApXpXTfOSFT+bAww\=\=
+BasicFrame.WarningDialog.title.fr.text.changed=20110317061957
+BasicFrame.WarningDialog.title.fr.text.md5=CA/C/02LpYdWp56ritgy9Q\=\=
+BasicFrame.WarningDialog.txt1..text.changed=20110317061957
+BasicFrame.WarningDialog.txt1..text.md5=ytpppGKgCROs/1qNRUIY0w\=\=
+BasicFrame.WarningDialog.txt1.es.text.changed=20110317062041
+BasicFrame.WarningDialog.txt1.es.text.md5=ytpppGKgCROs/1qNRUIY0w\=\=
+BasicFrame.WarningDialog.txt1.fr.text.changed=20110317061957
+BasicFrame.WarningDialog.txt1.fr.text.md5=EB0q1cqzHp0cz8DRBy9nsw\=\=
+BasicFrame.WarningDialog.txt2..text.changed=20110317061957
+BasicFrame.WarningDialog.txt2..text.md5=tsMMUZdtq7uq/UCLTMNJXA\=\=
+BasicFrame.WarningDialog.txt2.es.text.changed=20110317062041
+BasicFrame.WarningDialog.txt2.es.text.md5=tsMMUZdtq7uq/UCLTMNJXA\=\=
+BasicFrame.WarningDialog.txt2.fr.text.changed=20110317061957
+BasicFrame.WarningDialog.txt2.fr.text.md5=kbqb2hEpTj85poYvmGRypA\=\=
+BasicFrame.dlg.lbl1..text.changed=20110317061957
+BasicFrame.dlg.lbl1..text.md5=4vHeR+UwjN4hOHJIOr9b4Q\=\=
+BasicFrame.dlg.lbl1.es.text.changed=20110317062041
+BasicFrame.dlg.lbl1.es.text.md5=a8RojWEbDaXisNNIzNseHw\=\=
+BasicFrame.dlg.lbl1.fr.text.changed=20110317061957
+BasicFrame.dlg.lbl1.fr.text.md5=faXBqIUUOF13/xG5cRm0yw\=\=
+BasicFrame.dlg.lbl2..text.changed=20110317061957
+BasicFrame.dlg.lbl2..text.md5=iTcLPBqFqaE9HYR6zNu1tA\=\=
+BasicFrame.dlg.lbl2.es.text.changed=20110317062041
+BasicFrame.dlg.lbl2.es.text.md5=mnclKcWFT+p/PC1KhKRsPA\=\=
+BasicFrame.dlg.lbl2.fr.text.changed=20110317061957
+BasicFrame.dlg.lbl2.fr.text.md5=bOTqTNfsOvikqKsFQOT9Bg\=\=
+BasicFrame.dlg.lbl3..text.changed=20110317061957
+BasicFrame.dlg.lbl3..text.md5=crkc8P50tidsmyDbj16O0w\=\=
+BasicFrame.dlg.lbl3.es.text.changed=20110317062041
+BasicFrame.dlg.lbl3.es.text.md5=qYrXCO9vi/6hr1PlF4mavQ\=\=
+BasicFrame.dlg.lbl3.fr.text.changed=20110317061957
+BasicFrame.dlg.lbl3.fr.text.md5=p44ASia1HzkhhTCIGby00g\=\=
+BasicFrame.dlg.title..text.changed=20110317061957
+BasicFrame.dlg.title..text.md5=2pARj9Ihv8yhh68hXbnmHA\=\=
+BasicFrame.dlg.title.es.text.changed=20110317062041
+BasicFrame.dlg.title.es.text.md5=FE36YC4P4lSOpFKwTBkvuA\=\=
+BasicFrame.dlg.title.fr.text.changed=20110317061957
+BasicFrame.dlg.title.fr.text.md5=/5y1aoxzV/u6TJZ3eI7mcA\=\=
+BasicFrame.item.Closedesign..text.changed=20110317061957
+BasicFrame.item.Closedesign..text.md5=4G6HA1MvvrcRteDSRv3iLQ\=\=
+BasicFrame.item.Closedesign.es.text.changed=20110317062041
+BasicFrame.item.Closedesign.es.text.md5=+EimWFoLYm6CjkhiezsqhA\=\=
+BasicFrame.item.Closedesign.fr.text.changed=20110317061957
+BasicFrame.item.Closedesign.fr.text.md5=W5d76m8c+UBfxyLRB8gIGw\=\=
+BasicFrame.item.Openexamplerocketdesign..text.changed=20110317061957
+BasicFrame.item.Openexamplerocketdesign..text.md5=taUPkL3GO7Fq7qgM3uQhiA\=\=
+BasicFrame.item.Openexamplerocketdesign.es.text.changed=20110317062041
+BasicFrame.item.Openexamplerocketdesign.es.text.md5=tuY6KCNEIfRU51KxL75usQ\=\=
+BasicFrame.item.Openexamplerocketdesign.fr.text.changed=20110317061957
+BasicFrame.item.Openexamplerocketdesign.fr.text.md5=tfG3eonx37RGAvrQA4ZRjg\=\=
+BasicFrame.item.Openrocketdesign..text.changed=20110317061957
+BasicFrame.item.Openrocketdesign..text.md5=HTmun9x9KD5qih75pYQl4g\=\=
+BasicFrame.item.Openrocketdesign.es.text.changed=20110317062041
+BasicFrame.item.Openrocketdesign.es.text.md5=Vw9u5rv3mC1WAPx8OCBC8Q\=\=
+BasicFrame.item.Openrocketdesign.fr.text.changed=20110317061957
+BasicFrame.item.Openrocketdesign.fr.text.md5=JZakhRqrvNGAQz0Jcrnojg\=\=
+BasicFrame.item.Printpart..text.changed=20110317061957
+BasicFrame.item.Printpart..text.md5=J0NoLtwEKlmx9WaDJliELg\=\=
+BasicFrame.item.Printpart.es.text.changed=20110317062041
+BasicFrame.item.Printpart.es.text.md5=gw7yuSCCISz4TK5a1FKQ6w\=\=
+BasicFrame.item.Printpart.fr.text.changed=20110317061957
+BasicFrame.item.Printpart.fr.text.md5=0mqRHEtjUj1sgMLxsdz4jQ\=\=
+BasicFrame.item.Quitprogram..text.changed=20110317061957
+BasicFrame.item.Quitprogram..text.md5=KRcy2XCUDSABfotM2+1ZoA\=\=
+BasicFrame.item.Quitprogram.es.text.changed=20110317062041
+BasicFrame.item.Quitprogram.es.text.md5=5wPftx7Cf7E9EKL7NiJnTg\=\=
+BasicFrame.item.Quitprogram.fr.text.changed=20110317061957
+BasicFrame.item.Quitprogram.fr.text.md5=rA0jSnWBcwZpU8RCralLeA\=\=
+BasicFrame.item.SavecurRocketdesign..text.changed=20110317061957
+BasicFrame.item.SavecurRocketdesign..text.md5=xbbi5JZvuMwJGMYLpavAtw\=\=
+BasicFrame.item.SavecurRocketdesign.es.text.changed=20110317062041
+BasicFrame.item.SavecurRocketdesign.es.text.md5=qRpQ1fT1RqTJZMXemqtKIw\=\=
+BasicFrame.item.SavecurRocketdesign.fr.text.changed=20110317061957
+BasicFrame.item.SavecurRocketdesign.fr.text.md5=P+gSXlHA+wFqX+O11hzOYQ\=\=
+BasicFrame.item.SavecurRocketdesnewfile..text.changed=20110317061957
+BasicFrame.item.SavecurRocketdesnewfile..text.md5=kTW0KTTvnslJjtdhfG1qQQ\=\=
+BasicFrame.item.SavecurRocketdesnewfile.es.text.changed=20110317062041
+BasicFrame.item.SavecurRocketdesnewfile.es.text.md5=VcvhNDqOCVnFotfACNoGvg\=\=
+BasicFrame.item.SavecurRocketdesnewfile.fr.text.changed=20110317061957
+BasicFrame.item.SavecurRocketdesnewfile.fr.text.md5=FahGaugKfxFYr2+6Yv3r2g\=\=
+BasicFrame.menu.Rocketedt..text.changed=20110317061957
+BasicFrame.menu.Rocketedt..text.md5=Q4O7rIFRZQZ2s0XAAu4MxA\=\=
+BasicFrame.menu.Rocketedt.es.text.changed=20110317062041
+BasicFrame.menu.Rocketedt.es.text.md5=tJk97Lgf2mDSOUMHRRYsyA\=\=
+BasicFrame.menu.Rocketedt.fr.text.changed=20110317061957
+BasicFrame.menu.Rocketedt.fr.text.md5=JEFCNOuCrQqC5DPzgMj3+Q\=\=
+BasicFrame.tab.Flightsim..text.changed=20110317061957
+BasicFrame.tab.Flightsim..text.md5=N4jO/mR7XbpV4zJxLf7WDA\=\=
+BasicFrame.tab.Flightsim.es.text.changed=20110317062041
+BasicFrame.tab.Flightsim.es.text.md5=celHrBX8Fl9XO5/oTVtBlQ\=\=
+BasicFrame.tab.Flightsim.fr.text.changed=20110317061957
+BasicFrame.tab.Flightsim.fr.text.md5=YlSnDXAR3Cxkzk49eOzRmg\=\=
+BasicFrame.tab.Rocketdesign..text.changed=20110317061957
+BasicFrame.tab.Rocketdesign..text.md5=W3td7UFmAOH18pup6QaDgA\=\=
+BasicFrame.tab.Rocketdesign.es.text.changed=20110317062041
+BasicFrame.tab.Rocketdesign.es.text.md5=xT7sMRZC9jeBc2YhnQTY+Q\=\=
+BasicFrame.tab.Rocketdesign.fr.text.changed=20110317061957
+BasicFrame.tab.Rocketdesign.fr.text.md5=sdJrQouaPlxpcg1VHwhAkQ\=\=
+BasicFrame.title.Addnewcomp..text.changed=20110317061957
+BasicFrame.title.Addnewcomp..text.md5=ecuX0ik2yiQ017RJW0fW8w\=\=
+BasicFrame.title.Addnewcomp.es.text.changed=20110317062041
+BasicFrame.title.Addnewcomp.es.text.md5=mkLIbjGCzAFdC5EBvHMELA\=\=
+BasicFrame.title.Addnewcomp.fr.text.changed=20110317061957
+BasicFrame.title.Addnewcomp.fr.text.md5=Y3Z5xwLQn5PcO54e7Q9npg\=\=
+BodyTube.BodyTube..text.changed=20110317061957
+BodyTube.BodyTube..text.md5=3T0MaANX4mUAKbI403vAUA\=\=
+BodyTube.BodyTube.es.text.changed=20110317062041
+BodyTube.BodyTube.es.text.md5=3T0MaANX4mUAKbI403vAUA\=\=
+BodyTube.BodyTube.fr.text.changed=20110317061957
+BodyTube.BodyTube.fr.text.md5=fA71ssLRmS1SacfrveHv1w\=\=
+BodyTubecfg.checkbox.Automatic..text.changed=20110317061957
+BodyTubecfg.checkbox.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\=
+BodyTubecfg.checkbox.Automatic.es.text.changed=20110317062041
+BodyTubecfg.checkbox.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\=
+BodyTubecfg.checkbox.Automatic.fr.text.changed=20110317061957
+BodyTubecfg.checkbox.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\=
+BodyTubecfg.checkbox.Filled..text.changed=20110317061957
+BodyTubecfg.checkbox.Filled..text.md5=2dWG+MeS+PZhBSr0JTYyPA\=\=
+BodyTubecfg.checkbox.Filled.es.text.changed=20110317062041
+BodyTubecfg.checkbox.Filled.es.text.md5=HQ2GNI1le2Dl+Mw8w7w38w\=\=
+BodyTubecfg.checkbox.Filled.fr.text.changed=20110317061957
+BodyTubecfg.checkbox.Filled.fr.text.md5=S975CUbtxnqWOai6+gtVIw\=\=
+BodyTubecfg.lbl.Bodytubelength..text.changed=20110317061957
+BodyTubecfg.lbl.Bodytubelength..text.md5=RTnU0a7NxgbQHgs76zbWJg\=\=
+BodyTubecfg.lbl.Bodytubelength.es.text.changed=20110317062041
+BodyTubecfg.lbl.Bodytubelength.es.text.md5=mWbWBXn5WsHQ7oBAGhsd3Q\=\=
+BodyTubecfg.lbl.Bodytubelength.fr.text.changed=20110317061957
+BodyTubecfg.lbl.Bodytubelength.fr.text.md5=zMeO0onqK4lkXgYIoexmNA\=\=
+BodyTubecfg.lbl.Innerdiameter..text.changed=20110317061957
+BodyTubecfg.lbl.Innerdiameter..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\=
+BodyTubecfg.lbl.Innerdiameter.es.text.changed=20110317062041
+BodyTubecfg.lbl.Innerdiameter.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\=
+BodyTubecfg.lbl.Innerdiameter.fr.text.changed=20110317061957
+BodyTubecfg.lbl.Innerdiameter.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\=
+BodyTubecfg.lbl.Outerdiameter..text.changed=20110317061957
+BodyTubecfg.lbl.Outerdiameter..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\=
+BodyTubecfg.lbl.Outerdiameter.es.text.changed=20110317062041
+BodyTubecfg.lbl.Outerdiameter.es.text.md5=TOTlYJHsn8+4s+inelCH/w\=\=
+BodyTubecfg.lbl.Outerdiameter.fr.text.changed=20110317061957
+BodyTubecfg.lbl.Outerdiameter.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\=
+BodyTubecfg.lbl.Wallthickness..text.changed=20110317061957
+BodyTubecfg.lbl.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\=
+BodyTubecfg.lbl.Wallthickness.es.text.changed=20110317062041
+BodyTubecfg.lbl.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\=
+BodyTubecfg.lbl.Wallthickness.fr.text.changed=20110317061957
+BodyTubecfg.lbl.Wallthickness.fr.text.md5=yvurrozSZlNuqNTccufoSw\=\=
+BodyTubecfg.tab.General..text.changed=20110317061957
+BodyTubecfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+BodyTubecfg.tab.General.es.text.changed=20110317062041
+BodyTubecfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+BodyTubecfg.tab.General.fr.text.changed=20110317061957
+BodyTubecfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+BodyTubecfg.tab.Generalproperties..text.changed=20110317061957
+BodyTubecfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+BodyTubecfg.tab.Generalproperties.es.text.changed=20110317062041
+BodyTubecfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+BodyTubecfg.tab.Generalproperties.fr.text.changed=20110317061957
+BodyTubecfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+BodyTubecfg.tab.Motor..text.changed=20110317061957
+BodyTubecfg.tab.Motor..text.md5=szU4F59WYahsvjJ6F5PhmQ\=\=
+BodyTubecfg.tab.Motor.es.text.changed=20110317062041
+BodyTubecfg.tab.Motor.es.text.md5=szU4F59WYahsvjJ6F5PhmQ\=\=
+BodyTubecfg.tab.Motor.fr.text.changed=20110317061957
+BodyTubecfg.tab.Motor.fr.text.md5=6tmnS1jbv8qzuuKxMMKUVg\=\=
+BodyTubecfg.tab.Motormountconf..text.changed=20110317061957
+BodyTubecfg.tab.Motormountconf..text.md5=L/dvnGSxOORZkwDDBqSWfQ\=\=
+BodyTubecfg.tab.Motormountconf.es.text.changed=20110317062041
+BodyTubecfg.tab.Motormountconf.es.text.md5=C7fYL8sg0eTIrtoaGQZXMg\=\=
+BodyTubecfg.tab.Motormountconf.fr.text.changed=20110317061957
+BodyTubecfg.tab.Motormountconf.fr.text.md5=u8d1128oyYwjJQzM8Ecs1w\=\=
+Bulkhead.Bulkhead..text.changed=20110317061957
+Bulkhead.Bulkhead..text.md5=RUE9DoWgodoMLY1BHiEsiQ\=\=
+Bulkhead.Bulkhead.es.text.changed=20110317062041
+Bulkhead.Bulkhead.es.text.md5=RUE9DoWgodoMLY1BHiEsiQ\=\=
+Bulkhead.Bulkhead.fr.text.changed=20110317061957
+Bulkhead.Bulkhead.fr.text.md5=GjYF1XuUam6E2N+JDKsnLQ\=\=
+BulkheadCfg.tab.General..text.changed=20110317061957
+BulkheadCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+BulkheadCfg.tab.General.es.text.changed=20110317062041
+BulkheadCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+BulkheadCfg.tab.General.fr.text.changed=20110317061957
+BulkheadCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+BulkheadCfg.tab.Generalproperties..text.changed=20110317061957
+BulkheadCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+BulkheadCfg.tab.Generalproperties.es.text.changed=20110317062041
+BulkheadCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+BulkheadCfg.tab.Generalproperties.fr.text.changed=20110317061957
+BulkheadCfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+BulkheadCfg.tab.Radius..text.changed=20110317061957
+BulkheadCfg.tab.Radius..text.md5=MmaEqMsJfbCGvmgQItmuRg\=\=
+BulkheadCfg.tab.Radius.es.text.changed=20110317062041
+BulkheadCfg.tab.Radius.es.text.md5=whCntseHfqEyaZgGoj6h3w\=\=
+BulkheadCfg.tab.Radius.fr.text.changed=20110317061957
+BulkheadCfg.tab.Radius.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\=
+BulkheadCfg.tab.Thickness..text.changed=20110317061957
+BulkheadCfg.tab.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\=
+BulkheadCfg.tab.Thickness.es.text.changed=20110317062041
+BulkheadCfg.tab.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\=
+BulkheadCfg.tab.Thickness.fr.text.changed=20110317061957
+BulkheadCfg.tab.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\=
+CenteringRingCfg.tab.General..text.changed=20110317061957
+CenteringRingCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+CenteringRingCfg.tab.General.es.text.changed=20110317062041
+CenteringRingCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+CenteringRingCfg.tab.General.fr.text.changed=20110317061957
+CenteringRingCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+CenteringRingCfg.tab.Generalproperties..text.changed=20110317061957
+CenteringRingCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+CenteringRingCfg.tab.Generalproperties.es.text.changed=20110317062041
+CenteringRingCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+CenteringRingCfg.tab.Generalproperties.fr.text.changed=20110317061957
+CenteringRingCfg.tab.Generalproperties.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\=
+CenteringRingCfg.tab.Innerdiam..text.changed=20110317061957
+CenteringRingCfg.tab.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\=
+CenteringRingCfg.tab.Innerdiam.es.text.changed=20110317062041
+CenteringRingCfg.tab.Innerdiam.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\=
+CenteringRingCfg.tab.Innerdiam.fr.text.changed=20110317061957
+CenteringRingCfg.tab.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\=
+CenteringRingCfg.tab.Outerdiam..text.changed=20110317061957
+CenteringRingCfg.tab.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\=
+CenteringRingCfg.tab.Outerdiam.es.text.changed=20110317062041
+CenteringRingCfg.tab.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\=
+CenteringRingCfg.tab.Outerdiam.fr.text.changed=20110317061957
+CenteringRingCfg.tab.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\=
+CenteringRingCfg.tab.Thickness..text.changed=20110317061957
+CenteringRingCfg.tab.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\=
+CenteringRingCfg.tab.Thickness.es.text.changed=20110317062041
+CenteringRingCfg.tab.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\=
+CenteringRingCfg.tab.Thickness.fr.text.changed=20110317061957
+CenteringRingCfg.tab.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\=
+ComponentCfgDlg.Modify..text.changed=20110317061957
+ComponentCfgDlg.Modify..text.md5=fwkLurHMf5wIv05U2TLTwA\=\=
+ComponentCfgDlg.Modify.es.text.changed=20110317062041
+ComponentCfgDlg.Modify.es.text.md5=gwfyj8tpdT6T2tkFcz8AmQ\=\=
+ComponentCfgDlg.Modify.fr.text.changed=20110317061957
+ComponentCfgDlg.Modify.fr.text.md5=iYwHnS5ipLGXHfutnYYIOA\=\=
+ComponentCfgDlg.configuration..text.changed=20110317061957
+ComponentCfgDlg.configuration..text.md5=zNEGY0PJWHe3W3nUfDa+vg\=\=
+ComponentCfgDlg.configuration.es.text.changed=20110317062041
+ComponentCfgDlg.configuration.es.text.md5=qUBzA25VKLH7Ge8tOVVcMQ\=\=
+ComponentCfgDlg.configuration.fr.text.changed=20110317061957
+ComponentCfgDlg.configuration.fr.text.md5=zNEGY0PJWHe3W3nUfDa+vg\=\=
+ComponentIcons.Bodytube..text.changed=20110317061957
+ComponentIcons.Bodytube..text.md5=3T0MaANX4mUAKbI403vAUA\=\=
+ComponentIcons.Bodytube.es.text.changed=20110317062041
+ComponentIcons.Bodytube.es.text.md5=3T0MaANX4mUAKbI403vAUA\=\=
+ComponentIcons.Bodytube.fr.text.changed=20110317061957
+ComponentIcons.Bodytube.fr.text.md5=1wGI+eR8vfLHPoJmECW80Q\=\=
+ComponentIcons.Bulkhead..text.changed=20110317061957
+ComponentIcons.Bulkhead..text.md5=gVXZfSB8JUQc3btvHlsX+Q\=\=
+ComponentIcons.Bulkhead.es.text.changed=20110317062041
+ComponentIcons.Bulkhead.es.text.md5=gVXZfSB8JUQc3btvHlsX+Q\=\=
+ComponentIcons.Bulkhead.fr.text.changed=20110317061957
+ComponentIcons.Bulkhead.fr.text.md5=GjYF1XuUam6E2N+JDKsnLQ\=\=
+ComponentIcons.Centeringring..text.changed=20110317061957
+ComponentIcons.Centeringring..text.md5=FIUzZGDlVnAYJOtqJnhN8Q\=\=
+ComponentIcons.Centeringring.es.text.changed=20110317062041
+ComponentIcons.Centeringring.es.text.md5=FIUzZGDlVnAYJOtqJnhN8Q\=\=
+ComponentIcons.Centeringring.fr.text.changed=20110317061957
+ComponentIcons.Centeringring.fr.text.md5=kv1K0macJymurmnEhhezJA\=\=
+ComponentIcons.Ellipticalfinset..text.changed=20110317061957
+ComponentIcons.Ellipticalfinset..text.md5=PotcfLdpVd7vvJl7yZLb4Q\=\=
+ComponentIcons.Ellipticalfinset.es.text.changed=20110317062041
+ComponentIcons.Ellipticalfinset.es.text.md5=PotcfLdpVd7vvJl7yZLb4Q\=\=
+ComponentIcons.Ellipticalfinset.fr.text.changed=20110317061957
+ComponentIcons.Ellipticalfinset.fr.text.md5=tLsmjEbG4TU/nKX8POXpyw\=\=
+ComponentIcons.Engineblock..text.changed=20110317061957
+ComponentIcons.Engineblock..text.md5=cG29YSkdZRzknofeffL+MA\=\=
+ComponentIcons.Engineblock.es.text.changed=20110317062041
+ComponentIcons.Engineblock.es.text.md5=cG29YSkdZRzknofeffL+MA\=\=
+ComponentIcons.Engineblock.fr.text.changed=20110317061957
+ComponentIcons.Engineblock.fr.text.md5=vt8ECPb/7bkPyj6SjuhS+Q\=\=
+ComponentIcons.Freeformfinset..text.changed=20110317061957
+ComponentIcons.Freeformfinset..text.md5=XdUaFd+fxdobxWZKMbxlSA\=\=
+ComponentIcons.Freeformfinset.es.text.changed=20110317062041
+ComponentIcons.Freeformfinset.es.text.md5=XdUaFd+fxdobxWZKMbxlSA\=\=
+ComponentIcons.Freeformfinset.fr.text.changed=20110317061957
+ComponentIcons.Freeformfinset.fr.text.md5=PXvo8b1Nr1mKLdeJAaomgw\=\=
+ComponentIcons.Innertube..text.changed=20110317061957
+ComponentIcons.Innertube..text.md5=cLH+jIw9kSgufhebGqahkA\=\=
+ComponentIcons.Innertube.es.text.changed=20110317062041
+ComponentIcons.Innertube.es.text.md5=cLH+jIw9kSgufhebGqahkA\=\=
+ComponentIcons.Innertube.fr.text.changed=20110317061957
+ComponentIcons.Innertube.fr.text.md5=Qi8ZJArDrWFHkJPWtc56Nw\=\=
+ComponentIcons.Launchlug..text.changed=20110317061957
+ComponentIcons.Launchlug..text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\=
+ComponentIcons.Launchlug.es.text.changed=20110317062041
+ComponentIcons.Launchlug.es.text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\=
+ComponentIcons.Launchlug.fr.text.changed=20110317061957
+ComponentIcons.Launchlug.fr.text.md5=DgeT4LMq8b7kJjfvIjiklw\=\=
+ComponentIcons.Masscomponent..text.changed=20110317061957
+ComponentIcons.Masscomponent..text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\=
+ComponentIcons.Masscomponent.es.text.changed=20110317062041
+ComponentIcons.Masscomponent.es.text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\=
+ComponentIcons.Masscomponent.fr.text.changed=20110317061957
+ComponentIcons.Masscomponent.fr.text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\=
+ComponentIcons.Nosecone..text.changed=20110317061957
+ComponentIcons.Nosecone..text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\=
+ComponentIcons.Nosecone.es.text.changed=20110317062041
+ComponentIcons.Nosecone.es.text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\=
+ComponentIcons.Nosecone.fr.text.changed=20110317061957
+ComponentIcons.Nosecone.fr.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\=
+ComponentIcons.Parachute..text.changed=20110317061957
+ComponentIcons.Parachute..text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+ComponentIcons.Parachute.es.text.changed=20110317062041
+ComponentIcons.Parachute.es.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+ComponentIcons.Parachute.fr.text.changed=20110317061957
+ComponentIcons.Parachute.fr.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+ComponentIcons.Shockcord..text.changed=20110317061957
+ComponentIcons.Shockcord..text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\=
+ComponentIcons.Shockcord.es.text.changed=20110317062041
+ComponentIcons.Shockcord.es.text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\=
+ComponentIcons.Shockcord.fr.text.changed=20110317061957
+ComponentIcons.Shockcord.fr.text.md5=RnR22FP/b23+JTzmuMDTbw\=\=
+ComponentIcons.Streamer..text.changed=20110317061957
+ComponentIcons.Streamer..text.md5=nLxM4h+Bh1qHHzkakoNUTg\=\=
+ComponentIcons.Streamer.es.text.changed=20110317062041
+ComponentIcons.Streamer.es.text.md5=nLxM4h+Bh1qHHzkakoNUTg\=\=
+ComponentIcons.Streamer.fr.text.changed=20110317061957
+ComponentIcons.Streamer.fr.text.md5=NrzsnfrMWHLWWOBTpw/R0w\=\=
+ComponentIcons.Transition..text.changed=20110317061957
+ComponentIcons.Transition..text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+ComponentIcons.Transition.es.text.changed=20110317062041
+ComponentIcons.Transition.es.text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+ComponentIcons.Transition.fr.text.changed=20110317061957
+ComponentIcons.Transition.fr.text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+ComponentIcons.Trapezoidalfinset..text.changed=20110317061957
+ComponentIcons.Trapezoidalfinset..text.md5=QQFIiPvNQYWkf+dE26GjrA\=\=
+ComponentIcons.Trapezoidalfinset.es.text.changed=20110317062041
+ComponentIcons.Trapezoidalfinset.es.text.md5=QQFIiPvNQYWkf+dE26GjrA\=\=
+ComponentIcons.Trapezoidalfinset.fr.text.changed=20110317061957
+ComponentIcons.Trapezoidalfinset.fr.text.md5=u5aSLnqSBE6rXmR3Z8VQKw\=\=
+ComponentIcons.Tubecoupler..text.changed=20110317061957
+ComponentIcons.Tubecoupler..text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\=
+ComponentIcons.Tubecoupler.es.text.changed=20110317062041
+ComponentIcons.Tubecoupler.es.text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\=
+ComponentIcons.Tubecoupler.fr.text.changed=20110317061957
+ComponentIcons.Tubecoupler.fr.text.md5=frXexxzhWAX7rrfGqQSHJw\=\=
+ComponentIcons.disabled..text.changed=20110317061957
+ComponentIcons.disabled..text.md5=ezLjPkmtaMBhmeDeDO67xA\=\=
+ComponentIcons.disabled.es.text.changed=20110317062041
+ComponentIcons.disabled.es.text.md5=ezLjPkmtaMBhmeDeDO67xA\=\=
+ComponentIcons.disabled.fr.text.changed=20110317061957
+ComponentIcons.disabled.fr.text.md5=0Ojl3qxDOeqe6WDYOPIPSQ\=\=
+Databases.materials.Acrylic..text.changed=20110317061957
+Databases.materials.Acrylic..text.md5=kggJrW81IQYUGKHuL4g3uA\=\=
+Databases.materials.Acrylic.es.text.changed=20110317062041
+Databases.materials.Acrylic.es.text.md5=kggJrW81IQYUGKHuL4g3uA\=\=
+Databases.materials.Acrylic.fr.text.changed=20110317061957
+Databases.materials.Acrylic.fr.text.md5=FpEd7aQ4nYeWrOh3mFBilg\=\=
+Databases.materials.Balsa..text.changed=20110317061957
+Databases.materials.Balsa..text.md5=UJzl3j03u+Z5C3yIW/FeVQ\=\=
+Databases.materials.Balsa.es.text.changed=20110317062041
+Databases.materials.Balsa.es.text.md5=UJzl3j03u+Z5C3yIW/FeVQ\=\=
+Databases.materials.Balsa.fr.text.changed=20110317061957
+Databases.materials.Balsa.fr.text.md5=UJzl3j03u+Z5C3yIW/FeVQ\=\=
+Databases.materials.Birch..text.changed=20110317061957
+Databases.materials.Birch..text.md5=bV5uNQcBPxDHykJpL6jgxg\=\=
+Databases.materials.Birch.es.text.changed=20110317062041
+Databases.materials.Birch.es.text.md5=bV5uNQcBPxDHykJpL6jgxg\=\=
+Databases.materials.Birch.fr.text.changed=20110317061957
+Databases.materials.Birch.fr.text.md5=jzmCOBhsUDEOaAVA8ktQwg\=\=
+Databases.materials.Braidednylon2mm..text.changed=20110317061957
+Databases.materials.Braidednylon2mm..text.md5=X8kxKPHAWLxQn7TFIdniSA\=\=
+Databases.materials.Braidednylon2mm.es.text.changed=20110317062041
+Databases.materials.Braidednylon2mm.es.text.md5=X8kxKPHAWLxQn7TFIdniSA\=\=
+Databases.materials.Braidednylon2mm.fr.text.changed=20110317061957
+Databases.materials.Braidednylon2mm.fr.text.md5=duKtHNcUprGK/qxZQ9ftTA\=\=
+Databases.materials.Braidednylon3mm..text.changed=20110317061957
+Databases.materials.Braidednylon3mm..text.md5=dGOfSpr8hjNsKL6VcYci4A\=\=
+Databases.materials.Braidednylon3mm.es.text.changed=20110317062041
+Databases.materials.Braidednylon3mm.es.text.md5=dGOfSpr8hjNsKL6VcYci4A\=\=
+Databases.materials.Braidednylon3mm.fr.text.changed=20110317061957
+Databases.materials.Braidednylon3mm.fr.text.md5=hizlpu32qBWEg6rp3SsvEw\=\=
+Databases.materials.Carbonfiber..text.changed=20110317061957
+Databases.materials.Carbonfiber..text.md5=Zm807bkzR4bHxq0+6G37UA\=\=
+Databases.materials.Carbonfiber.es.text.changed=20110317062041
+Databases.materials.Carbonfiber.es.text.md5=Zm807bkzR4bHxq0+6G37UA\=\=
+Databases.materials.Carbonfiber.fr.text.changed=20110317061957
+Databases.materials.Carbonfiber.fr.text.md5=Hfz5Yz5VIS74GeHy+8iqlg\=\=
+Databases.materials.Cardboard..text.changed=20110317061957
+Databases.materials.Cardboard..text.md5=3kZXUg90qd6BWJm30CZlTg\=\=
+Databases.materials.Cardboard.es.text.changed=20110317062041
+Databases.materials.Cardboard.es.text.md5=3kZXUg90qd6BWJm30CZlTg\=\=
+Databases.materials.Cardboard.fr.text.changed=20110317061957
+Databases.materials.Cardboard.fr.text.md5=9jNivJ+jgEEeZuJ3nUaCUg\=\=
+Databases.materials.Cellophane..text.changed=20110317061957
+Databases.materials.Cellophane..text.md5=q4ImnS6vUjJ8WJqgNReQeQ\=\=
+Databases.materials.Cellophane.es.text.changed=20110317062041
+Databases.materials.Cellophane.es.text.md5=q4ImnS6vUjJ8WJqgNReQeQ\=\=
+Databases.materials.Cellophane.fr.text.changed=20110317061957
+Databases.materials.Cellophane.fr.text.md5=q4ImnS6vUjJ8WJqgNReQeQ\=\=
+Databases.materials.Cork..text.changed=20110317061957
+Databases.materials.Cork..text.md5=ACyIe4Np5Z5vWKXQao0IFw\=\=
+Databases.materials.Cork.es.text.changed=20110317062041
+Databases.materials.Cork.es.text.md5=ACyIe4Np5Z5vWKXQao0IFw\=\=
+Databases.materials.Cork.fr.text.changed=20110317061957
+Databases.materials.Cork.fr.text.md5=94ng7mtXWFnhtTatMPkn+g\=\=
+Databases.materials.Creape..text.changed=20110317061957
+Databases.materials.Creape..text.md5=5UTxlLuwxzFH0eBjjDcrnQ\=\=
+Databases.materials.Creape.es.text.changed=20110317062041
+Databases.materials.Creape.es.text.md5=5UTxlLuwxzFH0eBjjDcrnQ\=\=
+Databases.materials.Creapepaper.fr.text.changed=20110317061957
+Databases.materials.Creapepaper.fr.text.md5=IdwrPqq4SbZbeMVcJyVVIQ\=\=
+Databases.materials.DepronXPS..text.changed=20110317061957
+Databases.materials.DepronXPS..text.md5=7BC9XVLHQMgXLmdJLGH8lw\=\=
+Databases.materials.DepronXPS.es.text.changed=20110317062041
+Databases.materials.DepronXPS.es.text.md5=7BC9XVLHQMgXLmdJLGH8lw\=\=
+Databases.materials.DepronXPS.fr.text.changed=20110317061957
+Databases.materials.DepronXPS.fr.text.md5=7BC9XVLHQMgXLmdJLGH8lw\=\=
+Databases.materials.Elasticcordflat12mm..text.changed=20110317061957
+Databases.materials.Elasticcordflat12mm..text.md5=UqIS8DUoAkR2shGfZkh8Ag\=\=
+Databases.materials.Elasticcordflat12mm.es.text.changed=20110317062041
+Databases.materials.Elasticcordflat12mm.es.text.md5=UqIS8DUoAkR2shGfZkh8Ag\=\=
+Databases.materials.Elasticcordflat12mm.fr.text.changed=20110317061957
+Databases.materials.Elasticcordflat12mm.fr.text.md5=d9Je5nwYMrhRn+BIXLdTcg\=\=
+Databases.materials.Elasticcordflat19mm..text.changed=20110317061957
+Databases.materials.Elasticcordflat19mm..text.md5=0pw56UkF1KZT79twwEBWAg\=\=
+Databases.materials.Elasticcordflat19mm.es.text.changed=20110317062041
+Databases.materials.Elasticcordflat19mm.es.text.md5=0pw56UkF1KZT79twwEBWAg\=\=
+Databases.materials.Elasticcordflat19mm.fr.text.changed=20110317061957
+Databases.materials.Elasticcordflat19mm.fr.text.md5=QaX2TbSiqebakVexWH9e1g\=\=
+Databases.materials.Elasticcordflat25mm..text.changed=20110317061957
+Databases.materials.Elasticcordflat25mm..text.md5=Klj/oN3iqILCdExX7yTeew\=\=
+Databases.materials.Elasticcordflat25mm.es.text.changed=20110317062041
+Databases.materials.Elasticcordflat25mm.es.text.md5=Klj/oN3iqILCdExX7yTeew\=\=
+Databases.materials.Elasticcordflat25mm.fr.text.changed=20110317061957
+Databases.materials.Elasticcordflat25mm.fr.text.md5=Y1NOn5LUOBrrLSCOu2Uf5Q\=\=
+Databases.materials.Elasticcordflat6mm..text.changed=20110317061957
+Databases.materials.Elasticcordflat6mm..text.md5=2rbpwGIZr9FjAOy2T4zw1g\=\=
+Databases.materials.Elasticcordflat6mm.es.text.changed=20110317062041
+Databases.materials.Elasticcordflat6mm.es.text.md5=2rbpwGIZr9FjAOy2T4zw1g\=\=
+Databases.materials.Elasticcordflat6mm.fr.text.changed=20110317061957
+Databases.materials.Elasticcordflat6mm.fr.text.md5=xhQL8O6ojUrnhFuBK5bHLw\=\=
+Databases.materials.Elasticcordround2mm..text.changed=20110317061957
+Databases.materials.Elasticcordround2mm..text.md5=AHgsLuu9fhDr0t9a8I2MUA\=\=
+Databases.materials.Elasticcordround2mm.es.text.changed=20110317062041
+Databases.materials.Elasticcordround2mm.es.text.md5=AHgsLuu9fhDr0t9a8I2MUA\=\=
+Databases.materials.Elasticcordround2mm.fr.text.changed=20110317061957
+Databases.materials.Elasticcordround2mm.fr.text.md5=WYX4349UzKCrUDNmlrcpIg\=\=
+Databases.materials.Fiberglass..text.changed=20110317061957
+Databases.materials.Fiberglass..text.md5=KEH509sjgcn6oKvbOVlatQ\=\=
+Databases.materials.Fiberglass.es.text.changed=20110317062041
+Databases.materials.Fiberglass.es.text.md5=KEH509sjgcn6oKvbOVlatQ\=\=
+Databases.materials.Fiberglass.fr.text.changed=20110317061957
+Databases.materials.Fiberglass.fr.text.md5=+audrX8/aNFB6Phwg7vT3Q\=\=
+Databases.materials.Kraftphenolic..text.changed=20110317061957
+Databases.materials.Kraftphenolic..text.md5=X+G/LbnPB7LdQtLgglyhpw\=\=
+Databases.materials.Kraftphenolic.es.text.changed=20110317062041
+Databases.materials.Kraftphenolic.es.text.md5=X+G/LbnPB7LdQtLgglyhpw\=\=
+Databases.materials.Kraftphenolic.fr.text.changed=20110317061957
+Databases.materials.Kraftphenolic.fr.text.md5=A3s6vTus0rnb3Gaoxtnc5A\=\=
+Databases.materials.Maple..text.changed=20110317061957
+Databases.materials.Maple..text.md5=QARQfjIOZ4+AoKGNAKB/CQ\=\=
+Databases.materials.Maple.es.text.changed=20110317062041
+Databases.materials.Maple.es.text.md5=QARQfjIOZ4+AoKGNAKB/CQ\=\=
+Databases.materials.Maple.fr.text.changed=20110317061957
+Databases.materials.Maple.fr.text.md5=hncR3PjxLIxNVfE99V9mgQ\=\=
+Databases.materials.Mylar..text.changed=20110317061957
+Databases.materials.Mylar..text.md5=z1gglxy9OwOG43h2swoCmQ\=\=
+Databases.materials.Mylar.es.text.changed=20110317062041
+Databases.materials.Mylar.es.text.md5=z1gglxy9OwOG43h2swoCmQ\=\=
+Databases.materials.Mylar.fr.text.changed=20110317061957
+Databases.materials.Mylar.fr.text.md5=z1gglxy9OwOG43h2swoCmQ\=\=
+Databases.materials.PVC..text.changed=20110317061957
+Databases.materials.PVC..text.md5=SdAynCBfEWhprkB+8iFyIg\=\=
+Databases.materials.PVC.es.text.changed=20110317062041
+Databases.materials.PVC.es.text.md5=SdAynCBfEWhprkB+8iFyIg\=\=
+Databases.materials.PVC.fr.text.changed=20110317061957
+Databases.materials.PVC.fr.text.md5=SdAynCBfEWhprkB+8iFyIg\=\=
+Databases.materials.Paperoffice..text.changed=20110317061957
+Databases.materials.Paperoffice..text.md5=YJlRrejLIJQYng+v1v8Zsw\=\=
+Databases.materials.Paperoffice.es.text.changed=20110317062041
+Databases.materials.Paperoffice.es.text.md5=YJlRrejLIJQYng+v1v8Zsw\=\=
+Databases.materials.Paperoffice.fr.text.changed=20110317061957
+Databases.materials.Paperoffice.fr.text.md5=Bxj52clNw5VG+8pAod3ucQ\=\=
+Databases.materials.Paperoffice1.fr.text.changed=20110317061957
+Databases.materials.Paperoffice1.fr.text.md5=Bxj52clNw5VG+8pAod3ucQ\=\=
+Databases.materials.Pine..text.changed=20110317061957
+Databases.materials.Pine..text.md5=LjKDbWBk35q3ljJmwWpvNA\=\=
+Databases.materials.Pine.es.text.changed=20110317062041
+Databases.materials.Pine.es.text.md5=LjKDbWBk35q3ljJmwWpvNA\=\=
+Databases.materials.Pine.fr.text.changed=20110317061957
+Databases.materials.Pine.fr.text.md5=544UxfGPeTvc1HJnZvD6RA\=\=
+Databases.materials.Plywoodbirch..text.changed=20110317061957
+Databases.materials.Plywoodbirch..text.md5=KSwPyizdAb5VIxCRSaT+yA\=\=
+Databases.materials.Plywoodbirch.es.text.changed=20110317062041
+Databases.materials.Plywoodbirch.es.text.md5=KSwPyizdAb5VIxCRSaT+yA\=\=
+Databases.materials.Plywoodbirch.fr.text.changed=20110317061957
+Databases.materials.Plywoodbirch.fr.text.md5=sW0pYmiRses3nhrhFRrhew\=\=
+Databases.materials.PolycarbonateLexan..text.changed=20110317061957
+Databases.materials.PolycarbonateLexan..text.md5=6DXCRG3nMKVKxJpp0GPFNw\=\=
+Databases.materials.PolycarbonateLexan.es.text.changed=20110317062041
+Databases.materials.PolycarbonateLexan.es.text.md5=6DXCRG3nMKVKxJpp0GPFNw\=\=
+Databases.materials.PolycarbonateLexan.fr.text.changed=20110317061957
+Databases.materials.PolycarbonateLexan.fr.text.md5=6DXCRG3nMKVKxJpp0GPFNw\=\=
+Databases.materials.Polyethyleneheavy..text.changed=20110317061957
+Databases.materials.Polyethyleneheavy..text.md5=4qti9aBJUU3hbBAEuUviYA\=\=
+Databases.materials.Polyethyleneheavy.es.text.changed=20110317062041
+Databases.materials.Polyethyleneheavy.es.text.md5=4qti9aBJUU3hbBAEuUviYA\=\=
+Databases.materials.Polyethyleneheavy.fr.text.changed=20110317061957
+Databases.materials.Polyethyleneheavy.fr.text.md5=ACjbo8AEpeaCtdWtc86diA\=\=
+Databases.materials.Polyethylenethin..text.changed=20110317061957
+Databases.materials.Polyethylenethin..text.md5=rQiJkDCbn0A/ap+4gWEEPQ\=\=
+Databases.materials.Polyethylenethin.es.text.changed=20110317062041
+Databases.materials.Polyethylenethin.es.text.md5=rQiJkDCbn0A/ap+4gWEEPQ\=\=
+Databases.materials.Polyethylenethin.fr.text.changed=20110317061957
+Databases.materials.Polyethylenethin.fr.text.md5=MDihplm9z5W9ZpXOfCrSwQ\=\=
+Databases.materials.Polystyrene..text.changed=20110317061957
+Databases.materials.Polystyrene..text.md5=n3B+DuSW5pdMuTgM2L1wCw\=\=
+Databases.materials.Polystyrene.es.text.changed=20110317062041
+Databases.materials.Polystyrene.es.text.md5=n3B+DuSW5pdMuTgM2L1wCw\=\=
+Databases.materials.Polystyrene.fr.text.changed=20110317061957
+Databases.materials.Polystyrene.fr.text.md5=5LwYfxEQckO3N4wk3PfprQ\=\=
+Databases.materials.Quantumtubing..text.changed=20110317061957
+Databases.materials.Quantumtubing..text.md5=u1g75oGTDq4O4EXHEwYTTA\=\=
+Databases.materials.Quantumtubing.es.text.changed=20110317062041
+Databases.materials.Quantumtubing.es.text.md5=u1g75oGTDq4O4EXHEwYTTA\=\=
+Databases.materials.Quantumtubing.fr.text.changed=20110317061957
+Databases.materials.Quantumtubing.fr.text.md5=u1g75oGTDq4O4EXHEwYTTA\=\=
+Databases.materials.Ripstopnylon..text.changed=20110317061957
+Databases.materials.Ripstopnylon..text.md5=nS0hf3fdz6IZj3ka265IfA\=\=
+Databases.materials.Ripstopnylon.es.text.changed=20110317062041
+Databases.materials.Ripstopnylon.es.text.md5=nS0hf3fdz6IZj3ka265IfA\=\=
+Databases.materials.Ripstopnylon.fr.text.changed=20110317061957
+Databases.materials.Ripstopnylon.fr.text.md5=nS0hf3fdz6IZj3ka265IfA\=\=
+Databases.materials.Silk..text.changed=20110317061957
+Databases.materials.Silk..text.md5=oqOgNH8PABpEc91U3KJGLg\=\=
+Databases.materials.Silk.es.text.changed=20110317062041
+Databases.materials.Silk.es.text.md5=oqOgNH8PABpEc91U3KJGLg\=\=
+Databases.materials.Silk.fr.text.changed=20110317061957
+Databases.materials.Silk.fr.text.md5=WI+tBLUHc3AGyKpZ2LFysw\=\=
+Databases.materials.Spruce..text.changed=20110317061957
+Databases.materials.Spruce..text.md5=DVB5sIiuu96CDfoeN5DMiQ\=\=
+Databases.materials.Spruce.es.text.changed=20110317062041
+Databases.materials.Spruce.es.text.md5=DVB5sIiuu96CDfoeN5DMiQ\=\=
+Databases.materials.Spruce.fr.text.changed=20110317061957
+Databases.materials.Spruce.fr.text.md5=lcn3uWDykOclClALxjuvKw\=\=
+Databases.materials.StyrofoamBluefoamXPS..text.changed=20110317061957
+Databases.materials.StyrofoamBluefoamXPS..text.md5=SCLrpbQWnjLGUQwtkiVmKA\=\=
+Databases.materials.StyrofoamBluefoamXPS.es.text.changed=20110317062041
+Databases.materials.StyrofoamBluefoamXPS.es.text.md5=SCLrpbQWnjLGUQwtkiVmKA\=\=
+Databases.materials.StyrofoamBluefoamXPS.fr.text.changed=20110317061957
+Databases.materials.StyrofoamBluefoamXPS.fr.text.md5=rpX9noGZUXNCLo8jIBSw2w\=\=
+Databases.materials.StyrofoamgenericEPS..text.changed=20110317061957
+Databases.materials.StyrofoamgenericEPS..text.md5=wU02F0/dbBr7Dr32Ut29eQ\=\=
+Databases.materials.StyrofoamgenericEPS.es.text.changed=20110317062041
+Databases.materials.StyrofoamgenericEPS.es.text.md5=wU02F0/dbBr7Dr32Ut29eQ\=\=
+Databases.materials.StyrofoamgenericEPS.fr.text.changed=20110317061957
+Databases.materials.StyrofoamgenericEPS.fr.text.md5=wGOdg2YgRH+ZyjOanad7DA\=\=
+Databases.materials.Threadheavy-duty..text.changed=20110317061957
+Databases.materials.Threadheavy-duty..text.md5=YsxAvXk9dBvC8BJWBCiFaA\=\=
+Databases.materials.Threadheavy-duty.es.text.changed=20110317062041
+Databases.materials.Threadheavy-duty.es.text.md5=YsxAvXk9dBvC8BJWBCiFaA\=\=
+Databases.materials.Threadheavy-duty.fr.text.changed=20110317061957
+Databases.materials.Threadheavy-duty.fr.text.md5=vtl88VGmw+cnTfl0Fb9uIg\=\=
+Databases.materials.Tubularnylon11mm..text.changed=20110317061957
+Databases.materials.Tubularnylon11mm..text.md5=tZXRD66LZcmLq35Y30jxuw\=\=
+Databases.materials.Tubularnylon11mm.es.text.changed=20110317062041
+Databases.materials.Tubularnylon11mm.es.text.md5=tZXRD66LZcmLq35Y30jxuw\=\=
+Databases.materials.Tubularnylon11mm.fr.text.changed=20110317061957
+Databases.materials.Tubularnylon11mm.fr.text.md5=+82qNlNJWa7HalJnGiMroA\=\=
+Databases.materials.Tubularnylon14mm..text.changed=20110317061957
+Databases.materials.Tubularnylon14mm..text.md5=Uj/14b9GDvrlqGVHD9ff+Q\=\=
+Databases.materials.Tubularnylon14mm.es.text.changed=20110317062041
+Databases.materials.Tubularnylon14mm.es.text.md5=Uj/14b9GDvrlqGVHD9ff+Q\=\=
+Databases.materials.Tubularnylon14mm.fr.text.changed=20110317061957
+Databases.materials.Tubularnylon14mm.fr.text.md5=k0YmeMIOgSxyhzrqvPJ1Hw\=\=
+Databases.materials.Tubularnylon25mm..text.changed=20110317061957
+Databases.materials.Tubularnylon25mm..text.md5=5QKPLVQlsMaIqlDBcxLLDg\=\=
+Databases.materials.Tubularnylon25mm.es.text.changed=20110317062041
+Databases.materials.Tubularnylon25mm.es.text.md5=5QKPLVQlsMaIqlDBcxLLDg\=\=
+Databases.materials.Tubularnylon25mm.fr.text.changed=20110317061957
+Databases.materials.Tubularnylon25mm.fr.text.md5=UIt1M3ItrU+tPZJnvF7/QA\=\=
+EllipticalFinSetCfg.Fincant..text.changed=20110317061957
+EllipticalFinSetCfg.Fincant..text.md5=gJTol4zWIT3NlA2Qj+mRBw\=\=
+EllipticalFinSetCfg.Fincant.es.text.changed=20110317062041
+EllipticalFinSetCfg.Fincant.es.text.md5=cxWpv/IhFV3FTjiylJ0H7Q\=\=
+EllipticalFinSetCfg.Fincant.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Fincant.fr.text.md5=gbEuh/Hyt0eAkJbVyIpt1A\=\=
+EllipticalFinSetCfg.FincrossSection..text.changed=20110317061957
+EllipticalFinSetCfg.FincrossSection..text.md5=d139yIi0Bcw4ePuCYxjEMQ\=\=
+EllipticalFinSetCfg.FincrossSection.es.text.changed=20110317062041
+EllipticalFinSetCfg.FincrossSection.es.text.md5=DY//U8pOwmQ7H2fBwBVvKA\=\=
+EllipticalFinSetCfg.FincrossSection.fr.text.changed=20110317061957
+EllipticalFinSetCfg.FincrossSection.fr.text.md5=BzmEcGR9qVjmHb5eL2X9hA\=\=
+EllipticalFinSetCfg.General..text.changed=20110317061957
+EllipticalFinSetCfg.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+EllipticalFinSetCfg.General.es.text.changed=20110317062041
+EllipticalFinSetCfg.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+EllipticalFinSetCfg.General.fr.text.changed=20110317061957
+EllipticalFinSetCfg.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+EllipticalFinSetCfg.Generalproperties..text.changed=20110317061957
+EllipticalFinSetCfg.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+EllipticalFinSetCfg.Generalproperties.es.text.changed=20110317062041
+EllipticalFinSetCfg.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+EllipticalFinSetCfg.Generalproperties.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Generalproperties.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\=
+EllipticalFinSetCfg.Height..text.changed=20110317061957
+EllipticalFinSetCfg.Height..text.md5=6TPcJPskXYY6Q7T+/ptF9Q\=\=
+EllipticalFinSetCfg.Height.es.text.changed=20110317062041
+EllipticalFinSetCfg.Height.es.text.md5=mcao1NLk/9bh/Sxh5rp7Mg\=\=
+EllipticalFinSetCfg.Height.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Height.fr.text.md5=Z2KaAfTVGQ4cBjFlfETelA\=\=
+EllipticalFinSetCfg.Nbroffins..text.changed=20110317061957
+EllipticalFinSetCfg.Nbroffins..text.md5=+3QcyIkz9lnt+0f8dlP/ew\=\=
+EllipticalFinSetCfg.Nbroffins.es.text.changed=20110317062041
+EllipticalFinSetCfg.Nbroffins.es.text.md5=HGKq4/3A+oOKV7b9MdHIKQ\=\=
+EllipticalFinSetCfg.Nbroffins.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Nbroffins.fr.text.md5=6KbxfYrq87kta+KweGSOAg\=\=
+EllipticalFinSetCfg.Positionrelativeto..text.changed=20110317061957
+EllipticalFinSetCfg.Positionrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+EllipticalFinSetCfg.Positionrelativeto.es.text.changed=20110317062041
+EllipticalFinSetCfg.Positionrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+EllipticalFinSetCfg.Positionrelativeto.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Positionrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+EllipticalFinSetCfg.Rootchord..text.changed=20110317061957
+EllipticalFinSetCfg.Rootchord..text.md5=bOfX+KY7hvtQr5hLPPqmgg\=\=
+EllipticalFinSetCfg.Rootchord.es.text.changed=20110317062041
+EllipticalFinSetCfg.Rootchord.es.text.md5=5+/3cyMZzYKIX83mUKWAaQ\=\=
+EllipticalFinSetCfg.Rootchord.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Rootchord.fr.text.md5=ptg595jK2CUPVFwcyanFrw\=\=
+EllipticalFinSetCfg.Rotation..text.changed=20110317061957
+EllipticalFinSetCfg.Rotation..text.md5=3c8yyFAJWJ8PKri4QWkygw\=\=
+EllipticalFinSetCfg.Rotation.es.text.changed=20110317062041
+EllipticalFinSetCfg.Rotation.es.text.md5=DI60aemtFRUMr07YuYGOvA\=\=
+EllipticalFinSetCfg.Rotation.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Rotation.fr.text.md5=3c8yyFAJWJ8PKri4QWkygw\=\=
+EllipticalFinSetCfg.Thickness..text.changed=20110317061957
+EllipticalFinSetCfg.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\=
+EllipticalFinSetCfg.Thickness.es.text.changed=20110317062041
+EllipticalFinSetCfg.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\=
+EllipticalFinSetCfg.Thickness.fr.text.changed=20110317061957
+EllipticalFinSetCfg.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\=
+EllipticalFinSetCfg.plus..text.changed=20110317061957
+EllipticalFinSetCfg.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+EllipticalFinSetCfg.plus.es.text.changed=20110317062041
+EllipticalFinSetCfg.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+EllipticalFinSetCfg.plus.fr.text.changed=20110317061957
+EllipticalFinSetCfg.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+EllipticalFinSetCfg.ttip.Fincant..text.changed=20110317061957
+EllipticalFinSetCfg.ttip.Fincant..text.md5=kjjf+CiniAfww5LqDIYfBg\=\=
+EllipticalFinSetCfg.ttip.Fincant.es.text.changed=20110317062041
+EllipticalFinSetCfg.ttip.Fincant.es.text.md5=O3vvFqvC1DaeZ+xxIF0C4Q\=\=
+EllipticalFinSetCfg.ttip.Fincant.fr.text.changed=20110317061957
+EllipticalFinSetCfg.ttip.Fincant.fr.text.md5=VRn2tiTyo2OBM3le7/iJBg\=\=
+ExternalComponent.Polished..text.changed=20110317061957
+ExternalComponent.Polished..text.md5=qD+9LKdCR0MQkJJk/41raw\=\=
+ExternalComponent.Polished.es.text.changed=20110317062041
+ExternalComponent.Polished.es.text.md5=qD+9LKdCR0MQkJJk/41raw\=\=
+ExternalComponent.Polished.fr.text.changed=20110317061957
+ExternalComponent.Polished.fr.text.md5=47ydT2y+Kzfn4gyfE6cj1Q\=\=
+ExternalComponent.Regularpaint..text.changed=20110317061957
+ExternalComponent.Regularpaint..text.md5=cnsOX+ZK0p8Ju5FKeeZ/XA\=\=
+ExternalComponent.Regularpaint.es.text.changed=20110317062041
+ExternalComponent.Regularpaint.es.text.md5=cnsOX+ZK0p8Ju5FKeeZ/XA\=\=
+ExternalComponent.Regularpaint.fr.text.changed=20110317061957
+ExternalComponent.Regularpaint.fr.text.md5=W9sx1VyP1OtztM3z78zWCQ\=\=
+ExternalComponent.Rough..text.changed=20110317061957
+ExternalComponent.Rough..text.md5=zsy9qbAi5hX0l4zeYbvqjA\=\=
+ExternalComponent.Rough.es.text.changed=20110317062041
+ExternalComponent.Rough.es.text.md5=zsy9qbAi5hX0l4zeYbvqjA\=\=
+ExternalComponent.Rough.fr.text.changed=20110317061957
+ExternalComponent.Rough.fr.text.md5=lmfZZv1p3QJYotZvMqb0QA\=\=
+ExternalComponent.Smoothpaint..text.changed=20110317061957
+ExternalComponent.Smoothpaint..text.md5=coARgmxEiTmsvajfM8NMmQ\=\=
+ExternalComponent.Smoothpaint.es.text.changed=20110317062041
+ExternalComponent.Smoothpaint.es.text.md5=coARgmxEiTmsvajfM8NMmQ\=\=
+ExternalComponent.Smoothpaint.fr.text.changed=20110317061957
+ExternalComponent.Smoothpaint.fr.text.md5=fL/4o82FlKThyQ6hhU2UUw\=\=
+ExternalComponent.Unfinished..text.changed=20110317061957
+ExternalComponent.Unfinished..text.md5=FKB4A9uIm9Oo+NGC/2GXXA\=\=
+ExternalComponent.Unfinished.es.text.changed=20110317062041
+ExternalComponent.Unfinished.es.text.md5=FKB4A9uIm9Oo+NGC/2GXXA\=\=
+ExternalComponent.Unfinished.fr.text.changed=20110317061957
+ExternalComponent.Unfinished.fr.text.md5=J0aZ8kiRDa9M0omS+HByZg\=\=
+FinSet.CrossSection.AIRFOIL..text.changed=20110317061957
+FinSet.CrossSection.AIRFOIL..text.md5=ZpYfHpLxbOr/PhOzSESnuQ\=\=
+FinSet.CrossSection.AIRFOIL.es.text.changed=20110317062041
+FinSet.CrossSection.AIRFOIL.es.text.md5=ZpYfHpLxbOr/PhOzSESnuQ\=\=
+FinSet.CrossSection.AIRFOIL.fr.text.changed=20110317061957
+FinSet.CrossSection.AIRFOIL.fr.text.md5=ZpYfHpLxbOr/PhOzSESnuQ\=\=
+FinSet.CrossSection.ROUNDED..text.changed=20110317061957
+FinSet.CrossSection.ROUNDED..text.md5=vvJIHtpAvRIUgvGBTXIxTw\=\=
+FinSet.CrossSection.ROUNDED.es.text.changed=20110317062041
+FinSet.CrossSection.ROUNDED.es.text.md5=vvJIHtpAvRIUgvGBTXIxTw\=\=
+FinSet.CrossSection.ROUNDED.fr.text.changed=20110317061957
+FinSet.CrossSection.ROUNDED.fr.text.md5=NSevGKwkcHgHZ1+JtGxVSA\=\=
+FinSet.CrossSection.SQUARE..text.changed=20110317061957
+FinSet.CrossSection.SQUARE..text.md5=zrRsoRXQXFGqWhaohnwzBA\=\=
+FinSet.CrossSection.SQUARE.es.text.changed=20110317062041
+FinSet.CrossSection.SQUARE.es.text.md5=zrRsoRXQXFGqWhaohnwzBA\=\=
+FinSet.CrossSection.SQUARE.fr.text.changed=20110317061957
+FinSet.CrossSection.SQUARE.fr.text.md5=9QYB0tKTeDfI5y0YPJnoDQ\=\=
+FinSet.TabRelativePosition.CENTER..text.changed=20110317061957
+FinSet.TabRelativePosition.CENTER..text.md5=ZsxAXbGPHVx1aqHkeU2Lvg\=\=
+FinSet.TabRelativePosition.CENTER.es.text.changed=20110317062041
+FinSet.TabRelativePosition.CENTER.es.text.md5=ZsxAXbGPHVx1aqHkeU2Lvg\=\=
+FinSet.TabRelativePosition.CENTER.fr.text.changed=20110317061957
+FinSet.TabRelativePosition.CENTER.fr.text.md5=ZsxAXbGPHVx1aqHkeU2Lvg\=\=
+FinSet.TabRelativePosition.END..text.changed=20110317061957
+FinSet.TabRelativePosition.END..text.md5=mJ2i55mbegPalDQFiF2Xfg\=\=
+FinSet.TabRelativePosition.END.es.text.changed=20110317062041
+FinSet.TabRelativePosition.END.es.text.md5=mJ2i55mbegPalDQFiF2Xfg\=\=
+FinSet.TabRelativePosition.END.fr.text.changed=20110317061957
+FinSet.TabRelativePosition.END.fr.text.md5=mJ2i55mbegPalDQFiF2Xfg\=\=
+FinSet.TabRelativePosition.FRONT..text.changed=20110317061957
+FinSet.TabRelativePosition.FRONT..text.md5=h1zSN9SgZIILiiS+y+ZbVA\=\=
+FinSet.TabRelativePosition.FRONT.es.text.changed=20110317062041
+FinSet.TabRelativePosition.FRONT.es.text.md5=h1zSN9SgZIILiiS+y+ZbVA\=\=
+FinSet.TabRelativePosition.FRONT.fr.text.changed=20110317061957
+FinSet.TabRelativePosition.FRONT.fr.text.md5=h1zSN9SgZIILiiS+y+ZbVA\=\=
+FinSetConfig.Convertfinset..text.changed=20110317061957
+FinSetConfig.Convertfinset..text.md5=l6o1cNQFzvvwgu/kQ9F8PQ\=\=
+FinSetConfig.Convertfinset.es.text.changed=20110317062041
+FinSetConfig.Convertfinset.es.text.md5=8EUQWdTah7wlU4TU6DiFiA\=\=
+FinSetConfig.Convertfinset.fr.text.changed=20110317061957
+FinSetConfig.Convertfinset.fr.text.md5=OyotF2Zh3qfIp9jMz80U1g\=\=
+FinSetConfig.but.Converttofreeform..text.changed=20110317061957
+FinSetConfig.but.Converttofreeform..text.md5=/jPxo/NqHtWHSqUUzxMdKg\=\=
+FinSetConfig.but.Converttofreeform.es.text.changed=20110317062041
+FinSetConfig.but.Converttofreeform.es.text.md5=DZxn8eicRLAFCZOOgdeJWQ\=\=
+FinSetConfig.but.Converttofreeform.fr.text.changed=20110317061957
+FinSetConfig.but.Converttofreeform.fr.text.md5=15zsv5i/AhGWJSsNheUO5Q\=\=
+FinSetConfig.but.Converttofreeform.ttip..text.changed=20110317061957
+FinSetConfig.but.Converttofreeform.ttip..text.md5=nbJUlM0mymbJdntzyncxwg\=\=
+FinSetConfig.but.Converttofreeform.ttip.es.text.changed=20110317062041
+FinSetConfig.but.Converttofreeform.ttip.es.text.md5=gJ7Ldso6O+ns//mebImxyQ\=\=
+FinSetConfig.but.Converttofreeform.ttip.fr.text.changed=20110317061957
+FinSetConfig.but.Converttofreeform.ttip.fr.text.md5=l3tOjU+9ldsDgK5i5MlZZQ\=\=
+FinSetConfig.but.Splitfins..text.changed=20110317061957
+FinSetConfig.but.Splitfins..text.md5=QU8lHQQeGUr5nrFvg2HL9w\=\=
+FinSetConfig.but.Splitfins.es.text.changed=20110317062041
+FinSetConfig.but.Splitfins.es.text.md5=doyEvq5Uf1gxFY7APZnTdg\=\=
+FinSetConfig.but.Splitfins.fr.text.changed=20110317061957
+FinSetConfig.but.Splitfins.fr.text.md5=5drPfd/Ld+fJBLpt9FqurA\=\=
+FinSetConfig.but.Splitfins.ttip..text.changed=20110317061957
+FinSetConfig.but.Splitfins.ttip..text.md5=UybjQtj0uRYEeOTOZLeiAA\=\=
+FinSetConfig.but.Splitfins.ttip.es.text.changed=20110317062041
+FinSetConfig.but.Splitfins.ttip.es.text.md5=HZGVi0trp7OEoeiP/Whbvg\=\=
+FinSetConfig.but.Splitfins.ttip.fr.text.changed=20110317061957
+FinSetConfig.but.Splitfins.ttip.fr.text.md5=z2RunUHeYExdKplLpjoVjQ\=\=
+FinSetConfig.lbl.Tabheight..text.changed=20110317061957
+FinSetConfig.lbl.Tabheight..text.md5=w4RnHQX5V4SzzMx8DoUbyA\=\=
+FinSetConfig.lbl.Tabheight.es.text.changed=20110317062041
+FinSetConfig.lbl.Tabheight.es.text.md5=KB8V+pz8I+3cwp1V9tO9XA\=\=
+FinSetConfig.lbl.Tabheight.fr.text.changed=20110317061957
+FinSetConfig.lbl.Tabheight.fr.text.md5=cz0rt5Y55Px0S0Atpl8Ngw\=\=
+FinSetConfig.lbl.Tablength..text.changed=20110317061957
+FinSetConfig.lbl.Tablength..text.md5=/wljB0TH5FpZl8rPbibKtQ\=\=
+FinSetConfig.lbl.Tablength.es.text.changed=20110317062041
+FinSetConfig.lbl.Tablength.es.text.md5=OrPb58mwteho4vixulLvqA\=\=
+FinSetConfig.lbl.Tablength.fr.text.changed=20110317061957
+FinSetConfig.lbl.Tablength.fr.text.md5=azOjCh7703BKNKnrF3vzLg\=\=
+FinSetConfig.lbl.Tabposition..text.changed=20110317061957
+FinSetConfig.lbl.Tabposition..text.md5=OXQLQUu0jGg2r2ZAoSKrRQ\=\=
+FinSetConfig.lbl.Tabposition.es.text.changed=20110317062041
+FinSetConfig.lbl.Tabposition.es.text.md5=1PjVCbBb8laQzrY4m0ugJg\=\=
+FinSetConfig.lbl.Tabposition.fr.text.changed=20110317061957
+FinSetConfig.lbl.Tabposition.fr.text.md5=TKkYxEwYdYOX4kYjqcoOsg\=\=
+FinSetConfig.lbl.Through-the-wall..text.changed=20110317061957
+FinSetConfig.lbl.Through-the-wall..text.md5=gmQCNfmbALfBq9PIn+smWQ\=\=
+FinSetConfig.lbl.Through-the-wall.es.text.changed=20110317062041
+FinSetConfig.lbl.Through-the-wall.es.text.md5=4vLciHiCkP6xOCE4ihpmGQ\=\=
+FinSetConfig.lbl.Through-the-wall.fr.text.changed=20110317061957
+FinSetConfig.lbl.Through-the-wall.fr.text.md5=3n2ZjOcRp7u5437g9xumOw\=\=
+FinSetConfig.lbl.relativeto..text.changed=20110317061957
+FinSetConfig.lbl.relativeto..text.md5=KLALLq8yN/jLufKtRcLiRg\=\=
+FinSetConfig.lbl.relativeto.es.text.changed=20110317062041
+FinSetConfig.lbl.relativeto.es.text.md5=K+6dXfd2OrY8zlPDA2qY5Q\=\=
+FinSetConfig.lbl.relativeto.fr.text.changed=20110317061957
+FinSetConfig.lbl.relativeto.fr.text.md5=cd7MxzE5+7RtrD1hcsgVjA\=\=
+FinSetConfig.tab.Fintabs..text.changed=20110317061957
+FinSetConfig.tab.Fintabs..text.md5=FokJs9QfpfvpinxWAsLQCQ\=\=
+FinSetConfig.tab.Fintabs.es.text.changed=20110317062041
+FinSetConfig.tab.Fintabs.es.text.md5=a1EaAUkhFBwufmzY4GVOrg\=\=
+FinSetConfig.tab.Fintabs.fr.text.changed=20110317061957
+FinSetConfig.tab.Fintabs.fr.text.md5=0SV7fnDJHPj8dxPYn/tlrw\=\=
+FinSetConfig.tab.Through-the-wall..text.changed=20110317061957
+FinSetConfig.tab.Through-the-wall..text.md5=7rim3ieZpPN9MPF43nbDgA\=\=
+FinSetConfig.tab.Through-the-wall.es.text.changed=20110317062041
+FinSetConfig.tab.Through-the-wall.es.text.md5=8d51yKovKAYiaz8ZNjTaVQ\=\=
+FinSetConfig.tab.Through-the-wall.fr.text.changed=20110317061957
+FinSetConfig.tab.Through-the-wall.fr.text.md5=uw4gG5d7feSK6lRWecnPlA\=\=
+FinSetConfig.ttip.Tabheight..text.changed=20110317061957
+FinSetConfig.ttip.Tabheight..text.md5=B96+RU8cehVJPqw7T+z4Fg\=\=
+FinSetConfig.ttip.Tabheight.es.text.changed=20110317062041
+FinSetConfig.ttip.Tabheight.es.text.md5=P1RsuBeqlM2F+cdcRGVcNg\=\=
+FinSetConfig.ttip.Tabheight.fr.text.changed=20110317061957
+FinSetConfig.ttip.Tabheight.fr.text.md5=ruAICzw4BvQuLsXVXwCU6A\=\=
+FinSetConfig.ttip.Tablength..text.changed=20110317061957
+FinSetConfig.ttip.Tablength..text.md5=GB3+YRuCa5pfC3P7F8ovvA\=\=
+FinSetConfig.ttip.Tablength.es.text.changed=20110317062041
+FinSetConfig.ttip.Tablength.es.text.md5=h3IMkbMByXJv7S2SfuoRgA\=\=
+FinSetConfig.ttip.Tablength.fr.text.changed=20110317061957
+FinSetConfig.ttip.Tablength.fr.text.md5=uPFwX1E4bYS/4RL73C9WAg\=\=
+FinSetConfig.ttip.Tabposition..text.changed=20110317061957
+FinSetConfig.ttip.Tabposition..text.md5=iXxqTAKd13w1tJTsmSb5/g\=\=
+FinSetConfig.ttip.Tabposition.es.text.changed=20110317062041
+FinSetConfig.ttip.Tabposition.es.text.md5=JXPV7k1ZZqWg/EFGSvzw/Q\=\=
+FinSetConfig.ttip.Tabposition.fr.text.changed=20110317061957
+FinSetConfig.ttip.Tabposition.fr.text.md5=SxGQo+CI/ATEpo6l6R1gIw\=\=
+FlightDataType.TYPE_ACCELERATION_TOTAL..text.changed=20110317061957
+FlightDataType.TYPE_ACCELERATION_TOTAL..text.md5=aI4Gdn4aVusBIwJmMRgJVQ\=\=
+FlightDataType.TYPE_ACCELERATION_TOTAL.es.text.changed=20110317062041
+FlightDataType.TYPE_ACCELERATION_TOTAL.es.text.md5=aI4Gdn4aVusBIwJmMRgJVQ\=\=
+FlightDataType.TYPE_ACCELERATION_TOTAL.fr.text.changed=20110317061957
+FlightDataType.TYPE_ACCELERATION_TOTAL.fr.text.md5=gQIaKRF8hmt17HIkyH8ctQ\=\=
+FlightDataType.TYPE_ACCELERATION_XY..text.changed=20110317061957
+FlightDataType.TYPE_ACCELERATION_XY..text.md5=biS/Eehqkw6nJXcimJ6cBQ\=\=
+FlightDataType.TYPE_ACCELERATION_XY.es.text.changed=20110317062041
+FlightDataType.TYPE_ACCELERATION_XY.es.text.md5=biS/Eehqkw6nJXcimJ6cBQ\=\=
+FlightDataType.TYPE_ACCELERATION_XY.fr.text.changed=20110317061957
+FlightDataType.TYPE_ACCELERATION_XY.fr.text.md5=zkA1XQYTasUxXMBTeTYjjA\=\=
+FlightDataType.TYPE_ACCELERATION_Z..text.changed=20110317061957
+FlightDataType.TYPE_ACCELERATION_Z..text.md5=jjYMGHmIbB1468+hzUCBHQ\=\=
+FlightDataType.TYPE_ACCELERATION_Z.es.text.changed=20110317062041
+FlightDataType.TYPE_ACCELERATION_Z.es.text.md5=jjYMGHmIbB1468+hzUCBHQ\=\=
+FlightDataType.TYPE_ACCELERATION_Z.fr.text.changed=20110317061957
+FlightDataType.TYPE_ACCELERATION_Z.fr.text.md5=20ksuvit7+v7UyC0YlAr5Q\=\=
+FlightDataType.TYPE_AIR_PRESSURE..text.changed=20110317061957
+FlightDataType.TYPE_AIR_PRESSURE..text.md5=LLBL/yNyRHrOcLnSz66wZA\=\=
+FlightDataType.TYPE_AIR_PRESSURE.es.text.changed=20110317062041
+FlightDataType.TYPE_AIR_PRESSURE.es.text.md5=LLBL/yNyRHrOcLnSz66wZA\=\=
+FlightDataType.TYPE_AIR_PRESSURE.fr.text.changed=20110317061957
+FlightDataType.TYPE_AIR_PRESSURE.fr.text.md5=VPfgYXCmznRkTKztsUlyVg\=\=
+FlightDataType.TYPE_AIR_TEMPERATURE..text.changed=20110317061957
+FlightDataType.TYPE_AIR_TEMPERATURE..text.md5=fAqXJHMKzTCGD7ArlmagSQ\=\=
+FlightDataType.TYPE_AIR_TEMPERATURE.es.text.changed=20110317062041
+FlightDataType.TYPE_AIR_TEMPERATURE.es.text.md5=fAqXJHMKzTCGD7ArlmagSQ\=\=
+FlightDataType.TYPE_AIR_TEMPERATURE.fr.text.changed=20110317061957
+FlightDataType.TYPE_AIR_TEMPERATURE.fr.text.md5=ID3R4oNiwKCFrgjX9dEmBg\=\=
+FlightDataType.TYPE_ALTITUDE..text.changed=20110317061957
+FlightDataType.TYPE_ALTITUDE..text.md5=YTo9T6e44lONHlWcvVcpAg\=\=
+FlightDataType.TYPE_ALTITUDE.es.text.changed=20110317062041
+FlightDataType.TYPE_ALTITUDE.es.text.md5=YTo9T6e44lONHlWcvVcpAg\=\=
+FlightDataType.TYPE_ALTITUDE.fr.text.changed=20110317061957
+FlightDataType.TYPE_ALTITUDE.fr.text.md5=YTo9T6e44lONHlWcvVcpAg\=\=
+FlightDataType.TYPE_AOA..text.changed=20110317061957
+FlightDataType.TYPE_AOA..text.md5=OV1rY9/k3n0FlZlbjtIN3A\=\=
+FlightDataType.TYPE_AOA.es.text.changed=20110317062041
+FlightDataType.TYPE_AOA.es.text.md5=OV1rY9/k3n0FlZlbjtIN3A\=\=
+FlightDataType.TYPE_AOA.fr.text.changed=20110317061957
+FlightDataType.TYPE_AOA.fr.text.md5=YsBzNr+f7AryFV4eiIg2EQ\=\=
+FlightDataType.TYPE_AXIAL_DRAG_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_AXIAL_DRAG_COEFF..text.md5=DRWU5lpwxCuzX+8EmHL49A\=\=
+FlightDataType.TYPE_AXIAL_DRAG_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_AXIAL_DRAG_COEFF.es.text.md5=DRWU5lpwxCuzX+8EmHL49A\=\=
+FlightDataType.TYPE_AXIAL_DRAG_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_AXIAL_DRAG_COEFF.fr.text.md5=upEuskOHsGccfbDyEoKR/A\=\=
+FlightDataType.TYPE_BASE_DRAG_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_BASE_DRAG_COEFF..text.md5=tPuFME/K60h6e9lvYPlXNQ\=\=
+FlightDataType.TYPE_BASE_DRAG_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_BASE_DRAG_COEFF.es.text.md5=tPuFME/K60h6e9lvYPlXNQ\=\=
+FlightDataType.TYPE_BASE_DRAG_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_BASE_DRAG_COEFF.fr.text.md5=tPuFME/K60h6e9lvYPlXNQ\=\=
+FlightDataType.TYPE_CG_LOCATION..text.changed=20110317061957
+FlightDataType.TYPE_CG_LOCATION..text.md5=KIZZAEYB4kneRUg0OXIXhw\=\=
+FlightDataType.TYPE_CG_LOCATION.es.text.changed=20110317062041
+FlightDataType.TYPE_CG_LOCATION.es.text.md5=KIZZAEYB4kneRUg0OXIXhw\=\=
+FlightDataType.TYPE_CG_LOCATION.fr.text.changed=20110317061957
+FlightDataType.TYPE_CG_LOCATION.fr.text.md5=K9GfP6It+F66de9s70AzRA\=\=
+FlightDataType.TYPE_COMPUTATION_TIME..text.changed=20110317061957
+FlightDataType.TYPE_COMPUTATION_TIME..text.md5=3s8XtCxVUy+KOK8lGd1PgA\=\=
+FlightDataType.TYPE_COMPUTATION_TIME.es.text.changed=20110317062041
+FlightDataType.TYPE_COMPUTATION_TIME.es.text.md5=3s8XtCxVUy+KOK8lGd1PgA\=\=
+FlightDataType.TYPE_COMPUTATION_TIME.fr.text.changed=20110317061957
+FlightDataType.TYPE_COMPUTATION_TIME.fr.text.md5=olC1oYZbGR8LqA4QDRehjg\=\=
+FlightDataType.TYPE_CP_LOCATION..text.changed=20110317061957
+FlightDataType.TYPE_CP_LOCATION..text.md5=om34/v0uC+TEbdNBQISjlg\=\=
+FlightDataType.TYPE_CP_LOCATION.es.text.changed=20110317062041
+FlightDataType.TYPE_CP_LOCATION.es.text.md5=om34/v0uC+TEbdNBQISjlg\=\=
+FlightDataType.TYPE_CP_LOCATION.fr.text.changed=20110317061957
+FlightDataType.TYPE_CP_LOCATION.fr.text.md5=8x+ItW93iIkQa8yicVps0A\=\=
+FlightDataType.TYPE_DRAG_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_DRAG_COEFF..text.md5=c3ptHhgq6HRh9048LW8PeQ\=\=
+FlightDataType.TYPE_DRAG_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_DRAG_COEFF.es.text.md5=c3ptHhgq6HRh9048LW8PeQ\=\=
+FlightDataType.TYPE_DRAG_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_DRAG_COEFF.fr.text.md5=hEsCts6k/iOqy+XEJNlgQw\=\=
+FlightDataType.TYPE_DRAG_FORCE..text.changed=20110317061957
+FlightDataType.TYPE_DRAG_FORCE..text.md5=l27oAhN3ARImPFeuNXIU3g\=\=
+FlightDataType.TYPE_DRAG_FORCE.es.text.changed=20110317062041
+FlightDataType.TYPE_DRAG_FORCE.es.text.md5=l27oAhN3ARImPFeuNXIU3g\=\=
+FlightDataType.TYPE_DRAG_FORCE.fr.text.changed=20110317061957
+FlightDataType.TYPE_DRAG_FORCE.fr.text.md5=HWIza12i1MaZ01k5ObxwGA\=\=
+FlightDataType.TYPE_FRICTION_DRAG_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_FRICTION_DRAG_COEFF..text.md5=uMMtNYLT2PLNBCBblPbjkg\=\=
+FlightDataType.TYPE_FRICTION_DRAG_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_FRICTION_DRAG_COEFF.es.text.md5=uMMtNYLT2PLNBCBblPbjkg\=\=
+FlightDataType.TYPE_FRICTION_DRAG_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_FRICTION_DRAG_COEFF.fr.text.md5=WtcfyXxGDkqYNoVvEikzFA\=\=
+FlightDataType.TYPE_LONGITUDINAL_INERTIA..text.changed=20110317061957
+FlightDataType.TYPE_LONGITUDINAL_INERTIA..text.md5=l3pnkJ+QLNyIOKpjgGwVSQ\=\=
+FlightDataType.TYPE_LONGITUDINAL_INERTIA.es.text.changed=20110317062041
+FlightDataType.TYPE_LONGITUDINAL_INERTIA.es.text.md5=l3pnkJ+QLNyIOKpjgGwVSQ\=\=
+FlightDataType.TYPE_LONGITUDINAL_INERTIA.fr.text.changed=20110317061957
+FlightDataType.TYPE_LONGITUDINAL_INERTIA.fr.text.md5=fgDG/g50LeFYVp1Hwvkvcg\=\=
+FlightDataType.TYPE_MACH_NUMBER..text.changed=20110317061957
+FlightDataType.TYPE_MACH_NUMBER..text.md5=ciJ62pBhhq8QB+vuS9HeHg\=\=
+FlightDataType.TYPE_MACH_NUMBER.es.text.changed=20110317062041
+FlightDataType.TYPE_MACH_NUMBER.es.text.md5=ciJ62pBhhq8QB+vuS9HeHg\=\=
+FlightDataType.TYPE_MACH_NUMBER.fr.text.changed=20110317061957
+FlightDataType.TYPE_MACH_NUMBER.fr.text.md5=ciJ62pBhhq8QB+vuS9HeHg\=\=
+FlightDataType.TYPE_MASS..text.changed=20110317061957
+FlightDataType.TYPE_MASS..text.md5=/yhk1vZS7grCVIFPGuT0qA\=\=
+FlightDataType.TYPE_MASS.es.text.changed=20110317062041
+FlightDataType.TYPE_MASS.es.text.md5=/yhk1vZS7grCVIFPGuT0qA\=\=
+FlightDataType.TYPE_MASS.fr.text.changed=20110317061957
+FlightDataType.TYPE_MASS.fr.text.md5=j5tnyROd4YPhARw9oEf1ow\=\=
+FlightDataType.TYPE_NORMAL_FORCE_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_NORMAL_FORCE_COEFF..text.md5=HZwDcFKIcxTpFspcSYlnJA\=\=
+FlightDataType.TYPE_NORMAL_FORCE_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_NORMAL_FORCE_COEFF.es.text.md5=HZwDcFKIcxTpFspcSYlnJA\=\=
+FlightDataType.TYPE_NORMAL_FORCE_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_NORMAL_FORCE_COEFF.fr.text.md5=HZwDcFKIcxTpFspcSYlnJA\=\=
+FlightDataType.TYPE_ORIENTATION_PHI..text.changed=20110317061957
+FlightDataType.TYPE_ORIENTATION_PHI..text.md5=dg/CXQy7FupwJvJeuGWLLg\=\=
+FlightDataType.TYPE_ORIENTATION_PHI.es.text.changed=20110317062041
+FlightDataType.TYPE_ORIENTATION_PHI.es.text.md5=dg/CXQy7FupwJvJeuGWLLg\=\=
+FlightDataType.TYPE_ORIENTATION_PHI.fr.text.changed=20110317061957
+FlightDataType.TYPE_ORIENTATION_PHI.fr.text.md5=unylIsGeDxEy3vrig2oInw\=\=
+FlightDataType.TYPE_ORIENTATION_THETA..text.changed=20110317061957
+FlightDataType.TYPE_ORIENTATION_THETA..text.md5=1OsWcRegqmCyCkKI0IEB5g\=\=
+FlightDataType.TYPE_ORIENTATION_THETA.es.text.changed=20110317062041
+FlightDataType.TYPE_ORIENTATION_THETA.es.text.md5=1OsWcRegqmCyCkKI0IEB5g\=\=
+FlightDataType.TYPE_ORIENTATION_THETA.fr.text.changed=20110317061957
+FlightDataType.TYPE_ORIENTATION_THETA.fr.text.md5=jmm4PQbUWymFSIJDim6Ibg\=\=
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF..text.md5=RSL86Pjp1PVjbVzxwxzZZw\=\=
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.es.text.md5=RSL86Pjp1PVjbVzxwxzZZw\=\=
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.fr.text.md5=RSL86Pjp1PVjbVzxwxzZZw\=\=
+FlightDataType.TYPE_PITCH_MOMENT_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_PITCH_MOMENT_COEFF..text.md5=EmZc8hrwc/nCatEby79xfQ\=\=
+FlightDataType.TYPE_PITCH_MOMENT_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_PITCH_MOMENT_COEFF.es.text.md5=EmZc8hrwc/nCatEby79xfQ\=\=
+FlightDataType.TYPE_PITCH_MOMENT_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_PITCH_MOMENT_COEFF.fr.text.md5=EmZc8hrwc/nCatEby79xfQ\=\=
+FlightDataType.TYPE_PITCH_RATE..text.changed=20110317061957
+FlightDataType.TYPE_PITCH_RATE..text.md5=ITpR0e+LPigp4++UbpLPKA\=\=
+FlightDataType.TYPE_PITCH_RATE.es.text.changed=20110317062041
+FlightDataType.TYPE_PITCH_RATE.es.text.md5=ITpR0e+LPigp4++UbpLPKA\=\=
+FlightDataType.TYPE_PITCH_RATE.fr.text.changed=20110317061957
+FlightDataType.TYPE_PITCH_RATE.fr.text.md5=6nE1sX7/7pCNoDBuRmmsXg\=\=
+FlightDataType.TYPE_POSITION_DIRECTION..text.changed=20110317061957
+FlightDataType.TYPE_POSITION_DIRECTION..text.md5=eNAqvnqM+eCse+UDg6TN6A\=\=
+FlightDataType.TYPE_POSITION_DIRECTION.es.text.changed=20110317062041
+FlightDataType.TYPE_POSITION_DIRECTION.es.text.md5=eNAqvnqM+eCse+UDg6TN6A\=\=
+FlightDataType.TYPE_POSITION_DIRECTION.fr.text.changed=20110317061957
+FlightDataType.TYPE_POSITION_DIRECTION.fr.text.md5=Zh10Nd2K3kMf0wxBRLcwaQ\=\=
+FlightDataType.TYPE_POSITION_X..text.changed=20110317061957
+FlightDataType.TYPE_POSITION_X..text.md5=QcILtOLkTF9RDUCXHWpqDA\=\=
+FlightDataType.TYPE_POSITION_X.es.text.changed=20110317062041
+FlightDataType.TYPE_POSITION_X.es.text.md5=QcILtOLkTF9RDUCXHWpqDA\=\=
+FlightDataType.TYPE_POSITION_X.fr.text.changed=20110317061957
+FlightDataType.TYPE_POSITION_X.fr.text.md5=q2aZ8F+SyZN3r190lGzQ7w\=\=
+FlightDataType.TYPE_POSITION_XY..text.changed=20110317061957
+FlightDataType.TYPE_POSITION_XY..text.md5=/Fum2BXS57dBqVfCk5Rk0A\=\=
+FlightDataType.TYPE_POSITION_XY.es.text.changed=20110317062041
+FlightDataType.TYPE_POSITION_XY.es.text.md5=/Fum2BXS57dBqVfCk5Rk0A\=\=
+FlightDataType.TYPE_POSITION_XY.fr.text.changed=20110317061957
+FlightDataType.TYPE_POSITION_XY.fr.text.md5=4OaeTSouyRleyZaoP14ccA\=\=
+FlightDataType.TYPE_POSITION_Y..text.changed=20110317061957
+FlightDataType.TYPE_POSITION_Y..text.md5=g/KOjQX2uHXUlmK7jzpH2w\=\=
+FlightDataType.TYPE_POSITION_Y.es.text.changed=20110317062041
+FlightDataType.TYPE_POSITION_Y.es.text.md5=g/KOjQX2uHXUlmK7jzpH2w\=\=
+FlightDataType.TYPE_POSITION_Y.fr.text.changed=20110317061957
+FlightDataType.TYPE_POSITION_Y.fr.text.md5=AfvG+4yXxhWsPBiDP1xquw\=\=
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF..text.md5=huqAarIoKH6PbOu9GMr9MA\=\=
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF.es.text.md5=huqAarIoKH6PbOu9GMr9MA\=\=
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF.fr.text.md5=0HbVNF8W+3S7nlJyuwGSdQ\=\=
+FlightDataType.TYPE_REFERENCE_AREA..text.changed=20110317061957
+FlightDataType.TYPE_REFERENCE_AREA..text.md5=Us7J/omM+TASY5ETM0C4Hw\=\=
+FlightDataType.TYPE_REFERENCE_AREA.es.text.changed=20110317062041
+FlightDataType.TYPE_REFERENCE_AREA.es.text.md5=Us7J/omM+TASY5ETM0C4Hw\=\=
+FlightDataType.TYPE_REFERENCE_AREA.fr.text.changed=20110317061957
+FlightDataType.TYPE_REFERENCE_AREA.fr.text.md5=hdIjVJv3nbXPik0yegZGcg\=\=
+FlightDataType.TYPE_REFERENCE_LENGTH..text.changed=20110317061957
+FlightDataType.TYPE_REFERENCE_LENGTH..text.md5=NC5mTk0c7AfcALvIkA+3Cg\=\=
+FlightDataType.TYPE_REFERENCE_LENGTH.es.text.changed=20110317062041
+FlightDataType.TYPE_REFERENCE_LENGTH.es.text.md5=NC5mTk0c7AfcALvIkA+3Cg\=\=
+FlightDataType.TYPE_REFERENCE_LENGTH.fr.text.changed=20110317061957
+FlightDataType.TYPE_REFERENCE_LENGTH.fr.text.md5=hWg2+7a1EuQmR+i/La+GXQ\=\=
+FlightDataType.TYPE_REYNOLDS_NUMBER..text.changed=20110317061957
+FlightDataType.TYPE_REYNOLDS_NUMBER..text.md5=2CT6R+QZMPloS36RKVbo8A\=\=
+FlightDataType.TYPE_REYNOLDS_NUMBER.es.text.changed=20110317062041
+FlightDataType.TYPE_REYNOLDS_NUMBER.es.text.md5=2CT6R+QZMPloS36RKVbo8A\=\=
+FlightDataType.TYPE_REYNOLDS_NUMBER.fr.text.changed=20110317061957
+FlightDataType.TYPE_REYNOLDS_NUMBER.fr.text.md5=IazOBIiD49MPxKQmke4ZrQ\=\=
+FlightDataType.TYPE_ROLL_DAMPING_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_ROLL_DAMPING_COEFF..text.md5=GLnb/60ST1T0xakX2GOp5w\=\=
+FlightDataType.TYPE_ROLL_DAMPING_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_ROLL_DAMPING_COEFF.es.text.md5=GLnb/60ST1T0xakX2GOp5w\=\=
+FlightDataType.TYPE_ROLL_DAMPING_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_ROLL_DAMPING_COEFF.fr.text.md5=GLnb/60ST1T0xakX2GOp5w\=\=
+FlightDataType.TYPE_ROLL_FORCING_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_ROLL_FORCING_COEFF..text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\=
+FlightDataType.TYPE_ROLL_FORCING_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_ROLL_FORCING_COEFF.es.text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\=
+FlightDataType.TYPE_ROLL_FORCING_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_ROLL_FORCING_COEFF.fr.text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\=
+FlightDataType.TYPE_ROLL_MOMENT_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_ROLL_MOMENT_COEFF..text.md5=thkx2MkX8GPJj+VEArYreg\=\=
+FlightDataType.TYPE_ROLL_MOMENT_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_ROLL_MOMENT_COEFF.es.text.md5=thkx2MkX8GPJj+VEArYreg\=\=
+FlightDataType.TYPE_ROLL_MOMENT_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_ROLL_MOMENT_COEFF.fr.text.md5=thkx2MkX8GPJj+VEArYreg\=\=
+FlightDataType.TYPE_ROLL_RATE..text.changed=20110317061957
+FlightDataType.TYPE_ROLL_RATE..text.md5=iahdEDYVyh3BoaY+QDVqUQ\=\=
+FlightDataType.TYPE_ROLL_RATE.es.text.changed=20110317062041
+FlightDataType.TYPE_ROLL_RATE.es.text.md5=iahdEDYVyh3BoaY+QDVqUQ\=\=
+FlightDataType.TYPE_ROLL_RATE.fr.text.changed=20110317061957
+FlightDataType.TYPE_ROLL_RATE.fr.text.md5=S+P08kGINRYMv2fVZ8BqMQ\=\=
+FlightDataType.TYPE_ROTATIONAL_INERTIA..text.changed=20110317061957
+FlightDataType.TYPE_ROTATIONAL_INERTIA..text.md5=Fot4dG5rZndopVCYxYTmoA\=\=
+FlightDataType.TYPE_ROTATIONAL_INERTIA.es.text.changed=20110317062041
+FlightDataType.TYPE_ROTATIONAL_INERTIA.es.text.md5=Fot4dG5rZndopVCYxYTmoA\=\=
+FlightDataType.TYPE_ROTATIONAL_INERTIA.fr.text.changed=20110317061957
+FlightDataType.TYPE_ROTATIONAL_INERTIA.fr.text.md5=YGcMCCOfmkZQz/GyVVbbQQ\=\=
+FlightDataType.TYPE_SIDE_FORCE_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_SIDE_FORCE_COEFF..text.md5=jq9U8JDRTfF8/yw4Zuf2TA\=\=
+FlightDataType.TYPE_SIDE_FORCE_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_SIDE_FORCE_COEFF.es.text.md5=jq9U8JDRTfF8/yw4Zuf2TA\=\=
+FlightDataType.TYPE_SIDE_FORCE_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_SIDE_FORCE_COEFF.fr.text.md5=jq9U8JDRTfF8/yw4Zuf2TA\=\=
+FlightDataType.TYPE_SPEED_OF_SOUND..text.changed=20110317061957
+FlightDataType.TYPE_SPEED_OF_SOUND..text.md5=4uTZKH+U4cQEJP65/7TXTQ\=\=
+FlightDataType.TYPE_SPEED_OF_SOUND.es.text.changed=20110317062041
+FlightDataType.TYPE_SPEED_OF_SOUND.es.text.md5=4uTZKH+U4cQEJP65/7TXTQ\=\=
+FlightDataType.TYPE_SPEED_OF_SOUND.fr.text.changed=20110317061957
+FlightDataType.TYPE_SPEED_OF_SOUND.fr.text.md5=OjYO6vBmu90i4/WEggxUIQ\=\=
+FlightDataType.TYPE_STABILITY..text.changed=20110317061957
+FlightDataType.TYPE_STABILITY..text.md5=NhRkvj3yLGtVuudrBc7EPw\=\=
+FlightDataType.TYPE_STABILITY.es.text.changed=20110317062041
+FlightDataType.TYPE_STABILITY.es.text.md5=NhRkvj3yLGtVuudrBc7EPw\=\=
+FlightDataType.TYPE_STABILITY.fr.text.changed=20110317061957
+FlightDataType.TYPE_STABILITY.fr.text.md5=h6ZzVKkGkl/PUZfLQ8IVTA\=\=
+FlightDataType.TYPE_THRUST_FORCE..text.changed=20110317061957
+FlightDataType.TYPE_THRUST_FORCE..text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\=
+FlightDataType.TYPE_THRUST_FORCE.es.text.changed=20110317062041
+FlightDataType.TYPE_THRUST_FORCE.es.text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\=
+FlightDataType.TYPE_THRUST_FORCE.fr.text.changed=20110317061957
+FlightDataType.TYPE_THRUST_FORCE.fr.text.md5=pfYvmVTjP0jRSat0JzP6Cg\=\=
+FlightDataType.TYPE_TIME..text.changed=20110317061957
+FlightDataType.TYPE_TIME..text.md5=p21O9fP2pnK7+rKGVWPlMA\=\=
+FlightDataType.TYPE_TIME.es.text.changed=20110317062041
+FlightDataType.TYPE_TIME.es.text.md5=p21O9fP2pnK7+rKGVWPlMA\=\=
+FlightDataType.TYPE_TIME.fr.text.changed=20110317061957
+FlightDataType.TYPE_TIME.fr.text.md5=jowhmRXRe6C9/ZwVYhAnxA\=\=
+FlightDataType.TYPE_TIME_STEP..text.changed=20110317061957
+FlightDataType.TYPE_TIME_STEP..text.md5=OE6Yka9ywzBNnoVkphTUIg\=\=
+FlightDataType.TYPE_TIME_STEP.es.text.changed=20110317062041
+FlightDataType.TYPE_TIME_STEP.es.text.md5=OE6Yka9ywzBNnoVkphTUIg\=\=
+FlightDataType.TYPE_TIME_STEP.fr.text.changed=20110317061957
+FlightDataType.TYPE_TIME_STEP.fr.text.md5=QsYGIuWr0uqkaksr6A4lJQ\=\=
+FlightDataType.TYPE_VELOCITY_TOTAL..text.changed=20110317061957
+FlightDataType.TYPE_VELOCITY_TOTAL..text.md5=Beb+kdjtObU42W2Y6Ijatg\=\=
+FlightDataType.TYPE_VELOCITY_TOTAL.es.text.changed=20110317062041
+FlightDataType.TYPE_VELOCITY_TOTAL.es.text.md5=Beb+kdjtObU42W2Y6Ijatg\=\=
+FlightDataType.TYPE_VELOCITY_TOTAL.fr.text.changed=20110317061957
+FlightDataType.TYPE_VELOCITY_TOTAL.fr.text.md5=RlSTSkmYNH1RyOmRqa2XkA\=\=
+FlightDataType.TYPE_VELOCITY_XY..text.changed=20110317061957
+FlightDataType.TYPE_VELOCITY_XY..text.md5=A5CnrkDFu4p+9tPfsURm1A\=\=
+FlightDataType.TYPE_VELOCITY_XY.es.text.changed=20110317062041
+FlightDataType.TYPE_VELOCITY_XY.es.text.md5=A5CnrkDFu4p+9tPfsURm1A\=\=
+FlightDataType.TYPE_VELOCITY_XY.fr.text.changed=20110317061957
+FlightDataType.TYPE_VELOCITY_XY.fr.text.md5=XdmOksxTY74xyRzUkWyfug\=\=
+FlightDataType.TYPE_VELOCITY_Z..text.changed=20110317061957
+FlightDataType.TYPE_VELOCITY_Z..text.md5=pxJDDiP5wQUn58A6G2p2cA\=\=
+FlightDataType.TYPE_VELOCITY_Z.es.text.changed=20110317062041
+FlightDataType.TYPE_VELOCITY_Z.es.text.md5=pxJDDiP5wQUn58A6G2p2cA\=\=
+FlightDataType.TYPE_VELOCITY_Z.fr.text.changed=20110317061957
+FlightDataType.TYPE_VELOCITY_Z.fr.text.md5=rV6cZjjFEuB2ktd3r4ApFw\=\=
+FlightDataType.TYPE_WIND_VELOCITY..text.changed=20110317061957
+FlightDataType.TYPE_WIND_VELOCITY..text.md5=hbdXpdqAzBsu7RclaSRXbg\=\=
+FlightDataType.TYPE_WIND_VELOCITY.es.text.changed=20110317062041
+FlightDataType.TYPE_WIND_VELOCITY.es.text.md5=hbdXpdqAzBsu7RclaSRXbg\=\=
+FlightDataType.TYPE_WIND_VELOCITY.fr.text.changed=20110317061957
+FlightDataType.TYPE_WIND_VELOCITY.fr.text.md5=FKdKaEwZqgZ4A5sQxA1nMQ\=\=
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF..text.md5=FtGZRD4djQpT1kByObe7Iw\=\=
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.es.text.md5=FtGZRD4djQpT1kByObe7Iw\=\=
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.fr.text.md5=FtGZRD4djQpT1kByObe7Iw\=\=
+FlightDataType.TYPE_YAW_MOMENT_COEFF..text.changed=20110317061957
+FlightDataType.TYPE_YAW_MOMENT_COEFF..text.md5=YbY3qmcQryszrB3B4xRC1A\=\=
+FlightDataType.TYPE_YAW_MOMENT_COEFF.es.text.changed=20110317062041
+FlightDataType.TYPE_YAW_MOMENT_COEFF.es.text.md5=YbY3qmcQryszrB3B4xRC1A\=\=
+FlightDataType.TYPE_YAW_MOMENT_COEFF.fr.text.changed=20110317061957
+FlightDataType.TYPE_YAW_MOMENT_COEFF.fr.text.md5=YbY3qmcQryszrB3B4xRC1A\=\=
+FlightDataType.TYPE_YAW_RATE..text.changed=20110317061957
+FlightDataType.TYPE_YAW_RATE..text.md5=G9o8ZsEKWVnoQ6Poqjgskw\=\=
+FlightDataType.TYPE_YAW_RATE.es.text.changed=20110317062041
+FlightDataType.TYPE_YAW_RATE.es.text.md5=G9o8ZsEKWVnoQ6Poqjgskw\=\=
+FlightDataType.TYPE_YAW_RATE.fr.text.changed=20110317061957
+FlightDataType.TYPE_YAW_RATE.fr.text.md5=p8FuCWU/W4+pDfF/kznXww\=\=
+FlightEvent.Type.ALTITUDE..text.changed=20110317061957
+FlightEvent.Type.ALTITUDE..text.md5=WH0Nj1zwwHqP4SYK/oJk+A\=\=
+FlightEvent.Type.ALTITUDE.es.text.changed=20110317062041
+FlightEvent.Type.ALTITUDE.es.text.md5=WH0Nj1zwwHqP4SYK/oJk+A\=\=
+FlightEvent.Type.ALTITUDE.fr.text.changed=20110317061957
+FlightEvent.Type.ALTITUDE.fr.text.md5=oWCFvbeU2tZvIa70HOfTdA\=\=
+FlightEvent.Type.APOGEE..text.changed=20110317061957
+FlightEvent.Type.APOGEE..text.md5=QL6gVpnPUZKBPZU18+Unyg\=\=
+FlightEvent.Type.APOGEE.es.text.changed=20110317062041
+FlightEvent.Type.APOGEE.es.text.md5=QL6gVpnPUZKBPZU18+Unyg\=\=
+FlightEvent.Type.APOGEE.fr.text.changed=20110317061957
+FlightEvent.Type.APOGEE.fr.text.md5=+AS6Lmac9yoej6GMJZ2KZA\=\=
+FlightEvent.Type.BURNOUT..text.changed=20110317061957
+FlightEvent.Type.BURNOUT..text.md5=MLfUAj20WEoGaBZl8PK+Hw\=\=
+FlightEvent.Type.BURNOUT.es.text.changed=20110317062041
+FlightEvent.Type.BURNOUT.es.text.md5=MLfUAj20WEoGaBZl8PK+Hw\=\=
+FlightEvent.Type.BURNOUT.fr.text.changed=20110317061957
+FlightEvent.Type.BURNOUT.fr.text.md5=Q4u6/TMzx/mPuLTmiPQNLw\=\=
+FlightEvent.Type.EJECTION_CHARGE..text.changed=20110317061957
+FlightEvent.Type.EJECTION_CHARGE..text.md5=EST5kuTq8JWsNsesgbCnxQ\=\=
+FlightEvent.Type.EJECTION_CHARGE.es.text.changed=20110317062041
+FlightEvent.Type.EJECTION_CHARGE.es.text.md5=EST5kuTq8JWsNsesgbCnxQ\=\=
+FlightEvent.Type.EJECTION_CHARGE.fr.text.changed=20110317061957
+FlightEvent.Type.EJECTION_CHARGE.fr.text.md5=1jLyz+Nio3ouXgZWiG1E7w\=\=
+FlightEvent.Type.GROUND_HIT..text.changed=20110317061957
+FlightEvent.Type.GROUND_HIT..text.md5=1RPTzdzf2DRNPzbr1CCFMQ\=\=
+FlightEvent.Type.GROUND_HIT.es.text.changed=20110317062041
+FlightEvent.Type.GROUND_HIT.es.text.md5=1RPTzdzf2DRNPzbr1CCFMQ\=\=
+FlightEvent.Type.GROUND_HIT.fr.text.changed=20110317061957
+FlightEvent.Type.GROUND_HIT.fr.text.md5=SdifszaZmS3l7fqeBJC6pA\=\=
+FlightEvent.Type.IGNITION..text.changed=20110317061957
+FlightEvent.Type.IGNITION..text.md5=X6ovqvj75OjtZcC8yTBIwQ\=\=
+FlightEvent.Type.IGNITION.es.text.changed=20110317062041
+FlightEvent.Type.IGNITION.es.text.md5=X6ovqvj75OjtZcC8yTBIwQ\=\=
+FlightEvent.Type.IGNITION.fr.text.changed=20110317061957
+FlightEvent.Type.IGNITION.fr.text.md5=BdDLx1PDPSs4qduNIjUBNA\=\=
+FlightEvent.Type.LAUNCH..text.changed=20110317061957
+FlightEvent.Type.LAUNCH..text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\=
+FlightEvent.Type.LAUNCH.es.text.changed=20110317062041
+FlightEvent.Type.LAUNCH.es.text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\=
+FlightEvent.Type.LAUNCH.fr.text.changed=20110317061957
+FlightEvent.Type.LAUNCH.fr.text.md5=rY9s9XYfmob7ItSdUunCkw\=\=
+FlightEvent.Type.LAUNCHROD..text.changed=20110317061957
+FlightEvent.Type.LAUNCHROD..text.md5=P7a62JMyoz3O3oqsabC41w\=\=
+FlightEvent.Type.LAUNCHROD.es.text.changed=20110317062041
+FlightEvent.Type.LAUNCHROD.es.text.md5=P7a62JMyoz3O3oqsabC41w\=\=
+FlightEvent.Type.LAUNCHROD.fr.text.changed=20110317061957
+FlightEvent.Type.LAUNCHROD.fr.text.md5=EgQuDcsLSpesXN3x+UDCUA\=\=
+FlightEvent.Type.LIFTOFF..text.changed=20110317061957
+FlightEvent.Type.LIFTOFF..text.md5=di55BhqJnKjTEmBln5q7yA\=\=
+FlightEvent.Type.LIFTOFF.es.text.changed=20110317062041
+FlightEvent.Type.LIFTOFF.es.text.md5=di55BhqJnKjTEmBln5q7yA\=\=
+FlightEvent.Type.LIFTOFF.fr.text.changed=20110317061957
+FlightEvent.Type.LIFTOFF.fr.text.md5=3xrWDBpyxudNJklyqVBwoA\=\=
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT..text.changed=20110317061957
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT..text.md5=vtUEq0kAqLv49fzX5EfceQ\=\=
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.es.text.changed=20110317062041
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.es.text.md5=vtUEq0kAqLv49fzX5EfceQ\=\=
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.fr.text.changed=20110317061957
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.fr.text.md5=ZwJeq6sIUhvoo9IyZ2TlEA\=\=
+FlightEvent.Type.SIMULATION_END..text.changed=20110317061957
+FlightEvent.Type.SIMULATION_END..text.md5=Vgfru6MYquJ3+juegushVg\=\=
+FlightEvent.Type.SIMULATION_END.es.text.changed=20110317062041
+FlightEvent.Type.SIMULATION_END.es.text.md5=Vgfru6MYquJ3+juegushVg\=\=
+FlightEvent.Type.SIMULATION_END.fr.text.changed=20110317061957
+FlightEvent.Type.SIMULATION_END.fr.text.md5=xy5mF048ibLmOAAcYwJKCQ\=\=
+FlightEvent.Type.STAGE_SEPARATION..text.changed=20110317061957
+FlightEvent.Type.STAGE_SEPARATION..text.md5=zaYJWkW0amOdmIvrfHLXUA\=\=
+FlightEvent.Type.STAGE_SEPARATION.es.text.changed=20110317062041
+FlightEvent.Type.STAGE_SEPARATION.es.text.md5=zaYJWkW0amOdmIvrfHLXUA\=\=
+FlightEvent.Type.STAGE_SEPARATION.fr.text.changed=20110317061957
+FlightEvent.Type.STAGE_SEPARATION.fr.text.md5=TWT9UDkb76si755WWGNJOA\=\=
+FreeformFinSet.FreeformFinSet..text.changed=20110317061957
+FreeformFinSet.FreeformFinSet..text.md5=XdUaFd+fxdobxWZKMbxlSA\=\=
+FreeformFinSet.FreeformFinSet.es.text.changed=20110317062041
+FreeformFinSet.FreeformFinSet.es.text.md5=XdUaFd+fxdobxWZKMbxlSA\=\=
+FreeformFinSet.FreeformFinSet.fr.text.changed=20110317061957
+FreeformFinSet.FreeformFinSet.fr.text.md5=sBWJrKTbTEIJ21JzU8+3uQ\=\=
+FreeformFinSetCfg.lbl.Fincant..text.changed=20110317061957
+FreeformFinSetCfg.lbl.Fincant..text.md5=gJTol4zWIT3NlA2Qj+mRBw\=\=
+FreeformFinSetCfg.lbl.Fincant.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.Fincant.es.text.md5=9sx5XgiKIqrnc1XoSZcXmQ\=\=
+FreeformFinSetCfg.lbl.Fincant.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.Fincant.fr.text.md5=gbEuh/Hyt0eAkJbVyIpt1A\=\=
+FreeformFinSetCfg.lbl.FincrossSection..text.changed=20110317061957
+FreeformFinSetCfg.lbl.FincrossSection..text.md5=d139yIi0Bcw4ePuCYxjEMQ\=\=
+FreeformFinSetCfg.lbl.FincrossSection.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.FincrossSection.es.text.md5=/nIRxIgyTgr49tkwIwEwKw\=\=
+FreeformFinSetCfg.lbl.FincrossSection.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.FincrossSection.fr.text.md5=BzmEcGR9qVjmHb5eL2X9hA\=\=
+FreeformFinSetCfg.lbl.Finrotation..text.changed=20110317061957
+FreeformFinSetCfg.lbl.Finrotation..text.md5=asDZsCDOZlcfbnpr9h4Zeg\=\=
+FreeformFinSetCfg.lbl.Finrotation.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.Finrotation.es.text.md5=jAmkTkne4wEX6uDw5EITrA\=\=
+FreeformFinSetCfg.lbl.Finrotation.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.Finrotation.fr.text.md5=32oqxEjti/TzL2KnS5dKjQ\=\=
+FreeformFinSetCfg.lbl.Numberoffins..text.changed=20110317061957
+FreeformFinSetCfg.lbl.Numberoffins..text.md5=+3QcyIkz9lnt+0f8dlP/ew\=\=
+FreeformFinSetCfg.lbl.Numberoffins.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.Numberoffins.es.text.md5=HGKq4/3A+oOKV7b9MdHIKQ\=\=
+FreeformFinSetCfg.lbl.Numberoffins.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.Numberoffins.fr.text.md5=6KbxfYrq87kta+KweGSOAg\=\=
+FreeformFinSetCfg.lbl.Posrelativeto..text.changed=20110317061957
+FreeformFinSetCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+FreeformFinSetCfg.lbl.Posrelativeto.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+FreeformFinSetCfg.lbl.Posrelativeto.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.Posrelativeto.fr.text.md5=1w5yIy+KSayEeAvmlRZAZA\=\=
+FreeformFinSetCfg.lbl.Thickness..text.changed=20110317061957
+FreeformFinSetCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\=
+FreeformFinSetCfg.lbl.Thickness.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\=
+FreeformFinSetCfg.lbl.Thickness.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\=
+FreeformFinSetCfg.lbl.plus..text.changed=20110317061957
+FreeformFinSetCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+FreeformFinSetCfg.lbl.plus.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+FreeformFinSetCfg.lbl.plus.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+FreeformFinSetCfg.lbl.ttip.Fincant..text.changed=20110317061957
+FreeformFinSetCfg.lbl.ttip.Fincant..text.md5=kjjf+CiniAfww5LqDIYfBg\=\=
+FreeformFinSetCfg.lbl.ttip.Fincant.es.text.changed=20110317062041
+FreeformFinSetCfg.lbl.ttip.Fincant.es.text.md5=DOJYGJLZgzSX1PSKEJrTSQ\=\=
+FreeformFinSetCfg.lbl.ttip.Fincant.fr.text.changed=20110317061957
+FreeformFinSetCfg.lbl.ttip.Fincant.fr.text.md5=Nawn6M4s6SJ7fbNyRweQYg\=\=
+FreeformFinSetCfg.tab.General..text.changed=20110317061957
+FreeformFinSetCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+FreeformFinSetCfg.tab.General.es.text.changed=20110317062041
+FreeformFinSetCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+FreeformFinSetCfg.tab.General.fr.text.changed=20110317061957
+FreeformFinSetCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+FreeformFinSetCfg.tab.Shape..text.changed=20110317061957
+FreeformFinSetCfg.tab.Shape..text.md5=iAwSc7J9J8/IIATDpLIFyQ\=\=
+FreeformFinSetCfg.tab.Shape.es.text.changed=20110317062041
+FreeformFinSetCfg.tab.Shape.es.text.md5=kMcVpcBb35XsckVC3XEPww\=\=
+FreeformFinSetCfg.tab.Shape.fr.text.changed=20110317061957
+FreeformFinSetCfg.tab.Shape.fr.text.md5=l+oBS+ZhaCaQKoOlyApR8w\=\=
+FreeformFinSetCfg.tab.ttip.Finshape..text.changed=20110317061957
+FreeformFinSetCfg.tab.ttip.Finshape..text.md5=9R7PBkQKQILJ6sxge/sKeQ\=\=
+FreeformFinSetCfg.tab.ttip.Finshape.es.text.changed=20110317062041
+FreeformFinSetCfg.tab.ttip.Finshape.es.text.md5=cS/kwa/KomUsL2/su+7D8Q\=\=
+FreeformFinSetCfg.tab.ttip.Finshape.fr.text.changed=20110317061957
+FreeformFinSetCfg.tab.ttip.Finshape.fr.text.md5=Od5MKB1Apo6g25Qy+dokww\=\=
+FreeformFinSetCfg.tab.ttip.General..text.changed=20110317061957
+FreeformFinSetCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+FreeformFinSetCfg.tab.ttip.General.es.text.changed=20110317062041
+FreeformFinSetCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+FreeformFinSetCfg.tab.ttip.General.fr.text.changed=20110317061957
+FreeformFinSetCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+InnerTube.InnerTube..text.changed=20110317061957
+InnerTube.InnerTube..text.md5=lcuJhF96kZZwQwOoQuEVsw\=\=
+InnerTube.InnerTube.es.text.changed=20110317062041
+InnerTube.InnerTube.es.text.md5=lcuJhF96kZZwQwOoQuEVsw\=\=
+InnerTube.InnerTube.fr.text.changed=20110317061957
+InnerTube.InnerTube.fr.text.md5=Qi8ZJArDrWFHkJPWtc56Nw\=\=
+InnerTubeCfg.but.Resetsettings..text.changed=20110317061957
+InnerTubeCfg.but.Resetsettings..text.md5=2Vk0a/eEuc2PR/2QyAPrsg\=\=
+InnerTubeCfg.but.Resetsettings.es.text.changed=20110317062041
+InnerTubeCfg.but.Resetsettings.es.text.md5=q20FQE8hu79sf0I/gbTHVQ\=\=
+InnerTubeCfg.but.Resetsettings.fr.text.changed=20110317061957
+InnerTubeCfg.but.Resetsettings.fr.text.md5=w9dFqXPF9pe2ypfjeL/4Yw\=\=
+InnerTubeCfg.but.Splitcluster..text.changed=20110317061957
+InnerTubeCfg.but.Splitcluster..text.md5=cCyIkneAAIQGQMsrxMIhTg\=\=
+InnerTubeCfg.but.Splitcluster.es.text.changed=20110317062041
+InnerTubeCfg.but.Splitcluster.es.text.md5=cCyIkneAAIQGQMsrxMIhTg\=\=
+InnerTubeCfg.but.Splitcluster.fr.text.changed=20110317061957
+InnerTubeCfg.but.Splitcluster.fr.text.md5=PiqegQ+dMN8X6VOBVRxTSQ\=\=
+InnerTubeCfg.but.ttip.Resetsettings..text.changed=20110317061957
+InnerTubeCfg.but.ttip.Resetsettings..text.md5=h2AX0TQh9bsTHrP3HQ7UHg\=\=
+InnerTubeCfg.but.ttip.Resetsettings.es.text.changed=20110317062041
+InnerTubeCfg.but.ttip.Resetsettings.es.text.md5=AB41oc5vPgpgHJu/OgFoFA\=\=
+InnerTubeCfg.but.ttip.Resetsettings.fr.text.changed=20110317061957
+InnerTubeCfg.but.ttip.Resetsettings.fr.text.md5=fbKV8IV33cXnkWCuoNxoJw\=\=
+InnerTubeCfg.lbl.Rotangle..text.changed=20110317061957
+InnerTubeCfg.lbl.Rotangle..text.md5=v7dn2BnGC1FS7KId/ykJJQ\=\=
+InnerTubeCfg.lbl.Rotangle.es.text.changed=20110317062041
+InnerTubeCfg.lbl.Rotangle.es.text.md5=4NqgbDHefesAPErfakm3qQ\=\=
+InnerTubeCfg.lbl.Rotangle.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.Rotangle.fr.text.md5=p23hZb84PjJmI5NigfYdgQ\=\=
+InnerTubeCfg.lbl.Rotation..text.changed=20110317061957
+InnerTubeCfg.lbl.Rotation..text.md5=3c8yyFAJWJ8PKri4QWkygw\=\=
+InnerTubeCfg.lbl.Rotation.es.text.changed=20110317062041
+InnerTubeCfg.lbl.Rotation.es.text.md5=DI60aemtFRUMr07YuYGOvA\=\=
+InnerTubeCfg.lbl.Rotation.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.Rotation.fr.text.md5=3c8yyFAJWJ8PKri4QWkygw\=\=
+InnerTubeCfg.lbl.Selectclustercfg..text.changed=20110317061957
+InnerTubeCfg.lbl.Selectclustercfg..text.md5=PtoOr3FCyX3sMKqYegxWZQ\=\=
+InnerTubeCfg.lbl.Selectclustercfg.es.text.changed=20110317062041
+InnerTubeCfg.lbl.Selectclustercfg.es.text.md5=oBd8tccxn1hd6rgXai2DzQ\=\=
+InnerTubeCfg.lbl.Selectclustercfg.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.Selectclustercfg.fr.text.md5=iaiZPUDrQFEdM5OG4GjMpg\=\=
+InnerTubeCfg.lbl.TubeSep..text.changed=20110317061957
+InnerTubeCfg.lbl.TubeSep..text.md5=nPY9Or7ECc6oRdQgF0WuGw\=\=
+InnerTubeCfg.lbl.TubeSep.es.text.changed=20110317062041
+InnerTubeCfg.lbl.TubeSep.es.text.md5=SLQcQQK4PgnRQjEKcyyOCQ\=\=
+InnerTubeCfg.lbl.TubeSep.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.TubeSep.fr.text.md5=X8sMd3ipRxf8SpB2KAWq+w\=\=
+InnerTubeCfg.lbl.longA1..text.changed=20110317061957
+InnerTubeCfg.lbl.longA1..text.md5=AwKvOMAj4pBryFY1MbirYQ\=\=
+InnerTubeCfg.lbl.longA1.es.text.changed=20110317062041
+InnerTubeCfg.lbl.longA1.es.text.md5=c234txset5ibfs74g1AoHg\=\=
+InnerTubeCfg.lbl.longA1.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.longA1.fr.text.md5=w0ToSJMkazOwvhB+NXoM+A\=\=
+InnerTubeCfg.lbl.longA2..text.changed=20110317061957
+InnerTubeCfg.lbl.longA2..text.md5=ht2sOwaffJvB/bVWI2T8Rw\=\=
+InnerTubeCfg.lbl.longA2.es.text.changed=20110317062041
+InnerTubeCfg.lbl.longA2.es.text.md5=qfHNNBdP8x21u0WAdREPsg\=\=
+InnerTubeCfg.lbl.longA2.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.longA2.fr.text.md5=AKynoSv0vObD2j1//v+gKg\=\=
+InnerTubeCfg.lbl.ttip.Rotation..text.changed=20110317061957
+InnerTubeCfg.lbl.ttip.Rotation..text.md5=v7dn2BnGC1FS7KId/ykJJQ\=\=
+InnerTubeCfg.lbl.ttip.Rotation.es.text.changed=20110317062041
+InnerTubeCfg.lbl.ttip.Rotation.es.text.md5=xfbulqDKSBDFBtzIyyaUag\=\=
+InnerTubeCfg.lbl.ttip.Rotation.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.ttip.Rotation.fr.text.md5=ZOq5wp6T2q3AbfYTqYlt3w\=\=
+InnerTubeCfg.lbl.ttip.TubeSep..text.changed=20110317061957
+InnerTubeCfg.lbl.ttip.TubeSep..text.md5=7wJemgkMJThv1PjT6XBiiQ\=\=
+InnerTubeCfg.lbl.ttip.TubeSep.es.text.changed=20110317062041
+InnerTubeCfg.lbl.ttip.TubeSep.es.text.md5=cnmXbH+0GjQpawb1rFjv5w\=\=
+InnerTubeCfg.lbl.ttip.TubeSep.fr.text.changed=20110317061957
+InnerTubeCfg.lbl.ttip.TubeSep.fr.text.md5=qd7e6gLP2xSNNCVZLreQgA\=\=
+InnerTubeCfg.tab.Cluster..text.changed=20110317061957
+InnerTubeCfg.tab.Cluster..text.md5=JJaUpIX8XTKJw4mGtPjohw\=\=
+InnerTubeCfg.tab.Cluster.es.text.changed=20110317062041
+InnerTubeCfg.tab.Cluster.es.text.md5=JJaUpIX8XTKJw4mGtPjohw\=\=
+InnerTubeCfg.tab.Cluster.fr.text.changed=20110317061957
+InnerTubeCfg.tab.Cluster.fr.text.md5=JJaUpIX8XTKJw4mGtPjohw\=\=
+InnerTubeCfg.tab.Motor..text.changed=20110317061957
+InnerTubeCfg.tab.Motor..text.md5=szU4F59WYahsvjJ6F5PhmQ\=\=
+InnerTubeCfg.tab.Motor.es.text.changed=20110317062041
+InnerTubeCfg.tab.Motor.es.text.md5=szU4F59WYahsvjJ6F5PhmQ\=\=
+InnerTubeCfg.tab.Motor.fr.text.changed=20110317061957
+InnerTubeCfg.tab.Motor.fr.text.md5=6tmnS1jbv8qzuuKxMMKUVg\=\=
+InnerTubeCfg.tab.Radialpos..text.changed=20110317061957
+InnerTubeCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\=
+InnerTubeCfg.tab.Radialpos.es.text.changed=20110317062041
+InnerTubeCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\=
+InnerTubeCfg.tab.Radialpos.fr.text.changed=20110317061957
+InnerTubeCfg.tab.Radialpos.fr.text.md5=R4sAVeAnUFYd9BWRlvpBgA\=\=
+InnerTubeCfg.tab.ttip.Cluster..text.changed=20110317061957
+InnerTubeCfg.tab.ttip.Cluster..text.md5=H4MPUAUHAwF5JyIC6pbyqw\=\=
+InnerTubeCfg.tab.ttip.Cluster.es.text.changed=20110317062041
+InnerTubeCfg.tab.ttip.Cluster.es.text.md5=1r2hcNwl7/8T7RdBb9/IWQ\=\=
+InnerTubeCfg.tab.ttip.Cluster.fr.text.changed=20110317061957
+InnerTubeCfg.tab.ttip.Cluster.fr.text.md5=aT6RQ38LzRQmUYc2RyDQWA\=\=
+InnerTubeCfg.tab.ttip.Motor..text.changed=20110317061957
+InnerTubeCfg.tab.ttip.Motor..text.md5=L/dvnGSxOORZkwDDBqSWfQ\=\=
+InnerTubeCfg.tab.ttip.Motor.es.text.changed=20110317062041
+InnerTubeCfg.tab.ttip.Motor.es.text.md5=C7fYL8sg0eTIrtoaGQZXMg\=\=
+InnerTubeCfg.tab.ttip.Motor.fr.text.changed=20110317061957
+InnerTubeCfg.tab.ttip.Motor.fr.text.md5=0rdjCBFffGtXxO9eqBWkyA\=\=
+InnerTubeCfg.tab.ttip.Radialpos..text.changed=20110317061957
+InnerTubeCfg.tab.ttip.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\=
+InnerTubeCfg.tab.ttip.Radialpos.es.text.changed=20110317062041
+InnerTubeCfg.tab.ttip.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\=
+InnerTubeCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957
+InnerTubeCfg.tab.ttip.Radialpos.fr.text.md5=R4sAVeAnUFYd9BWRlvpBgA\=\=
+LaunchLug.Launchlug..text.changed=20110317061957
+LaunchLug.Launchlug..text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\=
+LaunchLug.Launchlug.es.text.changed=20110317062041
+LaunchLug.Launchlug.es.text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\=
+LaunchLug.Launchlug.fr.text.changed=20110317061957
+LaunchLug.Launchlug.fr.text.md5=DgeT4LMq8b7kJjfvIjiklw\=\=
+LaunchLugCfg.lbl.Innerdiam..text.changed=20110317061957
+LaunchLugCfg.lbl.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\=
+LaunchLugCfg.lbl.Innerdiam.es.text.changed=20110317062041
+LaunchLugCfg.lbl.Innerdiam.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\=
+LaunchLugCfg.lbl.Innerdiam.fr.text.changed=20110317061957
+LaunchLugCfg.lbl.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\=
+LaunchLugCfg.lbl.Length..text.changed=20110317061957
+LaunchLugCfg.lbl.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\=
+LaunchLugCfg.lbl.Length.es.text.changed=20110317062041
+LaunchLugCfg.lbl.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\=
+LaunchLugCfg.lbl.Length.fr.text.changed=20110317061957
+LaunchLugCfg.lbl.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\=
+LaunchLugCfg.lbl.Outerdiam..text.changed=20110317061957
+LaunchLugCfg.lbl.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\=
+LaunchLugCfg.lbl.Outerdiam.es.text.changed=20110317062041
+LaunchLugCfg.lbl.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\=
+LaunchLugCfg.lbl.Outerdiam.fr.text.changed=20110317061957
+LaunchLugCfg.lbl.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\=
+LaunchLugCfg.lbl.Posrelativeto..text.changed=20110317061957
+LaunchLugCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+LaunchLugCfg.lbl.Posrelativeto.es.text.changed=20110317062041
+LaunchLugCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+LaunchLugCfg.lbl.Posrelativeto.fr.text.changed=20110317061957
+LaunchLugCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+LaunchLugCfg.lbl.Radialpos..text.changed=20110317061957
+LaunchLugCfg.lbl.Radialpos..text.md5=ShYs1UEtrVIt+k+S3g0XpA\=\=
+LaunchLugCfg.lbl.Radialpos.es.text.changed=20110317062041
+LaunchLugCfg.lbl.Radialpos.es.text.md5=7FAd3Gn//rSVmfihz/BxEg\=\=
+LaunchLugCfg.lbl.Radialpos.fr.text.changed=20110317061957
+LaunchLugCfg.lbl.Radialpos.fr.text.md5=p3Rq8yqAKDHR9sl5IVGgCw\=\=
+LaunchLugCfg.lbl.Thickness..text.changed=20110317061957
+LaunchLugCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\=
+LaunchLugCfg.lbl.Thickness.es.text.changed=20110317062041
+LaunchLugCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\=
+LaunchLugCfg.lbl.Thickness.fr.text.changed=20110317061957
+LaunchLugCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\=
+LaunchLugCfg.lbl.plus..text.changed=20110317061957
+LaunchLugCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+LaunchLugCfg.lbl.plus.es.text.changed=20110317062041
+LaunchLugCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+LaunchLugCfg.lbl.plus.fr.text.changed=20110317061957
+LaunchLugCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+LaunchLugCfg.tab.General..text.changed=20110317061957
+LaunchLugCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+LaunchLugCfg.tab.General.es.text.changed=20110317062041
+LaunchLugCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+LaunchLugCfg.tab.General.fr.text.changed=20110317061957
+LaunchLugCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+LaunchLugCfg.tab.Generalprop..text.changed=20110317061957
+LaunchLugCfg.tab.Generalprop..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+LaunchLugCfg.tab.Generalprop.es.text.changed=20110317062041
+LaunchLugCfg.tab.Generalprop.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+LaunchLugCfg.tab.Generalprop.fr.text.changed=20110317061957
+LaunchLugCfg.tab.Generalprop.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\=
+LineStyle.Dash-dotted..text.changed=20110317061957
+LineStyle.Dash-dotted..text.md5=/mJgC43JaIDFreZfUr/6ew\=\=
+LineStyle.Dash-dotted.es.text.changed=20110317062041
+LineStyle.Dash-dotted.es.text.md5=/mJgC43JaIDFreZfUr/6ew\=\=
+LineStyle.Dash-dotted.fr.text.changed=20110317061957
+LineStyle.Dash-dotted.fr.text.md5=nnL0mty6Qvucy1TVaD6wuw\=\=
+LineStyle.Dashed..text.changed=20110317061957
+LineStyle.Dashed..text.md5=62VuQbbakUlHdez0elHakQ\=\=
+LineStyle.Dashed.es.text.changed=20110317062041
+LineStyle.Dashed.es.text.md5=62VuQbbakUlHdez0elHakQ\=\=
+LineStyle.Dashed.fr.text.changed=20110317061957
+LineStyle.Dashed.fr.text.md5=vNgqrQ3y5mLqMa9QtHx0Vw\=\=
+LineStyle.Defaultstyle..text.changed=20110317061957
+LineStyle.Defaultstyle..text.md5=oNd1JclV7p8KRaNjr6HmpA\=\=
+LineStyle.Defaultstyle.es.text.changed=20110317062041
+LineStyle.Defaultstyle.es.text.md5=oNd1JclV7p8KRaNjr6HmpA\=\=
+LineStyle.Defaultstyle.fr.text.changed=20110317061957
+LineStyle.Defaultstyle.fr.text.md5=RzD8icSGHRkLoJzbAz+JlQ\=\=
+LineStyle.Dotted..text.changed=20110317061957
+LineStyle.Dotted..text.md5=kMCTk6TAlwvJpnA61Sd4HA\=\=
+LineStyle.Dotted.es.text.changed=20110317062041
+LineStyle.Dotted.es.text.md5=kMCTk6TAlwvJpnA61Sd4HA\=\=
+LineStyle.Dotted.fr.text.changed=20110317061957
+LineStyle.Dotted.fr.text.md5=MvfaWVMs0U1Gu5/Dl2OgDg\=\=
+LineStyle.Solid..text.changed=20110317061957
+LineStyle.Solid..text.md5=5BSAtrv790B5dKiNPTT0+g\=\=
+LineStyle.Solid.es.text.changed=20110317062041
+LineStyle.Solid.es.text.md5=5BSAtrv790B5dKiNPTT0+g\=\=
+LineStyle.Solid.fr.text.changed=20110317061957
+LineStyle.Solid.fr.text.md5=GFqE1fa09dDJXYPCQG32mw\=\=
+MassComponent.MassComponent..text.changed=20110317061957
+MassComponent.MassComponent..text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\=
+MassComponent.MassComponent.es.text.changed=20110317062041
+MassComponent.MassComponent.es.text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\=
+MassComponent.MassComponent.fr.text.changed=20110317061957
+MassComponent.MassComponent.fr.text.md5=rpDyHcEdivKA4mJs1RiqZw\=\=
+MassComponentCfg.but.Reset..text.changed=20110317061957
+MassComponentCfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\=
+MassComponentCfg.but.Reset.es.text.changed=20110317062041
+MassComponentCfg.but.Reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\=
+MassComponentCfg.but.Reset.fr.text.changed=20110317061957
+MassComponentCfg.but.Reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\=
+MassComponentCfg.lbl.Diameter..text.changed=20110317061957
+MassComponentCfg.lbl.Diameter..text.md5=tfaUSIMmB2/yAMerlVwEVQ\=\=
+MassComponentCfg.lbl.Diameter.es.text.changed=20110317062041
+MassComponentCfg.lbl.Diameter.es.text.md5=JKoUOQaoV2oCYTu/8xBvYQ\=\=
+MassComponentCfg.lbl.Diameter.fr.text.changed=20110317061957
+MassComponentCfg.lbl.Diameter.fr.text.md5=WCZj8bfE/hVJfiLJCQp5UQ\=\=
+MassComponentCfg.lbl.Length..text.changed=20110317061957
+MassComponentCfg.lbl.Length..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\=
+MassComponentCfg.lbl.Length.es.text.changed=20110317062041
+MassComponentCfg.lbl.Length.es.text.md5=yRJSkybsSvz2fjoLePStOQ\=\=
+MassComponentCfg.lbl.Length.fr.text.changed=20110317061957
+MassComponentCfg.lbl.Length.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\=
+MassComponentCfg.lbl.Mass..text.changed=20110317061957
+MassComponentCfg.lbl.Mass..text.md5=/yhk1vZS7grCVIFPGuT0qA\=\=
+MassComponentCfg.lbl.Mass.es.text.changed=20110317062041
+MassComponentCfg.lbl.Mass.es.text.md5=lcUx2HA+HSB6nsyzSYuDGw\=\=
+MassComponentCfg.lbl.Mass.fr.text.changed=20110317061957
+MassComponentCfg.lbl.Mass.fr.text.md5=j5tnyROd4YPhARw9oEf1ow\=\=
+MassComponentCfg.lbl.PosRelativeto..text.changed=20110317061957
+MassComponentCfg.lbl.PosRelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+MassComponentCfg.lbl.PosRelativeto.es.text.changed=20110317062041
+MassComponentCfg.lbl.PosRelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+MassComponentCfg.lbl.PosRelativeto.fr.text.changed=20110317061957
+MassComponentCfg.lbl.PosRelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+MassComponentCfg.lbl.Radialdirection..text.changed=20110317061957
+MassComponentCfg.lbl.Radialdirection..text.md5=i1kLjBiCCrq0JyXJbJJWLQ\=\=
+MassComponentCfg.lbl.Radialdirection.es.text.changed=20110317062041
+MassComponentCfg.lbl.Radialdirection.es.text.md5=8+Pa5rnto1tOMcLkMe+SVQ\=\=
+MassComponentCfg.lbl.Radialdirection.fr.text.changed=20110317061957
+MassComponentCfg.lbl.Radialdirection.fr.text.md5=t1/lCCHD0C++YMqbld91CQ\=\=
+MassComponentCfg.lbl.Radialdistance..text.changed=20110317061957
+MassComponentCfg.lbl.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\=
+MassComponentCfg.lbl.Radialdistance.es.text.changed=20110317062041
+MassComponentCfg.lbl.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\=
+MassComponentCfg.lbl.Radialdistance.fr.text.changed=20110317061957
+MassComponentCfg.lbl.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\=
+MassComponentCfg.lbl.plus..text.changed=20110317061957
+MassComponentCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+MassComponentCfg.lbl.plus.es.text.changed=20110317062041
+MassComponentCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+MassComponentCfg.lbl.plus.fr.text.changed=20110317061957
+MassComponentCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+MassComponentCfg.tab.General..text.changed=20110317061957
+MassComponentCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+MassComponentCfg.tab.General.es.text.changed=20110317062041
+MassComponentCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+MassComponentCfg.tab.General.fr.text.changed=20110317061957
+MassComponentCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+MassComponentCfg.tab.Radialpos..text.changed=20110317061957
+MassComponentCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\=
+MassComponentCfg.tab.Radialpos.es.text.changed=20110317062041
+MassComponentCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\=
+MassComponentCfg.tab.Radialpos.fr.text.changed=20110317061957
+MassComponentCfg.tab.Radialpos.fr.text.md5=rX8euW6QQ2ZOgQivvVMsOg\=\=
+MassComponentCfg.tab.ttip.General..text.changed=20110317061957
+MassComponentCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+MassComponentCfg.tab.ttip.General.es.text.changed=20110317062041
+MassComponentCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+MassComponentCfg.tab.ttip.General.fr.text.changed=20110317061957
+MassComponentCfg.tab.ttip.General.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\=
+MassComponentCfg.tab.ttip.Radialpos..text.changed=20110317061957
+MassComponentCfg.tab.ttip.Radialpos..text.md5=VWjNybFzuNElITpmCwHoJA\=\=
+MassComponentCfg.tab.ttip.Radialpos.es.text.changed=20110317062041
+MassComponentCfg.tab.ttip.Radialpos.es.text.md5=bKv0q9SafUyC4RoSTTQTcA\=\=
+MassComponentCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957
+MassComponentCfg.tab.ttip.Radialpos.fr.text.md5=5z3CTUaVO25LBXPH1X1pBA\=\=
+MaterialModel.title.Defcustmat..text.changed=20110317061957
+MaterialModel.title.Defcustmat..text.md5=DsF/XyqAGMuxNYZOy4Eq9w\=\=
+MaterialModel.title.Defcustmat.es.text.changed=20110317062041
+MaterialModel.title.Defcustmat.es.text.md5=3c+5/z8wCE3NJoTvbGu5nw\=\=
+MaterialModel.title.Defcustmat.fr.text.changed=20110317061957
+MaterialModel.title.Defcustmat.fr.text.md5=E4HNbA4tObKuBIlRrtHKxw\=\=
+MaterialModel.title.Material..text.changed=20110317061957
+MaterialModel.title.Material..text.md5=2SqDM908y4lcxl90VbcSBg\=\=
+MaterialModel.title.Material.es.text.changed=20110317062041
+MaterialModel.title.Material.es.text.md5=c5vIrsXIPululh8NaPcmBA\=\=
+MaterialModel.title.Material.fr.text.changed=20110317061957
+MaterialModel.title.Material.fr.text.md5=5xneFXVURAxk+N0S3+q8lQ\=\=
+MotorCfg.but.New..text.changed=20110317061957
+MotorCfg.but.New..text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\=
+MotorCfg.but.New.es.text.changed=20110317062041
+MotorCfg.but.New.es.text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\=
+MotorCfg.but.New.fr.text.changed=20110317061957
+MotorCfg.but.New.fr.text.md5=nqF7EPUGuIH+2QaqsKUPjQ\=\=
+MotorCfg.but.Removemotor..text.changed=20110317061957
+MotorCfg.but.Removemotor..text.md5=4fhAF2YvYgl3IKDn1Qvejw\=\=
+MotorCfg.but.Removemotor.es.text.changed=20110317062041
+MotorCfg.but.Removemotor.es.text.md5=zQGZezis32VJLq+UmvSHqg\=\=
+MotorCfg.but.Removemotor.fr.text.changed=20110317061957
+MotorCfg.but.Removemotor.fr.text.md5=FXMdRrCctyMK6Wsu2Nl2Yw\=\=
+MotorCfg.but.Selectmotor..text.changed=20110317061957
+MotorCfg.but.Selectmotor..text.md5=Po8U1JYUSxjeO5nuLOFoyA\=\=
+MotorCfg.but.Selectmotor.es.text.changed=20110317062041
+MotorCfg.but.Selectmotor.es.text.md5=dHaSFZUHzaZQqRR4BrKmVQ\=\=
+MotorCfg.but.Selectmotor.fr.text.changed=20110317061957
+MotorCfg.but.Selectmotor.fr.text.md5=eg8M2LVUXgmWWlkHvR9t/A\=\=
+MotorCfg.checkbox.compmotormount..text.changed=20110317061957
+MotorCfg.checkbox.compmotormount..text.md5=z68lFtoFqh0HYOq2NSZzBg\=\=
+MotorCfg.checkbox.compmotormount.es.text.changed=20110317062041
+MotorCfg.checkbox.compmotormount.es.text.md5=Dp9m+QdDh7n6H7uvO8pqZQ\=\=
+MotorCfg.checkbox.compmotormount.fr.text.changed=20110317061957
+MotorCfg.checkbox.compmotormount.fr.text.md5=jfYWQyhQzq8UyfI6FEL9vQ\=\=
+MotorCfg.lbl.Currentmotor..text.changed=20110317061957
+MotorCfg.lbl.Currentmotor..text.md5=OugwhE2G7FmvDOKEPxGkjA\=\=
+MotorCfg.lbl.Currentmotor.es.text.changed=20110317062041
+MotorCfg.lbl.Currentmotor.es.text.md5=OARdgoYZQCFWv0v6L4qyyg\=\=
+MotorCfg.lbl.Currentmotor.fr.text.changed=20110317061957
+MotorCfg.lbl.Currentmotor.fr.text.md5=m7FjBkJi7OJ2p5FT875qvQ\=\=
+MotorCfg.lbl.Ignitionat..text.changed=20110317061957
+MotorCfg.lbl.Ignitionat..text.md5=UU7HDL+/rS5Af+zEU3cfHQ\=\=
+MotorCfg.lbl.Ignitionat.es.text.changed=20110317062041
+MotorCfg.lbl.Ignitionat.es.text.md5=UzFng+eN/T23y+V3GzvxAQ\=\=
+MotorCfg.lbl.Ignitionat.fr.text.changed=20110317061957
+MotorCfg.lbl.Ignitionat.fr.text.md5=G8yIX/UpUN3z5qdF/JdZrg\=\=
+MotorCfg.lbl.Motorcfg..text.changed=20110317061957
+MotorCfg.lbl.Motorcfg..text.md5=hUqBQQLOQuV2isn4DoTERA\=\=
+MotorCfg.lbl.Motorcfg.es.text.changed=20110317062041
+MotorCfg.lbl.Motorcfg.es.text.md5=LKwpTWlKtZl2ttOxTzBp9Q\=\=
+MotorCfg.lbl.Motorcfg.fr.text.changed=20110317061957
+MotorCfg.lbl.Motorcfg.fr.text.md5=guo2XStPjncz4V70HFfwvw\=\=
+MotorCfg.lbl.Motoroverhang..text.changed=20110317061957
+MotorCfg.lbl.Motoroverhang..text.md5=P4lwHNLlwrcoRkWU68yjXA\=\=
+MotorCfg.lbl.Motoroverhang.es.text.changed=20110317062041
+MotorCfg.lbl.Motoroverhang.es.text.md5=XCzHeR2RS+QXbYDf5MHd7Q\=\=
+MotorCfg.lbl.Motoroverhang.fr.text.changed=20110317061957
+MotorCfg.lbl.Motoroverhang.fr.text.md5=jaMaWC6uSO7pgvNMIulYKg\=\=
+MotorCfg.lbl.longA1..text.changed=20110317061957
+MotorCfg.lbl.longA1..text.md5=1BFQy4JWtonBXlWuHkX7Iw\=\=
+MotorCfg.lbl.longA1.es.text.changed=20110317062041
+MotorCfg.lbl.longA1.es.text.md5=OEbXgO6l6zX3j+ji5jYJ5Q\=\=
+MotorCfg.lbl.longA1.fr.text.changed=20110317061957
+MotorCfg.lbl.longA1.fr.text.md5=n8W8aC5NAwSJAoKPdn7fUw\=\=
+MotorCfg.lbl.longA2..text.changed=20110317061957
+MotorCfg.lbl.longA2..text.md5=FJRo6AMhHU7N+5++5SxYzA\=\=
+MotorCfg.lbl.longA2.es.text.changed=20110317062041
+MotorCfg.lbl.longA2.es.text.md5=59zrEpowzIShdhNN8QzCAA\=\=
+MotorCfg.lbl.longA2.fr.text.changed=20110317061957
+MotorCfg.lbl.longA2.fr.text.md5=/qZBqseguFXfyb6nXNAjOw\=\=
+MotorCfg.lbl.longB1..text.changed=20110317061957
+MotorCfg.lbl.longB1..text.md5=wOouDZI247rHQy7yXC6vmQ\=\=
+MotorCfg.lbl.longB1.es.text.changed=20110317062041
+MotorCfg.lbl.longB1.es.text.md5=ZD6uBEvE4MfsgAszq3xe2w\=\=
+MotorCfg.lbl.longB1.fr.text.changed=20110317061957
+MotorCfg.lbl.longB1.fr.text.md5=LbUZCxHPKyDBHVs1okmU8g\=\=
+MotorCfg.lbl.longB2..text.changed=20110317061957
+MotorCfg.lbl.longB2..text.md5=lxCjQJlAYJmy6ST+vuVcaw\=\=
+MotorCfg.lbl.longB2.es.text.changed=20110317062041
+MotorCfg.lbl.longB2.es.text.md5=aXw8zTBeUYd2zckHaZ9FkA\=\=
+MotorCfg.lbl.longB2.fr.text.changed=20110317061957
+MotorCfg.lbl.longB2.fr.text.md5=h5LXgBK7Tf51y/N9L0j/jg\=\=
+MotorCfg.lbl.motorLabel..text.changed=20110317061957
+MotorCfg.lbl.motorLabel..text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+MotorCfg.lbl.motorLabel.es.text.changed=20110317062041
+MotorCfg.lbl.motorLabel.es.text.md5=Nf5kEOlwQ4ZBbP354K6mnQ\=\=
+MotorCfg.lbl.motorLabel.fr.text.changed=20110317061957
+MotorCfg.lbl.motorLabel.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\=
+MotorCfg.lbl.plus..text.changed=20110317061957
+MotorCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+MotorCfg.lbl.plus.es.text.changed=20110317062041
+MotorCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+MotorCfg.lbl.plus.fr.text.changed=20110317061957
+MotorCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+MotorCfg.lbl.seconds..text.changed=20110317061957
+MotorCfg.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\=
+MotorCfg.lbl.seconds.es.text.changed=20110317062041
+MotorCfg.lbl.seconds.es.text.md5=UxqeEPFTlrCXqhUT1Oib0A\=\=
+MotorCfg.lbl.seconds.fr.text.changed=20110317061957
+MotorCfg.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\=
+MotorCfgModel.Editcfg..text.changed=20110317061957
+MotorCfgModel.Editcfg..text.md5=2olBJajJcdcRELJevr94SA\=\=
+MotorCfgModel.Editcfg.es.text.changed=20110317062041
+MotorCfgModel.Editcfg.es.text.md5=LenqEQLa8PGRs5UCXo/uRw\=\=
+MotorCfgModel.Editcfg.fr.text.changed=20110317061957
+MotorCfgModel.Editcfg.fr.text.md5=HRvhcZdse64L3maBUx7EZg\=\=
+MotorDbLoadDlg.Loadingmotors..text.changed=20110317061957
+MotorDbLoadDlg.Loadingmotors..text.md5=iW8rTZJaifdBKpXRqosuvg\=\=
+MotorDbLoadDlg.Loadingmotors.es.text.changed=20110317062041
+MotorDbLoadDlg.Loadingmotors.es.text.md5=UcFl3r5S83GyEPccoiK91w\=\=
+MotorDbLoadDlg.Loadingmotors.fr.text.changed=20110317061957
+MotorDbLoadDlg.Loadingmotors.fr.text.md5=kV1OcySzdI75tywabB2dDw\=\=
+MotorDbLoadDlg.title..text.changed=20110317061957
+MotorDbLoadDlg.title..text.md5=oPoFmXokWI2/Ud2vsXzzgg\=\=
+MotorDbLoadDlg.title.es.text.changed=20110317062041
+MotorDbLoadDlg.title.es.text.md5=mH4dA0q5ffCg/vB9hL2G0A\=\=
+MotorDbLoadDlg.title.fr.text.changed=20110317061957
+MotorDbLoadDlg.title.fr.text.md5=CmwARtiDv+zwMifB9OAbJA\=\=
+MotorMount.IgnitionEvent.AUTOMATIC..text.changed=20110317061957
+MotorMount.IgnitionEvent.AUTOMATIC..text.md5=eXLMY2iWfXzauNJN9GzrcQ\=\=
+MotorMount.IgnitionEvent.AUTOMATIC.es.text.changed=20110317062041
+MotorMount.IgnitionEvent.AUTOMATIC.es.text.md5=eXLMY2iWfXzauNJN9GzrcQ\=\=
+MotorMount.IgnitionEvent.AUTOMATIC.fr.text.changed=20110317061957
+MotorMount.IgnitionEvent.AUTOMATIC.fr.text.md5=p2Jhw3EnwVmAiAC+v55A8g\=\=
+MotorMount.IgnitionEvent.BURNOUT..text.changed=20110317061957
+MotorMount.IgnitionEvent.BURNOUT..text.md5=AZFvaAg4Oxw7NylNQqJiIQ\=\=
+MotorMount.IgnitionEvent.BURNOUT.es.text.changed=20110317062041
+MotorMount.IgnitionEvent.BURNOUT.es.text.md5=AZFvaAg4Oxw7NylNQqJiIQ\=\=
+MotorMount.IgnitionEvent.BURNOUT.fr.text.changed=20110317061957
+MotorMount.IgnitionEvent.BURNOUT.fr.text.md5=AZFvaAg4Oxw7NylNQqJiIQ\=\=
+MotorMount.IgnitionEvent.EJECTION_CHARGE..text.changed=20110317061957
+MotorMount.IgnitionEvent.EJECTION_CHARGE..text.md5=Uh/aD3z+iJFA2opleUANQg\=\=
+MotorMount.IgnitionEvent.EJECTION_CHARGE.es.text.changed=20110317062041
+MotorMount.IgnitionEvent.EJECTION_CHARGE.es.text.md5=Uh/aD3z+iJFA2opleUANQg\=\=
+MotorMount.IgnitionEvent.EJECTION_CHARGE.fr.text.changed=20110317061957
+MotorMount.IgnitionEvent.EJECTION_CHARGE.fr.text.md5=5Zw/8F1d6gHnu8t72Xw6Eg\=\=
+MotorMount.IgnitionEvent.LAUNCH..text.changed=20110317061957
+MotorMount.IgnitionEvent.LAUNCH..text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\=
+MotorMount.IgnitionEvent.LAUNCH.es.text.changed=20110317062041
+MotorMount.IgnitionEvent.LAUNCH.es.text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\=
+MotorMount.IgnitionEvent.LAUNCH.fr.text.changed=20110317061957
+MotorMount.IgnitionEvent.LAUNCH.fr.text.md5=rY9s9XYfmob7ItSdUunCkw\=\=
+MotorMount.IgnitionEvent.NEVER..text.changed=20110317061957
+MotorMount.IgnitionEvent.NEVER..text.md5=bns0+lnhvSKbIHiSlW3EHA\=\=
+MotorMount.IgnitionEvent.NEVER.es.text.changed=20110317062041
+MotorMount.IgnitionEvent.NEVER.es.text.md5=bns0+lnhvSKbIHiSlW3EHA\=\=
+MotorMount.IgnitionEvent.NEVER.fr.text.changed=20110317061957
+MotorMount.IgnitionEvent.NEVER.fr.text.md5=WQFO0zJ7d4GnWlO+xwF2Nw\=\=
+MotorPlot.Chart.Motorthrustcurve..text.changed=20110317061957
+MotorPlot.Chart.Motorthrustcurve..text.md5=8DUArhdjOHxFN/8SP0doFA\=\=
+MotorPlot.Chart.Motorthrustcurve.es.text.changed=20110317062041
+MotorPlot.Chart.Motorthrustcurve.es.text.md5=6HGtzC+C6nDfMsXzrltBuw\=\=
+MotorPlot.Chart.Motorthrustcurve.fr.text.changed=20110317061957
+MotorPlot.Chart.Motorthrustcurve.fr.text.md5=x31U9b1uX7urqY/eqm8o3A\=\=
+MotorPlot.Chart.Thrust..text.changed=20110317061957
+MotorPlot.Chart.Thrust..text.md5=+tyeABZJK0pOKDcbPve6EQ\=\=
+MotorPlot.Chart.Thrust.es.text.changed=20110317062041
+MotorPlot.Chart.Thrust.es.text.md5=o8EJIqJbqsARLk0j27qSpQ\=\=
+MotorPlot.Chart.Thrust.fr.text.changed=20110317061957
+MotorPlot.Chart.Thrust.fr.text.md5=FlOQQaWfTF4UydcpjAiZtQ\=\=
+MotorPlot.Chart.Time..text.changed=20110317061957
+MotorPlot.Chart.Time..text.md5=WfHQdTL3Z3Brv27VcYah+A\=\=
+MotorPlot.Chart.Time.es.text.changed=20110317062041
+MotorPlot.Chart.Time.es.text.md5=kryI27EgrwuvvxfBfWEFGQ\=\=
+MotorPlot.Chart.Time.fr.text.changed=20110317061957
+MotorPlot.Chart.Time.fr.text.md5=4nF3ow4HYd+Z1wxxnxXg6Q\=\=
+MotorPlot.but.Select..text.changed=20110317061957
+MotorPlot.but.Select..text.md5=4GJiImFL3uMZUdhMZOXp/w\=\=
+MotorPlot.but.Select.es.text.changed=20110317062041
+MotorPlot.but.Select.es.text.md5=Ev8cbjgxLx1B7T9UfjjyxA\=\=
+MotorPlot.but.Select.fr.text.changed=20110317061957
+MotorPlot.but.Select.fr.text.md5=b/ndDTT2UYEXPB5Lw5k53g\=\=
+MotorPlot.title.Motorplot..text.changed=20110317061957
+MotorPlot.title.Motorplot..text.md5=270v3AQN5uLpv5pGFDskpg\=\=
+MotorPlot.title.Motorplot.es.text.changed=20110317062041
+MotorPlot.title.Motorplot.es.text.md5=qJogHyoesdiTmGSm4F8H9Q\=\=
+MotorPlot.title.Motorplot.fr.text.changed=20110317061957
+MotorPlot.title.Motorplot.fr.text.md5=oH0x/MwQLwW3kXfcV5dqAg\=\=
+MotorPlot.txt.Comment..text.changed=20110317061957
+MotorPlot.txt.Comment..text.md5=VyU3dflVPoemJ35AU0KV+Q\=\=
+MotorPlot.txt.Comment.es.text.changed=20110317062041
+MotorPlot.txt.Comment.es.text.md5=prQi9577KcmlO7Tgkr2Fcw\=\=
+MotorPlot.txt.Comment.fr.text.changed=20110317061957
+MotorPlot.txt.Comment.fr.text.md5=O2f9IJ9msRTXoIbaZeftXQ\=\=
+MotorPlot.txt.Delays..text.changed=20110317061957
+MotorPlot.txt.Delays..text.md5=myHhWmpn0BLhLprPSVDmnQ\=\=
+MotorPlot.txt.Delays.es.text.changed=20110317062041
+MotorPlot.txt.Delays.es.text.md5=V8r9BiccuksTqTXysSNUZA\=\=
+MotorPlot.txt.Delays.fr.text.changed=20110317061957
+MotorPlot.txt.Delays.fr.text.md5=VLyqmtmhqOMOGiWdN/jRCA\=\=
+MotorPlot.txt.Designation..text.changed=20110317061957
+MotorPlot.txt.Designation..text.md5=YhiFyr0LuBagGayEotNM3A\=\=
+MotorPlot.txt.Designation.es.text.changed=20110317062041
+MotorPlot.txt.Designation.es.text.md5=i1U/HVle+2Xf6BBT3ZYRUg\=\=
+MotorPlot.txt.Designation.fr.text.changed=20110317061957
+MotorPlot.txt.Designation.fr.text.md5=0273tWsYL8GrpKSNFBDBxA\=\=
+MotorPlot.txt.Manufacturer..text.changed=20110317061957
+MotorPlot.txt.Manufacturer..text.md5=9KJ1qTG4LlBYvI/62LjlvQ\=\=
+MotorPlot.txt.Manufacturer.es.text.changed=20110317062041
+MotorPlot.txt.Manufacturer.es.text.md5=yQOwvWeasWXk4XmzXxPG0w\=\=
+MotorPlot.txt.Manufacturer.fr.text.changed=20110317061957
+MotorPlot.txt.Manufacturer.fr.text.md5=9KJ1qTG4LlBYvI/62LjlvQ\=\=
+MotorPlot.txt.Type..text.changed=20110317061957
+MotorPlot.txt.Type..text.md5=5lm1LrofApmy2Mo0g5Gecg\=\=
+MotorPlot.txt.Type.es.text.changed=20110317062041
+MotorPlot.txt.Type.es.text.md5=uCjv+xfsc/A/4zpwdWCjcg\=\=
+MotorPlot.txt.Type.fr.text.changed=20110317061957
+MotorPlot.txt.Type.fr.text.md5=5lm1LrofApmy2Mo0g5Gecg\=\=
+NoseCone.NoseCone..text.changed=20110317061957
+NoseCone.NoseCone..text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\=
+NoseCone.NoseCone.es.text.changed=20110317062041
+NoseCone.NoseCone.es.text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\=
+NoseCone.NoseCone.fr.text.changed=20110317061957
+NoseCone.NoseCone.fr.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\=
+NoseConeCfg.checkbox.Automatic..text.changed=20110317061957
+NoseConeCfg.checkbox.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\=
+NoseConeCfg.checkbox.Automatic.es.text.changed=20110317062041
+NoseConeCfg.checkbox.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\=
+NoseConeCfg.checkbox.Automatic.fr.text.changed=20110317061957
+NoseConeCfg.checkbox.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\=
+NoseConeCfg.checkbox.Filled..text.changed=20110317061957
+NoseConeCfg.checkbox.Filled..text.md5=2dWG+MeS+PZhBSr0JTYyPA\=\=
+NoseConeCfg.checkbox.Filled.es.text.changed=20110317062041
+NoseConeCfg.checkbox.Filled.es.text.md5=HQ2GNI1le2Dl+Mw8w7w38w\=\=
+NoseConeCfg.checkbox.Filled.fr.text.changed=20110317061957
+NoseConeCfg.checkbox.Filled.fr.text.md5=S975CUbtxnqWOai6+gtVIw\=\=
+NoseConeCfg.lbl.Basediam..text.changed=20110317061957
+NoseConeCfg.lbl.Basediam..text.md5=WnVLorAtyLwvC8th9BDt0g\=\=
+NoseConeCfg.lbl.Basediam.es.text.changed=20110317062041
+NoseConeCfg.lbl.Basediam.es.text.md5=MzEE4jmYfkOb/YZtYbAMyA\=\=
+NoseConeCfg.lbl.Basediam.fr.text.changed=20110317061957
+NoseConeCfg.lbl.Basediam.fr.text.md5=sk55XWkUScI3P13XTofBoQ\=\=
+NoseConeCfg.lbl.Noseconelength..text.changed=20110317061957
+NoseConeCfg.lbl.Noseconelength..text.md5=6MjwyMQznxVC5ml+DEzcgw\=\=
+NoseConeCfg.lbl.Noseconelength.es.text.changed=20110317062041
+NoseConeCfg.lbl.Noseconelength.es.text.md5=aobjGK9R7jRu9Uw7M5PkQQ\=\=
+NoseConeCfg.lbl.Noseconelength.fr.text.changed=20110317061957
+NoseConeCfg.lbl.Noseconelength.fr.text.md5=Zw7V76pANrI+bpISdXcIfA\=\=
+NoseConeCfg.lbl.Noseconeshape..text.changed=20110317061957
+NoseConeCfg.lbl.Noseconeshape..text.md5=zljhTVuHlxue/6LqZgGWgA\=\=
+NoseConeCfg.lbl.Noseconeshape.es.text.changed=20110317062041
+NoseConeCfg.lbl.Noseconeshape.es.text.md5=8Z3NleZqAQzd4cZXg9TrmA\=\=
+NoseConeCfg.lbl.Noseconeshape.fr.text.changed=20110317061957
+NoseConeCfg.lbl.Noseconeshape.fr.text.md5=azFoV5IE82gMI8mlobudYA\=\=
+NoseConeCfg.lbl.Shapeparam..text.changed=20110317061957
+NoseConeCfg.lbl.Shapeparam..text.md5=KVaIAlkq0XzFBnTFAB255w\=\=
+NoseConeCfg.lbl.Shapeparam.es.text.changed=20110317062041
+NoseConeCfg.lbl.Shapeparam.es.text.md5=5Xy1hNGGrYa4hfGVGFJxTA\=\=
+NoseConeCfg.lbl.Shapeparam.fr.text.changed=20110317061957
+NoseConeCfg.lbl.Shapeparam.fr.text.md5=3y8h1BkZndT/FOnJYA5FVQ\=\=
+NoseConeCfg.lbl.Wallthickness..text.changed=20110317061957
+NoseConeCfg.lbl.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\=
+NoseConeCfg.lbl.Wallthickness.es.text.changed=20110317062041
+NoseConeCfg.lbl.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\=
+NoseConeCfg.lbl.Wallthickness.fr.text.changed=20110317061957
+NoseConeCfg.lbl.Wallthickness.fr.text.md5=iFOwo5u9UFPeev2I4ToeLA\=\=
+NoseConeCfg.tab.General..text.changed=20110317061957
+NoseConeCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+NoseConeCfg.tab.General.es.text.changed=20110317062041
+NoseConeCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+NoseConeCfg.tab.General.fr.text.changed=20110317061957
+NoseConeCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+NoseConeCfg.tab.Shoulder..text.changed=20110317061957
+NoseConeCfg.tab.Shoulder..text.md5=g8tMFEs9buGoR77lGkS5Mw\=\=
+NoseConeCfg.tab.Shoulder.es.text.changed=20110317062041
+NoseConeCfg.tab.Shoulder.es.text.md5=78fPmNoWzrpkK+C7wA1R1g\=\=
+NoseConeCfg.tab.Shoulder.fr.text.changed=20110317061957
+NoseConeCfg.tab.Shoulder.fr.text.md5=ij0NnDUcQgwNuNOYKx3eiw\=\=
+NoseConeCfg.tab.ttip.General..text.changed=20110317061957
+NoseConeCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+NoseConeCfg.tab.ttip.General.es.text.changed=20110317062041
+NoseConeCfg.tab.ttip.General.es.text.md5=fQ39GJFiR6oG9aUxLug5YQ\=\=
+NoseConeCfg.tab.ttip.General.fr.text.changed=20110317061957
+NoseConeCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+NoseConeCfg.tab.ttip.Shoulder..text.changed=20110317061957
+NoseConeCfg.tab.ttip.Shoulder..text.md5=veo49O9fQ4SLjde6bY/VVQ\=\=
+NoseConeCfg.tab.ttip.Shoulder.es.text.changed=20110317062041
+NoseConeCfg.tab.ttip.Shoulder.es.text.md5=4Y4Kzhcq0JFqewGDiCwbPw\=\=
+NoseConeCfg.tab.ttip.Shoulder.fr.text.changed=20110317061957
+NoseConeCfg.tab.ttip.Shoulder.fr.text.md5=sti2mJGzRjITPrUDeouq7Q\=\=
+Parachute.Parachute..text.changed=20110317061957
+Parachute.Parachute..text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+Parachute.Parachute.es.text.changed=20110317062041
+Parachute.Parachute.es.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+Parachute.Parachute.fr.text.changed=20110317061957
+Parachute.Parachute.fr.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+ParachuteCfg.but.Reset..text.changed=20110317061957
+ParachuteCfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\=
+ParachuteCfg.but.Reset.es.text.changed=20110317062041
+ParachuteCfg.but.Reset.es.text.md5=Um1ojzeobTw/J9DFAW63HQ\=\=
+ParachuteCfg.but.Reset.fr.text.changed=20110317061957
+ParachuteCfg.but.Reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\=
+ParachuteCfg.combo.MaterialModel..text.changed=20110317061957
+ParachuteCfg.combo.MaterialModel..text.md5=DAgqIeIiYrmv0taT33oRxg\=\=
+ParachuteCfg.combo.MaterialModel.es.text.changed=20110317062041
+ParachuteCfg.combo.MaterialModel.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\=
+ParachuteCfg.combo.MaterialModel.fr.text.changed=20110317061957
+ParachuteCfg.combo.MaterialModel.fr.text.md5=ItFmkpJv49F3DxVe8FVQlg\=\=
+ParachuteCfg.lbl.Altitude..text.changed=20110317061957
+ParachuteCfg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+ParachuteCfg.lbl.Altitude.es.text.changed=20110317062041
+ParachuteCfg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\=
+ParachuteCfg.lbl.Altitude.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+ParachuteCfg.lbl.Canopy..text.changed=20110317061957
+ParachuteCfg.lbl.Canopy..text.md5=Xa9JZGaehPbhQS3WYka1KQ\=\=
+ParachuteCfg.lbl.Canopy.es.text.changed=20110317062041
+ParachuteCfg.lbl.Canopy.es.text.md5=Q46+SL+zdDSdVDgqQlfAqQ\=\=
+ParachuteCfg.lbl.Canopy.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Canopy.fr.text.md5=2e/Bq3sQA/iG3uGZ6gS5ow\=\=
+ParachuteCfg.lbl.Deploysat..text.changed=20110317061957
+ParachuteCfg.lbl.Deploysat..text.md5=IxstQijgTJb/8AvIWRQH9w\=\=
+ParachuteCfg.lbl.Deploysat.es.text.changed=20110317062041
+ParachuteCfg.lbl.Deploysat.es.text.md5=moF/hPQVM84ksGjGjs1UeQ\=\=
+ParachuteCfg.lbl.Deploysat.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Deploysat.fr.text.md5=JELD/qo7Duj0UQ7PerJNLA\=\=
+ParachuteCfg.lbl.Diameter..text.changed=20110317061957
+ParachuteCfg.lbl.Diameter..text.md5=uh4JG3VOop6684+vupv7wg\=\=
+ParachuteCfg.lbl.Diameter.es.text.changed=20110317062041
+ParachuteCfg.lbl.Diameter.es.text.md5=p0rJqnplUaq6vzp71r8kxw\=\=
+ParachuteCfg.lbl.Diameter.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Diameter.fr.text.md5=krQJbrSG9ksshs17OtWyJg\=\=
+ParachuteCfg.lbl.Linelength..text.changed=20110317061957
+ParachuteCfg.lbl.Linelength..text.md5=hHJBtfXGinZxEVeR0HlUPw\=\=
+ParachuteCfg.lbl.Linelength.es.text.changed=20110317062041
+ParachuteCfg.lbl.Linelength.es.text.md5=Ikvpi04J3+Fg7lTl37zZiA\=\=
+ParachuteCfg.lbl.Linelength.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Linelength.fr.text.md5=HvZiEVJ+VOK5uxlFtyfrnA\=\=
+ParachuteCfg.lbl.Material..text.changed=20110317061957
+ParachuteCfg.lbl.Material..text.md5=1zibzLtopzoHLVvzqb0tkw\=\=
+ParachuteCfg.lbl.Material.es.text.changed=20110317062041
+ParachuteCfg.lbl.Material.es.text.md5=1zibzLtopzoHLVvzqb0tkw\=\=
+ParachuteCfg.lbl.Material.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Material.fr.text.md5=cPnLRUd7khfn1RS1/D+2uw\=\=
+ParachuteCfg.lbl.Numberoflines..text.changed=20110317061957
+ParachuteCfg.lbl.Numberoflines..text.md5=c+a/9Fnh0rLjyk4vW+JioQ\=\=
+ParachuteCfg.lbl.Numberoflines.es.text.changed=20110317062041
+ParachuteCfg.lbl.Numberoflines.es.text.md5=0tW/qN7+4xzcn9ysgLdzXg\=\=
+ParachuteCfg.lbl.Numberoflines.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Numberoflines.fr.text.md5=hYNCbADGVRlMDcbaAMf0BQ\=\=
+ParachuteCfg.lbl.Packeddiam..text.changed=20110317061957
+ParachuteCfg.lbl.Packeddiam..text.md5=ZLli2T49cm2t4O2DM2Qdfg\=\=
+ParachuteCfg.lbl.Packeddiam.es.text.changed=20110317062041
+ParachuteCfg.lbl.Packeddiam.es.text.md5=h2fYHq6dIS69oa5+UT2jzQ\=\=
+ParachuteCfg.lbl.Packeddiam.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Packeddiam.fr.text.md5=MCBW0PoxQ8Qtb5TAUsjc2w\=\=
+ParachuteCfg.lbl.Packedlength..text.changed=20110317061957
+ParachuteCfg.lbl.Packedlength..text.md5=UXXIbj2JBgPTWzdfLI0olQ\=\=
+ParachuteCfg.lbl.Packedlength.es.text.changed=20110317062041
+ParachuteCfg.lbl.Packedlength.es.text.md5=GEwxxwwW5Vw6LWX65NhM4Q\=\=
+ParachuteCfg.lbl.Packedlength.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Packedlength.fr.text.md5=/o7zfx/ENDsTSGus481oFA\=\=
+ParachuteCfg.lbl.Posrelativeto..text.changed=20110317061957
+ParachuteCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+ParachuteCfg.lbl.Posrelativeto.es.text.changed=20110317062041
+ParachuteCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+ParachuteCfg.lbl.Posrelativeto.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+ParachuteCfg.lbl.Radialdirection..text.changed=20110317061957
+ParachuteCfg.lbl.Radialdirection..text.md5=i1kLjBiCCrq0JyXJbJJWLQ\=\=
+ParachuteCfg.lbl.Radialdirection.es.text.changed=20110317062041
+ParachuteCfg.lbl.Radialdirection.es.text.md5=8+Pa5rnto1tOMcLkMe+SVQ\=\=
+ParachuteCfg.lbl.Radialdirection.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Radialdirection.fr.text.md5=t1/lCCHD0C++YMqbld91CQ\=\=
+ParachuteCfg.lbl.Radialdistance..text.changed=20110317061957
+ParachuteCfg.lbl.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\=
+ParachuteCfg.lbl.Radialdistance.es.text.changed=20110317062041
+ParachuteCfg.lbl.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\=
+ParachuteCfg.lbl.Radialdistance.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\=
+ParachuteCfg.lbl.Shroudlines..text.changed=20110317061957
+ParachuteCfg.lbl.Shroudlines..text.md5=s7AK/5jrJBT9Tys80QRVvg\=\=
+ParachuteCfg.lbl.Shroudlines.es.text.changed=20110317062041
+ParachuteCfg.lbl.Shroudlines.es.text.md5=lXFby+fvDC/EdFe9beeNdQ\=\=
+ParachuteCfg.lbl.Shroudlines.fr.text.changed=20110317061957
+ParachuteCfg.lbl.Shroudlines.fr.text.md5=ySvu3bU9c0uc2HHjZPxvRQ\=\=
+ParachuteCfg.lbl.longA1..text.changed=20110317061957
+ParachuteCfg.lbl.longA1..text.md5=+e/wsU4oZBXvD9lztBpgiw\=\=
+ParachuteCfg.lbl.longA1.es.text.changed=20110317062041
+ParachuteCfg.lbl.longA1.es.text.md5=+e/wsU4oZBXvD9lztBpgiw\=\=
+ParachuteCfg.lbl.longA1.fr.text.changed=20110317061957
+ParachuteCfg.lbl.longA1.fr.text.md5=0FHoANBt31B4ZVACneVWrg\=\=
+ParachuteCfg.lbl.longB1..text.changed=20110317061957
+ParachuteCfg.lbl.longB1..text.md5=ZdTWmOl129ZhcXUx6bV7DQ\=\=
+ParachuteCfg.lbl.longB1.es.text.changed=20110317062041
+ParachuteCfg.lbl.longB1.es.text.md5=2nnNZj5EQjYR5Ifp9BuIoQ\=\=
+ParachuteCfg.lbl.longB1.fr.text.changed=20110317061957
+ParachuteCfg.lbl.longB1.fr.text.md5=k0OLfYlJY7x8bGUIWwdcug\=\=
+ParachuteCfg.lbl.longB2..text.changed=20110317061957
+ParachuteCfg.lbl.longB2..text.md5=oQfgl5p9PWQ6DTOH15Ngeg\=\=
+ParachuteCfg.lbl.longB2.es.text.changed=20110317062041
+ParachuteCfg.lbl.longB2.es.text.md5=mcXuh/pfQvavJJxXLK431A\=\=
+ParachuteCfg.lbl.longB2.fr.text.changed=20110317061957
+ParachuteCfg.lbl.longB2.fr.text.md5=TH7IzUBsWaGydBnj3Ir4dQ\=\=
+ParachuteCfg.lbl.longB3..text.changed=20110317061957
+ParachuteCfg.lbl.longB3..text.md5=wAyHhRXJ1wOjpW5UEy+EEA\=\=
+ParachuteCfg.lbl.longB3.es.text.changed=20110317062041
+ParachuteCfg.lbl.longB3.es.text.md5=bFwp9vfBrCfmx9Iq9CQDbA\=\=
+ParachuteCfg.lbl.longB3.fr.text.changed=20110317061957
+ParachuteCfg.lbl.longB3.fr.text.md5=dgz7whzhi9lzpjFseQ+0Nw\=\=
+ParachuteCfg.lbl.plus..text.changed=20110317061957
+ParachuteCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ParachuteCfg.lbl.plus.es.text.changed=20110317062041
+ParachuteCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ParachuteCfg.lbl.plus.fr.text.changed=20110317061957
+ParachuteCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ParachuteCfg.lbl.seconds..text.changed=20110317061957
+ParachuteCfg.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\=
+ParachuteCfg.lbl.seconds.es.text.changed=20110317062041
+ParachuteCfg.lbl.seconds.es.text.md5=UxqeEPFTlrCXqhUT1Oib0A\=\=
+ParachuteCfg.lbl.seconds.fr.text.changed=20110317061957
+ParachuteCfg.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\=
+ParachuteCfg.tab.General..text.changed=20110317061957
+ParachuteCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+ParachuteCfg.tab.General.es.text.changed=20110317062041
+ParachuteCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+ParachuteCfg.tab.General.fr.text.changed=20110317061957
+ParachuteCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+ParachuteCfg.tab.Radialpos..text.changed=20110317061957
+ParachuteCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\=
+ParachuteCfg.tab.Radialpos.es.text.changed=20110317062041
+ParachuteCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\=
+ParachuteCfg.tab.Radialpos.fr.text.changed=20110317061957
+ParachuteCfg.tab.Radialpos.fr.text.md5=rX8euW6QQ2ZOgQivvVMsOg\=\=
+ParachuteCfg.tab.ttip.General..text.changed=20110317061957
+ParachuteCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+ParachuteCfg.tab.ttip.General.es.text.changed=20110317062041
+ParachuteCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+ParachuteCfg.tab.ttip.General.fr.text.changed=20110317061957
+ParachuteCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+ParachuteCfg.tab.ttip.Radialpos..text.changed=20110317061957
+ParachuteCfg.tab.ttip.Radialpos..text.md5=VWjNybFzuNElITpmCwHoJA\=\=
+ParachuteCfg.tab.ttip.Radialpos.es.text.changed=20110317062041
+ParachuteCfg.tab.ttip.Radialpos.es.text.md5=bKv0q9SafUyC4RoSTTQTcA\=\=
+ParachuteCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957
+ParachuteCfg.tab.ttip.Radialpos.fr.text.md5=JnclFOKoByk5DG7SAVaXbg\=\=
+PlotConfiguration.Angleofattack..text.changed=20110317061957
+PlotConfiguration.Angleofattack..text.md5=aVSiRffT9QhlLVh6HiejjA\=\=
+PlotConfiguration.Angleofattack.es.text.changed=20110317062041
+PlotConfiguration.Angleofattack.es.text.md5=aVSiRffT9QhlLVh6HiejjA\=\=
+PlotConfiguration.Angleofattack.fr.text.changed=20110317061957
+PlotConfiguration.Angleofattack.fr.text.md5=yH3fqV570mzGn3W0eTBdNw\=\=
+PlotConfiguration.Dragcoef..text.changed=20110317061957
+PlotConfiguration.Dragcoef..text.md5=IRx3d8x0SSm/r05sHsP5dw\=\=
+PlotConfiguration.Dragcoef.es.text.changed=20110317062041
+PlotConfiguration.Dragcoef.es.text.md5=IRx3d8x0SSm/r05sHsP5dw\=\=
+PlotConfiguration.Dragcoef.fr.text.changed=20110317061957
+PlotConfiguration.Dragcoef.fr.text.md5=Jcogt7Gqwex5iTpGLKH+MA\=\=
+PlotConfiguration.Flightside..text.changed=20110317061957
+PlotConfiguration.Flightside..text.md5=lYO23jd9Bg5jQp1jm50oWA\=\=
+PlotConfiguration.Flightside.es.text.changed=20110317062041
+PlotConfiguration.Flightside.es.text.md5=lYO23jd9Bg5jQp1jm50oWA\=\=
+PlotConfiguration.Flightside.fr.text.changed=20110317061957
+PlotConfiguration.Flightside.fr.text.md5=lYO23jd9Bg5jQp1jm50oWA\=\=
+PlotConfiguration.Rollcharacteristics..text.changed=20110317061957
+PlotConfiguration.Rollcharacteristics..text.md5=V/0iq6J0oItWKmy6+DzIgg\=\=
+PlotConfiguration.Rollcharacteristics.es.text.changed=20110317062041
+PlotConfiguration.Rollcharacteristics.es.text.md5=V/0iq6J0oItWKmy6+DzIgg\=\=
+PlotConfiguration.Rollcharacteristics.fr.text.changed=20110317061957
+PlotConfiguration.Rollcharacteristics.fr.text.md5=3JQSSZBEp4bYZ8+Wukk5LQ\=\=
+PlotConfiguration.Simulationtime..text.changed=20110317061957
+PlotConfiguration.Simulationtime..text.md5=N2c1nZfL1a5YaQKpzZN/2A\=\=
+PlotConfiguration.Simulationtime.es.text.changed=20110317062041
+PlotConfiguration.Simulationtime.es.text.md5=N2c1nZfL1a5YaQKpzZN/2A\=\=
+PlotConfiguration.Simulationtime.fr.text.changed=20110317061957
+PlotConfiguration.Simulationtime.fr.text.md5=dOyZRsoLLCuKkqmyhk3Fig\=\=
+PlotConfiguration.Stability..text.changed=20110317061957
+PlotConfiguration.Stability..text.md5=Jju0QevDcOmA9BAHslsHBg\=\=
+PlotConfiguration.Stability.es.text.changed=20110317062041
+PlotConfiguration.Stability.es.text.md5=Jju0QevDcOmA9BAHslsHBg\=\=
+PlotConfiguration.Stability.fr.text.changed=20110317061957
+PlotConfiguration.Stability.fr.text.md5=+fBo0rbd2JbfhL3pBtZPpw\=\=
+PlotConfiguration.Totalmotion..text.changed=20110317061957
+PlotConfiguration.Totalmotion..text.md5=QyRGUqr9BqxPoi80NWxt1w\=\=
+PlotConfiguration.Totalmotion.es.text.changed=20110317062041
+PlotConfiguration.Totalmotion.es.text.md5=QyRGUqr9BqxPoi80NWxt1w\=\=
+PlotConfiguration.Totalmotion.fr.text.changed=20110317061957
+PlotConfiguration.Totalmotion.fr.text.md5=2uEdBlS6Lz9xDoRnmFHgJQ\=\=
+PlotConfiguration.Verticalmotion..text.changed=20110317061957
+PlotConfiguration.Verticalmotion..text.md5=gdX5RDbNXAAUcV+f6jL5MQ\=\=
+PlotConfiguration.Verticalmotion.es.text.changed=20110317062041
+PlotConfiguration.Verticalmotion.es.text.md5=gdX5RDbNXAAUcV+f6jL5MQ\=\=
+PlotConfiguration.Verticalmotion.fr.text.changed=20110317061957
+PlotConfiguration.Verticalmotion.fr.text.md5=LAQhZwsH730XL1PKO05stQ\=\=
+PlotDialog.Chart.Simulatedflight..text.changed=20110317061957
+PlotDialog.Chart.Simulatedflight..text.md5=9dB8ETg7rbeNkLDb7mWEwA\=\=
+PlotDialog.Chart.Simulatedflight.es.text.changed=20110317062041
+PlotDialog.Chart.Simulatedflight.es.text.md5=TuSR9mNnUGttJOUezJGFxg\=\=
+PlotDialog.Chart.Simulatedflight.fr.text.changed=20110317061957
+PlotDialog.Chart.Simulatedflight.fr.text.md5=HQ7AglQXkuWzD0phV9dRoQ\=\=
+PlotDialog.CheckBox.Showdatapoints..text.changed=20110317061957
+PlotDialog.CheckBox.Showdatapoints..text.md5=om90RTYZLYMttfHdnyARwQ\=\=
+PlotDialog.CheckBox.Showdatapoints.es.text.changed=20110317062041
+PlotDialog.CheckBox.Showdatapoints.es.text.md5=9HhbWuZTShaNmp+Mf9PMhg\=\=
+PlotDialog.CheckBox.Showdatapoints.fr.text.changed=20110317061957
+PlotDialog.CheckBox.Showdatapoints.fr.text.md5=AgiwXKK+w6+LCJzqZ+YGug\=\=
+PlotDialog.lbl.Chart..text.changed=20110317061957
+PlotDialog.lbl.Chart..text.md5=INPMX3sAwhdN0cyoh/zGQA\=\=
+PlotDialog.lbl.Chart.es.text.changed=20110317062041
+PlotDialog.lbl.Chart.es.text.md5=XVVcu8Ek59XCGEQjGrDYkg\=\=
+PlotDialog.lbl.Chart.fr.text.changed=20110317061957
+PlotDialog.lbl.Chart.fr.text.md5=m6HpoWiZ4Cx+W9suzJ2HlQ\=\=
+PlotDialog.title.Flightdataplot..text.changed=20110317061957
+PlotDialog.title.Flightdataplot..text.md5=GrhKtk4CjdjbJgYSOGCQWQ\=\=
+PlotDialog.title.Flightdataplot.es.text.changed=20110317062041
+PlotDialog.title.Flightdataplot.es.text.md5=LrzZQ1f84jECz+EA7fYDbQ\=\=
+PlotDialog.title.Flightdataplot.fr.text.changed=20110317061957
+PlotDialog.title.Flightdataplot.fr.text.md5=R8yDPEhVVzOK10Tyx2tn7g\=\=
+RecoveryDevice.DeployEvent.ALTITUDE..text.changed=20110317061957
+RecoveryDevice.DeployEvent.ALTITUDE..text.md5=cjx6Et6BQ38Qu4xGe/lgRQ\=\=
+RecoveryDevice.DeployEvent.ALTITUDE.es.text.changed=20110317062041
+RecoveryDevice.DeployEvent.ALTITUDE.es.text.md5=cjx6Et6BQ38Qu4xGe/lgRQ\=\=
+RecoveryDevice.DeployEvent.ALTITUDE.fr.text.changed=20110317061957
+RecoveryDevice.DeployEvent.ALTITUDE.fr.text.md5=QU6GYU7GK3K4of3kTx2Xvw\=\=
+RecoveryDevice.DeployEvent.APOGEE..text.changed=20110317061957
+RecoveryDevice.DeployEvent.APOGEE..text.md5=QL6gVpnPUZKBPZU18+Unyg\=\=
+RecoveryDevice.DeployEvent.APOGEE.es.text.changed=20110317062041
+RecoveryDevice.DeployEvent.APOGEE.es.text.md5=QL6gVpnPUZKBPZU18+Unyg\=\=
+RecoveryDevice.DeployEvent.APOGEE.fr.text.changed=20110317061957
+RecoveryDevice.DeployEvent.APOGEE.fr.text.md5=+AS6Lmac9yoej6GMJZ2KZA\=\=
+RecoveryDevice.DeployEvent.EJECTION..text.changed=20110317061957
+RecoveryDevice.DeployEvent.EJECTION..text.md5=mu+I9O2xUsODQl5FtzSz8w\=\=
+RecoveryDevice.DeployEvent.EJECTION.es.text.changed=20110317062041
+RecoveryDevice.DeployEvent.EJECTION.es.text.md5=mu+I9O2xUsODQl5FtzSz8w\=\=
+RecoveryDevice.DeployEvent.EJECTION.fr.text.changed=20110317061957
+RecoveryDevice.DeployEvent.EJECTION.fr.text.md5=HWulhCqBZXYJKFD9snI40Q\=\=
+RecoveryDevice.DeployEvent.LAUNCH..text.changed=20110317061957
+RecoveryDevice.DeployEvent.LAUNCH..text.md5=9+5UZNC9Z4kr1gJCIwjdMw\=\=
+RecoveryDevice.DeployEvent.LAUNCH.es.text.changed=20110317062041
+RecoveryDevice.DeployEvent.LAUNCH.es.text.md5=9+5UZNC9Z4kr1gJCIwjdMw\=\=
+RecoveryDevice.DeployEvent.LAUNCH.fr.text.changed=20110317061957
+RecoveryDevice.DeployEvent.LAUNCH.fr.text.md5=BMbqIxZQgdiInjg9fouZbw\=\=
+RecoveryDevice.DeployEvent.NEVER..text.changed=20110317061957
+RecoveryDevice.DeployEvent.NEVER..text.md5=bns0+lnhvSKbIHiSlW3EHA\=\=
+RecoveryDevice.DeployEvent.NEVER.es.text.changed=20110317062041
+RecoveryDevice.DeployEvent.NEVER.es.text.md5=bns0+lnhvSKbIHiSlW3EHA\=\=
+RecoveryDevice.DeployEvent.NEVER.fr.text.changed=20110317061957
+RecoveryDevice.DeployEvent.NEVER.fr.text.md5=WQFO0zJ7d4GnWlO+xwF2Nw\=\=
+Rocket.compname.Rocket..text.changed=20110317061957
+Rocket.compname.Rocket..text.md5=Fei//ywQyiLaJE2Fsr99lA\=\=
+Rocket.compname.Rocket.es.text.changed=20110317062041
+Rocket.compname.Rocket.es.text.md5=Fei//ywQyiLaJE2Fsr99lA\=\=
+Rocket.compname.Rocket.fr.text.changed=20110317061957
+Rocket.compname.Rocket.fr.text.md5=8c0NEcH/7TAuZBq4FDvE8g\=\=
+Rocket.motorCount.Nomotor..text.changed=20110317061957
+Rocket.motorCount.Nomotor..text.md5=qePC7rg7GMdGpt6dRgEH0A\=\=
+Rocket.motorCount.Nomotor.es.text.changed=20110317062041
+Rocket.motorCount.Nomotor.es.text.md5=qePC7rg7GMdGpt6dRgEH0A\=\=
+Rocket.motorCount.Nomotor.fr.text.changed=20110317061957
+Rocket.motorCount.Nomotor.fr.text.md5=H3f0W58FUMnTmQ7G//DmTg\=\=
+RocketActions.ActBoosterstage..text.changed=20110317061957
+RocketActions.ActBoosterstage..text.md5=4C9W6n1UD6vtpaj+i2Mf9w\=\=
+RocketActions.ActBoosterstage.es.text.changed=20110317062041
+RocketActions.ActBoosterstage.es.text.md5=K+ZtGNhPwONlL9H99El8Bw\=\=
+RocketActions.ActBoosterstage.fr.text.changed=20110317061957
+RocketActions.ActBoosterstage.fr.text.md5=S0Puz/hgsKvtY3p3HU7nhw\=\=
+RocketActions.CopyAct.Copy..text.changed=20110317061957
+RocketActions.CopyAct.Copy..text.md5=X7Y1efyYFpj5fVW/7LIT6g\=\=
+RocketActions.CopyAct.Copy.es.text.changed=20110317062041
+RocketActions.CopyAct.Copy.es.text.md5=CBa9ot/1XfUMF6SLuD3Ddw\=\=
+RocketActions.CopyAct.Copy.fr.text.changed=20110317061957
+RocketActions.CopyAct.Copy.fr.text.md5=uE4+hfTPBEmO3DKM+KMhDw\=\=
+RocketActions.CopyAct.ttip.Copy..text.changed=20110317061957
+RocketActions.CopyAct.ttip.Copy..text.md5=9CLedSaxIfwF4SLzRkMfRg\=\=
+RocketActions.CopyAct.ttip.Copy.es.text.changed=20110317062041
+RocketActions.CopyAct.ttip.Copy.es.text.md5=kBo4d0pfIQH8AaPqVmxlGg\=\=
+RocketActions.CopyAct.ttip.Copy.fr.text.changed=20110317061957
+RocketActions.CopyAct.ttip.Copy.fr.text.md5=CxXO5K8+ulBUnFRrxhU5hA\=\=
+RocketActions.CutAction.Cut..text.changed=20110317061957
+RocketActions.CutAction.Cut..text.md5=6zNNygDjkODT6/UtIFgH1w\=\=
+RocketActions.CutAction.Cut.es.text.changed=20110317062041
+RocketActions.CutAction.Cut.es.text.md5=aWgiHXr6Fsd+VJNxrWi7Gw\=\=
+RocketActions.CutAction.Cut.fr.text.changed=20110317061957
+RocketActions.CutAction.Cut.fr.text.md5=XK3u18MJpYLFmlet2BJhOw\=\=
+RocketActions.CutAction.ttip.Cut..text.changed=20110317061957
+RocketActions.CutAction.ttip.Cut..text.md5=KRVOZml7MfvDMwbCKcDcbw\=\=
+RocketActions.CutAction.ttip.Cut.es.text.changed=20110317062041
+RocketActions.CutAction.ttip.Cut.es.text.md5=oUqYEPtlTfKyTI9R2j0gdg\=\=
+RocketActions.CutAction.ttip.Cut.fr.text.changed=20110317061957
+RocketActions.CutAction.ttip.Cut.fr.text.md5=iRpm4akNmj1wC63yWXJUBQ\=\=
+RocketActions.DelAct.Delete..text.changed=20110317061957
+RocketActions.DelAct.Delete..text.md5=m/dkKMcBhVIw5dFfkDDgkA\=\=
+RocketActions.DelAct.Delete.es.text.changed=20110317062041
+RocketActions.DelAct.Delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+RocketActions.DelAct.Delete.fr.text.changed=20110317061957
+RocketActions.DelAct.Delete.fr.text.md5=hxcoU0FFPmPWYDCXJSPLBw\=\=
+RocketActions.DelAct.ttip.Delete..text.changed=20110317061957
+RocketActions.DelAct.ttip.Delete..text.md5=5VPJobDDVwk0DRtgVZK5uQ\=\=
+RocketActions.DelAct.ttip.Delete.es.text.changed=20110317062041
+RocketActions.DelAct.ttip.Delete.es.text.md5=ispNFDoanKmvhb1Qz1kGvA\=\=
+RocketActions.DelAct.ttip.Delete.fr.text.changed=20110317061957
+RocketActions.DelAct.ttip.Delete.fr.text.md5=m4SuT3Qy7R2bHU+MEUWGqA\=\=
+RocketActions.DelCompAct.Delete..text.changed=20110317061957
+RocketActions.DelCompAct.Delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\=
+RocketActions.DelCompAct.Delete.es.text.changed=20110317062041
+RocketActions.DelCompAct.Delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+RocketActions.DelCompAct.Delete.fr.text.changed=20110317061957
+RocketActions.DelCompAct.Delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\=
+RocketActions.DelCompAct.ttip.Delete..text.changed=20110317061957
+RocketActions.DelCompAct.ttip.Delete..text.md5=vBPQbeJGOqbkX50gnqUepw\=\=
+RocketActions.DelCompAct.ttip.Delete.es.text.changed=20110317062041
+RocketActions.DelCompAct.ttip.Delete.es.text.md5=1sCvCNdxCNekd938s9yvoQ\=\=
+RocketActions.DelCompAct.ttip.Delete.fr.text.changed=20110317061957
+RocketActions.DelCompAct.ttip.Delete.fr.text.md5=Y+/LvqB6MlSe3Kchs6MOYA\=\=
+RocketActions.DelSimuAct.Delete..text.changed=20110317061957
+RocketActions.DelSimuAct.Delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\=
+RocketActions.DelSimuAct.Delete.es.text.changed=20110317062041
+RocketActions.DelSimuAct.Delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+RocketActions.DelSimuAct.Delete.fr.text.changed=20110317061957
+RocketActions.DelSimuAct.Delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\=
+RocketActions.DelSimuAct.ttip.Delete..text.changed=20110317061957
+RocketActions.DelSimuAct.ttip.Delete..text.md5=azLkE0/2hlp/CrW8sc1fUg\=\=
+RocketActions.DelSimuAct.ttip.Delete.es.text.changed=20110317062041
+RocketActions.DelSimuAct.ttip.Delete.es.text.md5=fUppntn2Oa013mKphlO5uA\=\=
+RocketActions.DelSimuAct.ttip.Delete.fr.text.changed=20110317061957
+RocketActions.DelSimuAct.ttip.Delete.fr.text.md5=NFhOA98BNuHvQd9zcTGmGA\=\=
+RocketActions.EditAct.Edit..text.changed=20110317061957
+RocketActions.EditAct.Edit..text.md5=fc4SIASWnVauLgJFy3VNNQ\=\=
+RocketActions.EditAct.Edit.es.text.changed=20110317062041
+RocketActions.EditAct.Edit.es.text.md5=95bHNQIFl280Jr7ZhHm5ag\=\=
+RocketActions.EditAct.Edit.fr.text.changed=20110317061957
+RocketActions.EditAct.Edit.fr.text.md5=iYwHnS5ipLGXHfutnYYIOA\=\=
+RocketActions.EditAct.ttip.Edit..text.changed=20110317061957
+RocketActions.EditAct.ttip.Edit..text.md5=ohe8PUux3nIwTfIa3yKqrA\=\=
+RocketActions.EditAct.ttip.Edit.es.text.changed=20110317062041
+RocketActions.EditAct.ttip.Edit.es.text.md5=dq9S6wtVgKXDhzsg686nrQ\=\=
+RocketActions.EditAct.ttip.Edit.fr.text.changed=20110317061957
+RocketActions.EditAct.ttip.Edit.fr.text.md5=mhT62Mp8QQTDq8sC7W2J/w\=\=
+RocketActions.MoveDownAct.Movedown..text.changed=20110317061957
+RocketActions.MoveDownAct.Movedown..text.md5=3Z8Mfhuzt0m9Qj41RLSo4w\=\=
+RocketActions.MoveDownAct.Movedown.es.text.changed=20110317062041
+RocketActions.MoveDownAct.Movedown.es.text.md5=TdT6Njrvfc0kpFb4B21x1Q\=\=
+RocketActions.MoveDownAct.Movedown.fr.text.changed=20110317061957
+RocketActions.MoveDownAct.Movedown.fr.text.md5=Ps8Ld+kYrQ/yPyPsV/4qHA\=\=
+RocketActions.MoveDownAct.ttip.Movedown..text.changed=20110317061957
+RocketActions.MoveDownAct.ttip.Movedown..text.md5=b4PcYqmMAJ35D7a7SIDlTw\=\=
+RocketActions.MoveDownAct.ttip.Movedown.es.text.changed=20110317062041
+RocketActions.MoveDownAct.ttip.Movedown.es.text.md5=jevkL0m9vVMxtZMsY+o6QQ\=\=
+RocketActions.MoveDownAct.ttip.Movedown.fr.text.changed=20110317061957
+RocketActions.MoveDownAct.ttip.Movedown.fr.text.md5=irUE6+lWsiaRLYl4Sk+ClA\=\=
+RocketActions.MoveUpAct.Moveup..text.changed=20110317061957
+RocketActions.MoveUpAct.Moveup..text.md5=93r3aV9xMjgI+bbieVzehg\=\=
+RocketActions.MoveUpAct.Moveup.es.text.changed=20110317062041
+RocketActions.MoveUpAct.Moveup.es.text.md5=A1zfbcRgZZlaQys8bQFF9w\=\=
+RocketActions.MoveUpAct.Moveup.fr.text.changed=20110317061957
+RocketActions.MoveUpAct.Moveup.fr.text.md5=3wRuk7X8zSbDusfaC3nkIg\=\=
+RocketActions.MoveUpAct.ttip.Moveup..text.changed=20110317061957
+RocketActions.MoveUpAct.ttip.Moveup..text.md5=oI7JDwCLKMX6b51V2exipg\=\=
+RocketActions.MoveUpAct.ttip.Moveup.es.text.changed=20110317062041
+RocketActions.MoveUpAct.ttip.Moveup.es.text.md5=o6Myy/thJmigXQuOvvdZdg\=\=
+RocketActions.MoveUpAct.ttip.Moveup.fr.text.changed=20110317061957
+RocketActions.MoveUpAct.ttip.Moveup.fr.text.md5=MLZ7jXpENYXKW80C9OWy8w\=\=
+RocketActions.NewStageAct.Newstage..text.changed=20110317061957
+RocketActions.NewStageAct.Newstage..text.md5=BcwLOTia7BjY1rUzj44qbg\=\=
+RocketActions.NewStageAct.Newstage.es.text.changed=20110317062041
+RocketActions.NewStageAct.Newstage.es.text.md5=uZTQtGKbhbJU/SZ4OKVsRw\=\=
+RocketActions.NewStageAct.Newstage.fr.text.changed=20110317061957
+RocketActions.NewStageAct.Newstage.fr.text.md5=RwkxfKUGXIXAjF9c3z6icQ\=\=
+RocketActions.NewStageAct.ttip.Newstage..text.changed=20110317061957
+RocketActions.NewStageAct.ttip.Newstage..text.md5=PLyTO1pYiJiZoZjOBUgP6A\=\=
+RocketActions.NewStageAct.ttip.Newstage.es.text.changed=20110317062041
+RocketActions.NewStageAct.ttip.Newstage.es.text.md5=tlgdeblLPC1swHGN5C3OlA\=\=
+RocketActions.NewStageAct.ttip.Newstage.fr.text.changed=20110317061957
+RocketActions.NewStageAct.ttip.Newstage.fr.text.md5=gyL+5/6RSxOJxONaCxwCLA\=\=
+RocketActions.PasteAct.Paste..text.changed=20110317061957
+RocketActions.PasteAct.Paste..text.md5=NrtlWWltyRJJhq4SBRWYTw\=\=
+RocketActions.PasteAct.Paste.es.text.changed=20110317062041
+RocketActions.PasteAct.Paste.es.text.md5=EWZL2wlyml7l3JQTGpeT2g\=\=
+RocketActions.PasteAct.Paste.fr.text.changed=20110317061957
+RocketActions.PasteAct.Paste.fr.text.md5=IQgJsyd+wJkZOJWAdYLDZw\=\=
+RocketActions.PasteAct.ttip.Paste..text.changed=20110317061957
+RocketActions.PasteAct.ttip.Paste..text.md5=Cfl/LNPfAVM6k6kksN+KfA\=\=
+RocketActions.PasteAct.ttip.Paste.es.text.changed=20110317062041
+RocketActions.PasteAct.ttip.Paste.es.text.md5=/irCAaptvqJ3wse3+78mWg\=\=
+RocketActions.PasteAct.ttip.Paste.fr.text.changed=20110317061957
+RocketActions.PasteAct.ttip.Paste.fr.text.md5=0uufTYvUedPwFV7bURYLyw\=\=
+RocketActions.checkbox.Donotaskmeagain..text.changed=20110317061957
+RocketActions.checkbox.Donotaskmeagain..text.md5=xMeqCOFI2ELVUxa8B2WjDA\=\=
+RocketActions.checkbox.Donotaskmeagain.es.text.changed=20110317062041
+RocketActions.checkbox.Donotaskmeagain.es.text.md5=HJ2HbOIonh+Cr/zcNkHUpw\=\=
+RocketActions.checkbox.Donotaskmeagain.fr.text.changed=20110317061957
+RocketActions.checkbox.Donotaskmeagain.fr.text.md5=V49H2SSvKhMBpOVtwMoaIA\=\=
+RocketActions.lbl.Youcanchangedefop..text.changed=20110317061957
+RocketActions.lbl.Youcanchangedefop..text.md5=cYQgfnoeRCK2h69YzRSoxw\=\=
+RocketActions.lbl.Youcanchangedefop.es.text.changed=20110317062041
+RocketActions.lbl.Youcanchangedefop.es.text.md5=EQsZr/4U/ssrzU9Un2mUxQ\=\=
+RocketActions.lbl.Youcanchangedefop.fr.text.changed=20110317061957
+RocketActions.lbl.Youcanchangedefop.fr.text.md5=Eh0bpqvlxuZrT/bnzq9zpw\=\=
+RocketActions.showConfirmDialog.lbl1..text.changed=20110317061957
+RocketActions.showConfirmDialog.lbl1..text.md5=DNJ2o5oEGUaGa7yIHcFAiw\=\=
+RocketActions.showConfirmDialog.lbl1.es.text.changed=20110317062041
+RocketActions.showConfirmDialog.lbl1.es.text.md5=JJiDlPhnaQrc0nPucCJvBw\=\=
+RocketActions.showConfirmDialog.lbl1.fr.text.changed=20110317061957
+RocketActions.showConfirmDialog.lbl1.fr.text.md5=EsL/WDLd3+IrLAmGoMbGRQ\=\=
+RocketActions.showConfirmDialog.lbl2..text.changed=20110317061957
+RocketActions.showConfirmDialog.lbl2..text.md5=82qtdSO4rsRCe24wWOe1UQ\=\=
+RocketActions.showConfirmDialog.lbl2.es.text.changed=20110317062041
+RocketActions.showConfirmDialog.lbl2.es.text.md5=JJcmRbw0W63auwokuAIrBg\=\=
+RocketActions.showConfirmDialog.lbl2.fr.text.changed=20110317061957
+RocketActions.showConfirmDialog.lbl2.fr.text.md5=dMTK4JEtD9GD3Y7btp7rVg\=\=
+RocketActions.showConfirmDialog.title..text.changed=20110317061957
+RocketActions.showConfirmDialog.title..text.md5=E2ccIhH6w7qOFhOsd4212A\=\=
+RocketActions.showConfirmDialog.title.es.text.changed=20110317062041
+RocketActions.showConfirmDialog.title.es.text.md5=P0q7OT50d8WsSHOfb98XCg\=\=
+RocketActions.showConfirmDialog.title.fr.text.changed=20110317061957
+RocketActions.showConfirmDialog.title.fr.text.md5=DAv7od/Vxf0J1c/DIufXOA\=\=
+RocketCfg.lbl.Comments..text.changed=20110317061957
+RocketCfg.lbl.Comments..text.md5=wUoMqVUKizEdv3rLs+bKxA\=\=
+RocketCfg.lbl.Comments.es.text.changed=20110317062041
+RocketCfg.lbl.Comments.es.text.md5=aMuYNrluHtxC66+qW1qbug\=\=
+RocketCfg.lbl.Comments.fr.text.changed=20110317061957
+RocketCfg.lbl.Comments.fr.text.md5=VPjJ1g+X0euD/x+bKyMw/w\=\=
+RocketCfg.lbl.Designer..text.changed=20110317061957
+RocketCfg.lbl.Designer..text.md5=8bZ/UdklQjm1Oe9ZrtgzdQ\=\=
+RocketCfg.lbl.Designer.es.text.changed=20110317062041
+RocketCfg.lbl.Designer.es.text.md5=u1oQ6HGtnYprhdnbcLWYLA\=\=
+RocketCfg.lbl.Designer.fr.text.changed=20110317061957
+RocketCfg.lbl.Designer.fr.text.md5=/Z9QY35A6Pk84u8sKJ5fbQ\=\=
+RocketCfg.lbl.Designname..text.changed=20110317061957
+RocketCfg.lbl.Designname..text.md5=XCvmR6fg8Sxe7sRoHKE/Tg\=\=
+RocketCfg.lbl.Designname.es.text.changed=20110317062041
+RocketCfg.lbl.Designname.es.text.md5=9N7puzbo3v/H8NsEwQDMGg\=\=
+RocketCfg.lbl.Designname.fr.text.changed=20110317061957
+RocketCfg.lbl.Designname.fr.text.md5=xegaanYiiC7DFD9Ybxt3/w\=\=
+RocketCfg.lbl.Material..text.changed=20110317061957
+RocketCfg.lbl.Material..text.md5=1zibzLtopzoHLVvzqb0tkw\=\=
+RocketCfg.lbl.Material.es.text.changed=20110317062041
+RocketCfg.lbl.Material.es.text.md5=1zibzLtopzoHLVvzqb0tkw\=\=
+RocketCfg.lbl.Material.fr.text.changed=20110317061957
+RocketCfg.lbl.Material.fr.text.md5=FtyLJTt+AZUazbtIKrUeAQ\=\=
+RocketCfg.lbl.Revisionhistory..text.changed=20110317061957
+RocketCfg.lbl.Revisionhistory..text.md5=OYkrcBuOjzPOsrvHKyqT6Q\=\=
+RocketCfg.lbl.Revisionhistory.es.text.changed=20110317062041
+RocketCfg.lbl.Revisionhistory.es.text.md5=XXCPjqjLeS8h2PGJlwSegA\=\=
+RocketCfg.lbl.Revisionhistory.fr.text.changed=20110317061957
+RocketCfg.lbl.Revisionhistory.fr.text.md5=uHG4Pa+w2gzxxH+rCdRP/w\=\=
+RocketCompCfg.border.Foreshoulder..text.changed=20110317061957
+RocketCompCfg.border.Foreshoulder..text.md5=e9ckYlSGPWGznNo20lto7A\=\=
+RocketCompCfg.border.Foreshoulder.es.text.changed=20110317062041
+RocketCompCfg.border.Foreshoulder.es.text.md5=e9ckYlSGPWGznNo20lto7A\=\=
+RocketCompCfg.border.Foreshoulder.fr.text.changed=20110317061957
+RocketCompCfg.border.Foreshoulder.fr.text.md5=e9ckYlSGPWGznNo20lto7A\=\=
+RocketCompCfg.but.Saveasdefstyle..text.changed=20110317061957
+RocketCompCfg.but.Saveasdefstyle..text.md5=vFM6dSiFdVWcHJdgAQlUqQ\=\=
+RocketCompCfg.but.Saveasdefstyle.es.text.changed=20110317062041
+RocketCompCfg.but.Saveasdefstyle.es.text.md5=4LsxmqKpUb4KWzrhJdML3Q\=\=
+RocketCompCfg.but.Saveasdefstyle.fr.text.changed=20110317061957
+RocketCompCfg.but.Saveasdefstyle.fr.text.md5=oQY9RyRksWbgxdhdyjzT5w\=\=
+RocketCompCfg.but.Setforall..text.changed=20110317061957
+RocketCompCfg.but.Setforall..text.md5=s7Nbmd0He4q90hHVbiVpNQ\=\=
+RocketCompCfg.but.Setforall.es.text.changed=20110317062041
+RocketCompCfg.but.Setforall.es.text.md5=sfbL+fCMnxbv0n0bCZYQQw\=\=
+RocketCompCfg.but.Setforall.fr.text.changed=20110317061957
+RocketCompCfg.but.Setforall.fr.text.md5=ryfo8m4Ynny7KYX8qok9eg\=\=
+RocketCompCfg.but.ttip.Setforall..text.changed=20110317061957
+RocketCompCfg.but.ttip.Setforall..text.md5=jvpRbG4EHJLx9A/gzWkP8Q\=\=
+RocketCompCfg.but.ttip.Setforall.es.text.changed=20110317062041
+RocketCompCfg.but.ttip.Setforall.es.text.md5=vTCm7qt4teVUS3/1i7EPVA\=\=
+RocketCompCfg.but.ttip.Setforall.fr.text.changed=20110317061957
+RocketCompCfg.but.ttip.Setforall.fr.text.md5=UtojL6usyjeSNCJ6W4T+kg\=\=
+RocketCompCfg.checkbox.Endcapped..text.changed=20110317061957
+RocketCompCfg.checkbox.Endcapped..text.md5=INUOqJrYiV5HWmFx1sEG/w\=\=
+RocketCompCfg.checkbox.Endcapped.es.text.changed=20110317062041
+RocketCompCfg.checkbox.Endcapped.es.text.md5=TuC5GqPlrkbxItMfxN6LBQ\=\=
+RocketCompCfg.checkbox.Endcapped.fr.text.changed=20110317061957
+RocketCompCfg.checkbox.Endcapped.fr.text.md5=1KldF9/h+0P9HzII3qI7HA\=\=
+RocketCompCfg.checkbox.Overridecenterofgrav..text.changed=20110317061957
+RocketCompCfg.checkbox.Overridecenterofgrav..text.md5=30OLTQtKlbW1pDw/RILCGA\=\=
+RocketCompCfg.checkbox.Overridecenterofgrav.es.text.changed=20110317062041
+RocketCompCfg.checkbox.Overridecenterofgrav.es.text.md5=gF0gdmxLl/oYxUNUXL2iXA\=\=
+RocketCompCfg.checkbox.Overridecenterofgrav.fr.text.changed=20110317061957
+RocketCompCfg.checkbox.Overridecenterofgrav.fr.text.md5=7dsEk9um+RQD+TWW79ng8A\=\=
+RocketCompCfg.checkbox.Overridemass..text.changed=20110317061957
+RocketCompCfg.checkbox.Overridemass..text.md5=jh5Q384y7gH9KPjigx9lCQ\=\=
+RocketCompCfg.checkbox.Overridemass.es.text.changed=20110317062041
+RocketCompCfg.checkbox.Overridemass.es.text.md5=q/aEicQQtRbAXWcBnUOXhw\=\=
+RocketCompCfg.checkbox.Overridemass.fr.text.changed=20110317061957
+RocketCompCfg.checkbox.Overridemass.fr.text.md5=yT8qxyklOhDfc4hfT+PM3Q\=\=
+RocketCompCfg.checkbox.OverridemassandCG..text.changed=20110317061957
+RocketCompCfg.checkbox.OverridemassandCG..text.md5=8MhvGH6XnagOmVw5+fG2Nw\=\=
+RocketCompCfg.checkbox.OverridemassandCG.es.text.changed=20110317062041
+RocketCompCfg.checkbox.OverridemassandCG.es.text.md5=hLSQCUam8ihwRXJdKacy3w\=\=
+RocketCompCfg.checkbox.OverridemassandCG.fr.text.changed=20110317061957
+RocketCompCfg.checkbox.OverridemassandCG.fr.text.md5=C/qvCL79VNjJ6OxTt+/tHg\=\=
+RocketCompCfg.checkbox.Usedefaultcolor..text.changed=20110317061957
+RocketCompCfg.checkbox.Usedefaultcolor..text.md5=zJsIoTdD/5Rh0HmM7++a/A\=\=
+RocketCompCfg.checkbox.Usedefaultcolor.es.text.changed=20110317062041
+RocketCompCfg.checkbox.Usedefaultcolor.es.text.md5=v6kTjNET+ZDHU4GAkXU5eg\=\=
+RocketCompCfg.checkbox.Usedefaultcolor.fr.text.changed=20110317061957
+RocketCompCfg.checkbox.Usedefaultcolor.fr.text.md5=ttvqkrXqXPOhTBWvAdlRgg\=\=
+RocketCompCfg.combo.ttip.componentmaterialaffects..text.changed=20110317061957
+RocketCompCfg.combo.ttip.componentmaterialaffects..text.md5=DAgqIeIiYrmv0taT33oRxg\=\=
+RocketCompCfg.combo.ttip.componentmaterialaffects.es.text.changed=20110317062041
+RocketCompCfg.combo.ttip.componentmaterialaffects.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\=
+RocketCompCfg.combo.ttip.componentmaterialaffects.fr.text.changed=20110317061957
+RocketCompCfg.combo.ttip.componentmaterialaffects.fr.text.md5=CZAe/chmN10dE01suemImw\=\=
+RocketCompCfg.lbl.Choosecolor..text.changed=20110317061957
+RocketCompCfg.lbl.Choosecolor..text.md5=YqOrFslH/yGzRZavn7Kcuw\=\=
+RocketCompCfg.lbl.Choosecolor.es.text.changed=20110317062041
+RocketCompCfg.lbl.Choosecolor.es.text.md5=pHOww47HQnxk+UlJYCq4Mw\=\=
+RocketCompCfg.lbl.Choosecolor.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Choosecolor.fr.text.md5=J5q4cznb4+RsIxhiJSoVnQ\=\=
+RocketCompCfg.lbl.Commentsonthe..text.changed=20110317061957
+RocketCompCfg.lbl.Commentsonthe..text.md5=Nq8c1cn9hUBfSdtA6TZKnQ\=\=
+RocketCompCfg.lbl.Commentsonthe.es.text.changed=20110317062041
+RocketCompCfg.lbl.Commentsonthe.es.text.md5=vaZ20GKwetiBruW+WALc3A\=\=
+RocketCompCfg.lbl.Commentsonthe.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Commentsonthe.fr.text.md5=SJrX7GPIZVr/xN0MmlkPxw\=\=
+RocketCompCfg.lbl.Complinestyle..text.changed=20110317061957
+RocketCompCfg.lbl.Complinestyle..text.md5=zx0i+qwXvV8I3abZ8rIlkQ\=\=
+RocketCompCfg.lbl.Complinestyle.es.text.changed=20110317062041
+RocketCompCfg.lbl.Complinestyle.es.text.md5=Oaslr+rOmoRefzozggMnXw\=\=
+RocketCompCfg.lbl.Complinestyle.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Complinestyle.fr.text.md5=/QipSYN6sBDzHhx57pSo2A\=\=
+RocketCompCfg.lbl.Componentcolor..text.changed=20110317061957
+RocketCompCfg.lbl.Componentcolor..text.md5=Gfuj/kODS+V63RnkNMOMXg\=\=
+RocketCompCfg.lbl.Componentcolor.es.text.changed=20110317062041
+RocketCompCfg.lbl.Componentcolor.es.text.md5=4khp2aobSnQpICgr8sOlCA\=\=
+RocketCompCfg.lbl.Componentcolor.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Componentcolor.fr.text.md5=wU5SDTFqGnzZzK4bMb7ueg\=\=
+RocketCompCfg.lbl.Componentfinish..text.changed=20110317061957
+RocketCompCfg.lbl.Componentfinish..text.md5=H9Rb/K2XhKtM+9Qn0Aj+qw\=\=
+RocketCompCfg.lbl.Componentfinish.es.text.changed=20110317062041
+RocketCompCfg.lbl.Componentfinish.es.text.md5=9iol545Q03f4Xcn+iopjZg\=\=
+RocketCompCfg.lbl.Componentfinish.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Componentfinish.fr.text.md5=dX0YoUhQ8+7YOCnni2g18A\=\=
+RocketCompCfg.lbl.Componentmass..text.changed=20110317061957
+RocketCompCfg.lbl.Componentmass..text.md5=qoE/osmW9zCvQLf6qlBpkQ\=\=
+RocketCompCfg.lbl.Componentmass.es.text.changed=20110317062041
+RocketCompCfg.lbl.Componentmass.es.text.md5=TZaCyu5kICb2x5QhESUKGQ\=\=
+RocketCompCfg.lbl.Componentmass.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Componentmass.fr.text.md5=Im2fGQHT+X+UBRzljS8kLw\=\=
+RocketCompCfg.lbl.Componentmaterial..text.changed=20110317061957
+RocketCompCfg.lbl.Componentmaterial..text.md5=lCQ+jFOnXCMrT3fQ1hmm2w\=\=
+RocketCompCfg.lbl.Componentmaterial.es.text.changed=20110317062041
+RocketCompCfg.lbl.Componentmaterial.es.text.md5=VE6vkn7meR8SWAfalNErUw\=\=
+RocketCompCfg.lbl.Componentmaterial.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Componentmaterial.fr.text.md5=zMCw6C451k/6RldZdGYWsA\=\=
+RocketCompCfg.lbl.Componentname..text.changed=20110317061957
+RocketCompCfg.lbl.Componentname..text.md5=9QgqWnsyly40WEBzqSpBQA\=\=
+RocketCompCfg.lbl.Componentname.es.text.changed=20110317062041
+RocketCompCfg.lbl.Componentname.es.text.md5=PNKCMp07e+T5ihb6jNbKRw\=\=
+RocketCompCfg.lbl.Componentname.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Componentname.fr.text.md5=yOylQjU+VGgmr7R/izRQVw\=\=
+RocketCompCfg.lbl.Diameter..text.changed=20110317061957
+RocketCompCfg.lbl.Diameter..text.md5=uh4JG3VOop6684+vupv7wg\=\=
+RocketCompCfg.lbl.Diameter.es.text.changed=20110317062041
+RocketCompCfg.lbl.Diameter.es.text.md5=p0rJqnplUaq6vzp71r8kxw\=\=
+RocketCompCfg.lbl.Diameter.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Diameter.fr.text.md5=krQJbrSG9ksshs17OtWyJg\=\=
+RocketCompCfg.lbl.Figurestyle..text.changed=20110317061957
+RocketCompCfg.lbl.Figurestyle..text.md5=fWB92XOqSUFlfFhqO6qmJA\=\=
+RocketCompCfg.lbl.Figurestyle.es.text.changed=20110317062041
+RocketCompCfg.lbl.Figurestyle.es.text.md5=0PIyBSDV6/TRiqIqYJIRSA\=\=
+RocketCompCfg.lbl.Figurestyle.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Figurestyle.fr.text.md5=jNBJojLdQtamdJiepr6psw\=\=
+RocketCompCfg.lbl.Length..text.changed=20110317061957
+RocketCompCfg.lbl.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\=
+RocketCompCfg.lbl.Length.es.text.changed=20110317062041
+RocketCompCfg.lbl.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\=
+RocketCompCfg.lbl.Length.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\=
+RocketCompCfg.lbl.Mass..text.changed=20110317061957
+RocketCompCfg.lbl.Mass..text.md5=uhJztJZI9YFN9J6bF8Trng\=\=
+RocketCompCfg.lbl.Mass.es.text.changed=20110317062041
+RocketCompCfg.lbl.Mass.es.text.md5=GV/FcctiBOU+rrzQkQf+bQ\=\=
+RocketCompCfg.lbl.Mass.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Mass.fr.text.md5=pM5yVmT3KWHb26EEkoINoQ\=\=
+RocketCompCfg.lbl.Overridemassorcenter..text.changed=20110317061957
+RocketCompCfg.lbl.Overridemassorcenter..text.md5=ejuTuPJMAXHZucQZzIUpoA\=\=
+RocketCompCfg.lbl.Overridemassorcenter.es.text.changed=20110317062041
+RocketCompCfg.lbl.Overridemassorcenter.es.text.md5=M5CMNa9A3Mv7spi4XwEHvQ\=\=
+RocketCompCfg.lbl.Overridemassorcenter.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Overridemassorcenter.fr.text.md5=iJw8eRtDOWXlnjpy+zxsUg\=\=
+RocketCompCfg.lbl.Thickness..text.changed=20110317061957
+RocketCompCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\=
+RocketCompCfg.lbl.Thickness.es.text.changed=20110317062041
+RocketCompCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\=
+RocketCompCfg.lbl.Thickness.fr.text.changed=20110317061957
+RocketCompCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\=
+RocketCompCfg.lbl.longA1..text.changed=20110317061957
+RocketCompCfg.lbl.longA1..text.md5=ZE4zy/4sbM/ESaOTUAsOxw\=\=
+RocketCompCfg.lbl.longA1.es.text.changed=20110317062041
+RocketCompCfg.lbl.longA1.es.text.md5=jiJuBkzhNPzNalBtErxJXw\=\=
+RocketCompCfg.lbl.longA1.fr.text.changed=20110317061957
+RocketCompCfg.lbl.longA1.fr.text.md5=Wn0KPcyAydU/YVda1dRZow\=\=
+RocketCompCfg.lbl.longA2..text.changed=20110317061957
+RocketCompCfg.lbl.longA2..text.md5=ia6bgj1XXTtStu6VbE5rXg\=\=
+RocketCompCfg.lbl.longA2.es.text.changed=20110317062041
+RocketCompCfg.lbl.longA2.es.text.md5=SkvNHix9XAKXQYRK0TKTMQ\=\=
+RocketCompCfg.lbl.longA2.fr.text.changed=20110317061957
+RocketCompCfg.lbl.longA2.fr.text.md5=y1FE0r5LWlsqKijUoiTYMQ\=\=
+RocketCompCfg.lbl.longB1..text.changed=20110317061957
+RocketCompCfg.lbl.longB1..text.md5=+l4YjgWmLaIIiacAX4J7vw\=\=
+RocketCompCfg.lbl.longB1.es.text.changed=20110317062041
+RocketCompCfg.lbl.longB1.es.text.md5=xV/od2RDiA+hc78uZ7bVBA\=\=
+RocketCompCfg.lbl.longB1.fr.text.changed=20110317061957
+RocketCompCfg.lbl.longB1.fr.text.md5=qLkQ7necm+nmqd/eb0H7Gw\=\=
+RocketCompCfg.lbl.longB2..text.changed=20110317061957
+RocketCompCfg.lbl.longB2..text.md5=6MQUSadzob+54jbqPSFToQ\=\=
+RocketCompCfg.lbl.longB2.es.text.changed=20110317062041
+RocketCompCfg.lbl.longB2.es.text.md5=dZtX/7ChoczKA5b7+y/LLg\=\=
+RocketCompCfg.lbl.longB2.fr.text.changed=20110317061957
+RocketCompCfg.lbl.longB2.fr.text.md5=fJcf9pBmYFZxdSo9iXS2CQ\=\=
+RocketCompCfg.lbl.overriddenby..text.changed=20110317061957
+RocketCompCfg.lbl.overriddenby..text.md5=/ZzjN3H4+jMcirwmSI3hww\=\=
+RocketCompCfg.lbl.overriddenby.es.text.changed=20110317062041
+RocketCompCfg.lbl.overriddenby.es.text.md5=3K3gVaPAVa/b+pPToaehzA\=\=
+RocketCompCfg.lbl.overriddenby.fr.text.changed=20110317061957
+RocketCompCfg.lbl.overriddenby.fr.text.md5=4PdRvPkIR8TNyeGTo9b73A\=\=
+RocketCompCfg.lbl.overriddento..text.changed=20110317061957
+RocketCompCfg.lbl.overriddento..text.md5=phNQKbBdYzz8+JUhVf5X/A\=\=
+RocketCompCfg.lbl.overriddento.es.text.changed=20110317062041
+RocketCompCfg.lbl.overriddento.es.text.md5=FRekWP4MYZafNc8JXYDCRg\=\=
+RocketCompCfg.lbl.overriddento.fr.text.changed=20110317061957
+RocketCompCfg.lbl.overriddento.fr.text.md5=Rql/Xyx6bQyxjTSo1L8Abw\=\=
+RocketCompCfg.lbl.ttip.componentmaterialaffects..text.changed=20110317061957
+RocketCompCfg.lbl.ttip.componentmaterialaffects..text.md5=DAgqIeIiYrmv0taT33oRxg\=\=
+RocketCompCfg.lbl.ttip.componentmaterialaffects.es.text.changed=20110317062041
+RocketCompCfg.lbl.ttip.componentmaterialaffects.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\=
+RocketCompCfg.lbl.ttip.componentmaterialaffects.fr.text.changed=20110317061957
+RocketCompCfg.lbl.ttip.componentmaterialaffects.fr.text.md5=CZAe/chmN10dE01suemImw\=\=
+RocketCompCfg.tab.Comment..text.changed=20110317061957
+RocketCompCfg.tab.Comment..text.md5=C+hAaVHN/agvAPeTKM9O/A\=\=
+RocketCompCfg.tab.Comment.es.text.changed=20110317062041
+RocketCompCfg.tab.Comment.es.text.md5=MARZIhY9h9rxlNm8sqqKxA\=\=
+RocketCompCfg.tab.Comment.fr.text.changed=20110317061957
+RocketCompCfg.tab.Comment.fr.text.md5=XCT7v7OS5WiCW7E1BhuhkQ\=\=
+RocketCompCfg.tab.Figstyleopt..text.changed=20110317061957
+RocketCompCfg.tab.Figstyleopt..text.md5=4TSyk6oIMIClGXLsXGBVcA\=\=
+RocketCompCfg.tab.Figstyleopt.es.text.changed=20110317062041
+RocketCompCfg.tab.Figstyleopt.es.text.md5=P5f19cbyQCGxQ2Tl6JBhuQ\=\=
+RocketCompCfg.tab.Figstyleopt.fr.text.changed=20110317061957
+RocketCompCfg.tab.Figstyleopt.fr.text.md5=VtJ78jxYzWvwdTe/qNVIJw\=\=
+RocketCompCfg.tab.Figure..text.changed=20110317061957
+RocketCompCfg.tab.Figure..text.md5=Zm3y9IzRbzghLAk5mSSHaQ\=\=
+RocketCompCfg.tab.Figure.es.text.changed=20110317062041
+RocketCompCfg.tab.Figure.es.text.md5=MlD0gZC9aDu+JjqQE9Ub/w\=\=
+RocketCompCfg.tab.Figure.fr.text.changed=20110317061957
+RocketCompCfg.tab.Figure.fr.text.md5=l+oBS+ZhaCaQKoOlyApR8w\=\=
+RocketCompCfg.tab.MassandCGoverride..text.changed=20110317061957
+RocketCompCfg.tab.MassandCGoverride..text.md5=BWdkeWMuc4BoXRp1FrpIbw\=\=
+RocketCompCfg.tab.MassandCGoverride.es.text.changed=20110317062041
+RocketCompCfg.tab.MassandCGoverride.es.text.md5=tAdcM6tKdQXSOXW5BVfFVQ\=\=
+RocketCompCfg.tab.MassandCGoverride.fr.text.changed=20110317061957
+RocketCompCfg.tab.MassandCGoverride.fr.text.md5=9dSVobEuYBr3CsEvaup1SA\=\=
+RocketCompCfg.tab.Override..text.changed=20110317061957
+RocketCompCfg.tab.Override..text.md5=bajmciX9z6eMPqXcMVS4SQ\=\=
+RocketCompCfg.tab.Override.es.text.changed=20110317062041
+RocketCompCfg.tab.Override.es.text.md5=InQwsBMP9TQJ0la5Jb59jA\=\=
+RocketCompCfg.tab.Override.fr.text.changed=20110317061957
+RocketCompCfg.tab.Override.fr.text.md5=WmNUdi7uEXMsdOP4T3OUKw\=\=
+RocketCompCfg.tab.Specifyacomment..text.changed=20110317061957
+RocketCompCfg.tab.Specifyacomment..text.md5=EfsC6/w5pfK1bMajAVkZKw\=\=
+RocketCompCfg.tab.Specifyacomment.es.text.changed=20110317062041
+RocketCompCfg.tab.Specifyacomment.es.text.md5=C9jd8dYx3g1XIXKQP2+d3w\=\=
+RocketCompCfg.tab.Specifyacomment.fr.text.changed=20110317061957
+RocketCompCfg.tab.Specifyacomment.fr.text.md5=8GZyDu0AskxjMCKyKMY4Dg\=\=
+RocketCompCfg.title.Aftshoulder..text.changed=20110317061957
+RocketCompCfg.title.Aftshoulder..text.md5=VMKdYHObaFBvTrlvc43pjA\=\=
+RocketCompCfg.title.Aftshoulder.es.text.changed=20110317062041
+RocketCompCfg.title.Aftshoulder.es.text.md5=500uV1D3qgMfQUQWm1nilA\=\=
+RocketCompCfg.title.Aftshoulder.fr.text.changed=20110317061957
+RocketCompCfg.title.Aftshoulder.fr.text.md5=52hYzDmiBpypNbX9YVyx5Q\=\=
+RocketCompCfg.title.Noseconeshoulder..text.changed=20110317061957
+RocketCompCfg.title.Noseconeshoulder..text.md5=gcLUTCLjOFbyH0AbMjoSqw\=\=
+RocketCompCfg.title.Noseconeshoulder.es.text.changed=20110317062041
+RocketCompCfg.title.Noseconeshoulder.es.text.md5=3NIYL4KSrTMhxx4YXi74dg\=\=
+RocketCompCfg.title.Noseconeshoulder.fr.text.changed=20110317061957
+RocketCompCfg.title.Noseconeshoulder.fr.text.md5=6cf3OctlEz9rBJR5owKZTA\=\=
+RocketCompCfg.ttip.Endcapped..text.changed=20110317061957
+RocketCompCfg.ttip.Endcapped..text.md5=/tw8OA/3kZGvZ45n69GOJg\=\=
+RocketCompCfg.ttip.Endcapped.es.text.changed=20110317062041
+RocketCompCfg.ttip.Endcapped.es.text.md5=vMyL1G2czlvYphWCreJSAg\=\=
+RocketCompCfg.ttip.Endcapped.fr.text.changed=20110317061957
+RocketCompCfg.ttip.Endcapped.fr.text.md5=/tw8OA/3kZGvZ45n69GOJg\=\=
+RocketCompCfg.ttip.Thecomponentname..text.changed=20110317061957
+RocketCompCfg.ttip.Thecomponentname..text.md5=wXfxXR4f78lIsPxJRfu1sA\=\=
+RocketCompCfg.ttip.Thecomponentname.es.text.changed=20110317062041
+RocketCompCfg.ttip.Thecomponentname.es.text.md5=VLHDspj9BgZ3jS+OjrmavQ\=\=
+RocketCompCfg.ttip.Thecomponentname.fr.text.changed=20110317061957
+RocketCompCfg.ttip.Thecomponentname.fr.text.md5=BCdvEySuxEUPjJpDK14bTg\=\=
+RocketComponent.Position.ABSOLUTE..text.changed=20110317061957
+RocketComponent.Position.ABSOLUTE..text.md5=AzhhZIbnNYQaLPwHmRLirg\=\=
+RocketComponent.Position.ABSOLUTE.es.text.changed=20110317062041
+RocketComponent.Position.ABSOLUTE.es.text.md5=AzhhZIbnNYQaLPwHmRLirg\=\=
+RocketComponent.Position.ABSOLUTE.fr.text.changed=20110317061957
+RocketComponent.Position.ABSOLUTE.fr.text.md5=Jdmj3Dq5Jt3FKgzBvZIIYQ\=\=
+RocketComponent.Position.AFTER..text.changed=20110317061957
+RocketComponent.Position.AFTER..text.md5=c+3M7ppDR+wuNOWnNJd18g\=\=
+RocketComponent.Position.AFTER.es.text.changed=20110317062041
+RocketComponent.Position.AFTER.es.text.md5=c+3M7ppDR+wuNOWnNJd18g\=\=
+RocketComponent.Position.AFTER.fr.text.changed=20110317061957
+RocketComponent.Position.AFTER.fr.text.md5=ZsvfzJuRzBo2X5N6fsGpWQ\=\=
+RocketComponent.Position.BOTTOM..text.changed=20110317061957
+RocketComponent.Position.BOTTOM..text.md5=kfwrw7AMt4riZFSLiFy3Rg\=\=
+RocketComponent.Position.BOTTOM.es.text.changed=20110317062041
+RocketComponent.Position.BOTTOM.es.text.md5=kfwrw7AMt4riZFSLiFy3Rg\=\=
+RocketComponent.Position.BOTTOM.fr.text.changed=20110317061957
+RocketComponent.Position.BOTTOM.fr.text.md5=MU0uZ8zJ6Z9w3ifWTVeDiQ\=\=
+RocketComponent.Position.MIDDLE..text.changed=20110317061957
+RocketComponent.Position.MIDDLE..text.md5=J4PApZ7AF518oMTx+Px4tA\=\=
+RocketComponent.Position.MIDDLE.es.text.changed=20110317062041
+RocketComponent.Position.MIDDLE.es.text.md5=J4PApZ7AF518oMTx+Px4tA\=\=
+RocketComponent.Position.MIDDLE.fr.text.changed=20110317061957
+RocketComponent.Position.MIDDLE.fr.text.md5=rMQ8esVbhoF/se0fQQxrXQ\=\=
+RocketComponent.Position.TOP..text.changed=20110317061957
+RocketComponent.Position.TOP..text.md5=TFkRbZ2Q1I/RXdigYybxeA\=\=
+RocketComponent.Position.TOP.es.text.changed=20110317062041
+RocketComponent.Position.TOP.es.text.md5=TFkRbZ2Q1I/RXdigYybxeA\=\=
+RocketComponent.Position.TOP.fr.text.changed=20110317061957
+RocketComponent.Position.TOP.fr.text.md5=2MG8lm3Gr//Bgzp2dl+u8g\=\=
+RocketInfo.Apogee..text.changed=20110317061957
+RocketInfo.Apogee..text.md5=m835/6hkcf3928i5E0KuTA\=\=
+RocketInfo.Apogee.es.text.changed=20110317062041
+RocketInfo.Apogee.es.text.md5=m835/6hkcf3928i5E0KuTA\=\=
+RocketInfo.Apogee.fr.text.changed=20110317061957
+RocketInfo.Apogee.fr.text.md5=JdjHcWzYZB6wmbxGcWK3Tg\=\=
+RocketInfo.Calculating..text.changed=20110317061957
+RocketInfo.Calculating..text.md5=BYLNL9YnQ6idtfcV/VHlMg\=\=
+RocketInfo.Calculating.es.text.changed=20110317062041
+RocketInfo.Calculating.es.text.md5=BYLNL9YnQ6idtfcV/VHlMg\=\=
+RocketInfo.Calculating.fr.text.changed=20110317061957
+RocketInfo.Calculating.fr.text.md5=zndMSA9ddOhatKMWddaorQ\=\=
+RocketInfo.Mach..text.changed=20110317061957
+RocketInfo.Mach..text.md5=yoT7hD3AmSzXb4F4VolXAQ\=\=
+RocketInfo.Mach.es.text.changed=20110317062041
+RocketInfo.Mach.es.text.md5=yoT7hD3AmSzXb4F4VolXAQ\=\=
+RocketInfo.Mach.fr.text.changed=20110317061957
+RocketInfo.Mach.fr.text.md5=yoT7hD3AmSzXb4F4VolXAQ\=\=
+RocketInfo.Maxacceleration..text.changed=20110317061957
+RocketInfo.Maxacceleration..text.md5=W/1eO0rir5rKGvsPz26Q3Q\=\=
+RocketInfo.Maxacceleration.es.text.changed=20110317062041
+RocketInfo.Maxacceleration.es.text.md5=W/1eO0rir5rKGvsPz26Q3Q\=\=
+RocketInfo.Maxacceleration.fr.text.changed=20110317061957
+RocketInfo.Maxacceleration.fr.text.md5=wnNQyKVF+jJ/acTeYxHRLQ\=\=
+RocketInfo.Maxvelocity..text.changed=20110317061957
+RocketInfo.Maxvelocity..text.md5=2UhiyS/Z0gAkmgwIs+uCkA\=\=
+RocketInfo.Maxvelocity.es.text.changed=20110317062041
+RocketInfo.Maxvelocity.es.text.md5=2UhiyS/Z0gAkmgwIs+uCkA\=\=
+RocketInfo.Maxvelocity.fr.text.changed=20110317061957
+RocketInfo.Maxvelocity.fr.text.md5=zl2gKupfyrpiX97LisL+Dw\=\=
+RocketInfo.Warning..text.changed=20110317061957
+RocketInfo.Warning..text.md5=Pz4zbi8foQN179kj/KGLVQ\=\=
+RocketInfo.Warning.es.text.changed=20110317062041
+RocketInfo.Warning.es.text.md5=Pz4zbi8foQN179kj/KGLVQ\=\=
+RocketInfo.Warning.fr.text.changed=20110317061957
+RocketInfo.Warning.fr.text.md5=bXzrjmDn/CV68NqUR2aUPg\=\=
+RocketInfo.accelerationValue..text.changed=20110317061957
+RocketInfo.accelerationValue..text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.accelerationValue.es.text.changed=20110317062041
+RocketInfo.accelerationValue.es.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.accelerationValue.fr.text.changed=20110317061957
+RocketInfo.accelerationValue.fr.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.apogeeValue..text.changed=20110317061957
+RocketInfo.apogeeValue..text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.apogeeValue.es.text.changed=20110317062041
+RocketInfo.apogeeValue.es.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.apogeeValue.fr.text.changed=20110317061957
+RocketInfo.apogeeValue.fr.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.at..text.changed=20110317061957
+RocketInfo.at..text.md5=W6cWsnOZ/knopYTPCzaTeA\=\=
+RocketInfo.at.es.text.changed=20110317062041
+RocketInfo.at.es.text.md5=W6cWsnOZ/knopYTPCzaTeA\=\=
+RocketInfo.at.fr.text.changed=20110317061957
+RocketInfo.at.fr.text.md5=+2xTQMeep5vm+yU2MLGvJA\=\=
+RocketInfo.cgText..text.changed=20110317061957
+RocketInfo.cgText..text.md5=1ZJYYUk1hlT/YiMygmRlUA\=\=
+RocketInfo.cgText.es.text.changed=20110317062041
+RocketInfo.cgText.es.text.md5=1ZJYYUk1hlT/YiMygmRlUA\=\=
+RocketInfo.cgText.fr.text.changed=20110317061957
+RocketInfo.cgText.fr.text.md5=1ZJYYUk1hlT/YiMygmRlUA\=\=
+RocketInfo.cpText..text.changed=20110317061957
+RocketInfo.cpText..text.md5=WUhBZhhcwneQOoDqGKgehQ\=\=
+RocketInfo.cpText.es.text.changed=20110317062041
+RocketInfo.cpText.es.text.md5=WUhBZhhcwneQOoDqGKgehQ\=\=
+RocketInfo.cpText.fr.text.changed=20110317061957
+RocketInfo.cpText.fr.text.md5=WUhBZhhcwneQOoDqGKgehQ\=\=
+RocketInfo.lengthLine.Length..text.changed=20110317061957
+RocketInfo.lengthLine.Length..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\=
+RocketInfo.lengthLine.Length.es.text.changed=20110317062041
+RocketInfo.lengthLine.Length.es.text.md5=uiqcbIx34D+D74v1Q2EidQ\=\=
+RocketInfo.lengthLine.Length.fr.text.changed=20110317061957
+RocketInfo.lengthLine.Length.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\=
+RocketInfo.lengthLine.maxdiameter..text.changed=20110317061957
+RocketInfo.lengthLine.maxdiameter..text.md5=b54K5jvMqQwFuiupKTW2Hw\=\=
+RocketInfo.lengthLine.maxdiameter.es.text.changed=20110317062041
+RocketInfo.lengthLine.maxdiameter.es.text.md5=b54K5jvMqQwFuiupKTW2Hw\=\=
+RocketInfo.lengthLine.maxdiameter.fr.text.changed=20110317061957
+RocketInfo.lengthLine.maxdiameter.fr.text.md5=yDlnB/eGrHA0Ku26kyspVA\=\=
+RocketInfo.massText1..text.changed=20110317061957
+RocketInfo.massText1..text.md5=RkY0syGtVBuF/S7ywbxlIg\=\=
+RocketInfo.massText1.es.text.changed=20110317062041
+RocketInfo.massText1.es.text.md5=RkY0syGtVBuF/S7ywbxlIg\=\=
+RocketInfo.massText1.fr.text.changed=20110317061957
+RocketInfo.massText1.fr.text.md5=v44c9NpUg+qJiSX8K6HG1Q\=\=
+RocketInfo.massText2..text.changed=20110317061957
+RocketInfo.massText2..text.md5=jhqtGU7OYqShOF1CHJzN5A\=\=
+RocketInfo.massText2.es.text.changed=20110317062041
+RocketInfo.massText2.es.text.md5=jhqtGU7OYqShOF1CHJzN5A\=\=
+RocketInfo.massText2.fr.text.changed=20110317061957
+RocketInfo.massText2.fr.text.md5=XVccBgTh1jlB6g0sW7DBmQ\=\=
+RocketInfo.stabText..text.changed=20110317061957
+RocketInfo.stabText..text.md5=LBO6FRY6BiV2OFFMimk7Cw\=\=
+RocketInfo.stabText.es.text.changed=20110317062041
+RocketInfo.stabText.es.text.md5=LBO6FRY6BiV2OFFMimk7Cw\=\=
+RocketInfo.stabText.fr.text.changed=20110317061957
+RocketInfo.stabText.fr.text.md5=mKdlKkmTwloZqh6SDoqzDA\=\=
+RocketInfo.velocityValue..text.changed=20110317061957
+RocketInfo.velocityValue..text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.velocityValue.es.text.changed=20110317062041
+RocketInfo.velocityValue.es.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketInfo.velocityValue.fr.text.changed=20110317061957
+RocketInfo.velocityValue.fr.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\=
+RocketPanel.FigTypeAct.Backview..text.changed=20110317061957
+RocketPanel.FigTypeAct.Backview..text.md5=U3L0JY9WIf2QbwuCXttoqQ\=\=
+RocketPanel.FigTypeAct.Backview.es.text.changed=20110317062041
+RocketPanel.FigTypeAct.Backview.es.text.md5=1ONvntlgu6B2Y4HBxrGRFw\=\=
+RocketPanel.FigTypeAct.Backview.fr.text.changed=20110317061957
+RocketPanel.FigTypeAct.Backview.fr.text.md5=MJEgbB97ut1ogwRUVK4paQ\=\=
+RocketPanel.FigTypeAct.Sideview..text.changed=20110317061957
+RocketPanel.FigTypeAct.Sideview..text.md5=QSuwa9rhkCos4AGWreXB6A\=\=
+RocketPanel.FigTypeAct.Sideview.es.text.changed=20110317062041
+RocketPanel.FigTypeAct.Sideview.es.text.md5=Njf4QATFRWsAcDfncsaHRw\=\=
+RocketPanel.FigTypeAct.Sideview.fr.text.changed=20110317061957
+RocketPanel.FigTypeAct.Sideview.fr.text.md5=pSMg/Uv2AyB+FxDegG864Q\=\=
+RocketPanel.FigTypeAct.ttip.Backview..text.changed=20110317061957
+RocketPanel.FigTypeAct.ttip.Backview..text.md5=LlrvaKoDwvazjZK6TP61sw\=\=
+RocketPanel.FigTypeAct.ttip.Backview.es.text.changed=20110317062041
+RocketPanel.FigTypeAct.ttip.Backview.es.text.md5=Omr5Thw1fLpHvcX5Y4CE8g\=\=
+RocketPanel.FigTypeAct.ttip.Backview.fr.text.changed=20110317061957
+RocketPanel.FigTypeAct.ttip.Backview.fr.text.md5=Ssti6RFnBTNXGcsaD7LQ9w\=\=
+RocketPanel.FigTypeAct.ttip.Sideview..text.changed=20110317061957
+RocketPanel.FigTypeAct.ttip.Sideview..text.md5=QSuwa9rhkCos4AGWreXB6A\=\=
+RocketPanel.FigTypeAct.ttip.Sideview.es.text.changed=20110317062041
+RocketPanel.FigTypeAct.ttip.Sideview.es.text.md5=Njf4QATFRWsAcDfncsaHRw\=\=
+RocketPanel.FigTypeAct.ttip.Sideview.fr.text.changed=20110317061957
+RocketPanel.FigTypeAct.ttip.Sideview.fr.text.md5=pSMg/Uv2AyB+FxDegG864Q\=\=
+RocketPanel.lbl.Motorcfg..text.changed=20110317061957
+RocketPanel.lbl.Motorcfg..text.md5=hUqBQQLOQuV2isn4DoTERA\=\=
+RocketPanel.lbl.Motorcfg.es.text.changed=20110317062041
+RocketPanel.lbl.Motorcfg.es.text.md5=efYZwmQVTVFKW1PjvSQfNg\=\=
+RocketPanel.lbl.Motorcfg.fr.text.changed=20110317061957
+RocketPanel.lbl.Motorcfg.fr.text.md5=st9rfEOQdUm8ojOAmyA0Tg\=\=
+RocketPanel.lbl.infoMessage..text.changed=20110317061957
+RocketPanel.lbl.infoMessage..text.md5=v0kUo0r5oYqnT6JgzFamUA\=\=
+RocketPanel.lbl.infoMessage.es.text.changed=20110317062041
+RocketPanel.lbl.infoMessage.es.text.md5=hygrW8Za0yQrf0CJT4NBdg\=\=
+RocketPanel.lbl.infoMessage.fr.text.changed=20110317061957
+RocketPanel.lbl.infoMessage.fr.text.md5=ZAeUGkwGz0ZbdzbL2XqmWQ\=\=
+Shape.Conical..text.changed=20110317061957
+Shape.Conical..text.md5=oFczFN9xZInLHoKoIKEKfw\=\=
+Shape.Conical.desc1..text.changed=20110317061957
+Shape.Conical.desc1..text.md5=TcY2J51pk3OejMtSDSdNPA\=\=
+Shape.Conical.desc1.es.text.changed=20110317062041
+Shape.Conical.desc1.es.text.md5=TcY2J51pk3OejMtSDSdNPA\=\=
+Shape.Conical.desc1.fr.text.changed=20110317061957
+Shape.Conical.desc1.fr.text.md5=PNdjM2bOv5y09xGUEd9KWA\=\=
+Shape.Conical.desc2..text.changed=20110317061957
+Shape.Conical.desc2..text.md5=peIIPTNQoADk10xqxGqkng\=\=
+Shape.Conical.desc2.es.text.changed=20110317062041
+Shape.Conical.desc2.es.text.md5=peIIPTNQoADk10xqxGqkng\=\=
+Shape.Conical.desc2.fr.text.changed=20110317061957
+Shape.Conical.desc2.fr.text.md5=aja0B+3UcT8i+kkuc/M+Wg\=\=
+Shape.Conical.es.text.changed=20110317062041
+Shape.Conical.es.text.md5=oFczFN9xZInLHoKoIKEKfw\=\=
+Shape.Conical.fr.text.changed=20110317061957
+Shape.Conical.fr.text.md5=KdpWLh9slmw1EpxM3v0u6A\=\=
+Shape.Ellipsoid..text.changed=20110317061957
+Shape.Ellipsoid..text.md5=7uU5fOzYgNFu9yRIGao4PQ\=\=
+Shape.Ellipsoid.desc1..text.changed=20110317061957
+Shape.Ellipsoid.desc1..text.md5=7GQzaN9KCDxQoxle0MpyFQ\=\=
+Shape.Ellipsoid.desc1.es.text.changed=20110317062041
+Shape.Ellipsoid.desc1.es.text.md5=7GQzaN9KCDxQoxle0MpyFQ\=\=
+Shape.Ellipsoid.desc1.fr.text.changed=20110317061957
+Shape.Ellipsoid.desc1.fr.text.md5=q+xqm2VoDMaGoO103PJOYw\=\=
+Shape.Ellipsoid.desc2..text.changed=20110317061957
+Shape.Ellipsoid.desc2..text.md5=fLlIhPnuuNQ/pPT/FgqcSQ\=\=
+Shape.Ellipsoid.desc2.es.text.changed=20110317062041
+Shape.Ellipsoid.desc2.es.text.md5=fLlIhPnuuNQ/pPT/FgqcSQ\=\=
+Shape.Ellipsoid.desc2.fr.text.changed=20110317061957
+Shape.Ellipsoid.desc2.fr.text.md5=SF3oiAP8p6Yy1EDW+e6I0Q\=\=
+Shape.Ellipsoid.es.text.changed=20110317062041
+Shape.Ellipsoid.es.text.md5=7uU5fOzYgNFu9yRIGao4PQ\=\=
+Shape.Ellipsoid.fr.text.changed=20110317061957
+Shape.Ellipsoid.fr.text.md5=HHjK19ROcCNFsQX+nyxXqA\=\=
+Shape.Haackseries..text.changed=20110317061957
+Shape.Haackseries..text.md5=py8pQTgKooNxmG5cKNZn7g\=\=
+Shape.Haackseries.desc1..text.changed=20110317061957
+Shape.Haackseries.desc1..text.md5=VybzlzbSilHA3/OwqdU83Q\=\=
+Shape.Haackseries.desc1.es.text.changed=20110317062041
+Shape.Haackseries.desc1.es.text.md5=VybzlzbSilHA3/OwqdU83Q\=\=
+Shape.Haackseries.desc1.fr.text.changed=20110317061957
+Shape.Haackseries.desc1.fr.text.md5=YL/Q8+dFRpi3YZmGDBwH5g\=\=
+Shape.Haackseries.desc2..text.changed=20110317061957
+Shape.Haackseries.desc2..text.md5=YmRsw4mO6F6ggVBUePvNzQ\=\=
+Shape.Haackseries.desc2.es.text.changed=20110317062041
+Shape.Haackseries.desc2.es.text.md5=YmRsw4mO6F6ggVBUePvNzQ\=\=
+Shape.Haackseries.desc2.fr.text.changed=20110317061957
+Shape.Haackseries.desc2.fr.text.md5=TXN79I5wzZ7qHjhGn6tvKw\=\=
+Shape.Haackseries.es.text.changed=20110317062041
+Shape.Haackseries.es.text.md5=py8pQTgKooNxmG5cKNZn7g\=\=
+Shape.Haackseries.fr.text.changed=20110317061957
+Shape.Haackseries.fr.text.md5=4YjZ+5MsxLMVWG/5Wt0maQ\=\=
+Shape.Ogive..text.changed=20110317061957
+Shape.Ogive..text.md5=jwC8jX5d14XDDyiDS/vw5w\=\=
+Shape.Ogive.desc1..text.changed=20110317061957
+Shape.Ogive.desc1..text.md5=Gg4Xz8vNq6XY7ehoCPtcJA\=\=
+Shape.Ogive.desc1.es.text.changed=20110317062041
+Shape.Ogive.desc1.es.text.md5=Gg4Xz8vNq6XY7ehoCPtcJA\=\=
+Shape.Ogive.desc1.fr.text.changed=20110317061957
+Shape.Ogive.desc1.fr.text.md5=MImWwPSo5TQn2Pk7aJmKgw\=\=
+Shape.Ogive.desc2..text.changed=20110317061957
+Shape.Ogive.desc2..text.md5=01Xnb8Z7Q6TTNzmtTZol2w\=\=
+Shape.Ogive.desc2.es.text.changed=20110317062041
+Shape.Ogive.desc2.es.text.md5=01Xnb8Z7Q6TTNzmtTZol2w\=\=
+Shape.Ogive.desc2.fr.text.changed=20110317061957
+Shape.Ogive.desc2.fr.text.md5=mqFVLLnCXdPkh1aY4g+sfQ\=\=
+Shape.Ogive.es.text.changed=20110317062041
+Shape.Ogive.es.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\=
+Shape.Ogive.fr.text.changed=20110317061957
+Shape.Ogive.fr.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\=
+Shape.Parabolicseries..text.changed=20110317061957
+Shape.Parabolicseries..text.md5=EYW40xRaNfc+C0uivBf9Ug\=\=
+Shape.Parabolicseries.desc1..text.changed=20110317061957
+Shape.Parabolicseries.desc1..text.md5=eEXd8+9GMRMbrXHCZ9Mi8A\=\=
+Shape.Parabolicseries.desc1.es.text.changed=20110317062041
+Shape.Parabolicseries.desc1.es.text.md5=eEXd8+9GMRMbrXHCZ9Mi8A\=\=
+Shape.Parabolicseries.desc1.fr.text.changed=20110317061957
+Shape.Parabolicseries.desc1.fr.text.md5=8e0zroohGZWmahqc3jZjKg\=\=
+Shape.Parabolicseries.desc2..text.changed=20110317061957
+Shape.Parabolicseries.desc2..text.md5=dEPGt+x46kNmN1htAk0wxQ\=\=
+Shape.Parabolicseries.desc2.es.text.changed=20110317062041
+Shape.Parabolicseries.desc2.es.text.md5=dEPGt+x46kNmN1htAk0wxQ\=\=
+Shape.Parabolicseries.desc2.fr.text.changed=20110317061957
+Shape.Parabolicseries.desc2.fr.text.md5=lUdQTLzzj3X1Aejimr61ng\=\=
+Shape.Parabolicseries.es.text.changed=20110317062041
+Shape.Parabolicseries.es.text.md5=EYW40xRaNfc+C0uivBf9Ug\=\=
+Shape.Parabolicseries.fr.text.changed=20110317061957
+Shape.Parabolicseries.fr.text.md5=jnSFa/6bTdPhefIfIXG8yw\=\=
+Shape.Powerseries..text.changed=20110317061957
+Shape.Powerseries..text.md5=txqqbnMJRgpTptXC+mzyeg\=\=
+Shape.Powerseries.descA1..text.changed=20110317061957
+Shape.Powerseries.descA1..text.md5=EDUu4mRnEXUVfyKaW2NIKQ\=\=
+Shape.Powerseries.descA1.es.text.changed=20110317062041
+Shape.Powerseries.descA1.es.text.md5=EDUu4mRnEXUVfyKaW2NIKQ\=\=
+Shape.Powerseries.descA1.fr.text.changed=20110317061957
+Shape.Powerseries.descA1.fr.text.md5=kQrALdUk5iXJzLzrbBXnuw\=\=
+Shape.Powerseries.descA2..text.changed=20110317061957
+Shape.Powerseries.descA2..text.md5=1jKcaCazuh7PNs3BkVc6Kg\=\=
+Shape.Powerseries.descA2.es.text.changed=20110317062041
+Shape.Powerseries.descA2.es.text.md5=1jKcaCazuh7PNs3BkVc6Kg\=\=
+Shape.Powerseries.descA2.fr.text.changed=20110317061957
+Shape.Powerseries.descA2.fr.text.md5=ML0j4ftQOMMia/eCDPpKpA\=\=
+Shape.Powerseries.descA3..text.changed=20110317061957
+Shape.Powerseries.descA3..text.md5=XMJhQNRwyENzvL1X+U+AjQ\=\=
+Shape.Powerseries.descA3.es.text.changed=20110317062041
+Shape.Powerseries.descA3.es.text.md5=XMJhQNRwyENzvL1X+U+AjQ\=\=
+Shape.Powerseries.descA3.fr.text.changed=20110317061957
+Shape.Powerseries.descA3.fr.text.md5=Pxbr4dDViCipgpT7Oh92Fw\=\=
+Shape.Powerseries.descB1..text.changed=20110317061957
+Shape.Powerseries.descB1..text.md5=Z0H3/s+HBuf+BJJu/ps2dw\=\=
+Shape.Powerseries.descB1.es.text.changed=20110317062041
+Shape.Powerseries.descB1.es.text.md5=Z0H3/s+HBuf+BJJu/ps2dw\=\=
+Shape.Powerseries.descB1.fr.text.changed=20110317061957
+Shape.Powerseries.descB1.fr.text.md5=sYlp3hE13fp/mTO8HA0g/g\=\=
+Shape.Powerseries.descB2..text.changed=20110317061957
+Shape.Powerseries.descB2..text.md5=mUiD9qVyRAaTd+Y56f6MXw\=\=
+Shape.Powerseries.descB2.es.text.changed=20110317062041
+Shape.Powerseries.descB2.es.text.md5=mUiD9qVyRAaTd+Y56f6MXw\=\=
+Shape.Powerseries.descB2.fr.text.changed=20110317061957
+Shape.Powerseries.descB2.fr.text.md5=+EMLHjj7IO+n09K51mPTzw\=\=
+Shape.Powerseries.descB3..text.changed=20110317061957
+Shape.Powerseries.descB3..text.md5=lCje8XOjke26knMQ/PW/Ig\=\=
+Shape.Powerseries.descB3.es.text.changed=20110317062041
+Shape.Powerseries.descB3.es.text.md5=lCje8XOjke26knMQ/PW/Ig\=\=
+Shape.Powerseries.descB3.fr.text.changed=20110317061957
+Shape.Powerseries.descB3.fr.text.md5=lm1aJ24xvjEYxXLuFa8nKA\=\=
+Shape.Powerseries.es.text.changed=20110317062041
+Shape.Powerseries.es.text.md5=txqqbnMJRgpTptXC+mzyeg\=\=
+Shape.Powerseries.fr.text.changed=20110317061957
+Shape.Powerseries.fr.text.md5=vcZbZA1z0wAuZp0l/ccRdQ\=\=
+ShockCord.ShockCord..text.changed=20110317061957
+ShockCord.ShockCord..text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\=
+ShockCord.ShockCord.es.text.changed=20110317062041
+ShockCord.ShockCord.es.text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\=
+ShockCord.ShockCord.fr.text.changed=20110317061957
+ShockCord.ShockCord.fr.text.md5=RnR22FP/b23+JTzmuMDTbw\=\=
+ShockCordCfg.lbl.Packeddiam..text.changed=20110317061957
+ShockCordCfg.lbl.Packeddiam..text.md5=ZLli2T49cm2t4O2DM2Qdfg\=\=
+ShockCordCfg.lbl.Packeddiam.es.text.changed=20110317062041
+ShockCordCfg.lbl.Packeddiam.es.text.md5=h2fYHq6dIS69oa5+UT2jzQ\=\=
+ShockCordCfg.lbl.Packeddiam.fr.text.changed=20110317061957
+ShockCordCfg.lbl.Packeddiam.fr.text.md5=g380nkSdujAcYudBWYsSug\=\=
+ShockCordCfg.lbl.Packedlength..text.changed=20110317061957
+ShockCordCfg.lbl.Packedlength..text.md5=UXXIbj2JBgPTWzdfLI0olQ\=\=
+ShockCordCfg.lbl.Packedlength.es.text.changed=20110317062041
+ShockCordCfg.lbl.Packedlength.es.text.md5=DImf4/EwgTobPEQmPeECXA\=\=
+ShockCordCfg.lbl.Packedlength.fr.text.changed=20110317061957
+ShockCordCfg.lbl.Packedlength.fr.text.md5=PdS66kMXqE7v7fQkz222Xg\=\=
+ShockCordCfg.lbl.Posrelativeto..text.changed=20110317061957
+ShockCordCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+ShockCordCfg.lbl.Posrelativeto.es.text.changed=20110317062041
+ShockCordCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+ShockCordCfg.lbl.Posrelativeto.fr.text.changed=20110317061957
+ShockCordCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+ShockCordCfg.lbl.Shockcordlength..text.changed=20110317061957
+ShockCordCfg.lbl.Shockcordlength..text.md5=m2JEPiQ+qmfaGIwKqbkbeA\=\=
+ShockCordCfg.lbl.Shockcordlength.es.text.changed=20110317062041
+ShockCordCfg.lbl.Shockcordlength.es.text.md5=m2JEPiQ+qmfaGIwKqbkbeA\=\=
+ShockCordCfg.lbl.Shockcordlength.fr.text.changed=20110317061957
+ShockCordCfg.lbl.Shockcordlength.fr.text.md5=NZTCexhp1YSvSuAhzXqN2w\=\=
+ShockCordCfg.lbl.Shockcordmaterial..text.changed=20110317061957
+ShockCordCfg.lbl.Shockcordmaterial..text.md5=JRNrQQrE8AvP83jDro1TRA\=\=
+ShockCordCfg.lbl.Shockcordmaterial.es.text.changed=20110317062041
+ShockCordCfg.lbl.Shockcordmaterial.es.text.md5=4O93qGNZgYkstK3ZbQ332g\=\=
+ShockCordCfg.lbl.Shockcordmaterial.fr.text.changed=20110317061957
+ShockCordCfg.lbl.Shockcordmaterial.fr.text.md5=Iqa0zPDrXelVsP2rA8QhHw\=\=
+ShockCordCfg.lbl.plus..text.changed=20110317061957
+ShockCordCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ShockCordCfg.lbl.plus.es.text.changed=20110317062041
+ShockCordCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ShockCordCfg.lbl.plus.fr.text.changed=20110317061957
+ShockCordCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ShockCordCfg.tab.General..text.changed=20110317061957
+ShockCordCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+ShockCordCfg.tab.General.es.text.changed=20110317062041
+ShockCordCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+ShockCordCfg.tab.General.fr.text.changed=20110317061957
+ShockCordCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+ShockCordCfg.tab.ttip.General..text.changed=20110317061957
+ShockCordCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+ShockCordCfg.tab.ttip.General.es.text.changed=20110317062041
+ShockCordCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+ShockCordCfg.tab.ttip.General.fr.text.changed=20110317061957
+ShockCordCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+SimExpPan.Col.Unit..text.changed=20110317061957
+SimExpPan.Col.Unit..text.md5=GcVio2rrRV0JU0+TtPUjbw\=\=
+SimExpPan.Col.Unit.es.text.changed=20110317062041
+SimExpPan.Col.Unit.es.text.md5=GcVio2rrRV0JU0+TtPUjbw\=\=
+SimExpPan.Col.Unit.fr.text.changed=20110317061957
+SimExpPan.Col.Unit.fr.text.md5=7OCXHL7LsvpU0MsJoI/PUg\=\=
+SimExpPan.Col.Variable..text.changed=20110317061957
+SimExpPan.Col.Variable..text.md5=R8FIQNjhUzH6QgubL3V82Q\=\=
+SimExpPan.Col.Variable.es.text.changed=20110317062041
+SimExpPan.Col.Variable.es.text.md5=R8FIQNjhUzH6QgubL3V82Q\=\=
+SimExpPan.Col.Variable.fr.text.changed=20110317061957
+SimExpPan.Col.Variable.fr.text.md5=R8FIQNjhUzH6QgubL3V82Q\=\=
+SimExpPan.ExportingVar.desc1..text.changed=20110317061957
+SimExpPan.ExportingVar.desc1..text.md5=7QOGiZQ41+LsaCdNA5Yogg\=\=
+SimExpPan.ExportingVar.desc1.es.text.changed=20110317062041
+SimExpPan.ExportingVar.desc1.es.text.md5=7QOGiZQ41+LsaCdNA5Yogg\=\=
+SimExpPan.ExportingVar.desc1.fr.text.changed=20110317061957
+SimExpPan.ExportingVar.desc1.fr.text.md5=vfx+vv+gofxyxUurGMUZEQ\=\=
+SimExpPan.ExportingVar.desc2..text.changed=20110317061957
+SimExpPan.ExportingVar.desc2..text.md5=m2dCYj0pXcKRFELUnPejdg\=\=
+SimExpPan.ExportingVar.desc2.es.text.changed=20110317062041
+SimExpPan.ExportingVar.desc2.es.text.md5=m2dCYj0pXcKRFELUnPejdg\=\=
+SimExpPan.ExportingVar.desc2.fr.text.changed=20110317061957
+SimExpPan.ExportingVar.desc2.fr.text.md5=3v7A0Xx5mVRzQoPLJdsJbQ\=\=
+SimExpPan.ExportingVar.desc3..text.changed=20110317061957
+SimExpPan.ExportingVar.desc3..text.md5=PCLuMbKMr0vf8fYO1Ycfuw\=\=
+SimExpPan.ExportingVar.desc3.es.text.changed=20110317062041
+SimExpPan.ExportingVar.desc3.es.text.md5=PCLuMbKMr0vf8fYO1Ycfuw\=\=
+SimExpPan.ExportingVar.desc3.fr.text.changed=20110317061957
+SimExpPan.ExportingVar.desc3.fr.text.md5=nA/s83NgXWMyTt5D5OLsKQ\=\=
+SimExpPan.Fileexists.desc1..text.changed=20110317061957
+SimExpPan.Fileexists.desc1..text.md5=70/mN5sZOxVzgnuY1Vt8bw\=\=
+SimExpPan.Fileexists.desc1.es.text.changed=20110317062041
+SimExpPan.Fileexists.desc1.es.text.md5=70/mN5sZOxVzgnuY1Vt8bw\=\=
+SimExpPan.Fileexists.desc1.fr.text.changed=20110317061957
+SimExpPan.Fileexists.desc1.fr.text.md5=difeNRrruxYGHIPvmdW6Mw\=\=
+SimExpPan.Fileexists.desc2..text.changed=20110317061957
+SimExpPan.Fileexists.desc2..text.md5=1hx0LSrG91VR6prkah9CgQ\=\=
+SimExpPan.Fileexists.desc2.es.text.changed=20110317062041
+SimExpPan.Fileexists.desc2.es.text.md5=1hx0LSrG91VR6prkah9CgQ\=\=
+SimExpPan.Fileexists.desc2.fr.text.changed=20110317061957
+SimExpPan.Fileexists.desc2.fr.text.md5=A6RI99AP5r5yDfGivlTICQ\=\=
+SimExpPan.Fileexists.title..text.changed=20110317061957
+SimExpPan.Fileexists.title..text.md5=ZLSxQF9+zve/FlwIr3ih3g\=\=
+SimExpPan.Fileexists.title.es.text.changed=20110317062041
+SimExpPan.Fileexists.title.es.text.md5=ZLSxQF9+zve/FlwIr3ih3g\=\=
+SimExpPan.Fileexists.title.fr.text.changed=20110317061957
+SimExpPan.Fileexists.title.fr.text.md5=H7iWSf9TmA2BDYAXpsbvXQ\=\=
+SimExpPan.border.Comments..text.changed=20110317061957
+SimExpPan.border.Comments..text.md5=hBPGg7SyfMP029TJAynYug\=\=
+SimExpPan.border.Comments.es.text.changed=20110317062041
+SimExpPan.border.Comments.es.text.md5=MARZIhY9h9rxlNm8sqqKxA\=\=
+SimExpPan.border.Comments.fr.text.changed=20110317061957
+SimExpPan.border.Comments.fr.text.md5=XCT7v7OS5WiCW7E1BhuhkQ\=\=
+SimExpPan.border.Fieldsep..text.changed=20110317061957
+SimExpPan.border.Fieldsep..text.md5=NevQuh6tVO7pxWhEN6pRmw\=\=
+SimExpPan.border.Fieldsep.es.text.changed=20110317062041
+SimExpPan.border.Fieldsep.es.text.md5=F1L5yoaZxE1/UyinNdXDXA\=\=
+SimExpPan.border.Fieldsep.fr.text.changed=20110317061957
+SimExpPan.border.Fieldsep.fr.text.md5=o7Cx3HpSphBkXUON3vPsVg\=\=
+SimExpPan.border.Vartoexport..text.changed=20110317061957
+SimExpPan.border.Vartoexport..text.md5=e6CREd9HyFfw+NvBtVxifA\=\=
+SimExpPan.border.Vartoexport.es.text.changed=20110317062041
+SimExpPan.border.Vartoexport.es.text.md5=s1A13IFNGHv7P10nZdw/AQ\=\=
+SimExpPan.border.Vartoexport.fr.text.changed=20110317061957
+SimExpPan.border.Vartoexport.fr.text.md5=7hG66BwmNnC0TIWQggyMKw\=\=
+SimExpPan.but.Exporttofile..text.changed=20110317061957
+SimExpPan.but.Exporttofile..text.md5=rrEYVLIMeUQLUWB4G0UAqA\=\=
+SimExpPan.but.Exporttofile.es.text.changed=20110317062041
+SimExpPan.but.Exporttofile.es.text.md5=KQ9+kifGuvz+trF4i9Y6Qg\=\=
+SimExpPan.but.Exporttofile.fr.text.changed=20110317061957
+SimExpPan.but.Exporttofile.fr.text.md5=Uns3erwNPuQ4PzrB80Psmg\=\=
+SimExpPan.but.Selectall..text.changed=20110317061957
+SimExpPan.but.Selectall..text.md5=TEHgvZV2mLWBAKXGh9dX2Q\=\=
+SimExpPan.but.Selectall.es.text.changed=20110317062041
+SimExpPan.but.Selectall.es.text.md5=jwwV9moesy7ZzW9SafToEQ\=\=
+SimExpPan.but.Selectall.fr.text.changed=20110317061957
+SimExpPan.but.Selectall.fr.text.md5=5cJm3hB1vmCaFn1pXUAx1g\=\=
+SimExpPan.but.Selectnone..text.changed=20110317061957
+SimExpPan.but.Selectnone..text.md5=ahhU9i4heRHbmipDfSGSEg\=\=
+SimExpPan.but.Selectnone.es.text.changed=20110317062041
+SimExpPan.but.Selectnone.es.text.md5=IUQkBoH4hngBTigP9FDDiw\=\=
+SimExpPan.but.Selectnone.fr.text.changed=20110317061957
+SimExpPan.but.Selectnone.fr.text.md5=dYd8uI8/j9VqQNugFBQK5w\=\=
+SimExpPan.checkbox.Incflightevents..text.changed=20110317061957
+SimExpPan.checkbox.Incflightevents..text.md5=215rCrfLPRolKLZ5arKYeA\=\=
+SimExpPan.checkbox.Incflightevents.es.text.changed=20110317062041
+SimExpPan.checkbox.Incflightevents.es.text.md5=PhYYf9krG6vFX3jLeEcj4g\=\=
+SimExpPan.checkbox.Incflightevents.fr.text.changed=20110317061957
+SimExpPan.checkbox.Incflightevents.fr.text.md5=84wjG89sagiQ19078fn23w\=\=
+SimExpPan.checkbox.Includefielddesc..text.changed=20110317061957
+SimExpPan.checkbox.Includefielddesc..text.md5=iadKdUIG1vMFTLAqPrtIzA\=\=
+SimExpPan.checkbox.Includefielddesc.es.text.changed=20110317062041
+SimExpPan.checkbox.Includefielddesc.es.text.md5=dlgOyCoGA68+FhzcxDU+TA\=\=
+SimExpPan.checkbox.Includefielddesc.fr.text.changed=20110317061957
+SimExpPan.checkbox.Includefielddesc.fr.text.md5=OiKvgPsybO2/lauon6KxaQ\=\=
+SimExpPan.checkbox.Includesimudesc..text.changed=20110317061957
+SimExpPan.checkbox.Includesimudesc..text.md5=V+8GUPF17dVnFpBwZHGEJA\=\=
+SimExpPan.checkbox.Includesimudesc.es.text.changed=20110317062041
+SimExpPan.checkbox.Includesimudesc.es.text.md5=fDReLQ1wtuKqzAidK3v0Yg\=\=
+SimExpPan.checkbox.Includesimudesc.fr.text.changed=20110317061957
+SimExpPan.checkbox.Includesimudesc.fr.text.md5=RW9NorkTT5GSgP3FDLYzNw\=\=
+SimExpPan.checkbox.ttip.Incflightevents..text.changed=20110317061957
+SimExpPan.checkbox.ttip.Incflightevents..text.md5=ZY5c0qP+PMY6M/SOr1Ty5g\=\=
+SimExpPan.checkbox.ttip.Incflightevents.es.text.changed=20110317062041
+SimExpPan.checkbox.ttip.Incflightevents.es.text.md5=tC0O0WMJLSl1PvwzCaP11w\=\=
+SimExpPan.checkbox.ttip.Incflightevents.fr.text.changed=20110317061957
+SimExpPan.checkbox.ttip.Incflightevents.fr.text.md5=DWMxpzcm3dO7lxJGisOjiA\=\=
+SimExpPan.checkbox.ttip.Includefielddesc..text.changed=20110317061957
+SimExpPan.checkbox.ttip.Includefielddesc..text.md5=ZBW/gOSRIk/1/10L5IwlFw\=\=
+SimExpPan.checkbox.ttip.Includefielddesc.es.text.changed=20110317062041
+SimExpPan.checkbox.ttip.Includefielddesc.es.text.md5=nwcqf2QLGwUJq9NpE+lhAA\=\=
+SimExpPan.checkbox.ttip.Includefielddesc.fr.text.changed=20110317061957
+SimExpPan.checkbox.ttip.Includefielddesc.fr.text.md5=95O7CCvYdqsGO0FoucatdA\=\=
+SimExpPan.checkbox.ttip.Includesimudesc..text.changed=20110317061957
+SimExpPan.checkbox.ttip.Includesimudesc..text.md5=zFfmZhq4CkOcPweUhjfm/g\=\=
+SimExpPan.checkbox.ttip.Includesimudesc.es.text.changed=20110317062041
+SimExpPan.checkbox.ttip.Includesimudesc.es.text.md5=cIhT/EaQa/C9HH3A/I816w\=\=
+SimExpPan.checkbox.ttip.Includesimudesc.fr.text.changed=20110317061957
+SimExpPan.checkbox.ttip.Includesimudesc.fr.text.md5=Qd6ywWo/2Au92zexTreKuA\=\=
+SimExpPan.desc..text.changed=20110317061957
+SimExpPan.desc..text.md5=RjiB5jgrldfMzev51POXRA\=\=
+SimExpPan.desc.es.text.changed=20110317062041
+SimExpPan.desc.es.text.md5=axBDJ60Nvg/fSJQ/OhHGvw\=\=
+SimExpPan.desc.fr.text.changed=20110317061957
+SimExpPan.desc.fr.text.md5=b3pQcNdQ7P0kJeBenErRQw\=\=
+SimExpPan.lbl.Commentchar..text.changed=20110317061957
+SimExpPan.lbl.Commentchar..text.md5=jQRh0+nE8kTUm5ecBouGMA\=\=
+SimExpPan.lbl.Commentchar.es.text.changed=20110317062041
+SimExpPan.lbl.Commentchar.es.text.md5=Nw1X9E/2jM5Drtc38OPQ0w\=\=
+SimExpPan.lbl.Commentchar.fr.text.changed=20110317061957
+SimExpPan.lbl.Commentchar.fr.text.md5=KKCKQB0fKOJ8ZP+gW08OqA\=\=
+SimExpPan.lbl.Fieldsepstr..text.changed=20110317061957
+SimExpPan.lbl.Fieldsepstr..text.md5=UQl9XX8d2Nnaor2EDw8FSQ\=\=
+SimExpPan.lbl.Fieldsepstr.es.text.changed=20110317062041
+SimExpPan.lbl.Fieldsepstr.es.text.md5=o3JpCtBRfg8WglnD1gITAg\=\=
+SimExpPan.lbl.Fieldsepstr.fr.text.changed=20110317061957
+SimExpPan.lbl.Fieldsepstr.fr.text.md5=iVOya5b5YAcD6U9vYeoXeg\=\=
+SimExpPan.lbl.longA1..text.changed=20110317061957
+SimExpPan.lbl.longA1..text.md5=vd8j63Y1WdCVSMGzmt+QaQ\=\=
+SimExpPan.lbl.longA1.es.text.changed=20110317062041
+SimExpPan.lbl.longA1.es.text.md5=WeEGrAJDthg2b0cMA3F+HA\=\=
+SimExpPan.lbl.longA1.fr.text.changed=20110317061957
+SimExpPan.lbl.longA1.fr.text.md5=u08vfF3ZR/WgajyNBHek7A\=\=
+SimExpPan.lbl.longA2..text.changed=20110317061957
+SimExpPan.lbl.longA2..text.md5=d67MEZfstTttt/+TSY1SzA\=\=
+SimExpPan.lbl.longA2.es.text.changed=20110317062041
+SimExpPan.lbl.longA2.es.text.md5=wcnbbIPed/i2/jJUhNbxWw\=\=
+SimExpPan.lbl.longA2.fr.text.changed=20110317061957
+SimExpPan.lbl.longA2.fr.text.md5=GRJuWUJREYIPqnMmx+YZVQ\=\=
+SimExpPan.lbl.ttip.Commentchar..text.changed=20110317061957
+SimExpPan.lbl.ttip.Commentchar..text.md5=1OymuQ+eSOGMwss4GZmM1Q\=\=
+SimExpPan.lbl.ttip.Commentchar.es.text.changed=20110317062041
+SimExpPan.lbl.ttip.Commentchar.es.text.md5=scQM1XeIwZA6ELqNE93OlQ\=\=
+SimExpPan.lbl.ttip.Commentchar.fr.text.changed=20110317061957
+SimExpPan.lbl.ttip.Commentchar.fr.text.md5=53tC9SUf4xOXZZXyT7163Q\=\=
+SimuRunDlg.lbl.Altitude..text.changed=20110317061957
+SimuRunDlg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+SimuRunDlg.lbl.Altitude.es.text.changed=20110317062041
+SimuRunDlg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\=
+SimuRunDlg.lbl.Altitude.fr.text.changed=20110317061957
+SimuRunDlg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+SimuRunDlg.lbl.Running..text.changed=20110317061957
+SimuRunDlg.lbl.Running..text.md5=nCmpKDg/x9YBrd3JY9XAtA\=\=
+SimuRunDlg.lbl.Running.es.text.changed=20110317062041
+SimuRunDlg.lbl.Running.es.text.md5=t0hClt3tsdR27aUNxWZLNQ\=\=
+SimuRunDlg.lbl.Running.fr.text.changed=20110317061957
+SimuRunDlg.lbl.Running.fr.text.md5=upJoJBKZ8fTUez83ESBvGA\=\=
+SimuRunDlg.lbl.Simutime..text.changed=20110317061957
+SimuRunDlg.lbl.Simutime..text.md5=0RS8WyigaWMiUlTNQoV7vw\=\=
+SimuRunDlg.lbl.Simutime.es.text.changed=20110317062041
+SimuRunDlg.lbl.Simutime.es.text.md5=jTlI+zP/DFjPLhGWQT//lw\=\=
+SimuRunDlg.lbl.Simutime.fr.text.changed=20110317061957
+SimuRunDlg.lbl.Simutime.fr.text.md5=Dd3JMtIlCGfZZXC7iaLmjA\=\=
+SimuRunDlg.lbl.Velocity..text.changed=20110317061957
+SimuRunDlg.lbl.Velocity..text.md5=amkZLQ7Ohc5lBM+RMkfv/A\=\=
+SimuRunDlg.lbl.Velocity.es.text.changed=20110317062041
+SimuRunDlg.lbl.Velocity.es.text.md5=JemM4HUdhG9EOAzTlOrJzA\=\=
+SimuRunDlg.lbl.Velocity.fr.text.changed=20110317061957
+SimuRunDlg.lbl.Velocity.fr.text.md5=oMRuKRVl4xB6oKw4Jwd+og\=\=
+SimuRunDlg.msg.AnException1..text.changed=20110317061957
+SimuRunDlg.msg.AnException1..text.md5=+kWYuH3gNDP9Ucdf7IaxUg\=\=
+SimuRunDlg.msg.AnException1.es.text.changed=20110317062041
+SimuRunDlg.msg.AnException1.es.text.md5=oeQL8GLYn1yVggaUMgutjw\=\=
+SimuRunDlg.msg.AnException1.fr.text.changed=20110317061957
+SimuRunDlg.msg.AnException1.fr.text.md5=kmZQH64Q0iTUBIHkAsAnTg\=\=
+SimuRunDlg.msg.AnException2..text.changed=20110317061957
+SimuRunDlg.msg.AnException2..text.md5=igR1+s3eAV9gl0J0Ecm8lw\=\=
+SimuRunDlg.msg.AnException2.es.text.changed=20110317062041
+SimuRunDlg.msg.AnException2.es.text.md5=N3RSxETcuLdxueRSmDs2uA\=\=
+SimuRunDlg.msg.AnException2.fr.text.changed=20110317061957
+SimuRunDlg.msg.AnException2.fr.text.md5=0Z592+sI/18umbgJYEb7Xg\=\=
+SimuRunDlg.msg.AssertionError1..text.changed=20110317061957
+SimuRunDlg.msg.AssertionError1..text.md5=lfSKzA90PPCIoUGgSKK34g\=\=
+SimuRunDlg.msg.AssertionError1.es.text.changed=20110317062041
+SimuRunDlg.msg.AssertionError1.es.text.md5=04bBtE4Ob8cKnf0AWGy0TA\=\=
+SimuRunDlg.msg.AssertionError1.fr.text.changed=20110317061957
+SimuRunDlg.msg.AssertionError1.fr.text.md5=kSFFC6wqTSpBcqYa+GTnxw\=\=
+SimuRunDlg.msg.AssertionError2..text.changed=20110317061957
+SimuRunDlg.msg.AssertionError2..text.md5=igR1+s3eAV9gl0J0Ecm8lw\=\=
+SimuRunDlg.msg.AssertionError2.es.text.changed=20110317062041
+SimuRunDlg.msg.AssertionError2.es.text.md5=N3RSxETcuLdxueRSmDs2uA\=\=
+SimuRunDlg.msg.AssertionError2.fr.text.changed=20110317061957
+SimuRunDlg.msg.AssertionError2.fr.text.md5=0Z592+sI/18umbgJYEb7Xg\=\=
+SimuRunDlg.msg.Unabletosim..text.changed=20110317061957
+SimuRunDlg.msg.Unabletosim..text.md5=prdzX/arJfUPkqa5FTFkcQ\=\=
+SimuRunDlg.msg.Unabletosim.es.text.changed=20110317062041
+SimuRunDlg.msg.Unabletosim.es.text.md5=dx7ykAySIvn3Ia8AueSX8A\=\=
+SimuRunDlg.msg.Unabletosim.fr.text.changed=20110317061957
+SimuRunDlg.msg.Unabletosim.fr.text.md5=DA/LR3j2rEEcMorK9mvMLw\=\=
+SimuRunDlg.msg.errorOccurred..text.changed=20110317061957
+SimuRunDlg.msg.errorOccurred..text.md5=vbnUhY0WWy3bkDKVn0aGkA\=\=
+SimuRunDlg.msg.errorOccurred.es.text.changed=20110317062041
+SimuRunDlg.msg.errorOccurred.es.text.md5=S0DqZhCxB+jnV/B1gVYb1g\=\=
+SimuRunDlg.msg.errorOccurred.fr.text.changed=20110317061957
+SimuRunDlg.msg.errorOccurred.fr.text.md5=5BdVoCnih+mKR4ZzNjtm3A\=\=
+SimuRunDlg.msg.unknownerror1..text.changed=20110317061957
+SimuRunDlg.msg.unknownerror1..text.md5=Yii2QnKXuVTxOq5z06I9PQ\=\=
+SimuRunDlg.msg.unknownerror1.es.text.changed=20110317062041
+SimuRunDlg.msg.unknownerror1.es.text.md5=2utY5H8Ze4ojT1DpcoWXsw\=\=
+SimuRunDlg.msg.unknownerror1.fr.text.changed=20110317061957
+SimuRunDlg.msg.unknownerror1.fr.text.md5=YdVMVvMwg//977E2YlpjNQ\=\=
+SimuRunDlg.msg.unknownerror2..text.changed=20110317061957
+SimuRunDlg.msg.unknownerror2..text.md5=AjuSNENYxOQGF0WqFeTFpw\=\=
+SimuRunDlg.msg.unknownerror2.es.text.changed=20110317062041
+SimuRunDlg.msg.unknownerror2.es.text.md5=w63WhA0j4tPkikGPg3Fiug\=\=
+SimuRunDlg.msg.unknownerror2.fr.text.changed=20110317061957
+SimuRunDlg.msg.unknownerror2.fr.text.md5=/tmQcLCTq+RUxEDaSzlxag\=\=
+SimuRunDlg.title.RunSim..text.changed=20110317061957
+SimuRunDlg.title.RunSim..text.md5=JQ6acbvmL4OayHJh2Rum2w\=\=
+SimuRunDlg.title.RunSim.es.text.changed=20110317062041
+SimuRunDlg.title.RunSim.es.text.md5=yYAvKKJdI+j3cLiJZo8cBA\=\=
+SimuRunDlg.title.RunSim.fr.text.changed=20110317061957
+SimuRunDlg.title.RunSim.fr.text.md5=KNX7awTyGQi+z36oG0GXsQ\=\=
+SleeveCfg.tab.General..text.changed=20110317061957
+SleeveCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+SleeveCfg.tab.General.es.text.changed=20110317062041
+SleeveCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+SleeveCfg.tab.General.fr.text.changed=20110317061957
+SleeveCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+SleeveCfg.tab.Generalproperties..text.changed=20110317061957
+SleeveCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+SleeveCfg.tab.Generalproperties.es.text.changed=20110317062041
+SleeveCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+SleeveCfg.tab.Generalproperties.fr.text.changed=20110317061957
+SleeveCfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+SleeveCfg.tab.Innerdiam..text.changed=20110317061957
+SleeveCfg.tab.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\=
+SleeveCfg.tab.Innerdiam.es.text.changed=20110317062041
+SleeveCfg.tab.Innerdiam.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\=
+SleeveCfg.tab.Innerdiam.fr.text.changed=20110317061957
+SleeveCfg.tab.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\=
+SleeveCfg.tab.Length..text.changed=20110317061957
+SleeveCfg.tab.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\=
+SleeveCfg.tab.Length.es.text.changed=20110317062041
+SleeveCfg.tab.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\=
+SleeveCfg.tab.Length.fr.text.changed=20110317061957
+SleeveCfg.tab.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\=
+SleeveCfg.tab.Outerdiam..text.changed=20110317061957
+SleeveCfg.tab.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\=
+SleeveCfg.tab.Outerdiam.es.text.changed=20110317062041
+SleeveCfg.tab.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\=
+SleeveCfg.tab.Outerdiam.fr.text.changed=20110317061957
+SleeveCfg.tab.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\=
+SleeveCfg.tab.Wallthickness..text.changed=20110317061957
+SleeveCfg.tab.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\=
+SleeveCfg.tab.Wallthickness.es.text.changed=20110317062041
+SleeveCfg.tab.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\=
+SleeveCfg.tab.Wallthickness.fr.text.changed=20110317061957
+SleeveCfg.tab.Wallthickness.fr.text.md5=yvurrozSZlNuqNTccufoSw\=\=
+Stage.Stage..text.changed=20110317061957
+Stage.Stage..text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\=
+Stage.Stage.es.text.changed=20110317062041
+Stage.Stage.es.text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\=
+Stage.Stage.fr.text.changed=20110317061957
+Stage.Stage.fr.text.md5=GsZSqK7cfTEM0uSxkKZ03g\=\=
+StageAction.Stage..text.changed=20110317061957
+StageAction.Stage..text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\=
+StageAction.Stage.es.text.changed=20110317062041
+StageAction.Stage.es.text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\=
+StageAction.Stage.fr.text.changed=20110317061957
+StageAction.Stage.fr.text.md5=GsZSqK7cfTEM0uSxkKZ03g\=\=
+StorageOptChooser.checkbox.Compfile..text.changed=20110317061957
+StorageOptChooser.checkbox.Compfile..text.md5=2yJLhWtOqD8+QbYKF0BPDg\=\=
+StorageOptChooser.checkbox.Compfile.es.text.changed=20110317062041
+StorageOptChooser.checkbox.Compfile.es.text.md5=yAHn+UL8ObHQB6LETmzyEw\=\=
+StorageOptChooser.checkbox.Compfile.fr.text.changed=20110317061957
+StorageOptChooser.checkbox.Compfile.fr.text.md5=AriofVV2svncy89104lESQ\=\=
+StorageOptChooser.lbl.Estfilesize..text.changed=20110317061957
+StorageOptChooser.lbl.Estfilesize..text.md5=qebbOYq6e8Q4kQ0XhwAYCg\=\=
+StorageOptChooser.lbl.Estfilesize.es.text.changed=20110317062041
+StorageOptChooser.lbl.Estfilesize.es.text.md5=YYPAeuhCX/peVuyJuE2KfA\=\=
+StorageOptChooser.lbl.Estfilesize.fr.text.changed=20110317061957
+StorageOptChooser.lbl.Estfilesize.fr.text.md5=yUDON8L5GhE73GqAN7xZxw\=\=
+StorageOptChooser.lbl.Saveopt..text.changed=20110317061957
+StorageOptChooser.lbl.Saveopt..text.md5=kRiD4hklEWPEoNvjKzbvjA\=\=
+StorageOptChooser.lbl.Saveopt.es.text.changed=20110317062041
+StorageOptChooser.lbl.Saveopt.es.text.md5=7kyEiyBRR/2tbO6CzoKcnw\=\=
+StorageOptChooser.lbl.Saveopt.fr.text.changed=20110317061957
+StorageOptChooser.lbl.Saveopt.fr.text.md5=14ocVB6TM5F3S/7LpG8NZQ\=\=
+StorageOptChooser.lbl.Simdatatostore..text.changed=20110317061957
+StorageOptChooser.lbl.Simdatatostore..text.md5=IYCLXi4TFSvE8GD4m87iMQ\=\=
+StorageOptChooser.lbl.Simdatatostore.es.text.changed=20110317062041
+StorageOptChooser.lbl.Simdatatostore.es.text.md5=9wnfMkiMVZI3JTyV6YlDXQ\=\=
+StorageOptChooser.lbl.Simdatatostore.fr.text.changed=20110317061957
+StorageOptChooser.lbl.Simdatatostore.fr.text.md5=EgwKpX1Zezms8mpJYg+1fA\=\=
+StorageOptChooser.lbl.UsingComp..text.changed=20110317061957
+StorageOptChooser.lbl.UsingComp..text.md5=qt+6OGagWGbmLI5ALEYY9w\=\=
+StorageOptChooser.lbl.UsingComp.es.text.changed=20110317062041
+StorageOptChooser.lbl.UsingComp.es.text.md5=Qj7tPXRPPL+VH98H/dg5gA\=\=
+StorageOptChooser.lbl.UsingComp.fr.text.changed=20110317061957
+StorageOptChooser.lbl.UsingComp.fr.text.md5=C1f7Kw7WfvN8QgEDjAJPCA\=\=
+StorageOptChooser.lbl.longA1..text.changed=20110317061957
+StorageOptChooser.lbl.longA1..text.md5=44oOdU/uGiZGp2CsqEdmWQ\=\=
+StorageOptChooser.lbl.longA1.es.text.changed=20110317062041
+StorageOptChooser.lbl.longA1.es.text.md5=HVF88+qmoNwfUVXSPD4cng\=\=
+StorageOptChooser.lbl.longA1.fr.text.changed=20110317061957
+StorageOptChooser.lbl.longA1.fr.text.md5=YfPCBVK6BcdV3QDIJluj+g\=\=
+StorageOptChooser.lbl.longA2..text.changed=20110317061957
+StorageOptChooser.lbl.longA2..text.md5=l7wKdZblyPZgrEzw+4zLNg\=\=
+StorageOptChooser.lbl.longA2.es.text.changed=20110317062041
+StorageOptChooser.lbl.longA2.es.text.md5=TbilLD+N3RfbMx9n8RaPUA\=\=
+StorageOptChooser.lbl.longA2.fr.text.changed=20110317061957
+StorageOptChooser.lbl.longA2.fr.text.md5=18RfzVC5eDLQ/YOK8PKHYw\=\=
+StorageOptChooser.lbl.longB1..text.changed=20110317061957
+StorageOptChooser.lbl.longB1..text.md5=0DNnQcQIX6/VBQgLWi+XwA\=\=
+StorageOptChooser.lbl.longB1.es.text.changed=20110317062041
+StorageOptChooser.lbl.longB1.es.text.md5=dwiCcbcdsF9gQ9pABZuOtg\=\=
+StorageOptChooser.lbl.longB1.fr.text.changed=20110317061957
+StorageOptChooser.lbl.longB1.fr.text.md5=0DNnQcQIX6/VBQgLWi+XwA\=\=
+StorageOptChooser.lbl.longB2..text.changed=20110317061957
+StorageOptChooser.lbl.longB2..text.md5=W9y9x8F7ZPfL/wUVvn10cQ\=\=
+StorageOptChooser.lbl.longB2.es.text.changed=20110317062041
+StorageOptChooser.lbl.longB2.es.text.md5=58l74aQcUT29MqWn6nud7g\=\=
+StorageOptChooser.lbl.longB2.fr.text.changed=20110317061957
+StorageOptChooser.lbl.longB2.fr.text.md5=xP92ttSn8RqItTPH6Hp7ag\=\=
+StorageOptChooser.lbl.longC1..text.changed=20110317061957
+StorageOptChooser.lbl.longC1..text.md5=fTd67R3OkTFyqNO0/c2sgQ\=\=
+StorageOptChooser.lbl.longC1.es.text.changed=20110317062041
+StorageOptChooser.lbl.longC1.es.text.md5=2edew8Ogh6ARKmt4qzdByA\=\=
+StorageOptChooser.lbl.longC1.fr.text.changed=20110317061957
+StorageOptChooser.lbl.longC1.fr.text.md5=IPm/afwbftx8Z6i1YMzb4A\=\=
+StorageOptChooser.lbl.longC2..text.changed=20110317061957
+StorageOptChooser.lbl.longC2..text.md5=6jsxmf6Tx8uO2mhj4WdtAA\=\=
+StorageOptChooser.lbl.longC2.es.text.changed=20110317062041
+StorageOptChooser.lbl.longC2.es.text.md5=e8/RzQ8FTmzE2btU0aJAuQ\=\=
+StorageOptChooser.lbl.longC2.fr.text.changed=20110317061957
+StorageOptChooser.lbl.longC2.fr.text.md5=1kiAknYfXMWZT/yQEtccGg\=\=
+StorageOptChooser.lbl.longD1..text.changed=20110317061957
+StorageOptChooser.lbl.longD1..text.md5=bTRNdxLTB3CudJok7WDmjg\=\=
+StorageOptChooser.lbl.longD1.es.text.changed=20110317062041
+StorageOptChooser.lbl.longD1.es.text.md5=pZ9uj04S9Z2M+1FwUyWy6g\=\=
+StorageOptChooser.lbl.longD1.fr.text.changed=20110317061957
+StorageOptChooser.lbl.longD1.fr.text.md5=ParrYM4pvQqdVSiS1Hp5Ew\=\=
+StorageOptChooser.lbl.seconds..text.changed=20110317061957
+StorageOptChooser.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\=
+StorageOptChooser.lbl.seconds.es.text.changed=20110317062041
+StorageOptChooser.lbl.seconds.es.text.md5=uef9BJ071zSP7+kM+n4AfQ\=\=
+StorageOptChooser.lbl.seconds.fr.text.changed=20110317061957
+StorageOptChooser.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\=
+StorageOptChooser.rdbut.Allsimdata..text.changed=20110317061957
+StorageOptChooser.rdbut.Allsimdata..text.md5=Ju1mILZUUCK+yy908q4nlw\=\=
+StorageOptChooser.rdbut.Allsimdata.es.text.changed=20110317062041
+StorageOptChooser.rdbut.Allsimdata.es.text.md5=2ZdsnlskxZSBd3QBYCmTPA\=\=
+StorageOptChooser.rdbut.Allsimdata.fr.text.changed=20110317061957
+StorageOptChooser.rdbut.Allsimdata.fr.text.md5=uYXySTU1VjhqwtdqWkDfPg\=\=
+StorageOptChooser.rdbut.Every..text.changed=20110317061957
+StorageOptChooser.rdbut.Every..text.md5=/89w6JK4rD+susD4hgI5aw\=\=
+StorageOptChooser.rdbut.Every.es.text.changed=20110317062041
+StorageOptChooser.rdbut.Every.es.text.md5=o1A1NlYQkkCsYyOqbtnuaA\=\=
+StorageOptChooser.rdbut.Every.fr.text.changed=20110317061957
+StorageOptChooser.rdbut.Every.fr.text.md5=/89w6JK4rD+susD4hgI5aw\=\=
+StorageOptChooser.rdbut.Onlyprimfig..text.changed=20110317061957
+StorageOptChooser.rdbut.Onlyprimfig..text.md5=cVGIKme2gZh6C2CPwcv5rw\=\=
+StorageOptChooser.rdbut.Onlyprimfig.es.text.changed=20110317062041
+StorageOptChooser.rdbut.Onlyprimfig.es.text.md5=bh5KXQ00MY35WNZjHp2ZQg\=\=
+StorageOptChooser.rdbut.Onlyprimfig.fr.text.changed=20110317061957
+StorageOptChooser.rdbut.Onlyprimfig.fr.text.md5=p2FA1g9I2oT4W7KZYmLQFg\=\=
+StorageOptChooser.ttip.Saveopt..text.changed=20110317061957
+StorageOptChooser.ttip.Saveopt..text.md5=kRiD4hklEWPEoNvjKzbvjA\=\=
+StorageOptChooser.ttip.Saveopt.es.text.changed=20110317062041
+StorageOptChooser.ttip.Saveopt.es.text.md5=7kyEiyBRR/2tbO6CzoKcnw\=\=
+StorageOptChooser.ttip.Saveopt.fr.text.changed=20110317061957
+StorageOptChooser.ttip.Saveopt.fr.text.md5=14ocVB6TM5F3S/7LpG8NZQ\=\=
+StreamerCfg.but.Reset..text.changed=20110317061957
+StreamerCfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\=
+StreamerCfg.but.Reset.es.text.changed=20110317062041
+StreamerCfg.but.Reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\=
+StreamerCfg.but.Reset.fr.text.changed=20110317061957
+StreamerCfg.but.Reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\=
+StreamerCfg.combo.ttip.MaterialModel..text.changed=20110317061957
+StreamerCfg.combo.ttip.MaterialModel..text.md5=DAgqIeIiYrmv0taT33oRxg\=\=
+StreamerCfg.combo.ttip.MaterialModel.es.text.changed=20110317062041
+StreamerCfg.combo.ttip.MaterialModel.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\=
+StreamerCfg.combo.ttip.MaterialModel.fr.text.changed=20110317061957
+StreamerCfg.combo.ttip.MaterialModel.fr.text.md5=ItFmkpJv49F3DxVe8FVQlg\=\=
+StreamerCfg.lbl.Altitude..text.changed=20110317061957
+StreamerCfg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+StreamerCfg.lbl.Altitude.es.text.changed=20110317062041
+StreamerCfg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\=
+StreamerCfg.lbl.Altitude.fr.text.changed=20110317061957
+StreamerCfg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+StreamerCfg.lbl.Aspectratio..text.changed=20110317061957
+StreamerCfg.lbl.Aspectratio..text.md5=Sj2yKs9mM2ftjEli9Tib/A\=\=
+StreamerCfg.lbl.Aspectratio.es.text.changed=20110317062041
+StreamerCfg.lbl.Aspectratio.es.text.md5=eQRemWTwyGfRQbDiaY+ZTw\=\=
+StreamerCfg.lbl.Aspectratio.fr.text.changed=20110317061957
+StreamerCfg.lbl.Aspectratio.fr.text.md5=Sj2yKs9mM2ftjEli9Tib/A\=\=
+StreamerCfg.lbl.Automatic..text.changed=20110317061957
+StreamerCfg.lbl.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\=
+StreamerCfg.lbl.Automatic.es.text.changed=20110317062041
+StreamerCfg.lbl.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\=
+StreamerCfg.lbl.Automatic.fr.text.changed=20110317061957
+StreamerCfg.lbl.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\=
+StreamerCfg.lbl.Deploysat..text.changed=20110317061957
+StreamerCfg.lbl.Deploysat..text.md5=IxstQijgTJb/8AvIWRQH9w\=\=
+StreamerCfg.lbl.Deploysat.es.text.changed=20110317062041
+StreamerCfg.lbl.Deploysat.es.text.md5=PFtI778/6ixDszE4bzlYsg\=\=
+StreamerCfg.lbl.Deploysat.fr.text.changed=20110317061957
+StreamerCfg.lbl.Deploysat.fr.text.md5=JELD/qo7Duj0UQ7PerJNLA\=\=
+StreamerCfg.lbl.Material..text.changed=20110317061957
+StreamerCfg.lbl.Material..text.md5=1zibzLtopzoHLVvzqb0tkw\=\=
+StreamerCfg.lbl.Material.es.text.changed=20110317062041
+StreamerCfg.lbl.Material.es.text.md5=1zibzLtopzoHLVvzqb0tkw\=\=
+StreamerCfg.lbl.Material.fr.text.changed=20110317061957
+StreamerCfg.lbl.Material.fr.text.md5=cPnLRUd7khfn1RS1/D+2uw\=\=
+StreamerCfg.lbl.Packeddiam..text.changed=20110317061957
+StreamerCfg.lbl.Packeddiam..text.md5=ZLli2T49cm2t4O2DM2Qdfg\=\=
+StreamerCfg.lbl.Packeddiam.es.text.changed=20110317062041
+StreamerCfg.lbl.Packeddiam.es.text.md5=tDjygc1+amZ7kX7dxySsXQ\=\=
+StreamerCfg.lbl.Packeddiam.fr.text.changed=20110317061957
+StreamerCfg.lbl.Packeddiam.fr.text.md5=g380nkSdujAcYudBWYsSug\=\=
+StreamerCfg.lbl.Packedlength..text.changed=20110317061957
+StreamerCfg.lbl.Packedlength..text.md5=UXXIbj2JBgPTWzdfLI0olQ\=\=
+StreamerCfg.lbl.Packedlength.es.text.changed=20110317062041
+StreamerCfg.lbl.Packedlength.es.text.md5=RoAOGZbGbTVf3xEEbt0gww\=\=
+StreamerCfg.lbl.Packedlength.fr.text.changed=20110317061957
+StreamerCfg.lbl.Packedlength.fr.text.md5=PdS66kMXqE7v7fQkz222Xg\=\=
+StreamerCfg.lbl.Posrelativeto..text.changed=20110317061957
+StreamerCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+StreamerCfg.lbl.Posrelativeto.es.text.changed=20110317062041
+StreamerCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+StreamerCfg.lbl.Posrelativeto.fr.text.changed=20110317061957
+StreamerCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+StreamerCfg.lbl.Radialdirection..text.changed=20110317061957
+StreamerCfg.lbl.Radialdirection..text.md5=i1kLjBiCCrq0JyXJbJJWLQ\=\=
+StreamerCfg.lbl.Radialdirection.es.text.changed=20110317062041
+StreamerCfg.lbl.Radialdirection.es.text.md5=8+Pa5rnto1tOMcLkMe+SVQ\=\=
+StreamerCfg.lbl.Radialdirection.fr.text.changed=20110317061957
+StreamerCfg.lbl.Radialdirection.fr.text.md5=t1/lCCHD0C++YMqbld91CQ\=\=
+StreamerCfg.lbl.Radialdistance..text.changed=20110317061957
+StreamerCfg.lbl.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\=
+StreamerCfg.lbl.Radialdistance.es.text.changed=20110317062041
+StreamerCfg.lbl.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\=
+StreamerCfg.lbl.Radialdistance.fr.text.changed=20110317061957
+StreamerCfg.lbl.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\=
+StreamerCfg.lbl.Striparea..text.changed=20110317061957
+StreamerCfg.lbl.Striparea..text.md5=lpW4AwYL4U9zDDgrv4Dvjg\=\=
+StreamerCfg.lbl.Striparea.es.text.changed=20110317062041
+StreamerCfg.lbl.Striparea.es.text.md5=w0kPkViQcTVDaxkFbPFl2A\=\=
+StreamerCfg.lbl.Striparea.fr.text.changed=20110317061957
+StreamerCfg.lbl.Striparea.fr.text.md5=hO9MrIyjf3/pheq5d9//WA\=\=
+StreamerCfg.lbl.Striplength..text.changed=20110317061957
+StreamerCfg.lbl.Striplength..text.md5=uadMy9mjgoATmzduOQBK7g\=\=
+StreamerCfg.lbl.Striplength.es.text.changed=20110317062041
+StreamerCfg.lbl.Striplength.es.text.md5=Z3itL8N3oCQBqp5ATaFZkQ\=\=
+StreamerCfg.lbl.Striplength.fr.text.changed=20110317061957
+StreamerCfg.lbl.Striplength.fr.text.md5=CEo3w7b2ctoIFPGXyCGZmg\=\=
+StreamerCfg.lbl.Stripwidth..text.changed=20110317061957
+StreamerCfg.lbl.Stripwidth..text.md5=3lLZVVZ+uov5eI0NBfcc+A\=\=
+StreamerCfg.lbl.Stripwidth.es.text.changed=20110317062041
+StreamerCfg.lbl.Stripwidth.es.text.md5=4DvqypzGbIJ9b0C0EzgiYQ\=\=
+StreamerCfg.lbl.Stripwidth.fr.text.changed=20110317061957
+StreamerCfg.lbl.Stripwidth.fr.text.md5=oyXWXim/RbCY5bv3trAB4A\=\=
+StreamerCfg.lbl.longA1..text.changed=20110317061957
+StreamerCfg.lbl.longA1..text.md5=+e/wsU4oZBXvD9lztBpgiw\=\=
+StreamerCfg.lbl.longA1.es.text.changed=20110317062041
+StreamerCfg.lbl.longA1.es.text.md5=jE2h3oPBhipcxFLbZO8Dcg\=\=
+StreamerCfg.lbl.longA1.fr.text.changed=20110317061957
+StreamerCfg.lbl.longA1.fr.text.md5=0FHoANBt31B4ZVACneVWrg\=\=
+StreamerCfg.lbl.longB1..text.changed=20110317061957
+StreamerCfg.lbl.longB1..text.md5=TAsxKZJp1YOGgOpYuNLiiQ\=\=
+StreamerCfg.lbl.longB1.es.text.changed=20110317062041
+StreamerCfg.lbl.longB1.es.text.md5=72A3WljVgTbFLdt4ZonqjA\=\=
+StreamerCfg.lbl.longB1.fr.text.changed=20110317061957
+StreamerCfg.lbl.longB1.fr.text.md5=pc7bVfKhv1AXGR/gE+ickA\=\=
+StreamerCfg.lbl.longB2..text.changed=20110317061957
+StreamerCfg.lbl.longB2..text.md5=OXsSZt4Vvw38WOQwP3JXpw\=\=
+StreamerCfg.lbl.longB2.es.text.changed=20110317062041
+StreamerCfg.lbl.longB2.es.text.md5=CVONnEE4D7ZwHpS6rgaRhA\=\=
+StreamerCfg.lbl.longB2.fr.text.changed=20110317061957
+StreamerCfg.lbl.longB2.fr.text.md5=ewcdCmcY77X4/IDkjVwfFA\=\=
+StreamerCfg.lbl.longC1..text.changed=20110317061957
+StreamerCfg.lbl.longC1..text.md5=Pkhhx/eevmBtsclBE30YFQ\=\=
+StreamerCfg.lbl.longC1.es.text.changed=20110317062041
+StreamerCfg.lbl.longC1.es.text.md5=CNf3NsunxsUDTDCM8pEeMA\=\=
+StreamerCfg.lbl.longC1.fr.text.changed=20110317061957
+StreamerCfg.lbl.longC1.fr.text.md5=OaN1GOIvIAtfW68TV1ZjPg\=\=
+StreamerCfg.lbl.plus..text.changed=20110317061957
+StreamerCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+StreamerCfg.lbl.plus.es.text.changed=20110317062041
+StreamerCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+StreamerCfg.lbl.plus.fr.text.changed=20110317061957
+StreamerCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+StreamerCfg.lbl.seconds..text.changed=20110317061957
+StreamerCfg.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\=
+StreamerCfg.lbl.seconds.es.text.changed=20110317062041
+StreamerCfg.lbl.seconds.es.text.md5=UxqeEPFTlrCXqhUT1Oib0A\=\=
+StreamerCfg.lbl.seconds.fr.text.changed=20110317061957
+StreamerCfg.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\=
+StreamerCfg.tab.General..text.changed=20110317061957
+StreamerCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+StreamerCfg.tab.General.es.text.changed=20110317062041
+StreamerCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+StreamerCfg.tab.General.fr.text.changed=20110317061957
+StreamerCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+StreamerCfg.tab.Radialpos..text.changed=20110317061957
+StreamerCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\=
+StreamerCfg.tab.Radialpos.es.text.changed=20110317062041
+StreamerCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\=
+StreamerCfg.tab.Radialpos.fr.text.changed=20110317061957
+StreamerCfg.tab.Radialpos.fr.text.md5=rX8euW6QQ2ZOgQivvVMsOg\=\=
+StreamerCfg.tab.ttip.General..text.changed=20110317061957
+StreamerCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+StreamerCfg.tab.ttip.General.es.text.changed=20110317062041
+StreamerCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+StreamerCfg.tab.ttip.General.fr.text.changed=20110317061957
+StreamerCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+StreamerCfg.tab.ttip.Radialpos..text.changed=20110317061957
+StreamerCfg.tab.ttip.Radialpos..text.md5=VWjNybFzuNElITpmCwHoJA\=\=
+StreamerCfg.tab.ttip.Radialpos.es.text.changed=20110317062041
+StreamerCfg.tab.ttip.Radialpos.es.text.md5=iykbais0v1SylZccOdKSRw\=\=
+StreamerCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957
+StreamerCfg.tab.ttip.Radialpos.fr.text.md5=5z3CTUaVO25LBXPH1X1pBA\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1..text.changed=20110317061957
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1..text.md5=mQnK3ax2dWwe2jPF5u8Zmw\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.es.text.changed=20110317062041
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.es.text.md5=mQnK3ax2dWwe2jPF5u8Zmw\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.fr.text.changed=20110317061957
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.fr.text.md5=bI8aSKVFx7WxTJk5G9RYzw\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2..text.changed=20110317061957
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2..text.md5=qLmFSlEtllxlygqSfsV1HQ\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.es.text.changed=20110317062041
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.es.text.md5=qLmFSlEtllxlygqSfsV1HQ\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.fr.text.changed=20110317061957
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.fr.text.md5=wa9Kcq+MwUnN8hY8HD2u0g\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3..text.changed=20110317061957
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3..text.md5=JYVW19z/+VGMPJqE9s20UA\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.es.text.changed=20110317062041
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.es.text.md5=JYVW19z/+VGMPJqE9s20UA\=\=
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.fr.text.changed=20110317061957
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.fr.text.md5=mDkImOVA7BFg80JIqmgkfQ\=\=
+TCMotorSelPan.checkbox.hideSimilar..text.changed=20110317061957
+TCMotorSelPan.checkbox.hideSimilar..text.md5=Q1pQ+6NCWnBqNpueeX1m5g\=\=
+TCMotorSelPan.checkbox.hideSimilar.es.text.changed=20110317062041
+TCMotorSelPan.checkbox.hideSimilar.es.text.md5=3fcm0eHOTAHgoiHM9ccc8Q\=\=
+TCMotorSelPan.checkbox.hideSimilar.fr.text.changed=20110317061957
+TCMotorSelPan.checkbox.hideSimilar.fr.text.md5=W093A91qJRkkTEMRWchqfA\=\=
+TCMotorSelPan.delayBox.None..text.changed=20110317061957
+TCMotorSelPan.delayBox.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+TCMotorSelPan.delayBox.None.es.text.changed=20110317062041
+TCMotorSelPan.delayBox.None.es.text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+TCMotorSelPan.delayBox.None.fr.text.changed=20110317061957
+TCMotorSelPan.delayBox.None.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\=
+TCMotorSelPan.equalsIgnoreCase.None..text.changed=20110317061957
+TCMotorSelPan.equalsIgnoreCase.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+TCMotorSelPan.equalsIgnoreCase.None.es.text.changed=20110317062041
+TCMotorSelPan.equalsIgnoreCase.None.es.text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+TCMotorSelPan.equalsIgnoreCase.None.fr.text.changed=20110317061957
+TCMotorSelPan.equalsIgnoreCase.None.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\=
+TCMotorSelPan.lbl.Avgthrust..text.changed=20110317061957
+TCMotorSelPan.lbl.Avgthrust..text.md5=UynPDmo4yM9N7Tkbq9WnvA\=\=
+TCMotorSelPan.lbl.Avgthrust.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Avgthrust.es.text.md5=UynPDmo4yM9N7Tkbq9WnvA\=\=
+TCMotorSelPan.lbl.Avgthrust.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Avgthrust.fr.text.md5=3uB1maOonQ6zzusEqRrltg\=\=
+TCMotorSelPan.lbl.Burntime..text.changed=20110317061957
+TCMotorSelPan.lbl.Burntime..text.md5=gau5lgnkNrP9k3Qc5pX5OA\=\=
+TCMotorSelPan.lbl.Burntime.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Burntime.es.text.md5=gau5lgnkNrP9k3Qc5pX5OA\=\=
+TCMotorSelPan.lbl.Burntime.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Burntime.fr.text.md5=LCw2pjRT87KJWooKTeI3eQ\=\=
+TCMotorSelPan.lbl.Datapoints..text.changed=20110317061957
+TCMotorSelPan.lbl.Datapoints..text.md5=BjuD3zcrIsKjkWcsQUzYgg\=\=
+TCMotorSelPan.lbl.Datapoints.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Datapoints.es.text.md5=BjuD3zcrIsKjkWcsQUzYgg\=\=
+TCMotorSelPan.lbl.Datapoints.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Datapoints.fr.text.md5=6K4aF3kZr66ujstz1RsLLQ\=\=
+TCMotorSelPan.lbl.Digest..text.changed=20110317061957
+TCMotorSelPan.lbl.Digest..text.md5=xsGZDwLgzlxmYikt9I/z2g\=\=
+TCMotorSelPan.lbl.Digest.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Digest.es.text.md5=xsGZDwLgzlxmYikt9I/z2g\=\=
+TCMotorSelPan.lbl.Digest.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Digest.fr.text.md5=OqNvSHZcBEi/2h1K0KHW3w\=\=
+TCMotorSelPan.lbl.Ejectionchargedelay..text.changed=20110317061957
+TCMotorSelPan.lbl.Ejectionchargedelay..text.md5=W/I+R+3jo3YdvmbrMf4uLg\=\=
+TCMotorSelPan.lbl.Ejectionchargedelay.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Ejectionchargedelay.es.text.md5=W/I+R+3jo3YdvmbrMf4uLg\=\=
+TCMotorSelPan.lbl.Ejectionchargedelay.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Ejectionchargedelay.fr.text.md5=Dex2MGvxUV3WSxggJJIpGw\=\=
+TCMotorSelPan.lbl.Emptymass..text.changed=20110317061957
+TCMotorSelPan.lbl.Emptymass..text.md5=h3usYdDTqo7Kr/wWp1NBCw\=\=
+TCMotorSelPan.lbl.Emptymass.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Emptymass.es.text.md5=h3usYdDTqo7Kr/wWp1NBCw\=\=
+TCMotorSelPan.lbl.Emptymass.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Emptymass.fr.text.md5=PSGljaJ7BtHQullYjH+h6Q\=\=
+TCMotorSelPan.lbl.Launchmass..text.changed=20110317061957
+TCMotorSelPan.lbl.Launchmass..text.md5=6PZdDFAasqalSYDAQKcKsw\=\=
+TCMotorSelPan.lbl.Launchmass.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Launchmass.es.text.md5=6PZdDFAasqalSYDAQKcKsw\=\=
+TCMotorSelPan.lbl.Launchmass.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Launchmass.fr.text.md5=NyZDxqILnY3EevnWznPZJQ\=\=
+TCMotorSelPan.lbl.Maxthrust..text.changed=20110317061957
+TCMotorSelPan.lbl.Maxthrust..text.md5=et5CO5k6ZtzmowESTHXhMw\=\=
+TCMotorSelPan.lbl.Maxthrust.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Maxthrust.es.text.md5=et5CO5k6ZtzmowESTHXhMw\=\=
+TCMotorSelPan.lbl.Maxthrust.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Maxthrust.fr.text.md5=0XU0fODCtm7wjKTbN2UXZw\=\=
+TCMotorSelPan.lbl.Motormountdia..text.changed=20110317061957
+TCMotorSelPan.lbl.Motormountdia..text.md5=/Lg+SkxURvNZCqZhEFHmxg\=\=
+TCMotorSelPan.lbl.Motormountdia.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Motormountdia.es.text.md5=/Lg+SkxURvNZCqZhEFHmxg\=\=
+TCMotorSelPan.lbl.Motormountdia.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Motormountdia.fr.text.md5=U8hNlKzuzr6R0tj4lPAEyw\=\=
+TCMotorSelPan.lbl.NumberofsecondsorNone..text.changed=20110317061957
+TCMotorSelPan.lbl.NumberofsecondsorNone..text.md5=WKS3cs1u3ZTM4px/jCYM3Q\=\=
+TCMotorSelPan.lbl.NumberofsecondsorNone.es.text.changed=20110317062041
+TCMotorSelPan.lbl.NumberofsecondsorNone.es.text.md5=WKS3cs1u3ZTM4px/jCYM3Q\=\=
+TCMotorSelPan.lbl.NumberofsecondsorNone.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.NumberofsecondsorNone.fr.text.md5=wf/Od/8x6jGib/E8QhdjiA\=\=
+TCMotorSelPan.lbl.Search..text.changed=20110317061957
+TCMotorSelPan.lbl.Search..text.md5=JMKXAtycY97bmOkvMCjgaA\=\=
+TCMotorSelPan.lbl.Search.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Search.es.text.md5=JMKXAtycY97bmOkvMCjgaA\=\=
+TCMotorSelPan.lbl.Search.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Search.fr.text.md5=XXZaPhcfFlVe8krDbmLH/Q\=\=
+TCMotorSelPan.lbl.Selectthrustcurve..text.changed=20110317061957
+TCMotorSelPan.lbl.Selectthrustcurve..text.md5=tCo6A6UlD07aR1ClfK4M2Q\=\=
+TCMotorSelPan.lbl.Selectthrustcurve.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Selectthrustcurve.es.text.md5=tCo6A6UlD07aR1ClfK4M2Q\=\=
+TCMotorSelPan.lbl.Selectthrustcurve.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Selectthrustcurve.fr.text.md5=EH0ZSVArpyTyUrxd7rN57w\=\=
+TCMotorSelPan.lbl.Selrocketmotor..text.changed=20110317061957
+TCMotorSelPan.lbl.Selrocketmotor..text.md5=6Ujd0/5zZMLn6QtVeLNuUg\=\=
+TCMotorSelPan.lbl.Selrocketmotor.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Selrocketmotor.es.text.md5=ZCedyKStfuVhRC6dnH3Vvg\=\=
+TCMotorSelPan.lbl.Selrocketmotor.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Selrocketmotor.fr.text.md5=ttRoQfrvsLsNAYBb9SfRRA\=\=
+TCMotorSelPan.lbl.Totalimpulse..text.changed=20110317061957
+TCMotorSelPan.lbl.Totalimpulse..text.md5=ZDshEiFE3a4LgL7awkgWrQ\=\=
+TCMotorSelPan.lbl.Totalimpulse.es.text.changed=20110317062041
+TCMotorSelPan.lbl.Totalimpulse.es.text.md5=ZDshEiFE3a4LgL7awkgWrQ\=\=
+TCMotorSelPan.lbl.Totalimpulse.fr.text.changed=20110317061957
+TCMotorSelPan.lbl.Totalimpulse.fr.text.md5=NpXvobhBhx9ZATcB6zR4hg\=\=
+TCMotorSelPan.title.Thrust..text.changed=20110317061957
+TCMotorSelPan.title.Thrust..text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\=
+TCMotorSelPan.title.Thrust.es.text.changed=20110317062041
+TCMotorSelPan.title.Thrust.es.text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\=
+TCMotorSelPan.title.Thrust.fr.text.changed=20110317061957
+TCMotorSelPan.title.Thrust.fr.text.md5=pfYvmVTjP0jRSat0JzP6Cg\=\=
+TCMotorSelPan.title.Thrustcurve..text.changed=20110317061957
+TCMotorSelPan.title.Thrustcurve..text.md5=5CIM1TcNYXh/9frNIENeVA\=\=
+TCMotorSelPan.title.Thrustcurve.es.text.changed=20110317062041
+TCMotorSelPan.title.Thrustcurve.es.text.md5=5CIM1TcNYXh/9frNIENeVA\=\=
+TCMotorSelPan.title.Thrustcurve.fr.text.changed=20110317061957
+TCMotorSelPan.title.Thrustcurve.fr.text.md5=t6S/JYsevASObtfuAHAnEg\=\=
+TCurveMotorCol.DESIGNATION..text.changed=20110317061957
+TCurveMotorCol.DESIGNATION..text.md5=8Qf1qe5OzqWNDymueVm6qA\=\=
+TCurveMotorCol.DESIGNATION.es.text.changed=20110317062041
+TCurveMotorCol.DESIGNATION.es.text.md5=8Qf1qe5OzqWNDymueVm6qA\=\=
+TCurveMotorCol.DESIGNATION.fr.text.changed=20110317061957
+TCurveMotorCol.DESIGNATION.fr.text.md5=DI6smpts0ai8oD+DNiz+6A\=\=
+TCurveMotorCol.DIAMETER..text.changed=20110317061957
+TCurveMotorCol.DIAMETER..text.md5=tfaUSIMmB2/yAMerlVwEVQ\=\=
+TCurveMotorCol.DIAMETER.es.text.changed=20110317062041
+TCurveMotorCol.DIAMETER.es.text.md5=tfaUSIMmB2/yAMerlVwEVQ\=\=
+TCurveMotorCol.DIAMETER.fr.text.changed=20110317061957
+TCurveMotorCol.DIAMETER.fr.text.md5=WCZj8bfE/hVJfiLJCQp5UQ\=\=
+TCurveMotorCol.LENGTH..text.changed=20110317061957
+TCurveMotorCol.LENGTH..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\=
+TCurveMotorCol.LENGTH.es.text.changed=20110317062041
+TCurveMotorCol.LENGTH.es.text.md5=uiqcbIx34D+D74v1Q2EidQ\=\=
+TCurveMotorCol.LENGTH.fr.text.changed=20110317061957
+TCurveMotorCol.LENGTH.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\=
+TCurveMotorCol.MANUFACTURER..text.changed=20110317061957
+TCurveMotorCol.MANUFACTURER..text.md5=wL12VNWyeOZfIc9OkVP9tA\=\=
+TCurveMotorCol.MANUFACTURER.es.text.changed=20110317062041
+TCurveMotorCol.MANUFACTURER.es.text.md5=wL12VNWyeOZfIc9OkVP9tA\=\=
+TCurveMotorCol.MANUFACTURER.fr.text.changed=20110317061957
+TCurveMotorCol.MANUFACTURER.fr.text.md5=oq/UPysl6cFOUNIxGq9G+w\=\=
+TCurveMotorCol.TYPE..text.changed=20110317061957
+TCurveMotorCol.TYPE..text.md5=ofond5JCtJAveuO91cbVCA\=\=
+TCurveMotorCol.TYPE.es.text.changed=20110317062041
+TCurveMotorCol.TYPE.es.text.md5=ofond5JCtJAveuO91cbVCA\=\=
+TCurveMotorCol.TYPE.fr.text.changed=20110317061957
+TCurveMotorCol.TYPE.fr.text.md5=ofond5JCtJAveuO91cbVCA\=\=
+ThicknessRingCompCfg.tab.General..text.changed=20110317061957
+ThicknessRingCompCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+ThicknessRingCompCfg.tab.General.es.text.changed=20110317062041
+ThicknessRingCompCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+ThicknessRingCompCfg.tab.General.fr.text.changed=20110317061957
+ThicknessRingCompCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+ThicknessRingCompCfg.tab.Generalprop..text.changed=20110317061957
+ThicknessRingCompCfg.tab.Generalprop..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+ThicknessRingCompCfg.tab.Generalprop.es.text.changed=20110317062041
+ThicknessRingCompCfg.tab.Generalprop.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+ThicknessRingCompCfg.tab.Generalprop.fr.text.changed=20110317061957
+ThicknessRingCompCfg.tab.Generalprop.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+ThicknessRingCompCfg.tab.Innerdiam..text.changed=20110317061957
+ThicknessRingCompCfg.tab.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\=
+ThicknessRingCompCfg.tab.Innerdiam.es.text.changed=20110317062041
+ThicknessRingCompCfg.tab.Innerdiam.es.text.md5=SM6oEkEC5ujDTN/d/S1m9A\=\=
+ThicknessRingCompCfg.tab.Innerdiam.fr.text.changed=20110317061957
+ThicknessRingCompCfg.tab.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\=
+ThicknessRingCompCfg.tab.Length..text.changed=20110317061957
+ThicknessRingCompCfg.tab.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\=
+ThicknessRingCompCfg.tab.Length.es.text.changed=20110317062041
+ThicknessRingCompCfg.tab.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\=
+ThicknessRingCompCfg.tab.Length.fr.text.changed=20110317061957
+ThicknessRingCompCfg.tab.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\=
+ThicknessRingCompCfg.tab.Outerdiam..text.changed=20110317061957
+ThicknessRingCompCfg.tab.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\=
+ThicknessRingCompCfg.tab.Outerdiam.es.text.changed=20110317062041
+ThicknessRingCompCfg.tab.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\=
+ThicknessRingCompCfg.tab.Outerdiam.fr.text.changed=20110317061957
+ThicknessRingCompCfg.tab.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\=
+ThicknessRingCompCfg.tab.Wallthickness..text.changed=20110317061957
+ThicknessRingCompCfg.tab.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\=
+ThicknessRingCompCfg.tab.Wallthickness.es.text.changed=20110317062041
+ThicknessRingCompCfg.tab.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\=
+ThicknessRingCompCfg.tab.Wallthickness.fr.text.changed=20110317061957
+ThicknessRingCompCfg.tab.Wallthickness.fr.text.md5=iFOwo5u9UFPeev2I4ToeLA\=\=
+Transition.Transition..text.changed=20110317061957
+Transition.Transition..text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+Transition.Transition.es.text.changed=20110317062041
+Transition.Transition.es.text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+Transition.Transition.fr.text.changed=20110317061957
+Transition.Transition.fr.text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+TransitionCfg.checkbox.Automatic..text.changed=20110317061957
+TransitionCfg.checkbox.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\=
+TransitionCfg.checkbox.Automatic.es.text.changed=20110317062041
+TransitionCfg.checkbox.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\=
+TransitionCfg.checkbox.Automatic.fr.text.changed=20110317061957
+TransitionCfg.checkbox.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\=
+TransitionCfg.checkbox.Clipped..text.changed=20110317061957
+TransitionCfg.checkbox.Clipped..text.md5=fFbsIbS9PU6STXnwPqIh6A\=\=
+TransitionCfg.checkbox.Clipped.es.text.changed=20110317062041
+TransitionCfg.checkbox.Clipped.es.text.md5=nXWJoaeE0rx5dIvxKi2COA\=\=
+TransitionCfg.checkbox.Clipped.fr.text.changed=20110317061957
+TransitionCfg.checkbox.Clipped.fr.text.md5=J4nSgiKJEzKgptkfXNJGMA\=\=
+TransitionCfg.checkbox.Filled..text.changed=20110317061957
+TransitionCfg.checkbox.Filled..text.md5=2dWG+MeS+PZhBSr0JTYyPA\=\=
+TransitionCfg.checkbox.Filled.es.text.changed=20110317062041
+TransitionCfg.checkbox.Filled.es.text.md5=HQ2GNI1le2Dl+Mw8w7w38w\=\=
+TransitionCfg.checkbox.Filled.fr.text.changed=20110317061957
+TransitionCfg.checkbox.Filled.fr.text.md5=S975CUbtxnqWOai6+gtVIw\=\=
+TransitionCfg.lbl.Aftdiam..text.changed=20110317061957
+TransitionCfg.lbl.Aftdiam..text.md5=vJ+ckrVdeDotY0tpyQjPxg\=\=
+TransitionCfg.lbl.Aftdiam.es.text.changed=20110317062041
+TransitionCfg.lbl.Aftdiam.es.text.md5=rsLNJIqtl9R6GTkZZw8jdQ\=\=
+TransitionCfg.lbl.Aftdiam.fr.text.changed=20110317061957
+TransitionCfg.lbl.Aftdiam.fr.text.md5=rrdssQHBQMCJiyMO93rcpg\=\=
+TransitionCfg.lbl.Forediam..text.changed=20110317061957
+TransitionCfg.lbl.Forediam..text.md5=p43VAN06S2HqIXjTbWgK5w\=\=
+TransitionCfg.lbl.Forediam.es.text.changed=20110317062041
+TransitionCfg.lbl.Forediam.es.text.md5=E8rhHWcasFtIUPWplzFXuA\=\=
+TransitionCfg.lbl.Forediam.fr.text.changed=20110317061957
+TransitionCfg.lbl.Forediam.fr.text.md5=JaP4sdKd8SubPGM0tIfgSg\=\=
+TransitionCfg.lbl.Shapeparam..text.changed=20110317061957
+TransitionCfg.lbl.Shapeparam..text.md5=KVaIAlkq0XzFBnTFAB255w\=\=
+TransitionCfg.lbl.Shapeparam.es.text.changed=20110317062041
+TransitionCfg.lbl.Shapeparam.es.text.md5=Po8sDvfduHEfhS9Mo/ylOA\=\=
+TransitionCfg.lbl.Shapeparam.fr.text.changed=20110317061957
+TransitionCfg.lbl.Shapeparam.fr.text.md5=3y8h1BkZndT/FOnJYA5FVQ\=\=
+TransitionCfg.lbl.Transitionlength..text.changed=20110317061957
+TransitionCfg.lbl.Transitionlength..text.md5=48EHNMuGjoWZdIMpli/zTw\=\=
+TransitionCfg.lbl.Transitionlength.es.text.changed=20110317062041
+TransitionCfg.lbl.Transitionlength.es.text.md5=nBDEtVGxx71WW9Cxuz7VFg\=\=
+TransitionCfg.lbl.Transitionlength.fr.text.changed=20110317061957
+TransitionCfg.lbl.Transitionlength.fr.text.md5=oNY7R9UwjemRdxGXIvP7Ew\=\=
+TransitionCfg.lbl.Transitionshape..text.changed=20110317061957
+TransitionCfg.lbl.Transitionshape..text.md5=letQaasoPscBWdvVE25zFg\=\=
+TransitionCfg.lbl.Transitionshape.es.text.changed=20110317062041
+TransitionCfg.lbl.Transitionshape.es.text.md5=TAePzOEfD2cTQ8dELZ3Y+A\=\=
+TransitionCfg.lbl.Transitionshape.fr.text.changed=20110317061957
+TransitionCfg.lbl.Transitionshape.fr.text.md5=wfzN1zhlZ4b7q0TGEIsxwQ\=\=
+TransitionCfg.lbl.Wallthickness..text.changed=20110317061957
+TransitionCfg.lbl.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\=
+TransitionCfg.lbl.Wallthickness.es.text.changed=20110317062041
+TransitionCfg.lbl.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\=
+TransitionCfg.lbl.Wallthickness.fr.text.changed=20110317061957
+TransitionCfg.lbl.Wallthickness.fr.text.md5=iFOwo5u9UFPeev2I4ToeLA\=\=
+TransitionCfg.tab.General..text.changed=20110317061957
+TransitionCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+TransitionCfg.tab.General.es.text.changed=20110317062041
+TransitionCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+TransitionCfg.tab.General.fr.text.changed=20110317061957
+TransitionCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+TransitionCfg.tab.Generalproperties..text.changed=20110317061957
+TransitionCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+TransitionCfg.tab.Generalproperties.es.text.changed=20110317062041
+TransitionCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+TransitionCfg.tab.Generalproperties.fr.text.changed=20110317061957
+TransitionCfg.tab.Generalproperties.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\=
+TransitionCfg.tab.Shoulder..text.changed=20110317061957
+TransitionCfg.tab.Shoulder..text.md5=g8tMFEs9buGoR77lGkS5Mw\=\=
+TransitionCfg.tab.Shoulder.es.text.changed=20110317062041
+TransitionCfg.tab.Shoulder.es.text.md5=78fPmNoWzrpkK+C7wA1R1g\=\=
+TransitionCfg.tab.Shoulder.fr.text.changed=20110317061957
+TransitionCfg.tab.Shoulder.fr.text.md5=ij0NnDUcQgwNuNOYKx3eiw\=\=
+TransitionCfg.tab.Shoulderproperties..text.changed=20110317061957
+TransitionCfg.tab.Shoulderproperties..text.md5=veo49O9fQ4SLjde6bY/VVQ\=\=
+TransitionCfg.tab.Shoulderproperties.es.text.changed=20110317062041
+TransitionCfg.tab.Shoulderproperties.es.text.md5=4Y4Kzhcq0JFqewGDiCwbPw\=\=
+TransitionCfg.tab.Shoulderproperties.fr.text.changed=20110317061957
+TransitionCfg.tab.Shoulderproperties.fr.text.md5=U3050m8CsBc9s7/oMbNJzw\=\=
+TrapezoidFinSet.TrapezoidFinSet..text.changed=20110317061957
+TrapezoidFinSet.TrapezoidFinSet..text.md5=QQFIiPvNQYWkf+dE26GjrA\=\=
+TrapezoidFinSet.TrapezoidFinSet.es.text.changed=20110317062041
+TrapezoidFinSet.TrapezoidFinSet.es.text.md5=QQFIiPvNQYWkf+dE26GjrA\=\=
+TrapezoidFinSet.TrapezoidFinSet.fr.text.changed=20110317061957
+TrapezoidFinSet.TrapezoidFinSet.fr.text.md5=LAJj1TAqxZCArS7aDkkGvw\=\=
+TrapezoidFinSetCfg.lbl.Fincant..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Fincant..text.md5=gJTol4zWIT3NlA2Qj+mRBw\=\=
+TrapezoidFinSetCfg.lbl.Fincant.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Fincant.es.text.md5=cxWpv/IhFV3FTjiylJ0H7Q\=\=
+TrapezoidFinSetCfg.lbl.Fincant.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Fincant.fr.text.md5=gbEuh/Hyt0eAkJbVyIpt1A\=\=
+TrapezoidFinSetCfg.lbl.FincrossSection..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.FincrossSection..text.md5=d139yIi0Bcw4ePuCYxjEMQ\=\=
+TrapezoidFinSetCfg.lbl.FincrossSection.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.FincrossSection.es.text.md5=/nIRxIgyTgr49tkwIwEwKw\=\=
+TrapezoidFinSetCfg.lbl.FincrossSection.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.FincrossSection.fr.text.md5=BzmEcGR9qVjmHb5eL2X9hA\=\=
+TrapezoidFinSetCfg.lbl.Finrotation..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Finrotation..text.md5=asDZsCDOZlcfbnpr9h4Zeg\=\=
+TrapezoidFinSetCfg.lbl.Finrotation.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Finrotation.es.text.md5=ht/RiCuNDKl6Rf1cOHSwXg\=\=
+TrapezoidFinSetCfg.lbl.Finrotation.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Finrotation.fr.text.md5=GFfYfKCgsmY785dF89M8Ow\=\=
+TrapezoidFinSetCfg.lbl.Height..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Height..text.md5=6TPcJPskXYY6Q7T+/ptF9Q\=\=
+TrapezoidFinSetCfg.lbl.Height.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Height.es.text.md5=mcao1NLk/9bh/Sxh5rp7Mg\=\=
+TrapezoidFinSetCfg.lbl.Height.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Height.fr.text.md5=Z2KaAfTVGQ4cBjFlfETelA\=\=
+TrapezoidFinSetCfg.lbl.Nbroffins..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Nbroffins..text.md5=+3QcyIkz9lnt+0f8dlP/ew\=\=
+TrapezoidFinSetCfg.lbl.Nbroffins.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Nbroffins.es.text.md5=HGKq4/3A+oOKV7b9MdHIKQ\=\=
+TrapezoidFinSetCfg.lbl.Nbroffins.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Nbroffins.fr.text.md5=6KbxfYrq87kta+KweGSOAg\=\=
+TrapezoidFinSetCfg.lbl.Posrelativeto..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+TrapezoidFinSetCfg.lbl.Posrelativeto.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+TrapezoidFinSetCfg.lbl.Posrelativeto.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+TrapezoidFinSetCfg.lbl.Rootchord..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Rootchord..text.md5=bOfX+KY7hvtQr5hLPPqmgg\=\=
+TrapezoidFinSetCfg.lbl.Rootchord.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Rootchord.es.text.md5=5+/3cyMZzYKIX83mUKWAaQ\=\=
+TrapezoidFinSetCfg.lbl.Rootchord.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Rootchord.fr.text.md5=1FDPJWu4SmzhVPOFgQvMHg\=\=
+TrapezoidFinSetCfg.lbl.Sweepangle..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Sweepangle..text.md5=ZeRhVHfaiooLOXIRuiaM3A\=\=
+TrapezoidFinSetCfg.lbl.Sweepangle.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Sweepangle.es.text.md5=0YJA0R+dTWaUJvenpQ2keA\=\=
+TrapezoidFinSetCfg.lbl.Sweepangle.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Sweepangle.fr.text.md5=POmDko64vhdwTZgepRsegA\=\=
+TrapezoidFinSetCfg.lbl.Sweeplength..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Sweeplength..text.md5=+7i8uemXY7oFX4TiCm9N9A\=\=
+TrapezoidFinSetCfg.lbl.Sweeplength.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Sweeplength.es.text.md5=Vk+OrScgDQpnOeW/TH8lvA\=\=
+TrapezoidFinSetCfg.lbl.Sweeplength.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Sweeplength.fr.text.md5=eDaCD2VzrF8LK5agm3RqSA\=\=
+TrapezoidFinSetCfg.lbl.Thickness..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\=
+TrapezoidFinSetCfg.lbl.Thickness.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\=
+TrapezoidFinSetCfg.lbl.Thickness.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\=
+TrapezoidFinSetCfg.lbl.Tipchord..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Tipchord..text.md5=GUBHaGqGKM9ppb3sTLPsKQ\=\=
+TrapezoidFinSetCfg.lbl.Tipchord.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.Tipchord.es.text.md5=MRxk4O4W4oiWUfLorzCTHQ\=\=
+TrapezoidFinSetCfg.lbl.Tipchord.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.Tipchord.fr.text.md5=FoASTvgMJYHxlaB7R4HMgA\=\=
+TrapezoidFinSetCfg.lbl.plus..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+TrapezoidFinSetCfg.lbl.plus.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+TrapezoidFinSetCfg.lbl.plus.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+TrapezoidFinSetCfg.lbl.ttip.Fincant..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.ttip.Fincant..text.md5=kjjf+CiniAfww5LqDIYfBg\=\=
+TrapezoidFinSetCfg.lbl.ttip.Fincant.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.ttip.Fincant.es.text.md5=d4LJI6fNlilx21NBLElyuw\=\=
+TrapezoidFinSetCfg.lbl.ttip.Fincant.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.ttip.Fincant.fr.text.md5=5J6LoK3Om+iSjmC0UH89VQ\=\=
+TrapezoidFinSetCfg.lbl.ttip.Finrotation..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.ttip.Finrotation..text.md5=4SuxjeOuTWYNxCD8de8HDA\=\=
+TrapezoidFinSetCfg.lbl.ttip.Finrotation.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.ttip.Finrotation.es.text.md5=45bfdMeN3lP1CmNArmlLPA\=\=
+TrapezoidFinSetCfg.lbl.ttip.Finrotation.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.ttip.Finrotation.fr.text.md5=MZPO2DPebhao79WS/frpFw\=\=
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins..text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins..text.md5=vxZq4AgK4rsW7WPFgvn62Q\=\=
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins.es.text.changed=20110317062041
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins.es.text.md5=qNSf7UrUwAxKgoS6vA33Cg\=\=
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins.fr.text.md5=lmaV6ItoDcflEv/liKd4dA\=\=
+TrapezoidFinSetCfg.tab.General..text.changed=20110317061957
+TrapezoidFinSetCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+TrapezoidFinSetCfg.tab.General.es.text.changed=20110317062041
+TrapezoidFinSetCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\=
+TrapezoidFinSetCfg.tab.General.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\=
+TrapezoidFinSetCfg.tab.Generalproperties..text.changed=20110317061957
+TrapezoidFinSetCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\=
+TrapezoidFinSetCfg.tab.Generalproperties.es.text.changed=20110317062041
+TrapezoidFinSetCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\=
+TrapezoidFinSetCfg.tab.Generalproperties.fr.text.changed=20110317061957
+TrapezoidFinSetCfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\=
+TubeCoupler.TubeCoupler..text.changed=20110317061957
+TubeCoupler.TubeCoupler..text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\=
+TubeCoupler.TubeCoupler.es.text.changed=20110317062041
+TubeCoupler.TubeCoupler.es.text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\=
+TubeCoupler.TubeCoupler.fr.text.changed=20110317061957
+TubeCoupler.TubeCoupler.fr.text.md5=frXexxzhWAX7rrfGqQSHJw\=\=
+Warning.DISCONTINUITY..text.changed=20110317061957
+Warning.DISCONTINUITY..text.md5=eNCKwoJQxDywrj8xbfgJ3g\=\=
+Warning.DISCONTINUITY.es.text.changed=20110317062041
+Warning.DISCONTINUITY.es.text.md5=eNCKwoJQxDywrj8xbfgJ3g\=\=
+Warning.DISCONTINUITY.fr.text.changed=20110317061957
+Warning.DISCONTINUITY.fr.text.md5=+gio1/3Ee6ppotu3vX6B8w\=\=
+Warning.FILE_INVALID_PARAMETER..text.changed=20110317061957
+Warning.FILE_INVALID_PARAMETER..text.md5=aPHWvRrd9IqL7wuo3RqJJQ\=\=
+Warning.FILE_INVALID_PARAMETER.es.text.changed=20110317062041
+Warning.FILE_INVALID_PARAMETER.es.text.md5=aPHWvRrd9IqL7wuo3RqJJQ\=\=
+Warning.FILE_INVALID_PARAMETER.fr.text.changed=20110317061957
+Warning.FILE_INVALID_PARAMETER.fr.text.md5=YgL+Ccbz33I8dESXVXduIw\=\=
+Warning.JAGGED_EDGED_FIN..text.changed=20110317061957
+Warning.JAGGED_EDGED_FIN..text.md5=KUU5Uh2dUr+Dpl139v1b9Q\=\=
+Warning.JAGGED_EDGED_FIN.es.text.changed=20110317062041
+Warning.JAGGED_EDGED_FIN.es.text.md5=KUU5Uh2dUr+Dpl139v1b9Q\=\=
+Warning.JAGGED_EDGED_FIN.fr.text.changed=20110317061957
+Warning.JAGGED_EDGED_FIN.fr.text.md5=KUU5Uh2dUr+Dpl139v1b9Q\=\=
+Warning.LISTENERS_AFFECTED..text.changed=20110317061957
+Warning.LISTENERS_AFFECTED..text.md5=8dm5QPkBAddRhQoh/i7vdw\=\=
+Warning.LISTENERS_AFFECTED.es.text.changed=20110317062041
+Warning.LISTENERS_AFFECTED.es.text.md5=8dm5QPkBAddRhQoh/i7vdw\=\=
+Warning.LISTENERS_AFFECTED.fr.text.changed=20110317061957
+Warning.LISTENERS_AFFECTED.fr.text.md5=8dm5QPkBAddRhQoh/i7vdw\=\=
+Warning.LargeAOA.str1..text.changed=20110317061957
+Warning.LargeAOA.str1..text.md5=qffzKw06Qu0M2EFBGX53KQ\=\=
+Warning.LargeAOA.str1.es.text.changed=20110317062041
+Warning.LargeAOA.str1.es.text.md5=qffzKw06Qu0M2EFBGX53KQ\=\=
+Warning.LargeAOA.str1.fr.text.changed=20110317061957
+Warning.LargeAOA.str1.fr.text.md5=MLqbognfpcENrw3QivzMxQ\=\=
+Warning.LargeAOA.str2..text.changed=20110317061957
+Warning.LargeAOA.str2..text.md5=EphhqogWSnQlN25Iqf9EAA\=\=
+Warning.LargeAOA.str2.es.text.changed=20110317062041
+Warning.LargeAOA.str2.es.text.md5=EphhqogWSnQlN25Iqf9EAA\=\=
+Warning.LargeAOA.str2.fr.text.changed=20110317061957
+Warning.LargeAOA.str2.fr.text.md5=r7v1sbu3GenWV/VqjTQ0DQ\=\=
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING..text.changed=20110317061957
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING..text.md5=p5/dVPZqCn2hMHRI0sgh3w\=\=
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.es.text.changed=20110317062041
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.es.text.md5=p5/dVPZqCn2hMHRI0sgh3w\=\=
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.fr.text.changed=20110317061957
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.fr.text.md5=j20/tavlZlR3uN3OTMW+yw\=\=
+Warning.THICK_FIN..text.changed=20110317061957
+Warning.THICK_FIN..text.md5=25xA504x1EfWDsFsamLwsg\=\=
+Warning.THICK_FIN.es.text.changed=20110317062041
+Warning.THICK_FIN.es.text.md5=25xA504x1EfWDsFsamLwsg\=\=
+Warning.THICK_FIN.fr.text.changed=20110317061957
+Warning.THICK_FIN.fr.text.md5=HzT+QA6XAWAY/wdT/sYdFQ\=\=
+about.dlg.but.close..text.changed=20110317061957
+about.dlg.but.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\=
+about.dlg.but.close.es.text.changed=20110317062041
+about.dlg.but.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\=
+about.dlg.but.close.fr.text.changed=20110317061957
+about.dlg.but.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\=
+about.dlg.lbl.translation..text.changed=20110317061957
+about.dlg.lbl.translation..text.md5=1B2M2Y8AsgTpgAmY7PhCfg\=\=
+about.dlg.lbl.translation.es.text.changed=20110317062041
+about.dlg.lbl.translation.es.text.md5=fA4YCK4DMikRK+Sv2Yw0xQ\=\=
+about.dlg.lbl.translation.fr.text.changed=20110317061957
+about.dlg.lbl.translation.fr.text.md5=Z0M8jBqPocF3tDMPqTzw4w\=\=
+about.dlg.lbl.transwebsite..text.changed=20110317061957
+about.dlg.lbl.transwebsite..text.md5=1B2M2Y8AsgTpgAmY7PhCfg\=\=
+about.dlg.lbl.transwebsite.es.text.changed=20110317062041
+about.dlg.lbl.transwebsite.es.text.md5=lGqQCXPUnqishiHFaykmNw\=\=
+about.dlg.lbl.transwebsite.fr.text.changed=20110317061957
+about.dlg.lbl.transwebsite.fr.text.md5=k8o32iVyKcFtEYkdRu2eNA\=\=
+bugreport.dlg.but.Sendbugreport..text.changed=20110317061957
+bugreport.dlg.but.Sendbugreport..text.md5=PV+wcfl64I1oi0ihDNgNPQ\=\=
+bugreport.dlg.but.Sendbugreport.Ttip..text.changed=20110317061957
+bugreport.dlg.but.Sendbugreport.Ttip..text.md5=mjUZDQaG14xEtNs0FFbTMg\=\=
+bugreport.dlg.but.Sendbugreport.Ttip.es.text.changed=20110317062041
+bugreport.dlg.but.Sendbugreport.Ttip.es.text.md5=RwlRsiy07LO/FIKr0srFfQ\=\=
+bugreport.dlg.but.Sendbugreport.Ttip.fr.text.changed=20110317061957
+bugreport.dlg.but.Sendbugreport.Ttip.fr.text.md5=qguGhar4dYzA4x40BNnpVw\=\=
+bugreport.dlg.but.Sendbugreport.es.text.changed=20110317062041
+bugreport.dlg.but.Sendbugreport.es.text.md5=deP3GgB1zAiZkYIqJpn0fg\=\=
+bugreport.dlg.but.Sendbugreport.fr.text.changed=20110317061957
+bugreport.dlg.but.Sendbugreport.fr.text.md5=Kfd9FlSYtID0r6OAfPjsPA\=\=
+bugreport.dlg.connectedInternet..text.changed=20110317061957
+bugreport.dlg.connectedInternet..text.md5=eRNqOdo8dmBW+76ebGN8HQ\=\=
+bugreport.dlg.connectedInternet.es.text.changed=20110317062041
+bugreport.dlg.connectedInternet.es.text.md5=eRNqOdo8dmBW+76ebGN8HQ\=\=
+bugreport.dlg.connectedInternet.fr.text.changed=20110317061957
+bugreport.dlg.connectedInternet.fr.text.md5=VJwP3s0gg+HNjtzt8Cd/5g\=\=
+bugreport.dlg.failedmsg1..text.changed=20110317061957
+bugreport.dlg.failedmsg1..text.md5=cF008mzPY9AC+/fJc6pFng\=\=
+bugreport.dlg.failedmsg1.es.text.changed=20110317062041
+bugreport.dlg.failedmsg1.es.text.md5=cF008mzPY9AC+/fJc6pFng\=\=
+bugreport.dlg.failedmsg1.fr.text.changed=20110317061957
+bugreport.dlg.failedmsg1.fr.text.md5=YJknwYybh1ObzmtiqhBbmw\=\=
+bugreport.dlg.failedmsg2..text.changed=20110317061957
+bugreport.dlg.failedmsg2..text.md5=Z6nnOrRZLJ0bRVXm/3z3hA\=\=
+bugreport.dlg.failedmsg2.es.text.changed=20110317062041
+bugreport.dlg.failedmsg2.es.text.md5=Z6nnOrRZLJ0bRVXm/3z3hA\=\=
+bugreport.dlg.failedmsg2.fr.text.changed=20110317061957
+bugreport.dlg.failedmsg2.fr.text.md5=rT9rxrdCVWJOqObQmfwIrw\=\=
+bugreport.dlg.failedmsg3..text.changed=20110317061957
+bugreport.dlg.failedmsg3..text.md5=6WopJC7Dk2vCEH6r7t3mGA\=\=
+bugreport.dlg.failedmsg3.es.text.changed=20110317062041
+bugreport.dlg.failedmsg3.es.text.md5=6WopJC7Dk2vCEH6r7t3mGA\=\=
+bugreport.dlg.failedmsg3.fr.text.changed=20110317061957
+bugreport.dlg.failedmsg3.fr.text.md5=fvQlfkqxy6rhoMAKKoSNXA\=\=
+bugreport.dlg.otherwise..text.changed=20110317061957
+bugreport.dlg.otherwise..text.md5=LYetPqJmAePLdo2wR3K1rg\=\=
+bugreport.dlg.otherwise.es.text.changed=20110317062041
+bugreport.dlg.otherwise.es.text.md5=LYetPqJmAePLdo2wR3K1rg\=\=
+bugreport.dlg.otherwise.fr.text.changed=20110317061957
+bugreport.dlg.otherwise.fr.text.md5=yqDk/+ypkJfl71izUhT6MA\=\=
+bugreport.dlg.successmsg1..text.changed=20110317061957
+bugreport.dlg.successmsg1..text.md5=1MIKXe1BByXHkCkhHO1ryg\=\=
+bugreport.dlg.successmsg1.es.text.changed=20110317062041
+bugreport.dlg.successmsg1.es.text.md5=gnclRYA8ozcHRHPWr/ceng\=\=
+bugreport.dlg.successmsg1.fr.text.changed=20110317061957
+bugreport.dlg.successmsg1.fr.text.md5=6cP3H+5XstdvcJQ0GcH7pA\=\=
+bugreport.dlg.successmsg2..text.changed=20110317061957
+bugreport.dlg.successmsg2..text.md5=kdF1mm9+6A4RpbCY3fePBw\=\=
+bugreport.dlg.successmsg2.es.text.changed=20110317062041
+bugreport.dlg.successmsg2.es.text.md5=R9Tb2jpsh+SDwiXz1TZVwg\=\=
+bugreport.dlg.successmsg2.fr.text.changed=20110317061957
+bugreport.dlg.successmsg2.fr.text.md5=FPm5hX1WjOXz1tDUO3xg6g\=\=
+bugreport.dlg.successmsg3..text.changed=20110317061957
+bugreport.dlg.successmsg3..text.md5=75GrlotWvtLbyqfXZhSyRA\=\=
+bugreport.dlg.successmsg3.es.text.changed=20110317062041
+bugreport.dlg.successmsg3.es.text.md5=qFk1pfvDDj0lA9RICra6kw\=\=
+bugreport.dlg.successmsg3.fr.text.changed=20110317061957
+bugreport.dlg.successmsg3.fr.text.md5=33iwmRUE0XdxOUVXX7ihvw\=\=
+bugreport.dlg.title..text.changed=20110317061957
+bugreport.dlg.title..text.md5=pmZEXVggqk9Vewxw6hO/NQ\=\=
+bugreport.dlg.title.es.text.changed=20110317062041
+bugreport.dlg.title.es.text.md5=cKf7D5K4tsOIxtnExhAzmQ\=\=
+bugreport.dlg.title.fr.text.changed=20110317061957
+bugreport.dlg.title.fr.text.md5=BY0T+RFoTg3aJNXeYhGuqw\=\=
+bugreport.lbl.Theinformation..text.changed=20110317061957
+bugreport.lbl.Theinformation..text.md5=BUZdhRQVonaRvuAKLoxWcg\=\=
+bugreport.lbl.Theinformation.es.text.changed=20110317062041
+bugreport.lbl.Theinformation.es.text.md5=BUZdhRQVonaRvuAKLoxWcg\=\=
+bugreport.lbl.Theinformation.fr.text.changed=20110317061957
+bugreport.lbl.Theinformation.fr.text.md5=6BNaanVrhB73MvtrYQaXLw\=\=
+bugreport.reportDialog.txt..text.changed=20110317061957
+bugreport.reportDialog.txt..text.md5=qYvimRuSg0MtPJ/kTd6Sdw\=\=
+bugreport.reportDialog.txt.es.text.changed=20110317062041
+bugreport.reportDialog.txt.es.text.md5=qYvimRuSg0MtPJ/kTd6Sdw\=\=
+bugreport.reportDialog.txt.fr.text.changed=20110317061957
+bugreport.reportDialog.txt.fr.text.md5=6t9xBkWX00ZO+svrZKvQrw\=\=
+bugreport.reportDialog.txt2..text.changed=20110317061957
+bugreport.reportDialog.txt2..text.md5=jOn4lLgo8dp//W0Hy5sSwA\=\=
+bugreport.reportDialog.txt2.es.text.changed=20110317062041
+bugreport.reportDialog.txt2.es.text.md5=jOn4lLgo8dp//W0Hy5sSwA\=\=
+bugreport.reportDialog.txt2.fr.text.changed=20110317061957
+bugreport.reportDialog.txt2.fr.text.md5=dNIDQNy9wrsEa4pOy5LlQQ\=\=
+button.cancel..text.changed=20110317061957
+button.cancel..text.md5=6keIcF5oc7Qkxl6RwoRrGQ\=\=
+button.cancel.es.text.changed=20110317062041
+button.cancel.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+button.cancel.fr.text.changed=20110317061957
+button.cancel.fr.text.md5=0Sw7Dc91YU2vsqxr2qd6Jg\=\=
+button.close..text.changed=20110317061957
+button.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\=
+button.close.es.text.changed=20110317062041
+button.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\=
+button.close.fr.text.changed=20110317061957
+button.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\=
+button.ok..text.changed=20110317061957
+button.ok..text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\=
+button.ok.es.text.changed=20110317062041
+button.ok.es.text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\=
+button.ok.fr.text.changed=20110317061957
+button.ok.fr.text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\=
+compaddbuttons.Bodycompandfinsets..text.changed=20110317061957
+compaddbuttons.Bodycompandfinsets..text.md5=N7AY2q4VZ6/2LCZLyw3XlA\=\=
+compaddbuttons.Bodycompandfinsets.es.text.changed=20110317062041
+compaddbuttons.Bodycompandfinsets.es.text.md5=rryFBbFuUQlCJFtQ6piQTA\=\=
+compaddbuttons.Bodycompandfinsets.fr.text.changed=20110317061957
+compaddbuttons.Bodycompandfinsets.fr.text.md5=yUPaXljgzn/zglKqaE5DuA\=\=
+compaddbuttons.Bodytube..text.changed=20110317061957
+compaddbuttons.Bodytube..text.md5=3T0MaANX4mUAKbI403vAUA\=\=
+compaddbuttons.Bodytube.es.text.changed=20110317062041
+compaddbuttons.Bodytube.es.text.md5=W2UBWpdSguNSQ7XeOsw8kA\=\=
+compaddbuttons.Bodytube.fr.text.changed=20110317061957
+compaddbuttons.Bodytube.fr.text.md5=fA71ssLRmS1SacfrveHv1w\=\=
+compaddbuttons.Bulkhead..text.changed=20110317061957
+compaddbuttons.Bulkhead..text.md5=RUE9DoWgodoMLY1BHiEsiQ\=\=
+compaddbuttons.Bulkhead.es.text.changed=20110317062041
+compaddbuttons.Bulkhead.es.text.md5=WK4F4o1Q945Rpwf9VI23PA\=\=
+compaddbuttons.Bulkhead.fr.text.changed=20110317061957
+compaddbuttons.Bulkhead.fr.text.md5=GjYF1XuUam6E2N+JDKsnLQ\=\=
+compaddbuttons.Centeringring..text.changed=20110317061957
+compaddbuttons.Centeringring..text.md5=W6zCIsKYZTrWxiKinBxMzQ\=\=
+compaddbuttons.Centeringring.es.text.changed=20110317062041
+compaddbuttons.Centeringring.es.text.md5=vBGlbB3iLTZQFU7JS9flTA\=\=
+compaddbuttons.Centeringring.fr.text.changed=20110317061957
+compaddbuttons.Centeringring.fr.text.md5=muxKfJnuz6guXOavDUP62A\=\=
+compaddbuttons.Coupler..text.changed=20110317061957
+compaddbuttons.Coupler..text.md5=AFmSvrzD0t+si2qKC0y6sQ\=\=
+compaddbuttons.Coupler.es.text.changed=20110317062041
+compaddbuttons.Coupler.es.text.md5=me1bY1UzGIPmWfbaGKJQlA\=\=
+compaddbuttons.Coupler.fr.text.changed=20110317061957
+compaddbuttons.Coupler.fr.text.md5=tGMcIhRmDkU/1vMB2LPDMg\=\=
+compaddbuttons.Donotaskmeagain..text.changed=20110317061957
+compaddbuttons.Donotaskmeagain..text.md5=xMeqCOFI2ELVUxa8B2WjDA\=\=
+compaddbuttons.Donotaskmeagain.es.text.changed=20110317062041
+compaddbuttons.Donotaskmeagain.es.text.md5=oid3MB3hViU7UBOmEbZBLg\=\=
+compaddbuttons.Donotaskmeagain.fr.text.changed=20110317061957
+compaddbuttons.Donotaskmeagain.fr.text.md5=vp5qu368QgbAMROQEW0nTA\=\=
+compaddbuttons.Elliptical..text.changed=20110317061957
+compaddbuttons.Elliptical..text.md5=z77FnrYkInE9PyP0EvoeCQ\=\=
+compaddbuttons.Elliptical.es.text.changed=20110317062041
+compaddbuttons.Elliptical.es.text.md5=TAyLlu2P3GZcNR/8DsXkUA\=\=
+compaddbuttons.Elliptical.fr.text.changed=20110317061957
+compaddbuttons.Elliptical.fr.text.md5=lf7R8/pfh80lCkHLe9aESQ\=\=
+compaddbuttons.Engineblock..text.changed=20110317061957
+compaddbuttons.Engineblock..text.md5=KMOLvDRs086S3HPQnRqMlw\=\=
+compaddbuttons.Engineblock.es.text.changed=20110317062041
+compaddbuttons.Engineblock.es.text.md5=rihNSh3XscOM9TeKhQefOQ\=\=
+compaddbuttons.Engineblock.fr.text.changed=20110317061957
+compaddbuttons.Engineblock.fr.text.md5=1joY0C31QAJNreQXv6Fa3A\=\=
+compaddbuttons.Freeform..text.changed=20110317061957
+compaddbuttons.Freeform..text.md5=fd+WG/qSdcIFTyitzMirVg\=\=
+compaddbuttons.Freeform.es.text.changed=20110317062041
+compaddbuttons.Freeform.es.text.md5=f4ZmLCPkmI3JCLnimqLrzQ\=\=
+compaddbuttons.Freeform.fr.text.changed=20110317061957
+compaddbuttons.Freeform.fr.text.md5=30hU/eyaYTVddetn0M38rA\=\=
+compaddbuttons.Innercomponent..text.changed=20110317061957
+compaddbuttons.Innercomponent..text.md5=8SkfpQ2moHfvkUSkUiaoXw\=\=
+compaddbuttons.Innercomponent.es.text.changed=20110317062041
+compaddbuttons.Innercomponent.es.text.md5=ZDhwa+Ij2kiNFgDXFXWHkA\=\=
+compaddbuttons.Innercomponent.fr.text.changed=20110317061957
+compaddbuttons.Innercomponent.fr.text.md5=tWXmNg5qTJI8mR7oKdO99g\=\=
+compaddbuttons.Innertube..text.changed=20110317061957
+compaddbuttons.Innertube..text.md5=cLH+jIw9kSgufhebGqahkA\=\=
+compaddbuttons.Innertube.es.text.changed=20110317062041
+compaddbuttons.Innertube.es.text.md5=ZigVsLpAbCH6szY0rg2brw\=\=
+compaddbuttons.Innertube.fr.text.changed=20110317061957
+compaddbuttons.Innertube.fr.text.md5=Qi8ZJArDrWFHkJPWtc56Nw\=\=
+compaddbuttons.Launchlug..text.changed=20110317061957
+compaddbuttons.Launchlug..text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\=
+compaddbuttons.Launchlug.es.text.changed=20110317062041
+compaddbuttons.Launchlug.es.text.md5=87bZXZVyy+RPniKsjRvwhQ\=\=
+compaddbuttons.Launchlug.fr.text.changed=20110317061957
+compaddbuttons.Launchlug.fr.text.md5=DgeT4LMq8b7kJjfvIjiklw\=\=
+compaddbuttons.Masscomponent..text.changed=20110317061957
+compaddbuttons.Masscomponent..text.md5=9o1nH2XLtIScEh4EWfABDg\=\=
+compaddbuttons.Masscomponent.es.text.changed=20110317062041
+compaddbuttons.Masscomponent.es.text.md5=2oisc09VJrJ6GQiUdl6pdg\=\=
+compaddbuttons.Masscomponent.fr.text.changed=20110317061957
+compaddbuttons.Masscomponent.fr.text.md5=rpDyHcEdivKA4mJs1RiqZw\=\=
+compaddbuttons.Massobjects..text.changed=20110317061957
+compaddbuttons.Massobjects..text.md5=GIHwgeHpviAWJNgUAaMFeA\=\=
+compaddbuttons.Massobjects.es.text.changed=20110317062041
+compaddbuttons.Massobjects.es.text.md5=MxpYaIs8YfdjBzub02ZPdg\=\=
+compaddbuttons.Massobjects.fr.text.changed=20110317061957
+compaddbuttons.Massobjects.fr.text.md5=WjKEhWq5mGxO9w3aIRrd0w\=\=
+compaddbuttons.Nosecone..text.changed=20110317061957
+compaddbuttons.Nosecone..text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\=
+compaddbuttons.Nosecone.es.text.changed=20110317062041
+compaddbuttons.Nosecone.es.text.md5=56naAb1T99JKx+ibUfNZdg\=\=
+compaddbuttons.Nosecone.fr.text.changed=20110317061957
+compaddbuttons.Nosecone.fr.text.md5=HvPtCV8mNg+DY2Dm/IR/bQ\=\=
+compaddbuttons.Parachute..text.changed=20110317061957
+compaddbuttons.Parachute..text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+compaddbuttons.Parachute.es.text.changed=20110317062041
+compaddbuttons.Parachute.es.text.md5=nCivjCIc0OtSb3Qvp/+/qQ\=\=
+compaddbuttons.Parachute.fr.text.changed=20110317061957
+compaddbuttons.Parachute.fr.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\=
+compaddbuttons.Selectcomppos..text.changed=20110317061957
+compaddbuttons.Selectcomppos..text.md5=uTafmeB1z2KsM48C9OhQ3w\=\=
+compaddbuttons.Selectcomppos.es.text.changed=20110317062041
+compaddbuttons.Selectcomppos.es.text.md5=9SpMTonEN8F0fi660PTDQg\=\=
+compaddbuttons.Selectcomppos.fr.text.changed=20110317061957
+compaddbuttons.Selectcomppos.fr.text.md5=9g/tx8LNo1gxDwI/wuJUuA\=\=
+compaddbuttons.Shockcord..text.changed=20110317061957
+compaddbuttons.Shockcord..text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\=
+compaddbuttons.Shockcord.es.text.changed=20110317062041
+compaddbuttons.Shockcord.es.text.md5=a19XGntzTva7YqUb5EDICg\=\=
+compaddbuttons.Shockcord.fr.text.changed=20110317061957
+compaddbuttons.Shockcord.fr.text.md5=RnR22FP/b23+JTzmuMDTbw\=\=
+compaddbuttons.Streamer..text.changed=20110317061957
+compaddbuttons.Streamer..text.md5=nLxM4h+Bh1qHHzkakoNUTg\=\=
+compaddbuttons.Streamer.es.text.changed=20110317062041
+compaddbuttons.Streamer.es.text.md5=p+yhPReJ6siV56zu/Cc6kA\=\=
+compaddbuttons.Streamer.fr.text.changed=20110317061957
+compaddbuttons.Streamer.fr.text.md5=LkFAj784NiwJ0RG/xu+3Eg\=\=
+compaddbuttons.Transition..text.changed=20110317061957
+compaddbuttons.Transition..text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+compaddbuttons.Transition.es.text.changed=20110317062041
+compaddbuttons.Transition.es.text.md5=xGQdkvQFh+aVMT3VBbupUQ\=\=
+compaddbuttons.Transition.fr.text.changed=20110317061957
+compaddbuttons.Transition.fr.text.md5=r+35r+42f1H5jXzwMMl2pg\=\=
+compaddbuttons.Trapezoidal..text.changed=20110317061957
+compaddbuttons.Trapezoidal..text.md5=yAM1BBJdAwgaQ7TvxbiGjA\=\=
+compaddbuttons.Trapezoidal.es.text.changed=20110317062041
+compaddbuttons.Trapezoidal.es.text.md5=yAM1BBJdAwgaQ7TvxbiGjA\=\=
+compaddbuttons.Trapezoidal.fr.text.changed=20110317061957
+compaddbuttons.Trapezoidal.fr.text.md5=PkQ+fI/G/p6txA7dXfB9Wg\=\=
+compaddbuttons.askPosition.Addtotheend..text.changed=20110317061957
+compaddbuttons.askPosition.Addtotheend..text.md5=juorRPI/2Q8gvdvd555m8Q\=\=
+compaddbuttons.askPosition.Addtotheend.es.text.changed=20110317062041
+compaddbuttons.askPosition.Addtotheend.es.text.md5=gX7IpzHYCaIjcWAzEuELdA\=\=
+compaddbuttons.askPosition.Addtotheend.fr.text.changed=20110317061957
+compaddbuttons.askPosition.Addtotheend.fr.text.md5=jwbQgugB01TZqmUymYcoVQ\=\=
+compaddbuttons.askPosition.Cancel..text.changed=20110317061957
+compaddbuttons.askPosition.Cancel..text.md5=6keIcF5oc7Qkxl6RwoRrGQ\=\=
+compaddbuttons.askPosition.Cancel.es.text.changed=20110317062041
+compaddbuttons.askPosition.Cancel.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+compaddbuttons.askPosition.Cancel.fr.text.changed=20110317061957
+compaddbuttons.askPosition.Cancel.fr.text.md5=0Sw7Dc91YU2vsqxr2qd6Jg\=\=
+compaddbuttons.askPosition.Inserthere..text.changed=20110317061957
+compaddbuttons.askPosition.Inserthere..text.md5=FI3+41ScbjGqj/31hjH9zw\=\=
+compaddbuttons.askPosition.Inserthere.es.text.changed=20110317062041
+compaddbuttons.askPosition.Inserthere.es.text.md5=uNhxYMKLYGXGUpyXD4vf7Q\=\=
+compaddbuttons.askPosition.Inserthere.fr.text.changed=20110317061957
+compaddbuttons.askPosition.Inserthere.fr.text.md5=psxFqKwcrmcvfvHUCgngRQ\=\=
+compaddbuttons.lbl.Youcanchange..text.changed=20110317061957
+compaddbuttons.lbl.Youcanchange..text.md5=cYQgfnoeRCK2h69YzRSoxw\=\=
+compaddbuttons.lbl.Youcanchange.es.text.changed=20110317062041
+compaddbuttons.lbl.Youcanchange.es.text.md5=wnJcV00U1IC4VsZ1ppHN2Q\=\=
+compaddbuttons.lbl.Youcanchange.fr.text.changed=20110317061957
+compaddbuttons.lbl.Youcanchange.fr.text.md5=TY0sYCxJsAs6o/fP5WpVVg\=\=
+compaddbuttons.lbl.insertcomp..text.changed=20110317061957
+compaddbuttons.lbl.insertcomp..text.md5=m4mEfQtiC/+hIx7mtMvcpw\=\=
+compaddbuttons.lbl.insertcomp.es.text.changed=20110317062041
+compaddbuttons.lbl.insertcomp.es.text.md5=2VGg4s90+Ud9LIkn0vRELQ\=\=
+compaddbuttons.lbl.insertcomp.fr.text.changed=20110317061957
+compaddbuttons.lbl.insertcomp.fr.text.md5=ZxybjbTQ8TXgOZdT9TrPsw\=\=
+componentanalysisdlg.Componentanalysis.fr.text.changed=20110317061957
+componentanalysisdlg.Componentanalysis.fr.text.md5=SigCJBSkS7Z+plowJJuLgA\=\=
+componentanalysisdlg.TabStability..text.changed=20110317061957
+componentanalysisdlg.TabStability..text.md5=eylw1Ic9OeR0RxAgea+VOw\=\=
+componentanalysisdlg.TabStability.Col..text.changed=20110317061957
+componentanalysisdlg.TabStability.Col..text.md5=LLBeS7eDC+mC8JIv7Ya0zQ\=\=
+componentanalysisdlg.TabStability.Col.Component.fr.text.changed=20110317061957
+componentanalysisdlg.TabStability.Col.Component.fr.text.md5=FT2RNxbZu/duQpuDjD2B6A\=\=
+componentanalysisdlg.TabStability.Col.es.text.changed=20110317062041
+componentanalysisdlg.TabStability.Col.es.text.md5=B5XpNsJaSxIl+h4Zz1cJAA\=\=
+componentanalysisdlg.TabStability.es.text.changed=20110317062041
+componentanalysisdlg.TabStability.es.text.md5=tsUx4ohpP/jOyk0Sl6/RfQ\=\=
+componentanalysisdlg.TabStability.fr.text.changed=20110317061957
+componentanalysisdlg.TabStability.fr.text.md5=8gLplf3a7xViJxa28Xz5Lg\=\=
+componentanalysisdlg.TabStability.ttip..text.changed=20110317061957
+componentanalysisdlg.TabStability.ttip..text.md5=qieokL2UqYwKmBfugvMcVA\=\=
+componentanalysisdlg.TabStability.ttip.es.text.changed=20110317062041
+componentanalysisdlg.TabStability.ttip.es.text.md5=0bBcUjVP3Tm9WBoc2T2ZbA\=\=
+componentanalysisdlg.TabStability.ttip.fr.text.changed=20110317061957
+componentanalysisdlg.TabStability.ttip.fr.text.md5=ISZ3q3o0k2iJ4MxE7diL/Q\=\=
+componentanalysisdlg.TitledBorder.warnings..text.changed=20110317061957
+componentanalysisdlg.TitledBorder.warnings..text.md5=ycg0elpdCeaGHWSXGg50BA\=\=
+componentanalysisdlg.TitledBorder.warnings.es.text.changed=20110317062041
+componentanalysisdlg.TitledBorder.warnings.es.text.md5=Ep299r+2xtewdnHrcJsaIQ\=\=
+componentanalysisdlg.TitledBorder.warnings.fr.text.changed=20110317061957
+componentanalysisdlg.TitledBorder.warnings.fr.text.md5=XlSyZK9WUoDwVBciA74tbg\=\=
+componentanalysisdlg.ToggleBut.worst..text.changed=20110317061957
+componentanalysisdlg.ToggleBut.worst..text.md5=T05xk4oQX+cr0YeI/lPUCQ\=\=
+componentanalysisdlg.ToggleBut.worst.es.text.changed=20110317062041
+componentanalysisdlg.ToggleBut.worst.es.text.md5=6pkd5JOIAyifDaptW5NZUg\=\=
+componentanalysisdlg.ToggleBut.worst.fr.text.changed=20110317061957
+componentanalysisdlg.ToggleBut.worst.fr.text.md5=URE/SEtjpNYYBBsltZp/EA\=\=
+componentanalysisdlg.componentanalysis..text.changed=20110317061957
+componentanalysisdlg.componentanalysis..text.md5=sM5Mz8gIlX8rHWfsY6cqFA\=\=
+componentanalysisdlg.componentanalysis.es.text.changed=20110317062041
+componentanalysisdlg.componentanalysis.es.text.md5=Lusfz3i1F0bI5OxVqZklVA\=\=
+componentanalysisdlg.dragTabchar..text.changed=20110317061957
+componentanalysisdlg.dragTabchar..text.md5=iWJgErDbTLRn4qJEcy/REw\=\=
+componentanalysisdlg.dragTabchar.es.text.changed=20110317062041
+componentanalysisdlg.dragTabchar.es.text.md5=jAPIoV5mAsNOWsEcgbGVKg\=\=
+componentanalysisdlg.dragTabchar.fr.text.changed=20110317061957
+componentanalysisdlg.dragTabchar.fr.text.md5=KqSEEsUClD21CPRgT0kc6w\=\=
+componentanalysisdlg.dragTabchar.ttip..text.changed=20110317061957
+componentanalysisdlg.dragTabchar.ttip..text.md5=iWJgErDbTLRn4qJEcy/REw\=\=
+componentanalysisdlg.dragTabchar.ttip.es.text.changed=20110317062041
+componentanalysisdlg.dragTabchar.ttip.es.text.md5=jAPIoV5mAsNOWsEcgbGVKg\=\=
+componentanalysisdlg.dragTabchar.ttip.fr.text.changed=20110317061957
+componentanalysisdlg.dragTabchar.ttip.fr.text.md5=KqSEEsUClD21CPRgT0kc6w\=\=
+componentanalysisdlg.dragTableModel.Col.Base..text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.Base..text.md5=MnxdbReIC44Z1ZjH8yMoTg\=\=
+componentanalysisdlg.dragTableModel.Col.Base.es.text.changed=20110317062041
+componentanalysisdlg.dragTableModel.Col.Base.es.text.md5=MnxdbReIC44Z1ZjH8yMoTg\=\=
+componentanalysisdlg.dragTableModel.Col.Base.fr.text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.Base.fr.text.md5=MnxdbReIC44Z1ZjH8yMoTg\=\=
+componentanalysisdlg.dragTableModel.Col.Component..text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.Component..text.md5=LLBeS7eDC+mC8JIv7Ya0zQ\=\=
+componentanalysisdlg.dragTableModel.Col.Component.es.text.changed=20110317062041
+componentanalysisdlg.dragTableModel.Col.Component.es.text.md5=B5XpNsJaSxIl+h4Zz1cJAA\=\=
+componentanalysisdlg.dragTableModel.Col.Component.fr.text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.Component.fr.text.md5=FT2RNxbZu/duQpuDjD2B6A\=\=
+componentanalysisdlg.dragTableModel.Col.Pressure..text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.Pressure..text.md5=xp1p+t6DIfep5FxdXDxn2w\=\=
+componentanalysisdlg.dragTableModel.Col.Pressure.es.text.changed=20110317062041
+componentanalysisdlg.dragTableModel.Col.Pressure.es.text.md5=Vo18bMQOG4wsxHjZSTtDOQ\=\=
+componentanalysisdlg.dragTableModel.Col.Pressure.fr.text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.Pressure.fr.text.md5=Ru/Idznb57s5uRUyioFvHA\=\=
+componentanalysisdlg.dragTableModel.Col.friction..text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.friction..text.md5=aUqULOh8IfBVAUvr65J08A\=\=
+componentanalysisdlg.dragTableModel.Col.friction.es.text.changed=20110317062041
+componentanalysisdlg.dragTableModel.Col.friction.es.text.md5=/SeFjUxuzKenovVN1AbWiQ\=\=
+componentanalysisdlg.dragTableModel.Col.friction.fr.text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.friction.fr.text.md5=aUqULOh8IfBVAUvr65J08A\=\=
+componentanalysisdlg.dragTableModel.Col.total..text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.total..text.md5=cVGI4HPToucC7nLsnjO3Rg\=\=
+componentanalysisdlg.dragTableModel.Col.total.es.text.changed=20110317062041
+componentanalysisdlg.dragTableModel.Col.total.es.text.md5=cVGI4HPToucC7nLsnjO3Rg\=\=
+componentanalysisdlg.dragTableModel.Col.total.fr.text.changed=20110317061957
+componentanalysisdlg.dragTableModel.Col.total.fr.text.md5=cVGI4HPToucC7nLsnjO3Rg\=\=
+componentanalysisdlg.lbl.activestages..text.changed=20110317061957
+componentanalysisdlg.lbl.activestages..text.md5=7HZnXY6WmgM3bfpelG0cwQ\=\=
+componentanalysisdlg.lbl.activestages.es.text.changed=20110317062041
+componentanalysisdlg.lbl.activestages.es.text.md5=wGwE8XwiLOq9FEkSdPWnBA\=\=
+componentanalysisdlg.lbl.activestages.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.activestages.fr.text.md5=tFM+NaoK1ppgQEtDeRgdag\=\=
+componentanalysisdlg.lbl.angleofattack..text.changed=20110317061957
+componentanalysisdlg.lbl.angleofattack..text.md5=HInCe0Acwh8sHooTGebBFA\=\=
+componentanalysisdlg.lbl.angleofattack.es.text.changed=20110317062041
+componentanalysisdlg.lbl.angleofattack.es.text.md5=+ePneBXSpS0V3MP1dzzHBw\=\=
+componentanalysisdlg.lbl.angleofattack.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.angleofattack.fr.text.md5=tLxiDZSvYFsHvDktIjM6Tg\=\=
+componentanalysisdlg.lbl.machnumber..text.changed=20110317061957
+componentanalysisdlg.lbl.machnumber..text.md5=Or57nhd+QZxDhx1vrukgYg\=\=
+componentanalysisdlg.lbl.machnumber.es.text.changed=20110317062041
+componentanalysisdlg.lbl.machnumber.es.text.md5=5gkqoSSUmWXNZyVL7F/+RQ\=\=
+componentanalysisdlg.lbl.machnumber.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.machnumber.fr.text.md5=Or57nhd+QZxDhx1vrukgYg\=\=
+componentanalysisdlg.lbl.motorconf..text.changed=20110317061957
+componentanalysisdlg.lbl.motorconf..text.md5=hUqBQQLOQuV2isn4DoTERA\=\=
+componentanalysisdlg.lbl.motorconf.es.text.changed=20110317062041
+componentanalysisdlg.lbl.motorconf.es.text.md5=BWdMssbDaIqJGf4qkEjBlw\=\=
+componentanalysisdlg.lbl.motorconf.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.motorconf.fr.text.md5=hU2++Dh8qBxAt7AQTW8GDQ\=\=
+componentanalysisdlg.lbl.refarea..text.changed=20110317061957
+componentanalysisdlg.lbl.refarea..text.md5=sV0ZjBBIjvL17Z678ZaqvQ\=\=
+componentanalysisdlg.lbl.refarea.es.text.changed=20110317062041
+componentanalysisdlg.lbl.refarea.es.text.md5=j+m1SZlabS9tJ7kJ9hllBg\=\=
+componentanalysisdlg.lbl.refarea.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.refarea.fr.text.md5=xEg5o+JFsa/yIugA78XyMQ\=\=
+componentanalysisdlg.lbl.reflenght..text.changed=20110317061957
+componentanalysisdlg.lbl.reflenght..text.md5=LkFk1OFxwceAD252889ejQ\=\=
+componentanalysisdlg.lbl.reflenght.es.text.changed=20110317062041
+componentanalysisdlg.lbl.reflenght.es.text.md5=pHHyMwk4eq2xWElM4R9kmg\=\=
+componentanalysisdlg.lbl.reflenght.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.reflenght.fr.text.md5=hASeCemz/A7/wxgv7VOFwA\=\=
+componentanalysisdlg.lbl.rollrate..text.changed=20110317061957
+componentanalysisdlg.lbl.rollrate..text.md5=jqY3far1Q8N81yltDukE7A\=\=
+componentanalysisdlg.lbl.rollrate.es.text.changed=20110317062041
+componentanalysisdlg.lbl.rollrate.es.text.md5=1rAIRwGCSpwLw/RjfNcTwQ\=\=
+componentanalysisdlg.lbl.rollrate.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.rollrate.fr.text.md5=4yBvCJRuEcR3wYN8vJPczA\=\=
+componentanalysisdlg.lbl.winddir..text.changed=20110317061957
+componentanalysisdlg.lbl.winddir..text.md5=aW45gtLA8AR8R1Kkjdkvng\=\=
+componentanalysisdlg.lbl.winddir.es.text.changed=20110317062041
+componentanalysisdlg.lbl.winddir.es.text.md5=f571kaVKE4jQeXg6JgKJKQ\=\=
+componentanalysisdlg.lbl.winddir.fr.text.changed=20110317061957
+componentanalysisdlg.lbl.winddir.fr.text.md5=u58j3jAJMi+95aTLGIKh/Q\=\=
+componentanalysisdlg.println.closingmethod..text.changed=20110317061957
+componentanalysisdlg.println.closingmethod..text.md5=0hLEG/EJL60ievNrJUL4+w\=\=
+componentanalysisdlg.println.closingmethod.es.text.changed=20110317062041
+componentanalysisdlg.println.closingmethod.es.text.md5=VvAE31tlznTxpF+hjQzmfQ\=\=
+componentanalysisdlg.println.closingmethod.fr.text.changed=20110317061957
+componentanalysisdlg.println.closingmethod.fr.text.md5=Ydw/REnnFBlklQiksjmMGg\=\=
+componentanalysisdlg.println.settingnam..text.changed=20110317061957
+componentanalysisdlg.println.settingnam..text.md5=ILNVE3cL8YQBpCxp8quf3A\=\=
+componentanalysisdlg.println.settingnam.es.text.changed=20110317062041
+componentanalysisdlg.println.settingnam.es.text.md5=ILNVE3cL8YQBpCxp8quf3A\=\=
+componentanalysisdlg.println.settingnam.fr.text.changed=20110317061957
+componentanalysisdlg.println.settingnam.fr.text.md5=ILNVE3cL8YQBpCxp8quf3A\=\=
+componentanalysisdlg.rollTableModel..text.changed=20110317061957
+componentanalysisdlg.rollTableModel..text.md5=OWscsjjUl3ezbtdfrjoICA\=\=
+componentanalysisdlg.rollTableModel.Col.component..text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.component..text.md5=LLBeS7eDC+mC8JIv7Ya0zQ\=\=
+componentanalysisdlg.rollTableModel.Col.component.es.text.changed=20110317062041
+componentanalysisdlg.rollTableModel.Col.component.es.text.md5=B5XpNsJaSxIl+h4Zz1cJAA\=\=
+componentanalysisdlg.rollTableModel.Col.component.fr.text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.component.fr.text.md5=FT2RNxbZu/duQpuDjD2B6A\=\=
+componentanalysisdlg.rollTableModel.Col.rolldamp..text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.rolldamp..text.md5=GLnb/60ST1T0xakX2GOp5w\=\=
+componentanalysisdlg.rollTableModel.Col.rolldamp.es.text.changed=20110317062041
+componentanalysisdlg.rollTableModel.Col.rolldamp.es.text.md5=qvEniJA5lceZRpMJ3JMsfw\=\=
+componentanalysisdlg.rollTableModel.Col.rolldamp.fr.text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.rolldamp.fr.text.md5=2HpP9Twclh/XoPwLjUBR3w\=\=
+componentanalysisdlg.rollTableModel.Col.rollforc..text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.rollforc..text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\=
+componentanalysisdlg.rollTableModel.Col.rollforc.es.text.changed=20110317062041
+componentanalysisdlg.rollTableModel.Col.rollforc.es.text.md5=xtgVFrqOWRaQl4m/PyWfug\=\=
+componentanalysisdlg.rollTableModel.Col.rollforc.fr.text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.rollforc.fr.text.md5=SYES+ygLT80Qw+RM6uUn/w\=\=
+componentanalysisdlg.rollTableModel.Col.total..text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.total..text.md5=m8/vnoLnyBhXSkzN27Iqfg\=\=
+componentanalysisdlg.rollTableModel.Col.total.es.text.changed=20110317062041
+componentanalysisdlg.rollTableModel.Col.total.es.text.md5=m8/vnoLnyBhXSkzN27Iqfg\=\=
+componentanalysisdlg.rollTableModel.Col.total.fr.text.changed=20110317061957
+componentanalysisdlg.rollTableModel.Col.total.fr.text.md5=m8/vnoLnyBhXSkzN27Iqfg\=\=
+componentanalysisdlg.rollTableModel.es.text.changed=20110317062041
+componentanalysisdlg.rollTableModel.es.text.md5=XnevoSWH2GgTJvor+F9RhA\=\=
+componentanalysisdlg.rollTableModel.fr.text.changed=20110317061957
+componentanalysisdlg.rollTableModel.fr.text.md5=U7fnpFxB4I4dZB4koHz3ag\=\=
+componentanalysisdlg.rollTableModel.ttip..text.changed=20110317061957
+componentanalysisdlg.rollTableModel.ttip..text.md5=OWscsjjUl3ezbtdfrjoICA\=\=
+componentanalysisdlg.rollTableModel.ttip.es.text.changed=20110317062041
+componentanalysisdlg.rollTableModel.ttip.es.text.md5=XnevoSWH2GgTJvor+F9RhA\=\=
+componentanalysisdlg.rollTableModel.ttip.fr.text.changed=20110317061957
+componentanalysisdlg.rollTableModel.ttip.fr.text.md5=U7fnpFxB4I4dZB4koHz3ag\=\=
+custmatdlg.checkbox.Addmaterial..text.changed=20110317061957
+custmatdlg.checkbox.Addmaterial..text.md5=jm9v8DvQD3wqj/HbMjixgQ\=\=
+custmatdlg.checkbox.Addmaterial.es.text.changed=20110317062041
+custmatdlg.checkbox.Addmaterial.es.text.md5=bZByVgCr41szI/Has0L1YQ\=\=
+custmatdlg.checkbox.Addmaterial.fr.text.changed=20110317061957
+custmatdlg.checkbox.Addmaterial.fr.text.md5=7o8ohaJMa5/wHVUKTCEgBw\=\=
+custmatdlg.lbl.Materialdensity..text.changed=20110317061957
+custmatdlg.lbl.Materialdensity..text.md5=bB4KMPfL6JN1dsgN1kdYEA\=\=
+custmatdlg.lbl.Materialdensity.es.text.changed=20110317062041
+custmatdlg.lbl.Materialdensity.es.text.md5=JkqbumlayJz2hwy6kPD2lA\=\=
+custmatdlg.lbl.Materialdensity.fr.text.changed=20110317061957
+custmatdlg.lbl.Materialdensity.fr.text.md5=m4Sj47s5OF70q9X/Yy8hdQ\=\=
+custmatdlg.lbl.Materialname..text.changed=20110317061957
+custmatdlg.lbl.Materialname..text.md5=jCWajBftxvNhCK5i4sEuAw\=\=
+custmatdlg.lbl.Materialname.es.text.changed=20110317062041
+custmatdlg.lbl.Materialname.es.text.md5=Fpw33oU1TwPKLzvFSAozcQ\=\=
+custmatdlg.lbl.Materialname.fr.text.changed=20110317061957
+custmatdlg.lbl.Materialname.fr.text.md5=yH1elrFycCr2P/xhDFHHog\=\=
+custmatdlg.lbl.Materialtype..text.changed=20110317061957
+custmatdlg.lbl.Materialtype..text.md5=I5s+R9xf2CglymUZYMI0vw\=\=
+custmatdlg.lbl.Materialtype.es.text.changed=20110317062041
+custmatdlg.lbl.Materialtype.es.text.md5=UHdKpq5guPBzxTZE1tVjuA\=\=
+custmatdlg.lbl.Materialtype.fr.text.changed=20110317061957
+custmatdlg.lbl.Materialtype.fr.text.md5=teWTYrU560DNKIf6zH+l7g\=\=
+custmatdlg.title.Custommaterial..text.changed=20110317061957
+custmatdlg.title.Custommaterial..text.md5=9nYzoGilvoPwv4HvXE0r1w\=\=
+custmatdlg.title.Custommaterial.es.text.changed=20110317062041
+custmatdlg.title.Custommaterial.es.text.md5=U/3vJZsRVlaizQIsN1rL9g\=\=
+custmatdlg.title.Custommaterial.fr.text.changed=20110317061957
+custmatdlg.title.Custommaterial.fr.text.md5=ei/ahalbxbjIQt9CaiucXg\=\=
+debug.currentFile..text.changed=20110317061957
+debug.currentFile..text.md5=s3zGQ/ph8MRFfzeFsRTXpg\=\=
+debug.currentFile.es.text.changed=20110317062041
+debug.currentFile.es.text.md5=rwmRaYyyfq9650tCYosXoQ\=\=
+debug.currentFile.fr.text.changed=20110317061957
+debug.currentFile.fr.text.md5=BKGvMYfb8lPwoDJ8Os/DIQ\=\=
+debuglogdlg.Displayloglines..text.changed=20110317061957
+debuglogdlg.Displayloglines..text.md5=nwjXdCUc7lJTuPNgKAciLg\=\=
+debuglogdlg.Displayloglines.es.text.changed=20110317062041
+debuglogdlg.Displayloglines.es.text.md5=QRjLg8P0NLqFt6qTKPnN9w\=\=
+debuglogdlg.Displayloglines.fr.text.changed=20110317061957
+debuglogdlg.Displayloglines.fr.text.md5=XG1JTBaF8XUwl1zaXlZJDQ\=\=
+debuglogdlg.Follow..text.changed=20110317061957
+debuglogdlg.Follow..text.md5=OQOqsyOGO9LptoIYp6ZevQ\=\=
+debuglogdlg.Follow.es.text.changed=20110317062041
+debuglogdlg.Follow.es.text.md5=vSPrYLzCKHv9yxB4d8QxSQ\=\=
+debuglogdlg.Follow.fr.text.changed=20110317061957
+debuglogdlg.Follow.fr.text.md5=SqjjA3is+zQIXsEtbU0slw\=\=
+debuglogdlg.OpenRocketdebuglog..text.changed=20110317061957
+debuglogdlg.OpenRocketdebuglog..text.md5=fdx8WQMedep9mhWdZKxi9g\=\=
+debuglogdlg.OpenRocketdebuglog.es.text.changed=20110317062041
+debuglogdlg.OpenRocketdebuglog.es.text.md5=7gn/q/F9lK7h9riCJ9qKkQ\=\=
+debuglogdlg.OpenRocketdebuglog.fr.text.changed=20110317061957
+debuglogdlg.OpenRocketdebuglog.fr.text.md5=QUM4UANf2GDxaM7Q2FgMew\=\=
+debuglogdlg.but.clear..text.changed=20110317061957
+debuglogdlg.but.clear..text.md5=3DC8DHkU21kY2kJj/Ok60g\=\=
+debuglogdlg.but.clear.es.text.changed=20110317062041
+debuglogdlg.but.clear.es.text.md5=R259GbW+kRvZmj3mwxdx0Q\=\=
+debuglogdlg.but.clear.fr.text.changed=20110317061957
+debuglogdlg.but.clear.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\=
+debuglogdlg.col.Level..text.changed=20110317061957
+debuglogdlg.col.Level..text.md5=oNtJukcMHJriEow0cDORUw\=\=
+debuglogdlg.col.Level.es.text.changed=20110317062041
+debuglogdlg.col.Level.es.text.md5=SCgfiSEpFTuajrGqbHtN7w\=\=
+debuglogdlg.col.Level.fr.text.changed=20110317061957
+debuglogdlg.col.Level.fr.text.md5=sHZ1ljWRg1lPlatFWHN4gw\=\=
+debuglogdlg.col.Location..text.changed=20110317061957
+debuglogdlg.col.Location..text.md5=zlv1UTeUWcHGHSogQGHEVQ\=\=
+debuglogdlg.col.Location.es.text.changed=20110317062041
+debuglogdlg.col.Location.es.text.md5=GsYBWRpllBrW6RstjkVB8g\=\=
+debuglogdlg.col.Location.fr.text.changed=20110317061957
+debuglogdlg.col.Location.fr.text.md5=tqbm6jgTUb19fS9Wky7IBA\=\=
+debuglogdlg.col.Message..text.changed=20110317061957
+debuglogdlg.col.Message..text.md5=TCqP5+ryRyHMep8BdRFb1A\=\=
+debuglogdlg.col.Message.es.text.changed=20110317062041
+debuglogdlg.col.Message.es.text.md5=brw25+IKd+W0zNOjX2PB0g\=\=
+debuglogdlg.col.Message.fr.text.changed=20110317061957
+debuglogdlg.col.Message.fr.text.md5=TCqP5+ryRyHMep8BdRFb1A\=\=
+debuglogdlg.col.Time..text.changed=20110317061957
+debuglogdlg.col.Time..text.md5=p21O9fP2pnK7+rKGVWPlMA\=\=
+debuglogdlg.col.Time.es.text.changed=20110317062041
+debuglogdlg.col.Time.es.text.md5=F/LuOIyJVIjSe5wcFULXlg\=\=
+debuglogdlg.col.Time.fr.text.changed=20110317061957
+debuglogdlg.col.Time.fr.text.md5=S1kXwZceksDKFh4uBqHJVQ\=\=
+debuglogdlg.lbl.Level..text.changed=20110317061957
+debuglogdlg.lbl.Level..text.md5=B62BUYe1PcLOr1rW4KErsQ\=\=
+debuglogdlg.lbl.Level.es.text.changed=20110317062041
+debuglogdlg.lbl.Level.es.text.md5=4rgPLqRJFjmzGqEQ70NQ/A\=\=
+debuglogdlg.lbl.Level.fr.text.changed=20110317061957
+debuglogdlg.lbl.Level.fr.text.md5=/Jcwyq2/R9rL/BIdjP19UQ\=\=
+debuglogdlg.lbl.Loglinenbr..text.changed=20110317061957
+debuglogdlg.lbl.Loglinenbr..text.md5=ChKg3SUE5c7XsNVJtZ93hw\=\=
+debuglogdlg.lbl.Loglinenbr.es.text.changed=20110317062041
+debuglogdlg.lbl.Loglinenbr.es.text.md5=M3zrBP7NeUML443APhQtLA\=\=
+debuglogdlg.lbl.Loglinenbr.fr.text.changed=20110317061957
+debuglogdlg.lbl.Loglinenbr.fr.text.md5=AFitNV4px6u+/clTkkiUiQ\=\=
+debuglogdlg.lbl.Time..text.changed=20110317061957
+debuglogdlg.lbl.Time..text.md5=QhsSNl+G/1nIj/LCHPU6Kw\=\=
+debuglogdlg.lbl.Time.es.text.changed=20110317062041
+debuglogdlg.lbl.Time.es.text.md5=NZjhj7mYt3U/emKWnRudtg\=\=
+debuglogdlg.lbl.Time.fr.text.changed=20110317061957
+debuglogdlg.lbl.Time.fr.text.md5=vdCbiSLtbcUMvVS/mk6FGw\=\=
+dlg.but.cancel..text.changed=20110317061957
+dlg.but.cancel..text.md5=6keIcF5oc7Qkxl6RwoRrGQ\=\=
+dlg.but.cancel.es.text.changed=20110317062041
+dlg.but.cancel.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+dlg.but.cancel.fr.text.changed=20110317061957
+dlg.but.cancel.fr.text.md5=0Sw7Dc91YU2vsqxr2qd6Jg\=\=
+dlg.but.close..text.changed=20110317061957
+dlg.but.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\=
+dlg.but.close.es.text.changed=20110317062041
+dlg.but.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\=
+dlg.but.close.fr.text.changed=20110317061957
+dlg.but.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\=
+dlg.but.ok..text.changed=20110317061957
+dlg.but.ok..text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\=
+dlg.but.ok.es.text.changed=20110317062041
+dlg.but.ok.es.text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\=
+dlg.but.ok.fr.text.changed=20110317061957
+dlg.but.ok.fr.text.md5=Jl0FBib/oNgNKG4QLdh/cQ\=\=
+edtmotorconfdlg.but.Newconfiguration..text.changed=20110317061957
+edtmotorconfdlg.but.Newconfiguration..text.md5=NT0vOXavFgbT0cQ7Wr9zQA\=\=
+edtmotorconfdlg.but.Newconfiguration.es.text.changed=20110317062041
+edtmotorconfdlg.but.Newconfiguration.es.text.md5=s722wAnQsoeOJNFxy3NNRQ\=\=
+edtmotorconfdlg.but.Newconfiguration.fr.text.changed=20110317061957
+edtmotorconfdlg.but.Newconfiguration.fr.text.md5=4JCduPGDwlRFplYmQaXSMQ\=\=
+edtmotorconfdlg.but.Removeconfiguration..text.changed=20110317061957
+edtmotorconfdlg.but.Removeconfiguration..text.md5=UOddOjbulF7x+026Hv4imQ\=\=
+edtmotorconfdlg.but.Removeconfiguration.es.text.changed=20110317062041
+edtmotorconfdlg.but.Removeconfiguration.es.text.md5=YpX6IyFNBNqK5zyVBeJIzA\=\=
+edtmotorconfdlg.but.Removeconfiguration.fr.text.changed=20110317061957
+edtmotorconfdlg.but.Removeconfiguration.fr.text.md5=7ivqM27pmg3F2ozVNmzKuQ\=\=
+edtmotorconfdlg.but.Selectmotor..text.changed=20110317061957
+edtmotorconfdlg.but.Selectmotor..text.md5=Po8U1JYUSxjeO5nuLOFoyA\=\=
+edtmotorconfdlg.but.Selectmotor.es.text.changed=20110317062041
+edtmotorconfdlg.but.Selectmotor.es.text.md5=dHaSFZUHzaZQqRR4BrKmVQ\=\=
+edtmotorconfdlg.but.Selectmotor.fr.text.changed=20110317061957
+edtmotorconfdlg.but.Selectmotor.fr.text.md5=eg8M2LVUXgmWWlkHvR9t/A\=\=
+edtmotorconfdlg.but.removemotor..text.changed=20110317061957
+edtmotorconfdlg.but.removemotor..text.md5=4fhAF2YvYgl3IKDn1Qvejw\=\=
+edtmotorconfdlg.but.removemotor.es.text.changed=20110317062041
+edtmotorconfdlg.but.removemotor.es.text.md5=zQGZezis32VJLq+UmvSHqg\=\=
+edtmotorconfdlg.but.removemotor.fr.text.changed=20110317061957
+edtmotorconfdlg.but.removemotor.fr.text.md5=FXMdRrCctyMK6Wsu2Nl2Yw\=\=
+edtmotorconfdlg.lbl.Configname..text.changed=20110317061957
+edtmotorconfdlg.lbl.Configname..text.md5=nnXcIMtWxCCQvtv3ND6YgA\=\=
+edtmotorconfdlg.lbl.Configname.es.text.changed=20110317062041
+edtmotorconfdlg.lbl.Configname.es.text.md5=fs314jQ9MEKY47Cq6bMQfA\=\=
+edtmotorconfdlg.lbl.Configname.fr.text.changed=20110317061957
+edtmotorconfdlg.lbl.Configname.fr.text.md5=w+AbzUpfcL2AdVH7wPAymw\=\=
+edtmotorconfdlg.lbl.Leavenamedefault..text.changed=20110317061957
+edtmotorconfdlg.lbl.Leavenamedefault..text.md5=/cmprWzNVXVBuGPWft0+uw\=\=
+edtmotorconfdlg.lbl.Leavenamedefault.es.text.changed=20110317062041
+edtmotorconfdlg.lbl.Leavenamedefault.es.text.md5=5haGBI06HiA06NuOxvx4Tw\=\=
+edtmotorconfdlg.lbl.Leavenamedefault.fr.text.changed=20110317061957
+edtmotorconfdlg.lbl.Leavenamedefault.fr.text.md5=wB7D2z+GmBIzcSE5JhWFTQ\=\=
+edtmotorconfdlg.lbl.Motorconfig..text.changed=20110317061957
+edtmotorconfdlg.lbl.Motorconfig..text.md5=+lul1QCIM2sP55CQbp+n5A\=\=
+edtmotorconfdlg.lbl.Motorconfig.es.text.changed=20110317062041
+edtmotorconfdlg.lbl.Motorconfig.es.text.md5=uXHGWG1r/O6AwupdLuZoYA\=\=
+edtmotorconfdlg.lbl.Motorconfig.fr.text.changed=20110317061957
+edtmotorconfdlg.lbl.Motorconfig.fr.text.md5=U4DQR3RThawGyFb1JkZriw\=\=
+edtmotorconfdlg.lbl.Motormounts..text.changed=20110317061957
+edtmotorconfdlg.lbl.Motormounts..text.md5=x7eeyB0ie8edcW0w+GHMiA\=\=
+edtmotorconfdlg.lbl.Motormounts.es.text.changed=20110317062041
+edtmotorconfdlg.lbl.Motormounts.es.text.md5=Mw2hHhFNFIzwCg3j/fUOMg\=\=
+edtmotorconfdlg.lbl.Motormounts.fr.text.changed=20110317061957
+edtmotorconfdlg.lbl.Motormounts.fr.text.md5=tzz76XQa8s+2tQxpnfk3EA\=\=
+edtmotorconfdlg.selectcomp..text.changed=20110317061957
+edtmotorconfdlg.selectcomp..text.md5=ORycIzs/OG+hor13qL7TZQ\=\=
+edtmotorconfdlg.selectcomp.es.text.changed=20110317062041
+edtmotorconfdlg.selectcomp.es.text.md5=7Ls79aDABHZK5YVYK5yaGw\=\=
+edtmotorconfdlg.selectcomp.fr.text.changed=20110317061957
+edtmotorconfdlg.selectcomp.fr.text.md5=dSrfekH8XR25ZbuocL6I1A\=\=
+edtmotorconfdlg.title.Editmotorconf..text.changed=20110317061957
+edtmotorconfdlg.title.Editmotorconf..text.md5=mhB1lDgg16mVrmvLA71dPA\=\=
+edtmotorconfdlg.title.Editmotorconf.es.text.changed=20110317062041
+edtmotorconfdlg.title.Editmotorconf.es.text.md5=Avm/hi7X82zx7iqf1bsaOw\=\=
+edtmotorconfdlg.title.Editmotorconf.fr.text.changed=20110317061957
+edtmotorconfdlg.title.Editmotorconf.fr.text.md5=GC5HziZfG5xu9YMS63W56w\=\=
+exdesigndlg.but.open..text.changed=20110317061957
+exdesigndlg.but.open..text.md5=w79EfqvmMnIKOqGnzkASdA\=\=
+exdesigndlg.but.open.es.text.changed=20110317062041
+exdesigndlg.but.open.es.text.md5=pfnugysr6Cb9FUzDX7R/Pg\=\=
+exdesigndlg.but.open.fr.text.changed=20110317061957
+exdesigndlg.but.open.fr.text.md5=CNLScxY7oSWTdPtiSo5uvA\=\=
+exdesigndlg.lbl.Exampledesignsnotfound..text.changed=20110317061957
+exdesigndlg.lbl.Exampledesignsnotfound..text.md5=4S8w2uaG2SJHFz0+kyWoaw\=\=
+exdesigndlg.lbl.Exampledesignsnotfound.es.text.changed=20110317062041
+exdesigndlg.lbl.Exampledesignsnotfound.es.text.md5=4S8w2uaG2SJHFz0+kyWoaw\=\=
+exdesigndlg.lbl.Exampledesignsnotfound.fr.text.changed=20110317061957
+exdesigndlg.lbl.Exampledesignsnotfound.fr.text.md5=DF0RjuSWbMsEDzCaTKxBiQ\=\=
+exdesigndlg.lbl.Examplesnotfound..text.changed=20110317061957
+exdesigndlg.lbl.Examplesnotfound..text.md5=xkSdJxOKIUXRvj2hf9jCTQ\=\=
+exdesigndlg.lbl.Examplesnotfound.es.text.changed=20110317062041
+exdesigndlg.lbl.Examplesnotfound.es.text.md5=xkSdJxOKIUXRvj2hf9jCTQ\=\=
+exdesigndlg.lbl.Examplesnotfound.fr.text.changed=20110317061957
+exdesigndlg.lbl.Examplesnotfound.fr.text.md5=xU5b6JBZvC4HRUGkHhwGGw\=\=
+exdesigndlg.lbl.Openexampledesign..text.changed=20110317061957
+exdesigndlg.lbl.Openexampledesign..text.md5=Hp76ayWk/zLpmjMVl/GUCw\=\=
+exdesigndlg.lbl.Openexampledesign.es.text.changed=20110317062041
+exdesigndlg.lbl.Openexampledesign.es.text.md5=Hp76ayWk/zLpmjMVl/GUCw\=\=
+exdesigndlg.lbl.Openexampledesign.fr.text.changed=20110317061957
+exdesigndlg.lbl.Openexampledesign.fr.text.md5=qVJnpzdNqeQSHuNETuO72A\=\=
+exdesigndlg.lbl.Selectexample..text.changed=20110317061957
+exdesigndlg.lbl.Selectexample..text.md5=eAq28yyo9P7Hts8LjqH3sg\=\=
+exdesigndlg.lbl.Selectexample.es.text.changed=20110317062041
+exdesigndlg.lbl.Selectexample.es.text.md5=eAq28yyo9P7Hts8LjqH3sg\=\=
+exdesigndlg.lbl.Selectexample.fr.text.changed=20110317061957
+exdesigndlg.lbl.Selectexample.fr.text.md5=Vram06dqIymVTic62/b6+Q\=\=
+main.menu.analyze..text.changed=20110317061957
+main.menu.analyze..text.md5=IlLhWjDdGnjgpEuo5JzTgQ\=\=
+main.menu.analyze.componentAnalysis..text.changed=20110317061957
+main.menu.analyze.componentAnalysis..text.md5=sM5Mz8gIlX8rHWfsY6cqFA\=\=
+main.menu.analyze.componentAnalysis.es.text.changed=20110317062041
+main.menu.analyze.componentAnalysis.es.text.md5=U8QENoQKwOWp8ifYnSiVLg\=\=
+main.menu.analyze.componentAnalysis.fr.text.changed=20110317061957
+main.menu.analyze.componentAnalysis.fr.text.md5=52ZFvKgMYurYYovUS85nQA\=\=
+main.menu.analyze.es.text.changed=20110317062041
+main.menu.analyze.es.text.md5=Er9mGt1IUSLs6K+//rkCcA\=\=
+main.menu.analyze.fr.text.changed=20110317061957
+main.menu.analyze.fr.text.md5=MQRaJ1t2mOXEjPSEunYrJQ\=\=
+main.menu.debug..text.changed=20110317061957
+main.menu.debug..text.md5=pgOQVHDipbjBPpa1ee8Nug\=\=
+main.menu.debug.createtestrocket..text.changed=20110317061957
+main.menu.debug.createtestrocket..text.md5=V/HRWut3qImwK1nJTAwxjw\=\=
+main.menu.debug.createtestrocket.es.text.changed=20110317062041
+main.menu.debug.createtestrocket.es.text.md5=A7EvpwFdjqnWYs/Q2HZdGA\=\=
+main.menu.debug.createtestrocket.fr.text.changed=20110317061957
+main.menu.debug.createtestrocket.fr.text.md5=yMPDXf37eF8IlSLMe+Butw\=\=
+main.menu.debug.es.text.changed=20110317062041
+main.menu.debug.es.text.md5=MGzIPIhiHGzUt0wkGSGCHw\=\=
+main.menu.debug.fr.text.changed=20110317061957
+main.menu.debug.fr.text.md5=pgOQVHDipbjBPpa1ee8Nug\=\=
+main.menu.debug.whatisthismenu..text.changed=20110317061957
+main.menu.debug.whatisthismenu..text.md5=j3NxZ35t5hFVXnl2o+jf0Q\=\=
+main.menu.debug.whatisthismenu.es.text.changed=20110317062041
+main.menu.debug.whatisthismenu.es.text.md5=7OL8ternJmXq0bPl6otsfw\=\=
+main.menu.debug.whatisthismenu.fr.text.changed=20110317061957
+main.menu.debug.whatisthismenu.fr.text.md5=k0eaQR4dWlgTK6himlr9tQ\=\=
+main.menu.edit..text.changed=20110317061957
+main.menu.edit..text.md5=fc4SIASWnVauLgJFy3VNNQ\=\=
+main.menu.edit.copy..text.changed=20110317061957
+main.menu.edit.copy..text.md5=X7Y1efyYFpj5fVW/7LIT6g\=\=
+main.menu.edit.copy.es.text.changed=20110317062041
+main.menu.edit.copy.es.text.md5=CBa9ot/1XfUMF6SLuD3Ddw\=\=
+main.menu.edit.copy.fr.text.changed=20110317061957
+main.menu.edit.copy.fr.text.md5=uE4+hfTPBEmO3DKM+KMhDw\=\=
+main.menu.edit.cut..text.changed=20110317061957
+main.menu.edit.cut..text.md5=6zNNygDjkODT6/UtIFgH1w\=\=
+main.menu.edit.cut.es.text.changed=20110317062041
+main.menu.edit.cut.es.text.md5=aWgiHXr6Fsd+VJNxrWi7Gw\=\=
+main.menu.edit.cut.fr.text.changed=20110317061957
+main.menu.edit.cut.fr.text.md5=XK3u18MJpYLFmlet2BJhOw\=\=
+main.menu.edit.delete..text.changed=20110317061957
+main.menu.edit.delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\=
+main.menu.edit.delete.es.text.changed=20110317062041
+main.menu.edit.delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+main.menu.edit.delete.fr.text.changed=20110317061957
+main.menu.edit.delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\=
+main.menu.edit.es.text.changed=20110317062041
+main.menu.edit.es.text.md5=PCmk1tmghygnIKxlECRLOQ\=\=
+main.menu.edit.fr.text.changed=20110317061957
+main.menu.edit.fr.text.md5=Dw9zpWnizxvPniyWMhd79w\=\=
+main.menu.edit.paste..text.changed=20110317061957
+main.menu.edit.paste..text.md5=NrtlWWltyRJJhq4SBRWYTw\=\=
+main.menu.edit.paste.es.text.changed=20110317062041
+main.menu.edit.paste.es.text.md5=EWZL2wlyml7l3JQTGpeT2g\=\=
+main.menu.edit.paste.fr.text.changed=20110317061957
+main.menu.edit.paste.fr.text.md5=IQgJsyd+wJkZOJWAdYLDZw\=\=
+main.menu.edit.preferences..text.changed=20110317061957
+main.menu.edit.preferences..text.md5=0INPzsYzd4XudJyPVGT29g\=\=
+main.menu.edit.preferences.es.text.changed=20110317062041
+main.menu.edit.preferences.es.text.md5=VFatWUQcoTIp2YW85iQsyg\=\=
+main.menu.edit.preferences.fr.text.changed=20110317061957
+main.menu.edit.preferences.fr.text.md5=ZXZwf+xOjVhMZVlF1Piwrw\=\=
+main.menu.edit.redo..text.changed=20110317061957
+main.menu.edit.redo..text.md5=Wv6roHTvVw3HIMqqhV1J9g\=\=
+main.menu.edit.redo.es.text.changed=20110317062041
+main.menu.edit.redo.es.text.md5=o7Br8O8RCo+sKPVGiG/mcg\=\=
+main.menu.edit.redo.fr.text.changed=20110317061957
+main.menu.edit.redo.fr.text.md5=PzAQmHc2db5L+7aOF8y46Q\=\=
+main.menu.edit.undo..text.changed=20110317061957
+main.menu.edit.undo..text.md5=HNwHayj3CvrF/O2t+Z+hGQ\=\=
+main.menu.edit.undo.es.text.changed=20110317062041
+main.menu.edit.undo.es.text.md5=NX6Cjg5hpJ2z7eO8CjC0bQ\=\=
+main.menu.edit.undo.fr.text.changed=20110317061957
+main.menu.edit.undo.fr.text.md5=zsjsMYayV3RIYVR4xNeG6w\=\=
+main.menu.file..text.changed=20110317061957
+main.menu.file..text.md5=CyeRgpD/UyO+oeO3ipzwTg\=\=
+main.menu.file.close..text.changed=20110317061957
+main.menu.file.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\=
+main.menu.file.close.es.text.changed=20110317062041
+main.menu.file.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\=
+main.menu.file.close.fr.text.changed=20110317061957
+main.menu.file.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\=
+main.menu.file.es.text.changed=20110317062041
+main.menu.file.es.text.md5=W4TeYsITrG6Gz//qpylayg\=\=
+main.menu.file.fr.text.changed=20110317061957
+main.menu.file.fr.text.md5=p1FmNN2hNqA45243vxXn7A\=\=
+main.menu.file.new..text.changed=20110317061957
+main.menu.file.new..text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\=
+main.menu.file.new.es.text.changed=20110317062041
+main.menu.file.new.es.text.md5=c/oEvjSu8FWhwXBu3W2rqQ\=\=
+main.menu.file.new.fr.text.changed=20110317061957
+main.menu.file.new.fr.text.md5=nqF7EPUGuIH+2QaqsKUPjQ\=\=
+main.menu.file.open..text.changed=20110317061957
+main.menu.file.open..text.md5=umb2gJk69DhyKOywsYOBPQ\=\=
+main.menu.file.open.es.text.changed=20110317062041
+main.menu.file.open.es.text.md5=oMIGLSA38RL3Tvnajd4jGg\=\=
+main.menu.file.open.fr.text.changed=20110317061957
+main.menu.file.open.fr.text.md5=J+LwTKMPJvnbRtStPaVnRg\=\=
+main.menu.file.openExample..text.changed=20110317061957
+main.menu.file.openExample..text.md5=fjEA4azTPJoA4SgWemJQMg\=\=
+main.menu.file.openExample.es.text.changed=20110317062041
+main.menu.file.openExample.es.text.md5=m2YVxxWGmftwWAz5xKZO2g\=\=
+main.menu.file.openExample.fr.text.changed=20110317061957
+main.menu.file.openExample.fr.text.md5=T9MtvjiDdTJztlKFibDCQA\=\=
+main.menu.file.print..text.changed=20110317061957
+main.menu.file.print..text.md5=OqmX3fXPsY4Y9u0FgCcVqA\=\=
+main.menu.file.print.es.text.changed=20110317062041
+main.menu.file.print.es.text.md5=JzLqW9n9tq+sqEnVEayKzg\=\=
+main.menu.file.print.fr.text.changed=20110317061957
+main.menu.file.print.fr.text.md5=i52ElRqbWX6VeCDGWB2bqQ\=\=
+main.menu.file.quit..text.changed=20110317061957
+main.menu.file.quit..text.md5=DYJ5CwYSk1mSvVZKF8431g\=\=
+main.menu.file.quit.es.text.changed=20110317062041
+main.menu.file.quit.es.text.md5=bEir2zY1ylBmraU/GZCW+g\=\=
+main.menu.file.quit.fr.text.changed=20110317061957
+main.menu.file.quit.fr.text.md5=rOxF+Fd0dFm4Q/nEbFEa/Q\=\=
+main.menu.file.save..text.changed=20110317061957
+main.menu.file.save..text.md5=ycyMziR+SbrnnxUXPOlzVA\=\=
+main.menu.file.save.es.text.changed=20110317062041
+main.menu.file.save.es.text.md5=0ycL240sHKrKQXjb4ZvgOg\=\=
+main.menu.file.save.fr.text.changed=20110317061957
+main.menu.file.save.fr.text.md5=drVmOK8iwXxLB7dK2iMv2w\=\=
+main.menu.file.saveAs..text.changed=20110317061957
+main.menu.file.saveAs..text.md5=nYwgnknjKFKMOcJzeY6YyQ\=\=
+main.menu.file.saveAs.es.text.changed=20110317062041
+main.menu.file.saveAs.es.text.md5=x/HGCPImb8nc4V8Q8Xd05w\=\=
+main.menu.file.saveAs.fr.text.changed=20110317061957
+main.menu.file.saveAs.fr.text.md5=lPLFKylgoHCVCRGI8N+DlQ\=\=
+main.menu.help..text.changed=20110317061957
+main.menu.help..text.md5=aib1SIMeaowmv7vZ9uxh4A\=\=
+main.menu.help.about..text.changed=20110317061957
+main.menu.help.about..text.md5=j39MHOek+TNmPRBUNWKwlg\=\=
+main.menu.help.about.es.text.changed=20110317062041
+main.menu.help.about.es.text.md5=Wm8i2B8ovZ1iHF8nxxbpsw\=\=
+main.menu.help.about.fr.text.changed=20110317061957
+main.menu.help.about.fr.text.md5=pirnmPKnU9VsH+pIj6kb0w\=\=
+main.menu.help.bugReport..text.changed=20110317061957
+main.menu.help.bugReport..text.md5=pmZEXVggqk9Vewxw6hO/NQ\=\=
+main.menu.help.bugReport.es.text.changed=20110317062041
+main.menu.help.bugReport.es.text.md5=78P7pSzj4+HUyrfGTSD+6Q\=\=
+main.menu.help.bugReport.fr.text.changed=20110317061957
+main.menu.help.bugReport.fr.text.md5=BY0T+RFoTg3aJNXeYhGuqw\=\=
+main.menu.help.debugLog..text.changed=20110317061957
+main.menu.help.debugLog..text.md5=zZLiEhhhKBfVKo1xwy+vOA\=\=
+main.menu.help.debugLog.es.text.changed=20110317062041
+main.menu.help.debugLog.es.text.md5=xry9ctG+1ecgd7+hFwvecg\=\=
+main.menu.help.debugLog.fr.text.changed=20110317061957
+main.menu.help.debugLog.fr.text.md5=zZLiEhhhKBfVKo1xwy+vOA\=\=
+main.menu.help.es.text.changed=20110317062041
+main.menu.help.es.text.md5=5JFqMJ2nWDBcVIheP1ZyqA\=\=
+main.menu.help.fr.text.changed=20110317061957
+main.menu.help.fr.text.md5=Y/UsRANMgt/8zIQ0ShJNtg\=\=
+main.menu.help.license..text.changed=20110317061957
+main.menu.help.license..text.md5=eU3zeRqMgAhBUWAHQnoqow\=\=
+main.menu.help.license.es.text.changed=20110317062041
+main.menu.help.license.es.text.md5=CbVfIn00NjBmfwDn3bTcPA\=\=
+main.menu.help.license.fr.text.changed=20110317061957
+main.menu.help.license.fr.text.md5=jSgqi9L+kDZ5ujAR1AjCag\=\=
+matedtpan.but.delete..text.changed=20110317061957
+matedtpan.but.delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\=
+matedtpan.but.delete.es.text.changed=20110317062041
+matedtpan.but.delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\=
+matedtpan.but.delete.fr.text.changed=20110317061957
+matedtpan.but.delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\=
+matedtpan.but.edit..text.changed=20110317061957
+matedtpan.but.edit..text.md5=fc4SIASWnVauLgJFy3VNNQ\=\=
+matedtpan.but.edit.es.text.changed=20110317062041
+matedtpan.but.edit.es.text.md5=70hetnrIkjik/t50WgrpTA\=\=
+matedtpan.but.edit.fr.text.changed=20110317061957
+matedtpan.but.edit.fr.text.md5=Dw9zpWnizxvPniyWMhd79w\=\=
+matedtpan.but.new..text.changed=20110317061957
+matedtpan.but.new..text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\=
+matedtpan.but.new.es.text.changed=20110317062041
+matedtpan.but.new.es.text.md5=c/oEvjSu8FWhwXBu3W2rqQ\=\=
+matedtpan.but.new.fr.text.changed=20110317061957
+matedtpan.but.new.fr.text.md5=nqF7EPUGuIH+2QaqsKUPjQ\=\=
+matedtpan.but.revertall..text.changed=20110317061957
+matedtpan.but.revertall..text.md5=HU8NssWd/oFQ8fxiUiYF0g\=\=
+matedtpan.but.revertall.es.text.changed=20110317062041
+matedtpan.but.revertall.es.text.md5=FEdRJafMwDXiMOf/ylr60g\=\=
+matedtpan.but.revertall.fr.text.changed=20110317061957
+matedtpan.but.revertall.fr.text.md5=ugBFzcSGwx43gTovZpDZYg\=\=
+matedtpan.but.ttip.delete..text.changed=20110317061957
+matedtpan.but.ttip.delete..text.md5=tkhxPsT4HzGS5gueQv+osw\=\=
+matedtpan.but.ttip.delete.es.text.changed=20110317062041
+matedtpan.but.ttip.delete.es.text.md5=6T+Uz6Lja8xQ1yyt+En4ew\=\=
+matedtpan.but.ttip.delete.fr.text.changed=20110317061957
+matedtpan.but.ttip.delete.fr.text.md5=DnNGnOs9B0MqA9ydTMCISw\=\=
+matedtpan.but.ttip.edit..text.changed=20110317061957
+matedtpan.but.ttip.edit..text.md5=nALvGm2X/wE1cKUEviYgYg\=\=
+matedtpan.but.ttip.edit.es.text.changed=20110317062041
+matedtpan.but.ttip.edit.es.text.md5=ubG1aRILaLDummx427VcTQ\=\=
+matedtpan.but.ttip.edit.fr.text.changed=20110317061957
+matedtpan.but.ttip.edit.fr.text.md5=W6DsTWFA1EmzV3OPKX3s/Q\=\=
+matedtpan.but.ttip.revertall..text.changed=20110317061957
+matedtpan.but.ttip.revertall..text.md5=nks2fwOjAQqv9yiJ8MDSJg\=\=
+matedtpan.but.ttip.revertall.es.text.changed=20110317062041
+matedtpan.but.ttip.revertall.es.text.md5=umBrL+4p4WO/D0Xc3d/Wow\=\=
+matedtpan.but.ttip.revertall.fr.text.changed=20110317061957
+matedtpan.but.ttip.revertall.fr.text.md5=h5aEOKoetF/XeV2bHB2F2A\=\=
+matedtpan.col.Density..text.changed=20110317061957
+matedtpan.col.Density..text.md5=fm0R3Z2+71PByzy4lrzkdg\=\=
+matedtpan.col.Density.es.text.changed=20110317062041
+matedtpan.col.Density.es.text.md5=ojucZozYfxYiQJA6QlAj7A\=\=
+matedtpan.col.Density.fr.text.changed=20110317061957
+matedtpan.col.Density.fr.text.md5=nyryu9Uy+DLBfx4b9AkkkQ\=\=
+matedtpan.col.Material..text.changed=20110317061957
+matedtpan.col.Material..text.md5=2SqDM908y4lcxl90VbcSBg\=\=
+matedtpan.col.Material.es.text.changed=20110317062041
+matedtpan.col.Material.es.text.md5=2SqDM908y4lcxl90VbcSBg\=\=
+matedtpan.col.Material.fr.text.changed=20110317061957
+matedtpan.col.Material.fr.text.md5=VIeuRMJRAAlmhGYNzxsxBw\=\=
+matedtpan.col.Type..text.changed=20110317061957
+matedtpan.col.Type..text.md5=ofond5JCtJAveuO91cbVCA\=\=
+matedtpan.col.Type.es.text.changed=20110317062041
+matedtpan.col.Type.es.text.md5=T0J8FFfgK86A6DJSER/SfQ\=\=
+matedtpan.col.Type.fr.text.changed=20110317061957
+matedtpan.col.Type.fr.text.md5=ofond5JCtJAveuO91cbVCA\=\=
+matedtpan.col.but.ttip.New..text.changed=20110317061957
+matedtpan.col.but.ttip.New..text.md5=+gRd6Um9Sdqg6pVAt9rVjQ\=\=
+matedtpan.col.but.ttip.New.es.text.changed=20110317062041
+matedtpan.col.but.ttip.New.es.text.md5=D8C1fVasXjz9MTQKLVSmlA\=\=
+matedtpan.col.but.ttip.New.fr.text.changed=20110317061957
+matedtpan.col.but.ttip.New.fr.text.md5=aV1zaxW0tG2EsmROrmro5Q\=\=
+matedtpan.lbl.edtmaterials..text.changed=20110317061957
+matedtpan.lbl.edtmaterials..text.md5=I+XtwYcSIKYhmkXzIYy9Yw\=\=
+matedtpan.lbl.edtmaterials.es.text.changed=20110317062041
+matedtpan.lbl.edtmaterials.es.text.md5=e/2eeGgh6u55O9MYxxU16A\=\=
+matedtpan.lbl.edtmaterials.fr.text.changed=20110317061957
+matedtpan.lbl.edtmaterials.fr.text.md5=nvfMq0ZURsWRCT5fTs8TcQ\=\=
+matedtpan.title.Addcustmaterial..text.changed=20110317061957
+matedtpan.title.Addcustmaterial..text.md5=0Rn89QVYLjfSLtSPdQz+SA\=\=
+matedtpan.title.Addcustmaterial.es.text.changed=20110317062041
+matedtpan.title.Addcustmaterial.es.text.md5=unBCRtJhlQtl+rDe65O6xA\=\=
+matedtpan.title.Addcustmaterial.fr.text.changed=20110317061957
+matedtpan.title.Addcustmaterial.fr.text.md5=RiGtRnRG71R29IdsvPWWbg\=\=
+matedtpan.title.Deletealluser-defined..text.changed=20110317061957
+matedtpan.title.Deletealluser-defined..text.md5=oV8rGGcj/ot82uG/dEY1kA\=\=
+matedtpan.title.Deletealluser-defined.es.text.changed=20110317062041
+matedtpan.title.Deletealluser-defined.es.text.md5=A/PvhtsypPVs88vpQUWqAQ\=\=
+matedtpan.title.Deletealluser-defined.fr.text.changed=20110317061957
+matedtpan.title.Deletealluser-defined.fr.text.md5=3UBZ452Tsb47HwV+K94HFg\=\=
+matedtpan.title.Editmaterial..text.changed=20110317061957
+matedtpan.title.Editmaterial..text.md5=dbXNyTbQ5ZhCdMMOJjx9IQ\=\=
+matedtpan.title.Editmaterial.es.text.changed=20110317062041
+matedtpan.title.Editmaterial.es.text.md5=GCDGBuSjS+IeV9A6d2H1GQ\=\=
+matedtpan.title.Editmaterial.fr.text.changed=20110317061957
+matedtpan.title.Editmaterial.fr.text.md5=w0uD/iEc/14EEq0+wDZWEA\=\=
+matedtpan.title.Revertall..text.changed=20110317061957
+matedtpan.title.Revertall..text.md5=eYW4hA4dE2tdIUk428XMdQ\=\=
+matedtpan.title.Revertall.es.text.changed=20110317062041
+matedtpan.title.Revertall.es.text.md5=VkI66UKGjZQm2heWaZ9HOw\=\=
+matedtpan.title.Revertall.fr.text.changed=20110317061957
+matedtpan.title.Revertall.fr.text.md5=Q5D5uz4+vvCBeQRzZ5O6Tg\=\=
+matedtpan.title2.Editmaterial..text.changed=20110317061957
+matedtpan.title2.Editmaterial..text.md5=3q4PY+AnUewvfX7whtgIsg\=\=
+matedtpan.title2.Editmaterial.es.text.changed=20110317062041
+matedtpan.title2.Editmaterial.es.text.md5=xafx1L4T9wEtrE5iiVX3lA\=\=
+matedtpan.title2.Editmaterial.fr.text.changed=20110317061957
+matedtpan.title2.Editmaterial.fr.text.md5=mRDncJaGnDKpeWrgabFnAA\=\=
+pref.dlg.Add..text.changed=20110317061957
+pref.dlg.Add..text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\=
+pref.dlg.Add.es.text.changed=20110317062041
+pref.dlg.Add.es.text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\=
+pref.dlg.Add.fr.text.changed=20110317061957
+pref.dlg.Add.fr.text.md5=GNkl5NWxtWkojRGUILvLQg\=\=
+pref.dlg.Allthrustcurvefiles..text.changed=20110317061957
+pref.dlg.Allthrustcurvefiles..text.md5=kDA+4Lq1heam753M+uvpgA\=\=
+pref.dlg.Allthrustcurvefiles.es.text.changed=20110317062041
+pref.dlg.Allthrustcurvefiles.es.text.md5=uRQRQkK22l0TmByHCZOwcg\=\=
+pref.dlg.Allthrustcurvefiles.fr.text.changed=20110317061957
+pref.dlg.Allthrustcurvefiles.fr.text.md5=DOzqnTzKQwx9CCeOxszzkg\=\=
+pref.dlg.DescriptionArea.Adddirectories..text.changed=20110317061957
+pref.dlg.DescriptionArea.Adddirectories..text.md5=k19hlTTUxMpy7mwd0BCSWQ\=\=
+pref.dlg.DescriptionArea.Adddirectories.es.text.changed=20110317062041
+pref.dlg.DescriptionArea.Adddirectories.es.text.md5=k19hlTTUxMpy7mwd0BCSWQ\=\=
+pref.dlg.DescriptionArea.Adddirectories.fr.text.changed=20110317061957
+pref.dlg.DescriptionArea.Adddirectories.fr.text.md5=EHqhqc7XUHb1r0Mz1qg5VA\=\=
+pref.dlg.PrefBooleanSelector1..text.changed=20110317061957
+pref.dlg.PrefBooleanSelector1..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\=
+pref.dlg.PrefBooleanSelector1.es.text.changed=20110317062041
+pref.dlg.PrefBooleanSelector1.es.text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\=
+pref.dlg.PrefBooleanSelector1.fr.text.changed=20110317061957
+pref.dlg.PrefBooleanSelector1.fr.text.md5=zP2YUbUKqmcVE7UNFY7VeQ\=\=
+pref.dlg.PrefBooleanSelector2..text.changed=20110317061957
+pref.dlg.PrefBooleanSelector2..text.md5=cNm+mxOYk6psabXnfmFDEQ\=\=
+pref.dlg.PrefBooleanSelector2.es.text.changed=20110317062041
+pref.dlg.PrefBooleanSelector2.es.text.md5=cNm+mxOYk6psabXnfmFDEQ\=\=
+pref.dlg.PrefBooleanSelector2.fr.text.changed=20110317061957
+pref.dlg.PrefBooleanSelector2.fr.text.md5=MDp0CY41aQn/z2i5vUyhsA\=\=
+pref.dlg.PrefChoiseSelector1..text.changed=20110317061957
+pref.dlg.PrefChoiseSelector1..text.md5=Lda1TOpgqPdaaFtSL4knRw\=\=
+pref.dlg.PrefChoiseSelector1.es.text.changed=20110317062041
+pref.dlg.PrefChoiseSelector1.es.text.md5=Lda1TOpgqPdaaFtSL4knRw\=\=
+pref.dlg.PrefChoiseSelector1.fr.text.changed=20110317061957
+pref.dlg.PrefChoiseSelector1.fr.text.md5=fEhKYzLh4tfLBsKNZFyoxA\=\=
+pref.dlg.PrefChoiseSelector2..text.changed=20110317061957
+pref.dlg.PrefChoiseSelector2..text.md5=ZEb3BLzSY1T5B6AUsUsWZg\=\=
+pref.dlg.PrefChoiseSelector2.es.text.changed=20110317062041
+pref.dlg.PrefChoiseSelector2.es.text.md5=ZEb3BLzSY1T5B6AUsUsWZg\=\=
+pref.dlg.PrefChoiseSelector2.fr.text.changed=20110317061957
+pref.dlg.PrefChoiseSelector2.fr.text.md5=YTuZiPwhFLjhFC+El5aF9A\=\=
+pref.dlg.PrefChoiseSelector3..text.changed=20110317061957
+pref.dlg.PrefChoiseSelector3..text.md5=6s6zxBFNFXU0xiqZtz5gpQ\=\=
+pref.dlg.PrefChoiseSelector3.es.text.changed=20110317062041
+pref.dlg.PrefChoiseSelector3.es.text.md5=6s6zxBFNFXU0xiqZtz5gpQ\=\=
+pref.dlg.PrefChoiseSelector3.fr.text.changed=20110317061957
+pref.dlg.PrefChoiseSelector3.fr.text.md5=jwbQgugB01TZqmUymYcoVQ\=\=
+pref.dlg.RASPfiles..text.changed=20110317061957
+pref.dlg.RASPfiles..text.md5=ZEfHl0koTPOBVic6BTNN+g\=\=
+pref.dlg.RASPfiles.es.text.changed=20110317062041
+pref.dlg.RASPfiles.es.text.md5=mirpe15hQIBZKfLPLpBE7Q\=\=
+pref.dlg.RASPfiles.fr.text.changed=20110317061957
+pref.dlg.RASPfiles.fr.text.md5=/8kQtFxETBNUEa4U+WwgeQ\=\=
+pref.dlg.RockSimfiles..text.changed=20110317061957
+pref.dlg.RockSimfiles..text.md5=wTxmfMyMx6jQY31Z9JXg7Q\=\=
+pref.dlg.RockSimfiles.es.text.changed=20110317062041
+pref.dlg.RockSimfiles.es.text.md5=gm3nr+/BGOK0xI+9vwNArw\=\=
+pref.dlg.RockSimfiles.fr.text.changed=20110317061957
+pref.dlg.RockSimfiles.fr.text.md5=0bA0t5m+QsWZ+/vvv0gGgw\=\=
+pref.dlg.ZIParchives..text.changed=20110317061957
+pref.dlg.ZIParchives..text.md5=v1ZbAJNpUkfHd9rTteTz3Q\=\=
+pref.dlg.ZIParchives.es.text.changed=20110317062041
+pref.dlg.ZIParchives.es.text.md5=9i3Vsix+XU7gatV6LTeDrg\=\=
+pref.dlg.ZIParchives.fr.text.changed=20110317061957
+pref.dlg.ZIParchives.fr.text.md5=cRHCl+o5LMqOEZEQiHM5fw\=\=
+pref.dlg.but.add..text.changed=20110317061957
+pref.dlg.but.add..text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\=
+pref.dlg.but.add.es.text.changed=20110317062041
+pref.dlg.but.add.es.text.md5=TnoEp2bP5dkyM11JLQBocg\=\=
+pref.dlg.but.add.fr.text.changed=20110317061957
+pref.dlg.but.add.fr.text.md5=GNkl5NWxtWkojRGUILvLQg\=\=
+pref.dlg.but.checknow..text.changed=20110317061957
+pref.dlg.but.checknow..text.md5=LIcuZ3+LWDHyCmbGXn+JZg\=\=
+pref.dlg.but.checknow.es.text.changed=20110317062041
+pref.dlg.but.checknow.es.text.md5=N54V/2bhXDUWGfjIvJ4heg\=\=
+pref.dlg.but.checknow.fr.text.changed=20110317061957
+pref.dlg.but.checknow.fr.text.md5=5jbEOI2azoM4IgAYGWZqOQ\=\=
+pref.dlg.but.defaultimperial..text.changed=20110317061957
+pref.dlg.but.defaultimperial..text.md5=qnA5YZLijZWVj5Us9YMGVQ\=\=
+pref.dlg.but.defaultimperial.es.text.changed=20110317062041
+pref.dlg.but.defaultimperial.es.text.md5=wwl1fXFhx9LVPDAuiX+/vA\=\=
+pref.dlg.but.defaultimperial.fr.text.changed=20110317061957
+pref.dlg.but.defaultimperial.fr.text.md5=Rg4D/oL/1AyJniE8ZchJuQ\=\=
+pref.dlg.but.defaultmetric..text.changed=20110317061957
+pref.dlg.but.defaultmetric..text.md5=Gss/qDfo50nnA9gmW/mrqA\=\=
+pref.dlg.but.defaultmetric.es.text.changed=20110317062041
+pref.dlg.but.defaultmetric.es.text.md5=gvip7VNe090lJHT4OyfGlQ\=\=
+pref.dlg.but.defaultmetric.fr.text.changed=20110317061957
+pref.dlg.but.defaultmetric.fr.text.md5=uM8B2hTJVzI4SCYdzUTVnw\=\=
+pref.dlg.but.reset..text.changed=20110317061957
+pref.dlg.but.reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\=
+pref.dlg.but.reset.es.text.changed=20110317062041
+pref.dlg.but.reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\=
+pref.dlg.but.reset.fr.text.changed=20110317061957
+pref.dlg.but.reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\=
+pref.dlg.checkbox.Checkupdates..text.changed=20110317061957
+pref.dlg.checkbox.Checkupdates..text.md5=FlhzmeyWj96CIXxAl5uhog\=\=
+pref.dlg.checkbox.Checkupdates.es.text.changed=20110317062041
+pref.dlg.checkbox.Checkupdates.es.text.md5=a/nyJ4nbGo7VJvCTjBfRgw\=\=
+pref.dlg.checkbox.Checkupdates.fr.text.changed=20110317061957
+pref.dlg.checkbox.Checkupdates.fr.text.md5=m5W4K7f2oIqB6qN2zZO9ag\=\=
+pref.dlg.lbl.Acceleration..text.changed=20110317061957
+pref.dlg.lbl.Acceleration..text.md5=maob8cH+pIwxporVlXNR8Q\=\=
+pref.dlg.lbl.Acceleration.es.text.changed=20110317062041
+pref.dlg.lbl.Acceleration.es.text.md5=j9twcTTY5KRhW+ZliphriA\=\=
+pref.dlg.lbl.Acceleration.fr.text.changed=20110317061957
+pref.dlg.lbl.Acceleration.fr.text.md5=RhASQZJxdnwUX9BIb1VHqg\=\=
+pref.dlg.lbl.Angle..text.changed=20110317061957
+pref.dlg.lbl.Angle..text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\=
+pref.dlg.lbl.Angle.es.text.changed=20110317062041
+pref.dlg.lbl.Angle.es.text.md5=T9bgmaOVQwRc6vOgnoDw9Q\=\=
+pref.dlg.lbl.Angle.fr.text.changed=20110317061957
+pref.dlg.lbl.Angle.fr.text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\=
+pref.dlg.lbl.Area..text.changed=20110317061957
+pref.dlg.lbl.Area..text.md5=iITrRvThI7LbENNowNhTtg\=\=
+pref.dlg.lbl.Area.es.text.changed=20110317062041
+pref.dlg.lbl.Area.es.text.md5=5mgZZEe68wpf80lZ9g7sCQ\=\=
+pref.dlg.lbl.Area.fr.text.changed=20110317061957
+pref.dlg.lbl.Area.fr.text.md5=FJ2BadP5JPeTnMV3aGDM4g\=\=
+pref.dlg.lbl.Bulkdensity..text.changed=20110317061957
+pref.dlg.lbl.Bulkdensity..text.md5=q75sd9osryPE4cclCnGMcQ\=\=
+pref.dlg.lbl.Bulkdensity.es.text.changed=20110317062041
+pref.dlg.lbl.Bulkdensity.es.text.md5=iNcAaIuHsPowC6Hp6vugMw\=\=
+pref.dlg.lbl.Bulkdensity.fr.text.changed=20110317061957
+pref.dlg.lbl.Bulkdensity.fr.text.md5=i65bH7DRq37VhRoKSypC1Q\=\=
+pref.dlg.lbl.Checkingupdates..text.changed=20110317061957
+pref.dlg.lbl.Checkingupdates..text.md5=oHgTzAVXHyPOjdcDlYPX2g\=\=
+pref.dlg.lbl.Checkingupdates.es.text.changed=20110317062041
+pref.dlg.lbl.Checkingupdates.es.text.md5=7qXxeYyJXzmS4OLnFwu2AA\=\=
+pref.dlg.lbl.Checkingupdates.fr.text.changed=20110317061957
+pref.dlg.lbl.Checkingupdates.fr.text.md5=Oho7XFliOzE3mY/bOLNNQg\=\=
+pref.dlg.lbl.Confirmdeletion..text.changed=20110317061957
+pref.dlg.lbl.Confirmdeletion..text.md5=kpPNJK6xpM/wNHP8cgU8tQ\=\=
+pref.dlg.lbl.Confirmdeletion.es.text.changed=20110317062041
+pref.dlg.lbl.Confirmdeletion.es.text.md5=2n3VJFVXpz4kSOhHssMNHA\=\=
+pref.dlg.lbl.Confirmdeletion.fr.text.changed=20110317061957
+pref.dlg.lbl.Confirmdeletion.fr.text.md5=CiM5F46dtSBQ8tE6bdy7gg\=\=
+pref.dlg.lbl.Distance..text.changed=20110317061957
+pref.dlg.lbl.Distance..text.md5=1+zCC+AmNcj9m6cX3wKmaw\=\=
+pref.dlg.lbl.Distance.es.text.changed=20110317062041
+pref.dlg.lbl.Distance.es.text.md5=izTEhgnEn7+H/1n9c1OZ5A\=\=
+pref.dlg.lbl.Distance.fr.text.changed=20110317061957
+pref.dlg.lbl.Distance.fr.text.md5=1+zCC+AmNcj9m6cX3wKmaw\=\=
+pref.dlg.lbl.Force..text.changed=20110317061957
+pref.dlg.lbl.Force..text.md5=pJZtwWmhGoIcwMYdMl91Qw\=\=
+pref.dlg.lbl.Force.es.text.changed=20110317062041
+pref.dlg.lbl.Force.es.text.md5=L5cqYgrTZ8QK7buf4R6nPw\=\=
+pref.dlg.lbl.Force.fr.text.changed=20110317061957
+pref.dlg.lbl.Force.fr.text.md5=pJZtwWmhGoIcwMYdMl91Qw\=\=
+pref.dlg.lbl.Linedensity..text.changed=20110317061957
+pref.dlg.lbl.Linedensity..text.md5=5Ky8OQgDW7FLAUHLbRfoQw\=\=
+pref.dlg.lbl.Linedensity.es.text.changed=20110317062041
+pref.dlg.lbl.Linedensity.es.text.md5=29SgSwSG0nh0bw9NrU87iA\=\=
+pref.dlg.lbl.Linedensity.fr.text.changed=20110317061957
+pref.dlg.lbl.Linedensity.fr.text.md5=znJmDK1cw369IZGSR9N6jA\=\=
+pref.dlg.lbl.Mass..text.changed=20110317061957
+pref.dlg.lbl.Mass..text.md5=uhJztJZI9YFN9J6bF8Trng\=\=
+pref.dlg.lbl.Mass.es.text.changed=20110317062041
+pref.dlg.lbl.Mass.es.text.md5=GV/FcctiBOU+rrzQkQf+bQ\=\=
+pref.dlg.lbl.Mass.fr.text.changed=20110317061957
+pref.dlg.lbl.Mass.fr.text.md5=pM5yVmT3KWHb26EEkoINoQ\=\=
+pref.dlg.lbl.Momentofinertia..text.changed=20110317061957
+pref.dlg.lbl.Momentofinertia..text.md5=TRDRmWwPIjSN4yT1/MhnjQ\=\=
+pref.dlg.lbl.Momentofinertia.es.text.changed=20110317062041
+pref.dlg.lbl.Momentofinertia.es.text.md5=Pr8weexE+wOz6eUB3g1uMg\=\=
+pref.dlg.lbl.Momentofinertia.fr.text.changed=20110317061957
+pref.dlg.lbl.Momentofinertia.fr.text.md5=RQbiwlsaQCpNfJNhhu+w0Q\=\=
+pref.dlg.lbl.Motordimensions..text.changed=20110317061957
+pref.dlg.lbl.Motordimensions..text.md5=6HfzRC5myTbCMrvAhXqzmg\=\=
+pref.dlg.lbl.Motordimensions.es.text.changed=20110317062041
+pref.dlg.lbl.Motordimensions.es.text.md5=ySJFlI0dNOnqYwsxHTO3zg\=\=
+pref.dlg.lbl.Motordimensions.fr.text.changed=20110317061957
+pref.dlg.lbl.Motordimensions.fr.text.md5=T4VamJ3wookrYRyM4KKm1Q\=\=
+pref.dlg.lbl.Positiontoinsert..text.changed=20110317061957
+pref.dlg.lbl.Positiontoinsert..text.md5=ompMetl+mLJdY0hjuOCQPQ\=\=
+pref.dlg.lbl.Positiontoinsert.es.text.changed=20110317062041
+pref.dlg.lbl.Positiontoinsert.es.text.md5=aEt2AQQLZJ9/DwZHw5URfw\=\=
+pref.dlg.lbl.Positiontoinsert.fr.text.changed=20110317061957
+pref.dlg.lbl.Positiontoinsert.fr.text.md5=3xP+JbLaymIll/nSEjNzfg\=\=
+pref.dlg.lbl.Pressure..text.changed=20110317061957
+pref.dlg.lbl.Pressure..text.md5=orG4EM2I0NrXoN8Pcd6JXw\=\=
+pref.dlg.lbl.Pressure.es.text.changed=20110317062041
+pref.dlg.lbl.Pressure.es.text.md5=UGv+4uJMw0wmdX6NgJVgXw\=\=
+pref.dlg.lbl.Pressure.fr.text.changed=20110317061957
+pref.dlg.lbl.Pressure.fr.text.md5=n/tutxCm6Qrt4Lo6x1rZDw\=\=
+pref.dlg.lbl.Rocketdimensions..text.changed=20110317061957
+pref.dlg.lbl.Rocketdimensions..text.md5=ZIPDo1xLi3h2vLB8YuuKSw\=\=
+pref.dlg.lbl.Rocketdimensions.es.text.changed=20110317062041
+pref.dlg.lbl.Rocketdimensions.es.text.md5=X/2Bzxik6aPa2hX/MVwMkA\=\=
+pref.dlg.lbl.Rocketdimensions.fr.text.changed=20110317061957
+pref.dlg.lbl.Rocketdimensions.fr.text.md5=9Mwg13gAEpu/gSRwOlaeIQ\=\=
+pref.dlg.lbl.Rollrate..text.changed=20110317061957
+pref.dlg.lbl.Rollrate..text.md5=jqY3far1Q8N81yltDukE7A\=\=
+pref.dlg.lbl.Rollrate.es.text.changed=20110317062041
+pref.dlg.lbl.Rollrate.es.text.md5=1rAIRwGCSpwLw/RjfNcTwQ\=\=
+pref.dlg.lbl.Rollrate.fr.text.changed=20110317061957
+pref.dlg.lbl.Rollrate.fr.text.md5=4yBvCJRuEcR3wYN8vJPczA\=\=
+pref.dlg.lbl.Selectprefunits..text.changed=20110317061957
+pref.dlg.lbl.Selectprefunits..text.md5=WSnIkkSHNerPwnx8mXJoEg\=\=
+pref.dlg.lbl.Selectprefunits.es.text.changed=20110317062041
+pref.dlg.lbl.Selectprefunits.es.text.md5=I5IeJnjeUDRpM78AcO/iaA\=\=
+pref.dlg.lbl.Selectprefunits.fr.text.changed=20110317061957
+pref.dlg.lbl.Selectprefunits.fr.text.md5=JsqAIwjSPx/SB+77ty8Uwg\=\=
+pref.dlg.lbl.Stability..text.changed=20110317061957
+pref.dlg.lbl.Stability..text.md5=LBO6FRY6BiV2OFFMimk7Cw\=\=
+pref.dlg.lbl.Stability.es.text.changed=20110317062041
+pref.dlg.lbl.Stability.es.text.md5=Wwb6naPjAQjvC0vsklBnEQ\=\=
+pref.dlg.lbl.Stability.fr.text.changed=20110317061957
+pref.dlg.lbl.Stability.fr.text.md5=mKdlKkmTwloZqh6SDoqzDA\=\=
+pref.dlg.lbl.Surfacedensity..text.changed=20110317061957
+pref.dlg.lbl.Surfacedensity..text.md5=YtmvdYBoVLXnS0Ptsxm3dA\=\=
+pref.dlg.lbl.Surfacedensity.es.text.changed=20110317062041
+pref.dlg.lbl.Surfacedensity.es.text.md5=oRKR4J1TMv2RPoq7YhRNEA\=\=
+pref.dlg.lbl.Surfacedensity.fr.text.changed=20110317061957
+pref.dlg.lbl.Surfacedensity.fr.text.md5=HWuYDLFor+5z2ZuVfUuseQ\=\=
+pref.dlg.lbl.Surfaceroughness..text.changed=20110317061957
+pref.dlg.lbl.Surfaceroughness..text.md5=F6AGSck/HFBR82U69wiQUw\=\=
+pref.dlg.lbl.Surfaceroughness.es.text.changed=20110317062041
+pref.dlg.lbl.Surfaceroughness.es.text.md5=b2LW9SwcLCn1hTZxnGAZPQ\=\=
+pref.dlg.lbl.Surfaceroughness.fr.text.changed=20110317061957
+pref.dlg.lbl.Surfaceroughness.fr.text.md5=rUJs21FNtERdOhh9A4prtg\=\=
+pref.dlg.lbl.Temperature..text.changed=20110317061957
+pref.dlg.lbl.Temperature..text.md5=DPgM4apm5pttJwjQr4JyRw\=\=
+pref.dlg.lbl.Temperature.es.text.changed=20110317062041
+pref.dlg.lbl.Temperature.es.text.md5=uXp9rtZp/mQyOVPxjR1KAA\=\=
+pref.dlg.lbl.Temperature.fr.text.changed=20110317061957
+pref.dlg.lbl.Temperature.fr.text.md5=L5murG6QLq/coqbNQSD92A\=\=
+pref.dlg.lbl.Totalimpulse..text.changed=20110317061957
+pref.dlg.lbl.Totalimpulse..text.md5=ZDshEiFE3a4LgL7awkgWrQ\=\=
+pref.dlg.lbl.Totalimpulse.es.text.changed=20110317062041
+pref.dlg.lbl.Totalimpulse.es.text.md5=vRQ45Bz20zi7AYE3D+CXGQ\=\=
+pref.dlg.lbl.Totalimpulse.fr.text.changed=20110317061957
+pref.dlg.lbl.Totalimpulse.fr.text.md5=NpXvobhBhx9ZATcB6zR4hg\=\=
+pref.dlg.lbl.User-definedthrust..text.changed=20110317061957
+pref.dlg.lbl.User-definedthrust..text.md5=ksB8LsR5JjGsYCIzJYtBtQ\=\=
+pref.dlg.lbl.User-definedthrust.es.text.changed=20110317062041
+pref.dlg.lbl.User-definedthrust.es.text.md5=9J+5NNryJ0R7y7AlfO3hcw\=\=
+pref.dlg.lbl.User-definedthrust.fr.text.changed=20110317061957
+pref.dlg.lbl.User-definedthrust.fr.text.md5=gFQ0ApS6ge7KmQdFVoH2vw\=\=
+pref.dlg.lbl.Velocity..text.changed=20110317061957
+pref.dlg.lbl.Velocity..text.md5=amkZLQ7Ohc5lBM+RMkfv/A\=\=
+pref.dlg.lbl.Velocity.es.text.changed=20110317062041
+pref.dlg.lbl.Velocity.es.text.md5=JemM4HUdhG9EOAzTlOrJzA\=\=
+pref.dlg.lbl.Velocity.fr.text.changed=20110317061957
+pref.dlg.lbl.Velocity.fr.text.md5=AiHRC56WHpIgpMwbV/CiQw\=\=
+pref.dlg.lbl.effect1..text.changed=20110317061957
+pref.dlg.lbl.effect1..text.md5=nERjoYjBeZ+VN3Vfq7O6jQ\=\=
+pref.dlg.lbl.effect1.es.text.changed=20110317062041
+pref.dlg.lbl.effect1.es.text.md5=DB/CrocNqh5rUU/QVzTqGw\=\=
+pref.dlg.lbl.effect1.fr.text.changed=20110317061957
+pref.dlg.lbl.effect1.fr.text.md5=ot+/UH8lO/HyMcly0/WMiA\=\=
+pref.dlg.lbl.msg1..text.changed=20110317061957
+pref.dlg.lbl.msg1..text.md5=MqY1WwgWTHSBqg6CpV1+Sg\=\=
+pref.dlg.lbl.msg1.es.text.changed=20110317062041
+pref.dlg.lbl.msg1.es.text.md5=ZFMNLBox6+rEi0px6ttZfg\=\=
+pref.dlg.lbl.msg1.fr.text.changed=20110317061957
+pref.dlg.lbl.msg1.fr.text.md5=2ZJXJJtGLjivaaUTPEzt7g\=\=
+pref.dlg.lbl.msg2..text.changed=20110317061957
+pref.dlg.lbl.msg2..text.md5=nfP0w9SxgjEM01v+Bcygnw\=\=
+pref.dlg.lbl.msg2.es.text.changed=20110317062041
+pref.dlg.lbl.msg2.es.text.md5=/TOZ3z07R8NN2VOpN9R6VQ\=\=
+pref.dlg.lbl.msg2.fr.text.changed=20110317061957
+pref.dlg.lbl.msg2.fr.text.md5=Tig1u1X4DJrXXTse31svrQ\=\=
+pref.dlg.lbl.msg3..text.changed=20110317061957
+pref.dlg.lbl.msg3..text.md5=mgAlfTlMW6GcHS5T8o/eWQ\=\=
+pref.dlg.lbl.msg3.es.text.changed=20110317062041
+pref.dlg.lbl.msg3.es.text.md5=bK/gmWyNTykGZ3ey3AntEQ\=\=
+pref.dlg.lbl.msg3.fr.text.changed=20110317061957
+pref.dlg.lbl.msg3.fr.text.md5=V6AWMTcV9+3KJy/dAPlKfg\=\=
+pref.dlg.lbl.msg4..text.changed=20110317061957
+pref.dlg.lbl.msg4..text.md5=m3xSKTJWaUBssByn95+TAw\=\=
+pref.dlg.lbl.msg4.es.text.changed=20110317062041
+pref.dlg.lbl.msg4.es.text.md5=H2KCOMdJcX42KtJ4Smed2Q\=\=
+pref.dlg.lbl.msg4.fr.text.changed=20110317061957
+pref.dlg.lbl.msg4.fr.text.md5=UAk2a6xa8UDC0IBn+sfyWw\=\=
+pref.dlg.tab.Custommaterials..text.changed=20110317061957
+pref.dlg.tab.Custommaterials..text.md5=RvFIQ+H3sN/xreOzW7lJNw\=\=
+pref.dlg.tab.Custommaterials.es.text.changed=20110317062041
+pref.dlg.tab.Custommaterials.es.text.md5=SCSFER9JgMoBSknll6RpHQ\=\=
+pref.dlg.tab.Custommaterials.fr.text.changed=20110317061957
+pref.dlg.tab.Custommaterials.fr.text.md5=DQ41UloUaiYRqNsHLuA4bg\=\=
+pref.dlg.tab.Defaultunits..text.changed=20110317061957
+pref.dlg.tab.Defaultunits..text.md5=gBdDM5g90nxmKDrpwbV3Ew\=\=
+pref.dlg.tab.Defaultunits.es.text.changed=20110317062041
+pref.dlg.tab.Defaultunits.es.text.md5=fN5lVoteCBVjqrNdzcg2Gg\=\=
+pref.dlg.tab.Defaultunits.fr.text.changed=20110317061957
+pref.dlg.tab.Defaultunits.fr.text.md5=bm77EyrSTPyFte7dyw72/w\=\=
+pref.dlg.tab.Materials..text.changed=20110317061957
+pref.dlg.tab.Materials..text.md5=I84Ot9GA89yDkdSvSFctIQ\=\=
+pref.dlg.tab.Materials.es.text.changed=20110317062041
+pref.dlg.tab.Materials.es.text.md5=aHUcoSIAS9GV1B6xBdl8xQ\=\=
+pref.dlg.tab.Materials.fr.text.changed=20110317061957
+pref.dlg.tab.Materials.fr.text.md5=VIeuRMJRAAlmhGYNzxsxBw\=\=
+pref.dlg.tab.Miscellaneousoptions..text.changed=20110317061957
+pref.dlg.tab.Miscellaneousoptions..text.md5=9rIkebozEdBr8NbOKYm6tw\=\=
+pref.dlg.tab.Miscellaneousoptions.es.text.changed=20110317062041
+pref.dlg.tab.Miscellaneousoptions.es.text.md5=FI3kXtG96ZxEnuBRExJDhg\=\=
+pref.dlg.tab.Miscellaneousoptions.fr.text.changed=20110317061957
+pref.dlg.tab.Miscellaneousoptions.fr.text.md5=3is2iPsyt1C8eckwmjlilg\=\=
+pref.dlg.tab.Options..text.changed=20110317061957
+pref.dlg.tab.Options..text.md5=2uis4YvcvMauWuziY+FP6A\=\=
+pref.dlg.tab.Options.es.text.changed=20110317062041
+pref.dlg.tab.Options.es.text.md5=iHfzoqIqnsqmVJywWRI5Rw\=\=
+pref.dlg.tab.Options.fr.text.changed=20110317061957
+pref.dlg.tab.Options.fr.text.md5=2uis4YvcvMauWuziY+FP6A\=\=
+pref.dlg.tab.Units..text.changed=20110317061957
+pref.dlg.tab.Units..text.md5=5XcaNi2Ipxple/zSHKVLPw\=\=
+pref.dlg.tab.Units.es.text.changed=20110317062041
+pref.dlg.tab.Units.es.text.md5=b5SBMvLXbydtsMw24yO8kQ\=\=
+pref.dlg.tab.Units.fr.text.changed=20110317061957
+pref.dlg.tab.Units.fr.text.md5=MFnVYKme8BGNYqI/wd4DKQ\=\=
+pref.dlg.title.Preferences..text.changed=20110317061957
+pref.dlg.title.Preferences..text.md5=fiSV65tC8YSFElGbmREmWg\=\=
+pref.dlg.title.Preferences.es.text.changed=20110317062041
+pref.dlg.title.Preferences.es.text.md5=LM4mIJ8hVRJwsGKf6c8Uvw\=\=
+pref.dlg.title.Preferences.fr.text.changed=20110317061957
+pref.dlg.title.Preferences.fr.text.md5=bjq4n9g3pdsoeyBZzYKRuQ\=\=
+pref.dlg.ttip.Checkupdatesnow..text.changed=20110317061957
+pref.dlg.ttip.Checkupdatesnow..text.md5=hAWxxTyPsbpbTSWbqE/eig\=\=
+pref.dlg.ttip.Checkupdatesnow.es.text.changed=20110317062041
+pref.dlg.ttip.Checkupdatesnow.es.text.md5=UY5iNfRVT+iH58ywmJ0QCA\=\=
+pref.dlg.ttip.Checkupdatesnow.fr.text.changed=20110317061957
+pref.dlg.ttip.Checkupdatesnow.fr.text.md5=LfWwypSNBFCZD5taNZr8JA\=\=
+printdlg.but.preview..text.changed=20110317061957
+printdlg.but.preview..text.md5=Mf3nsFrIlS2s9K+KcEB07A\=\=
+printdlg.but.preview.es.text.changed=20110317062041
+printdlg.but.preview.es.text.md5=aWEXdKz1ioVSleQnrF4Pow\=\=
+printdlg.but.preview.fr.text.changed=20110317061957
+printdlg.but.preview.fr.text.md5=kQDhY7t2CRwUTrsQOg7lcg\=\=
+printdlg.but.saveaspdf..text.changed=20110317061957
+printdlg.but.saveaspdf..text.md5=T75+Z/w547V0glCSiHKjBA\=\=
+printdlg.but.saveaspdf.es.text.changed=20110317062041
+printdlg.but.saveaspdf.es.text.md5=B+SzptWTapIr9dxbX0f0Cw\=\=
+printdlg.but.saveaspdf.fr.text.changed=20110317061957
+printdlg.but.saveaspdf.fr.text.md5=MPa+CmB3gqXMO39bomp+vA\=\=
+printdlg.but.settings..text.changed=20110317061957
+printdlg.but.settings..text.md5=9PcHJ9w0Vh394aPFKbYgXA\=\=
+printdlg.but.settings.es.text.changed=20110317062041
+printdlg.but.settings.es.text.md5=TTxOufNQ4mjwD4CX3lJhlA\=\=
+printdlg.but.settings.fr.text.changed=20110317061957
+printdlg.but.settings.fr.text.md5=JU9kJSe0W8JgBI4wcE7bOQ\=\=
+ringcompcfg.Automatic..text.changed=20110317061957
+ringcompcfg.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\=
+ringcompcfg.Automatic.es.text.changed=20110317062041
+ringcompcfg.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\=
+ringcompcfg.Automatic.fr.text.changed=20110317061957
+ringcompcfg.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\=
+ringcompcfg.Distancefrom..text.changed=20110317061957
+ringcompcfg.Distancefrom..text.md5=iXOTqKArulUeSlj7NG4hYQ\=\=
+ringcompcfg.Distancefrom.es.text.changed=20110317062041
+ringcompcfg.Distancefrom.es.text.md5=mJv/+HC1gbRzdzowCg4lXg\=\=
+ringcompcfg.Distancefrom.fr.text.changed=20110317061957
+ringcompcfg.Distancefrom.fr.text.md5=V3j7OD+SjSFKcUbO632zTg\=\=
+ringcompcfg.EngineBlock.desc..text.changed=20110317061957
+ringcompcfg.EngineBlock.desc..text.md5=+dcC5sq6raI7n9S1FKjT/A\=\=
+ringcompcfg.EngineBlock.desc.es.text.changed=20110317062041
+ringcompcfg.EngineBlock.desc.es.text.md5=+dcC5sq6raI7n9S1FKjT/A\=\=
+ringcompcfg.EngineBlock.desc.fr.text.changed=20110317061957
+ringcompcfg.EngineBlock.desc.fr.text.md5=734ReY+QcqGHVF5goRHfJA\=\=
+ringcompcfg.InnerRadius..text.changed=20110317061957
+ringcompcfg.InnerRadius..text.md5=bh+QzqgBwRWJskDHzzoljA\=\=
+ringcompcfg.InnerRadius.es.text.changed=20110317062041
+ringcompcfg.InnerRadius.es.text.md5=bh+QzqgBwRWJskDHzzoljA\=\=
+ringcompcfg.InnerRadius.fr.text.changed=20110317061957
+ringcompcfg.InnerRadius.fr.text.md5=Db+pa+Ahki6WE9ulffUbQg\=\=
+ringcompcfg.Length..text.changed=20110317061957
+ringcompcfg.Length..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\=
+ringcompcfg.Length.es.text.changed=20110317062041
+ringcompcfg.Length.es.text.md5=yRJSkybsSvz2fjoLePStOQ\=\=
+ringcompcfg.Length.fr.text.changed=20110317061957
+ringcompcfg.Length.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\=
+ringcompcfg.OuterRadius..text.changed=20110317061957
+ringcompcfg.OuterRadius..text.md5=rHHimetA/HNypRoiSn4ayA\=\=
+ringcompcfg.OuterRadius.es.text.changed=20110317062041
+ringcompcfg.OuterRadius.es.text.md5=rHHimetA/HNypRoiSn4ayA\=\=
+ringcompcfg.OuterRadius.fr.text.changed=20110317061957
+ringcompcfg.OuterRadius.fr.text.md5=0KRWZ37DQboWFNaIt8P4Yw\=\=
+ringcompcfg.PositionValue..text.changed=20110317061957
+ringcompcfg.PositionValue..text.md5=VfSfqSLNbXrIZXfJptTwBw\=\=
+ringcompcfg.PositionValue.es.text.changed=20110317062041
+ringcompcfg.PositionValue.es.text.md5=GtegWV8kPt81SYmFoKHQ6A\=\=
+ringcompcfg.Positionrelativeto..text.changed=20110317061957
+ringcompcfg.Positionrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\=
+ringcompcfg.Positionrelativeto.es.text.changed=20110317062041
+ringcompcfg.Positionrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\=
+ringcompcfg.Positionrelativeto.fr.text.changed=20110317061957
+ringcompcfg.Positionrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\=
+ringcompcfg.Radialdirection..text.changed=20110317061957
+ringcompcfg.Radialdirection..text.md5=75MvFf+j+psyzwdFcHYMHA\=\=
+ringcompcfg.Radialdirection.es.text.changed=20110317062041
+ringcompcfg.Radialdirection.es.text.md5=75MvFf+j+psyzwdFcHYMHA\=\=
+ringcompcfg.Radialdirection.fr.text.changed=20110317061957
+ringcompcfg.Radialdirection.fr.text.md5=LTOc7SJHWoW30NKxJNUbtw\=\=
+ringcompcfg.Radialdistance..text.changed=20110317061957
+ringcompcfg.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\=
+ringcompcfg.Radialdistance.es.text.changed=20110317062041
+ringcompcfg.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\=
+ringcompcfg.Radialdistance.fr.text.changed=20110317061957
+ringcompcfg.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\=
+ringcompcfg.Thickness..text.changed=20110317061957
+ringcompcfg.Thickness..text.md5=JDHq49H7cRw6b0SkitfaXg\=\=
+ringcompcfg.Thickness.es.text.changed=20110317062041
+ringcompcfg.Thickness.es.text.md5=flaJ2vP1m6oQau2zP8SfoQ\=\=
+ringcompcfg.Thickness.fr.text.changed=20110317061957
+ringcompcfg.Thickness.fr.text.md5=so+00m8fSvI+It61fuP3FA\=\=
+ringcompcfg.but.Reset..text.changed=20110317061957
+ringcompcfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\=
+ringcompcfg.but.Reset.es.text.changed=20110317062041
+ringcompcfg.but.Reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\=
+ringcompcfg.but.Reset.fr.text.changed=20110317061957
+ringcompcfg.but.Reset.fr.text.md5=rR3lRqKsD1mH7vixg3s77Q\=\=
+ringcompcfg.but.Resetcomponant..text.changed=20110317061957
+ringcompcfg.but.Resetcomponant..text.md5=4qhmrOpBhrcE0wmNA/2/Tw\=\=
+ringcompcfg.but.Resetcomponant.es.text.changed=20110317062041
+ringcompcfg.but.Resetcomponant.es.text.md5=Z8EvgcFX6Lyn1M32uK3NrA\=\=
+ringcompcfg.but.Resetcomponant.fr.text.changed=20110317061957
+ringcompcfg.but.Resetcomponant.fr.text.md5=d4rsVrDWZ60NIE1s2x/iBg\=\=
+ringcompcfg.note.desc..text.changed=20110317061957
+ringcompcfg.note.desc..text.md5=Ya4xUtP6dEK8mNde2j54wA\=\=
+ringcompcfg.note.desc.es.text.changed=20110317062041
+ringcompcfg.note.desc.es.text.md5=Ya4xUtP6dEK8mNde2j54wA\=\=
+ringcompcfg.note.desc.fr.text.changed=20110317061957
+ringcompcfg.note.desc.fr.text.md5=T4aQkDoV1sOSNm8kb2TTxQ\=\=
+ringcompcfg.plus..text.changed=20110317061957
+ringcompcfg.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ringcompcfg.plus.es.text.changed=20110317062041
+ringcompcfg.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ringcompcfg.plus.fr.text.changed=20110317061957
+ringcompcfg.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\=
+ringcompcfg.radialdirectionfrom..text.changed=20110317061957
+ringcompcfg.radialdirectionfrom..text.md5=uxY6X/nbTRmiMCPzgOWecw\=\=
+ringcompcfg.radialdirectionfrom.es.text.changed=20110317062041
+ringcompcfg.radialdirectionfrom.es.text.md5=LnVQS77Ikw2WqJjjVrxgjA\=\=
+ringcompcfg.radialdirectionfrom.fr.text.changed=20110317061957
+ringcompcfg.radialdirectionfrom.fr.text.md5=3GyglhPrOV2D+lvl2MmApA\=\=
+simedtdlg.IntensityDesc.Extreme..text.changed=20110317061957
+simedtdlg.IntensityDesc.Extreme..text.md5=uh9sWVJdca7kwCd5jSRw/Q\=\=
+simedtdlg.IntensityDesc.Extreme.es.text.changed=20110317062041
+simedtdlg.IntensityDesc.Extreme.es.text.md5=uh9sWVJdca7kwCd5jSRw/Q\=\=
+simedtdlg.IntensityDesc.Extreme.fr.text.changed=20110317061957
+simedtdlg.IntensityDesc.Extreme.fr.text.md5=uh9sWVJdca7kwCd5jSRw/Q\=\=
+simedtdlg.IntensityDesc.High..text.changed=20110317061957
+simedtdlg.IntensityDesc.High..text.md5=ZV0gwcppUZymR2hO27LbNQ\=\=
+simedtdlg.IntensityDesc.High.es.text.changed=20110317062041
+simedtdlg.IntensityDesc.High.es.text.md5=ZV0gwcppUZymR2hO27LbNQ\=\=
+simedtdlg.IntensityDesc.High.fr.text.changed=20110317061957
+simedtdlg.IntensityDesc.High.fr.text.md5=gg+5aGKEaSeg94H9Agf7+A\=\=
+simedtdlg.IntensityDesc.Low..text.changed=20110317061957
+simedtdlg.IntensityDesc.Low..text.md5=KNDt0EXgXPWvZONa4MTG7w\=\=
+simedtdlg.IntensityDesc.Low.es.text.changed=20110317062041
+simedtdlg.IntensityDesc.Low.es.text.md5=KNDt0EXgXPWvZONa4MTG7w\=\=
+simedtdlg.IntensityDesc.Low.fr.text.changed=20110317061957
+simedtdlg.IntensityDesc.Low.fr.text.md5=PQj/NSIeD3DkeJYYvCKJug\=\=
+simedtdlg.IntensityDesc.Medium..text.changed=20110317061957
+simedtdlg.IntensityDesc.Medium..text.md5=h/imq4XJztNwK06mQa1LtQ\=\=
+simedtdlg.IntensityDesc.Medium.es.text.changed=20110317062041
+simedtdlg.IntensityDesc.Medium.es.text.md5=h/imq4XJztNwK06mQa1LtQ\=\=
+simedtdlg.IntensityDesc.Medium.fr.text.changed=20110317061957
+simedtdlg.IntensityDesc.Medium.fr.text.md5=y3VAS2dcZi8mXZqr+HA0bw\=\=
+simedtdlg.IntensityDesc.None..text.changed=20110317061957
+simedtdlg.IntensityDesc.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+simedtdlg.IntensityDesc.None.es.text.changed=20110317062041
+simedtdlg.IntensityDesc.None.es.text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+simedtdlg.IntensityDesc.None.fr.text.changed=20110317061957
+simedtdlg.IntensityDesc.None.fr.text.md5=mf+6sPVtfw0sa+cKIY0cuA\=\=
+simedtdlg.IntensityDesc.Veryhigh..text.changed=20110317061957
+simedtdlg.IntensityDesc.Veryhigh..text.md5=MGmlUi3myUvQpAOHqxCyLA\=\=
+simedtdlg.IntensityDesc.Veryhigh.es.text.changed=20110317062041
+simedtdlg.IntensityDesc.Veryhigh.es.text.md5=MGmlUi3myUvQpAOHqxCyLA\=\=
+simedtdlg.IntensityDesc.Veryhigh.fr.text.changed=20110317061957
+simedtdlg.IntensityDesc.Veryhigh.fr.text.md5=zYr07rEPdEty+CJmiGEbTg\=\=
+simedtdlg.IntensityDesc.Verylow..text.changed=20110317061957
+simedtdlg.IntensityDesc.Verylow..text.md5=IwEcVAf6F5iWG6vlgDYC8w\=\=
+simedtdlg.IntensityDesc.Verylow.es.text.changed=20110317062041
+simedtdlg.IntensityDesc.Verylow.es.text.md5=IwEcVAf6F5iWG6vlgDYC8w\=\=
+simedtdlg.IntensityDesc.Verylow.fr.text.changed=20110317061957
+simedtdlg.IntensityDesc.Verylow.fr.text.md5=Qg+BD6PY4BkqZPM5QnIz5A\=\=
+simedtdlg.border.Atmoscond..text.changed=20110317061957
+simedtdlg.border.Atmoscond..text.md5=npuh1/LXWushqsNi5Nw4ig\=\=
+simedtdlg.border.Atmoscond.es.text.changed=20110317062041
+simedtdlg.border.Atmoscond.es.text.md5=BG5fyB9wIMKjY7z/ntzNDw\=\=
+simedtdlg.border.Atmoscond.fr.text.changed=20110317061957
+simedtdlg.border.Atmoscond.fr.text.md5=EkhEDaI8iQF7nf+9w0+bUg\=\=
+simedtdlg.border.Launchrod..text.changed=20110317061957
+simedtdlg.border.Launchrod..text.md5=Ux4gxgDIhxI101PDsdryhw\=\=
+simedtdlg.border.Launchrod.es.text.changed=20110317062041
+simedtdlg.border.Launchrod.es.text.md5=Z/bkbfclKsKG1h1TYMPuIA\=\=
+simedtdlg.border.Launchrod.fr.text.changed=20110317061957
+simedtdlg.border.Launchrod.fr.text.md5=NefmikVNTPJonc/o1Rr9lw\=\=
+simedtdlg.border.Simlist..text.changed=20110317061957
+simedtdlg.border.Simlist..text.md5=IxuSK2Ds64lJB5laD/Qk4A\=\=
+simedtdlg.border.Simlist.es.text.changed=20110317062041
+simedtdlg.border.Simlist.es.text.md5=/YpNVN2wnPdn6uwgxSzgGw\=\=
+simedtdlg.border.Simlist.fr.text.changed=20110317061957
+simedtdlg.border.Simlist.fr.text.md5=rBOcZ+pxK06FkAWlY7GU0A\=\=
+simedtdlg.border.Simopt..text.changed=20110317061957
+simedtdlg.border.Simopt..text.md5=akFtflE3jD78aZSujIz1fQ\=\=
+simedtdlg.border.Simopt.es.text.changed=20110317062041
+simedtdlg.border.Simopt.es.text.md5=muZrNGg64WGm2DFWmzgR0Q\=\=
+simedtdlg.border.Simopt.fr.text.changed=20110317061957
+simedtdlg.border.Simopt.fr.text.md5=zdwMVKJdXqAuybSud8Vtmg\=\=
+simedtdlg.but.add..text.changed=20110317061957
+simedtdlg.but.add..text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\=
+simedtdlg.but.add.es.text.changed=20110317062041
+simedtdlg.but.add.es.text.md5=TnoEp2bP5dkyM11JLQBocg\=\=
+simedtdlg.but.add.fr.text.changed=20110317061957
+simedtdlg.but.add.fr.text.md5=GNkl5NWxtWkojRGUILvLQg\=\=
+simedtdlg.but.remove..text.changed=20110317061957
+simedtdlg.but.remove..text.md5=EGPjjLU9lNOG8hIn/NhHFw\=\=
+simedtdlg.but.remove.es.text.changed=20110317062041
+simedtdlg.but.remove.es.text.md5=9GsyGPtgozCnAMZ1WWrA4A\=\=
+simedtdlg.but.remove.fr.text.changed=20110317061957
+simedtdlg.but.remove.fr.text.md5=0q3Ai6Nhuk17YCEtRMkuXA\=\=
+simedtdlg.but.resettodefault..text.changed=20110317061957
+simedtdlg.but.resettodefault..text.md5=IF+RUmD36JEDiLcjaqe6Wg\=\=
+simedtdlg.but.resettodefault.es.text.changed=20110317062041
+simedtdlg.but.resettodefault.es.text.md5=7TmQ2ucS3rir3YECwPaldw\=\=
+simedtdlg.but.resettodefault.fr.text.changed=20110317061957
+simedtdlg.but.resettodefault.fr.text.md5=kw7MKY8w5LCySPW738f4hQ\=\=
+simedtdlg.but.runsimulation..text.changed=20110317061957
+simedtdlg.but.runsimulation..text.md5=VLk6QXF74+nzTJrUaLC4SQ\=\=
+simedtdlg.but.runsimulation.es.text.changed=20110317062041
+simedtdlg.but.runsimulation.es.text.md5=ZvK+F7LqMs0/cdoOhYhGuA\=\=
+simedtdlg.but.runsimulation.fr.text.changed=20110317061957
+simedtdlg.but.runsimulation.fr.text.md5=anK16gTpeay9LSd6kI1n7w\=\=
+simedtdlg.but.ttip.resettodefault..text.changed=20110317061957
+simedtdlg.but.ttip.resettodefault..text.md5=nxm15hB6mr2s+x3hdYW9Lg\=\=
+simedtdlg.but.ttip.resettodefault.es.text.changed=20110317062041
+simedtdlg.but.ttip.resettodefault.es.text.md5=A3Z//brbVdrQiHvz+CuFSg\=\=
+simedtdlg.but.ttip.resettodefault.fr.text.changed=20110317061957
+simedtdlg.but.ttip.resettodefault.fr.text.md5=AsZHNrU9VLuF/1D9ckQDZg\=\=
+simedtdlg.chart.Simflight..text.changed=20110317061957
+simedtdlg.chart.Simflight..text.md5=9dB8ETg7rbeNkLDb7mWEwA\=\=
+simedtdlg.chart.Simflight.es.text.changed=20110317062041
+simedtdlg.chart.Simflight.es.text.md5=TuSR9mNnUGttJOUezJGFxg\=\=
+simedtdlg.chart.Simflight.fr.text.changed=20110317061957
+simedtdlg.chart.Simflight.fr.text.md5=ES98alBF1Zz2UHg7ocajzw\=\=
+simedtdlg.checkbox.InterStdAtmosphere..text.changed=20110317061957
+simedtdlg.checkbox.InterStdAtmosphere..text.md5=LPC4GFXxCJj54lgcP3pCXA\=\=
+simedtdlg.checkbox.InterStdAtmosphere.es.text.changed=20110317062041
+simedtdlg.checkbox.InterStdAtmosphere.es.text.md5=/jE6g/KO5GYwQ/MuBJyFmw\=\=
+simedtdlg.checkbox.InterStdAtmosphere.fr.text.changed=20110317061957
+simedtdlg.checkbox.InterStdAtmosphere.fr.text.md5=BH9HZgwCnaT2JpMpFU4FIg\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere1..text.changed=20110317061957
+simedtdlg.checkbox.ttip.InterStdAtmosphere1..text.md5=8fsxhwqNAPshlfMeWBVOWA\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere1.es.text.changed=20110317062041
+simedtdlg.checkbox.ttip.InterStdAtmosphere1.es.text.md5=Nw/hPToInyr3UrwezNHusw\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere1.fr.text.changed=20110317061957
+simedtdlg.checkbox.ttip.InterStdAtmosphere1.fr.text.md5=u6b3YQLK22KKDdKvDEt6dw\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere2..text.changed=20110317061957
+simedtdlg.checkbox.ttip.InterStdAtmosphere2..text.md5=jxCzMJTgG+wrPFucsCKzFw\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere2.es.text.changed=20110317062041
+simedtdlg.checkbox.ttip.InterStdAtmosphere2.es.text.md5=PK4p9OdswdML9WzJeW0ARQ\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere2.fr.text.changed=20110317061957
+simedtdlg.checkbox.ttip.InterStdAtmosphere2.fr.text.md5=8MWRSa14qZQV6PKs6TKbXg\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere3..text.changed=20110317061957
+simedtdlg.checkbox.ttip.InterStdAtmosphere3..text.md5=qaJijR8iDWhjSWfSwgzaAw\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere3.es.text.changed=20110317062041
+simedtdlg.checkbox.ttip.InterStdAtmosphere3.es.text.md5=ytHCgH2tfTvhLZzx2NO3MQ\=\=
+simedtdlg.checkbox.ttip.InterStdAtmosphere3.fr.text.changed=20110317061957
+simedtdlg.checkbox.ttip.InterStdAtmosphere3.fr.text.md5=6iVUarfGniXXLsw9nFLb8g\=\=
+simedtdlg.combo.ttip.motorconf..text.changed=20110317061957
+simedtdlg.combo.ttip.motorconf..text.md5=HXPrHbRbP6GQbmmH4+x9Ag\=\=
+simedtdlg.combo.ttip.motorconf.es.text.changed=20110317062041
+simedtdlg.combo.ttip.motorconf.es.text.md5=Ev8cbjgxLx1B7T9UfjjyxA\=\=
+simedtdlg.combo.ttip.motorconf.fr.text.changed=20110317061957
+simedtdlg.combo.ttip.motorconf.fr.text.md5=dtElUKHY3BtTiRPIBzJ+sg\=\=
+simedtdlg.dlg.Simres..text.changed=20110317061957
+simedtdlg.dlg.Simres..text.md5=M+2kOHN4rLbwiypmvltouQ\=\=
+simedtdlg.dlg.Simres.es.text.changed=20110317062041
+simedtdlg.dlg.Simres.es.text.md5=syKwuFwPjdqgACgLj/deJQ\=\=
+simedtdlg.dlg.Simres.fr.text.changed=20110317061957
+simedtdlg.dlg.Simres.fr.text.md5=SxzFH2DR1seO8P+k8qgWzQ\=\=
+simedtdlg.lbl.Addsimlist..text.changed=20110317061957
+simedtdlg.lbl.Addsimlist..text.md5=TzDIDnU3eA2H+2NdX3dN7g\=\=
+simedtdlg.lbl.Addsimlist.es.text.changed=20110317062041
+simedtdlg.lbl.Addsimlist.es.text.md5=TzzdxCXbcSsZpfjSswjH1A\=\=
+simedtdlg.lbl.Addsimlist.fr.text.changed=20110317061957
+simedtdlg.lbl.Addsimlist.fr.text.md5=quCW+StDOijPKFQlsMMAdw\=\=
+simedtdlg.lbl.Altitude..text.changed=20110317061957
+simedtdlg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+simedtdlg.lbl.Altitude.es.text.changed=20110317062041
+simedtdlg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\=
+simedtdlg.lbl.Altitude.fr.text.changed=20110317061957
+simedtdlg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\=
+simedtdlg.lbl.Angle..text.changed=20110317061957
+simedtdlg.lbl.Angle..text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\=
+simedtdlg.lbl.Angle.es.text.changed=20110317062041
+simedtdlg.lbl.Angle.es.text.md5=T9bgmaOVQwRc6vOgnoDw9Q\=\=
+simedtdlg.lbl.Angle.fr.text.changed=20110317061957
+simedtdlg.lbl.Angle.fr.text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\=
+simedtdlg.lbl.Averwindspeed..text.changed=20110317061957
+simedtdlg.lbl.Averwindspeed..text.md5=2cfgiknR/vZ1icrfR4VxNA\=\=
+simedtdlg.lbl.Averwindspeed.es.text.changed=20110317062041
+simedtdlg.lbl.Averwindspeed.es.text.md5=79Bouu/JNVkl2GF7eSr63w\=\=
+simedtdlg.lbl.Averwindspeed.fr.text.changed=20110317061957
+simedtdlg.lbl.Averwindspeed.fr.text.md5=O1WyKlbhIsuIQkuAavmv6A\=\=
+simedtdlg.lbl.Calcmethod..text.changed=20110317061957
+simedtdlg.lbl.Calcmethod..text.md5=XoIyjIO0zxFhmB+YMuTveQ\=\=
+simedtdlg.lbl.Calcmethod.es.text.changed=20110317062041
+simedtdlg.lbl.Calcmethod.es.text.md5=yESebZEr/MyAp4mvY4VXrA\=\=
+simedtdlg.lbl.Calcmethod.fr.text.changed=20110317061957
+simedtdlg.lbl.Calcmethod.fr.text.md5=pnQI+eq7JYPcQrH7OPSpfw\=\=
+simedtdlg.lbl.Curlist..text.changed=20110317061957
+simedtdlg.lbl.Curlist..text.md5=0XvlG+Qhya/Vs+l7w/8hew\=\=
+simedtdlg.lbl.Curlist.es.text.changed=20110317062041
+simedtdlg.lbl.Curlist.es.text.md5=PbkjFbkFJkkKQhHhw28kWg\=\=
+simedtdlg.lbl.Curlist.fr.text.changed=20110317061957
+simedtdlg.lbl.Curlist.fr.text.md5=XpE1CqR92bnGZqtBpalJuw\=\=
+simedtdlg.lbl.Direction..text.changed=20110317061957
+simedtdlg.lbl.Direction..text.md5=aYc3XU78wF35c9HESVNRTA\=\=
+simedtdlg.lbl.Direction.es.text.changed=20110317062041
+simedtdlg.lbl.Direction.es.text.md5=6mz3oaIVyvY0DEOZGE/1Ag\=\=
+simedtdlg.lbl.Direction.fr.text.changed=20110317061957
+simedtdlg.lbl.Direction.fr.text.md5=aYc3XU78wF35c9HESVNRTA\=\=
+simedtdlg.lbl.ExtBarrowman..text.changed=20110317061957
+simedtdlg.lbl.ExtBarrowman..text.md5=CK1wRMOoMVQefUtvs2ju+A\=\=
+simedtdlg.lbl.ExtBarrowman.es.text.changed=20110317062041
+simedtdlg.lbl.ExtBarrowman.es.text.md5=LRKmA/6EUQFLmlt5bk2XLw\=\=
+simedtdlg.lbl.ExtBarrowman.fr.text.changed=20110317061957
+simedtdlg.lbl.ExtBarrowman.fr.text.md5=KhK32GyQzYv0UxzsBRAa1Q\=\=
+simedtdlg.lbl.Latitude..text.changed=20110317061957
+simedtdlg.lbl.Latitude..text.md5=2zyXCUv7VKhqHQMGht5TjA\=\=
+simedtdlg.lbl.Latitude.es.text.changed=20110317062041
+simedtdlg.lbl.Latitude.es.text.md5=ZFYR+rdF/i8WgrTe5pqaPA\=\=
+simedtdlg.lbl.Latitude.fr.text.changed=20110317061957
+simedtdlg.lbl.Latitude.fr.text.md5=2zyXCUv7VKhqHQMGht5TjA\=\=
+simedtdlg.lbl.Launchsite..text.changed=20110317061957
+simedtdlg.lbl.Launchsite..text.md5=vNjc+uGgxf8RvPMAmyrtvA\=\=
+simedtdlg.lbl.Launchsite.es.text.changed=20110317062041
+simedtdlg.lbl.Launchsite.es.text.md5=Zat1D2OpyzP/bhXAsUn/8A\=\=
+simedtdlg.lbl.Launchsite.fr.text.changed=20110317061957
+simedtdlg.lbl.Launchsite.fr.text.md5=Wggs51BmxQXw0sQmCPZKpg\=\=
+simedtdlg.lbl.Length..text.changed=20110317061957
+simedtdlg.lbl.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\=
+simedtdlg.lbl.Length.es.text.changed=20110317062041
+simedtdlg.lbl.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\=
+simedtdlg.lbl.Length.fr.text.changed=20110317061957
+simedtdlg.lbl.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\=
+simedtdlg.lbl.Motorcfg..text.changed=20110317061957
+simedtdlg.lbl.Motorcfg..text.md5=hUqBQQLOQuV2isn4DoTERA\=\=
+simedtdlg.lbl.Motorcfg.es.text.changed=20110317062041
+simedtdlg.lbl.Motorcfg.es.text.md5=LKwpTWlKtZl2ttOxTzBp9Q\=\=
+simedtdlg.lbl.Motorcfg.fr.text.changed=20110317061957
+simedtdlg.lbl.Motorcfg.fr.text.md5=hU2++Dh8qBxAt7AQTW8GDQ\=\=
+simedtdlg.lbl.Noflightdata..text.changed=20110317061957
+simedtdlg.lbl.Noflightdata..text.md5=9aX0GFcuszfI5XNRoSIU/w\=\=
+simedtdlg.lbl.Noflightdata.es.text.changed=20110317062041
+simedtdlg.lbl.Noflightdata.es.text.md5=aRRNlIff+rHhbYg+5/eajA\=\=
+simedtdlg.lbl.Noflightdata.fr.text.changed=20110317061957
+simedtdlg.lbl.Noflightdata.fr.text.md5=pFhnGKrIvcPTPYQaOdCI7A\=\=
+simedtdlg.lbl.Pressure..text.changed=20110317061957
+simedtdlg.lbl.Pressure..text.md5=orG4EM2I0NrXoN8Pcd6JXw\=\=
+simedtdlg.lbl.Pressure.es.text.changed=20110317062041
+simedtdlg.lbl.Pressure.es.text.md5=UGv+4uJMw0wmdX6NgJVgXw\=\=
+simedtdlg.lbl.Pressure.fr.text.changed=20110317061957
+simedtdlg.lbl.Pressure.fr.text.md5=n/tutxCm6Qrt4Lo6x1rZDw\=\=
+simedtdlg.lbl.Simmethod..text.changed=20110317061957
+simedtdlg.lbl.Simmethod..text.md5=QM/1brA5LQSDOtc6CTnbYg\=\=
+simedtdlg.lbl.Simmethod.es.text.changed=20110317062041
+simedtdlg.lbl.Simmethod.es.text.md5=T+buK4F25556YiT/U6oSsA\=\=
+simedtdlg.lbl.Simmethod.fr.text.changed=20110317061957
+simedtdlg.lbl.Simmethod.fr.text.md5=E0Cd7BsS27KVCydYK4FwSA\=\=
+simedtdlg.lbl.Simname..text.changed=20110317061957
+simedtdlg.lbl.Simname..text.md5=+UlbWvXkyqfKupRpbBMTIw\=\=
+simedtdlg.lbl.Simname.es.text.changed=20110317062041
+simedtdlg.lbl.Simname.es.text.md5=DpyUyVsM6I+VQI+54Nepag\=\=
+simedtdlg.lbl.Simname.fr.text.changed=20110317061957
+simedtdlg.lbl.Simname.fr.text.md5=HQyM5r/VNffPqe51ynllFw\=\=
+simedtdlg.lbl.Stddeviation..text.changed=20110317061957
+simedtdlg.lbl.Stddeviation..text.md5=CBz6WaRRSz8hl300RCvT4g\=\=
+simedtdlg.lbl.Stddeviation.es.text.changed=20110317062041
+simedtdlg.lbl.Stddeviation.es.text.md5=UqIOfebQru0gZ5qyVtPKiw\=\=
+simedtdlg.lbl.Stddeviation.fr.text.changed=20110317061957
+simedtdlg.lbl.Stddeviation.fr.text.md5=bEJYXZja1lwK5bqslVt/1g\=\=
+simedtdlg.lbl.Temperature..text.changed=20110317061957
+simedtdlg.lbl.Temperature..text.md5=DPgM4apm5pttJwjQr4JyRw\=\=
+simedtdlg.lbl.Temperature.es.text.changed=20110317062041
+simedtdlg.lbl.Temperature.es.text.md5=uXp9rtZp/mQyOVPxjR1KAA\=\=
+simedtdlg.lbl.Temperature.fr.text.changed=20110317061957
+simedtdlg.lbl.Temperature.fr.text.md5=L5murG6QLq/coqbNQSD92A\=\=
+simedtdlg.lbl.Timestep..text.changed=20110317061957
+simedtdlg.lbl.Timestep..text.md5=QP2aXoaGzviRyuAu5HT64g\=\=
+simedtdlg.lbl.Timestep.es.text.changed=20110317062041
+simedtdlg.lbl.Timestep.es.text.md5=trR5AL9fJyjKjX2YWTCuzw\=\=
+simedtdlg.lbl.Timestep.fr.text.changed=20110317061957
+simedtdlg.lbl.Timestep.fr.text.md5=9mAr9cQgeaE79G9rsQi9WQ\=\=
+simedtdlg.lbl.Turbulenceintensity..text.changed=20110317061957
+simedtdlg.lbl.Turbulenceintensity..text.md5=5zHyHhr9yxsNTDMV0UOmzQ\=\=
+simedtdlg.lbl.Turbulenceintensity.es.text.changed=20110317062041
+simedtdlg.lbl.Turbulenceintensity.es.text.md5=58kaRWXuQX7p19/CnbTDbw\=\=
+simedtdlg.lbl.Turbulenceintensity.fr.text.changed=20110317061957
+simedtdlg.lbl.Turbulenceintensity.fr.text.md5=1DPterQ/anwWFe9Bl7KBDw\=\=
+simedtdlg.lbl.Wind..text.changed=20110317061957
+simedtdlg.lbl.Wind..text.md5=UiWLntpAaJhDYHfyKi7RHw\=\=
+simedtdlg.lbl.Wind.es.text.changed=20110317062041
+simedtdlg.lbl.Wind.es.text.md5=7lOofNvBQh/ZaWAY9gvh0Q\=\=
+simedtdlg.lbl.Wind.fr.text.changed=20110317061957
+simedtdlg.lbl.Wind.fr.text.md5=0u3MJDkYQ2E1bO8YuXi1zQ\=\=
+simedtdlg.lbl.runsimfirst..text.changed=20110317061957
+simedtdlg.lbl.runsimfirst..text.md5=I/g1Xjj6vmE/ElZ2ZUJ02g\=\=
+simedtdlg.lbl.runsimfirst.es.text.changed=20110317062041
+simedtdlg.lbl.runsimfirst.es.text.md5=lz5voX1EUw8DxGE3xbuB8A\=\=
+simedtdlg.lbl.runsimfirst.fr.text.changed=20110317061957
+simedtdlg.lbl.runsimfirst.fr.text.md5=3ki89vBXyBPINkBe61y89A\=\=
+simedtdlg.lbl.ttip.Altitude..text.changed=20110317061957
+simedtdlg.lbl.ttip.Altitude..text.md5=1t9veO/lXye/U5Y9gwXmTg\=\=
+simedtdlg.lbl.ttip.Altitude.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Altitude.es.text.md5=fuekGbI9qY+Gx1MxerkbiQ\=\=
+simedtdlg.lbl.ttip.Altitude.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Altitude.fr.text.md5=4o5cxorJOmqQAL9Shz6t0Q\=\=
+simedtdlg.lbl.ttip.Angle..text.changed=20110317061957
+simedtdlg.lbl.ttip.Angle..text.md5=LuBdLGjhE2PexHQc1f2jIg\=\=
+simedtdlg.lbl.ttip.Angle.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Angle.es.text.md5=PM8sDYrQVQJFqWKZxfP49A\=\=
+simedtdlg.lbl.ttip.Angle.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Angle.fr.text.md5=M7bkB5pUmrbqvZWsiQW86Q\=\=
+simedtdlg.lbl.ttip.Averwindspeed..text.changed=20110317061957
+simedtdlg.lbl.ttip.Averwindspeed..text.md5=mxm9rGc18MuudYJQqQeuLA\=\=
+simedtdlg.lbl.ttip.Averwindspeed.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Averwindspeed.es.text.md5=yedieDQANvWS8DBlitGHww\=\=
+simedtdlg.lbl.ttip.Averwindspeed.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Averwindspeed.fr.text.md5=edEEOXgH8Jq45hHowiyBxg\=\=
+simedtdlg.lbl.ttip.Calcmethod..text.changed=20110317061957
+simedtdlg.lbl.ttip.Calcmethod..text.md5=JeDhOc3fTjXkBdTSTmmHRQ\=\=
+simedtdlg.lbl.ttip.Calcmethod.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Calcmethod.es.text.md5=ZvoSLKbWcD+txhsum44p9w\=\=
+simedtdlg.lbl.ttip.Calcmethod.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Calcmethod.fr.text.md5=mJhE9c/1xB2RTib6gOeBnA\=\=
+simedtdlg.lbl.ttip.Direction1..text.changed=20110317061957
+simedtdlg.lbl.ttip.Direction1..text.md5=SdoWG76cIrdGWdv4Pe06jw\=\=
+simedtdlg.lbl.ttip.Direction1.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Direction1.es.text.md5=SdoWG76cIrdGWdv4Pe06jw\=\=
+simedtdlg.lbl.ttip.Direction1.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Direction1.fr.text.md5=DnY+t56ClYWKHsWHlhh06Q\=\=
+simedtdlg.lbl.ttip.Direction2..text.changed=20110317061957
+simedtdlg.lbl.ttip.Direction2..text.md5=1Cf5tDZHgJKNW9OL5BEL3Q\=\=
+simedtdlg.lbl.ttip.Direction2.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Direction2.es.text.md5=W/Gdwam3rzW1VJBF26g+HA\=\=
+simedtdlg.lbl.ttip.Direction2.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Direction2.fr.text.md5=nFJlHFjk6d7n+TOK9kEhQg\=\=
+simedtdlg.lbl.ttip.Direction3..text.changed=20110317061957
+simedtdlg.lbl.ttip.Direction3..text.md5=aWEFivuDNhnMb7IOLAAoEg\=\=
+simedtdlg.lbl.ttip.Direction3.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Direction3.es.text.md5=TPF5Uhi96BS+nBfEhzLv8Q\=\=
+simedtdlg.lbl.ttip.Direction3.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Direction3.fr.text.md5=xObBvmli/AfS1uyTvYR1dw\=\=
+simedtdlg.lbl.ttip.Latitude..text.changed=20110317061957
+simedtdlg.lbl.ttip.Latitude..text.md5=8gml0q2Wc31vOrNAxng3JA\=\=
+simedtdlg.lbl.ttip.Latitude.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Latitude.es.text.md5=OhvJM/vPfpABz881sqls2w\=\=
+simedtdlg.lbl.ttip.Latitude.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Latitude.fr.text.md5=oBnpuWiOYFv3PqUQ0h8j2w\=\=
+simedtdlg.lbl.ttip.Length..text.changed=20110317061957
+simedtdlg.lbl.ttip.Length..text.md5=xYGgm8YcHNMtfKPueX0Esw\=\=
+simedtdlg.lbl.ttip.Length.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Length.es.text.md5=6SJjbxC/waHn2BRDDBe2bg\=\=
+simedtdlg.lbl.ttip.Length.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Length.fr.text.md5=H2LQNdOR36hpXTkf5M3fxQ\=\=
+simedtdlg.lbl.ttip.Motorcfg..text.changed=20110317061957
+simedtdlg.lbl.ttip.Motorcfg..text.md5=HXPrHbRbP6GQbmmH4+x9Ag\=\=
+simedtdlg.lbl.ttip.Motorcfg.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Motorcfg.es.text.md5=Ev8cbjgxLx1B7T9UfjjyxA\=\=
+simedtdlg.lbl.ttip.Motorcfg.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Motorcfg.fr.text.md5=dtElUKHY3BtTiRPIBzJ+sg\=\=
+simedtdlg.lbl.ttip.Pressure..text.changed=20110317061957
+simedtdlg.lbl.ttip.Pressure..text.md5=AbSD63yY37PAcElFwnG8UA\=\=
+simedtdlg.lbl.ttip.Pressure.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Pressure.es.text.md5=f7UMzkbWkZxseNncIPglGQ\=\=
+simedtdlg.lbl.ttip.Pressure.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Pressure.fr.text.md5=fvF5HHZ/Kpfk69SWeXhqWA\=\=
+simedtdlg.lbl.ttip.Simmethod1..text.changed=20110317061957
+simedtdlg.lbl.ttip.Simmethod1..text.md5=IrjolcvSx6eRtRde9PMOSw\=\=
+simedtdlg.lbl.ttip.Simmethod1.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Simmethod1.es.text.md5=zNMyq308V2/Dn/feHy9TAQ\=\=
+simedtdlg.lbl.ttip.Simmethod1.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Simmethod1.fr.text.md5=sRqV5wBYDK9xh2h0MFpRwg\=\=
+simedtdlg.lbl.ttip.Simmethod2..text.changed=20110317061957
+simedtdlg.lbl.ttip.Simmethod2..text.md5=l1ghuLBNcxPo/MyDZN9irA\=\=
+simedtdlg.lbl.ttip.Simmethod2.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Simmethod2.es.text.md5=Z2dAYt4iM6A08l6fwNXYlQ\=\=
+simedtdlg.lbl.ttip.Simmethod2.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Simmethod2.fr.text.md5=l1ghuLBNcxPo/MyDZN9irA\=\=
+simedtdlg.lbl.ttip.Stddeviation..text.changed=20110317061957
+simedtdlg.lbl.ttip.Stddeviation..text.md5=tzcoIVGX1XvdLeEavwwDxw\=\=
+simedtdlg.lbl.ttip.Stddeviation.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Stddeviation.es.text.md5=vU124vF2Wc6YiLLz4bucPg\=\=
+simedtdlg.lbl.ttip.Stddeviation.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Stddeviation.fr.text.md5=8qTdNH8ksKVCacLN9cL+oA\=\=
+simedtdlg.lbl.ttip.Temperature..text.changed=20110317061957
+simedtdlg.lbl.ttip.Temperature..text.md5=RraujctllOTdJVfJ3o6NdA\=\=
+simedtdlg.lbl.ttip.Temperature.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Temperature.es.text.md5=pvLbWd3Hu2YadWWgQyIqtQ\=\=
+simedtdlg.lbl.ttip.Temperature.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Temperature.fr.text.md5=wng+aTqrK7ySpu96jVjcKw\=\=
+simedtdlg.lbl.ttip.Timestep1..text.changed=20110317061957
+simedtdlg.lbl.ttip.Timestep1..text.md5=sjNhF2tFhaKArZBnupS9LA\=\=
+simedtdlg.lbl.ttip.Timestep1.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Timestep1.es.text.md5=/+XSX7JqkG1vWHsf66mF5w\=\=
+simedtdlg.lbl.ttip.Timestep1.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Timestep1.fr.text.md5=nmuivJUkO6WKCeuAyFXimg\=\=
+simedtdlg.lbl.ttip.Timestep2..text.changed=20110317061957
+simedtdlg.lbl.ttip.Timestep2..text.md5=LqNgCewGLN9lKvdrJ8JtXg\=\=
+simedtdlg.lbl.ttip.Timestep2.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Timestep2.es.text.md5=ECFZ3JM7nSsB4nvuk2sMaA\=\=
+simedtdlg.lbl.ttip.Timestep2.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Timestep2.fr.text.md5=LqNgCewGLN9lKvdrJ8JtXg\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity1..text.changed=20110317061957
+simedtdlg.lbl.ttip.Turbulenceintensity1..text.md5=daXCs1eo6tjkG59VAuQvXQ\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity1.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Turbulenceintensity1.es.text.md5=oCieK1YAtvXneP550bWcOQ\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity1.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Turbulenceintensity1.fr.text.md5=GSEpg/NruzySRCWH6+7Y6Q\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity2..text.changed=20110317061957
+simedtdlg.lbl.ttip.Turbulenceintensity2..text.md5=Qv5afqXGKZ5++8dxWPgcXg\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity2.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Turbulenceintensity2.es.text.md5=v0n4lmIURh205LAaO0WOXQ\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity2.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Turbulenceintensity2.fr.text.md5=O8thzcjurxS55zQ7F/j0Nw\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity3..text.changed=20110317061957
+simedtdlg.lbl.ttip.Turbulenceintensity3..text.md5=AbbiA0S2iDXF7R3e3yDVMQ\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity3.es.text.changed=20110317062041
+simedtdlg.lbl.ttip.Turbulenceintensity3.es.text.md5=DMF1ucDxtqgxw5niaXcmYQ\=\=
+simedtdlg.lbl.ttip.Turbulenceintensity3.fr.text.changed=20110317061957
+simedtdlg.lbl.ttip.Turbulenceintensity3.fr.text.md5=yXWc62SHoL0nIMqY8mItJA\=\=
+simedtdlg.tab.Exportdata..text.changed=20110317061957
+simedtdlg.tab.Exportdata..text.md5=XiBkZYDaWE12Q12gDW+s5A\=\=
+simedtdlg.tab.Exportdata.es.text.changed=20110317062041
+simedtdlg.tab.Exportdata.es.text.md5=PtNQUuT/0JmtfrtKHegAJw\=\=
+simedtdlg.tab.Exportdata.fr.text.changed=20110317061957
+simedtdlg.tab.Exportdata.fr.text.md5=101g/zaYkc6oTRv3QSr2yw\=\=
+simedtdlg.tab.Launchcond..text.changed=20110317061957
+simedtdlg.tab.Launchcond..text.md5=irWIAASLMmvjb4PrKezjzg\=\=
+simedtdlg.tab.Launchcond.es.text.changed=20110317062041
+simedtdlg.tab.Launchcond.es.text.md5=uJjmrmO5J1nZ0l1nl5PuzA\=\=
+simedtdlg.tab.Launchcond.fr.text.changed=20110317061957
+simedtdlg.tab.Launchcond.fr.text.md5=6tyRRpcoaUY5kbws+KkYng\=\=
+simedtdlg.tab.Plotdata..text.changed=20110317061957
+simedtdlg.tab.Plotdata..text.md5=XTZPLGugzYkzvwbqixKy4Q\=\=
+simedtdlg.tab.Plotdata.es.text.changed=20110317062041
+simedtdlg.tab.Plotdata.es.text.md5=MXwCojDyf9C4DX0fdZa03g\=\=
+simedtdlg.tab.Plotdata.fr.text.changed=20110317061957
+simedtdlg.tab.Plotdata.fr.text.md5=YD3Aa3a9l47QKguonSgD3g\=\=
+simedtdlg.tab.Simopt..text.changed=20110317061957
+simedtdlg.tab.Simopt..text.md5=JXJg7M4wZ9tYIB539YnhYA\=\=
+simedtdlg.tab.Simopt.es.text.changed=20110317062041
+simedtdlg.tab.Simopt.es.text.md5=tJQz7h7gBmy/9l9+zlTS6Q\=\=
+simedtdlg.tab.Simopt.fr.text.changed=20110317061957
+simedtdlg.tab.Simopt.fr.text.md5=zdwMVKJdXqAuybSud8Vtmg\=\=
+simedtdlg.title.Editsim..text.changed=20110317061957
+simedtdlg.title.Editsim..text.md5=rPhGyBbyH9FNF9/6qufS6Q\=\=
+simedtdlg.title.Editsim.es.text.changed=20110317062041
+simedtdlg.title.Editsim.es.text.md5=he5js47uz8cwnb8i4bOplQ\=\=
+simedtdlg.title.Editsim.fr.text.changed=20110317061957
+simedtdlg.title.Editsim.fr.text.md5=2GJ3pbhnSWh8tY57ilcXIw\=\=
+simedtdlg.txt.longA1..text.changed=20110317061957
+simedtdlg.txt.longA1..text.md5=PGEwD1Pp1DibUvj3AXfM2A\=\=
+simedtdlg.txt.longA1.es.text.changed=20110317062041
+simedtdlg.txt.longA1.es.text.md5=7XBdfBPI0xw5l84aF0/jKQ\=\=
+simedtdlg.txt.longA1.fr.text.changed=20110317061957
+simedtdlg.txt.longA1.fr.text.md5=1d8ZjA72CgNL4r7EYFPPJA\=\=
+simedtdlg.txt.longA2..text.changed=20110317061957
+simedtdlg.txt.longA2..text.md5=U8wuqE70P2H4N3NI0T7BVQ\=\=
+simedtdlg.txt.longA2.es.text.changed=20110317062041
+simedtdlg.txt.longA2.es.text.md5=2zK9LtnWNjlWskvmeu+LgQ\=\=
+simedtdlg.txt.longA2.fr.text.changed=20110317061957
+simedtdlg.txt.longA2.fr.text.md5=z0u+Uuw7L6hdGa1IIk2Obw\=\=
+simpanel.but.deletesimulations..text.changed=20110317061957
+simpanel.but.deletesimulations..text.md5=E2ccIhH6w7qOFhOsd4212A\=\=
+simpanel.but.deletesimulations.es.text.changed=20110317062041
+simpanel.but.deletesimulations.es.text.md5=wuqLQ5evaBlsocAciNlqiQ\=\=
+simpanel.but.deletesimulations.fr.text.changed=20110317061957
+simpanel.but.deletesimulations.fr.text.md5=DAv7od/Vxf0J1c/DIufXOA\=\=
+simpanel.but.editsimulation..text.changed=20110317061957
+simpanel.but.editsimulation..text.md5=rPhGyBbyH9FNF9/6qufS6Q\=\=
+simpanel.but.editsimulation.es.text.changed=20110317062041
+simpanel.but.editsimulation.es.text.md5=/DOYHZpz52v3uUGY/VilTQ\=\=
+simpanel.but.editsimulation.fr.text.changed=20110317061957
+simpanel.but.editsimulation.fr.text.md5=2GJ3pbhnSWh8tY57ilcXIw\=\=
+simpanel.but.newsimulation..text.changed=20110317061957
+simpanel.but.newsimulation..text.md5=ctc+CkRmqF8sATWfw90ABA\=\=
+simpanel.but.newsimulation.es.text.changed=20110317062041
+simpanel.but.newsimulation.es.text.md5=51xagHSl8PtkRipZCcLRUQ\=\=
+simpanel.but.newsimulation.fr.text.changed=20110317061957
+simpanel.but.newsimulation.fr.text.md5=B4pGMQXghPIMD0abrH2GnQ\=\=
+simpanel.but.plotexport..text.changed=20110317061957
+simpanel.but.plotexport..text.md5=0BmFP3PBQIfU3MkcHgoGDg\=\=
+simpanel.but.plotexport.es.text.changed=20110317062041
+simpanel.but.plotexport.es.text.md5=aR5iP+J13L4DCfktLRVN/Q\=\=
+simpanel.but.plotexport.fr.text.changed=20110317061957
+simpanel.but.plotexport.fr.text.md5=g2zMTOErCFb1ltbSo2QxPw\=\=
+simpanel.but.runsimulations..text.changed=20110317061957
+simpanel.but.runsimulations..text.md5=m95MqFZtpNCNlSSaMaDS/w\=\=
+simpanel.but.runsimulations.es.text.changed=20110317062041
+simpanel.but.runsimulations.es.text.md5=tQ11Ur0YZGYGFdN+kdKF9Q\=\=
+simpanel.but.runsimulations.fr.text.changed=20110317061957
+simpanel.but.runsimulations.fr.text.md5=2srBEDIV2CNbBLU+a6dJHg\=\=
+simpanel.but.ttip.deletesim..text.changed=20110317061957
+simpanel.but.ttip.deletesim..text.md5=zkSMlYw/0X62OPwb2m/sRQ\=\=
+simpanel.but.ttip.deletesim.es.text.changed=20110317062041
+simpanel.but.ttip.deletesim.es.text.md5=WsFOH2h277a9Okrf5KqT4A\=\=
+simpanel.but.ttip.deletesim.fr.text.changed=20110317061957
+simpanel.but.ttip.deletesim.fr.text.md5=Yz7xadEaqNHyBfrGsh2DGQ\=\=
+simpanel.but.ttip.editsim..text.changed=20110317061957
+simpanel.but.ttip.editsim..text.md5=JIpzmtffG8qLPSIq19x9Kg\=\=
+simpanel.but.ttip.editsim.es.text.changed=20110317062041
+simpanel.but.ttip.editsim.es.text.md5=QU6BSVJTBkJViKAfNtq1aA\=\=
+simpanel.but.ttip.editsim.fr.text.changed=20110317061957
+simpanel.but.ttip.editsim.fr.text.md5=hhZTpyTr67B3G+Km+rlzRw\=\=
+simpanel.but.ttip.newsimulation..text.changed=20110317061957
+simpanel.but.ttip.newsimulation..text.md5=KJvY+wmPi70jlcYHXVlzIg\=\=
+simpanel.but.ttip.newsimulation.es.text.changed=20110317062041
+simpanel.but.ttip.newsimulation.es.text.md5=KmMoGsi6+MClKRJmrCk3Cw\=\=
+simpanel.but.ttip.newsimulation.fr.text.changed=20110317061957
+simpanel.but.ttip.newsimulation.fr.text.md5=FTrdb2+AgLHmgylJ4P7rxw\=\=
+simpanel.but.ttip.runsimu..text.changed=20110317061957
+simpanel.but.ttip.runsimu..text.md5=1SNNUlCogDeoVuyvPw7ttg\=\=
+simpanel.but.ttip.runsimu.es.text.changed=20110317062041
+simpanel.but.ttip.runsimu.es.text.md5=bo4qFg7HD94rrnZU3gh/fw\=\=
+simpanel.but.ttip.runsimu.fr.text.changed=20110317061957
+simpanel.but.ttip.runsimu.fr.text.md5=PI4EMxgjVoJlClcfdThPUg\=\=
+simpanel.checkbox.donotask..text.changed=20110317061957
+simpanel.checkbox.donotask..text.md5=xMeqCOFI2ELVUxa8B2WjDA\=\=
+simpanel.checkbox.donotask.es.text.changed=20110317062041
+simpanel.checkbox.donotask.es.text.md5=bP1T4Pbn3tIsgyg5zbh5Hw\=\=
+simpanel.checkbox.donotask.fr.text.changed=20110317061957
+simpanel.checkbox.donotask.fr.text.md5=V49H2SSvKhMBpOVtwMoaIA\=\=
+simpanel.col.Apogee..text.changed=20110317061957
+simpanel.col.Apogee..text.md5=QL6gVpnPUZKBPZU18+Unyg\=\=
+simpanel.col.Apogee.es.text.changed=20110317062041
+simpanel.col.Apogee.es.text.md5=+Tu3UZc1z0OfpeO/nohCyA\=\=
+simpanel.col.Apogee.fr.text.changed=20110317061957
+simpanel.col.Apogee.fr.text.md5=+AS6Lmac9yoej6GMJZ2KZA\=\=
+simpanel.col.Flighttime..text.changed=20110317061957
+simpanel.col.Flighttime..text.md5=ZpvARs0OVYcWCN74zRBz2g\=\=
+simpanel.col.Flighttime.es.text.changed=20110317062041
+simpanel.col.Flighttime.es.text.md5=MlESxYpJD8vXowBF0m8PIQ\=\=
+simpanel.col.Flighttime.fr.text.changed=20110317061957
+simpanel.col.Flighttime.fr.text.md5=nM5gMTT5mrjDP3Jd2Kf/Lg\=\=
+simpanel.col.Groundhitvelocity..text.changed=20110317061957
+simpanel.col.Groundhitvelocity..text.md5=J2m4MqfXN/ePc6F9K1kejg\=\=
+simpanel.col.Groundhitvelocity.es.text.changed=20110317062041
+simpanel.col.Groundhitvelocity.es.text.md5=J2m4MqfXN/ePc6F9K1kejg\=\=
+simpanel.col.Groundhitvelocity.fr.text.changed=20110317061957
+simpanel.col.Groundhitvelocity.fr.text.md5=q4vpZlkk7WcoSxo2Fqj+zQ\=\=
+simpanel.col.Maxacceleration..text.changed=20110317061957
+simpanel.col.Maxacceleration..text.md5=2Gf0gCV1HqGUyjhgEHQBow\=\=
+simpanel.col.Maxacceleration.es.text.changed=20110317062041
+simpanel.col.Maxacceleration.es.text.md5=rPOe5QhK41Xj0xutD8AUBw\=\=
+simpanel.col.Maxacceleration.fr.text.changed=20110317061957
+simpanel.col.Maxacceleration.fr.text.md5=CLucL4pm4PYi8N1fYOyPlA\=\=
+simpanel.col.Maxvelocity..text.changed=20110317061957
+simpanel.col.Maxvelocity..text.md5=1EsSTGoM/aVRY9TxY4jp5A\=\=
+simpanel.col.Maxvelocity.es.text.changed=20110317062041
+simpanel.col.Maxvelocity.es.text.md5=hSgP0YX/FFcv1hBZe2K67A\=\=
+simpanel.col.Maxvelocity.fr.text.changed=20110317061957
+simpanel.col.Maxvelocity.fr.text.md5=bcjaM1jn1SZZTVlLnAv8tw\=\=
+simpanel.col.Motors..text.changed=20110317061957
+simpanel.col.Motors..text.md5=Kz7jMFS+z8votTtGrbVkCA\=\=
+simpanel.col.Motors.es.text.changed=20110317062041
+simpanel.col.Motors.es.text.md5=u+FtKfkep6kORQsFrHvQew\=\=
+simpanel.col.Motors.fr.text.changed=20110317061957
+simpanel.col.Motors.fr.text.md5=jpNwdavDIl8hqV2r84smeA\=\=
+simpanel.col.Name..text.changed=20110317061957
+simpanel.col.Name..text.md5=Se4whzSOjUTh/toZF0Q5hw\=\=
+simpanel.col.Name.es.text.changed=20110317062041
+simpanel.col.Name.es.text.md5=R3e7qqCuvhBGBrd5R9DiLQ\=\=
+simpanel.col.Name.fr.text.changed=20110317061957
+simpanel.col.Name.fr.text.md5=1HALaXpU+9Q6GmE9MmlOfw\=\=
+simpanel.col.Timetoapogee..text.changed=20110317061957
+simpanel.col.Timetoapogee..text.md5=mtYrz6F711No33VkFnBQZw\=\=
+simpanel.col.Timetoapogee.es.text.changed=20110317062041
+simpanel.col.Timetoapogee.es.text.md5=QbiyC5KDrFJIJe+TTAMPww\=\=
+simpanel.col.Timetoapogee.fr.text.changed=20110317061957
+simpanel.col.Timetoapogee.fr.text.md5=6zliJqHCOJNr/gEX7niwqw\=\=
+simpanel.dlg.lbl.DeleteSim1..text.changed=20110317061957
+simpanel.dlg.lbl.DeleteSim1..text.md5=DNJ2o5oEGUaGa7yIHcFAiw\=\=
+simpanel.dlg.lbl.DeleteSim1.es.text.changed=20110317062041
+simpanel.dlg.lbl.DeleteSim1.es.text.md5=JJiDlPhnaQrc0nPucCJvBw\=\=
+simpanel.dlg.lbl.DeleteSim1.fr.text.changed=20110317061957
+simpanel.dlg.lbl.DeleteSim1.fr.text.md5=LS+L7uekpUZWjFf5fcS8pg\=\=
+simpanel.dlg.lbl.DeleteSim2..text.changed=20110317061957
+simpanel.dlg.lbl.DeleteSim2..text.md5=82qtdSO4rsRCe24wWOe1UQ\=\=
+simpanel.dlg.lbl.DeleteSim2.es.text.changed=20110317062041
+simpanel.dlg.lbl.DeleteSim2.es.text.md5=JJcmRbw0W63auwokuAIrBg\=\=
+simpanel.dlg.lbl.DeleteSim2.fr.text.changed=20110317061957
+simpanel.dlg.lbl.DeleteSim2.fr.text.md5=dMTK4JEtD9GD3Y7btp7rVg\=\=
+simpanel.dlg.lbl.DeleteSim3..text.changed=20110317061957
+simpanel.dlg.lbl.DeleteSim3..text.md5=E2ccIhH6w7qOFhOsd4212A\=\=
+simpanel.dlg.lbl.DeleteSim3.es.text.changed=20110317062041
+simpanel.dlg.lbl.DeleteSim3.es.text.md5=wuqLQ5evaBlsocAciNlqiQ\=\=
+simpanel.dlg.lbl.DeleteSim3.fr.text.changed=20110317061957
+simpanel.dlg.lbl.DeleteSim3.fr.text.md5=DAv7od/Vxf0J1c/DIufXOA\=\=
+simpanel.lbl.defpref..text.changed=20110317061957
+simpanel.lbl.defpref..text.md5=cYQgfnoeRCK2h69YzRSoxw\=\=
+simpanel.lbl.defpref.es.text.changed=20110317062041
+simpanel.lbl.defpref.es.text.md5=aowOYzuw8jkCMXYJstMdIA\=\=
+simpanel.lbl.defpref.fr.text.changed=20110317061957
+simpanel.lbl.defpref.fr.text.md5=/GBWC2EHRR28/kXEhymIgg\=\=
+simplotpanel.AUTO_NAME..text.changed=20110317061957
+simplotpanel.AUTO_NAME..text.md5=BrkoHjltsAIBC94d5XJi6w\=\=
+simplotpanel.AUTO_NAME.es.text.changed=20110317062041
+simplotpanel.AUTO_NAME.es.text.md5=BrkoHjltsAIBC94d5XJi6w\=\=
+simplotpanel.AUTO_NAME.fr.text.changed=20110317061957
+simplotpanel.AUTO_NAME.fr.text.md5=BrkoHjltsAIBC94d5XJi6w\=\=
+simplotpanel.CUSTOM..text.changed=20110317061957
+simplotpanel.CUSTOM..text.md5=kFicR/BuuXHVSFkfI8KFrw\=\=
+simplotpanel.CUSTOM.es.text.changed=20110317062041
+simplotpanel.CUSTOM.es.text.md5=kFicR/BuuXHVSFkfI8KFrw\=\=
+simplotpanel.CUSTOM.fr.text.changed=20110317061957
+simplotpanel.CUSTOM.fr.text.md5=3Id+tukKcqfg99CxlFASqw\=\=
+simplotpanel.Desc..text.changed=20110317061957
+simplotpanel.Desc..text.md5=0ikxxUHRRh1qvRDnn7Dz+Q\=\=
+simplotpanel.Desc.es.text.changed=20110317062041
+simplotpanel.Desc.es.text.md5=gGp8gZ7wyQMssreUT2nh3g\=\=
+simplotpanel.Desc.fr.text.changed=20110317061957
+simplotpanel.Desc.fr.text.md5=uSQbpG7UkFdEgBR4nFsZtA\=\=
+simplotpanel.LEFT_NAME..text.changed=20110317061957
+simplotpanel.LEFT_NAME..text.md5=lF1eIzz31iQPa3g7NqN0/w\=\=
+simplotpanel.LEFT_NAME.es.text.changed=20110317062041
+simplotpanel.LEFT_NAME.es.text.md5=lF1eIzz31iQPa3g7NqN0/w\=\=
+simplotpanel.LEFT_NAME.fr.text.changed=20110317061957
+simplotpanel.LEFT_NAME.fr.text.md5=lu3JSK24I9UkGEyR6dlwkQ\=\=
+simplotpanel.OptionPane.lbl1..text.changed=20110317061957
+simplotpanel.OptionPane.lbl1..text.md5=jT4aRLzCSe+JHKoOckQlcA\=\=
+simplotpanel.OptionPane.lbl1.es.text.changed=20110317062041
+simplotpanel.OptionPane.lbl1.es.text.md5=yO9NwgqL6KtUBMcYJ3hXfQ\=\=
+simplotpanel.OptionPane.lbl1.fr.text.changed=20110317061957
+simplotpanel.OptionPane.lbl1.fr.text.md5=Ao+RUp62+5JAkeV4+W+tBA\=\=
+simplotpanel.OptionPane.lbl2..text.changed=20110317061957
+simplotpanel.OptionPane.lbl2..text.md5=R4jGZJNSnlSLtc4sx7QjrQ\=\=
+simplotpanel.OptionPane.lbl2.es.text.changed=20110317062041
+simplotpanel.OptionPane.lbl2.es.text.md5=YJv2HLwKAo6fQgypWj76Yg\=\=
+simplotpanel.OptionPane.lbl2.fr.text.changed=20110317061957
+simplotpanel.OptionPane.lbl2.fr.text.md5=KsVhySzMsfP4wnKYhfilxQ\=\=
+simplotpanel.RIGHT_NAME..text.changed=20110317061957
+simplotpanel.RIGHT_NAME..text.md5=krCcfEjFIMPFXkl4ddpDfA\=\=
+simplotpanel.RIGHT_NAME.es.text.changed=20110317062041
+simplotpanel.RIGHT_NAME.es.text.md5=krCcfEjFIMPFXkl4ddpDfA\=\=
+simplotpanel.RIGHT_NAME.fr.text.changed=20110317061957
+simplotpanel.RIGHT_NAME.fr.text.md5=vRg7dq1XHZUnBZDLefEO/Q\=\=
+simplotpanel.but.All..text.changed=20110317061957
+simplotpanel.but.All..text.md5=sclMovvD54/DAGnI0PAWgA\=\=
+simplotpanel.but.All.es.text.changed=20110317062041
+simplotpanel.but.All.es.text.md5=MmMMqRPQHE/ucbvo7yjt6g\=\=
+simplotpanel.but.All.fr.text.changed=20110317061957
+simplotpanel.but.All.fr.text.md5=PdFuE5Jt3cdNd/CYtdHMiQ\=\=
+simplotpanel.but.NewYaxisplottype..text.changed=20110317061957
+simplotpanel.but.NewYaxisplottype..text.md5=kf4ROjXkNKywG1atmMwwcA\=\=
+simplotpanel.but.NewYaxisplottype.es.text.changed=20110317062041
+simplotpanel.but.NewYaxisplottype.es.text.md5=67XS22FCXSFtZjeWHwczzw\=\=
+simplotpanel.but.NewYaxisplottype.fr.text.changed=20110317061957
+simplotpanel.but.NewYaxisplottype.fr.text.md5=FPb4Q2dBF35MMYNZGRIFYg\=\=
+simplotpanel.but.None..text.changed=20110317061957
+simplotpanel.but.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\=
+simplotpanel.but.None.es.text.changed=20110317062041
+simplotpanel.but.None.es.text.md5=Nf5kEOlwQ4ZBbP354K6mnQ\=\=
+simplotpanel.but.None.fr.text.changed=20110317061957
+simplotpanel.but.None.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\=
+simplotpanel.but.Plotflight..text.changed=20110317061957
+simplotpanel.but.Plotflight..text.md5=woEHOjBkZsv+iAie65esxA\=\=
+simplotpanel.but.Plotflight.es.text.changed=20110317062041
+simplotpanel.but.Plotflight.es.text.md5=T+ar56E3y1RR71q7NE3h/Q\=\=
+simplotpanel.but.Plotflight.fr.text.changed=20110317061957
+simplotpanel.but.Plotflight.fr.text.md5=a1CGSNf8H1m+nE8XkI3Ahg\=\=
+simplotpanel.but.ttip.Removethisplot..text.changed=20110317061957
+simplotpanel.but.ttip.Removethisplot..text.md5=HHkN25V0jRevbAclPEhMrg\=\=
+simplotpanel.but.ttip.Removethisplot.es.text.changed=20110317062041
+simplotpanel.but.ttip.Removethisplot.es.text.md5=VxvwIN66jTNO9mklpnfEuA\=\=
+simplotpanel.but.ttip.Removethisplot.fr.text.changed=20110317061957
+simplotpanel.but.ttip.Removethisplot.fr.text.md5=WUWW3LaQTN43FMXuiDnhyg\=\=
+simplotpanel.lbl.Axis..text.changed=20110317061957
+simplotpanel.lbl.Axis..text.md5=HJg5GUyMUD0EB+S4reTo7Q\=\=
+simplotpanel.lbl.Axis.es.text.changed=20110317062041
+simplotpanel.lbl.Axis.es.text.md5=C/W/H0VgwZY89oRs9wW/0A\=\=
+simplotpanel.lbl.Axis.fr.text.changed=20110317061957
+simplotpanel.lbl.Axis.fr.text.md5=SkMuRibEe2vF/woB0QZLew\=\=
+simplotpanel.lbl.Flightevents..text.changed=20110317061957
+simplotpanel.lbl.Flightevents..text.md5=vBX5ufHJyCExqtWr7FknJA\=\=
+simplotpanel.lbl.Flightevents.es.text.changed=20110317062041
+simplotpanel.lbl.Flightevents.es.text.md5=ziprLgKqb+LF6mdqk1XQbw\=\=
+simplotpanel.lbl.Flightevents.fr.text.changed=20110317061957
+simplotpanel.lbl.Flightevents.fr.text.md5=UnRKvl4A5FBKDb63czGLCg\=\=
+simplotpanel.lbl.Presetplotconf..text.changed=20110317061957
+simplotpanel.lbl.Presetplotconf..text.md5=82hXH5JjMrLKBuYKByp98Q\=\=
+simplotpanel.lbl.Presetplotconf.es.text.changed=20110317062041
+simplotpanel.lbl.Presetplotconf.es.text.md5=FlDckDtt5y6jlO/WnyPzyg\=\=
+simplotpanel.lbl.Presetplotconf.fr.text.changed=20110317061957
+simplotpanel.lbl.Presetplotconf.fr.text.md5=Z0TZpAlUuS9eXYMcgrAEeA\=\=
+simplotpanel.lbl.Unit..text.changed=20110317061957
+simplotpanel.lbl.Unit..text.md5=n5A5gOdvQs9AGnRgw98Lyg\=\=
+simplotpanel.lbl.Unit.es.text.changed=20110317062041
+simplotpanel.lbl.Unit.es.text.md5=H5ItOdoQlHBhnqw4atiiXg\=\=
+simplotpanel.lbl.Unit.fr.text.changed=20110317061957
+simplotpanel.lbl.Unit.fr.text.md5=iWbN5CD+f63gN+GKJUxKDw\=\=
+simplotpanel.lbl.Xaxistype..text.changed=20110317061957
+simplotpanel.lbl.Xaxistype..text.md5=yM5y+uBNeOH9SZ+ehWRJrA\=\=
+simplotpanel.lbl.Xaxistype.es.text.changed=20110317062041
+simplotpanel.lbl.Xaxistype.es.text.md5=fCclLM7nHcvtFm1Zt4LhTw\=\=
+simplotpanel.lbl.Xaxistype.fr.text.changed=20110317061957
+simplotpanel.lbl.Xaxistype.fr.text.md5=BV/uWr1VCQpTxA6nX61a1g\=\=
+simplotpanel.lbl.Yaxistypes..text.changed=20110317061957
+simplotpanel.lbl.Yaxistypes..text.md5=MI+W8ANOfoGVBShMcs4kxg\=\=
+simplotpanel.lbl.Yaxistypes.es.text.changed=20110317062041
+simplotpanel.lbl.Yaxistypes.es.text.md5=KCtREs5yRySortrWW4XHFA\=\=
+simplotpanel.lbl.Yaxistypes.fr.text.changed=20110317061957
+simplotpanel.lbl.Yaxistypes.fr.text.md5=cou5rldbFlcgi6Xu4KP8hw\=\=
+testkey..text.changed=20110317155038
+testkey..text.md5=kcBM0l2cxfxEt+QIbgItTQ\=\=
+testkey.fr.text.author=sampo
+testkey.fr.text.changed=20110317154252
+testkey.fr.text.md5=aN8Ll4OTQsS8F7SaCnbhxw\=\=
index 9defd41b64354d4ecdb7bff8d57c781962cfc4e7..fcabdad2916c7c830abe78a17253a86517ca9a14 100644 (file)
 #
 # English base translation file
 #
+# Should you need to add new logical keys here is the proposed method
+#
+# className.ComponantType.componantName
+#
 
 
 ! Set to the name of the current translation file (used for debugging purposes)
 debug.currentFile = messages.properties
 
+! RocketActions
+RocketActions.checkbox.Donotaskmeagain = Do not ask me again
+RocketActions.lbl.Youcanchangedefop = You can change the default operation in the preferences.
+RocketActions.showConfirmDialog.lbl1 = Delete the selected simulations?
+RocketActions.showConfirmDialog.lbl2 = <html><i>This operation cannot be undone.</i>
+RocketActions.showConfirmDialog.title = Delete simulations
+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.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
+RocketActions.CopyAct.Copy = Copy
+RocketActions.CopyAct.ttip.Copy = Copy this component (and subcomponents) to the clipboard.
+RocketActions.PasteAct.Paste = Paste
+RocketActions.PasteAct.ttip.Paste = Paste the component or simulation on the clipboard to the design.
+RocketActions.EditAct.Edit = Edit
+RocketActions.EditAct.ttip.Edit = Edit the selected component.
+RocketActions.NewStageAct.Newstage = New stage
+RocketActions.NewStageAct.ttip.Newstage = Add a new stage to the rocket design.
+RocketActions.ActBoosterstage = Booster stage
+RocketActions.MoveUpAct.Moveup = Move up
+RocketActions.MoveUpAct.ttip.Moveup = Move this component upwards.
+RocketActions.MoveDownAct.Movedown = Move down
+RocketActions.MoveDownAct.ttip.Movedown = Move this component downwards.
+
+! RocketPanel
+RocketPanel.FigTypeAct.Sideview = Side view
+RocketPanel.FigTypeAct.ttip.Sideview = Side view
+RocketPanel.FigTypeAct.Backview = Back view
+RocketPanel.FigTypeAct.ttip.Backview = Rear view 
+RocketPanel.lbl.Motorcfg = Motor configuration:
+RocketPanel.lbl.infoMessage = <html>Click to select &nbsp;&nbsp; Shift+click to select other &nbsp;&nbsp; Double-click to edit &nbsp;&nbsp; Click+drag to move
+
+
+! BasicFrame
+BasicFrame.SimpleFileFilter1 = All rocket designs (*.ork; *.rkt)
+BasicFrame.SimpleFileFilter2 = OpenRocket designs (*.ork)
+BasicFrame.SimpleFileFilter3 = RockSim designs (*.rkt)
+BasicFrame.tab.Rocketdesign = Rocket design
+BasicFrame.tab.Flightsim = Flight simulations
+BasicFrame.title.Addnewcomp = Add new component
+BasicFrame.item.Openrocketdesign = Open a rocket design
+BasicFrame.item.Openexamplerocketdesign = Open an example rocket design
+BasicFrame.item.SavecurRocketdesign = Save the current rocket design
+BasicFrame.item.SavecurRocketdesnewfile = Save the current rocket design to a new file
+BasicFrame.item.Printpart = Print parts list and fin template
+BasicFrame.item.Closedesign = Close the current rocket design
+BasicFrame.item.Quitprogram = Quit the program
+BasicFrame.menu.Rocketedt = Rocket editing
+BasicFrame.dlg.lbl1 = Design '
+BasicFrame.dlg.lbl2 = ' has not been saved.
+BasicFrame.dlg.lbl3 = Do you want to save it?
+BasicFrame.dlg.title = Design not saved
+BasicFrame.StageName.Sustainer = Sustainer
+BasicFrame.WarningDialog.txt1 = The following problems were encountered while opening
+BasicFrame.WarningDialog.txt2 = Some design features may not have been loaded correctly.
+BasicFrame.WarningDialog.title = Warnings while opening file
 
 ! Labels used in buttons of dialog windows
 button.ok = OK
 button.cancel = Cancel
 button.close = Close
 
+! Common labels used in buttons of dialog windows
+dlg.but.ok = OK
+dlg.but.cancel = Cancel
+dlg.but.close = Close
+
+
+! General file type names
+filetypes.pdf = PDF files
+
+
+! About Dialog
+AboutDialog.lbl.version = Version
+! The texts below provide additional credits for the translation maintainer
+! - In AboutDialog.lbl.translation replace "English" with the current language.
+! - AboutDialog.lbl.translator is the translator / group name (may be empty)
+! - AboutDialog.lbl.translatorWebsite is a URL to the translator / group (may be empty)
+! - AboutDialog.lbl.translatorIcon is the file name of an icon under pix/translators/ (may be empty)
+AboutDialog.lbl.translation = English translation by:
+AboutDialog.lbl.translator = 
+AboutDialog.lbl.translatorWebsite = 
+AboutDialog.lbl.translatorIcon = 
+
+
+! Print dialog
+PrintDialog.title = Print or export
+PrintDialog.but.previewAndPrint = Preview & Print
+PrintDialog.checkbox.showByStage = Show by stage
+PrintDialog.lbl.selectElements = Select elements to include:
+printdlg.but.saveaspdf = Save as PDF
+printdlg.but.preview = Preview
+printdlg.but.settings = Settings
+PrintDialog.error.preview.title = Unable to open preview
+PrintDialog.error.preview.desc1 = Unable to open PDF preview.
+PrintDialog.error.preview.desc2 = Please use the "Save as PDF" option instead.
+
+
+! Bug Report dialog
+bugreport.dlg.title = Bug report
+bugreport.dlg.but.Sendbugreport = Send bug report
+bugreport.dlg.but.Sendbugreport.Ttip = Automatically send the bug report to the OpenRocket developers.
+bugreport.dlg.successmsg1 = Bug report successfully sent.
+bugreport.dlg.successmsg2 = Thank you for helping make OpenRocket better!
+bugreport.dlg.successmsg3 = Bug report sent
+bugreport.dlg.connectedInternet = <html>If connected to the Internet, you can simply click <em>Send bug report</em>.
+bugreport.dlg.otherwise = Otherwise, send the text below to the address:
+bugreport.lbl.Theinformation = The information above may be included in a public bug report.  Make sure it does not contain any sensitive information you do not want to be made public.
+bugreport.dlg.failedmsg1 = OpenRocket was unable to send the bug report:
+bugreport.dlg.failedmsg2 = Please send the report manually to
+bugreport.dlg.failedmsg3 = Error sending report
+bugreport.reportDialog.txt = <html><b>You can report a bug in OpenRocket by filling in and submitting the form below.</b><br>You can also report bugs and include attachments on the project web site.
+bugreport.reportDialog.txt2 = <html><b>Please include a short description about what you were doing when the exception occurred.</b>
+
+
+! Debug log dialog
+debuglogdlg.but.clear = Clear
+debuglogdlg.OpenRocketdebuglog = OpenRocket debug log
+debuglogdlg.Displayloglines = Display log lines:
+debuglogdlg.Follow = Follow
+debuglogdlg.col.Time = Time
+debuglogdlg.col.Level = Level
+debuglogdlg.col.Location = Location
+debuglogdlg.col.Message = Message
+debuglogdlg.lbl.Loglinenbr = Log line number:
+debuglogdlg.lbl.Time = Time:
+debuglogdlg.lbl.Level = Level:
+
+
+! Edit Motor configuration dialog
+edtmotorconfdlg.but.removemotor = Remove motor
+edtmotorconfdlg.but.Selectmotor = Select motor
+edtmotorconfdlg.but.Removeconfiguration = Remove configuration
+edtmotorconfdlg.but.Newconfiguration = New configuration
+edtmotorconfdlg.lbl.Motormounts = <html><b>Motor mounts:</b>
+edtmotorconfdlg.title.Editmotorconf = Edit motor configurations
+edtmotorconfdlg.selectcomp = <html>Select which components function as motor mounts:
+edtmotorconfdlg.lbl.Motorconfig = <html><b>Motor configurations:</b>
+edtmotorconfdlg.lbl.Configname = Configuration name:
+edtmotorconfdlg.lbl.Leavenamedefault = Leave name empty for default.
+
+! Example design dialog
+exdesigndlg.but.open = Open
+exdesigndlg.lbl.Selectexample = Select example designs to open:
+exdesigndlg.lbl.Openexampledesign = Open example design
+exdesigndlg.lbl.Exampledesignsnotfound = Example designs could not be found.
+exdesigndlg.lbl.Examplesnotfound = Examples not found
+
+
+! Material edit panel
+matedtpan.but.new = New
+matedtpan.but.edit = Edit
+matedtpan.but.delete = Delete
+matedtpan.but.revertall = Revert all
+matedtpan.col.Material = Material
+matedtpan.col.Type = Type
+matedtpan.col.Density = Density
+matedtpan.col.but.ttip.New = Add a new material
+matedtpan.title.Addcustmaterial = Add a custom material
+matedtpan.but.ttip.edit = Edit an existing material
+matedtpan.title.Editmaterial = Edit material
+matedtpan.title2.Editmaterial = The built-in materials cannot be modified.
+matedtpan.but.ttip.delete = Delete a user-defined material
+matedtpan.but.ttip.revertall = Delete all user-defined materials
+matedtpan.title.Deletealluser-defined = Delete all user-defined materials?
+matedtpan.title.Revertall = Revert all?
+matedtpan.lbl.edtmaterials = <html><i>Editing materials will not affect existing rocket designs.</i>
+
+!MaterialModel
+MaterialModel.title.Material = Material
+MaterialModel.title.Defcustmat = Define custom material
+
+
+! Preference dialog
+pref.dlg.but.add = Add
+pref.dlg.but.reset = Reset
+pref.dlg.but.checknow = Check now
+pref.dlg.but.defaultmetric = Default metric
+pref.dlg.but.defaultimperial = Default imperial
+pref.dlg.title.Preferences = Preferences 
+pref.dlg.tab.Units = Units
+pref.dlg.tab.Defaultunits = Default units
+pref.dlg.tab.Materials = Materials
+pref.dlg.tab.Custommaterials = Custom materials
+pref.dlg.tab.Options = Options
+pref.dlg.tab.Miscellaneousoptions = Miscellaneous options
+pref.dlg.lbl.Positiontoinsert = Position to insert new body components:
+pref.dlg.lbl.Confirmdeletion = Confirm deletion of simulations:
+pref.dlg.lbl.User-definedthrust = User-defined thrust curves:
+pref.dlg.Allthrustcurvefiles = All thrust curve files (*.eng; *.rse; *.zip; directories)
+pref.dlg.RASPfiles = RASP motor files (*.eng)
+pref.dlg.RockSimfiles = RockSim engine files (*.rse)
+pref.dlg.ZIParchives = ZIP archives (*.zip)
+pref.dlg.checkbox.Checkupdates = Check for software updates at startup
+pref.dlg.ttip.Checkupdatesnow = Check for software updates now
+pref.dlg.lbl.Selectprefunits = Select your preferred units:
+pref.dlg.lbl.Rocketdimensions = Rocket dimensions:
+pref.dlg.lbl.Linedensity = Line density:
+pref.dlg.lbl.Motordimensions = Motor dimensions:
+pref.dlg.lbl.Surfacedensity = Surface density:
+pref.dlg.lbl.Distance = Distance:
+pref.dlg.lbl.Bulkdensity = Bulk density::
+pref.dlg.lbl.Velocity = Velocity:
+pref.dlg.lbl.Surfaceroughness = Surface roughness:
+pref.dlg.lbl.Acceleration = Acceleration:
+pref.dlg.lbl.Area = Area:
+pref.dlg.lbl.Mass = Mass:
+pref.dlg.lbl.Angle = Angle:
+pref.dlg.lbl.Force = Force:
+pref.dlg.lbl.Rollrate = Roll rate:
+pref.dlg.lbl.Totalimpulse = Total impulse:
+pref.dlg.lbl.Temperature = Temperature:
+pref.dlg.lbl.Momentofinertia = Moment of inertia:
+pref.dlg.lbl.Pressure = Pressure:
+pref.dlg.lbl.Stability = Stability:
+pref.dlg.lbl.effect1 = The effects will take place the next time you open a window.
+pref.dlg.lbl.Checkingupdates = Checking for updates...
+pref.dlg.lbl.msg1 = An error occurred while communicating with the server.
+pref.dlg.lbl.msg2 = Unable to retrieve update information
+pref.dlg.lbl.msg3 = You are running the latest version of OpenRocket.
+pref.dlg.lbl.msg4 = No updates available
+pref.dlg.PrefChoiseSelector1 = Always ask
+pref.dlg.PrefChoiseSelector2 = Insert in middle
+pref.dlg.PrefChoiseSelector3 = Add to end
+pref.dlg.PrefBooleanSelector1 = Delete
+pref.dlg.PrefBooleanSelector2 = Confirm
+pref.dlg.Add = Add
+pref.dlg.DescriptionArea.Adddirectories = Add directories, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external thrust curves.  Changes will take effect the next time you start OpenRocket.
+
+
+! Simulation edit dialog
+simedtdlg.but.runsimulation = Run simulation
+simedtdlg.but.resettodefault = Reset to default
+simedtdlg.but.add = Add
+simedtdlg.but.remove = Remove
+simedtdlg.title.Editsim = Edit simulation
+simedtdlg.lbl.Simname = Simulation name:
+simedtdlg.tab.Launchcond = Launch conditions
+simedtdlg.tab.Simopt = Simulation options
+simedtdlg.tab.Plotdata = Plot data
+simedtdlg.tab.Exportdata = Export data
+simedtdlg.lbl.Motorcfg = Motor configuration:
+simedtdlg.lbl.ttip.Motorcfg = Select the motor configuration to use.
+simedtdlg.combo.ttip.motorconf = Select the motor configuration to use.
+simedtdlg.lbl.Wind = Wind
+simedtdlg.lbl.Averwindspeed = Average windspeed:
+simedtdlg.lbl.ttip.Averwindspeed = The average windspeed relative to the ground.
+simedtdlg.lbl.Stddeviation = Standard deviation:
+simedtdlg.lbl.ttip.Stddeviation = <html>The standard deviation of the windspeed.<br>The windspeed is within twice the standard deviation from the average for 95% of the time.
+simedtdlg.lbl.Turbulenceintensity = Turbulence intensity:
+simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>The turbulence intensity is the standard deviation divided by the average windspeed.<br>
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Typical values range from
+simedtdlg.lbl.ttip.Turbulenceintensity3 = to
+simedtdlg.border.Atmoscond = Atmospheric conditions
+simedtdlg.checkbox.InterStdAtmosphere = Use International Standard Atmosphere
+simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Select to use the International Standard Atmosphere model.<br>This model has a temperature of
+simedtdlg.checkbox.ttip.InterStdAtmosphere2 = and a pressure of
+simedtdlg.checkbox.ttip.InterStdAtmosphere3 = at sea level.
+simedtdlg.lbl.Temperature = Temperature:
+simedtdlg.lbl.ttip.Temperature = The temperature at the launch site.
+simedtdlg.lbl.Pressure = Pressure:
+simedtdlg.lbl.ttip.Pressure = The atmospheric pressure at the launch site.
+simedtdlg.lbl.Launchsite = Launch site
+simedtdlg.lbl.Latitude = Latitude:
+simedtdlg.lbl.ttip.Latitude = <html>The launch site latitude affects the gravitational pull of Earth.<br>Positive values are on the Northern hemisphere, negative values on the Southern hemisphere.
+simedtdlg.lbl.Altitude = Altitude:
+simedtdlg.lbl.ttip.Altitude = <html>The launch altitude above mean sea level.<br>This affects the position of the rocket in the atmospheric model.
+simedtdlg.border.Launchrod = Launch rod
+simedtdlg.lbl.Length = Length:
+simedtdlg.lbl.ttip.Length = The length of the launch rod.
+simedtdlg.lbl.Angle = Angle:
+simedtdlg.lbl.ttip.Angle = The angle of the launch rod from vertical.
+simedtdlg.lbl.Direction = Direction:
+simedtdlg.lbl.ttip.Direction1 = <html>Direction of the launch rod relative to the wind.<br>
+simedtdlg.lbl.ttip.Direction2 =  = towards the wind,
+simedtdlg.lbl.ttip.Direction3 = = downwind.
+simedtdlg.border.Simopt = Simulator options
+simedtdlg.lbl.Calcmethod = Calculation method:
+simedtdlg.lbl.ttip.Calcmethod = <html>The Extended Barrowman method calculates aerodynamic forces according <br>to the Barrowman equations extended to accommodate more components.
+simedtdlg.lbl.ExtBarrowman = Extended Barrowman
+simedtdlg.lbl.Simmethod = Simulation method:
+simedtdlg.lbl.ttip.Simmethod1 = <html>The six degree-of-freedom simulator allows the rocket total freedom during flight.<br>
+simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4<sup>th</sup> order Runge-Kutta 4 numerical integration.
+simedtdlg.lbl.Timestep = Time step:
+simedtdlg.lbl.ttip.Timestep1 = <html>The time between simulation steps.<br>A smaller time step results in a more accurate but slower simulation.<br>
+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.longA2 = For details on writing simulation listeners, see the OpenRocket technical documentation.
+simedtdlg.lbl.Curlist = Current listeners:
+simedtdlg.lbl.Addsimlist = Add simulation listener
+simedtdlg.lbl.Noflightdata = No flight data available.
+simedtdlg.lbl.runsimfirst = Please run the simulation first.
+simedtdlg.chart.Simflight = Simulated flight
+simedtdlg.dlg.Simres = Simulation results
+simedtdlg.IntensityDesc.None = None
+simedtdlg.IntensityDesc.Verylow = Very low
+simedtdlg.IntensityDesc.Low = Low
+simedtdlg.IntensityDesc.Medium = Medium
+simedtdlg.IntensityDesc.High = High
+simedtdlg.IntensityDesc.Veryhigh = Very high
+simedtdlg.IntensityDesc.Extreme = Extreme
+
+
+
+! Simulation Panel
+simpanel.but.newsimulation = New simulation
+simpanel.but.editsimulation = Edit simulation
+simpanel.but.runsimulations = Run simulations
+simpanel.but.deletesimulations = Delete simulations
+simpanel.but.plotexport = Plot / export
+simpanel.but.ttip.newsimulation = Add a new simulation
+simpanel.but.ttip.editsim = Edit the selected simulation
+simpanel.but.ttip.runsimu = Re-run the selected simulations
+simpanel.but.ttip.deletesim = Delete the selected simulations
+simpanel.checkbox.donotask = Do not ask me again
+simpanel.lbl.defpref = You can change the default operation in the preferences.
+simpanel.dlg.lbl.DeleteSim1 = Delete the selected simulations?
+simpanel.dlg.lbl.DeleteSim2 = <html><i>This operation cannot be undone.</i>
+simpanel.dlg.lbl.DeleteSim3 = Delete simulations
+simpanel.col.Name = Name
+simpanel.col.Motors = Motors
+simpanel.col.Apogee = Apogee
+simpanel.col.Maxvelocity = Max. velocity
+simpanel.col.Maxacceleration = Max. acceleration
+simpanel.col.Timetoapogee = Time to apogee
+simpanel.col.Flighttime = Flight time
+simpanel.col.Groundhitvelocity = Ground hit velocity
+
+! SimulationRunDialog
+SimuRunDlg.title.RunSim = Running simulations...
+SimuRunDlg.lbl.Running = Running ...
+SimuRunDlg.lbl.Simutime = Simulation time:
+SimuRunDlg.lbl.Altitude = Altitude:
+SimuRunDlg.lbl.Velocity = Velocity:
+SimuRunDlg.msg.Unabletosim = Unable to simulate:
+SimuRunDlg.msg.errorOccurred = An error occurred during the simulation:
+SimuRunDlg.msg.AnException1 = An exception occurred during the simulation:
+SimuRunDlg.msg.AnException2 = Please report this as a bug along with the details below.
+SimuRunDlg.msg.AssertionError1 = A computation error occurred during the simulation.
+SimuRunDlg.msg.AssertionError2 = Please report this as a bug along with the details below.
+SimuRunDlg.msg.unknownerror1 = An unknown error was encountered during the simulation.
+SimuRunDlg.msg.unknownerror2 = The program may be unstable, you should save all your designs and restart OpenRocket now!
+
+
+
+! SimulationExportPanel
+SimExpPan.desc = Comma Separated Files (*.csv)
+SimExpPan.border.Vartoexport = Variables to export
+SimExpPan.but.Selectall = Select all
+SimExpPan.but.Selectnone = Select none
+SimExpPan.border.Fieldsep = Field separator
+SimExpPan.lbl.Fieldsepstr = Field separator string:
+SimExpPan.lbl.longA1 = <html>The string used to separate the fields in the exported file.<br>
+SimExpPan.lbl.longA2 = Use ',' for a Comma Separated Values (CSV) file.
+SimExpPan.checkbox.Includesimudesc = Include simulation description
+SimExpPan.checkbox.ttip.Includesimudesc = Include a comment at the beginning of the file describing the simulation.
+SimExpPan.border.Comments = Comments
+SimExpPan.checkbox.Includefielddesc = Include field descriptions
+SimExpPan.checkbox.ttip.Includefielddesc = Include a comment line with the descriptions of the exported variables.
+SimExpPan.checkbox.Incflightevents = Include flight events
+SimExpPan.checkbox.ttip.Incflightevents = Include a comment line for every flight event.
+SimExpPan.lbl.Commentchar = Comment character:
+SimExpPan.lbl.ttip.Commentchar = The character(s) that mark a comment line.
+SimExpPan.but.Exporttofile = Export to file...
+SimExpPan.Fileexists.desc1 = File \"
+SimExpPan.Fileexists.desc2 = \" exists.  Overwrite?
+SimExpPan.Fileexists.title = File exists
+SimExpPan.ExportingVar.desc1 = Exporting 1 variable out of
+SimExpPan.ExportingVar.desc2 = Exporting 
+SimExpPan.ExportingVar.desc3 = variables out of
+SimExpPan.Col.Variable = Variable
+SimExpPan.Col.Unit = Unit
+
+! MotorPlot
+MotorPlot.title.Motorplot = Motor plot
+MotorPlot.but.Select = Select
+MotorPlot.Chart.Motorthrustcurve = Motor thrust curve
+MotorPlot.Chart.Time = Time / s
+MotorPlot.Chart.Thrust = Thrust / N
+MotorPlot.txt.Designation = Designation:
+MotorPlot.txt.Manufacturer = Manufacturer:
+MotorPlot.txt.Type = Type:
+MotorPlot.txt.Delays = Delays:
+MotorPlot.txt.Comment = Comment:\n
+
+
+
+! Simulation plot panel
+simplotpanel.lbl.Presetplotconf = Preset plot configurations:
+simplotpanel.lbl.Xaxistype = X axis type:
+simplotpanel.lbl.Unit = Unit:
+simplotpanel.lbl.Yaxistypes = Y axis types:
+simplotpanel.lbl.Flightevents = Flight events:
+simplotpanel.but.All = All
+simplotpanel.but.None = None
+simplotpanel.but.NewYaxisplottype = New Y axis plot type
+simplotpanel.but.Plotflight = Plot flight
+simplotpanel.lbl.Axis = Axis:
+simplotpanel.but.ttip.Removethisplot = Remove this plot
+simplotpanel.Desc = The data will be plotted in time order even if the X axis type is not time.
+simplotpanel.OptionPane.lbl1 = A maximum of 15 plots is allowed. 
+simplotpanel.OptionPane.lbl2 = Cannot add plot
+simplotpanel.AUTO_NAME = Auto
+simplotpanel.LEFT_NAME = Left
+simplotpanel.RIGHT_NAME = Right
+simplotpanel.CUSTOM = Custom
+
+! Component add buttons
+compaddbuttons.Bodycompandfinsets = Body components and fin sets
+compaddbuttons.Nosecone = Nose cone
+compaddbuttons.Bodytube = Body tube
+compaddbuttons.Transition = Transition
+compaddbuttons.Trapezoidal = Trapezoidal
+compaddbuttons.Elliptical = Elliptical
+compaddbuttons.Freeform = Freeform
+compaddbuttons.Launchlug = Launch lug
+compaddbuttons.Innercomponent = Inner component
+compaddbuttons.Innertube = Inner tube
+compaddbuttons.Coupler = Coupler
+compaddbuttons.Centeringring = Centering\nring
+compaddbuttons.Bulkhead = Bulkhead
+compaddbuttons.Engineblock = Engine\nblock
+compaddbuttons.Massobjects = Mass objects
+compaddbuttons.Parachute = Parachute
+compaddbuttons.Streamer = Streamer
+compaddbuttons.Shockcord = Shock cord
+compaddbuttons.Masscomponent = Mass\ncomponent
+compaddbuttons.Donotaskmeagain = Do not ask me again
+compaddbuttons.Selectcomppos = Select component position
+compaddbuttons.lbl.Youcanchange = You can change the default operation in the preferences.
+compaddbuttons.lbl.insertcomp = Insert the component after the current component or as the last component?
+compaddbuttons.askPosition.Inserthere = Insert here
+compaddbuttons.askPosition.Addtotheend = Add to the end
+compaddbuttons.askPosition.Cancel = Cancel
+
+! Component Analysis Dialog
+componentanalysisdlg.componentanalysis = Component analysis
+componentanalysisdlg.lbl.winddir = Wind direction:
+componentanalysisdlg.TitledBorder.warnings = Warnings:
+componentanalysisdlg.ToggleBut.worst = Worst
+componentanalysisdlg.lbl.angleofattack = Angle of attack:
+componentanalysisdlg.lbl.machnumber = Mach number:
+componentanalysisdlg.lbl.rollrate = Roll rate:
+componentanalysisdlg.lbl.activestages = Active stages:
+componentanalysisdlg.lbl.motorconf = Motor configuration:
+componentanalysisdlg.TabStability.Col = Component
+componentanalysisdlg.TabStability = Stability
+componentanalysisdlg.TabStability.ttip = Stability information
+componentanalysisdlg.dragTableModel.Col.Component = Component
+componentanalysisdlg.dragTableModel.Col.Pressure = <html>Pressure C<sub>D</sub>
+componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>
+componentanalysisdlg.dragTableModel.Col.friction = <html>Friction C<sub>D</sub>
+componentanalysisdlg.dragTableModel.Col.total = <html>Total C<sub>D</sub>
+componentanalysisdlg.dragTabchar = Drag characteristics
+componentanalysisdlg.dragTabchar.ttip = Drag characteristics
+componentanalysisdlg.rollTableModel.Col.component = Component
+componentanalysisdlg.rollTableModel.Col.rollforc = Roll forcing coefficient
+componentanalysisdlg.rollTableModel.Col.rolldamp = Roll damping coefficient
+componentanalysisdlg.rollTableModel.Col.total = <html>Total C<sub>l</sub>
+componentanalysisdlg.rollTableModel = Roll dynamics
+componentanalysisdlg.rollTableModel.ttip = Roll dynamics
+componentanalysisdlg.println.closingmethod = Closing method called:
+componentanalysisdlg.println.settingnam = SETTING NAN VALUES
+componentanalysisdlg.lbl.reflenght = Reference length: 
+componentanalysisdlg.lbl.refarea = Reference area: 
+!componentanalysisdlg.But.close =Close
+
+! Custom Material dialog
+custmatdlg.title.Custommaterial = Custom material
+custmatdlg.lbl.Materialname = Material name: 
+custmatdlg.lbl.Materialtype = Material type:
+custmatdlg.lbl.Materialdensity = Material density:
+custmatdlg.checkbox.Addmaterial = Add material to database
+
+
+! Ring Component Config
+ringcompcfg.OuterRadius = OuterRadius
+ringcompcfg.Automatic = Automatic
+ringcompcfg.InnerRadius = InnerRadius
+ringcompcfg.Thickness = Thickness
+ringcompcfg.Length = Length
+ringcompcfg.Positionrelativeto = Position relative to:
+ringcompcfg.plus = plus
+ringcompcfg.PositionValue = PositionValue
+ringcompcfg.Radialdistance = Radial distance:
+ringcompcfg.Distancefrom = Distance from the rocket centerline
+ringcompcfg.Radialdirection = Radial direction
+ringcompcfg.radialdirectionfrom = The radial direction from the rocket centerline
+ringcompcfg.but.Reset = Reset
+ringcompcfg.but.Resetcomponant = Reset the component to the rocket centerline
+ringcompcfg.EngineBlock.desc = <html>An <b>engine block</b> stops the motor from moving forwards in the motor mount tube.<br><br>In order to add a motor, create a <b>body tube</b> or <b>inner tube</b> and mark it as a motor mount in the <em>Motor</em> tab.
+ringcompcfg.note.desc = Note: An inner tube will not affect the aerodynamics of the rocket even if it is located outside of the body tube.
+
+
+! Body Tube Config
+BodyTubecfg.lbl.Bodytubelength = Body tube length:
+BodyTubecfg.lbl.Outerdiameter = Outer diameter:
+BodyTubecfg.lbl.Innerdiameter = Inner diameter:
+BodyTubecfg.lbl.Wallthickness = Wall thickness:
+BodyTubecfg.tab.General = General
+BodyTubecfg.tab.Generalproperties = General properties
+BodyTubecfg.tab.Motor = Motor
+BodyTubecfg.tab.Motormountconf = Motor mount configuration
+BodyTubecfg.checkbox.Automatic = Automatic
+BodyTubecfg.checkbox.Filled = Filled
+
+! FinSetConfig
+FinSetConfig.tab.Fintabs = Fin tabs
+FinSetConfig.tab.Through-the-wall = Through-the-wall fin tabs
+FinSetConfig.but.Converttofreeform = Convert to freeform
+FinSetConfig.but.Converttofreeform.ttip = Convert this fin set into a freeform fin set
+FinSetConfig.Convertfinset = Convert fin set
+FinSetConfig.but.Splitfins = Split fins
+FinSetConfig.but.Splitfins.ttip = Split the fin set into separate fins
+FinSetConfig.lbl.Through-the-wall  = Through-the-wall fin tabs:
+FinSetConfig.lbl.Tablength = Tab length:
+FinSetConfig.ttip.Tablength = The length of the fin tab.
+FinSetConfig.lbl.Tabheight = Tab height:
+FinSetConfig.ttip.Tabheight = The spanwise height of the fin tab.
+FinSetConfig.lbl.Tabposition = Tab position:
+FinSetConfig.ttip.Tabposition = The position of the fin tab.
+FinSetConfig.lbl.relativeto = relative to
+
+! MotorDatabaseLoadingDialog
+MotorDbLoadDlg.title = Loading motors
+MotorDbLoadDlg.Loadingmotors = Loading motors...
+
+! RocketConfig
+RocketCfg.lbl.Designname = Design name:
+RocketCfg.lbl.Designer = Designer:
+RocketCfg.lbl.Comments = Comments:
+RocketCfg.lbl.Revisionhistory = Revision history:
+RocketCfg.lbl.Material = Material:
+
+! ShockCordConfig
+ShockCordCfg.lbl.Shockcordlength = Shock cord length
+
+! RocketComponentConfig
+RocketCompCfg.lbl.Componentname = Component name:
+RocketCompCfg.ttip.Thecomponentname = The component name.
+RocketCompCfg.tab.Override = Override
+RocketCompCfg.tab.MassandCGoverride = Mass and CG override options
+RocketCompCfg.tab.Figure = Figure
+RocketCompCfg.tab.Figstyleopt = Figure style options
+RocketCompCfg.tab.Comment = Comment
+RocketCompCfg.tab.Specifyacomment = Specify a comment for the component
+RocketCompCfg.lbl.Mass = Mass:
+RocketCompCfg.lbl.Componentmass = Component mass:
+RocketCompCfg.lbl.overriddento = (overridden to
+RocketCompCfg.lbl.overriddenby = (overridden by
+RocketCompCfg.lbl.Componentmaterial = Component material:
+RocketCompCfg.lbl.Componentfinish = Component finish:
+RocketCompCfg.lbl.ttip.componentmaterialaffects = The component material affects the weight of the component.
+RocketCompCfg.combo.ttip.componentmaterialaffects = The component material affects the weight of the component.
+RocketCompCfg.lbl.longA1 = <html>The component finish affects the aerodynamic drag of the component.<br>
+RocketCompCfg.lbl.longA2 = The value indicated is the average roughness height of the surface.
+RocketCompCfg.but.Setforall = Set for all
+RocketCompCfg.but.ttip.Setforall = Set this finish for all components of the rocket.
+RocketCompCfg.lbl.Overridemassorcenter = Override the mass or center of gravity of the
+RocketCompCfg.checkbox.Overridemass = Override mass:
+RocketCompCfg.checkbox.Overridecenterofgrav = Override center of gravity:
+RocketCompCfg.checkbox.OverridemassandCG = Override mass and CG of all subcomponents
+RocketCompCfg.lbl.longB1 = <html>The overridden mass does not include motors.<br>
+RocketCompCfg.lbl.longB2 = The center of gravity is measured from the front end of the
+RocketCompCfg.lbl.Commentsonthe = Comments on the
+RocketCompCfg.lbl.Figurestyle = Figure style:
+RocketCompCfg.lbl.Componentcolor = Component color:
+RocketCompCfg.lbl.Choosecolor = Choose color
+RocketCompCfg.checkbox.Usedefaultcolor = Use default color
+RocketCompCfg.lbl.Complinestyle = Component line style:
+RocketCompCfg.but.Saveasdefstyle = Save as default style
+RocketCompCfg.lbl.Diameter = Diameter:
+RocketCompCfg.lbl.Length = Length:
+RocketCompCfg.lbl.Thickness = Thickness:
+RocketCompCfg.checkbox.Endcapped = End capped
+RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped.
+RocketCompCfg.title.Noseconeshoulder = Nose cone shoulder
+RocketCompCfg.title.Aftshoulder = Aft shoulder
+RocketCompCfg.border.Foreshoulder = Fore shoulder 
+!RocketCompCfg.lbl.Length = Length:
+
+! BulkheadConfig
+BulkheadCfg.tab.Radius = Radius:
+BulkheadCfg.tab.Thickness = Thickness:
+BulkheadCfg.tab.General = General
+BulkheadCfg.tab.Generalproperties = General properties
+
+!CenteringRingConfig
+CenteringRingCfg.tab.Outerdiam = Outer diameter:
+CenteringRingCfg.tab.Innerdiam = Inner diameter:
+CenteringRingCfg.tab.Thickness = Thickness:
+CenteringRingCfg.tab.General = General
+CenteringRingCfg.tab.Generalproperties = General properties
+
+!ComponentConfigDialog
+ComponentCfgDlg.configuration = configuration
+ComponentCfgDlg.Modify = Modify
+
+!EllipticalFinSetConfig
+EllipticalFinSetCfg.Nbroffins = Number of fins:
+EllipticalFinSetCfg.Rotation = Rotation:
+EllipticalFinSetCfg.Fincant = Fin cant:
+EllipticalFinSetCfg.Rootchord = Root chord:
+EllipticalFinSetCfg.Height = Height:
+EllipticalFinSetCfg.Positionrelativeto = Position relative to:
+EllipticalFinSetCfg.plus = plus
+EllipticalFinSetCfg.FincrossSection = Fin cross section:
+EllipticalFinSetCfg.Thickness = Thickness:
+EllipticalFinSetCfg.General = General
+EllipticalFinSetCfg.Generalproperties = General properties
+EllipticalFinSetCfg.ttip.Fincant = The angle that the fins are canted with respect to the rocket body.
+
+!FreeformFinSetConfig
+FreeformFinSetCfg.tab.General = General
+FreeformFinSetCfg.tab.ttip.General = General properties
+FreeformFinSetCfg.tab.Shape = Shape
+FreeformFinSetCfg.tab.ttip.Finshape = Fin shape
+FreeformFinSetCfg.lbl.Numberoffins = Number of fins:
+FreeformFinSetCfg.lbl.Finrotation = Fin rotation:
+FreeformFinSetCfg.lbl.Fincant = Fin cant:
+FreeformFinSetCfg.lbl.ttip.Fincant = The angle that the fins are canted with respect to the rocket body.
+FreeformFinSetCfg.lbl.Posrelativeto = Position relative to:
+FreeformFinSetCfg.lbl.plus = plus
+FreeformFinSetCfg.lbl.FincrossSection = Fin cross section:
+FreeformFinSetCfg.lbl.Thickness = Thickness:
+
+!InnerTubeConfig
+InnerTubeCfg.tab.Motor = Motor
+InnerTubeCfg.tab.ttip.Motor = Motor mount configuration
+InnerTubeCfg.tab.Cluster = Cluster
+InnerTubeCfg.tab.ttip.Cluster = Cluster configuration
+InnerTubeCfg.tab.Radialpos = Radial position
+InnerTubeCfg.tab.ttip.Radialpos = Radial position
+InnerTubeCfg.lbl.Selectclustercfg = Select cluster configuration:
+InnerTubeCfg.lbl.TubeSep = Tube separation:
+InnerTubeCfg.lbl.ttip.TubeSep = The separation of the tubes, 1.0 = touching each other
+InnerTubeCfg.lbl.Rotation = Rotation:
+InnerTubeCfg.lbl.ttip.Rotation = Rotation angle of the cluster configuration
+InnerTubeCfg.lbl.Rotangle = Rotation angle of the cluster configuration
+InnerTubeCfg.but.Splitcluster = Split cluster
+InnerTubeCfg.lbl.longA1 = <html>Split the cluster into separate components.<br>
+InnerTubeCfg.lbl.longA2 = This also duplicates all components attached to this inner tube.
+InnerTubeCfg.but.Resetsettings = Reset settings
+InnerTubeCfg.but.ttip.Resetsettings = Reset the separation and rotation to the default values
+
+! LaunchLugConfig
+LaunchLugCfg.lbl.Length = Length:
+LaunchLugCfg.lbl.Outerdiam = Outer diameter:
+LaunchLugCfg.lbl.Innerdiam = Inner diameter:
+LaunchLugCfg.lbl.Thickness = Thickness:
+LaunchLugCfg.lbl.Radialpos = Radial position:
+LaunchLugCfg.lbl.Posrelativeto = Position relative to:
+LaunchLugCfg.lbl.plus = plus
+LaunchLugCfg.tab.General = General
+LaunchLugCfg.tab.Generalprop = General properties
+
+! MassComponentConfig
+MassComponentCfg.lbl.Mass = Mass
+MassComponentCfg.lbl.Length = Length
+MassComponentCfg.lbl.Diameter = Diameter
+MassComponentCfg.lbl.PosRelativeto = Position relative to:
+MassComponentCfg.lbl.plus = plus
+MassComponentCfg.tab.General = General
+MassComponentCfg.tab.ttip.General = General properties
+MassComponentCfg.tab.Radialpos = Radial position
+MassComponentCfg.tab.ttip.Radialpos = Radial position configuration
+MassComponentCfg.lbl.Radialdistance = Radial distance:
+MassComponentCfg.lbl.Radialdirection = Radial direction:
+MassComponentCfg.but.Reset = Reset
+
+! MotorConfig
+MotorCfg.checkbox.compmotormount = This component is a motor mount
+MotorCfg.lbl.Motorcfg = Motor configuration:
+MotorCfg.but.New = New
+MotorCfg.lbl.Currentmotor = Current motor:
+MotorCfg.lbl.Motoroverhang = Motor overhang:
+MotorCfg.lbl.Ignitionat = Ignition at:
+MotorCfg.lbl.plus = plus
+MotorCfg.lbl.seconds = seconds
+MotorCfg.lbl.longA1 = The current design has only one stage.
+MotorCfg.lbl.longA2 = Stages can be added by clicking \"New stage\".
+MotorCfg.lbl.longB1 = The current design has
+MotorCfg.lbl.longB2 = stages.
+MotorCfg.but.Selectmotor = Select motor
+MotorCfg.but.Removemotor = Remove motor
+MotorCfg.lbl.motorLabel = None
+
+! NoseConeConfig
+NoseConeCfg.lbl.Noseconeshape = Nose cone shape:
+NoseConeCfg.lbl.Shapeparam = Shape parameter:
+NoseConeCfg.lbl.Noseconelength = Nose cone length:
+NoseConeCfg.lbl.Basediam = Base diameter:
+NoseConeCfg.checkbox.Automatic = Automatic
+NoseConeCfg.lbl.Wallthickness = Wall thickness:
+NoseConeCfg.checkbox.Filled = Filled
+NoseConeCfg.tab.General = General
+NoseConeCfg.tab.ttip.General = General properties
+NoseConeCfg.tab.Shoulder = Shoulder
+NoseConeCfg.tab.ttip.Shoulder = Shoulder properties
+
+! ParachuteConfig
+ParachuteCfg.lbl.Canopy = Canopy:
+ParachuteCfg.lbl.Diameter = Diameter:
+ParachuteCfg.lbl.Material = Material:
+ParachuteCfg.combo.MaterialModel = The component material affects the weight of the component.
+ParachuteCfg.lbl.longA1 = <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.longB3 = A typical value for parachutes is 0.8.
+ParachuteCfg.but.Reset = Reset
+ParachuteCfg.lbl.Shroudlines = Shroud lines:
+ParachuteCfg.lbl.Numberoflines = Number of lines:
+ParachuteCfg.lbl.Linelength = Line length:
+ParachuteCfg.lbl.Material = Material:
+ParachuteCfg.lbl.Posrelativeto = Position relative to:
+ParachuteCfg.lbl.plus = plus
+ParachuteCfg.lbl.Packedlength = Packed length:
+ParachuteCfg.lbl.Packeddiam = Packed diameter:
+ParachuteCfg.lbl.Deploysat = Deploys at:
+ParachuteCfg.lbl.seconds = seconds
+ParachuteCfg.lbl.Altitude = Altitude:
+ParachuteCfg.tab.General = General
+ParachuteCfg.tab.ttip.General = General properties
+ParachuteCfg.tab.Radialpos = Radial position
+ParachuteCfg.tab.ttip.Radialpos = Radial position configuration
+ParachuteCfg.lbl.Radialdistance = Radial distance:
+ParachuteCfg.lbl.Radialdirection = Radial direction:
+ParachuteCfg.but.Reset = Reset
+
+! ShockCordConfig 
+ShockCordCfg.lbl.Shockcordlength = Shock cord length
+ShockCordCfg.lbl.Shockcordmaterial = Shock cord material:
+ShockCordCfg.lbl.Posrelativeto = Position relative to:
+ShockCordCfg.lbl.plus = plus
+ShockCordCfg.lbl.Packedlength = Packed length:
+ShockCordCfg.lbl.Packeddiam = Packed diameter:
+ShockCordCfg.tab.General = General
+ShockCordCfg.tab.ttip.General = General properties
+
+!SleeveConfig
+SleeveCfg.tab.Outerdiam = Outer diameter:
+SleeveCfg.tab.Innerdiam = Inner diameter:
+SleeveCfg.tab.Wallthickness = Wall thickness:
+SleeveCfg.tab.Length = Length:
+SleeveCfg.tab.General = General
+SleeveCfg.tab.Generalproperties = General properties
+
+! StreamerConfig
+StreamerCfg.lbl.Striplength = Strip length:
+StreamerCfg.lbl.Stripwidth = Strip width:
+StreamerCfg.lbl.Striparea = Strip area:
+StreamerCfg.lbl.Aspectratio = Aspect ratio:
+StreamerCfg.lbl.Material = Material:
+StreamerCfg.combo.ttip.MaterialModel = The component material affects the weight of the component.
+StreamerCfg.lbl.longA1 = <html>Drag coefficient C<sub>D</sub>:
+StreamerCfg.lbl.longB1 = <html>The drag coefficient relative to the total area of the streamer.<br>
+StreamerCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate.
+StreamerCfg.lbl.Automatic = Automatic
+StreamerCfg.lbl.longC1 = The drag coefficient is relative to the area of the streamer.
+StreamerCfg.lbl.Posrelativeto = Position relative to:
+StreamerCfg.lbl.plus = plus
+StreamerCfg.lbl.Packedlength = Packed length:
+StreamerCfg.lbl.Packeddiam = Packed diameter:
+StreamerCfg.lbl.Deploysat = Deploys at:
+StreamerCfg.lbl.seconds = seconds
+StreamerCfg.lbl.Altitude = Altitude:
+StreamerCfg.tab.General = General
+StreamerCfg.tab.ttip.General = General properties
+StreamerCfg.tab.Radialpos = Radial position
+StreamerCfg.tab.ttip.Radialpos = Radial position configuration
+StreamerCfg.lbl.Radialdistance = Radial distance:
+StreamerCfg.lbl.Radialdirection = Radial direction:
+StreamerCfg.but.Reset = Reset
+
+! ThicknessRingComponentConfig
+ThicknessRingCompCfg.tab.Outerdiam = Outer diameter:
+ThicknessRingCompCfg.tab.Innerdiam = Inner diameter:
+ThicknessRingCompCfg.tab.Wallthickness = Wall thickness:
+ThicknessRingCompCfg.tab.Length = Length:
+ThicknessRingCompCfg.tab.General = General
+ThicknessRingCompCfg.tab.Generalprop = General properties
+
+! TransitionConfig
+TransitionCfg.lbl.Transitionshape = Transition shape:
+TransitionCfg.checkbox.Clipped = Clipped
+TransitionCfg.lbl.Shapeparam = Shape parameter:
+TransitionCfg.lbl.Transitionlength = Transition length:
+TransitionCfg.lbl.Forediam = Fore diameter:
+TransitionCfg.checkbox.Automatic = Automatic
+TransitionCfg.lbl.Aftdiam = Aft diameter:
+TransitionCfg.lbl.Wallthickness = Wall thickness:
+TransitionCfg.checkbox.Filled = Filled
+TransitionCfg.tab.General = General
+TransitionCfg.tab.Generalproperties = General properties
+TransitionCfg.tab.Shoulder = Shoulder
+TransitionCfg.tab.Shoulderproperties = Shoulder properties
+
+! TrapezoidFinSetConfig
+TrapezoidFinSetCfg.lbl.Nbroffins = Number of fins:
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins = The number of fins in the fin set.
+TrapezoidFinSetCfg.lbl.Finrotation = Fin rotation:
+TrapezoidFinSetCfg.lbl.ttip.Finrotation = The angle of the first fin in the fin set.
+TrapezoidFinSetCfg.lbl.Fincant = Fin cant:
+TrapezoidFinSetCfg.lbl.ttip.Fincant =The angle that the fins are canted with respect to the rocket body.
+TrapezoidFinSetCfg.lbl.Rootchord = Root chord:
+TrapezoidFinSetCfg.lbl.Tipchord = Tip chord:
+TrapezoidFinSetCfg.lbl.Height = Height:
+TrapezoidFinSetCfg.lbl.Sweeplength = Sweep length:
+TrapezoidFinSetCfg.lbl.Sweepangle = Sweep angle:
+TrapezoidFinSetCfg.lbl.FincrossSection = Fin cross section:
+TrapezoidFinSetCfg.lbl.Thickness = Thickness:
+TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative to:
+TrapezoidFinSetCfg.lbl.plus = plus
+TrapezoidFinSetCfg.tab.General = General
+TrapezoidFinSetCfg.tab.Generalproperties = General properties
+
+!MotorConfigurationModel
+MotorCfgModel.Editcfg = Edit configurations
+
+! StorageOptionChooser
+StorageOptChooser.lbl.Simdatatostore = Simulated data to store:
+StorageOptChooser.rdbut.Allsimdata = All simulated data
+StorageOptChooser.lbl.longA1 = <html>Store all simulated data.<br>
+StorageOptChooser.lbl.longA2 = This can result in very large files!
+StorageOptChooser.rdbut.Every = Every
+StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>
+StorageOptChooser.lbl.longB2 = Larger values result in smaller files.
+StorageOptChooser.lbl.seconds = seconds
+StorageOptChooser.rdbut.Onlyprimfig = Only primary figures
+StorageOptChooser.lbl.longC1 = <html>Store only the values shown in the summary table.<br>
+StorageOptChooser.lbl.longC2 = This results in the smallest files.
+StorageOptChooser.checkbox.Compfile = Compress file
+StorageOptChooser.lbl.UsingComp = Using compression reduces the file size significantly.
+StorageOptChooser.lbl.longD1 = An estimate on how large the resulting file would be with the present options.
+StorageOptChooser.ttip.Saveopt = Save options
+StorageOptChooser.lbl.Estfilesize = Estimated file size:
+StorageOptChooser.lbl.Saveopt = Save options
+
+! ThrustCurveMotorSelectionPanel
+TCMotorSelPan.lbl.Selrocketmotor = Select rocket motor:
+TCMotorSelPan.checkbox.hideSimilar = Hide very similar thrust curves
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Show all motors
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Show motors with diameter less than that of the motor mount
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Show motors with diameter equal to that of the motor mount
+TCMotorSelPan.lbl.Motormountdia = Motor mount diameter:
+TCMotorSelPan.lbl.Search = Search:
+TCMotorSelPan.lbl.Selectthrustcurve = Select thrust curve:
+TCMotorSelPan.lbl.Ejectionchargedelay = Ejection charge delay:
+TCMotorSelPan.equalsIgnoreCase.None = None
+TCMotorSelPan.lbl.NumberofsecondsorNone = (Number of seconds or \"None\")
+TCMotorSelPan.lbl.Totalimpulse = Total impulse:
+TCMotorSelPan.lbl.Avgthrust = Avg. thrust:
+TCMotorSelPan.lbl.Maxthrust = Max. thrust:
+TCMotorSelPan.lbl.Burntime = Burn time:
+TCMotorSelPan.lbl.Launchmass = Launch mass:
+TCMotorSelPan.lbl.Emptymass = Empty mass:
+TCMotorSelPan.lbl.Datapoints = Data points:
+TCMotorSelPan.lbl.Digest = Digest:
+TCMotorSelPan.title.Thrustcurve = Thrust curve:
+TCMotorSelPan.title.Thrust = Thrust
+TCMotorSelPan.delayBox.None = None
+
+
+! PlotDialog
+PlotDialog.title.Flightdataplot = Flight data plot
+PlotDialog.Chart.Simulatedflight = Simulated flight
+PlotDialog.CheckBox.Showdatapoints = Show data points
+PlotDialog.lbl.Chart = Click+drag down+right to zoom in, up+left to zoom out
+
 
 ! "main" prefix is used for the main application dialog
 
@@ -22,6 +896,7 @@ main.menu.file.open = Open...
 main.menu.file.openExample = Open example...
 main.menu.file.save = Save
 main.menu.file.saveAs = Save as...
+main.menu.file.print = Print / Export PDF...
 main.menu.file.close = Close
 main.menu.file.quit = Quit
 
@@ -41,7 +916,285 @@ main.menu.help = Help
 main.menu.help.license = License
 main.menu.help.bugReport = Bug report
 main.menu.help.debugLog = Debug log
-main.menu.help. = About
+main.menu.help.about = About
+
+main.menu.debug = Debug
+main.menu.debug.whatisthismenu = What is this menu?
+main.menu.debug.createtestrocket = Create test rocket
+
+! database
+! Translate here all material database
+!
+
+! Material database
+! BULK_MATERIAL
+Databases.materials.Acrylic = Acrylic
+Databases.materials.Balsa = Balsa
+Databases.materials.Birch = Birch
+Databases.materials.Cardboard = Cardboard
+Databases.materials.Carbonfiber = Carbon fiber
+Databases.materials.Cork = Cork
+Databases.materials.DepronXPS = Depron (XPS)
+Databases.materials.Fiberglass = Fiberglass
+Databases.materials.Kraftphenolic = Kraft phenolic
+Databases.materials.Maple = Maple
+Databases.materials.Paperoffice = Paper (office)
+Databases.materials.Pine = Pine
+Databases.materials.Plywoodbirch = Plywood (birch)
+Databases.materials.PolycarbonateLexan = Polycarbonate (Lexan)
+Databases.materials.Polystyrene = Polystyrene
+Databases.materials.PVC = PVC
+Databases.materials.Spruce = Spruce
+Databases.materials.StyrofoamgenericEPS = Styrofoam (generic EPS)
+Databases.materials.StyrofoamBluefoamXPS = Styrofoam \"Blue foam\" (XPS)
+Databases.materials.Quantumtubing = Quantum tubing
+!SURFACE_MATERIAL
+Databases.materials.Ripstopnylon = Ripstop nylon
+Databases.materials.Mylar = Mylar
+Databases.materials.Polyethylenethin = Polyethylene (thin)
+Databases.materials.Polyethyleneheavy = Polyethylene (heavy)
+Databases.materials.Silk = Silk
+Databases.materials.Paperoffice = Paper (office)
+Databases.materials.Cellophane = Cellophane
+Databases.materials.Crepepaper = Cr\u00eape paper
+! LINE_MATERIAL
+Databases.materials.Threadheavy-duty = Thread (heavy-duty)
+Databases.materials.Elasticcordround2mm = Elastic cord (round 2mm, 1/16 in)
+Databases.materials.Elasticcordflat6mm = Elastic cord (flat  6mm, 1/4 in)
+Databases.materials.Elasticcordflat12mm = Elastic cord (flat 12mm, 1/2 in)
+Databases.materials.Elasticcordflat19mm = Elastic cord (flat 19mm, 3/4 in)
+Databases.materials.Elasticcordflat25mm = Elastic cord (flat 25mm, 1 in)
+Databases.materials.Braidednylon2mm = Braided nylon (2 mm, 1/16 in)
+Databases.materials.Braidednylon3mm = Braided nylon (3 mm, 1/8 in)
+Databases.materials.Tubularnylon11mm = Tubular nylon (11 mm, 7/16 in)
+Databases.materials.Tubularnylon14mm = Tubular nylon (14 mm, 9/16 in)
+Databases.materials.Tubularnylon25mm = Tubular nylon (25 mm, 1 in)
+
+! ExternalComponent
+ExternalComponent.Rough = Rough
+ExternalComponent.Unfinished = Unfinished
+ExternalComponent.Regularpaint = Regular paint
+ExternalComponent.Smoothpaint = Smooth paint
+ExternalComponent.Polished = Polished
+
+! LineStyle
+LineStyle.Solid = Solid
+LineStyle.Dashed = Dashed
+LineStyle.Dotted = Dotted
+LineStyle.Dash-dotted = Dash-dotted
+LineStyle.Defaultstyle = Default style
+
+! Shape
+Shape.Conical = Conical
+Shape.Conical.desc1 = A conical nose cone has a profile of a triangle.
+Shape.Conical.desc2 = A conical transition has straight sides.
+Shape.Ogive = Ogive
+Shape.Ogive.desc1 = An ogive nose cone has a profile that is a segment of a circle.  The shape parameter value 1 produces a <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.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.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.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.              
+
+
+! RocketComponent
+RocketComponent.Position.TOP = Top of the parent component
+RocketComponent.Position.MIDDLE = Middle of the parent component
+RocketComponent.Position.BOTTOM = Bottom of the parent component
+RocketComponent.Position.AFTER = After the parent component
+RocketComponent.Position.ABSOLUTE = Tip of the nose cone
+
+! LaunchLug
+LaunchLug.Launchlug = Launch lug
+! NoseCone
+NoseCone.NoseCone = Nose cone
+! Transition
+Transition.Transition = Transition
+!Stage
+Stage.Stage = Stage
+! BodyTube
+BodyTube.BodyTube = Body tube
+! TubeCoupler
+TubeCoupler.TubeCoupler = Tube coupler
+!InnerTube
+InnerTube.InnerTube = Inner Tube
+! TrapezoidFinSet
+TrapezoidFinSet.TrapezoidFinSet = Trapezoidal fin set
+! FreeformFinSet
+FreeformFinSet.FreeformFinSet = Freeform fin set
+!MassComponent
+MassComponent.MassComponent = Mass component
+! Parachute
+Parachute.Parachute = Parachute
+! ShockCord
+ShockCord.ShockCord = Shock cord
+! Bulkhead
+Bulkhead.Bulkhead = Bulkhead
+
+!Rocket
+Rocket.motorCount.Nomotor = [No motors]
+Rocket.compname.Rocket = Rocket
+
+!MotorMount
+MotorMount.IgnitionEvent.AUTOMATIC = Automatic (launch or ejection charge)
+MotorMount.IgnitionEvent.LAUNCH = Launch
+MotorMount.IgnitionEvent.EJECTION_CHARGE = First ejection charge of previous stage
+MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage
+MotorMount.IgnitionEvent.NEVER = Never
+
+!ComponentIcons 
+ComponentIcons.Nosecone = Nose cone
+ComponentIcons.Bodytube = Body tube
+ComponentIcons.Transition = Transition
+ComponentIcons.Trapezoidalfinset = Trapezoidal fin set
+ComponentIcons.Ellipticalfinset = Elliptical fin set
+ComponentIcons.Freeformfinset = Freeform fin set
+ComponentIcons.Launchlug = Launch lug
+ComponentIcons.Innertube = Inner tube
+ComponentIcons.Tubecoupler = Tube coupler
+ComponentIcons.Centeringring = Centering ring
+ComponentIcons.Bulkhead = Bulk head
+ComponentIcons.Engineblock = Engine block
+ComponentIcons.Parachute = Parachute
+ComponentIcons.Streamer = Streamer
+ComponentIcons.Shockcord = Shock cord
+ComponentIcons.Masscomponent = Mass component
+ComponentIcons.disabled = (disabled)
+
+! StageAction
+StageAction.Stage = Stage
+
+! RecoveryDevice
+RecoveryDevice.DeployEvent.LAUNCH = Launch (plus NN seconds)
+RecoveryDevice.DeployEvent.EJECTION = First ejection charge of this stage
+RecoveryDevice.DeployEvent.APOGEE = Apogee
+RecoveryDevice.DeployEvent.ALTITUDE = Specific altitude during descent
+RecoveryDevice.DeployEvent.NEVER = Never
+
+! FlightEvent
+FlightEvent.Type.LAUNCH = Launch
+FlightEvent.Type.IGNITION = Motor ignition
+FlightEvent.Type.LIFTOFF = Lift-off
+FlightEvent.Type.LAUNCHROD = Launch rod clearance
+FlightEvent.Type.BURNOUT = Motor burnout
+FlightEvent.Type.EJECTION_CHARGE = Ejection charge
+FlightEvent.Type.STAGE_SEPARATION = Stage separation
+FlightEvent.Type.APOGEE = Apogee
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Recovery device deployment
+FlightEvent.Type.GROUND_HIT = Ground hit
+FlightEvent.Type.SIMULATION_END = Simulation end
+FlightEvent.Type.ALTITUDE = Altitude change
+
+! ThrustCurveMotorColumns
+TCurveMotorCol.MANUFACTURER = Manufacturer
+TCurveMotorCol.DESIGNATION = Designation
+TCurveMotorCol.TYPE = Type
+TCurveMotorCol.DIAMETER = Diameter
+TCurveMotorCol.LENGTH = Length
+
+! RocketInfo
+RocketInfo.lengthLine.Length = Length
+RocketInfo.lengthLine.maxdiameter = , max. diameter
+RocketInfo.massText1 = Mass with motors 
+RocketInfo.massText2 = Mass with no motors
+RocketInfo.at = at M=
+RocketInfo.cgText = CG:
+RocketInfo.cpText = CP:
+RocketInfo.stabText = Stability:
+RocketInfo.Warning = Warning:
+RocketInfo.Calculating = Calculating...
+RocketInfo.Apogee = Apogee:
+RocketInfo.Maxvelocity = Max. velocity:
+RocketInfo.Maxacceleration = Max. acceleration:
+RocketInfo.apogeeValue = N/A
+RocketInfo.Mach = (Mach
+RocketInfo.velocityValue = N/A
+RocketInfo.accelerationValue = N/A
+
+! FinSet
+FinSet.CrossSection.SQUARE = Square
+FinSet.CrossSection.ROUNDED = Rounded
+FinSet.CrossSection.AIRFOIL = Airfoil
+FinSet.TabRelativePosition.FRONT = Root chord leading edge
+FinSet.TabRelativePosition.CENTER = Root chord midpoint
+FinSet.TabRelativePosition.END = Root chord trailing edge
 
+! FlightDataType
+FlightDataType.TYPE_TIME = Time
+FlightDataType.TYPE_ALTITUDE = Altitude
+FlightDataType.TYPE_VELOCITY_Z = Vertical velocity
+FlightDataType.TYPE_ACCELERATION_Z = Vertical acceleration
+FlightDataType.TYPE_VELOCITY_TOTAL = Total velocity
+FlightDataType.TYPE_ACCELERATION_TOTAL = Total acceleration
+FlightDataType.TYPE_POSITION_X = Position upwind
+FlightDataType.TYPE_POSITION_Y = Position parallel to wind
+FlightDataType.TYPE_POSITION_XY = Lateral distance
+FlightDataType.TYPE_POSITION_DIRECTION = Lateral direction
+FlightDataType.TYPE_VELOCITY_XY = Lateral velocity
+FlightDataType.TYPE_ACCELERATION_XY = Lateral acceleration
+FlightDataType.TYPE_AOA = Angle of attack
+FlightDataType.TYPE_ROLL_RATE = Roll rate
+FlightDataType.TYPE_PITCH_RATE = Pitch rate
+FlightDataType.TYPE_YAW_RATE = Yaw rate
+FlightDataType.TYPE_MASS = Mass
+FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia
+FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia
+FlightDataType.TYPE_CP_LOCATION = CP location
+FlightDataType.TYPE_CG_LOCATION = CG location
+FlightDataType.TYPE_STABILITY = Stability margin calibers
+FlightDataType.TYPE_MACH_NUMBER = Mach number
+FlightDataType.TYPE_REYNOLDS_NUMBER = Reynolds number
+FlightDataType.TYPE_THRUST_FORCE = Thrust
+FlightDataType.TYPE_DRAG_FORCE = Drag force
+FlightDataType.TYPE_DRAG_COEFF = Drag coefficient
+FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient
+FlightDataType.TYPE_FRICTION_DRAG_COEFF = Friction drag coefficient
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Pressure drag coefficient
+FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient
+FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient
+FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient
+FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient
+FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient
+FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient
+FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient
+FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient
+FlightDataType.TYPE_REFERENCE_LENGTH = Reference lenght
+FlightDataType.TYPE_REFERENCE_AREA = Reference area
+FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith)
+FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth)
+FlightDataType.TYPE_WIND_VELOCITY = Wind velocity
+FlightDataType.TYPE_AIR_TEMPERATURE = Air temperature
+FlightDataType.TYPE_AIR_PRESSURE = Air pressure
+FlightDataType.TYPE_SPEED_OF_SOUND = Speed of sound
+FlightDataType.TYPE_TIME_STEP = Simulation time step
+FlightDataType.TYPE_COMPUTATION_TIME = Computation time
 
+! PlotConfiguration
+PlotConfiguration.Verticalmotion = Vertical motion vs. time
+PlotConfiguration.Totalmotion = Total motion vs. time
+PlotConfiguration.Flightside = Flight side profile
+PlotConfiguration.Stability = Stability vs. time
+PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number
+PlotConfiguration.Rollcharacteristics = Roll characteristics
+PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time
+PlotConfiguration.Simulationtime = Simulation time step and computation time
 
+! Warning
+Warning.LargeAOA.str1 = Large angle of attack encountered.
+Warning.LargeAOA.str2 = Large angle of attack encountered (
+Warning.DISCONTINUITY = Discontinuity in rocket body diameter.
+Warning.THICK_FIN = Thick fins may not be modeled accurately.
+Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate.
+Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Recovery device opened while motor still burning.
+Warning.FILE_INVALID_PARAMETER = Invalid parameter encountered, ignoring.
diff --git a/l10n/messages_de.properties b/l10n/messages_de.properties
new file mode 100644 (file)
index 0000000..bd51927
--- /dev/null
@@ -0,0 +1,1171 @@
+! Set to the name of the current translation file (used for debugging purposes)\r
+debug.currentFile = messages_de.properties\r
+\r
+! RocketActions\r
+RocketActions.checkbox.Donotaskmeagain = Nicht wieder fragen\r
+RocketActions.lbl.Youcanchangedefop = Die Standardaktion kann in den Einstellungen geändert werden.\r
+RocketActions.showConfirmDialog.lbl1 = Simulationen löschen?\r
+RocketActions.showConfirmDialog.lbl2 = <html><i>Diese Aktion kann nicht rückgängig gemacht werden.</i>\r
+RocketActions.showConfirmDialog.title = Simulationen löschen\r
+RocketActions.DelCompAct.Delete = Löschen\r
+RocketActions.DelCompAct.ttip.Delete = Die ausgewählte Komponente löschen.\r
+RocketActions.DelSimuAct.Delete = Löschen\r
+RocketActions.DelSimuAct.ttip.Delete = Die ausgewählte Simulation löschen.\r
+RocketActions.DelAct.Delete = Löschen\r
+RocketActions.DelAct.ttip.Delete = Die ausgewählte Komponente oder Simulation löschen.\r
+RocketActions.CutAction.Cut = Ausschneiden\r
+RocketActions.CutAction.ttip.Cut = Diese Komponente oder Simulation ausschneiden und aus dem Design entfernen\r
+RocketActions.CopyAct.Copy = Kopieren\r
+RocketActions.CopyAct.ttip.Copy = Komponente (und Subkomponenten) in die Zwischenablage kopieren.\r
+RocketActions.PasteAct.Paste = Einfügen\r
+RocketActions.PasteAct.ttip.Paste = Fügt die Komponente oder Simulation aus der Zwischenablage in das Design ein.\r
+RocketActions.EditAct.Edit = Bearbeiten\r
+RocketActions.EditAct.ttip.Edit = Die ausgewählte Komponente bearbeiten.\r
+RocketActions.NewStageAct.Newstage = Neue Stufe\r
+RocketActions.NewStageAct.ttip.Newstage = Fügt eine neue Stufe in das Raketendesign ein.\r
+RocketActions.ActBoosterstage = Booster-Stufe\r
+RocketActions.MoveUpAct.Moveup = Nach oben verschieben\r
+RocketActions.MoveUpAct.ttip.Moveup = Verschiebt diese Komponente nach oben.\r
+RocketActions.MoveDownAct.Movedown = Nach unten verschieben\r
+RocketActions.MoveDownAct.ttip.Movedown = Verschiebt diese Komponente nach unten.\r
+\r
+! RocketPanel\r
+RocketPanel.FigTypeAct.Sideview = Seitenansicht\r
+RocketPanel.FigTypeAct.ttip.Sideview = Seitenansicht\r
+RocketPanel.FigTypeAct.Backview = Rückansicht\r
+RocketPanel.FigTypeAct.ttip.Backview = Vorderansicht\r
+RocketPanel.lbl.Motorcfg = Motorkonfiguration\r
+RocketPanel.lbl.infoMessage = <html>Zum Auswählen klicken&nbsp;&nbsp; Shift+Klick andere auswählen &nbsp;&nbsp; Doppelklick zum Bearbeiten &nbsp;&nbsp; Klicken+Ziehen zum Verschieben\r
+\r
+\r
+! BasicFrame\r
+BasicFrame.SimpleFileFilter1 = Alle Raketendesigns (*.ork; *.rkt)\r
+BasicFrame.SimpleFileFilter2 = OpenRocket Designs (*.ork)\r
+BasicFrame.SimpleFileFilter3 = RockSim Designs (*.rkt)\r
+BasicFrame.tab.Rocketdesign = Raketendesign\r
+BasicFrame.tab.Flightsim = Flugsimulation\r
+BasicFrame.title.Addnewcomp = Neue Komponente hinzufügen\r
+BasicFrame.item.Openrocketdesign = Raketendesign öffnen\r
+BasicFrame.item.Openexamplerocketdesign = Beispieldesign öffnen\r
+BasicFrame.item.SavecurRocketdesign = Aktuelles Raketendesign speichern\r
+BasicFrame.item.SavecurRocketdesnewfile = Aktuelles Raketendesign in eine neue Datei speichern\r
+BasicFrame.item.Printpart = Komponentenliste und Leitwerkschablone drucken\r
+BasicFrame.item.Closedesign = Aktuelles Raketendesign schließen\r
+BasicFrame.item.Quitprogram = Programm beenden\r
+BasicFrame.menu.Rocketedt = Rakete bearbeiten\r
+BasicFrame.dlg.lbl1 = Design '\r
+BasicFrame.dlg.lbl2 = ist nicht gespeichert.\r
+BasicFrame.dlg.lbl3 = Möchten Sie es speichern?\r
+BasicFrame.dlg.title = Design nicht gespeichert\r
+BasicFrame.StageName.Sustainer = Sustainer\r
+BasicFrame.WarningDialog.txt1 = Die folgenden Probleme würden beim Öffnen festgestellt\r
+BasicFrame.WarningDialog.txt2 = Einige Designeigenschaften wurde eventuell nicht korrekt geladen.\r
+BasicFrame.WarningDialog.title = Warnungen während des Öffnens der Datei\r
+\r
+! Labels used in buttons of dialog windows\r
+button.ok = OK\r
+button.cancel = Abbrechen\r
+button.close = Schließen\r
+\r
+! Common labels used in buttons of dialog windows\r
+dlg.but.ok = OK\r
+dlg.but.cancel = Abbrechen\r
+dlg.but.close = Schließen\r
+\r
+! About Dialog\r
+about.dlg.but.close = Schließen\r
+about.dlg.lbl.translation = Ins Deutsche übersetzt von Stefan Lobas (ERIG e.V.)\r
+about.dlg.lbl.transwebsite = http://www.er-ig.de/\r
+\r
+! Bug Report dialog\r
+bugreport.dlg.title = Fehlerbericht\r
+bugreport.dlg.but.Sendbugreport = Fehlerbericht senden\r
+bugreport.dlg.but.Sendbugreport.Ttip = Automatische einen Fehlerbericht an die OpenRocket-Entwickler senden.\r
+bugreport.dlg.successmsg1 = Fehlerbericht erfolgreich gesendet.\r
+bugreport.dlg.successmsg2 = Danke für die Hilfe, OpenRocket noch besser zu machen!\r
+bugreport.dlg.successmsg3 = Fehlerbericht gesendet\r
+bugreport.dlg.connectedInternet = <html>Wenn Sie mit dem Internet verbunden sind, können Sie einfach auf <em>Fehlerbericht senden</em> klicken.\r
+bugreport.dlg.otherwise = Sonst senden Sie den den folgenden Text an diese Adresse:\r
+bugreport.lbl.Theinformation = Die oben stehenden Informationen können in einem öffentlichen Fehlerbericht erscheinen. Bitte stellen Sie sicher, dass der Bericht keine sensiblen Informationen enthält, die nicht veröffentlicht werden sollen!\r
+bugreport.dlg.failedmsg1 = OpenRocket konnte den Fehlerbericht nicht versenden:\r
+bugreport.dlg.failedmsg2 = Bitte senden Sie den Bericht manuell an\r
+bugreport.dlg.failedmsg3 = Fehler beim Versenden des Berichts\r
+bugreport.reportDialog.txt = <html><b>Sie können eine Fehler in OpenRocket mitteilen, indem Sie das unten stehende Formular ausfüllen und abschicken.</b><br>Sie können Fehler mit angehängten Dateien auch auf der Projekt-Website mitteilen.\r
+bugreport.reportDialog.txt2 = Bitte beschreiben Sie kurz, was Sie getan haben, als der Fehler auftrat.</b>\r
+\r
+\r
+! Debug log dialog\r
+debuglogdlg.but.clear = Löschen\r
+debuglogdlg.OpenRocketdebuglog = OpenRocket Fehler-Log\r
+debuglogdlg.Displayloglines = Zeige Log-Zeilen:\r
+debuglogdlg.Follow = Folgen\r
+debuglogdlg.col.Time = Zeit\r
+debuglogdlg.col.Level = Level\r
+debuglogdlg.col.Location = Ort\r
+debuglogdlg.col.Message = Nachricht\r
+debuglogdlg.lbl.Loglinenbr = Log-Zeilennummer\r
+debuglogdlg.lbl.Time = Zeit:\r
+debuglogdlg.lbl.Level = Level:\r
+\r
+\r
+! Edit Motor configuration dialog\r
+edtmotorconfdlg.but.removemotor = Motor entfernen\r
+edtmotorconfdlg.but.Selectmotor = Motor auswählen\r
+edtmotorconfdlg.but.Removeconfiguration = Konfiguration entfernen\r
+edtmotorconfdlg.but.Newconfiguration = Neue Konfiguration\r
+edtmotorconfdlg.lbl.Motormounts = <html><b>Motorhalterungen:</b>\r
+edtmotorconfdlg.title.Editmotorconf = Motorkonfiguration bearbeiten\r
+edtmotorconfdlg.selectcomp = <html>Auswählen, welche Komponenten Motorhalterungen sind:\r
+edtmotorconfdlg.lbl.Motorconfig = <html><b>Motorkonfigurationen:</b>\r
+edtmotorconfdlg.lbl.Configname = Name der Konfiguration:\r
+edtmotorconfdlg.lbl.Leavenamedefault = Leer lassen für Standardwert.\r
+\r
+! Example design dialog\r
+exdesigndlg.but.open = Öffnen\r
+exdesigndlg.lbl.Selectexample = Beispieldesigns zum Öffnen auswählen:\r
+exdesigndlg.lbl.Openexampledesign = Beispieldesign öffnen\r
+exdesigndlg.lbl.Exampledesignsnotfound = Beispieldesigns konnten nicht gefunden werden.\r
+exdesigndlg.lbl.Examplesnotfound = Beispieldesign konnten nicht gefunden werden\r
+\r
+! Print panel dialog\r
+printdlg.but.saveaspdf = Als PDF speichern\r
+printdlg.but.preview = Vorschau\r
+printdlg.but.settings = Einstellungen\r
+\r
+! Material edit panel\r
+matedtpan.but.new = Neu\r
+matedtpan.but.edit = Bearbeiten\r
+matedtpan.but.delete = Löschen\r
+matedtpan.but.revertall = Alle löschen\r
+matedtpan.col.Material = Material\r
+matedtpan.col.Type = Typ\r
+matedtpan.col.Density = Dichte\r
+matedtpan.col.but.ttip.New = Neues Material hinzufügen\r
+matedtpan.title.Addcustmaterial = Benutzerdefiniertes Material hinzufügen\r
+matedtpan.but.ttip.edit = Bestehendes Material bearbeiten\r
+matedtpan.title.Editmaterial = Material bearbeiten\r
+matedtpan.title2.Editmaterial = Die mitgelieferten Materialien können nicht verändert werden.\r
+matedtpan.but.ttip.delete = Benutzerdefiniertes Material löschen\r
+matedtpan.but.ttip.revertall = Alle benutzerdefinierten Materialien löschen\r
+matedtpan.title.Deletealluser-defined = Alle benutzerdefinierten Materialien löschen?\r
+matedtpan.title.Revertall = Alle löschen?\r
+matedtpan.lbl.edtmaterials = <html><i>Das Bearbeiten der Materialien beeinflusst keine bereits existierenden Raketendesigns.</i>\r
+\r
+!MaterialModel\r
+MaterialModel.title.Material = Material\r
+MaterialModel.title.Defcustmat = Benutzerdefiniertes Material definieren\r
+\r
+\r
+! Preference dialog\r
+pref.dlg.but.add = Hinzufügen\r
+pref.dlg.but.reset = Zurücksetzen\r
+pref.dlg.but.checknow = Jetzt überprüfen\r
+pref.dlg.but.defaultmetric = Metrisches System\r
+pref.dlg.but.defaultimperial = Imperialistisches System\r
+pref.dlg.title.Preferences = Einstellungen\r
+pref.dlg.tab.Units = Einheiten\r
+pref.dlg.tab.Defaultunits = Standardeinheiten\r
+pref.dlg.tab.Materials = Materialien\r
+pref.dlg.tab.Custommaterials = Benutzerdefinierte Materialien\r
+pref.dlg.tab.Options = Optionen\r
+pref.dlg.tab.Miscellaneousoptions = Weiter Optionen\r
+pref.dlg.lbl.Positiontoinsert = Position, um neue Komponenten einzufügen:\r
+pref.dlg.lbl.Confirmdeletion = Löschen von Simulationen bestätigen\r
+pref.dlg.lbl.User-definedthrust = Benutzerdefinierte Schubkurven:\r
+pref.dlg.Allthrustcurvefiles = Alle Schubkurvendateien (*.eng; *.rrse; *.zzip; Verzeichnisse)\r
+pref.dlg.RASPfiles = RASP Schubkurven (*.eng)\r
+pref.dlg.RockSimfiles = RockSim Schubkurven(*.rse)\r
+pref.dlg.ZIParchives = ZIP-Archiv (*.zip)\r
+pref.dlg.checkbox.Checkupdates = Beim Starten auf neue Version prüfen\r
+pref.dlg.ttip.Checkupdatesnow = Jetzt auf neue Version prüfen\r
+pref.dlg.lbl.Selectprefunits = Wählen Sie Ihre bevorzugten Einheiten aus:\r
+pref.dlg.lbl.Rocketdimensions = Raketendimensionen:\r
+pref.dlg.lbl.Linedensity = Liniendichte:\r
+pref.dlg.lbl.Motordimensions = Motordimensionen:\r
+pref.dlg.lbl.Surfacedensity = Oberflächendichte:\r
+pref.dlg.lbl.Distance = Entfernung:\r
+pref.dlg.lbl.Bulkdensity = Bulk density::\r
+pref.dlg.lbl.Velocity = Geschwindigkeit\r
+pref.dlg.lbl.Surfaceroughness = Oberflächenrauhheit:\r
+pref.dlg.lbl.Acceleration = Beschleunigung:\r
+pref.dlg.lbl.Area = Fläche\r
+pref.dlg.lbl.Mass = Masse:\r
+pref.dlg.lbl.Angle = Winkel:\r
+pref.dlg.lbl.Force = Kraft:\r
+pref.dlg.lbl.Rollrate = Roll-Rate:\r
+pref.dlg.lbl.Totalimpulse = Gesamtimpuls:\r
+pref.dlg.lbl.Temperature = Temperatur:\r
+pref.dlg.lbl.Momentofinertia = Trägheitsmoment:\r
+pref.dlg.lbl.Pressure = Druck:\r
+pref.dlg.lbl.Stability = Stabilität\r
+pref.dlg.lbl.effect1 = Die Änderungen werden wirksam, wenn Sie das nächste Mal ein Fenster öffnen.\r
+pref.dlg.lbl.Checkingupdates = Prüfe, ob Aktualisierungen verfügbar sind...\r
+pref.dlg.lbl.msg1 = Ein Fehler trat bei der Kommunikation mit dem Server auf.\r
+pref.dlg.lbl.msg2 = Es konnten keine Informationen über Programmaktualisierungen empfangen werden.\r
+pref.dlg.lbl.msg3 = Sie benutzen die neueste Version von OpenRocket.\r
+pref.dlg.lbl.msg4 = Keine Aktualisierungen verfügbar.\r
+pref.dlg.PrefChoiseSelector1 = Immer fragen\r
+pref.dlg.PrefChoiseSelector2 = in der Mitte einfügen\r
+a = an das Ende anhängen\r
+pref.dlg.PrefBooleanSelector1 = Löschen\r
+pref.dlg.PrefBooleanSelector2 = Bestätigen\r
+pref.dlg.Add = Hinzufügen\r
+pref.dlg.DescriptionArea.Adddirectories = Um eigene Schubkurven zu laden, Verzeichnisse, RASP-Motordateien (*.eng), RockSim-Motordateien (*.rse) oder ZIP-Archive mit Semikolon getrennt eingeben. Änderungen werden beim nächsten Neustart von OpenRocket übernommen.\r
+\r
+\r
+! Simulation edit dialog\r
+simedtdlg.but.runsimulation = Simulation starten\r
+simedtdlg.but.resettodefault = Auf Standardeinstellungen zurücksetzen\r
+simedtdlg.but.add = Hinzufügen\r
+simedtdlg.but.remove = Entfernen\r
+simedtdlg.title.Editsim = Simulation bearbeiten\r
+simedtdlg.lbl.Simname = Name der Simulation:\r
+simedtdlg.tab.Launchcond = Startbedingungen\r
+simedtdlg.tab.Simopt = Simulationsoptionen\r
+simedtdlg.tab.Plotdata = Daten plotten\r
+simedtdlg.tab.Exportdata = Daten exportieren\r
+simedtdlg.lbl.Motorcfg = Motorkonfiguration:\r
+simedtdlg.lbl.ttip.Motorcfg = Motorkonfiguration auswählen\r
+simedtdlg.combo.ttip.motorconf = Die Motorkonfiguration auswählen.\r
+simedtdlg.lbl.Wind = Wind\r
+simedtdlg.lbl.Averwindspeed = Durchschnittliche Windgeschwindigkeit:\r
+simedtdlg.lbl.ttip.Averwindspeed = Die durchschnittliche Windgeschwindigkeit relativ zum Boden.\r
+simedtdlg.lbl.Stddeviation = Standardabweichung\r
+simedtdlg.lbl.ttip.Stddeviation = <html>Die Standardabweichung der Windgeschwindigkeit. <br>Die Windgeschwindigkeit liegt im Durchschnitt zu 95% der Zeit in der doppelten Standardabweichung.\r
+simedtdlg.lbl.Turbulenceintensity = Intensität der Turbulenz:\r
+simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>Die Intensität der Turbulenz ist die Standardabweichung geteilt durch durch die durchschnittliche Windgeschwindigkeit.<br>\r
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Typischer Wertebereich von\r
+simedtdlg.lbl.ttip.Turbulenceintensity3 = bis\r
+simedtdlg.border.Atmoscond = Atmosphärische Bedingungen\r
+simedtdlg.checkbox.InterStdAtmosphere = Internationale Standardatmosphäre benutzen\r
+simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Auswählen, um das Modell der Internationalen Standardatmosphäre zu verwenden.<br>In diesem Modell gilt eine Temperatur von\r
+simedtdlg.checkbox.ttip.InterStdAtmosphere2 = und ein Luftdruck von\r
+simedtdlg.checkbox.ttip.InterStdAtmosphere3 = auf Meeresniveau.\r
+simedtdlg.lbl.Temperature = Temperatur:\r
+simedtdlg.lbl.ttip.Temperature = Die Temperatur am Startplatz.\r
+simedtdlg.lbl.Pressure = Luftdruck:\r
+simedtdlg.lbl.ttip.Pressure = Der Luftdruck am Startplatz.\r
+simedtdlg.lbl.Launchsite = Startplatz\r
+simedtdlg.lbl.Latitude = Breitengrad:\r
+simedtdlg.lbl.ttip.Latitude = <html>Der Breitengrad des Startplatzes beeinflusst die wirksame Gravitationskraft.<br>Positive Werte liegen auf der Nordhalbkugel, negative Werte auf der Südhalbkugel.\r
+simedtdlg.lbl.Altitude = Höhe:\r
+simedtdlg.lbl.ttip.Altitude = <html>Die Höhe des Startplatzes über Meeresniveau.<br>Die Höhe des Startplatzes beeinflusst die Position der Rakete im atmosphärischen Modell.\r
+simedtdlg.border.Launchrod = Startrampe\r
+simedtdlg.lbl.Length = Länge:\r
+simedtdlg.lbl.ttip.Length = Die Länge der Startrampe\r
+simedtdlg.lbl.Angle = Winkel:\r
+simedtdlg.lbl.ttip.Angle = Der Winkel der Startrampe aus der Vertikalen.\r
+simedtdlg.lbl.Direction = Richtung:\r
+simedtdlg.lbl.ttip.Direction1 = <html>Richtung der Startrampe relativ zur Windrichtung<br>\r
+simedtdlg.lbl.ttip.Direction2 =  = gegen den Wind.\r
+simedtdlg.lbl.ttip.Direction3 = = mit dem Wind\r
+simedtdlg.border.Simopt = Simulationsoptionen\r
+simedtdlg.lbl.Calcmethod = Berechnungsmethode\r
+simedtdlg.lbl.ttip.Calcmethod = <html>Die erweiterte Methode nach Barrowman berechnet die aerodynamischen Kräfte<br>nach den Gleichungen von Barrowman, die um weitere Faktoren erweitert wurden.\r
+simedtdlg.lbl.ExtBarrowman = Barrowman (erweitert)\r
+simedtdlg.lbl.Simmethod = Simulationsmethode:\r
+simedtdlg.lbl.ttip.Simmethod1 = <html>Der Sechs-Freiheitsgradsimulator erlaubt der Rakete völlige Bewegungsfreiheit während des Fluges.<br>\r
+simedtdlg.lbl.ttip.Simmethod2 = Das Integrieren wird nach dem numerischen Runge-Kutta-Verfahren 4. Ordnung durchgeführt.\r
+simedtdlg.lbl.Timestep = Zeitschritt:\r
+simedtdlg.lbl.ttip.Timestep1 = <html>Die Zeit zwischen den Simulationsschritten.<br>Kleinere Schritte ergeben genauere Ergebnisse, die Simulationen dauern aber länger.<br>\r
+simedtdlg.lbl.ttip.Timestep2 = Die Berechnung der Simulation mit dem Verfahren 4. Ordnung liefert gute Ergebnisse mit Zeitschritten von\r
+simedtdlg.but.ttip.resettodefault = Zeitschritte zurücksetzen auf den Standardwert (\r
+simedtdlg.border.Simlist = Simulationsempfänger\r
+simedtdlg.txt.longA1 = <html><i>Simulationsempfänger</i> sind ein fortgeschrittenes Feature, dass es benutzerdefinierten Programmen erlaubt, die Simulationsdaten zu empfangen und mit der Simulation zu interagieren.  \r
+simedtdlg.txt.longA2 = Mehr Information zum Schreiben von Simualtionsempfängern sind in der OpenRocket technical documentation zu finden.\r
+simedtdlg.lbl.Curlist = Aktuelle Simulationsempfänger:\r
+simedtdlg.lbl.Addsimlist = Simulationsempfänger hinzufügen\r
+simedtdlg.lbl.Noflightdata = Keine Flugdaten verfügbar.\r
+simedtdlg.lbl.runsimfirst = Bitte erst die Simulation ausführen.\r
+simedtdlg.chart.Simflight = Simulierter Flug\r
+simedtdlg.dlg.Simres = Ergebnisse der Simulation\r
+simedtdlg.IntensityDesc.None = Keine\r
+simedtdlg.IntensityDesc.Verylow = Sehr niedrig\r
+simedtdlg.IntensityDesc.Low = Niedrig\r
+simedtdlg.IntensityDesc.Medium = Mittel\r
+simedtdlg.IntensityDesc.High = Hoch\r
+simedtdlg.IntensityDesc.Veryhigh = Sehr hoch\r
+simedtdlg.IntensityDesc.Extreme = Extrem\r
+\r
+\r
+\r
+! Simulation Panel\r
+simpanel.but.newsimulation = Neue Simulation\r
+simpanel.but.editsimulation = Simulation bearbeiten\r
+simpanel.but.runsimulations = Simulation ausführen\r
+simpanel.but.deletesimulations = Simulation löschen\r
+simpanel.but.plotexport = Plotten / exportieren\r
+simpanel.but.ttip.newsimulation = Neue Simulation hinzufügen\r
+simpanel.but.ttip.editsim = Ausgewählte Simulation bearbeiten\r
+simpanel.but.ttip.runsimu = Neuberechnen der ausgewählten Simulationen\r
+simpanel.but.ttip.deletesim = Ausgewählte Simulationen löschen\r
+simpanel.checkbox.donotask = Nicht wieder fragen\r
+simpanel.lbl.defpref = Die Standardaktion kann in den Einstellungen geändert werden.\r
+simpanel.dlg.lbl.DeleteSim1 = Die ausgewählten Simulationen löschen?\r
+simpanel.dlg.lbl.DeleteSim2 = <html><i>Diese Aktion kann nicht rückgängig gemacht werden.</i>\r
+simpanel.dlg.lbl.DeleteSim3 = Simulationen löschen\r
+simpanel.col.Name = Name der Simulation:\r
+simpanel.col.Motors = Motoren\r
+simpanel.col.Apogee = Apogäum\r
+simpanel.col.Maxvelocity = max. Geschwindigkeit\r
+simpanel.col.Maxacceleration = max. Beschleunigung\r
+simpanel.col.Timetoapogee = Zeit bis zum Apogäum\r
+simpanel.col.Flighttime = Flugzeit\r
+simpanel.col.Groundhitvelocity = Landegeschwindigkeit\r
+\r
+! SimulationRunDialog\r
+SimuRunDlg.title.RunSim = Simuliere...\r
+SimuRunDlg.lbl.Running = Arbeite...\r
+SimuRunDlg.lbl.Simutime = Simulationsdauer:\r
+SimuRunDlg.lbl.Altitude = Höhe:\r
+SimuRunDlg.lbl.Velocity = Geschwindigkeit:\r
+SimuRunDlg.msg.Unabletosim = Simulieren nicht möglich:\r
+SimuRunDlg.msg.errorOccurred = Während der Simulation trat ein Fehler auf:\r
+SimuRunDlg.msg.AnException1 = Während der Simulation trat eine Ausnahme auf:\r
+SimuRunDlg.msg.AnException2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details.\r
+SimuRunDlg.msg.AssertionError1 = Während der Simulation trat ein Berechnungsfehler auf:\r
+SimuRunDlg.msg.AssertionError2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details.\r
+SimuRunDlg.msg.unknownerror1 = Während der Simulation trat ein unbekannter Fehler auf:\r
+SimuRunDlg.msg.unknownerror2 = Das Programm könnte instabil sein, speichern Sie Ihr Design und starten Sie OpenRocket neu!\r
+\r
+\r
+\r
+! SimulationExportPanel\r
+SimExpPan.desc = Komma getrennte Werte (*.csv)\r
+SimExpPan.border.Vartoexport = zu exportierende Variablen\r
+SimExpPan.but.Selectall = Alle auswählen\r
+SimExpPan.but.Selectnone = Keine auswählen\r
+SimExpPan.border.Fieldsep = Feldtrennung\r
+SimExpPan.lbl.Fieldsepstr = Trennzeichen\r
+SimExpPan.lbl.longA1 = <html>Das Trennzeichen wird benutzt, um die Felder in der exportierten Datei voneinander zu trennen.<br>\r
+SimExpPan.lbl.longA2 = Für eine CSV-Datei (Comma Separated Values) ein ',' benutzen.\r
+SimExpPan.checkbox.Includesimudesc = Simulationsbeschreibung einfügen\r
+SimExpPan.checkbox.ttip.Includesimudesc = Fügt einen Kommentar mit einer Simulationsbeschreibung am Anfang der Datei ein.\r
+SimExpPan.border.Comments = Kommentare\r
+SimExpPan.checkbox.Includefielddesc = Feldbeschreibungen einfügen\r
+SimExpPan.checkbox.ttip.Includefielddesc = Fügt eine Kommentarzeile mit der Beschreibung der exportierten Variablen ein.\r
+SimExpPan.checkbox.Incflightevents = Flugereignisse einfügen\r
+SimExpPan.checkbox.ttip.Incflightevents = Fügt eine Kommentarzeile für jedes Flugereignis ein.\r
+SimExpPan.lbl.Commentchar = Kommentarzeichen:\r
+SimExpPan.lbl.ttip.Commentchar = Zeichen, das einen Kommentar in der exportierten Datei kennzeichnet.\r
+SimExpPan.but.Exporttofile = In Datei exportieren...\r
+SimExpPan.Fileexists.desc1 = File \"",Datei \«"\r
+SimExpPan.Fileexists.desc2 = \" existiert bereits. Überschreiben?"\r
+SimExpPan.Fileexists.title = Datei existiert bereits\r
+SimExpPan.ExportingVar.desc1 = Exportiere Variable 1 aus\r
+SimExpPan.ExportingVar.desc2 = Exportiere\r
+SimExpPan.ExportingVar.desc3 = Variablen aus\r
+SimExpPan.Col.Variable = Variable\r
+SimExpPan.Col.Unit = Einheit\r
+\r
+! MotorPlot\r
+MotorPlot.title.Motorplot = Motorkurve\r
+MotorPlot.but.Select = Auswahl\r
+MotorPlot.Chart.Motorthrustcurve = Motorschubkurve\r
+MotorPlot.Chart.Time = Zeit / s\r
+MotorPlot.Chart.Thrust = Schub / N\r
+MotorPlot.txt.Designation = Bezeichnung:\r
+MotorPlot.txt.Manufacturer = Hersteller\r
+MotorPlot.txt.Type = Typ:\r
+MotorPlot.txt.Delays = Verzögerungen:\r
+MotorPlot.txt.Comment = Kommentare:\n\r
+\r
+\r
+\r
+! Simulation plot panel\r
+simplotpanel.lbl.Presetplotconf = Plotparameter setzen\r
+simplotpanel.lbl.Xaxistype = X-Achse:\r
+simplotpanel.lbl.Unit = Einheit:\r
+simplotpanel.lbl.Yaxistypes = Y-Achse:\r
+simplotpanel.lbl.Flightevents = Flugereignisse:\r
+simplotpanel.but.All = Alle auswählen\r
+simplotpanel.but.None = Keine\r
+simplotpanel.but.NewYaxisplottype = Neuer Y-Achsenplot-Typ\r
+simplotpanel.but.Plotflight = Flug plotten\r
+simplotpanel.lbl.Axis = Achsen:\r
+simplotpanel.but.ttip.Removethisplot = Diesen Plot löschen\r
+simplotpanel.Desc = Die Daten werden in zeitlicher Reihenfolge geplottet, auch wenn der X-Achsen-Typ nicht Zeit ist.\r
+simplotpanel.OptionPane.lbl1 = Es sind maximal 15 Plots erlaubt.\r
+simplotpanel.OptionPane.lbl2 = Plot konnte nicht hinzugefügt werden\r
+simplotpanel.AUTO_NAME = Auto\r
+simplotpanel.LEFT_NAME = Links\r
+simplotpanel.RIGHT_NAME = Rechts\r
+simplotpanel.CUSTOM = Benutzerdefiniert\r
+\r
+! Component add buttons\r
+compaddbuttons.Bodycompandfinsets = Körperteile und Leitwerke\r
+compaddbuttons.Nosecone = Spitze\r
+compaddbuttons.Bodytube = Körperrohr\r
+compaddbuttons.Transition = Übergang\r
+compaddbuttons.Trapezoidal = Trapeziod\r
+compaddbuttons.Elliptical = Elliptisch\r
+compaddbuttons.Freeform = Freiform\r
+compaddbuttons.Launchlug = Leit-\nröhrchen\r
+compaddbuttons.Innercomponent = Innenteile\r
+compaddbuttons.Innertube = Innenrohr\r
+compaddbuttons.Coupler = Koppler\r
+compaddbuttons.Centeringring = Zentrier-\nring\r
+compaddbuttons.Bulkhead = Schott\r
+compaddbuttons.Engineblock = Motor-\nblock\r
+compaddbuttons.Massobjects = Massenobjekte\r
+compaddbuttons.Parachute = Fallschirm\r
+compaddbuttons.Streamer = Strömer\r
+compaddbuttons.Shockcord = Gummiseil\r
+compaddbuttons.Masscomponent = Massen-\nobjekt\r
+compaddbuttons.Donotaskmeagain = Nicht wieder fragen\r
+compaddbuttons.Selectcomppos = Komponentenposition auswählen\r
+compaddbuttons.lbl.Youcanchange = Die Standardaktion kann in den Einstellungen geändert werden.\r
+compaddbuttons.lbl.insertcomp = Die Komponente nach der aktuellen Komponente oder als letzte Komponente einfügen?\r
+compaddbuttons.askPosition.Inserthere = Hier einfügen\r
+compaddbuttons.askPosition.Addtotheend = Zum Ende hinzufügen\r
+compaddbuttons.askPosition.Cancel = Abbrechen\r
+\r
+! Component Analysis Dialog\r
+componentanalysisdlg.componentanalysis = Component analysis\r
+componentanalysisdlg.lbl.winddir = Windrichtung\r
+componentanalysisdlg.TitledBorder.warnings = Warnungen:\r
+componentanalysisdlg.ToggleBut.worst = Worst\r
+componentanalysisdlg.lbl.angleofattack = Angriffswinkel:\r
+componentanalysisdlg.lbl.machnumber = Machzahl:\r
+componentanalysisdlg.lbl.rollrate = Rollrate:\r
+componentanalysisdlg.lbl.activestages = Aktive Stufen:\r
+componentanalysisdlg.lbl.motorconf = Motorkonfiguration:\r
+componentanalysisdlg.TabStability.Col = Komponente\r
+componentanalysisdlg.TabStability = Stabilität\r
+componentanalysisdlg.TabStability.ttip = Stabilitätsinformationen\r
+componentanalysisdlg.dragTableModel.Col.Component = Komponente\r
+componentanalysisdlg.dragTableModel.Col.Pressure = <html>Druck C<sub>D</sub>\r
+componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>\r
+componentanalysisdlg.dragTableModel.Col.friction = <html>Reibung C<sub>D</sub>\r
+componentanalysisdlg.dragTableModel.Col.total = <html>Gesamt C<sub>D</sub>\r
+componentanalysisdlg.dragTabchar = Drag characteristics\r
+componentanalysisdlg.dragTabchar.ttip = Drag characteristics\r
+componentanalysisdlg.rollTableModel.Col.component = Komponente\r
+componentanalysisdlg.rollTableModel.Col.rollforc = Roll forcing coefficient\r
+componentanalysisdlg.rollTableModel.Col.rolldamp = Roll damping coefficient\r
+componentanalysisdlg.rollTableModel.Col.total = <html>Gesamt C<sub>l</sub>\r
+componentanalysisdlg.rollTableModel = Rolldynamik\r
+componentanalysisdlg.rollTableModel.ttip = Rolldynamik\r
+componentanalysisdlg.println.closingmethod = Closing method called:\r
+componentanalysisdlg.println.settingnam = SETTING NAN VALUES\r
+componentanalysisdlg.lbl.reflenght = Referenzlänge:\r
+componentanalysisdlg.lbl.refarea = Referenzfläche:\r
+!componentanalysisdlg.But.close =Close\r
+\r
+! Custom Material dialog\r
+custmatdlg.title.Custommaterial = Benutzerdefiniertes Material\r
+custmatdlg.lbl.Materialname = Name des Materials:\r
+custmatdlg.lbl.Materialtype = Materialtyp\r
+custmatdlg.lbl.Materialdensity = Materialdichte:\r
+custmatdlg.checkbox.Addmaterial = Material zur Datenbank hinzufügen\r
+\r
+\r
+! Ring Component Config\r
+ringcompcfg.OuterRadius = Äußerer Radius\r
+ringcompcfg.Automatic = Automatisch\r
+ringcompcfg.InnerRadius = Innerer Radius\r
+ringcompcfg.Thickness = Wandstärke\r
+ringcompcfg.Length = Länge\r
+ringcompcfg.Positionrelativeto = Relative Position zu:\r
+ringcompcfg.plus = plus\r
+ringcompcfg.PositionValue = Positionswert\r
+ringcompcfg.Radialdistance = Radialer Abstand:\r
+ringcompcfg.Distancefrom = Abstand von der Raketenmittellinie\r
+ringcompcfg.Radialdirection = Radiale Richtung\r
+ringcompcfg.radialdirectionfrom = Die radiale Richtung von der Raketenmittellinie\r
+ringcompcfg.but.Reset = Zurücksetzen\r
+ringcompcfg.but.Resetcomponant = Komponente auf die Raketenmittellinie zurücksetzen\r
+ringcompcfg.EngineBlock.desc = <html>Eine <b>Motorhalterung</b> verhindert, dass der Motor sich im Rohr nach vorne bewegt.<br><br>Um einen Motor hinzuzufügen, ein <b>Körperrohr</b> oder ein <b>Innenrohr</b> hinzufügen und im Reiter <em>Motor</em> als Motorhalterung markieren.\r
+ringcompcfg.note.desc = Hinweis: Innenrohre beeinflussen die Aerodynamik der Rakete nicht, auch wenn sie außerhalb des Körperohres liegen.\r
+\r
+\r
+! Body Tube Config\r
+BodyTubecfg.lbl.Bodytubelength = Länge des Körperrohres:\r
+BodyTubecfg.lbl.Outerdiameter = Außendurchmesser:\r
+BodyTubecfg.lbl.Innerdiameter = Innendurchmesser:\r
+BodyTubecfg.lbl.Wallthickness = Wandstärke:\r
+BodyTubecfg.tab.General = Allgemein\r
+BodyTubecfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+BodyTubecfg.tab.Motor = Motor\r
+BodyTubecfg.tab.Motormountconf = Motorkonfiguration\r
+BodyTubecfg.checkbox.Automatic = Automatisch\r
+BodyTubecfg.checkbox.Filled = Gefüllt\r
+\r
+! FinSetConfig\r
+FinSetConfig.tab.Fintabs = Leitwerke\r
+FinSetConfig.tab.Through-the-wall = Durchsteckbare Leitwerke\r
+FinSetConfig.but.Converttofreeform = In Freiform konvertieren\r
+FinSetConfig.but.Converttofreeform.ttip = Konvertiert diese Leitwerke in eine Freiform\r
+FinSetConfig.Convertfinset = Leitwerke konvertieren\r
+FinSetConfig.but.Splitfins = Geteilte Leitwerke\r
+FinSetConfig.but.Splitfins.ttip = Teilt den Leitwerkssatz in getrennte Leitwerke\r
+FinSetConfig.lbl.Through-the-wall  = Durchsteckbare Leitwerke:\r
+FinSetConfig.lbl.Tablength = Länge:\r
+FinSetConfig.ttip.Tablength = Länge des Leitwerks.\r
+FinSetConfig.lbl.Tabheight = Höhe:\r
+FinSetConfig.ttip.Tabheight = Spannweite des Leitwerks.\r
+FinSetConfig.lbl.Tabposition = Position:\r
+FinSetConfig.ttip.Tabposition = Position des Leitwerks.\r
+FinSetConfig.lbl.relativeto = relativ zu\r
+\r
+! MotorDatabaseLoadingDialog\r
+MotorDbLoadDlg.title = Lade Motoren\r
+MotorDbLoadDlg.Loadingmotors = Lade Motoren...\r
+\r
+! RocketConfig\r
+RocketCfg.lbl.Designname = Name der Rakete:\r
+RocketCfg.lbl.Designer = Ersteller:\r
+RocketCfg.lbl.Comments = Kommentare:\r
+RocketCfg.lbl.Revisionhistory = Versionsgeschichte:\r
+RocketCfg.lbl.Material = Material:\r
+\r
+! ShockCordConfig\r
+ShockCordCfg.lbl.Shockcordlength = Gummiseillänge\r
+\r
+! RocketComponentConfig\r
+RocketCompCfg.lbl.Componentname = Komponentenname:\r
+RocketCompCfg.ttip.Thecomponentname = Name der Komponente.\r
+RocketCompCfg.tab.Override = Werte überschreiben\r
+RocketCompCfg.tab.MassandCGoverride = Massen- und Schwerpunktsoptionen\r
+RocketCompCfg.tab.Figure = Form\r
+RocketCompCfg.tab.Figstyleopt = Formoptionen\r
+RocketCompCfg.tab.Comment = Kommentar\r
+RocketCompCfg.tab.Specifyacomment = Kommentar zu dieser Komponente\r
+RocketCompCfg.lbl.Mass = Masse:\r
+RocketCompCfg.lbl.Componentmass = Masse der Komponente:\r
+RocketCompCfg.lbl.overriddento = (überschrieben auf\r
+RocketCompCfg.lbl.overriddenby = (überschrieben durch\r
+RocketCompCfg.lbl.Componentmaterial = Material:\r
+RocketCompCfg.lbl.Componentfinish = Oberfläche:\r
+RocketCompCfg.lbl.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente.\r
+RocketCompCfg.combo.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente.\r
+RocketCompCfg.lbl.longA1 = <html>Die Oberfläche beeinflusst den aerodynamischen Widerstand der Komponente.<br>\r
+RocketCompCfg.lbl.longA2 = Der angegebene Wert ist die durchschnittliche Rautiefe der Oberfläche.\r
+RocketCompCfg.but.Setforall = Für alle setzen\r
+RocketCompCfg.but.ttip.Setforall = Diese Oberflächen für alle Komponenten der Rakete setzen.\r
+RocketCompCfg.lbl.Overridemassorcenter = Überschreiben von Masse oder Schwerpunkts von \r
+RocketCompCfg.checkbox.Overridemass = Masse überschreiben:\r
+RocketCompCfg.checkbox.Overridecenterofgrav = Schwerpunkt überschreiben:\r
+RocketCompCfg.checkbox.OverridemassandCG = Masse und Schwerpunkt für alle Unterkomponenten überschreiben\r
+RocketCompCfg.lbl.longB1 = <html>Die überschriebene Masse enthält keine Motoren.<br>\r
+RocketCompCfg.lbl.longB2 = Die Messung des Schwerpunktes beginnt am Ende von\r
+RocketCompCfg.lbl.Commentsonthe = Kommentare zu\r
+RocketCompCfg.lbl.Figurestyle = Form:\r
+RocketCompCfg.lbl.Componentcolor = Farbe:\r
+RocketCompCfg.lbl.Choosecolor = Farbe auswählen\r
+RocketCompCfg.checkbox.Usedefaultcolor = Standardfarbe verwenden\r
+RocketCompCfg.lbl.Complinestyle = Linienstil:\r
+RocketCompCfg.but.Saveasdefstyle = Als Standardstil speichern\r
+RocketCompCfg.lbl.Diameter = Durchmesser:\r
+RocketCompCfg.lbl.Length = Länge:\r
+RocketCompCfg.lbl.Thickness = Wandstärke:\r
+RocketCompCfg.checkbox.Endcapped = Verschlossenes Ende\r
+RocketCompCfg.ttip.Endcapped = Gibt an, ob das Ende der Schulter geschlossen ist.\r
+RocketCompCfg.title.Noseconeshoulder = Spitzenschulter\r
+RocketCompCfg.title.Aftshoulder = Schulter hinten\r
+RocketCompCfg.border.Foreshoulder = Schulter vorn\r
+!RocketCompCfg.lbl.Length = Length:\r
+\r
+! BulkheadConfig\r
+BulkheadCfg.tab.Radius = Radius:\r
+BulkheadCfg.tab.Thickness = Wandstärke:\r
+BulkheadCfg.tab.General = Allgemein\r
+BulkheadCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+\r
+!CenteringRingConfig\r
+CenteringRingCfg.tab.Outerdiam = Außendurchmesser:\r
+CenteringRingCfg.tab.Innerdiam = Innendurchmesser:\r
+CenteringRingCfg.tab.Thickness = Wandstärke:\r
+CenteringRingCfg.tab.General = Allgemein\r
+CenteringRingCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+\r
+!ComponentConfigDialog\r
+ComponentCfgDlg.configuration = Konfiguration\r
+ComponentCfgDlg.Modify = Verändern\r
+\r
+!EllipticalFinSetConfig\r
+EllipticalFinSetCfg.Nbroffins = Anzahl der Leitwerke\r
+EllipticalFinSetCfg.Rotation = Rotation:\r
+EllipticalFinSetCfg.Fincant = Neigung:\r
+EllipticalFinSetCfg.Rootchord = Blatttiefe:\r
+EllipticalFinSetCfg.Height = Höhe:\r
+EllipticalFinSetCfg.Positionrelativeto = Position relativ zu:\r
+EllipticalFinSetCfg.plus = plus\r
+EllipticalFinSetCfg.FincrossSection = Querschnitt:\r
+EllipticalFinSetCfg.Thickness = Wandstärke:\r
+EllipticalFinSetCfg.General = Allgemein\r
+EllipticalFinSetCfg.Generalproperties = Allgemeine Eigenschaften\r
+EllipticalFinSetCfg.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind.\r
+\r
+!FreeformFinSetConfig\r
+FreeformFinSetCfg.tab.General = Allgemein\r
+FreeformFinSetCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+FreeformFinSetCfg.tab.Shape = Form\r
+FreeformFinSetCfg.tab.ttip.Finshape = Leitwerksform\r
+FreeformFinSetCfg.lbl.Numberoffins = Anzahl der Leitwerke\r
+FreeformFinSetCfg.lbl.Finrotation = Rotation:\r
+FreeformFinSetCfg.lbl.Fincant = Neigung:\r
+FreeformFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind.\r
+FreeformFinSetCfg.lbl.Posrelativeto = Position relativ zu:\r
+FreeformFinSetCfg.lbl.plus = plus\r
+FreeformFinSetCfg.lbl.FincrossSection = Querschnitt:\r
+FreeformFinSetCfg.lbl.Thickness = Wandstärke:\r
+\r
+!InnerTubeConfig\r
+InnerTubeCfg.tab.Motor = Motor\r
+InnerTubeCfg.tab.ttip.Motor = Motorkonfiguration\r
+InnerTubeCfg.tab.Cluster = Cluster\r
+InnerTubeCfg.tab.ttip.Cluster = Cluster-Konfiguration\r
+InnerTubeCfg.tab.Radialpos = Radiale Position\r
+InnerTubeCfg.tab.ttip.Radialpos = Radiale Position\r
+InnerTubeCfg.lbl.Selectclustercfg = Cluster-Konfiguration auswählen:\r
+InnerTubeCfg.lbl.TubeSep = Rohrtrennung\r
+InnerTubeCfg.lbl.ttip.TubeSep = Die Trennung der Rohre, 1.0 = die Rohre berühren sich\r
+InnerTubeCfg.lbl.Rotation = Rotation:\r
+InnerTubeCfg.lbl.ttip.Rotation = Rotationswinkel der Cluster-Konfiguration\r
+InnerTubeCfg.lbl.Rotangle = Rotationswinkel der Cluster-Konfiguration\r
+InnerTubeCfg.but.Splitcluster = Cluster aufteilen\r
+InnerTubeCfg.lbl.longA1 = <html>Den Cluster in einzelne Komponenten aufteilen.<br>\r
+InnerTubeCfg.lbl.longA2 = Die dupliziert alle Komponenten innerhalb dieses Innenrohrs.\r
+InnerTubeCfg.but.Resetsettings = Einstellungen zurücksetzen\r
+InnerTubeCfg.but.ttip.Resetsettings = Setzt die Aufteilung und Rotation auf die Standardwerte zurück\r
+\r
+! LaunchLugConfig\r
+LaunchLugCfg.lbl.Length = Länge:\r
+LaunchLugCfg.lbl.Outerdiam = Außendurchmesser:\r
+LaunchLugCfg.lbl.Innerdiam = Innendurchmesser:\r
+LaunchLugCfg.lbl.Thickness = Wandstärke:\r
+LaunchLugCfg.lbl.Radialpos = Radiale Position:\r
+LaunchLugCfg.lbl.Posrelativeto = Position relativ zu:\r
+LaunchLugCfg.lbl.plus = plus\r
+LaunchLugCfg.tab.General = Allgemein\r
+LaunchLugCfg.tab.Generalprop = Allgemeine Eigenschaften\r
+\r
+! MassComponentConfig\r
+MassComponentCfg.lbl.Mass = Masse\r
+MassComponentCfg.lbl.Length = Länge\r
+MassComponentCfg.lbl.Diameter = Durchmesser\r
+MassComponentCfg.lbl.PosRelativeto = Position relativ zu:\r
+MassComponentCfg.lbl.plus = plus\r
+MassComponentCfg.tab.General = Allgemein\r
+MassComponentCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+MassComponentCfg.tab.Radialpos = Radiale Position\r
+MassComponentCfg.tab.ttip.Radialpos = Konfiguration der radialen Position\r
+MassComponentCfg.lbl.Radialdistance = Radialer Abstand:\r
+MassComponentCfg.lbl.Radialdirection = radiale Richtung:\r
+MassComponentCfg.but.Reset = Zurücksetzen\r
+\r
+! MotorConfig\r
+MotorCfg.checkbox.compmotormount = Diese Komponente ist eine Motorhalterung\r
+MotorCfg.lbl.Motorcfg = Motorkonfiguration\r
+MotorCfg.but.New = Neu\r
+MotorCfg.lbl.Currentmotor = Aktueller Motor:\r
+MotorCfg.lbl.Motoroverhang = Motorüberstand:\r
+MotorCfg.lbl.Ignitionat = Zündung bei:\r
+MotorCfg.lbl.plus = plus\r
+MotorCfg.lbl.seconds = Sekunden\r
+MotorCfg.lbl.longA1 = Das aktuelle Design hat im Moment nur eine Stufe.\r
+MotorCfg.lbl.longA2 = Stufen können durch Klicken auf \«Neue Stufe\« hinzugefügt werden.\r
+MotorCfg.lbl.longB1 = Das aktuelle Design hat im Moment nur eine Stufe.\r
+MotorCfg.lbl.longB2 = Stufen.\r
+MotorCfg.but.Selectmotor = Motor auswählen\r
+MotorCfg.but.Removemotor = Motor entfernen\r
+MotorCfg.lbl.motorLabel = Keiner\r
+\r
+! NoseConeConfig\r
+NoseConeCfg.lbl.Noseconeshape = Spitzenform:\r
+NoseConeCfg.lbl.Shapeparam = Formparameter:\r
+NoseConeCfg.lbl.Noseconelength = Spitzenlänge:\r
+NoseConeCfg.lbl.Basediam = Basisdurchmesser:\r
+NoseConeCfg.checkbox.Automatic = Automatisch\r
+NoseConeCfg.lbl.Wallthickness = Wandstärke:\r
+NoseConeCfg.checkbox.Filled = gefüllt\r
+NoseConeCfg.tab.General = Allgemein\r
+NoseConeCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+NoseConeCfg.tab.Shoulder = Schulter\r
+NoseConeCfg.tab.ttip.Shoulder = Schultereigenschaften\r
+\r
+! ParachuteConfig\r
+ParachuteCfg.lbl.Canopy = Fallschirmkappe:\r
+ParachuteCfg.lbl.Diameter = Durchmesser:\r
+ParachuteCfg.lbl.Material = Material:\r
+ParachuteCfg.combo.MaterialModel = Das Material beeinflusst die Masse der Komponente.\r
+ParachuteCfg.lbl.longA1 = <html>Luftwiderstandskoeffizient C<sub>D</sub>:\r
+ParachuteCfg.lbl.longB1 = <html>Der Luftwiderstandsbeiwert relativ zur Gesamtfläche des Fallschirms.<br>\r
+ParachuteCfg.lbl.longB2 = Ein größerer Luftwiderstand führt zu einer kleineren Sinkrate.\r
+ParachuteCfg.lbl.longB3 = Ein typischer Wert für Fallschirme ist 0,8.\r
+ParachuteCfg.but.Reset = Zurücksetzen\r
+ParachuteCfg.lbl.Shroudlines = Fangleinen:\r
+ParachuteCfg.lbl.Numberoflines = Anzahl der Leinen:\r
+ParachuteCfg.lbl.Linelength = Länge der Leinen:\r
+ParachuteCfg.lbl.Material = Material:\r
+ParachuteCfg.lbl.Posrelativeto = Position relativ zu:\r
+ParachuteCfg.lbl.plus = plus\r
+ParachuteCfg.lbl.Packedlength = gepackte Länge:\r
+ParachuteCfg.lbl.Packeddiam = gepackter Durchmesser:\r
+ParachuteCfg.lbl.Deploysat = Auswurf bei\r
+ParachuteCfg.lbl.seconds = Sekunden\r
+ParachuteCfg.lbl.Altitude = Höhe:\r
+ParachuteCfg.tab.General = Allgemein\r
+ParachuteCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+ParachuteCfg.tab.Radialpos = Radiale Position\r
+ParachuteCfg.tab.ttip.Radialpos = Konfiguration der radialen Position\r
+ParachuteCfg.lbl.Radialdistance = Radialer Abstand:\r
+ParachuteCfg.lbl.Radialdirection = radiale Richtung:\r
+ParachuteCfg.but.Reset = Zurücksetzen\r
+\r
+! ShockCordConfig \r
+ShockCordCfg.lbl.Shockcordlength = Länge des Gummiseils\r
+ShockCordCfg.lbl.Shockcordmaterial = Material des Gummiseils:\r
+ShockCordCfg.lbl.Posrelativeto = Position relativ zu:\r
+ShockCordCfg.lbl.plus = plus\r
+ShockCordCfg.lbl.Packedlength = gepackte Länge:\r
+ShockCordCfg.lbl.Packeddiam = gepackter Durchmesser:\r
+ShockCordCfg.tab.General = Allgemein\r
+ShockCordCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+\r
+!SleeveConfig\r
+SleeveCfg.tab.Outerdiam = Außendurchmesser:\r
+SleeveCfg.tab.Innerdiam = Innendurchmesser:\r
+SleeveCfg.tab.Wallthickness = Wandstärke:\r
+SleeveCfg.tab.Length = Länge:\r
+SleeveCfg.tab.General = Allgemein\r
+SleeveCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+\r
+! StreamerConfig\r
+StreamerCfg.lbl.Striplength = Länge des Strömers:\r
+StreamerCfg.lbl.Stripwidth = Breite des Strömers:\r
+StreamerCfg.lbl.Striparea = Fläche des Strömers:\r
+StreamerCfg.lbl.Aspectratio = Seitenverhältnis:\r
+StreamerCfg.lbl.Material = Material:\r
+StreamerCfg.combo.ttip.MaterialModel = Das Material beeinflusst die Masse der Komponente.\r
+StreamerCfg.lbl.longA1 = <html>Widerstandskoeffizient C<sub>D</sub>:\r
+StreamerCfg.lbl.longB1 = <html>Der Widerstandskoeffizient des Strömers hängt von der Gesamtfläche ab.<br>\r
+StreamerCfg.lbl.longB2 = Ein größerer Luftwiderstandskoeffizient führt zu einer kleineren Sinkrate.\r
+StreamerCfg.lbl.Automatic = Automatisch\r
+StreamerCfg.lbl.longC1 = Der Luftwiderstandskoeffizient hängt von der Fläche des Strömers ab.\r
+StreamerCfg.lbl.Posrelativeto = Position relativ zu:\r
+StreamerCfg.lbl.plus = plus\r
+StreamerCfg.lbl.Packedlength = gepackte Länge:\r
+StreamerCfg.lbl.Packeddiam = gepackter Durchmesser:\r
+StreamerCfg.lbl.Deploysat = Auswurf bei\r
+StreamerCfg.lbl.seconds = Sekunden\r
+StreamerCfg.lbl.Altitude = Höhe:\r
+StreamerCfg.tab.General = Allgemein\r
+StreamerCfg.tab.ttip.General = Allgemeine Eigenschaften\r
+StreamerCfg.tab.Radialpos = Radiale Position\r
+StreamerCfg.tab.ttip.Radialpos = Konfiguration der radialen Position\r
+StreamerCfg.lbl.Radialdistance = Radialer Abstand:\r
+StreamerCfg.lbl.Radialdirection = radiale Richtung:\r
+StreamerCfg.but.Reset = Zurücksetzen\r
+\r
+! ThicknessRingComponentConfig\r
+ThicknessRingCompCfg.tab.Outerdiam = Außendurchmesser:\r
+ThicknessRingCompCfg.tab.Innerdiam = Innendurchmesser:\r
+ThicknessRingCompCfg.tab.Wallthickness = Wandstärke:\r
+ThicknessRingCompCfg.tab.Length = Länge:\r
+ThicknessRingCompCfg.tab.General = Allgemein\r
+ThicknessRingCompCfg.tab.Generalprop = Allgemeine Eigenschaften\r
+\r
+! TransitionConfig\r
+TransitionCfg.lbl.Transitionshape = Form des Übergangs\r
+TransitionCfg.checkbox.Clipped = geklemmt\r
+TransitionCfg.lbl.Shapeparam = Formparameter:\r
+TransitionCfg.lbl.Transitionlength = Länge des Übergangs:\r
+TransitionCfg.lbl.Forediam = Vorderer Durchmesser\r
+TransitionCfg.checkbox.Automatic = Automatisch\r
+TransitionCfg.lbl.Aftdiam = Hinterer Durchmesser\r
+TransitionCfg.lbl.Wallthickness = Wandstärke:\r
+TransitionCfg.checkbox.Filled = gefüllt\r
+TransitionCfg.tab.General = Allgemein\r
+TransitionCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+TransitionCfg.tab.Shoulder = Schulter\r
+TransitionCfg.tab.Shoulderproperties = Schultereigenschaften\r
+\r
+! TrapezoidFinSetConfig\r
+TrapezoidFinSetCfg.lbl.Nbroffins = Anzahl der Leitwerke\r
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Anzahl der Leitwerke in diesem Satz\r
+TrapezoidFinSetCfg.lbl.Finrotation = Rotation der Leitwerke\r
+TrapezoidFinSetCfg.lbl.ttip.Finrotation = Winkel des ersten Leitwerks in diesem Satz\r
+TrapezoidFinSetCfg.lbl.Fincant = Neigung:\r
+TrapezoidFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind.\r
+TrapezoidFinSetCfg.lbl.Rootchord = Blatttiefe:\r
+TrapezoidFinSetCfg.lbl.Tipchord = Blatttiefe (Spitze)\r
+TrapezoidFinSetCfg.lbl.Height = Höhe:\r
+TrapezoidFinSetCfg.lbl.Sweeplength = Blattbreite:\r
+TrapezoidFinSetCfg.lbl.Sweepangle = Pfeilungswinkel\r
+TrapezoidFinSetCfg.lbl.FincrossSection = Leitwerksquerschnitt\r
+TrapezoidFinSetCfg.lbl.Thickness = Wandstärke:\r
+TrapezoidFinSetCfg.lbl.Posrelativeto = Position relativ zu:\r
+TrapezoidFinSetCfg.lbl.plus = plus\r
+TrapezoidFinSetCfg.tab.General = Allgemein\r
+TrapezoidFinSetCfg.tab.Generalproperties = Allgemeine Eigenschaften\r
+\r
+!MotorConfigurationModel\r
+MotorCfgModel.Editcfg = Konfigurationen bearbeiten\r
+\r
+! StorageOptionChooser\r
+StorageOptChooser.lbl.Simdatatostore = Zu speichernde Simulationsdaten:\r
+StorageOptChooser.rdbut.Allsimdata = Alle Simulationsdaten\r
+StorageOptChooser.lbl.longA1 = <html>Speichert alle Simulationsdaten.<br>\r
+StorageOptChooser.lbl.longA2 = Dies kann sehr große Dateien erzeugen!\r
+StorageOptChooser.rdbut.Every = Alle Simulationsdaten\r
+StorageOptChooser.lbl.longB1 = <html>Speicher plotbare Daten in etwa diesem Abstand.<br>\r
+StorageOptChooser.lbl.longB2 = Größere Werte erzeugen kleinere Dateien.\r
+StorageOptChooser.lbl.seconds = Sekunden\r
+StorageOptChooser.rdbut.Onlyprimfig = Nur die wichtigsten Werte\r
+StorageOptChooser.lbl.longC1 = <html>Speichert nur die Werte, die in der Zusammenfassung stehen.<br>\r
+StorageOptChooser.lbl.longC2 = Dies ergibt die kleinsten Dateien\r
+StorageOptChooser.checkbox.Compfile = Datei komprimieren\r
+StorageOptChooser.lbl.UsingComp = Kompression der Datei verringert die Größe signifikant.\r
+StorageOptChooser.lbl.longD1 = Eine Schätzung der Dateigröße mit den gegebenen Optionen.\r
+StorageOptChooser.ttip.Saveopt = Speicheroptionen\r
+StorageOptChooser.lbl.Estfilesize = Voraussichtliche Dateigröße:\r
+StorageOptChooser.lbl.Saveopt = Speicheroptionen\r
+\r
+! ThrustCurveMotorSelectionPanel\r
+TCMotorSelPan.lbl.Selrocketmotor = Raketenmotor auswählen:\r
+TCMotorSelPan.checkbox.hideSimilar = Ähnliche Schubkurven verbergen\r
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Alle Motoren anzeigen\r
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Motoren anzeigen, deren Durchmesser kleiner als der der Motorhalterung ist\r
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Motoren anzeigen, deren Durchmesser gleich der der Motorhalterung ist\r
+TCMotorSelPan.lbl.Motormountdia = Durchmesser der Motorhalterung\r
+TCMotorSelPan.lbl.Search = Suchen:\r
+TCMotorSelPan.lbl.Selectthrustcurve = Schubkurve auswählen:\r
+TCMotorSelPan.lbl.Ejectionchargedelay = Verzögerung der Ausstoßladung:\r
+TCMotorSelPan.equalsIgnoreCase.None = keine\r
+TCMotorSelPan.lbl.NumberofsecondsorNone = (Anzahl der Sekunden oder \«keine\«)\r
+TCMotorSelPan.lbl.Totalimpulse = Gesamtimpuls:\r
+TCMotorSelPan.lbl.Avgthrust = Durchschn. Schub:\r
+TCMotorSelPan.lbl.Maxthrust = max. Schub\r
+TCMotorSelPan.lbl.Burntime = Brenndauer:\r
+TCMotorSelPan.lbl.Launchmass = Startmasse:\r
+TCMotorSelPan.lbl.Emptymass = Leermasse:\r
+TCMotorSelPan.lbl.Datapoints = Datenpunkte:\r
+TCMotorSelPan.lbl.Digest = Übersicht:\r
+TCMotorSelPan.title.Thrustcurve = Schubkurve:\r
+TCMotorSelPan.title.Thrust = Schub:\r
+TCMotorSelPan.delayBox.None = keine\r
+\r
+\r
+! PlotDialog\r
+PlotDialog.title.Flightdataplot = Flugdatenplot\r
+PlotDialog.Chart.Simulatedflight = Simulierter Flug\r
+PlotDialog.CheckBox.Showdatapoints = Datenpunkte anzeigen\r
+PlotDialog.lbl.Chart = Klicken+ziehen: runter+rechts um hinein zu zoomen, hoch+links um heraus zu zoomen \r
+\r
+\r
+! "main" prefix is used for the main application dialog\r
+\r
+main.menu.file = Datei\r
+main.menu.file.new = Neu\r
+main.menu.file.open = Öffnen..\r
+main.menu.file.openExample = Beispiel öffnen..\r
+main.menu.file.save = Speichern\r
+main.menu.file.saveAs = Speichern unter...\r
+main.menu.file.print = Drucken...\r
+main.menu.file.close = Schließen\r
+main.menu.file.quit = Beenden\r
+\r
+main.menu.edit = Bearbeiten\r
+main.menu.edit.undo = Rückgängig\r
+main.menu.edit.redo = Wiederholen\r
+main.menu.edit.cut = Ausschneiden\r
+main.menu.edit.copy = Kopieren\r
+main.menu.edit.paste = Einfügen\r
+main.menu.edit.delete = Löschen\r
+main.menu.edit.preferences = Einstellungen\r
+\r
+main.menu.analyze = Analysieren\r
+main.menu.analyze.componentAnalysis = Komponente analysieren\r
+\r
+main.menu.help = Hilfe\r
+main.menu.help.license = Lizenz\r
+main.menu.help.bugReport = Fehlerbericht\r
+main.menu.help.debugLog = Debug-Log\r
+main.menu.help.about = Über\r
+\r
+main.menu.debug = Debug\r
+main.menu.debug.whatisthismenu = Was macht diese Menü?\r
+main.menu.debug.createtestrocket = Eine Testrakete erstellen\r
+\r
+! database\r
+! Translate here all material database\r
+!\r
+\r
+! Material database\r
+! BULK_MATERIAL\r
+Databases.materials.Acrylic = Acryl\r
+Databases.materials.Balsa = Balsa\r
+Databases.materials.Birch = Birke\r
+Databases.materials.Cardboard = Karton\r
+Databases.materials.Carbonfiber = Kohlefaser\r
+Databases.materials.Cork = Kork\r
+Databases.materials.DepronXPS = Depron (XPS)\r
+Databases.materials.Fiberglass = Glasfaser\r
+Databases.materials.Kraftphenolic = Pertinax\r
+Databases.materials.Maple = Ahorn\r
+Databases.materials.Paperoffice = Papier (Büro)\r
+Databases.materials.Pine = Kiefer\r
+Databases.materials.Plywoodbirch = Sperrholz (Birke)\r
+Databases.materials.PolycarbonateLexan = Polycarbonat (Lexan)\r
+Databases.materials.Polystyrene = Polystyrène\r
+Databases.materials.PVC = PVC\r
+Databases.materials.Spruce = Fichte\r
+Databases.materials.StyrofoamgenericEPS = Styropor (EPS)\r
+Databases.materials.StyrofoamBluefoamXPS = Styrodur (XPS)\r
+Databases.materials.Quantumtubing = Quantum tubing\r
+!SURFACE_MATERIAL\r
+Databases.materials.Ripstopnylon = Ripstop Nylon\r
+Databases.materials.Mylar = Mylar\r
+Databases.materials.Polyethylenethin = Polyethylen (dünn)\r
+Databases.materials.Polyethyleneheavy = Polyethylen (schwer)\r
+Databases.materials.Silk = Seide\r
+Databases.materials.Paperoffice = Papier (Büro)\r
+Databases.materials.Cellophane = Zellophan\r
+Databases.materials.Crepepaper = Krepppapier\r
+! LINE_MATERIAL\r
+Databases.materials.Threadheavy-duty = Faden (stark)\r
+Databases.materials.Elasticcordround2mm = Elastikband (rund, 2mm, 1/16 in)\r
+Databases.materials.Elasticcordflat6mm = Elastikband (flach, 6mm, 1/4 in)\r
+Databases.materials.Elasticcordflat12mm = Elastikband (flach, 12mm, 1/2 in)\r
+Databases.materials.Elasticcordflat19mm = Elastikband (flach, 19mm, 3/4 in)\r
+Databases.materials.Elasticcordflat25mm = Elastikband (flach, 25mm, 1 in)\r
+Databases.materials.Braidednylon2mm = Nylonflachband (2 mm, 1/16 in)\r
+Databases.materials.Braidednylon3mm = Nylonflachband (3 mm, 1/8 in)\r
+Databases.materials.Tubularnylon11mm = Tubular Nylon (11 mm, 7/16 in)\r
+Databases.materials.Tubularnylon14mm = Tubular Nylon (14 mm, 9/16 in)\r
+Databases.materials.Tubularnylon25mm = Tubular Nylon (25 mm, 1 in)\r
+\r
+! ExternalComponent\r
+ExternalComponent.Rough = Rau\r
+ExternalComponent.Unfinished = unbehandelt\r
+ExternalComponent.Regularpaint = normale Farbe\r
+ExternalComponent.Smoothpaint = glatte Farbe\r
+ExternalComponent.Polished = poliert\r
+\r
+! LineStyle\r
+LineStyle.Solid = durchgehend\r
+LineStyle.Dashed = gestrichelt\r
+LineStyle.Dotted = gepunktet\r
+LineStyle.Dash-dotted = Strich-Punkt\r
+LineStyle.Defaultstyle = Standardstil\r
+\r
+! Shape\r
+Shape.Conical = Konisch\r
+Shape.Conical.desc1 = Eine konische Spitze hat ein dreieckiges Profil\r
+Shape.Conical.desc2 = Ein konischer Übergang hat gerade Kanten\r
+Shape.Ogive = Ogive\r
+Shape.Ogive.desc1 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine <b>tangentiale Ogive</b>, die einen weichen Übergang zum Körperrohr hat, Werte kleiner 1 erzeugen eine <b>sekante Ogive<b>.\r
+Shape.Ogive.desc2 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine <b>tangentiale Ogive</b>, die einen weichen Übergang zum Körperrohr am hinteren Ende hat, Werte kleiner 1 erzeugen eine <b>sekante Ogive<b>.\r
+Shape.Ellipsoid = Ellipsoid\r
+Shape.Ellipsoid.desc1 = Eine ellipsoide Spitze hat ein Profil einer Halbellipse mit der einer Hauptachsenlänge von 2&times;<i>Länge</i> und <i>Durchmesser</i> \r
+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.             \r
+Shape.Powerseries = Power series\r
+Shape.Powerseries.descA1 = 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>\r
+Shape.Powerseries.descA2 = -power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a <b>\r
+Shape.Powerseries.descA3 = -power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.\r
+Shape.Powerseries.descB1 = 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>\r
+Shape.Powerseries.descB2 = -power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a <b>\r
+Shape.Powerseries.descB3 = -power</b>, and for <i>k</i>=1 <b>conical</b>.\r
+Shape.Parabolicseries = Parabolic series\r
+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.\r
+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.\r
+Shape.Haackseries = Haack series\r
+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.\r
+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.              \r
+\r
+\r
+! RocketComponent\r
+RocketComponent.Position.TOP = oberes Ende der übergeordneten Komponente\r
+RocketComponent.Position.MIDDLE = Mitte der übergeordneten Komponente\r
+RocketComponent.Position.BOTTOM = unteres Ende der übergeordneten Komponente\r
+RocketComponent.Position.AFTER = nach der übergeordneten Komponente\r
+RocketComponent.Position.ABSOLUTE = zur Spitze\r
+\r
+! LaunchLug\r
+LaunchLug.Launchlug = Leitröhrchen\r
+! NoseCone\r
+NoseCone.NoseCone = Spitze\r
+! Transition\r
+Transition.Transition = Übergang\r
+!Stage\r
+Stage.Stage = Stufe\r
+! BodyTube\r
+BodyTube.BodyTube = Körperrohr\r
+! TubeCoupler\r
+TubeCoupler.TubeCoupler = Koppler\r
+!InnerTube\r
+InnerTube.InnerTube = Innenrohr\r
+! TrapezoidFinSet\r
+TrapezoidFinSet.TrapezoidFinSet = Trapezoide Leitwerke\r
+! FreeformFinSet\r
+FreeformFinSet.FreeformFinSet = Frei geformte Leitwerke\r
+!MassComponent\r
+MassComponent.MassComponent = Masse\r
+! Parachute\r
+Parachute.Parachute = Fallschirm\r
+! ShockCord\r
+ShockCord.ShockCord = Gummiseil\r
+! Bulkhead\r
+Bulkhead.Bulkhead = Schott\r
+\r
+!Rocket\r
+Rocket.motorCount.Nomotor = [Keine Motoren]\r
+Rocket.compname.Rocket = Rakete\r
+\r
+!MotorMount\r
+MotorMount.IgnitionEvent.AUTOMATIC = Automatisch (Start oder Ausstoßladung)\r
+MotorMount.IgnitionEvent.LAUNCH = Start\r
+MotorMount.IgnitionEvent.EJECTION_CHARGE = Erste Ausstoßladung der vorherigen Stufe\r
+MotorMount.IgnitionEvent.BURNOUT = Erster Brennschluss der vorherigen Stufe\r
+MotorMount.IgnitionEvent.NEVER = Nie\r
+\r
+!ComponentIcons \r
+ComponentIcons.Nosecone = Spitze\r
+ComponentIcons.Bodytube = Körperrohr\r
+ComponentIcons.Transition = Übergang\r
+ComponentIcons.Trapezoidalfinset = Trapezoide Leitwerke\r
+ComponentIcons.Ellipticalfinset = Elliptische Leitwerke\r
+ComponentIcons.Freeformfinset = Frei geformte Leitwerke\r
+ComponentIcons.Launchlug = Leitröhrchen\r
+ComponentIcons.Innertube = Innenrohr\r
+ComponentIcons.Tubecoupler = Koppler\r
+ComponentIcons.Centeringring = Zentrierring\r
+ComponentIcons.Bulkhead = Schott\r
+ComponentIcons.Engineblock = Motorhalterung\r
+ComponentIcons.Parachute = Fallschirm\r
+ComponentIcons.Streamer = Strömer\r
+ComponentIcons.Shockcord = Gummiseil\r
+ComponentIcons.Masscomponent = Masse\r
+ComponentIcons.disabled = (deaktiviert)\r
+\r
+! StageAction\r
+StageAction.Stage = Stufe\r
+\r
+! RecoveryDevice\r
+RecoveryDevice.DeployEvent.LAUNCH = Start (plus NN Sekunden)\r
+RecoveryDevice.DeployEvent.EJECTION = Erste Ausstoßladung dieser Stufe\r
+RecoveryDevice.DeployEvent.APOGEE = Apogäum\r
+RecoveryDevice.DeployEvent.ALTITUDE = Spezifische Höhe während der Landephase\r
+RecoveryDevice.DeployEvent.NEVER = Nie\r
+\r
+! FlightEvent\r
+FlightEvent.Type.LAUNCH = Start\r
+FlightEvent.Type.IGNITION = Motorzündung\r
+FlightEvent.Type.LIFTOFF = Abheben\r
+FlightEvent.Type.LAUNCHROD = Verlassen der Startrampe\r
+FlightEvent.Type.BURNOUT = Motorbrennschluss\r
+FlightEvent.Type.EJECTION_CHARGE = Ausstoßladung\r
+FlightEvent.Type.STAGE_SEPARATION = Stufentrennung\r
+FlightEvent.Type.APOGEE = Apogäum\r
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Auslösung des Bergungssystems\r
+FlightEvent.Type.GROUND_HIT = Landung\r
+FlightEvent.Type.SIMULATION_END = Ende der Simulation\r
+FlightEvent.Type.ALTITUDE = Höhenänderung\r
+\r
+! ThrustCurveMotorColumns\r
+TCurveMotorCol.MANUFACTURER = Hersteller\r
+TCurveMotorCol.DESIGNATION = Bezeichnung\r
+TCurveMotorCol.TYPE = Typ\r
+TCurveMotorCol.DIAMETER = Durchmesser\r
+TCurveMotorCol.LENGTH = Länge\r
+\r
+! RocketInfo\r
+RocketInfo.lengthLine.Length = Länge\r
+RocketInfo.lengthLine.maxdiameter = , max. Durchmesser\r
+RocketInfo.massText1 = Masse mit Motoren\r
+RocketInfo.massText2 = Masse ohne Motoren\r
+RocketInfo.at = bei M=\r
+RocketInfo.cgText = CG:\r
+RocketInfo.cpText = CP:\r
+RocketInfo.stabText = Stabilität:\r
+RocketInfo.Warning = Warnung:\r
+RocketInfo.Calculating = Berechne...\r
+RocketInfo.Apogee = Apogäum:\r
+RocketInfo.Maxvelocity = max. Geschwindigkeit:\r
+RocketInfo.Maxacceleration = max. Beschleunigung:\r
+RocketInfo.apogeeValue = N/A\r
+RocketInfo.Mach = (Mach\r
+RocketInfo.velocityValue = N/A\r
+RocketInfo.accelerationValue = N/A\r
+\r
+! FinSet\r
+FinSet.CrossSection.SQUARE = Quadrat\r
+FinSet.CrossSection.ROUNDED = Abgerundet\r
+FinSet.CrossSection.AIRFOIL = Tragfläche\r
+FinSet.TabRelativePosition.FRONT = Root chord leading edge\r
+FinSet.TabRelativePosition.CENTER = Root chord midpoint\r
+FinSet.TabRelativePosition.END = Root chord trailing edge\r
+\r
+! FlightDataType\r
+FlightDataType.TYPE_TIME = Zeit\r
+FlightDataType.TYPE_ALTITUDE = Höhe\r
+FlightDataType.TYPE_VELOCITY_Z = Vertikalgeschwindigkeit\r
+FlightDataType.TYPE_ACCELERATION_Z = Vertikalbeschleunigung\r
+FlightDataType.TYPE_VELOCITY_TOTAL = Gesamtgeschwindigkeit\r
+FlightDataType.TYPE_ACCELERATION_TOTAL = Gesamtbeschleunigung\r
+FlightDataType.TYPE_POSITION_X = Position upwind\r
+FlightDataType.TYPE_POSITION_Y = Position parallel to wind\r
+FlightDataType.TYPE_POSITION_XY = Lateral distance\r
+FlightDataType.TYPE_POSITION_DIRECTION = Lateral direction\r
+FlightDataType.TYPE_VELOCITY_XY = Lateral velocity\r
+FlightDataType.TYPE_ACCELERATION_XY = Lateral acceleration\r
+FlightDataType.TYPE_AOA = Angriffswinkel\r
+FlightDataType.TYPE_ROLL_RATE = Rollrate\r
+FlightDataType.TYPE_PITCH_RATE = Nickrate\r
+FlightDataType.TYPE_YAW_RATE = Gierrate\r
+FlightDataType.TYPE_MASS = Masse\r
+FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia\r
+FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia\r
+FlightDataType.TYPE_CP_LOCATION = Position vom CP\r
+FlightDataType.TYPE_CG_LOCATION = Position vom CG\r
+FlightDataType.TYPE_STABILITY = Stabilität in Kalibern\r
+FlightDataType.TYPE_MACH_NUMBER = Machzahl\r
+FlightDataType.TYPE_REYNOLDS_NUMBER = Reynoldszahl\r
+FlightDataType.TYPE_THRUST_FORCE = Schub\r
+FlightDataType.TYPE_DRAG_FORCE = Luftwiderstandskraft\r
+FlightDataType.TYPE_DRAG_COEFF = Luftwiderstandskoeffizient\r
+FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient\r
+FlightDataType.TYPE_FRICTION_DRAG_COEFF = Reibungskoeffizient\r
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Pressure drag coefficient\r
+FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient\r
+FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient\r
+FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient\r
+FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient\r
+FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient\r
+FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient\r
+FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient\r
+FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient\r
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient\r
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient\r
+FlightDataType.TYPE_REFERENCE_LENGTH = Referenzlänge\r
+FlightDataType.TYPE_REFERENCE_AREA = Referenzfläche\r
+FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith)\r
+FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth)\r
+FlightDataType.TYPE_WIND_VELOCITY = Windgeschwindigkeit\r
+FlightDataType.TYPE_AIR_TEMPERATURE = Lufttemperatur\r
+FlightDataType.TYPE_AIR_PRESSURE = Luftdruck\r
+FlightDataType.TYPE_SPEED_OF_SOUND = Schallgeschwindigkeit\r
+FlightDataType.TYPE_TIME_STEP = Simulationszeitschritt\r
+FlightDataType.TYPE_COMPUTATION_TIME = Berechnnungszeit\r
+\r
+! PlotConfiguration\r
+PlotConfiguration.Verticalmotion = Vertikale Bewegung über Zeit\r
+PlotConfiguration.Totalmotion = Gesamte Bewegung über Zeit\r
+PlotConfiguration.Flightside = Flight side profile\r
+PlotConfiguration.Stability = Stabilität über Zeit\r
+PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number\r
+PlotConfiguration.Rollcharacteristics = Roll characteristics\r
+PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time\r
+PlotConfiguration.Simulationtime = Simulationszeitschritt und Berechnungszeit\r
+\r
+! Warning\r
+Warning.LargeAOA.str1 = Large angle of attack encountered.\r
+Warning.LargeAOA.str2 = Large angle of attack encountered (\r
+Warning.DISCONTINUITY = Unstetigkeit im Raketendurchmesser\r
+Warning.THICK_FIN = Dicke Leitwerke können nicht präzise modelliert werden.\r
+Warning.JAGGED_EDGED_FIN = Gezackte Ecken in Leitwerken können unpräzise Ergebnisse liefern.\r
+Warning.LISTENERS_AFFECTED = Simulationsempfänger haben die Simulation beeinflusst.\r
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Bergungssystem wurde ausgelöst während der Motor noch gebrannt hat.\r
+Warning.FILE_INVALID_PARAMETER = Ignoriere ungültigen Parameter.\r
diff --git a/l10n/messages_es.properties b/l10n/messages_es.properties
new file mode 100644 (file)
index 0000000..b1aeebb
--- /dev/null
@@ -0,0 +1,1182 @@
+#
+# Spanish base translation file
+# translations provided by Tripoli Spain
+#
+# Should you need to add new logical keys here is the proposed method
+#
+# className.ComponantType.componantName
+#
+
+
+! Set to the name of the current translation file (used for debugging purposes)
+debug.currentFile = messages_es.properties
+
+! RocketActions
+RocketActions.checkbox.Donotaskmeagain = No preguntarme nuevamente
+RocketActions.lbl.Youcanchangedefop = Puede modificar la operación por defecto con sus preferencias
+RocketActions.showConfirmDialog.lbl1 = ¿Borrar las simulaciones seleccionadas?
+RocketActions.showConfirmDialog.lbl2 = <html><i>Esta operación no puede deshacerse.</i>
+RocketActions.showConfirmDialog.title = Borrar simulaciones
+RocketActions.DelCompAct.Delete = Borrar
+RocketActions.DelCompAct.ttip.Delete = Borrar el componente seleccionado
+RocketActions.DelSimuAct.Delete = Borrar
+RocketActions.DelSimuAct.ttip.Delete = Borrar la simulación seleccionada
+RocketActions.DelAct.Delete = Borrar
+RocketActions.DelAct.ttip.Delete = Borrar el componente o simulación, seleccionado
+RocketActions.CutAction.Cut = Cortar
+RocketActions.CutAction.ttip.Cut = Cortar este componente o simulación y copiarlo a la libreta de notas y quitarlo de este diseño
+RocketActions.CopyAct.Copy = Copiar
+RocketActions.CopyAct.ttip.Copy = Copiar este componente (y subcomponentes) a la libreta de notas
+RocketActions.PasteAct.Paste = Pegar
+RocketActions.PasteAct.ttip.Paste = Pegar el componente o simulación de la libreta de notas al diseño.
+RocketActions.EditAct.Edit = Mostrar
+RocketActions.EditAct.ttip.Edit = Mostrar el componente seleccionado
+RocketActions.NewStageAct.Newstage = Nueva etapa
+RocketActions.NewStageAct.ttip.Newstage = Añadir una nueva etapa al diseño del cohete
+RocketActions.ActBoosterstage = Etapa booster
+RocketActions.MoveUpAct.Moveup = Mover hacia arriba
+RocketActions.MoveUpAct.ttip.Moveup = Mover este componente hacia arriba
+RocketActions.MoveDownAct.Movedown = Mover hacia abajo
+RocketActions.MoveDownAct.ttip.Movedown = Mover este componente hacia abajo
+
+! RocketPanel
+RocketPanel.FigTypeAct.Sideview = Vista lateral
+RocketPanel.FigTypeAct.ttip.Sideview = Vista lateral
+RocketPanel.FigTypeAct.Backview = Vista desde atrás
+RocketPanel.FigTypeAct.ttip.Backview = Vista trasera
+RocketPanel.lbl.Motorcfg = Configuración del motor
+RocketPanel.lbl.infoMessage = <html>Click para seleccionar&nbsp;&nbsp; Mayúsculas+click para seleccionar otro&nbsp;&nbsp; Doble-click to mostrar &nbsp;&nbsp; Click+arrastrar para mover
+
+
+! BasicFrame
+BasicFrame.SimpleFileFilter1 = Todos los diseños de cohete(*.ork; *.rkt)
+BasicFrame.SimpleFileFilter2 = Diseños OpenRocket (*.ork)
+BasicFrame.SimpleFileFilter3 = Diseños RockSim (*.rkt)
+BasicFrame.tab.Rocketdesign = Diseños de cohete
+BasicFrame.tab.Flightsim = Simulaciones de vuelo
+BasicFrame.title.Addnewcomp = Añadir un nuevo componente
+BasicFrame.item.Openrocketdesign = Abrir un diseño de cohete
+BasicFrame.item.Openexamplerocketdesign = Abrir un ejemplo de diseño de cohete
+BasicFrame.item.SavecurRocketdesign = Guardar el diseño actual
+BasicFrame.item.SavecurRocketdesnewfile = Guardar el diseño actual como un nuevo documento
+BasicFrame.item.Printpart = Imprimir un listado de componentes y un esquema de aleta
+BasicFrame.item.Closedesign = Cerrar el diseño actual
+BasicFrame.item.Quitprogram = Abandonar el programa
+BasicFrame.menu.Rocketedt = Mostrando el cohete
+BasicFrame.dlg.lbl1 = Diseño
+BasicFrame.dlg.lbl2 = No se ha guardado
+BasicFrame.dlg.lbl3 = ¿Quiere guardarlo?
+BasicFrame.dlg.title = Diseño no guardado
+BasicFrame.StageName.Sustainer = Cuerpo principal
+BasicFrame.WarningDialog.txt1 = Mientras se abría, se encontraron los siguiente problemas
+BasicFrame.WarningDialog.txt2 = Algunas configuraciones de diseño no pudieron cargarse correctamente.
+BasicFrame.WarningDialog.title = Precauciones mientras se abre el archivo
+
+! Labels used in buttons of dialog windows
+button.ok = OK
+button.cancel = Borrar
+button.close = Cerrar
+
+! Common labels used in buttons of dialog windows
+dlg.but.ok = OK
+dlg.but.cancel = Borrar
+dlg.but.close = Cerrar
+
+! About Dialog
+about.dlg.but.close = Cerrar
+about.dlg.lbl.translation = Traducido al español por Tripoli Spain
+about.dlg.lbl.transwebsite = http://www.tripoli-spain.org/
+
+! Bug Report dialog
+bugreport.dlg.title = Report de error
+bugreport.dlg.but.Sendbugreport = Enviar un report de error
+bugreport.dlg.but.Sendbugreport.Ttip = Enviar automáticamente un report de error a los creadores de Open Rocket
+bugreport.dlg.successmsg1 = Report de error enviado con éxito
+bugreport.dlg.successmsg2 = Gracias por ayudar a mejorar Open Rocket !
+bugreport.dlg.successmsg3 = Report de error enviado
+bugreport.dlg.connectedInternet = <html>Si está conectado a Internet, haga simplemente Clik <em>Enviar report de errores</em>.
+bugreport.dlg.otherwise = De otro modo, envíe el texto debajo a la dirección:
+bugreport.lbl.Theinformation = La información de arriba puede incluirse en un report de error público. Asegúrese de que no contiene ninguna información que usted no quiere hacer pública.
+bugreport.dlg.failedmsg1 = OpenRocket fue incapaz de enviar el report de error:
+bugreport.dlg.failedmsg2 = Por favor envíe manualmente el report a
+bugreport.dlg.failedmsg3 = Error enviando el report
+bugreport.reportDialog.txt = <html><b>Puede enviar un report de error en OpenRocket rellenando el formulario de abajo y enviándolo.</b><br>También puede reportar errores e incluir adjuntos sobre el proyecto de Web.
+bugreport.reportDialog.txt2 = <html><b>Por favor incluya una breve descripción de lo que estaba haciendo cuando ocurrió la excepción.</b>
+
+
+! Debug log dialog
+debuglogdlg.but.clear = Limpiar
+debuglogdlg.OpenRocketdebuglog = Fichero de error de Open Rocket
+debuglogdlg.Displayloglines = Mostrar líneas de registro:
+debuglogdlg.Follow = Seguir
+debuglogdlg.col.Time = Hora
+debuglogdlg.col.Level = Nivel
+debuglogdlg.col.Location = Situación
+debuglogdlg.col.Message = Mensaje
+debuglogdlg.lbl.Loglinenbr = Número de línea de registro:
+debuglogdlg.lbl.Time = Hora:
+debuglogdlg.lbl.Level = Nivel:
+
+
+! Edit Motor configuration dialog
+edtmotorconfdlg.but.removemotor = Quitar motor
+edtmotorconfdlg.but.Selectmotor = Seleccionar motor
+edtmotorconfdlg.but.Removeconfiguration = Quitar configuración
+edtmotorconfdlg.but.Newconfiguration = Nueva configuración
+edtmotorconfdlg.lbl.Motormounts = <html><b>Porta motor:</b>
+edtmotorconfdlg.title.Editmotorconf = Mostrar las configuraciones de motor
+edtmotorconfdlg.selectcomp = <html>Seleccionar que componentes tienen la función de porta motor:
+edtmotorconfdlg.lbl.Motorconfig = <html><b>Configuraciones del motor:</b>
+edtmotorconfdlg.lbl.Configname = Nombre de la configuración:
+edtmotorconfdlg.lbl.Leavenamedefault = Dejar vacío el nombre por defecto.
+
+! Example design dialog
+exdesigndlg.but.open = Abrir
+exdesigndlg.lbl.Selectexample = Al abrir seleccione ejemplos de diseños:
+exdesigndlg.lbl.Openexampledesign = Abra un diseño como ejemplo
+exdesigndlg.lbl.Exampledesignsnotfound = Los ejemplos de diseño podrían no hallarse.
+exdesigndlg.lbl.Examplesnotfound = Ejemplos no hallados
+
+! Print panel dialog
+printdlg.but.saveaspdf = Guardar como PDF
+printdlg.but.preview = Previsualizar
+printdlg.but.settings = Configuraciones
+
+! Material edit panel
+matedtpan.but.new = Nuevo
+matedtpan.but.edit = Editar
+matedtpan.but.delete = Borrar
+matedtpan.but.revertall = Invertir todo
+matedtpan.col.Material = Material
+matedtpan.col.Type = Tipo
+matedtpan.col.Density = Densidad
+matedtpan.col.but.ttip.New = Añadir un nuevo material
+matedtpan.title.Addcustmaterial = Añadir un material hecho en casa
+matedtpan.but.ttip.edit = Editar un material existente
+matedtpan.title.Editmaterial = Editar material
+matedtpan.title2.Editmaterial = Los materiales construidos no se pueden modificar
+matedtpan.but.ttip.delete = Borrar un material pre definido
+matedtpan.but.ttip.revertall = Borrar todos los materiales predefinidos
+matedtpan.title.Deletealluser-defined = ¿Borrar todos los materiales predefinidos?
+matedtpan.title.Revertall = ¿Revertir todo?
+matedtpan.lbl.edtmaterials = <html><i>Editar materiales que no afectaran los diseños existentes.</i>
+
+!MaterialModel
+MaterialModel.title.Material = Material
+MaterialModel.title.Defcustmat = Definir material hecho en casa
+
+
+! Preference dialog
+pref.dlg.but.add = Agregar
+pref.dlg.but.reset = Reiniciar
+pref.dlg.but.checknow = Comprobar ahora
+pref.dlg.but.defaultmetric = Sistema Métrico por defecto
+pref.dlg.but.defaultimperial = Sistema Imperial por defecto
+pref.dlg.title.Preferences = Preferencias 
+pref.dlg.tab.Units = Unidades
+pref.dlg.tab.Defaultunits = Unidades por defecto
+pref.dlg.tab.Materials = Materiales
+pref.dlg.tab.Custommaterials = Materiales hechos en casa
+pref.dlg.tab.Options = Opciones
+pref.dlg.tab.Miscellaneousoptions = Otras opciones
+pref.dlg.lbl.Positiontoinsert = Posición para introducir nuevos componentes del fuselaje:
+pref.dlg.lbl.Confirmdeletion = Confirmar borrar simulaciones:
+pref.dlg.lbl.User-definedthrust = Curvas de potencia definidas por el usuario:
+pref.dlg.Allthrustcurvefiles = Todos los ficheros de curvas de potencia (*.eng; *.rse; *.zip; directorios)
+pref.dlg.RASPfiles = Ficheros de motor RASP (*.eng)
+pref.dlg.RockSimfiles = Ficheros de motor Rocksim (*.rse)
+pref.dlg.ZIParchives = Archivos ZIP (*.zip)
+pref.dlg.checkbox.Checkupdates = Comprobar actualizaciones de  software al arrancar
+pref.dlg.ttip.Checkupdatesnow = Comprobar actualizaciones de software ahora
+pref.dlg.lbl.Selectprefunits = Seleccione sus unidades preferidas:
+pref.dlg.lbl.Rocketdimensions = Dimensiones del cohete:
+pref.dlg.lbl.Linedensity = Densidad:
+pref.dlg.lbl.Motordimensions = Dimensiones del motor:
+pref.dlg.lbl.Surfacedensity = Densidad superficial:
+pref.dlg.lbl.Distance = Distancia:
+pref.dlg.lbl.Bulkdensity = Densidad media:
+pref.dlg.lbl.Velocity = Velocidad:
+pref.dlg.lbl.Surfaceroughness = Rugosidad de la superficie:
+pref.dlg.lbl.Acceleration = Aceleración:
+pref.dlg.lbl.Area = Área:
+pref.dlg.lbl.Mass = Masa:
+pref.dlg.lbl.Angle = Ángulo:
+pref.dlg.lbl.Force = Fuerza:
+pref.dlg.lbl.Rollrate = Valor de giro:
+pref.dlg.lbl.Totalimpulse = Impulso total:
+pref.dlg.lbl.Temperature = Temperatura:
+pref.dlg.lbl.Momentofinertia = Momento de inercia:
+pref.dlg.lbl.Pressure = Presión:
+pref.dlg.lbl.Stability = Estabilidad:
+pref.dlg.lbl.effect1 = Los cambios tendrán efecto cuando se abra nuevamente una ventana.
+pref.dlg.lbl.Checkingupdates = Comprobando actualizaciones...
+pref.dlg.lbl.msg1 = Ocurrió un error mientras se comunicaba con el servidor.
+pref.dlg.lbl.msg2 = Incapaz de recuperar la información de las actualizaciones
+pref.dlg.lbl.msg3 = Usted está utilizando la última versión de Open Rocket.
+pref.dlg.lbl.msg4 = No hay actualizaciones disponibles
+pref.dlg.PrefChoiseSelector1 = Pregunte siempre
+pref.dlg.PrefChoiseSelector2 = Insertar en medio
+pref.dlg.PrefChoiseSelector3 = Añadir al final
+pref.dlg.PrefBooleanSelector1 = Borrar
+pref.dlg.PrefBooleanSelector2 = Confirmar
+pref.dlg.Add = Añadir
+pref.dlg.DescriptionArea.Adddirectories = Añadir directorios, RASP archivos de motor (*.eng), RockSim archivos de motor (*.rse) o ZIP archivos separados por punto y coma (;) para cargar curvas de empuje externas.  Los cambios tendrán efecto la próxima vez que abra OpenRocket.
+
+
+! Simulation edit dialog
+simedtdlg.but.runsimulation = Lanzar la simulación
+simedtdlg.but.resettodefault = Restaurar por defecto
+simedtdlg.but.add = Agregar
+simedtdlg.but.remove = Quitar
+simedtdlg.title.Editsim = Mostrar la simulación
+simedtdlg.lbl.Simname = Nombre de la simulación
+simedtdlg.tab.Launchcond = Condiciones del lanzamiento
+simedtdlg.tab.Simopt = Opciones de simulación
+simedtdlg.tab.Plotdata = Datos del plotter
+simedtdlg.tab.Exportdata = Exportar datos
+simedtdlg.lbl.Motorcfg = Configuración del motor:
+simedtdlg.lbl.ttip.Motorcfg = Seleccionar la configuración del motor a usar
+simedtdlg.combo.ttip.motorconf = Seleccionar la configuración del motor a usar
+simedtdlg.lbl.Wind = Viento
+simedtdlg.lbl.Averwindspeed = Velocidad media del viento
+simedtdlg.lbl.ttip.Averwindspeed = Velocidad media del viento en relación al suelo
+simedtdlg.lbl.Stddeviation = Desviación standard
+simedtdlg.lbl.ttip.Stddeviation = <html>Desviación standard de la velocidad del viento.<br>La velocidad del viento se encuentra dentro del doble de la desviación media en un 95% del tiempo.
+simedtdlg.lbl.Turbulenceintensity = Intensidad de la turbulencia
+simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>La intensidad de la turbulencia es la desviación standard dividida por la velocidad media del viento.<br>
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Valores típicos en el campo
+simedtdlg.lbl.ttip.Turbulenceintensity3 = a
+simedtdlg.border.Atmoscond = Condiciones atmosféricas
+simedtdlg.checkbox.InterStdAtmosphere = Usa los patrones de Atmosfera Internacional
+simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Seleccionar para usar el modelo de la International Standard Atmosphere model.<br>Este modelo tiene una temperatura de
+simedtdlg.checkbox.ttip.InterStdAtmosphere2 = Y una presión de
+simedtdlg.checkbox.ttip.InterStdAtmosphere3 = A nivel del mar.
+simedtdlg.lbl.Temperature = Temperatura:
+simedtdlg.lbl.ttip.Temperature = Temperatura en el lugar del lanzamiento.
+simedtdlg.lbl.Pressure = Presión:
+simedtdlg.lbl.ttip.Pressure = Presión atmosférica en el lugar del lanzamiento
+simedtdlg.lbl.Launchsite = Lugar del lanzamiento
+simedtdlg.lbl.Latitude = Latitud:
+simedtdlg.lbl.ttip.Latitude = <html>La latitud del lugar de lanzamiento afecta la atracción terrestre.<br>Los valores positivos se dan en el hemisferio Norte, los negativos en el hemisferio Sur.
+simedtdlg.lbl.Altitude = Altitud:
+simedtdlg.lbl.ttip.Altitude = <html>Los valores por encima del nivel del mar.<br>Esto afecta la posición del modelo atmosférico.
+simedtdlg.border.Launchrod = Varilla para lanzar
+simedtdlg.lbl.Length = Longitud:
+simedtdlg.lbl.ttip.Length = Longitud de la varilla de lanzamiento
+simedtdlg.lbl.Angle = Ángulo:
+simedtdlg.lbl.ttip.Angle = El ángulo de la varilla de lanzamiento con la vertical.
+simedtdlg.lbl.Direction = Dirección:
+simedtdlg.lbl.ttip.Direction1 = <html>Dirección de la varilla de lanzamiento relativa al viento.<br>
+simedtdlg.lbl.ttip.Direction2 = Hacia el viento
+simedtdlg.lbl.ttip.Direction3 = A favor del viento
+simedtdlg.border.Simopt = Opciones del simulador
+simedtdlg.lbl.Calcmethod = Método de cálculo
+simedtdlg.lbl.ttip.Calcmethod = <html>El método Barrowman extendido calcula las fuerzas aerodinámicas <br>Para las ecuaciones Barrowman extendidas para recibir mas componentes.
+simedtdlg.lbl.ExtBarrowman = Barrowman Extendido
+simedtdlg.lbl.Simmethod = Método de simulación:
+simedtdlg.lbl.ttip.Simmethod1 = <html>El simulador de seis-grados-de-libertad permite al cohete una total libertad durante el vuelo.<br>
+simedtdlg.lbl.ttip.Simmethod2 = La integración mejora usando un 4<sup>th</sup> ordenar Runge-Kutta 4 integración numérica.
+simedtdlg.lbl.Timestep = Duración de la etapa
+simedtdlg.lbl.ttip.Timestep1 = <html>Tiempo entre etapas de simulación.<br>Un tiempo mas corto de etapa origina una simulación mas exacta pero mas lenta.<br>
+simedtdlg.lbl.ttip.Timestep2 = The 4<sup>th</sup> ordenar el método de simulación es bastante preciso con un tiempo de etapa de
+simedtdlg.but.ttip.resettodefault = Restituir el tiempo de etapa a su valor por defecto (
+simedtdlg.border.Simlist = Oyentes del simulador
+simedtdlg.txt.longA1 = <html><i>Oyentes del simulador</i> es una prestación avanzada que permite al código escrito del usuario oír e interaccionar con la simulación.  
+simedtdlg.txt.longA2 = Para detalles de esta prestación de los oyentes, vea la documentación técnica del Open Rocket.
+simedtdlg.lbl.Curlist = Oyentes actuales
+simedtdlg.lbl.Addsimlist = Añadir la audición del simulador
+simedtdlg.lbl.Noflightdata = No hay datos disponibles del vuelo.
+simedtdlg.lbl.runsimfirst = Por favor accione la simulación primero.
+simedtdlg.chart.Simflight = Vuelo simulado
+simedtdlg.dlg.Simres = Resultados de la simulación
+simedtdlg.IntensityDesc.None = Ninguno
+simedtdlg.IntensityDesc.Verylow = Muy pesado
+simedtdlg.IntensityDesc.Low = Pesado
+simedtdlg.IntensityDesc.Medium = Medio
+simedtdlg.IntensityDesc.High = Alto
+simedtdlg.IntensityDesc.Veryhigh = Muy alto
+simedtdlg.IntensityDesc.Extreme = Extremo
+
+
+
+! Simulation Panel
+simpanel.but.newsimulation = Nueva simulación
+simpanel.but.editsimulation = Editar la simulación
+simpanel.but.runsimulations = Lanzar las simulaciones
+simpanel.but.deletesimulations = Borrar las simulaciones
+simpanel.but.plotexport = Exportar / Plot
+simpanel.but.ttip.newsimulation = Añadir una nueva simulación
+simpanel.but.ttip.editsim = Mostrar la simulación seleccionada
+simpanel.but.ttip.runsimu = Accionar de nuevo las simulaciones seleccionadas
+simpanel.but.ttip.deletesim = Borrar las simulaciones seleccionadas
+simpanel.checkbox.donotask = No preguntarme de nuevo
+simpanel.lbl.defpref = Puede cambiar la operación por defecto por las preferencias
+simpanel.dlg.lbl.DeleteSim1 = ¿Borrar las simulaciones seleccionadas?
+simpanel.dlg.lbl.DeleteSim2 = <html><i>Esta operación no puede deshacerse.</i>
+simpanel.dlg.lbl.DeleteSim3 = Borrar las simulaciones
+simpanel.col.Name = Nombre
+simpanel.col.Motors = Motores
+simpanel.col.Apogee = Apogeo
+simpanel.col.Maxvelocity = Velocidad máxima
+simpanel.col.Maxacceleration = Aceleración máxima
+simpanel.col.Timetoapogee = Tiempo hasta el apogeo
+simpanel.col.Flighttime = Duración del vuelo
+simpanel.col.Groundhitvelocity = Velocidad de llegada a tierra
+
+! SimulationRunDialog
+SimuRunDlg.title.RunSim = Accionando simulaciones
+SimuRunDlg.lbl.Running = Accionando
+SimuRunDlg.lbl.Simutime = Duración de la simulación:
+SimuRunDlg.lbl.Altitude = Altitud:
+SimuRunDlg.lbl.Velocity = Velocidad:
+SimuRunDlg.msg.Unabletosim = Incapaz de simular:
+SimuRunDlg.msg.errorOccurred = Ha ocurrido un error durante la simulación:
+SimuRunDlg.msg.AnException1 = Ha ocurrido una excepción durante la simulación:
+SimuRunDlg.msg.AnException2 = Por favor anote esto debajo como un error con todos los detalles.
+SimuRunDlg.msg.AssertionError1 = Se ha producido un error informático durante la simulación.
+SimuRunDlg.msg.AssertionError2 = Por favor anote esto debajo como un error con todos los detalles.
+SimuRunDlg.msg.unknownerror1 = Se ha detectado un error desconocido durante la simulación.
+SimuRunDlg.msg.unknownerror2 = El programa  puede ser inestable, Guarde todos sus diseños y reinicie OpenRocket ahora!
+
+
+
+! SimulationExportPanel
+SimExpPan.desc = Documentos separados por comas (*.csv)
+SimExpPan.border.Vartoexport = Variables para exportar
+SimExpPan.but.Selectall = Seleccione todo
+SimExpPan.but.Selectnone = No seleccione nada
+SimExpPan.border.Fieldsep = Separador de campo
+SimExpPan.lbl.Fieldsepstr = Barra separador de campo
+SimExpPan.lbl.longA1 = <html>Las barras para separar campos en el documento exportado.<br>
+SimExpPan.lbl.longA2 = Use ',' Para valores separados por comas (CSV) file.
+SimExpPan.checkbox.Includesimudesc = Incluye descripción de la simulación
+SimExpPan.checkbox.ttip.Includesimudesc = Incluye un comentario en el inicio del documento describiendo la simulación.
+SimExpPan.border.Comments = Comentarios
+SimExpPan.checkbox.Includefielddesc = Incluye descripciones de campo
+SimExpPan.checkbox.ttip.Includefielddesc = Incluye una línea de comentario con las descripciones de las variables exportadas.
+SimExpPan.checkbox.Incflightevents = Incluye los eventos del vuelo
+SimExpPan.checkbox.ttip.Incflightevents = Incluye una línea de comentario para cada evento del vuelo
+SimExpPan.lbl.Commentchar = Carácter de comentario
+SimExpPan.lbl.ttip.Commentchar = La característica(as) que marcan una línea de comentario.
+SimExpPan.but.Exporttofile = Exportar al documento ...
+SimExpPan.Fileexists.desc1 = Archivo \"
+SimExpPan.Fileexists.desc2 = \" existe.  Sobrescribir?
+SimExpPan.Fileexists.title = El archivo existe
+SimExpPan.ExportingVar.desc1 = Exportando una variable fuera de
+SimExpPan.ExportingVar.desc2 = Exportando
+SimExpPan.ExportingVar.desc3 = variables fuera de
+SimExpPan.Col.Variable = Variable
+SimExpPan.Col.Unit = Unidad
+
+! MotorPlot
+MotorPlot.title.Motorplot = Curva del motor
+MotorPlot.but.Select = Seleccionar la configuración del motor a usar
+MotorPlot.Chart.Motorthrustcurve = Curva de empuje del motor
+MotorPlot.Chart.Time = Tiempo / s
+MotorPlot.Chart.Thrust = Empuje / N
+MotorPlot.txt.Designation = Designación:
+MotorPlot.txt.Manufacturer = Fabricante:
+MotorPlot.txt.Type = Tipo:
+MotorPlot.txt.Delays = Retardos:
+MotorPlot.txt.Comment = Comentario:\n
+
+
+
+! Simulation plot panel
+simplotpanel.lbl.Presetplotconf = Pre configuración del Plot:
+simplotpanel.lbl.Xaxistype = Tipo de eje X:
+simplotpanel.lbl.Unit = Unidad:
+simplotpanel.lbl.Yaxistypes = Tipo de eje Y:
+simplotpanel.lbl.Flightevents = Eventos del vuelo:
+simplotpanel.but.All = Todo
+simplotpanel.but.None = Ninguno
+simplotpanel.but.NewYaxisplottype = Nuevo tipo de Eje Y del Plot
+simplotpanel.but.Plotflight = Curva del vuelo
+simplotpanel.lbl.Axis = Ejes:
+simplotpanel.but.ttip.Removethisplot = Borrar esta curva
+simplotpanel.Desc = Los datos según orden de tiempo serán impresos en el eje X si no hay tiempo
+simplotpanel.OptionPane.lbl1 = Se permiten un máximo de 15 impresiones
+simplotpanel.OptionPane.lbl2 = No puede añadirse la curva
+simplotpanel.AUTO_NAME = Auto
+simplotpanel.LEFT_NAME = Izquierda
+simplotpanel.RIGHT_NAME = Derecha
+simplotpanel.CUSTOM = Casero
+
+! Component add buttons
+compaddbuttons.Bodycompandfinsets = Componentes del fuselaje y aletas
+compaddbuttons.Nosecone = Ojiva
+compaddbuttons.Bodytube = Tubo del\nfuselaje
+compaddbuttons.Transition = Transición
+compaddbuttons.Trapezoidal = Trapezoidal
+compaddbuttons.Elliptical = Elíptico
+compaddbuttons.Freeform = Forma libre
+compaddbuttons.Launchlug = Guía en el\nfuselaje
+compaddbuttons.Innercomponent = Componente interior
+compaddbuttons.Innertube = Tubo\ninterior
+compaddbuttons.Coupler = Acoplador
+compaddbuttons.Centeringring = Arandela\nde centraje
+compaddbuttons.Bulkhead = Cámara
+compaddbuttons.Engineblock = Retén\nde motor
+compaddbuttons.Massobjects = Objeto masa
+compaddbuttons.Parachute = Paracaídas
+compaddbuttons.Streamer = Banderola
+compaddbuttons.Shockcord = Tirante de\nsuspensión
+compaddbuttons.Masscomponent = Componente\nmasa
+compaddbuttons.Donotaskmeagain = No me pregunte de nuevo
+compaddbuttons.Selectcomppos = Seleccionar la posición del componente
+compaddbuttons.lbl.Youcanchange = Puede cambiar la operación con las preferencias por defecto
+compaddbuttons.lbl.insertcomp = ¿Inserta el componente despues del actual o como último?
+compaddbuttons.askPosition.Inserthere = Inserte aquí
+compaddbuttons.askPosition.Addtotheend = Añadir al final
+compaddbuttons.askPosition.Cancel = Borrar
+
+! Component Analysis Dialog
+componentanalysisdlg.componentanalysis = Análisis del componente
+componentanalysisdlg.lbl.winddir = Dirección del viento:
+componentanalysisdlg.TitledBorder.warnings = Advertencias:
+componentanalysisdlg.ToggleBut.worst = Peor
+componentanalysisdlg.lbl.angleofattack = Ángulo de ataque:
+componentanalysisdlg.lbl.machnumber = Número Mach:
+componentanalysisdlg.lbl.rollrate = Valor de giro:
+componentanalysisdlg.lbl.activestages = Etapas activas:
+componentanalysisdlg.lbl.motorconf = Configuración del Motor:
+componentanalysisdlg.TabStability.Col = Componente
+componentanalysisdlg.TabStability = Estabilidad
+componentanalysisdlg.TabStability.ttip = Información de Estabilidad
+componentanalysisdlg.dragTableModel.Col.Component = Componente
+componentanalysisdlg.dragTableModel.Col.Pressure = <html>Presión C<sub>D</sub>
+componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>
+componentanalysisdlg.dragTableModel.Col.friction = <html>Rozamiento C<sub>D</sub>
+componentanalysisdlg.dragTableModel.Col.total = <html>Total C<sub>D</sub>
+componentanalysisdlg.dragTabchar = Características de rozamiento
+componentanalysisdlg.dragTabchar.ttip = Características de rozamiento
+componentanalysisdlg.rollTableModel.Col.component = Componente
+componentanalysisdlg.rollTableModel.Col.rollforc = Coeficiente de giro
+componentanalysisdlg.rollTableModel.Col.rolldamp = Coeficiente de corrección de giro
+componentanalysisdlg.rollTableModel.Col.total = <html>Total C<sub>l</sub>
+componentanalysisdlg.rollTableModel = Dinámica de giro
+componentanalysisdlg.rollTableModel.ttip = Dinámica de giro
+componentanalysisdlg.println.closingmethod = Llamado método de cierre:
+componentanalysisdlg.println.settingnam = CONFIGURANDO VALORES NAN
+componentanalysisdlg.lbl.reflenght = Longitud de referencia: 
+componentanalysisdlg.lbl.refarea = Área de referencia: 
+!componentanalysisdlg.But.close =Close
+
+! Custom Material dialog
+custmatdlg.title.Custommaterial = Material hecho en casa
+custmatdlg.lbl.Materialname = Nombre del material: 
+custmatdlg.lbl.Materialtype = Tipo de material:
+custmatdlg.lbl.Materialdensity = Densidad del material:
+custmatdlg.checkbox.Addmaterial = Agregar este material a la base de datos
+
+
+! Ring Component Config
+ringcompcfg.OuterRadius = Radio exterior
+ringcompcfg.Automatic = Automático
+ringcompcfg.InnerRadius = Radio interior
+ringcompcfg.Thickness = Espesor
+ringcompcfg.Length = Longitud
+ringcompcfg.Positionrelativeto = Posición relativa a:
+ringcompcfg.plus = plus
+ringcompcfg.PositionValue = Valor de posición
+ringcompcfg.Radialdistance = Distancia radial:
+ringcompcfg.Distancefrom = Distancia desde la línea central del cohete
+ringcompcfg.Radialdirection = Dirección radial:
+ringcompcfg.radialdirectionfrom = En dirección radial desde la línea central del cohete
+ringcompcfg.but.Reset = Reiniciar
+ringcompcfg.but.Resetcomponant = Resituar el componente a la línea central del cohete
+ringcompcfg.EngineBlock.desc = <html>Un <b>retén motor</b> Impide que el motor se desplace hacia delante dentro del tubo porta motor.<br><br>Para añadir un motor, cree un <b>tubo de fuselaje</b> o <b>dentro del tubo</b> y desígnelo como portamotor en el <em>Motor</em> tab.
+ringcompcfg.note.desc = Nota: Un tubo interior no afectará la aerodinámica del cohete salvo que esté situado fuera del fuselaje.
+
+
+! Body Tube Config
+BodyTubecfg.lbl.Bodytubelength = Longitud del tubo del fuselaje:
+BodyTubecfg.lbl.Outerdiameter = Diámetro exterior:
+BodyTubecfg.lbl.Innerdiameter = Diámetro interior:
+BodyTubecfg.lbl.Wallthickness = Espesor de la pared:
+BodyTubecfg.tab.General = General
+BodyTubecfg.tab.Generalproperties = Propiedades generales
+BodyTubecfg.tab.Motor = Motor
+BodyTubecfg.tab.Motormountconf = Configuración del porta motor
+BodyTubecfg.checkbox.Automatic = Automático
+BodyTubecfg.checkbox.Filled = Archivado
+
+! FinSetConfig
+FinSetConfig.tab.Fintabs = Raíz de aleta
+FinSetConfig.tab.Through-the-wall = Raíces de aleta a través de la pared
+FinSetConfig.but.Converttofreeform = Convertir a forma libre
+FinSetConfig.but.Converttofreeform.ttip = Convertir esta forma de aleta a una forma libre
+FinSetConfig.Convertfinset = Convertir la configuración de aleta
+FinSetConfig.but.Splitfins = Separar las aletas
+FinSetConfig.but.Splitfins.ttip = Dividir la configuración de aleta en varias separadas
+FinSetConfig.lbl.Through-the-wall  = Raíces de aleta a través de la pared: 
+FinSetConfig.lbl.Tablength = Longitud de la raíz:
+FinSetConfig.ttip.Tablength = La longitud de la raíz de aleta.
+FinSetConfig.lbl.Tabheight = Altura de la raíz: 
+FinSetConfig.ttip.Tabheight = Envergadura en altura de la raíz de aleta.
+FinSetConfig.lbl.Tabposition = Posición de la raíz:
+FinSetConfig.ttip.Tabposition = Posición de la raíz de aleta.
+FinSetConfig.lbl.relativeto = Relativo a
+
+! MotorDatabaseLoadingDialog
+MotorDbLoadDlg.title = Cargando motores
+MotorDbLoadDlg.Loadingmotors = Cargando motores...
+
+! RocketConfig
+RocketCfg.lbl.Designname = Nombre del proyecto:
+RocketCfg.lbl.Designer = Proyectista:
+RocketCfg.lbl.Comments = Comentarios:
+RocketCfg.lbl.Revisionhistory = Histórico de la revisión:
+RocketCfg.lbl.Material = Material:
+
+! ShockCordConfig
+ShockCordCfg.lbl.Shockcordlength = Longitud del tirante de suspensión
+
+! RocketComponentConfig
+RocketCompCfg.lbl.Componentname = Nombre del componente:
+RocketCompCfg.ttip.Thecomponentname = El nombre del componente.
+RocketCompCfg.tab.Override = Elegir
+RocketCompCfg.tab.MassandCGoverride = Elección de estimación de Masa y CG
+RocketCompCfg.tab.Figure = Figura
+RocketCompCfg.tab.Figstyleopt = Opciones de estilo de la figura
+RocketCompCfg.tab.Comment = Comentarios
+RocketCompCfg.tab.Specifyacomment = Especifique un comentario para el componente
+RocketCompCfg.lbl.Mass = Masa:
+RocketCompCfg.lbl.Componentmass = Masa del componente:
+RocketCompCfg.lbl.overriddento = (Elegido para
+RocketCompCfg.lbl.overriddenby = (Elegido por
+RocketCompCfg.lbl.Componentmaterial = Material del componente:
+RocketCompCfg.lbl.Componentfinish = Acabado:
+RocketCompCfg.lbl.ttip.componentmaterialaffects = El material del componente afecta su peso.
+RocketCompCfg.combo.ttip.componentmaterialaffects = El material del componente afecta su peso.
+RocketCompCfg.lbl.longA1 = <html>El acabado del componente afecta su coeficiente de rozamiento.<br>
+RocketCompCfg.lbl.longA2 = El valor indicado es el promedio de la rugosidad en altura de la superficie.
+RocketCompCfg.but.Setforall = Aplicar a todos
+RocketCompCfg.but.ttip.Setforall = Aplicar este acabado a todos los componentes del cohete.
+RocketCompCfg.lbl.Overridemassorcenter = Elegir  la masa o el CG del
+RocketCompCfg.checkbox.Overridemass = Elegir la masa:
+RocketCompCfg.checkbox.Overridecenterofgrav = Elegir el CG:
+RocketCompCfg.checkbox.OverridemassandCG = Elegir la masa y el CG de todos los subcomponentes
+RocketCompCfg.lbl.longB1 = <html>La masa elegida no incluye los motores.<br>
+RocketCompCfg.lbl.longB2 = El CG se mide desde el extremo frontal del
+RocketCompCfg.lbl.Commentsonthe = Comentarios sobre
+RocketCompCfg.lbl.Figurestyle = Estilo de figura:
+RocketCompCfg.lbl.Componentcolor = Color del componente:
+RocketCompCfg.lbl.Choosecolor = Elija color
+RocketCompCfg.checkbox.Usedefaultcolor = Use color por defecto
+RocketCompCfg.lbl.Complinestyle = Estilo de línea del componente:
+RocketCompCfg.but.Saveasdefstyle = Guarde como estilo por defecto
+RocketCompCfg.lbl.Diameter = Diámetro:
+RocketCompCfg.lbl.Length = Longitud:
+RocketCompCfg.lbl.Thickness = Espesor:
+RocketCompCfg.checkbox.Endcapped = Extremo troncado
+RocketCompCfg.ttip.Endcapped = Si el extremo del hombro está troncado.
+RocketCompCfg.title.Noseconeshoulder = Hombro de la ojiva
+RocketCompCfg.title.Aftshoulder = Trasera del hombro
+RocketCompCfg.border.Foreshoulder = Hombro visible
+!RocketCompCfg.lbl.Length = Length:
+
+! BulkheadConfig
+BulkheadCfg.tab.Radius = Radio:
+BulkheadCfg.tab.Thickness = Espesor:
+BulkheadCfg.tab.General = General
+BulkheadCfg.tab.Generalproperties = Propiedades generales
+
+!CenteringRingConfig
+CenteringRingCfg.tab.Outerdiam = Diámetro exterior:
+CenteringRingCfg.tab.Innerdiam = Diámetro interior:
+CenteringRingCfg.tab.Thickness = Espesor:
+CenteringRingCfg.tab.General = General
+CenteringRingCfg.tab.Generalproperties = Propiedades generales
+
+!ComponentConfigDialog
+ComponentCfgDlg.configuration = configuración
+ComponentCfgDlg.Modify = Modificar
+
+!EllipticalFinSetConfig
+EllipticalFinSetCfg.Nbroffins = Número de aletas:
+EllipticalFinSetCfg.Rotation = Rotación:
+EllipticalFinSetCfg.Fincant = Canto de aleta:
+EllipticalFinSetCfg.Rootchord = Anclaje de la raíz:
+EllipticalFinSetCfg.Height = Altura:
+EllipticalFinSetCfg.Positionrelativeto = Posición relativa a:
+EllipticalFinSetCfg.plus = plus
+EllipticalFinSetCfg.FincrossSection = Sección de corte de la aleta:
+EllipticalFinSetCfg.Thickness = Espesor:
+EllipticalFinSetCfg.General = General
+EllipticalFinSetCfg.Generalproperties = Propiedades generales
+EllipticalFinSetCfg.ttip.Fincant = Ángulo que forma el canto de la aleta con respecto al fuselaje.
+
+!FreeformFinSetConfig
+FreeformFinSetCfg.tab.General = General
+FreeformFinSetCfg.tab.ttip.General = Propiedades generales
+FreeformFinSetCfg.tab.Shape = Forma
+FreeformFinSetCfg.tab.ttip.Finshape = Forma de la aleta
+FreeformFinSetCfg.lbl.Numberoffins = Número de aletas:
+FreeformFinSetCfg.lbl.Finrotation = Rotación de la aleta:
+FreeformFinSetCfg.lbl.Fincant = Canto de la aleta:
+FreeformFinSetCfg.lbl.ttip.Fincant = Angulo que el canto de las aletas forman con respecto al fuselaje.
+FreeformFinSetCfg.lbl.Posrelativeto = Posición relativa a:
+FreeformFinSetCfg.lbl.plus = plus
+FreeformFinSetCfg.lbl.FincrossSection = Sección de la aleta:
+FreeformFinSetCfg.lbl.Thickness = Espesor:
+
+!InnerTubeConfig
+InnerTubeCfg.tab.Motor = Motor
+InnerTubeCfg.tab.ttip.Motor = Configuración del porta motor
+InnerTubeCfg.tab.Cluster = Cluster
+InnerTubeCfg.tab.ttip.Cluster = Configuración del cluster
+InnerTubeCfg.tab.Radialpos = Posición radial
+InnerTubeCfg.tab.ttip.Radialpos = Posición radial
+InnerTubeCfg.lbl.Selectclustercfg = Elija la configuración del cluster:
+InnerTubeCfg.lbl.TubeSep = Separación del tubo:
+InnerTubeCfg.lbl.ttip.TubeSep = La separación de los tubos, 1.0 = tocándose uno a otro
+InnerTubeCfg.lbl.Rotation = Rotación:
+InnerTubeCfg.lbl.ttip.Rotation = Configuración del ángulo de rotación del cluster
+InnerTubeCfg.lbl.Rotangle = Angulo de rotación de la configuración del cluster
+InnerTubeCfg.but.Splitcluster = Split cluster
+InnerTubeCfg.lbl.longA1 = <html>Split del cluster dentro de componentes separados.<br>
+InnerTubeCfg.lbl.longA2 = Esto también duplica todos los componentes unidos a este tubo interior.
+InnerTubeCfg.but.Resetsettings = Reiniciar configuración
+InnerTubeCfg.but.ttip.Resetsettings = Reiniciar la separación y la rotación a valores predeterminados
+
+! LaunchLugConfig
+LaunchLugCfg.lbl.Length = Longitud:
+LaunchLugCfg.lbl.Outerdiam = Diámetro exterior:
+LaunchLugCfg.lbl.Innerdiam = Diámetro interior:
+LaunchLugCfg.lbl.Thickness = Espesor:
+LaunchLugCfg.lbl.Radialpos = Posición radial:
+LaunchLugCfg.lbl.Posrelativeto = Posición relativa a:
+LaunchLugCfg.lbl.plus = plus
+LaunchLugCfg.tab.General = General
+LaunchLugCfg.tab.Generalprop = Propiedades generales
+
+! MassComponentConfig
+MassComponentCfg.lbl.Mass = Masa
+MassComponentCfg.lbl.Length = Longitud
+MassComponentCfg.lbl.Diameter = Diámetro
+MassComponentCfg.lbl.PosRelativeto = Posición relativa a:
+MassComponentCfg.lbl.plus = plus
+MassComponentCfg.tab.General = General
+MassComponentCfg.tab.ttip.General = Propiedades generales
+MassComponentCfg.tab.Radialpos = Posición radial
+MassComponentCfg.tab.ttip.Radialpos = Configuración de la posición radial
+MassComponentCfg.lbl.Radialdistance = Distancia radial:
+MassComponentCfg.lbl.Radialdirection = Dirección radial:
+MassComponentCfg.but.Reset = Reiniciar
+
+! MotorConfig
+MotorCfg.checkbox.compmotormount = Este componente es un porta motor
+MotorCfg.lbl.Motorcfg = Configuración del motor:
+MotorCfg.but.New = Nuevo
+MotorCfg.lbl.Currentmotor = Motor actual:
+MotorCfg.lbl.Motoroverhang = Sobresalida del motor:
+MotorCfg.lbl.Ignitionat = Encendido en:
+MotorCfg.lbl.plus = plus
+MotorCfg.lbl.seconds = segundos
+MotorCfg.lbl.longA1 = El diseño actual tiene solo una etapa.
+MotorCfg.lbl.longA2 = Pueden agregarse etapas haciendo clic \"Nueva etapa\".
+MotorCfg.lbl.longB1 = El diseño actual tiene
+MotorCfg.lbl.longB2 = etapas.
+MotorCfg.but.Selectmotor = Seleccionar motor
+MotorCfg.but.Removemotor = Quitar motor
+MotorCfg.lbl.motorLabel = Ninguno
+
+! NoseConeConfig
+NoseConeCfg.lbl.Noseconeshape = Forma de la ojiva:
+NoseConeCfg.lbl.Shapeparam = Parámetros de la forma:
+NoseConeCfg.lbl.Noseconelength = Longitud de la ojiva:
+NoseConeCfg.lbl.Basediam = Diámetro de la base:
+NoseConeCfg.checkbox.Automatic = Automático
+NoseConeCfg.lbl.Wallthickness = Espesor de la pared:
+NoseConeCfg.checkbox.Filled = Archivado
+NoseConeCfg.tab.General = General
+NoseConeCfg.tab.ttip.General = Propiedades generales
+NoseConeCfg.tab.Shoulder = Hombro
+NoseConeCfg.tab.ttip.Shoulder = Propiedades del hombro
+
+! ParachuteConfig
+ParachuteCfg.lbl.Canopy = Campana:
+ParachuteCfg.lbl.Diameter = Diámetro:
+ParachuteCfg.lbl.Material = Material:
+ParachuteCfg.combo.MaterialModel = El material del componente afecta su peso.
+ParachuteCfg.lbl.longA1 = <html>Drag coeficiente C<sub>D</sub>:
+ParachuteCfg.lbl.longB1 = <html>Coeficiente de rozamiento relativo al área total del paracaídas.<br>
+ParachuteCfg.lbl.longB2 = Un mas alto coeficiente de rozamiento genera un valor de descenso mas lento.  
+ParachuteCfg.lbl.longB3 = Un valor típico para los paracaídas es 0,8.
+ParachuteCfg.but.Reset = Reiniciar
+ParachuteCfg.lbl.Shroudlines = Cuerdas:
+ParachuteCfg.lbl.Numberoflines = Número de cuerdas:
+ParachuteCfg.lbl.Linelength = Longitud de cuerda:
+ParachuteCfg.lbl.Material = Material:
+ParachuteCfg.lbl.Posrelativeto = Posición relativa a:
+ParachuteCfg.lbl.plus = plus
+ParachuteCfg.lbl.Packedlength = Longitud empaquetado:
+ParachuteCfg.lbl.Packeddiam = Diámetro del empaquetado:
+ParachuteCfg.lbl.Deploysat = Despliegue en:
+ParachuteCfg.lbl.seconds = segundos
+ParachuteCfg.lbl.Altitude = Altitud:
+ParachuteCfg.tab.General = General
+ParachuteCfg.tab.ttip.General = Propiedades generales
+ParachuteCfg.tab.Radialpos = Posición radial
+ParachuteCfg.tab.ttip.Radialpos = Configuración de la posición radial
+ParachuteCfg.lbl.Radialdistance = Distancia radial:
+ParachuteCfg.lbl.Radialdirection = Dirección radial:
+ParachuteCfg.but.Reset = Reiniciar
+
+! ShockCordConfig 
+ShockCordCfg.lbl.Shockcordlength = Longitud del tirante de suspensión
+ShockCordCfg.lbl.Shockcordmaterial = Material del tirante de suspensión:
+ShockCordCfg.lbl.Posrelativeto = Posición relativa a:
+ShockCordCfg.lbl.plus = plus
+ShockCordCfg.lbl.Packedlength = Longitud del empaquetado:
+ShockCordCfg.lbl.Packeddiam = Diámetro del empaquetado:
+ShockCordCfg.tab.General = General
+ShockCordCfg.tab.ttip.General = Propiedades generales
+
+!SleeveConfig
+SleeveCfg.tab.Outerdiam = Diámetro exterior:
+SleeveCfg.tab.Innerdiam = Diámetro interior:
+SleeveCfg.tab.Wallthickness = Espesor de la pared:
+SleeveCfg.tab.Length = Longitud:
+SleeveCfg.tab.General = General
+SleeveCfg.tab.Generalproperties = Propiedades generales
+
+! StreamerConfig
+StreamerCfg.lbl.Striplength = Longitud de la cinta:
+StreamerCfg.lbl.Stripwidth = Ancho de la cinta:
+StreamerCfg.lbl.Striparea = Área de la cinta:
+StreamerCfg.lbl.Aspectratio = Relación de aspecto:
+StreamerCfg.lbl.Material = Material:
+StreamerCfg.combo.ttip.MaterialModel = El material del componente afecta su peso.
+StreamerCfg.lbl.longA1 = <html>Coeficiente de fricción C<sub>D</sub>:
+StreamerCfg.lbl.longB1 = <html>Coeficiente de fricción relativo al área total de la banderola.<br>
+StreamerCfg.lbl.longB2 = Un mayor coeficiente de fricción genera un valor de descenso mas lento.
+StreamerCfg.lbl.Automatic = Automático
+StreamerCfg.lbl.longC1 = El coeficiente de Fricción es relativo al área de la banderola.
+StreamerCfg.lbl.Posrelativeto = Posición relativa a:
+StreamerCfg.lbl.plus = plus
+StreamerCfg.lbl.Packedlength = Longitud de empaquetado:
+StreamerCfg.lbl.Packeddiam = Diámetro de empaquetado:
+StreamerCfg.lbl.Deploysat = Despliegue a:
+StreamerCfg.lbl.seconds = segundos
+StreamerCfg.lbl.Altitude = Altitud:
+StreamerCfg.tab.General = General
+StreamerCfg.tab.ttip.General = Propiedades generales
+StreamerCfg.tab.Radialpos = Posición radial
+StreamerCfg.tab.ttip.Radialpos = Configuración de posición radial
+StreamerCfg.lbl.Radialdistance = Distancia radial:
+StreamerCfg.lbl.Radialdirection = Dirección radial:
+StreamerCfg.but.Reset = Reiniciar
+
+! ThicknessRingComponentConfig
+ThicknessRingCompCfg.tab.Outerdiam = Diámetro exterior:
+ThicknessRingCompCfg.tab.Innerdiam = Diámetro Interior:
+ThicknessRingCompCfg.tab.Wallthickness = Espesor de la pared:
+ThicknessRingCompCfg.tab.Length = Longitud:
+ThicknessRingCompCfg.tab.General = General
+ThicknessRingCompCfg.tab.Generalprop = Propiedades generales
+
+! TransitionConfig
+TransitionCfg.lbl.Transitionshape = Forma de la transición:
+TransitionCfg.checkbox.Clipped = Acortado
+TransitionCfg.lbl.Shapeparam = Parámetro de forma:
+TransitionCfg.lbl.Transitionlength = Longitud de la transición:
+TransitionCfg.lbl.Forediam = Diámetro delantero:
+TransitionCfg.checkbox.Automatic = Automático
+TransitionCfg.lbl.Aftdiam = Diámetro trasero:
+TransitionCfg.lbl.Wallthickness = Espesor de la pared:
+TransitionCfg.checkbox.Filled = Archivado
+TransitionCfg.tab.General = General
+TransitionCfg.tab.Generalproperties = Propiedades generales
+TransitionCfg.tab.Shoulder = Hombro
+TransitionCfg.tab.Shoulderproperties = Propiedades del hombro
+
+! TrapezoidFinSetConfig
+TrapezoidFinSetCfg.lbl.Nbroffins = Número de aletas:
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Número de aletas en la base de aletas.
+TrapezoidFinSetCfg.lbl.Finrotation = Rotación de las aletas:
+TrapezoidFinSetCfg.lbl.ttip.Finrotation = Ángulo de la primera aleta en la base de aletas.
+TrapezoidFinSetCfg.lbl.Fincant = Canto de aleta:
+TrapezoidFinSetCfg.lbl.ttip.Fincant = El ángulo del canto de las aletas respecto al fuselaje.
+TrapezoidFinSetCfg.lbl.Rootchord = Anclaje de la raíz:
+TrapezoidFinSetCfg.lbl.Tipchord = Forma de la extremidad:
+TrapezoidFinSetCfg.lbl.Height = Altura:
+TrapezoidFinSetCfg.lbl.Sweeplength = Longitud del barrido:
+TrapezoidFinSetCfg.lbl.Sweepangle = Ángulo de barrido:
+TrapezoidFinSetCfg.lbl.FincrossSection = Sección de la aleta:
+TrapezoidFinSetCfg.lbl.Thickness = Espesor:
+TrapezoidFinSetCfg.lbl.Posrelativeto = Posición relativa a:
+TrapezoidFinSetCfg.lbl.plus = plus
+TrapezoidFinSetCfg.tab.General = General
+TrapezoidFinSetCfg.tab.Generalproperties = Propiedades generales
+
+!MotorConfigurationModel
+MotorCfgModel.Editcfg = Editar configuraciones
+
+! StorageOptionChooser
+StorageOptChooser.lbl.Simdatatostore = Almacenar datos simulados
+StorageOptChooser.rdbut.Allsimdata = Todos los datos simulados
+StorageOptChooser.lbl.longA1 = <html>Almacenar todos los datos simulados.<br>
+StorageOptChooser.lbl.longA2 = Puede significar archivos muy grandes
+StorageOptChooser.rdbut.Every = Cada
+StorageOptChooser.lbl.longB1 = <html>Almacenar valores de impresión aproximadamente este lejano apartado.<br>
+StorageOptChooser.lbl.longB2 = Resultados de valores grandes en archivos mas pequeños.
+StorageOptChooser.lbl.seconds = Segundos
+StorageOptChooser.rdbut.Onlyprimfig = Solamente figuras primarios
+StorageOptChooser.lbl.longC1 = <html>Almacenas sólo los valores en la tabla sumario.<br>
+StorageOptChooser.lbl.longC2 = Estos resultados en los archivos mas pequeños.
+StorageOptChooser.checkbox.Compfile = Archivo comprimido
+StorageOptChooser.lbl.UsingComp = Usando la compresión reducimos el tamaño de los archivos. 
+StorageOptChooser.lbl.longD1 = Una estimación de cuan grande será un archivo podría tenerse con las presentes opciones.
+StorageOptChooser.ttip.Saveopt = Guardar opciones
+StorageOptChooser.lbl.Estfilesize = Estimación del tamaño del archivo:
+StorageOptChooser.lbl.Saveopt = Guardar opciones
+
+! ThrustCurveMotorSelectionPanel
+TCMotorSelPan.lbl.Selrocketmotor = Selecciones el motor del cohete:
+TCMotorSelPan.checkbox.hideSimilar = Borrar las curvas muy similares
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Mostrar todos los motores
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Mostrar motores con diámetro inferior al del tubo portamotor
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Mostrar motores con diámetro igual al del tubo portamotor
+TCMotorSelPan.lbl.Motormountdia = Diámetro del portamotor:
+TCMotorSelPan.lbl.Search = Buscar:
+TCMotorSelPan.lbl.Selectthrustcurve = Seleccione curva de empuje:
+TCMotorSelPan.lbl.Ejectionchargedelay = Retardo de la carga de eyección:
+TCMotorSelPan.equalsIgnoreCase.None = Ninguno
+TCMotorSelPan.lbl.NumberofsecondsorNone = (Número de segundos o \"Ninguno\")
+TCMotorSelPan.lbl.Totalimpulse = Impulso total:
+TCMotorSelPan.lbl.Avgthrust = Empuje medio:
+TCMotorSelPan.lbl.Maxthrust = Empuje máximo:
+TCMotorSelPan.lbl.Burntime = Tiempo de quemado:
+TCMotorSelPan.lbl.Launchmass = Masa a lanzar:
+TCMotorSelPan.lbl.Emptymass = Masa vacía:
+TCMotorSelPan.lbl.Datapoints = Puntos dato:
+TCMotorSelPan.lbl.Digest = Resumen:
+TCMotorSelPan.title.Thrustcurve = Curva de empuje:
+TCMotorSelPan.title.Thrust = Empuje
+TCMotorSelPan.delayBox.None = Ninguno
+
+
+! PlotDialog
+PlotDialog.title.Flightdataplot = Representar los datos de vuelo
+PlotDialog.Chart.Simulatedflight = Vuelo simulado
+PlotDialog.CheckBox.Showdatapoints = Mostrar los puntos datos
+PlotDialog.lbl.Chart = Click+bajar el rozamiento+derecha ampliar, arriba+izquierda disminuir
+
+
+! "main" prefix is used for the main application dialog
+
+main.menu.file = Archivo
+main.menu.file.new = Nuevo
+main.menu.file.open = Abrir ...
+main.menu.file.openExample = Abrir ejemplo ...
+main.menu.file.save = Guardar
+main.menu.file.saveAs = Guardar como ...
+main.menu.file.print = Imprimir ...
+main.menu.file.close = Cerrar
+main.menu.file.quit = Silenciar
+
+main.menu.edit = Representar
+main.menu.edit.undo = Invertir
+main.menu.edit.redo = Rehacer
+main.menu.edit.cut = Cortar
+main.menu.edit.copy = Copiar
+main.menu.edit.paste = Pegar
+main.menu.edit.delete = Borrar
+main.menu.edit.preferences = Preferencias
+
+main.menu.analyze = Analizar
+main.menu.analyze.componentAnalysis = Análisis de componentes
+
+main.menu.help = Ayuda
+main.menu.help.license = Licencia
+main.menu.help.bugReport = Report de supresiones
+main.menu.help.debugLog = Registro de recuperaciones
+main.menu.help.about = Acerca de
+
+main.menu.debug = Recuperación
+main.menu.debug.whatisthismenu = ¿Que es este menú?
+main.menu.debug.createtestrocket = Crear prueba de modelo
+
+! database
+! Translate here all material database
+!
+
+! Material database
+! BULK_MATERIAL
+Databases.materials.Acrylic = Acrílico
+Databases.materials.Balsa = Balsa
+Databases.materials.Birch = Abedul
+Databases.materials.Cardboard = Cartón
+Databases.materials.Carbonfiber = Fibra de Carbono
+Databases.materials.Cork = Corcho
+Databases.materials.DepronXPS = Depron (XPS)
+Databases.materials.Fiberglass = Fibra de vidrio
+Databases.materials.Kraftphenolic = Cartón fenólico
+Databases.materials.Maple = Arce
+Databases.materials.Paperoffice = Papel (oficina)
+Databases.materials.Pine = Pino
+Databases.materials.Plywoodbirch = Contrachapado (birch)
+Databases.materials.PolycarbonateLexan = Policarbonato (Lexan)
+Databases.materials.Polystyrene = Poliestireno
+Databases.materials.PVC = PVC
+Databases.materials.Spruce = Pulido
+Databases.materials.StyrofoamgenericEPS = Porex (generico EPS)
+Databases.materials.StyrofoamBluefoamXPS = Porex \"Foam azul\" (XPS)
+Databases.materials.Quantumtubing = Quantum tubing
+!SURFACE_MATERIAL
+Databases.materials.Ripstopnylon = Ripstop nylon
+Databases.materials.Mylar = Mylar
+Databases.materials.Polyethylenethin = Polietileno (delgado)
+Databases.materials.Polyethyleneheavy = Polietileno (grueso)
+Databases.materials.Silk = Seda
+Databases.materials.Paperoffice = Papel (oficina)
+Databases.materials.Cellophane = Celofán
+Databases.materials.Crepepaper = Cr\u00eape Papel
+! LINE_MATERIAL
+Databases.materials.Threadheavy-duty = Trenzado (Alta resistencia)
+Databases.materials.Elasticcordround2mm = Cordón elástico (aprox. 2mm, 1/16 in)
+Databases.materials.Elasticcordflat6mm = Cordón elástico (Plano  6mm, 1/4 in)
+Databases.materials.Elasticcordflat12mm = Cordón elástico (Plano 12mm, 1/2 in)
+Databases.materials.Elasticcordflat19mm = Cordón elástico (Plano 19mm, 3/4 in)
+Databases.materials.Elasticcordflat25mm = Cordón elástico (Plano 25mm, 1 in)
+Databases.materials.Braidednylon2mm = Nylon trenzado (2 mm, 1/16 in)
+Databases.materials.Braidednylon3mm = Nylon trenzado (3 mm, 1/8 in)
+Databases.materials.Tubularnylon11mm = Nylon tubular (11 mm, 7/16 in)
+Databases.materials.Tubularnylon14mm = Nylon tubular (14 mm, 9/16 in)
+Databases.materials.Tubularnylon25mm = Nylon tubular (25 mm, 1 in)
+
+! ExternalComponent
+ExternalComponent.Rough = Rugoso
+ExternalComponent.Unfinished = Inacabado
+ExternalComponent.Regularpaint = Pintura normal
+ExternalComponent.Smoothpaint = Pintura fina
+ExternalComponent.Polished = Pulido
+
+! LineStyle
+LineStyle.Solid = Sólido
+LineStyle.Dashed = Pulverizado
+LineStyle.Dotted = Punteado
+LineStyle.Dash-dotted = Pulverizado con puntos
+LineStyle.Defaultstyle = Estilo por defecto
+
+! Shape
+Shape.Conical = Cónico
+Shape.Conical.desc1 = Una ojiva cónica de perfil triangular
+Shape.Conical.desc2 = Transición cónica de lados rectos
+Shape.Ogive = Ojiva
+Shape.Ogive.desc1 = Una ojiva con perfil de segmento circular.  El parámetro de forma de valor 1 produce una <b>Tangente a la ojiva</b>, Que tiene una transición suave al fuselaje, produce un valor menor que 1 <b>Secante a la ojiva</b>.
+Shape.Ogive.desc2 = Una ojiva con perfil de segmento circular.  El parámetro de forma de valor 1 produce una <b>Tangente a la ojiva</b>, Que tiene una transición suave al fuselaje, produce un valor menor que 1 <b>Secante a la ojiva</b>.
+Shape.Ellipsoid = Elipsoide
+Shape.Ellipsoid.desc1 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;<i>Longitud</i> y <i>Diámetro</i>.
+Shape.Ellipsoid.desc2 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;<i>Longitud</i> y <i>Diámetro</i>. Si la transición no se interrumpe, entonces el perfil se extiende al centro con el correspondiente radio.         
+Shape.Powerseries = Series potentes
+Shape.Powerseries.descA1 = Una serie de ojivas potentes tiene un perfil de<i>Radio</i>&nbsp;&veces;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longitud</i>)<sup><i>k</i></sup> donde <i>k</i> es el parámetro de forma.  Para <i>k</i>=0.5 este es un <b>
+Shape.Powerseries.descA2 = -potencia</b> o <b>parabólico</b> ojiva, para <i>k</i>=0.75 un <b>
+Shape.Powerseries.descA3 = -potencia</b>, y para <i>k</i>=1 a <b>cónica</b> ojiva.
+Shape.Powerseries.descB1 = Una serie de transiciones potentes tiene un perfil de <i>Radio</i>&nbsp;&veces;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longitud</i>)<sup><i>k</i></sup> donde <i>k</i> es el parámetro de forma.  Para <i>k</i>=0.5 la transición es <b>
+Shape.Powerseries.descB2 = -potencia</b> o <b>parabólica</b>, para <i>k</i>=0.75 a <b>
+Shape.Powerseries.descB3 = -potencia</b>, y para <i>k</i>=1 <b>cónica</b>.
+Shape.Parabolicseries = Serie parabólica
+Shape.Parabolicseries.desc1 = A parabólica series ojiva Cone has a perfil de a parábola.  The forma parámetro defines el segmento de el parábola a utilice.  The forma parámetro 1.0 produces a <b>full parábola</b> que es tangente a el body tubo, 0.75 produces a <b>3/4 parábola</b>, 0.5 procudes a <b>1/2 parábola</b> y 0 produces a <b>cónico</b> ojiva .
+Shape.Parabolicseries.desc2 = A parabólica series transición has a perfil de a parábola.  The forma parámetro defines el segmento de el parábola a utilice.  The forma parámetro 1.0 produces a <b>full parábola</b> que es tangente a el body tubo at el aft extremo, 0.75 produces a <b>3/4 parábola</b>, 0.5 procudes a <b>1/2 parábola</b> y 0 produces a <b>cónico</b> transición.
+Shape.Haackseries = Haack series
+Shape.Haackseries.desc1 = The Haack series ojiva  are designado a minimizar drag.  The forma parámetro 0 produces un <b>LD-Haack</b> o <b>Von Karman</b> ojiva , que minimizas drag para fijado longitud y diámetro, mientras a valor de 0.333 produces un <b>LV-Haack</b> ojiva , que minimizas drag para fijado longitud y volumen.
+Shape.Haackseries.desc2 = The Haack series <i>ojiva </i> are designado a minimizar drag.  estas transición formas are sus equivalentes, pero do no necesariamente produce optima drag para transiciones.  The forma parámetro 0 produces un <b>LD-Haack</b> o <b>Von Karman</b> forma, mientras a valor de 0.333 produces un <b>LV-Haack</b> shape.            
+
+
+! RocketComponent
+RocketComponent.Position.TOP = Parte alta del componente
+RocketComponent.Position.MIDDLE = Parte media del componente
+RocketComponent.Position.BOTTOM = Extremo inferior del componente
+RocketComponent.Position.AFTER = Despues del componente
+RocketComponent.Position.ABSOLUTE = Punta de la ojiva
+
+! LaunchLug
+LaunchLug.Launchlug = Guía
+! NoseCone
+NoseCone.NoseCone = Ojiva
+! Transition
+Transition.Transition = Transición cónica de lados rectos
+!Stage
+Stage.Stage = Etapa
+! BodyTube
+BodyTube.BodyTube = Tubo del fuselaje
+! TubeCoupler
+TubeCoupler.TubeCoupler = Acoplador
+!InnerTube
+InnerTube.InnerTube = Tubo interior
+! TrapezoidFinSet
+TrapezoidFinSet.TrapezoidFinSet = Aleta en configuración trapezoidal
+! FreeformFinSet
+FreeformFinSet.FreeformFinSet = Forma libre de aleta
+!MassComponent
+MassComponent.MassComponent = Componente masa
+! Parachute
+Parachute.Parachute = Paracaídas
+! ShockCord
+ShockCord.ShockCord = Tirante de suspensión
+! Bulkhead
+Bulkhead.Bulkhead = Media cámara
+
+!Rocket
+Rocket.motorCount.Nomotor = [Sin motores]
+Rocket.compname.Rocket = Cohete
+
+!MotorMount
+MotorMount.IgnitionEvent.AUTOMATIC = Automático (Lanzamiento o carga de eyección)
+MotorMount.IgnitionEvent.LAUNCH = Lanzamiento
+MotorMount.IgnitionEvent.EJECTION_CHARGE = Primera carga de eyección de la etapa previa
+MotorMount.IgnitionEvent.BURNOUT = Primer encendido de la etapa previa
+MotorMount.IgnitionEvent.NEVER = Nunca
+
+!ComponentIcons 
+ComponentIcons.Nosecone = Ojiva
+ComponentIcons.Bodytube = Tubo del fuselaje
+ComponentIcons.Transition = Transición
+ComponentIcons.Trapezoidalfinset = Aleta en configuración trapezoidal
+ComponentIcons.Ellipticalfinset = Aleta en configuración elíptica
+ComponentIcons.Freeformfinset = Forma libre de aleta
+ComponentIcons.Launchlug = Guía de lanzamiento
+ComponentIcons.Innertube = Tubo interior
+ComponentIcons.Tubecoupler = Tubo de acoplamiento
+ComponentIcons.Centeringring = Arandela de centraje
+ComponentIcons.Bulkhead = Media cámara
+ComponentIcons.Engineblock = Tope motor
+ComponentIcons.Parachute = Paracaídas
+ComponentIcons.Streamer = Banderola
+ComponentIcons.Shockcord = Tirante de suspensión
+ComponentIcons.Masscomponent = Componente masa
+ComponentIcons.disabled = (Desconectado)
+
+! StageAction
+StageAction.Stage = Etapa
+
+! RecoveryDevice
+RecoveryDevice.DeployEvent.LAUNCH = Lanzamiento (mas NN segundos)
+RecoveryDevice.DeployEvent.EJECTION = Primera carga de eyección de esta etapa
+RecoveryDevice.DeployEvent.APOGEE = Apogeo
+RecoveryDevice.DeployEvent.ALTITUDE = Altura específica durante el descenso
+RecoveryDevice.DeployEvent.NEVER = Nunca
+
+! FlightEvent
+FlightEvent.Type.LAUNCH = Lanzamiento
+FlightEvent.Type.IGNITION = Encendido del motor
+FlightEvent.Type.LIFTOFF = Despegue
+FlightEvent.Type.LAUNCHROD = Despeje de la varilla de lanzamiento
+FlightEvent.Type.BURNOUT = Apagado del motor
+FlightEvent.Type.EJECTION_CHARGE = Carga de eyección
+FlightEvent.Type.STAGE_SEPARATION = Separación de etapa
+FlightEvent.Type.APOGEE = Apogeo
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Sistema de despliegue del sistema de recuperación
+FlightEvent.Type.GROUND_HIT = Contacto con el suelo
+FlightEvent.Type.SIMULATION_END = Fin de la simulación
+FlightEvent.Type.ALTITUDE = Cambio de altura
+
+! ThrustCurveMotorColumns
+TCurveMotorCol.MANUFACTURER = Fabricante
+TCurveMotorCol.DESIGNATION = Designación
+TCurveMotorCol.TYPE = Tipo
+TCurveMotorCol.DIAMETER = Diámetro
+TCurveMotorCol.LENGTH = Longitud
+
+! RocketInfo
+RocketInfo.lengthLine.Length = Longitud
+RocketInfo.lengthLine.maxdiameter = , max. Diámetro
+RocketInfo.massText1 = Masa con motores
+RocketInfo.massText2 = Masa sin motores
+RocketInfo.at = a M=
+RocketInfo.cgText = CG:
+RocketInfo.cpText = CP:
+RocketInfo.stabText = Estabilidad:
+RocketInfo.Warning = Peligro:
+RocketInfo.Calculating = Calculando...
+RocketInfo.Apogee = Apogeo:
+RocketInfo.Maxvelocity = Max. velocidad:
+RocketInfo.Maxacceleration = Max. aceleración:
+RocketInfo.apogeeValue = N/A
+RocketInfo.Mach = (Mach
+RocketInfo.velocityValue = N/A
+RocketInfo.accelerationValue = N/A
+
+! FinSet
+FinSet.CrossSection.SQUARE = Cuadrado
+FinSet.CrossSection.ROUNDED = Redondo
+FinSet.CrossSection.AIRFOIL = Superficie de sustentación
+FinSet.TabRelativePosition.FRONT = Borde principal del extremo de anclaje
+FinSet.TabRelativePosition.CENTER = Borde principal del anclaje
+FinSet.TabRelativePosition.END = Borde principal de tracción
+
+! FlightDataType
+FlightDataType.TYPE_TIME = Tiempo de quemado:
+FlightDataType.TYPE_ALTITUDE = Altura específica durante el descenso
+FlightDataType.TYPE_VELOCITY_Z = Velocidad vertical
+FlightDataType.TYPE_ACCELERATION_Z = Aceleración vertical
+FlightDataType.TYPE_VELOCITY_TOTAL = Velocidad total
+FlightDataType.TYPE_ACCELERATION_TOTAL = Aceleración total
+FlightDataType.TYPE_POSITION_X = Posición contra viento
+FlightDataType.TYPE_POSITION_Y = Posición paralela al viento
+FlightDataType.TYPE_POSITION_XY = Distancia lateral
+FlightDataType.TYPE_POSITION_DIRECTION = Dirección lateral
+FlightDataType.TYPE_VELOCITY_XY = Velocidad lateral
+FlightDataType.TYPE_ACCELERATION_XY = Aceleración lateral
+FlightDataType.TYPE_AOA = Ángulo de ataque:
+FlightDataType.TYPE_ROLL_RATE = Relación de rotación
+FlightDataType.TYPE_PITCH_RATE = Relación de pico
+FlightDataType.TYPE_YAW_RATE = Relación de desvío
+FlightDataType.TYPE_MASS = Masa
+FlightDataType.TYPE_LONGITUDINAL_INERTIA = Momento de inercia longitudinal
+FlightDataType.TYPE_ROTATIONAL_INERTIA = Momento de inercia rotacional
+FlightDataType.TYPE_CP_LOCATION = CP situación
+FlightDataType.TYPE_CG_LOCATION = CG situación
+FlightDataType.TYPE_STABILITY = Calibración del margen de estabilidad
+FlightDataType.TYPE_MACH_NUMBER = Número Mach
+FlightDataType.TYPE_REYNOLDS_NUMBER = Número de Reynolds
+FlightDataType.TYPE_THRUST_FORCE = Empuje
+FlightDataType.TYPE_DRAG_FORCE = Fuerza de rozamiento
+FlightDataType.TYPE_DRAG_COEFF = Coeficiente de rozamiento
+FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coeficiente de rozamiento axial
+FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coeficiente de rozamiento por fricción
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Presión del coeficiente de rozamiento
+FlightDataType.TYPE_BASE_DRAG_COEFF = Coeficiente de rozamiento base
+FlightDataType.TYPE_NORMAL_FORCE_COEFF = Coeficiente de rozamiento normal
+FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pico del coeficiente de rozamiento
+FlightDataType.TYPE_YAW_MOMENT_COEFF = Coeficiente de rozamiento de desviación
+FlightDataType.TYPE_SIDE_FORCE_COEFF = Coeficiente de fuerza lateral
+FlightDataType.TYPE_ROLL_MOMENT_COEFF = Coeficiente del momento de rotación
+FlightDataType.TYPE_ROLL_FORCING_COEFF = Fuerza del coeficiente de rotación
+FlightDataType.TYPE_ROLL_DAMPING_COEFF = Disminución del coeficiente de rotación
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Disminución del coeficiente de pico
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Disminución del coeficiente de desviación
+FlightDataType.TYPE_REFERENCE_LENGTH = Longitud de referencia: 
+FlightDataType.TYPE_REFERENCE_AREA = Área de referencia
+FlightDataType.TYPE_ORIENTATION_THETA = Orientación vertical (zenit)
+FlightDataType.TYPE_ORIENTATION_PHI = Orientación lateral (azimut)
+FlightDataType.TYPE_WIND_VELOCITY = Velocidad del viento
+FlightDataType.TYPE_AIR_TEMPERATURE = Temperatura del aire
+FlightDataType.TYPE_AIR_PRESSURE = Presión del aire
+FlightDataType.TYPE_SPEED_OF_SOUND = Velocidad del sonido
+FlightDataType.TYPE_TIME_STEP = Simulación del tiempo de etapa
+FlightDataType.TYPE_COMPUTATION_TIME = Cálculo del tiempo
+
+! PlotConfiguration
+PlotConfiguration.Verticalmotion = Movimiento vertical vs. Tiempo
+PlotConfiguration.Totalmotion = Movimiento total vs. Tiempo
+PlotConfiguration.Flightside = Perfil lateral de vuelo
+PlotConfiguration.Stability = Estabilidad vs. Tiempo
+PlotConfiguration.Dragcoef = Coeficiente de rozamiento vs. Número Mach
+PlotConfiguration.Rollcharacteristics = Características de rotación
+PlotConfiguration.Angleofattack = Ángulo de orientación y ataque vs. Tiempo
+PlotConfiguration.Simulationtime = Simulación del tiempo de etapa y cálculo del tiempo
+
+! Warning
+Warning.LargeAOA.str1 = Evaluación de la amplitud del ángulo de ataque.
+Warning.LargeAOA.str2 = Evaluación de la amplitud del ángulo de ataque (
+Warning.DISCONTINUITY = Discontinuidad en el diámetro del fuselaje.
+Warning.THICK_FIN = Las aletas gruesas no están correctamente modeladas.
+Warning.JAGGED_EDGED_FIN = las predicciones afiladas de la aleta pueden ser inexactas.
+Warning.LISTENERS_AFFECTED = Los oyentes modificaron la simulación del vuelo
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Sistema de recuperación abierto mientras el motor todavía empujaba
+Warning.FILE_INVALID_PARAMETER = Parámetro no válido encontrado. Ignorarlo.
diff --git a/l10n/messages_fr.properties b/l10n/messages_fr.properties
new file mode 100644 (file)
index 0000000..d4c0972
--- /dev/null
@@ -0,0 +1,1180 @@
+\r
+#\r
+# French base translation file\r
+# Translated by Tripoli France\r
+\r
+\r
+! Set to the name of the current translation file (used for debugging purposes)\r
+debug.currentFile = messages_fr.properties\r
+\r
+! RocketActions\r
+RocketActions.checkbox.Donotaskmeagain = Ne plus me demander\r
+RocketActions.lbl.Youcanchangedefop = Vous pouvez changer le mode opératoire par defaut dans les préferences.\r
+RocketActions.showConfirmDialog.lbl1 = Supprimer les simulations sélectionnées?\r
+RocketActions.showConfirmDialog.lbl2 = <html><i>Cette opération n'est pas réversible.</i>\r
+RocketActions.showConfirmDialog.title = Effacer les simulations\r
+RocketActions.DelCompAct.Delete = Effacer\r
+RocketActions.DelCompAct.ttip.Delete = Effacer la pièce sélectionnée.\r
+RocketActions.DelSimuAct.Delete = Effacer\r
+RocketActions.DelSimuAct.ttip.Delete = Effacer la simulation sélectionnée.\r
+RocketActions.DelAct.Delete = Effacer \r
+RocketActions.DelAct.ttip.Delete = Effacer la pièce ou la simulation sélectionnée.\r
+RocketActions.CutAction.Cut = Couper\r
+RocketActions.CutAction.ttip.Cut = Couper cette pièce ou simulation, l'ajouter au presse papier et l'enlever du projet\r
+RocketActions.CopyAct.Copy = Copier\r
+RocketActions.CopyAct.ttip.Copy = Copier les pièces (et les pièces liées) dans le presse papier.\r
+RocketActions.PasteAct.Paste = Coller\r
+RocketActions.PasteAct.ttip.Paste = Coller la pièce ou simulation présente dans le presse papier dans le projet.\r
+RocketActions.EditAct.Edit = Modifier\r
+RocketActions.EditAct.ttip.Edit = Modifier la pièce sélectionnée.\r
+RocketActions.NewStageAct.Newstage = Nouvel étage\r
+RocketActions.NewStageAct.ttip.Newstage = Ajouter un nouvel étage au projet.\r
+RocketActions.ActBoosterstage = Etage Booster\r
+RocketActions.MoveUpAct.Moveup = Monter\r
+RocketActions.MoveUpAct.ttip.Moveup = Monter la pièce.\r
+RocketActions.MoveDownAct.Movedown = Descendre\r
+RocketActions.MoveDownAct.ttip.Movedown = Descendre la pièce.\r
+\r
+! RocketPanel\r
+RocketPanel.FigTypeAct.Sideview = Vue de coté\r
+RocketPanel.FigTypeAct.ttip.Sideview = Vue de coté\r
+RocketPanel.FigTypeAct.Backview = Vue arrière\r
+RocketPanel.FigTypeAct.ttip.Backview = Vue arrière \r
+RocketPanel.lbl.Motorcfg = Configuration Moteur:\r
+RocketPanel.lbl.infoMessage = <html>Cliquer pour sélectionner &nbsp;&nbsp; Shift+cliquer pour sélectionner plusieurs &nbsp;&nbsp; Double-cliquer pour modifier &nbsp;&nbsp; Click+déplacer pour déplacer\r
+\r
+\r
+! BasicFrame\r
+BasicFrame.SimpleFileFilter1 = Tous les fichiers fusée (*.ork; *.rkt)\r
+BasicFrame.SimpleFileFilter2 = Fichiers OpenRocket (*.ork)\r
+BasicFrame.SimpleFileFilter3 = Fichiers RockSim (*.rkt)\r
+BasicFrame.tab.Rocketdesign = Projet fusée\r
+BasicFrame.tab.Flightsim = Simulations de vol\r
+BasicFrame.title.Addnewcomp = Ajouter une nouvelle pièce\r
+BasicFrame.item.Openrocketdesign = Ouvrir un projet fusée\r
+BasicFrame.item.Openexamplerocketdesign = Ouvrir un exemple de projet fusée\r
+BasicFrame.item.SavecurRocketdesign = Sauvegarder le projet fusée courant\r
+BasicFrame.item.SavecurRocketdesnewfile = Sauvegarder le projet fusée courant dans un nouveau fichier\r
+BasicFrame.item.Printpart = Imprimer la liste des pièces et les modèles d'ailerons\r
+BasicFrame.item.Closedesign = Fermer le projet fusée courant\r
+BasicFrame.item.Quitprogram = Quitter le programme\r
+BasicFrame.menu.Rocketedt = Modification de la fusée\r
+BasicFrame.dlg.lbl1 = Le projet '\r
+BasicFrame.dlg.lbl2 = ' N'a pas été sauvegardé.\r
+BasicFrame.dlg.lbl3 = Voulez vous le sauvegarder?\r
+BasicFrame.dlg.title = Projet non sauvegardé\r
+BasicFrame.StageName.Sustainer = Sustainer\r
+BasicFrame.WarningDialog.txt1 = Les problemes suivant sont survenus lors de l'ouverture de\r
+BasicFrame.WarningDialog.txt2 = Certains elements du projet n'ont peut etre pas été chargé correctement.\r
+BasicFrame.WarningDialog.title = Avertissement lors de l'ouverture du fichier\r
+\r
+! Labels used in buttons of dialog windows\r
+button.ok = OK\r
+button.cancel = Annuler\r
+button.close = Fermer\r
+\r
+! Common labels used in buttons of dialog windows\r
+dlg.but.ok = Accepter\r
+dlg.but.cancel = Annuler\r
+dlg.but.close = Fermer\r
+\r
+! About Dialog\r
+AboutDialog.lbl.translation = Traduit en français par\r
+AboutDialog.lbl.translator = Tripoli France\r
+AboutDialog.lbl.translatorWebsite = http://tripoli.france.free.fr/\r
+\r
+! Bug Report dialog\r
+bugreport.dlg.title = Rapport d'erreurs\r
+bugreport.dlg.but.Sendbugreport = Envoyer un rapport d'erreurs\r
+bugreport.dlg.but.Sendbugreport.Ttip = Envoyer automatiquement un rapport d'erreurs aux developpeurs d'OpenRocket\r
+bugreport.dlg.successmsg1 = Rapport d'erreurs envoyé avec succès.\r
+bugreport.dlg.successmsg2 = Merci d'avoir contribué à l'amélioration d'OpenRocket!\r
+bugreport.dlg.successmsg3 = Rapport d'erreurs envoyé\r
+bugreport.dlg.connectedInternet = <html>Si vous etes connecté sur Internet, vous pouvez tout simplement cliquer sur <em>Envoyer un rapport d'erreurs</em>.\r
+bugreport.dlg.otherwise = Sinon envoyez le texte ci-dessous à l'adresse:\r
+bugreport.lbl.Theinformation = Les informations ci-dessus sont succeptibles d'etre incluse dans un rapport d'erreur publique.  Assurez vous qu'il ne contienne pas d'informations sensibles que vous ne voulez pas rendre publique.\r
+bugreport.dlg.failedmsg1 = OpenRocket n'a pas réussi à envoyer le rapport d'erreur:\r
+bugreport.dlg.failedmsg2 = S'il vous plait envoyez le rapport manuellement à\r
+bugreport.dlg.failedmsg3 = Erreur d'envoi du rapport\r
+bugreport.reportDialog.txt = <html><b>Vous pouvez signaler une erreur avec OpenRocket en remplissant et en envoyant le message ci-dessous.</b><br>Vous pouvez egalement signaler des erreurs et inclure des pieces jointes sur le site web du projet.\r
+bugreport.reportDialog.txt2 = <html><b>S'il vous plait ajoutez une courte description de ce que vous faisiez lorsque l'erreur s'est produite.</b>\r
+\r
+\r
+! Debug log dialog\r
+debuglogdlg.but.clear = Effacer\r
+debuglogdlg.OpenRocketdebuglog = Fichier debug d'OpenRocket\r
+debuglogdlg.Displayloglines = Afficher les numéros des lignes:\r
+debuglogdlg.Follow = Suivre\r
+debuglogdlg.col.Time = Heure\r
+debuglogdlg.col.Level = Niveau\r
+debuglogdlg.col.Location = Emplacement\r
+debuglogdlg.col.Message = Message\r
+debuglogdlg.lbl.Loglinenbr = Numéro de la ligne:\r
+debuglogdlg.lbl.Time = Heure:\r
+debuglogdlg.lbl.Level = Niveau:\r
+\r
+\r
+! Edit Motor configuration dialog\r
+edtmotorconfdlg.but.removemotor = Enlever le moteur\r
+edtmotorconfdlg.but.Selectmotor = Choisir le moteur\r
+edtmotorconfdlg.but.Removeconfiguration = Supprimer la configuration\r
+edtmotorconfdlg.but.Newconfiguration = Nouvelle configuration\r
+edtmotorconfdlg.lbl.Motormounts = <html><b>Portes moteur:</b>\r
+edtmotorconfdlg.title.Editmotorconf = Changer la configuration moteur\r
+edtmotorconfdlg.selectcomp = <html>Choisir les pièces utilisées par le porte moteur:\r
+edtmotorconfdlg.lbl.Motorconfig = <html><b>Configurations moteur:</b>\r
+edtmotorconfdlg.lbl.Configname = Nom de la configuration:\r
+edtmotorconfdlg.lbl.Leavenamedefault = Laisser le champ vide par défaut.\r
+\r
+! Example design dialog\r
+exdesigndlg.but.open = Ouvrir\r
+exdesigndlg.lbl.Selectexample = Chosir l'exemple de projet à ouvrir:\r
+exdesigndlg.lbl.Openexampledesign = Ouvrir un exemple de projet\r
+exdesigndlg.lbl.Exampledesignsnotfound = Impossible de trouver les exemples de projets.\r
+exdesigndlg.lbl.Examplesnotfound = Exemples non trouvés\r
+\r
+! Print panel dialog\r
+printdlg.but.saveaspdf = Sauvegarder en PDF\r
+printdlg.but.preview = Prévisualisation\r
+printdlg.but.settings = Configuration\r
+\r
+! Material edit panel\r
+matedtpan.but.new = Nouveau\r
+matedtpan.but.edit = Editer\r
+matedtpan.but.delete = Effacer\r
+matedtpan.but.revertall = Revenir aux valeurs précédente\r
+matedtpan.col.Material = Matériaux\r
+matedtpan.col.Type = Type\r
+matedtpan.col.Density = Densité\r
+matedtpan.col.but.ttip.New = Ajouter un nouveau matériau\r
+matedtpan.title.Addcustmaterial = Ajouter un matériau personnalisé\r
+matedtpan.but.ttip.edit = Modifier un matériau existant\r
+matedtpan.title.Editmaterial = Modifier un matériau\r
+matedtpan.title2.Editmaterial = Les matériaux prédéfinis ne peuvent pas être modifiés.\r
+matedtpan.but.ttip.delete = Supprimer un matériau personnalisé\r
+matedtpan.but.ttip.revertall = Supprimer tous les matériaux personnalisés\r
+matedtpan.title.Deletealluser-defined = Effacer tous les matériaux personalisés?\r
+matedtpan.title.Revertall = Revenir aux valeurs précédentes?\r
+matedtpan.lbl.edtmaterials = <html><i>Modifier les matériaux n'affectera pas les projets fusée existants.</i>\r
+\r
+!MaterialModel\r
+MaterialModel.title.Material = Matériau\r
+MaterialModel.title.Defcustmat = Définir un matériau personnalisé\r
+\r
+\r
+! Preference dialog\r
+pref.dlg.but.add = Ajouter\r
+pref.dlg.but.reset = Réinitialiser\r
+pref.dlg.but.checknow = Vérifier maintenant\r
+pref.dlg.but.defaultmetric = Système métrique\r
+pref.dlg.but.defaultimperial = Système imperial\r
+pref.dlg.title.Preferences = Préférences \r
+pref.dlg.tab.Units = Unités\r
+pref.dlg.tab.Defaultunits = Unités par défaut\r
+pref.dlg.tab.Materials = Matériaux\r
+pref.dlg.tab.Custommaterials = Matériaux personnalisés\r
+pref.dlg.tab.Options = Options\r
+pref.dlg.tab.Miscellaneousoptions = Autres options\r
+pref.dlg.lbl.Positiontoinsert = Position pour insérer des composants internes:\r
+pref.dlg.lbl.Confirmdeletion = Confirmer l'effacement des simulations:\r
+pref.dlg.lbl.User-definedthrust = Courbes de poussée personnalisées:\r
+pref.dlg.Allthrustcurvefiles = Tous les fichiers de courbes de poussée (*.eng; *.rse; *.zip; répertoires)\r
+pref.dlg.RASPfiles = Fichiers moteur RASP (*.eng)\r
+pref.dlg.RockSimfiles = Fichiers moteur RockSim (*.rse)\r
+pref.dlg.ZIParchives = Archives ZIP (*.zip)\r
+pref.dlg.checkbox.Checkupdates = Rechercher les mises à jour au démarrage\r
+pref.dlg.ttip.Checkupdatesnow = Recherchez les mises à jour maintenant\r
+pref.dlg.lbl.Selectprefunits = Choisissez vos unités favorites:\r
+pref.dlg.lbl.Rocketdimensions = Dimensions de la fusée:\r
+pref.dlg.lbl.Linedensity = Epaisseur des lignes:\r
+pref.dlg.lbl.Motordimensions = Dimensions du moteur:\r
+pref.dlg.lbl.Surfacedensity = Densité de la Surface:\r
+pref.dlg.lbl.Distance = Distance:\r
+pref.dlg.lbl.Bulkdensity =  Densité apparente:\r
+pref.dlg.lbl.Velocity = Vitesse:\r
+pref.dlg.lbl.Surfaceroughness = Rugosité de la Surface:\r
+pref.dlg.lbl.Acceleration = Accélération:\r
+pref.dlg.lbl.Area = Surface:\r
+pref.dlg.lbl.Mass = Masse:\r
+pref.dlg.lbl.Angle = Angle:\r
+pref.dlg.lbl.Force = Force:\r
+pref.dlg.lbl.Rollrate = Taux de roulis:\r
+pref.dlg.lbl.Totalimpulse = Impulsion totale:\r
+pref.dlg.lbl.Temperature = Température:\r
+pref.dlg.lbl.Momentofinertia = Moment d'inertie:\r
+pref.dlg.lbl.Pressure = Pression:\r
+pref.dlg.lbl.Stability = Stabilité:\r
+pref.dlg.lbl.effect1 = Les changements prendront effet la prochaine fois que vous ouvrirez une fenêtre.\r
+pref.dlg.lbl.Checkingupdates = Recherche des mises à jour...\r
+pref.dlg.lbl.msg1 = Une erreur est survenue durant la communication avec le serveur.\r
+pref.dlg.lbl.msg2 = Incapable de récupérer les informations de mise à jour\r
+pref.dlg.lbl.msg3 = Vous utilisez la dernière version d'OpenRocket.\r
+pref.dlg.lbl.msg4 = Pas de mises à jour disponible\r
+pref.dlg.PrefChoiseSelector1 = Toujours demander\r
+pref.dlg.PrefChoiseSelector2 = Insérer au milieu\r
+pref.dlg.PrefChoiseSelector3 = Ajouter à la fin\r
+pref.dlg.PrefBooleanSelector1 = Supprimer\r
+pref.dlg.PrefBooleanSelector2 = Confirmer\r
+pref.dlg.Add = Ajouter\r
+pref.dlg.DescriptionArea.Adddirectories = Ajouter des répertoires, des fichiers moteurs RASP (*.eng), des fichiers moteurs RockSim (*.rse) ou des fichiers achives ZIP separés par un point virgule (;) pour charger des courbes de pousées externes.  Les changements prendront effet au prochain démarrage d'OpenRocket.\r
+\r
+\r
+! Simulation edit dialog\r
+simedtdlg.but.runsimulation = Lancer la simulation\r
+simedtdlg.but.resettodefault = Restaurer les paramètres par défaut\r
+simedtdlg.but.add = Ajouter\r
+simedtdlg.but.remove = Enlever\r
+simedtdlg.title.Editsim = Modifier la simulation\r
+simedtdlg.lbl.Simname = Nom de la simulation:\r
+simedtdlg.tab.Launchcond = Conditions de lancement\r
+simedtdlg.tab.Simopt = Options de simulation\r
+simedtdlg.tab.Plotdata = Tracer les données\r
+simedtdlg.tab.Exportdata = Exporter les données\r
+simedtdlg.lbl.Motorcfg = Configuration moteur:\r
+simedtdlg.lbl.ttip.Motorcfg = Choisir la configuration moteur à utiliser.\r
+simedtdlg.combo.ttip.motorconf = Choisir la configuration moteur à utiliser.\r
+simedtdlg.lbl.Wind = Vent\r
+simedtdlg.lbl.Averwindspeed = Vitesse moyenne du vent:\r
+simedtdlg.lbl.ttip.Averwindspeed = Vitesse moyenne du vent par rapport au sol.\r
+simedtdlg.lbl.Stddeviation = Dérive standard:\r
+simedtdlg.lbl.ttip.Stddeviation = <html>La dérive standard de la vitesse du vent.<br>La vitesse du vent est le double de l'écart-type de la moyenne dans 95% des cas.\r
+simedtdlg.lbl.Turbulenceintensity = Intensité de la turbulence:\r
+simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>L'intensité de la turbulence résulte de la division de la dérive par la vitesse moyenne de vent.<br>\r
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Les valeurs typiques vont de \r
+simedtdlg.lbl.ttip.Turbulenceintensity3 = à\r
+simedtdlg.border.Atmoscond = Conditions atmosphériques\r
+simedtdlg.checkbox.InterStdAtmosphere = Utiliser les paramètres de l'Atmosphère Standard\r
+simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>Sélectionner pour utiliser les paramètres de l'Atmosphère Standard.<br>Ce modèle à une température de\r
+simedtdlg.checkbox.ttip.InterStdAtmosphere2 = et une pression de \r
+simedtdlg.checkbox.ttip.InterStdAtmosphere3 = au niveau de la mer.\r
+simedtdlg.lbl.Temperature = Température:\r
+simedtdlg.lbl.ttip.Temperature = Température du site de lancement.\r
+simedtdlg.lbl.Pressure = Pression:\r
+simedtdlg.lbl.ttip.Pressure = Pression atmosphérique du site de lancement.\r
+simedtdlg.lbl.Launchsite = Site de lancement\r
+simedtdlg.lbl.Latitude = Latitude:\r
+simedtdlg.lbl.ttip.Latitude = <html>La latitude du site de lancement affecte l'attraction gravitationnelle de la Terre.<br>> Les valeurs positives sont dans l'hémisphère Nord, les valeurs négatives sur l'hémisphère Sud.\r
+simedtdlg.lbl.Altitude = Altitude:\r
+simedtdlg.lbl.ttip.Altitude = <html>Altitude du site de lancement par rapport au niveau de la mer.<br>Cela affecte la position de la fusée dans le modèle atmosphérique.\r
+simedtdlg.border.Launchrod = Rampe de lancement\r
+simedtdlg.lbl.Length = Longueur:\r
+simedtdlg.lbl.ttip.Length = Longueur de la rampe.\r
+simedtdlg.lbl.Angle = Angle:\r
+simedtdlg.lbl.ttip.Angle = Angle de la rampe de lancement par rapport à la verticale.\r
+simedtdlg.lbl.Direction = Direction:\r
+simedtdlg.lbl.ttip.Direction1 = <html>Direction de la rampe de lance par rapport au vent.<br>\r
+simedtdlg.lbl.ttip.Direction2 =  = Face au vent,\r
+simedtdlg.lbl.ttip.Direction3 = = vent arrière.\r
+simedtdlg.border.Simopt = Options de simulation\r
+simedtdlg.lbl.Calcmethod = Méthode de calcul:\r
+simedtdlg.lbl.ttip.Calcmethod = <html>La méthode Barrowman étendue calcule les forces aérodynamique selon <br>les équations de Barrowman étendues pour arranger plus de pièces.\r
+simedtdlg.lbl.ExtBarrowman = Barrowman étendu\r
+simedtdlg.lbl.Simmethod = Méthode de Simulation:\r
+simedtdlg.lbl.ttip.Simmethod1 = <html>Le simulateur de six degrés de liberté permet la liberté totale de fusée en vol.<br>\r
+simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4<sup>th</sup> order Runge-Kutta 4 numerical integration.\r
+simedtdlg.lbl.Timestep = Règlage du pas de temps:\r
+simedtdlg.lbl.ttip.Timestep1 = <html>Le temps entre les étapes de la simulation.<br>Avec un pas de temps plus petit la simulation est plus lente mais également plus précise.<br>\r
+simedtdlg.lbl.ttip.Timestep2 = The 4<sup>th</sup> order simulation method is quite accurate with a time step of\r
+simedtdlg.but.ttip.resettodefault = Réinitialiser le pas de temps à sa valeur par défaut (\r
+simedtdlg.border.Simlist = Auditeurs de simulation\r
+simedtdlg.txt.longA1 = <html><i>Les auditeurs de simulation</i> sont une fonction avancé qui permet à l'utilisateur d'écrire du code pour suivre et interagir avec la simulation.  \r
+simedtdlg.txt.longA2 = Pour plus de détails sur les auditeurs de simulation, reférez vous à la documentation technique d'OpenRocket.\r
+simedtdlg.lbl.Curlist = Auditeurs de simulation actuel:\r
+simedtdlg.lbl.Addsimlist = Ajouter un "auditeur de simulation"\r
+simedtdlg.lbl.Noflightdata = Aucune donnée de vol disponible.\r
+simedtdlg.lbl.runsimfirst = S'il vous plait faites tourner la simulation d'abord.\r
+simedtdlg.chart.Simflight = Vol simulé\r
+simedtdlg.dlg.Simres = Résultats de la simulation\r
+simedtdlg.IntensityDesc.None = Aucune\r
+simedtdlg.IntensityDesc.Verylow = Très basse\r
+simedtdlg.IntensityDesc.Low = Basse\r
+simedtdlg.IntensityDesc.Medium = Moyenne\r
+simedtdlg.IntensityDesc.High = Haute\r
+simedtdlg.IntensityDesc.Veryhigh = Très haute\r
+simedtdlg.IntensityDesc.Extreme = Extreme\r
+\r
+\r
+\r
+\r
+! Simulation Panel\r
+simpanel.but.newsimulation = Nouvelle simulation\r
+simpanel.but.editsimulation = Modifier la simulation\r
+simpanel.but.runsimulations = Lancer les simulations\r
+simpanel.but.deletesimulations = Effacer les simulations\r
+simpanel.but.plotexport = Tracer / exporter\r
+simpanel.but.ttip.newsimulation = Ajouter une nouvelle simulation\r
+simpanel.but.ttip.editsim = Modifier la simulation sélectionnée\r
+simpanel.but.ttip.runsimu = Recommencer la simulation sélectionnée\r
+simpanel.but.ttip.deletesim = Effacer les simulations sélectionnées\r
+simpanel.checkbox.donotask = Ne plus me demander\r
+simpanel.lbl.defpref = Vous pouvez changer le mode opératoire par défaut dans préferences.\r
+simpanel.dlg.lbl.DeleteSim1 = Effacer les simulations sélectionnées?\r
+simpanel.dlg.lbl.DeleteSim2 = <html><i>Cette opération n'est pas réversible.</i>\r
+simpanel.dlg.lbl.DeleteSim3 = Effacer les simulations\r
+simpanel.col.Name = Nom\r
+simpanel.col.Motors = Moteurs\r
+simpanel.col.Apogee = Apogée\r
+simpanel.col.Maxvelocity = Vélocité Max.\r
+simpanel.col.Maxacceleration = Accélération Max.\r
+simpanel.col.Timetoapogee = Temps pour atteindre l'apogée\r
+simpanel.col.Flighttime = Temps de vol\r
+simpanel.col.Groundhitvelocity = Vitesse à l'atterrissage\r
+\r
+! SimulationRunDialog\r
+SimuRunDlg.title.RunSim = Simulations en cour...\r
+SimuRunDlg.lbl.Running = En cour ...\r
+SimuRunDlg.lbl.Simutime = Temps de simulation:\r
+SimuRunDlg.lbl.Altitude = Altitude:\r
+SimuRunDlg.lbl.Velocity = Vélocité:\r
+SimuRunDlg.msg.Unabletosim = Simulation impossible:\r
+SimuRunDlg.msg.errorOccurred = Une erreur s'est produite durant la simulation:\r
+SimuRunDlg.msg.AnException1 = Une exception s'est produite lors de la simulation:\r
+SimuRunDlg.msg.AnException2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous.\r
+SimuRunDlg.msg.AssertionError1 = Une erreur de calcul s'est produite lors de la simulation.\r
+SimuRunDlg.msg.AssertionError2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous.\r
+SimuRunDlg.msg.unknownerror1 = Une erreur inconnue s'est produite lors de la simulation.\r
+SimuRunDlg.msg.unknownerror2 = Le programme peut être instable, vous devez enregistrer toutes vos créations et redémarrez OpenRocket maintenant!\r
+\r
+\r
+! SimulationExportPanel\r
+SimExpPan.desc = Fichiers dont les données sont séparées par une virgule (*.csv)\r
+SimExpPan.border.Vartoexport = Variables à exporter\r
+SimExpPan.but.Selectall = Tout sélectionner\r
+SimExpPan.but.Selectnone = Ne rien sélectionner\r
+SimExpPan.border.Fieldsep = Séparateur de champ\r
+SimExpPan.lbl.Fieldsepstr = Séparateur de champ:\r
+SimExpPan.lbl.longA1 = <html>La chaîne utilisée pour séparer les champs dans le fichier exporté.<br>\r
+SimExpPan.lbl.longA2 = Utiliser ',' pour un fichier (CSV).\r
+SimExpPan.checkbox.Includesimudesc = Inclure la description de la simulation\r
+SimExpPan.checkbox.ttip.Includesimudesc = Inclure un commentaire au début du fichier pour décrire la simulation.\r
+SimExpPan.border.Comments = Commentaires\r
+SimExpPan.checkbox.Includefielddesc = Inclure les descriptions des champs\r
+SimExpPan.checkbox.ttip.Includefielddesc = Inclure une ligne de commentaire avec la description des variables exportées.\r
+SimExpPan.checkbox.Incflightevents = Inclure les événements de vol\r
+SimExpPan.checkbox.ttip.Incflightevents = Inclure une ligne de commentaire pour chaque évènement de vol.\r
+SimExpPan.lbl.Commentchar = Symbole pour les commentaires:\r
+SimExpPan.lbl.ttip.Commentchar = Le symbole utilisé pour une ligne de commentaires.\r
+SimExpPan.but.Exporttofile = Exporter dans un fichier...\r
+SimExpPan.Fileexists.desc1 = Le fichier \"\r
+SimExpPan.Fileexists.desc2 = \" existe déjà.  Ecraser?\r
+SimExpPan.Fileexists.title = Le fichier existe\r
+SimExpPan.ExportingVar.desc1 = Exporter 1 variable sur un total de\r
+SimExpPan.ExportingVar.desc2 = Exportation\r
+SimExpPan.ExportingVar.desc3 = variable sur un total de\r
+SimExpPan.Col.Variable = Variable\r
+SimExpPan.Col.Unit = Unité\r
+\r
+! MotorPlot\r
+MotorPlot.title.Motorplot = Courbe du moteur\r
+MotorPlot.but.Select = Selection\r
+MotorPlot.Chart.Motorthrustcurve = Courbe de poussée moteur\r
+MotorPlot.Chart.Time = Temps / s\r
+MotorPlot.Chart.Thrust = Poussée / N\r
+MotorPlot.txt.Designation = Désignation:\r
+MotorPlot.txt.Manufacturer = Manufacturer:\r
+MotorPlot.txt.Type = Type:\r
+MotorPlot.txt.Delays = Retards:\r
+MotorPlot.txt.Comment = Commentaires:\n\r
+\r
+\r
+\r
+! Simulation plot panel\r
+simplotpanel.lbl.Presetplotconf = Prédéfinir les paramètres du tracé:\r
+simplotpanel.lbl.Xaxistype = Axe des X:\r
+simplotpanel.lbl.Unit = Unités:\r
+simplotpanel.lbl.Yaxistypes = Axe des Y:\r
+simplotpanel.lbl.Flightevents = Evénements du vol:\r
+simplotpanel.but.All = Tous\r
+simplotpanel.but.None = Aucun\r
+simplotpanel.but.NewYaxisplottype = Nouveau type de tracé de l'axe Y\r
+simplotpanel.but.Plotflight = Tracer le vol\r
+simplotpanel.lbl.Axis = Axes:\r
+simplotpanel.but.ttip.Removethisplot = Effacer le tracé\r
+simplotpanel.Desc = Les données seront tracées en fonction du temps même si le type d'Axe des abscisses n'est pas le temps.\r
+simplotpanel.OptionPane.lbl1 = Un maximum de 15 tracés est permis. \r
+simplotpanel.OptionPane.lbl2 = Impossible d'ajouter le tracé\r
+simplotpanel.AUTO_NAME = Auto\r
+simplotpanel.LEFT_NAME = Gauche\r
+simplotpanel.RIGHT_NAME = Droite\r
+simplotpanel.CUSTOM = Personnalisé\r
+\r
+\r
+\r
+! Component add buttons\r
+compaddbuttons.Bodycompandfinsets = Pièces du corps et ailerons\r
+compaddbuttons.Nosecone = Cône\r
+compaddbuttons.Bodytube = Tube du\ncorps\r
+compaddbuttons.Transition = Transition\r
+compaddbuttons.Trapezoidal = Trapézoïdale\r
+compaddbuttons.Elliptical = Elliptique\r
+compaddbuttons.Freeform = Forme libre\r
+compaddbuttons.Launchlug = Tube de\nguidage\r
+compaddbuttons.Innercomponent = Pièces internes\r
+compaddbuttons.Innertube = Tube interne\r
+compaddbuttons.Coupler = Coupleur\r
+compaddbuttons.Centeringring = Anneau de\ncentrage\r
+compaddbuttons.Bulkhead = Cloison\r
+compaddbuttons.Engineblock = Bague de\nrétention\nmoteur\r
+compaddbuttons.Massobjects = Pièces pleines\r
+compaddbuttons.Parachute = Parachute\r
+compaddbuttons.Streamer = Banderole\r
+compaddbuttons.Shockcord = Cordon\namortisseur\r
+compaddbuttons.Masscomponent = Poids\r
+compaddbuttons.Donotaskmeagain = Ne plus me poser la question\r
+compaddbuttons.Selectcomppos = Position de la pièce\r
+compaddbuttons.lbl.Youcanchange = Vous pouvez modifier le fonctionnement par défaut dans les préférences.\r
+compaddbuttons.lbl.insertcomp = Insérez la pièce après l'élément actuel ou en tant que dernier élément?\r
+compaddbuttons.askPosition.Inserthere = Ajouter ici\r
+compaddbuttons.askPosition.Addtotheend = Ajouter à la fin\r
+compaddbuttons.askPosition.Cancel = Annuler\r
+\r
+! Component Analysis Dialog\r
+componentanalysisdlg.Componentanalysis = Analyse pièce\r
+componentanalysisdlg.lbl.winddir = Direction du vent:\r
+componentanalysisdlg.TitledBorder.warnings = Avertissements:\r
+componentanalysisdlg.ToggleBut.worst = Pire\r
+componentanalysisdlg.lbl.angleofattack = Angle d'attaque:\r
+componentanalysisdlg.lbl.machnumber = Mach number:\r
+componentanalysisdlg.lbl.rollrate = Taux de roulis:\r
+componentanalysisdlg.lbl.activestages = Etages actifs:\r
+componentanalysisdlg.lbl.motorconf = Configuration moteur:\r
+componentanalysisdlg.TabStability.Col.Component = Pièce\r
+componentanalysisdlg.TabStability = Stabilité\r
+componentanalysisdlg.TabStability.ttip = Information de stabilité\r
+componentanalysisdlg.dragTableModel.Col.Component = Pièce\r
+componentanalysisdlg.dragTableModel.Col.Pressure = <html>Pression C<sub>D</sub>\r
+componentanalysisdlg.dragTableModel.Col.Base = <html>Base C<sub>D</sub>\r
+componentanalysisdlg.dragTableModel.Col.friction = <html>Friction C<sub>D</sub>\r
+componentanalysisdlg.dragTableModel.Col.total = <html>Total C<sub>D</sub>\r
+componentanalysisdlg.dragTabchar = Caractéristiques de traînée\r
+componentanalysisdlg.dragTabchar.ttip = Caractéristiques de traînée\r
+componentanalysisdlg.rollTableModel.Col.component = Pièce\r
+componentanalysisdlg.rollTableModel.Col.rollforc = Coefficient de forçage de roulis\r
+componentanalysisdlg.rollTableModel.Col.rolldamp = Coefficient amortisseur de roulis\r
+componentanalysisdlg.rollTableModel.Col.total = <html>Total C<sub>l</sub>\r
+componentanalysisdlg.rollTableModel = Dynamique du roulis\r
+componentanalysisdlg.rollTableModel.ttip = Dynamique du roulis\r
+componentanalysisdlg.println.closingmethod = Méthode de clôture appelée:\r
+componentanalysisdlg.println.settingnam = SETTING NAN VALUES\r
+componentanalysisdlg.lbl.reflenght = Longueur de référence: \r
+componentanalysisdlg.lbl.refarea = Aire de référence: \r
+!componentanalysisdlg.but.close =Fermer\r
+\r
+! Custom Material dialog\r
+custmatdlg.title.Custommaterial = Matériau personnalisé\r
+custmatdlg.lbl.Materialname = Nom du matériau: \r
+custmatdlg.lbl.Materialtype = Type de matériau:\r
+custmatdlg.lbl.Materialdensity = Densité du matériau:\r
+custmatdlg.checkbox.Addmaterial = Ajouter la pièce dans la base de données\r
+\r
+\r
+! Ring Component Config\r
+ringcompcfg.OuterRadius = Diamètre extérieur\r
+ringcompcfg.Automatic = Automatique\r
+ringcompcfg.InnerRadius = Diamètre intérieur\r
+ringcompcfg.Thickness = Epaisseur\r
+ringcompcfg.Length = Longueur\r
+ringcompcfg.Positionrelativeto = Position relative à:\r
+ringcompcfg.plus = plus\r
+!ringcompcfg.PositionValue = PositionValue\r
+ringcompcfg.Radialdistance = Rayon:\r
+ringcompcfg.Distancefrom = Distance de l'axe central de la fusée\r
+ringcompcfg.Radialdirection = Azimut\r
+ringcompcfg.radialdirectionfrom = Sens par rapport à l'axe central de la fusée\r
+ringcompcfg.but.Reset = Réinitialisation\r
+ringcompcfg.but.Resetcomponant = Réinitialiser la pièce à l'axe de la fusée\r
+ringcompcfg.EngineBlock.desc = <html>Un <b>bloc moteur </b> empêche le moteur de se déplacer vers l'avant dans le tube porte moteur.<br><br>Pour ajouter un moteur, créer un <b>tube</b> ou un <b>tube interne</b> et marquer le comme porte moteur dans l'onglet <em>Moteur</em>.\r
+ringcompcfg.note.desc = A noter: Un tube interne n'affectera pas l'aerodynamisme de la fusée meme si il est situé en dehors du tube.\r
+\r
+\r
+\r
+! Body Tube Config\r
+BodyTubecfg.lbl.Bodytubelength = Longueur du tube:\r
+BodyTubecfg.lbl.Outerdiameter = Diamètre externe:\r
+BodyTubecfg.lbl.Innerdiameter = Diamètre interne:\r
+BodyTubecfg.lbl.Wallthickness = Epaisseur des parois:\r
+BodyTubecfg.tab.General = Général\r
+BodyTubecfg.tab.Generalproperties = Propriétés générales\r
+BodyTubecfg.tab.Motor = Moteur\r
+BodyTubecfg.tab.Motormountconf = Configuration porte moteur\r
+BodyTubecfg.checkbox.Automatic = Automatique\r
+BodyTubecfg.checkbox.Filled = Aspérités bouchées\r
+\r
+! FinSetConfig\r
+FinSetConfig.tab.Fintabs = Pattes des ailerons\r
+FinSetConfig.tab.Through-the-wall = Ailerons traversant le fuselage\r
+FinSetConfig.but.Converttofreeform = Convertir en forme libre\r
+FinSetConfig.but.Converttofreeform.ttip = Convertir ce jeu d'ailerons en forme libre\r
+FinSetConfig.Convertfinset = Convertir le jeu d'ailerons\r
+FinSetConfig.but.Splitfins = Séparer les ailerons\r
+FinSetConfig.but.Splitfins.ttip = Diviser le jeu d'ailerons en aileron indépendant\r
+FinSetConfig.lbl.Through-the-wall  = Ailerons traversant le fuselage:\r
+FinSetConfig.lbl.Tablength = Longueur de la patte:\r
+FinSetConfig.ttip.Tablength = La longueur de la patte de l'aileron.\r
+FinSetConfig.lbl.Tabheight = Hauteur de la patte:\r
+FinSetConfig.ttip.Tabheight = La hauteur de l'envergure de la patte de l'aileron.\r
+FinSetConfig.lbl.Tabposition = Position de la patte:\r
+FinSetConfig.ttip.Tabposition = La position de la patte de l'ailerons.\r
+FinSetConfig.lbl.relativeto = relative à\r
+\r
+! MotorDatabaseLoadingDialog\r
+MotorDbLoadDlg.title = Chargement des moteurs\r
+MotorDbLoadDlg.Loadingmotors = Chargement des moteurs...\r
+\r
+! RocketConfig\r
+RocketCfg.lbl.Designname = Nom du projet:\r
+RocketCfg.lbl.Designer = Concepteur:\r
+RocketCfg.lbl.Comments = Commentaires:\r
+RocketCfg.lbl.Revisionhistory = Historique des modifications:\r
+RocketCfg.lbl.Material = Matériaux:\r
+\r
+! ShockCordConfig\r
+ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur\r
+\r
+! RocketComponentConfig\r
+RocketCompCfg.lbl.Componentname = Nom de la pièce:\r
+RocketCompCfg.ttip.Thecomponentname = Le nom de la pièce.\r
+RocketCompCfg.tab.Override = Forcer la valeur\r
+RocketCompCfg.tab.MassandCGoverride = Forçage de la Masse et du CG\r
+RocketCompCfg.tab.Figure = Forme\r
+RocketCompCfg.tab.Figstyleopt = Options de la forme\r
+RocketCompCfg.tab.Comment = Commentaires\r
+RocketCompCfg.tab.Specifyacomment = Commentaires concernant la pièce\r
+RocketCompCfg.lbl.Mass = Masse:\r
+RocketCompCfg.lbl.Componentmass = Masse de la pièce:\r
+RocketCompCfg.lbl.overriddento = (forcé à\r
+RocketCompCfg.lbl.overriddenby = (forcé par\r
+RocketCompCfg.lbl.Componentmaterial = Matériaux composant la pièce:\r
+RocketCompCfg.lbl.Componentfinish = Finition de la pièce:\r
+RocketCompCfg.lbl.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce.\r
+RocketCompCfg.combo.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce.\r
+RocketCompCfg.lbl.longA1 = <html>La finition de la pièce affecte l'aérodynamisme de la pièce.<br>\r
+RocketCompCfg.lbl.longA2 = La valeur indiquée est la hauteur moyenne de la rugosité de la surface.\r
+RocketCompCfg.but.Setforall = Appliquer à tous\r
+RocketCompCfg.but.ttip.Setforall = Régler la finition pour tous les composants de la fusée.\r
+RocketCompCfg.lbl.Overridemassorcenter = Forcer la masse ou le centre de gravité du \r
+RocketCompCfg.checkbox.Overridemass = Forcer la masse:\r
+RocketCompCfg.checkbox.Overridecenterofgrav = Forcer le centre de gravité:\r
+RocketCompCfg.checkbox.OverridemassandCG = Forcer la masse et le centre de gravité de tous les sous composants\r
+RocketCompCfg.lbl.longB1 = <html>Le forçage de la masse n'inclus pas le ou les moteurs.<br>\r
+RocketCompCfg.lbl.longB2 = Le centre de gravité est mesuré à partir de l'extrémité avant de la fusée\r
+RocketCompCfg.lbl.Commentsonthe = Commentaires à propos du \r
+RocketCompCfg.lbl.Figurestyle = Modèle de forme:\r
+RocketCompCfg.lbl.Componentcolor = Couleur de la pièce:\r
+RocketCompCfg.lbl.Choosecolor = Choisir la couleur\r
+RocketCompCfg.checkbox.Usedefaultcolor = Utiliser la couleur par défaut\r
+RocketCompCfg.lbl.Complinestyle = Style de lignes pour les pièces:\r
+RocketCompCfg.but.Saveasdefstyle = Sauver le modèle par défaut\r
+RocketCompCfg.lbl.Diameter = Diamètre:\r
+RocketCompCfg.lbl.Length = Longueur:\r
+RocketCompCfg.lbl.Thickness = Epaisseur:\r
+RocketCompCfg.checkbox.Endcapped = Arrière clos \r
+RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped.\r
+RocketCompCfg.title.Noseconeshoulder = accotement du cône\r
+RocketCompCfg.title.Aftshoulder = accotement arrière\r
+RocketCompCfg.border.Foreshoulder = Fore shoulder \r
+!RocketCompCfg.lbl.Length = Length:\r
+\r
+! BulkheadConfig\r
+BulkheadCfg.tab.Radius = Rayon:\r
+BulkheadCfg.tab.Thickness = Epaisseur:\r
+BulkheadCfg.tab.General = Général\r
+BulkheadCfg.tab.Generalproperties = Propriétés générales\r
+\r
+!CenteringRingConfig\r
+CenteringRingCfg.tab.Outerdiam = Diamètre externe:\r
+CenteringRingCfg.tab.Innerdiam = Diamètre interne:\r
+CenteringRingCfg.tab.Thickness = Epaisseur:\r
+CenteringRingCfg.tab.General = Général\r
+CenteringRingCfg.tab.Generalproperties = Propriétés Générales\r
+\r
+!ComponentConfigDialog\r
+ComponentCfgDlg.configuration = configuration\r
+ComponentCfgDlg.Modify = Modifier\r
+\r
+!EllipticalFinSetConfig\r
+EllipticalFinSetCfg.Nbroffins = Nombre d'ailerons:\r
+EllipticalFinSetCfg.Rotation = Rotation:\r
+EllipticalFinSetCfg.Fincant = Inclinaison de l'aileron:\r
+EllipticalFinSetCfg.Rootchord = Emplanture:\r
+EllipticalFinSetCfg.Height = Hauteur:\r
+EllipticalFinSetCfg.Positionrelativeto = Position relative à:\r
+EllipticalFinSetCfg.plus = plus\r
+EllipticalFinSetCfg.FincrossSection = Coupe de l'aileron:\r
+EllipticalFinSetCfg.Thickness = Epaisseur:\r
+EllipticalFinSetCfg.General = Général\r
+EllipticalFinSetCfg.Generalproperties = Propriétés Générales\r
+EllipticalFinSetCfg.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au corps de la fusée\r
+\r
+!FreeformFinSetConfig\r
+FreeformFinSetCfg.tab.General = Général\r
+FreeformFinSetCfg.tab.ttip.General = Propriétés générales\r
+FreeformFinSetCfg.tab.Shape = Forme\r
+FreeformFinSetCfg.tab.ttip.Finshape = Forme de l'aileron\r
+FreeformFinSetCfg.lbl.Numberoffins = Nombre d'ailerons:\r
+FreeformFinSetCfg.lbl.Finrotation = Rotation des ailerons:\r
+FreeformFinSetCfg.lbl.Fincant = Inclinaison de l'aileron:\r
+FreeformFinSetCfg.lbl.ttip.Fincant = angle d'inclinaison des ailerons par rapport au corps de la fusée.\r
+FreeformFinSetCfg.lbl.Posrelativeto = Position par rapport à:\r
+FreeformFinSetCfg.lbl.plus = plus\r
+FreeformFinSetCfg.lbl.FincrossSection = Coupe de l'aileron:\r
+FreeformFinSetCfg.lbl.Thickness = Epaisseur:\r
+\r
+!InnerTubeConfig\r
+InnerTubeCfg.tab.Motor = Moteur\r
+InnerTubeCfg.tab.ttip.Motor = Configuration du porte moteur\r
+InnerTubeCfg.tab.Cluster = Cluster\r
+InnerTubeCfg.tab.ttip.Cluster = Configuration du cluster\r
+InnerTubeCfg.tab.Radialpos = Position circulaire\r
+InnerTubeCfg.tab.ttip.Radialpos = Position circulaire\r
+InnerTubeCfg.lbl.Selectclustercfg = Choisir la configuration du cluster:\r
+InnerTubeCfg.lbl.TubeSep = Séparation du tube:\r
+InnerTubeCfg.lbl.ttip.TubeSep = La Séparation des tubes, 1.0 = chacun se touche\r
+InnerTubeCfg.lbl.Rotation = Rotation:\r
+InnerTubeCfg.lbl.ttip.Rotation = Angle de rotation du cluster\r
+InnerTubeCfg.lbl.Rotangle = Angle de rotation de la configuration du cluster\r
+InnerTubeCfg.but.Splitcluster = Séparer le cluster\r
+InnerTubeCfg.lbl.longA1 = <html>séparer le cluster en pièces distinctes.<br>\r
+InnerTubeCfg.lbl.longA2 = Cela duplique également tous les composants rattacher à ce tube interne.\r
+InnerTubeCfg.but.Resetsettings = Réinitialiser les réglages\r
+InnerTubeCfg.but.ttip.Resetsettings = Réinitialiser la séparation et la rotation aux valeurs par défauts\r
+\r
+! LaunchLugConfig\r
+LaunchLugCfg.lbl.Length = Longueur:\r
+LaunchLugCfg.lbl.Outerdiam = Diamètre externe:\r
+LaunchLugCfg.lbl.Innerdiam = Diamètre interne:\r
+LaunchLugCfg.lbl.Thickness = Epaisseur:\r
+LaunchLugCfg.lbl.Radialpos = Position circulaire:\r
+LaunchLugCfg.lbl.Posrelativeto = Position relative à:\r
+LaunchLugCfg.lbl.plus = plus\r
+LaunchLugCfg.tab.General = Général\r
+LaunchLugCfg.tab.Generalprop = Propriétés Générales\r
+\r
+! MassComponentConfig\r
+MassComponentCfg.lbl.Mass = Masse\r
+MassComponentCfg.lbl.Length = Longueur\r
+MassComponentCfg.lbl.Diameter = Diamètre\r
+MassComponentCfg.lbl.PosRelativeto = Position relative à:\r
+MassComponentCfg.lbl.plus = plus\r
+MassComponentCfg.tab.General = Général\r
+MassComponentCfg.tab.ttip.General = Propriétés Générales\r
+MassComponentCfg.tab.Radialpos = Position sur le périmètre\r
+MassComponentCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre\r
+MassComponentCfg.lbl.Radialdistance = Rayon:\r
+MassComponentCfg.lbl.Radialdirection = Azimut:\r
+MassComponentCfg.but.Reset = Réinitialiser\r
+\r
+! MotorConfig\r
+MotorCfg.checkbox.compmotormount = Cette pièce est un porte moteur\r
+MotorCfg.lbl.Motorcfg = Configuration du moteur:\r
+MotorCfg.but.New = Nouveau\r
+MotorCfg.lbl.Currentmotor = Moteur actuel:\r
+MotorCfg.lbl.Motoroverhang = Surplomb du moteur:\r
+MotorCfg.lbl.Ignitionat = Allumage à:\r
+MotorCfg.lbl.plus = plus\r
+MotorCfg.lbl.seconds = secondes\r
+MotorCfg.lbl.longA1 = Le projet actuel n'a qu'un étage.\r
+MotorCfg.lbl.longA2 = Des étages peuvent-être ajoutés en cliquant \"Nouvel étage\".\r
+MotorCfg.lbl.longB1 = Le projet actuel a\r
+MotorCfg.lbl.longB2 = étage(s).\r
+MotorCfg.but.Selectmotor = Choisir le moteur\r
+MotorCfg.but.Removemotor = Enlever le moteur\r
+MotorCfg.lbl.motorLabel = Aucun\r
+\r
+! NoseConeConfig\r
+NoseConeCfg.lbl.Noseconeshape = Forme du nez de la fusée:\r
+NoseConeCfg.lbl.Shapeparam = Paramètre de la forme:\r
+NoseConeCfg.lbl.Noseconelength = Longueur du nez de la fusée:\r
+NoseConeCfg.lbl.Basediam = Diamètre de la base:\r
+NoseConeCfg.checkbox.Automatic = Automatique\r
+NoseConeCfg.lbl.Wallthickness = Epaisseur de la paroi:\r
+NoseConeCfg.checkbox.Filled = Aspérités bouchées\r
+NoseConeCfg.tab.General = Général\r
+NoseConeCfg.tab.ttip.General = Propriétés générales\r
+NoseConeCfg.tab.Shoulder = Accotement\r
+NoseConeCfg.tab.ttip.Shoulder = Propriétés de l'accotement\r
+\r
+! ParachuteConfig\r
+ParachuteCfg.lbl.Canopy = Canopée:\r
+ParachuteCfg.lbl.Diameter = Diamètre:\r
+ParachuteCfg.lbl.Material = Matériau:\r
+ParachuteCfg.combo.MaterialModel = La nature du matériau affecte le poids de la pièce.\r
+ParachuteCfg.lbl.longA1 = <html>Coefficient de traînée C<sub>D</sub>:\r
+ParachuteCfg.lbl.longB1 = <html>Le coefficient de traînée dépend de la surface totale du parachute.<br>\r
+ParachuteCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente.  \r
+ParachuteCfg.lbl.longB3 = Une valeur standard pour le parachute est 0.8.\r
+ParachuteCfg.but.Reset = Réinitialiser\r
+ParachuteCfg.lbl.Shroudlines = Suspentes:\r
+ParachuteCfg.lbl.Numberoflines = Nombre de suspentes:\r
+ParachuteCfg.lbl.Linelength = Longueur des suspentes:\r
+ParachuteCfg.lbl.Material = Matériau:\r
+ParachuteCfg.lbl.Posrelativeto = Position relative à:\r
+ParachuteCfg.lbl.plus = plus\r
+ParachuteCfg.lbl.Packedlength = Longueur plié:\r
+ParachuteCfg.lbl.Packeddiam = Diamètre plié:\r
+ParachuteCfg.lbl.Deploysat = Déploiement à:\r
+ParachuteCfg.lbl.seconds = secondes\r
+ParachuteCfg.lbl.Altitude = Altitude:\r
+ParachuteCfg.tab.General = Général\r
+ParachuteCfg.tab.ttip.General = Propriétés générales\r
+ParachuteCfg.tab.Radialpos = Position sur le périmètre\r
+ParachuteCfg.tab.ttip.Radialpos = Configuration de la position radial\r
+ParachuteCfg.lbl.Radialdistance = Rayon:\r
+ParachuteCfg.lbl.Radialdirection = Azimut:\r
+ParachuteCfg.but.Reset = Réinitialiser\r
+\r
+! ShockCordConfig \r
+ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur\r
+ShockCordCfg.lbl.Shockcordmaterial = Matériau du cordon amortisseur:\r
+ShockCordCfg.lbl.Posrelativeto = Position relative à:\r
+ShockCordCfg.lbl.plus = plus\r
+ShockCordCfg.lbl.Packedlength = Longueur emballé:\r
+ShockCordCfg.lbl.Packeddiam = Diamètre emballé:\r
+ShockCordCfg.tab.General = Général\r
+ShockCordCfg.tab.ttip.General = Propriétés générales\r
+\r
+!SleeveConfig\r
+SleeveCfg.tab.Outerdiam = Diamètre externe:\r
+SleeveCfg.tab.Innerdiam = Diamètre interne:\r
+SleeveCfg.tab.Wallthickness = Epaisseur des parois:\r
+SleeveCfg.tab.Length = Longueur:\r
+SleeveCfg.tab.General = Général\r
+SleeveCfg.tab.Generalproperties = Propriétés générales\r
+\r
+! StreamerConfig\r
+StreamerCfg.lbl.Striplength = Longueur de la bande:\r
+StreamerCfg.lbl.Stripwidth = Largeur de la bande:\r
+StreamerCfg.lbl.Striparea = Surface de la bande:\r
+StreamerCfg.lbl.Aspectratio = Aspect ratio:\r
+StreamerCfg.lbl.Material = Matériau:\r
+StreamerCfg.combo.ttip.MaterialModel = La nature du matériau affecte le poids de la pièce.\r
+StreamerCfg.lbl.longA1 = <html>Coefficient de traînée C<sub>D</sub>:\r
+StreamerCfg.lbl.longB1 = <html>Le coefficient de trainée dépend de la surface totale de la banderole.<br>\r
+StreamerCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente.\r
+StreamerCfg.lbl.Automatic = Automatique\r
+StreamerCfg.lbl.longC1 = le coefficient de trainée dépend de la surface totale de la banderole.\r
+StreamerCfg.lbl.Posrelativeto = Position relative à:\r
+StreamerCfg.lbl.plus = plus\r
+StreamerCfg.lbl.Packedlength = Longueur emballé:\r
+StreamerCfg.lbl.Packeddiam = Diamètre emballé:\r
+StreamerCfg.lbl.Deploysat = Déploiement à:\r
+StreamerCfg.lbl.seconds = secondes\r
+StreamerCfg.lbl.Altitude = Altitude:\r
+StreamerCfg.tab.General = Général\r
+StreamerCfg.tab.ttip.General = Propriétés générales\r
+StreamerCfg.tab.Radialpos = Position sur le périmètre\r
+StreamerCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre\r
+StreamerCfg.lbl.Radialdistance = Rayon:\r
+StreamerCfg.lbl.Radialdirection = Azimut:\r
+StreamerCfg.but.Reset = Réinitialiser\r
+\r
+! ThicknessRingComponentConfig\r
+ThicknessRingCompCfg.tab.Outerdiam = Diamètre externe:\r
+ThicknessRingCompCfg.tab.Innerdiam = Diamètre interne:\r
+ThicknessRingCompCfg.tab.Wallthickness = Epaisseur de la paroi:\r
+ThicknessRingCompCfg.tab.Length = Longueur:\r
+ThicknessRingCompCfg.tab.General = Général\r
+ThicknessRingCompCfg.tab.Generalprop = Propriétés générales\r
+\r
+! TransitionConfig\r
+TransitionCfg.lbl.Transitionshape = Forme de la transition:\r
+TransitionCfg.checkbox.Clipped = Emboitée\r
+TransitionCfg.lbl.Shapeparam = Paramètre de la forme:\r
+TransitionCfg.lbl.Transitionlength = Longueur de la transition:\r
+TransitionCfg.lbl.Forediam = Diamètre avant:\r
+TransitionCfg.checkbox.Automatic = Automatique\r
+TransitionCfg.lbl.Aftdiam = Diamètre arrière:\r
+TransitionCfg.lbl.Wallthickness = Epaisseur de la paroi:\r
+TransitionCfg.checkbox.Filled = Aspérités bouchées\r
+TransitionCfg.tab.General = Général\r
+TransitionCfg.tab.Generalproperties = Propriétés Générales\r
+TransitionCfg.tab.Shoulder = Accotement\r
+TransitionCfg.tab.Shoulderproperties = Propriétés de l'accotement \r
+\r
+! TrapezoidFinSetConfig\r
+TrapezoidFinSetCfg.lbl.Nbroffins = Nombre d'ailerons:\r
+TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Le nombre d'ailerons composant le jeu.\r
+TrapezoidFinSetCfg.lbl.Finrotation = Rotation de l'aileron:\r
+TrapezoidFinSetCfg.lbl.ttip.Finrotation = Angle du premier aileron dans le jeu.\r
+TrapezoidFinSetCfg.lbl.Fincant = Inclinaison de l'aileron:\r
+TrapezoidFinSetCfg.lbl.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au tube du corps de la fusée.\r
+TrapezoidFinSetCfg.lbl.Rootchord = Longueur de la base de l'aileron:\r
+TrapezoidFinSetCfg.lbl.Tipchord = Longueur du bout de l'aileron:\r
+TrapezoidFinSetCfg.lbl.Height = Hauteur:\r
+TrapezoidFinSetCfg.lbl.Sweeplength = Longueur du bord d'attaque:\r
+TrapezoidFinSetCfg.lbl.Sweepangle = Angle du bord d'attaque:\r
+TrapezoidFinSetCfg.lbl.FincrossSection = Coupe de l'aileron:\r
+TrapezoidFinSetCfg.lbl.Thickness = Epaisseur:\r
+TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative à:\r
+TrapezoidFinSetCfg.lbl.plus = plus\r
+TrapezoidFinSetCfg.tab.General = Général\r
+TrapezoidFinSetCfg.tab.Generalproperties = Propriétés générales\r
+\r
+!MotorConfigurationModel\r
+MotorCfgModel.Editcfg = Modifier les configurations\r
+\r
+! StorageOptionChooser\r
+StorageOptChooser.lbl.Simdatatostore = Données simulées à stocker:\r
+StorageOptChooser.rdbut.Allsimdata = Toutes les données des simulations\r
+StorageOptChooser.lbl.longA1 = <html>Enregistrer toutes les données des simulations.<br>\r
+StorageOptChooser.lbl.longA2 = Cela peut entraîner de très gros fichiers!\r
+StorageOptChooser.rdbut.Every = Every\r
+StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>\r
+StorageOptChooser.lbl.longB2 = Des valeurs plus grandes produisent des fichiers plus petits.\r
+StorageOptChooser.lbl.seconds = secondes\r
+StorageOptChooser.rdbut.Onlyprimfig = Seuls les chiffres primaires\r
+StorageOptChooser.lbl.longC1 = <html>Stocker seulement les valeurs montrées dans le tableau récapitulatif.<br>\r
+StorageOptChooser.lbl.longC2 = Cela produira des fichiers plus petit.\r
+StorageOptChooser.checkbox.Compfile = Compresse le fichier\r
+StorageOptChooser.lbl.UsingComp = Utiliser la compression réduit significativement la taille du fichier.\r
+StorageOptChooser.lbl.longD1 = Une estimation sur la taille qu'aurait le fichier résultant avec les options actuelles.\r
+StorageOptChooser.ttip.Saveopt = Options de sauvegarde\r
+StorageOptChooser.lbl.Estfilesize = Taille estimée du fichier:\r
+StorageOptChooser.lbl.Saveopt = Options de sauvegarde\r
+\r
+! ThrustCurveMotorSelectionPanel\r
+TCMotorSelPan.lbl.Selrocketmotor = Choisir le moteur fusée:\r
+TCMotorSelPan.checkbox.hideSimilar = Cacher les courbes de poussées similaires\r
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Montrer tous les moteurs\r
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Montrer les moteurs avec un diametre inferieur au porte moteur\r
+TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Montrer les moteurs avec un diametre egale au porte moteur\r
+TCMotorSelPan.lbl.Motormountdia = Diametre du tube porte moteur:\r
+TCMotorSelPan.lbl.Search = Rechercher:\r
+TCMotorSelPan.lbl.Selectthrustcurve = Choisir la courbe de poussée:\r
+TCMotorSelPan.lbl.Ejectionchargedelay = Retard de la charge d'ejection:\r
+TCMotorSelPan.equalsIgnoreCase.None = Aucun\r
+TCMotorSelPan.lbl.NumberofsecondsorNone = (Nombre de secondes ou \"Aucun\")\r
+TCMotorSelPan.lbl.Totalimpulse = Impulsion totale:\r
+TCMotorSelPan.lbl.Avgthrust = Poussée moyenne:\r
+TCMotorSelPan.lbl.Maxthrust = Poussée Max.:\r
+TCMotorSelPan.lbl.Burntime = Temps de combustion:\r
+TCMotorSelPan.lbl.Launchmass = Masse au lancement:\r
+TCMotorSelPan.lbl.Emptymass = Masse à vide:\r
+TCMotorSelPan.lbl.Datapoints = Points de données:\r
+TCMotorSelPan.lbl.Digest = Assimilation:\r
+TCMotorSelPan.title.Thrustcurve = Courbe de poussée:\r
+TCMotorSelPan.title.Thrust = Poussée\r
+TCMotorSelPan.delayBox.None = Aucun\r
+\r
+! PlotDialog\r
+PlotDialog.title.Flightdataplot = Tracé du vol\r
+PlotDialog.Chart.Simulatedflight = Simulation du vol\r
+PlotDialog.CheckBox.Showdatapoints = Afficher un point pour chaque valeur\r
+PlotDialog.lbl.Chart = Cliquer+déplacer en bas +droite pour agrandir, haut+gauche pour rétrécir\r
+\r
+! "main" prefix is used for the main application dialog\r
+\r
+main.menu.file = Fichier\r
+main.menu.file.new = Nouveau\r
+main.menu.file.open = Ouvrir...\r
+main.menu.file.openExample = Ouvrir exemple...\r
+main.menu.file.save = Sauvegarder\r
+main.menu.file.saveAs = Sauvegarder sous...\r
+main.menu.file.print = Imprimer...\r
+main.menu.file.close = Fermer\r
+main.menu.file.quit = Quitter\r
+\r
+main.menu.edit = Editer\r
+main.menu.edit.undo = Annuler modification\r
+main.menu.edit.redo = Refaire modification\r
+main.menu.edit.cut = Couper\r
+main.menu.edit.copy = Copier\r
+main.menu.edit.paste = Coller\r
+main.menu.edit.delete = Effacer\r
+main.menu.edit.preferences = Préférences\r
+\r
+main.menu.analyze = Analyse\r
+main.menu.analyze.componentAnalysis = Analyse des Pièces\r
+\r
+main.menu.help = Aide\r
+main.menu.help.license = Licence\r
+main.menu.help.bugReport = Rapport d'erreurs\r
+main.menu.help.debugLog = Debug log\r
+main.menu.help.about = A propos\r
+\r
+main.menu.debug = Debug\r
+main.menu.debug.whatisthismenu = Quel est ce menu?\r
+main.menu.debug.createtestrocket = Créer une fusée test\r
+\r
+! database\r
+! Translate here all material database\r
+!\r
+\r
+! Material database\r
+! BULK_MATERIAL\r
+Databases.materials.Acrylic = Acrylique\r
+Databases.materials.Balsa = Balsa\r
+Databases.materials.Birch = Bouleau\r
+Databases.materials.Cardboard = Carton\r
+Databases.materials.Carbonfiber = Fibre de carbone\r
+Databases.materials.Cork = Liège\r
+Databases.materials.DepronXPS = Depron (XPS)\r
+Databases.materials.Fiberglass = Fibre de verre\r
+Databases.materials.Kraftphenolic = Kraft phénolique\r
+Databases.materials.Maple = Érable\r
+Databases.materials.Paperoffice = Papier (bureau)\r
+Databases.materials.Pine = Pin\r
+Databases.materials.Plywoodbirch = Contre-plaqué (bouleau)\r
+Databases.materials.PolycarbonateLexan = Polycarbonate (Lexan)\r
+Databases.materials.Polystyrene = Polystyrène\r
+Databases.materials.PVC = PVC\r
+Databases.materials.Spruce = Sapin\r
+Databases.materials.StyrofoamgenericEPS = Polystyrène (générique EPS)\r
+Databases.materials.StyrofoamBluefoamXPS = \"Mousse Bleue\" de polystyrène (XPS)\r
+Databases.materials.Quantumtubing = Quantum tubing\r
+!SURFACE_MATERIAL\r
+Databases.materials.Ripstopnylon = Ripstop nylon\r
+Databases.materials.Mylar = Mylar\r
+Databases.materials.Polyethylenethin = Polyéthylène (fin)\r
+Databases.materials.Polyethyleneheavy = Polyéthylène (lourd)\r
+Databases.materials.Silk = Soie\r
+Databases.materials.Paperoffice1 = Papier (bureau)\r
+Databases.materials.Cellophane = Cellophane\r
+Databases.materials.Crepepaper = Cr\u00eape paper\r
+! LINE_MATERIAL\r
+Databases.materials.Threadheavy-duty = Fil(résistant)\r
+Databases.materials.Elasticcordround2mm = Corde Elastique (ronde 2mm, 1/16 in)\r
+Databases.materials.Elasticcordflat6mm = Corde Elastique (plate 6mm, 1/4 in)\r
+Databases.materials.Elasticcordflat12mm = Corde Elastique (plate 12mm, 1/2 in)\r
+Databases.materials.Elasticcordflat19mm = Corde Elastique (plate 19mm, 3/4 in)\r
+Databases.materials.Elasticcordflat25mm = Corde Elastique (plate 25mm, 1 in)\r
+Databases.materials.Braidednylon2mm = Nylon tressé (2 mm, 1/16 in)\r
+Databases.materials.Braidednylon3mm = Nylon tressé (3 mm, 1/8 in)\r
+Databases.materials.Tubularnylon11mm = Nylon tubulaire (11 mm, 7/16 in)\r
+Databases.materials.Tubularnylon14mm = Nylon tubulaire (14 mm, 9/16 in)\r
+Databases.materials.Tubularnylon25mm = Nylon tubulaire (25 mm, 1 in)\r
+\r
+! ExternalComponent\r
+ExternalComponent.Rough = Rugeuse\r
+ExternalComponent.Unfinished = Non peinte\r
+ExternalComponent.Regularpaint = Peinture classique\r
+ExternalComponent.Smoothpaint = Fine couche\r
+ExternalComponent.Polished = Polie\r
+\r
+\r
+! LineStyle\r
+LineStyle.Solid = Ligne pleine\r
+LineStyle.Dashed = Tiret\r
+LineStyle.Dotted = Ligne pointillée\r
+LineStyle.Dash-dotted = Ligne Pointillée et Tiret\r
+LineStyle.Defaultstyle = Style par défaut\r
+\r
+! Shape\r
+Shape.Conical = Conique\r
+Shape.Conical.desc1 = Un cône conique a un profil triangulaire.\r
+Shape.Conical.desc2 = Une transition conique a des côtés droits.\r
+Shape.Ogive = Ogive\r
+Shape.Ogive.desc1 = Un cône ogival a un profil qui est un segment de cercle. La valeur du paramètre de forme 1 produit une <b>ogive tangente</b>, qui a une transition en douceur vers le tube de la fusée, des valeurs inférieures à 1 produisent des <b>ogives sécantes</b>.\r
+Shape.Ogive.desc2 = Une transition en ogive a un profil qui est un segment de cercle.          La valeur du paramètre de forme 1 produit une <b>ogive tangente</b>, qui a une transition en douceur vers le tube de la fusée à l'extrémité arrière, des valeurs inférieures à 1 produisent des <b>ogives sécantes</b>.\r
+Shape.Ellipsoid = Ellipsoïde\r
+Shape.Ellipsoid.desc1 = Un cône ellipsoïdal a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2&times;<i>la longueur</i> et <i>diamètre</i>.\r
+Shape.Ellipsoid.desc2 = Une transition ellipsoïdale a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2&times;<i>longueur</i> et <i>diamètre</i>.  Si la transition n'est pas coupée alors le profil est étendu au centre par le rayon correspondant.          \r
+Shape.Powerseries = Série Haute puissance\r
+Shape.Powerseries.descA1 = Un cône de puissance a un profil de <i>Rayon</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longueur</i>)<sup><i>k</i></sup> ou <i>k</i> est le paramètre de la forme.  Pour <i>k</i>=0,5 c'est une <b>\r
+Shape.Powerseries.descA2 = -puissance</b> ou une ogive <b>parabolique</b>, pour <i>k</i>=0,75 une <b>\r
+Shape.Powerseries.descA3 = -puissance</b>, et pour <i>k</i>=1 un cône <b>conique</b>.\r
+Shape.Powerseries.descB1 = Une transition de la série haute puissance a un profile de <i>Rayon</i>&nbsp;&times;&nbsp;(<i>x</i>&nbsp;/&nbsp;<i>Longueur</i>)<sup><i>k</i></sup> ou <i>k</i> est le paramètre de la forme.  Pour <i>k</i>=0,5 la transition est <b>\r
+Shape.Powerseries.descB2 = -puissance</b> ou <b>parabolique</b>, pour <i>k</i>=0,75 une <b>\r
+Shape.Powerseries.descB3 = -puissance</b>, et pour <i>k</i>=1 <b>conique</b>.\r
+Shape.Parabolicseries = Série parabolique\r
+Shape.Parabolicseries.desc1 = Un cône parabolique a un profil d'une parabole.  Le paramètre de forme définit le segment de la parabole à utiliser.  Le paramètre 1 produit une <b>parabole pleine</b> qui est tangent au tube de la fusée, 0,75 produit un <b>3/4 de parabole</b>, 0,5 produit une <b>1/2 parabole</b> et 0 produit un cône <b>conique</b>.\r
+Shape.Parabolicseries.desc2 = Une transistion de type parabolique a un profile en forme de parabole.  Le paramètre de forme définit le segment de la parabole à utiliser.  Le paramètre 1,0 produit une <b>parabole pleine</b> qui est tangent au tube de la fusée à l'extrémité arrière, 0,75 produit une <b>3/4 parabole</b>, 0,5 produit une <b>1/2 parabole</b> et 0 produit une transition <b>conique</b>.\r
+Shape.Haackseries = Série Haack\r
+Shape.Haackseries.desc1 = Les cônes du type Haack sont conçus pour minimiser la trainée.  Le paramètre de forme égale à 0 produit une <b>LD-Haack</b> ou un cône <b>Von Karman</b>, ce qui a pour effet de minimiser la trainée pour une longueur et un diamètre fixe, tandis qu'une valeur de 0,333 produit un cône <b>LV-Haack</b>, ce qui minimise la trainée pour une longueur et un volume fixe.\r
+Shape.Haackseries.desc2 = Les <i>cônes</i> du type Haack sont conçus pour minimiser la trainée.  Ces formes de transition sont leurs équivalents, mais ne produisent pas nécessairement des valeurs optimales.  Le paramètre 0 produit une forme <b>LD-Haack</b> ou <b>Von Karman</b>, tandis qu'une valeur de 0,333 produit une forme <b>LV-Haack</b>.                \r
+\r
+\r
+! RocketComponent\r
+RocketComponent.Position.TOP = Haut de la pièce parent\r
+RocketComponent.Position.MIDDLE = Milieu de la pièce parent(porteuse)\r
+RocketComponent.Position.BOTTOM = Bas de la pièce parent\r
+RocketComponent.Position.AFTER = Après la pièce parent\r
+RocketComponent.Position.ABSOLUTE = Pointe de l'ogive\r
+\r
+\r
+! LaunchLug\r
+LaunchLug.Launchlug = Tube de guidage\r
+! NoseCone\r
+NoseCone.NoseCone = Ogive\r
+! Transition\r
+Transition.Transition = Transition\r
+!Stage\r
+Stage.Stage = Etage\r
+! BodyTube\r
+BodyTube.BodyTube = Tube du corps\r
+! TubeCoupler\r
+TubeCoupler.TubeCoupler = Coupleur de tube\r
+!InnerTube\r
+InnerTube.InnerTube = Tube interne\r
+! TrapezoidFinSet\r
+TrapezoidFinSet.TrapezoidFinSet = Ailerons Trapezoidaux\r
+! FreeformFinSet\r
+FreeformFinSet.FreeformFinSet = Ailerons personnalisés\r
+!MassComponent\r
+MassComponent.MassComponent = Poids\r
+! Parachute\r
+Parachute.Parachute = Parachute\r
+! ShockCord\r
+ShockCord.ShockCord = Cordon amortisseur\r
+! Bulkhead\r
+Bulkhead.Bulkhead = Cloison\r
+\r
+!Rocket\r
+Rocket.motorCount.Nomotor = [aucun moteurs]\r
+Rocket.compname.Rocket = Fusée\r
+\r
+!MotorMount\r
+MotorMount.IgnitionEvent.AUTOMATIC = Automatique (lancement ou charge d'éjection)\r
+MotorMount.IgnitionEvent.LAUNCH = Lancement\r
+MotorMount.IgnitionEvent.EJECTION_CHARGE = Premiere charge d'ejection ou étage precedent\r
+MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage\r
+MotorMount.IgnitionEvent.NEVER = Jamais\r
+\r
+!ComponentIcons \r
+ComponentIcons.Nosecone = Ogive\r
+ComponentIcons.Bodytube = Tube\r
+ComponentIcons.Transition = Transition\r
+ComponentIcons.Trapezoidalfinset = Jeu d'ailerons de forme trapézoïdale\r
+ComponentIcons.Ellipticalfinset = Jeu d'ailerons de forme elliptique \r
+ComponentIcons.Freeformfinset = Jeu d'ailerons de forme personnalisé\r
+ComponentIcons.Launchlug = Tube de guidage\r
+ComponentIcons.Innertube = Tube interne\r
+ComponentIcons.Tubecoupler = Coupleur de tube\r
+ComponentIcons.Centeringring = Anneau de centrage\r
+ComponentIcons.Bulkhead = Cloison\r
+ComponentIcons.Engineblock = Bague de retension moteur\r
+ComponentIcons.Parachute = Parachute\r
+ComponentIcons.Streamer = Banderolle\r
+ComponentIcons.Shockcord = Cordon amortisseur\r
+ComponentIcons.Masscomponent = Mass component\r
+ComponentIcons.disabled = (désactivé)\r
+\r
+! StageAction\r
+StageAction.Stage = Etage\r
+\r
+! RecoveryDevice\r
+RecoveryDevice.DeployEvent.LAUNCH = Lancement(plus NN secondes)\r
+RecoveryDevice.DeployEvent.EJECTION = Première charge d'éjection de cet étage\r
+RecoveryDevice.DeployEvent.APOGEE = Apogée\r
+RecoveryDevice.DeployEvent.ALTITUDE = Altitude spécifiée durant la descente\r
+RecoveryDevice.DeployEvent.NEVER = Jamais\r
+\r
+! FlightEvent\r
+FlightEvent.Type.LAUNCH = Lancement\r
+FlightEvent.Type.IGNITION = Allumage du moteur\r
+FlightEvent.Type.LIFTOFF = Décollage\r
+FlightEvent.Type.LAUNCHROD = Dégagement de rampe de lancement\r
+FlightEvent.Type.BURNOUT = Fin de combustion du moteur\r
+FlightEvent.Type.EJECTION_CHARGE = Charge d'éjection\r
+FlightEvent.Type.STAGE_SEPARATION = Séparation d'étage\r
+FlightEvent.Type.APOGEE = Apogée\r
+FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Déploiement du dispositif de récupération\r
+FlightEvent.Type.GROUND_HIT = Atterrissage\r
+FlightEvent.Type.SIMULATION_END = Fin de la simulation\r
+FlightEvent.Type.ALTITUDE = Changement d'altitude\r
+\r
+! ThrustCurveMotorColumns\r
+TCurveMotorCol.MANUFACTURER = Fabricant\r
+TCurveMotorCol.DESIGNATION = Désignation\r
+TCurveMotorCol.TYPE = Type\r
+TCurveMotorCol.DIAMETER = Diamètre\r
+TCurveMotorCol.LENGTH = Longueur\r
+\r
+! RocketInfo\r
+RocketInfo.lengthLine.Length = Longueur\r
+RocketInfo.lengthLine.maxdiameter = , diamètre max.\r
+RocketInfo.massText1 = Masse avec moteurs \r
+RocketInfo.massText2 = Masse sans moteurs\r
+RocketInfo.at = à M=\r
+RocketInfo.cgText = CG:\r
+RocketInfo.cpText = CP:\r
+RocketInfo.stabText = Stabilité:\r
+RocketInfo.Warning = Avertissement:\r
+RocketInfo.Calculating = Calcul en cours...\r
+RocketInfo.Apogee = Apogée:\r
+RocketInfo.Maxvelocity = Vitesse Max.:\r
+RocketInfo.Maxacceleration = Accélération Max.:\r
+RocketInfo.apogeeValue = N/A\r
+RocketInfo.Mach = (Mach\r
+RocketInfo.velocityValue = N/A\r
+RocketInfo.accelerationValue = N/A\r
+\r
+! FinSet\r
+FinSet.CrossSection.SQUARE = Carré\r
+FinSet.CrossSection.ROUNDED = Arondie\r
+FinSet.CrossSection.AIRFOIL = Airfoil\r
+FinSet.TabRelativePosition.FRONT = Root chord leading edge\r
+FinSet.TabRelativePosition.CENTER = Root chord midpoint\r
+FinSet.TabRelativePosition.END = Root chord trailing edge\r
+\r
+! FlightDataType\r
+FlightDataType.TYPE_TIME = Temps\r
+FlightDataType.TYPE_ALTITUDE = Altitude\r
+FlightDataType.TYPE_VELOCITY_Z = Vitesse verticale\r
+FlightDataType.TYPE_ACCELERATION_Z = Accélération verticale\r
+FlightDataType.TYPE_VELOCITY_TOTAL = Vitesse totale\r
+FlightDataType.TYPE_ACCELERATION_TOTAL = Accélération totale\r
+FlightDataType.TYPE_POSITION_X = Position contre le vent\r
+FlightDataType.TYPE_POSITION_Y = Position parallèle au vent\r
+FlightDataType.TYPE_POSITION_XY = Distance latérale\r
+FlightDataType.TYPE_POSITION_DIRECTION = Direction latérale\r
+FlightDataType.TYPE_VELOCITY_XY = Vitesse latérale\r
+FlightDataType.TYPE_ACCELERATION_XY = Accélération latérale\r
+FlightDataType.TYPE_AOA = Angle d'attaque\r
+FlightDataType.TYPE_ROLL_RATE = Taux de roulis\r
+FlightDataType.TYPE_PITCH_RATE = Taux de tangage\r
+FlightDataType.TYPE_YAW_RATE = Taux d'embardée\r
+FlightDataType.TYPE_MASS = Masse\r
+FlightDataType.TYPE_LONGITUDINAL_INERTIA = Moment d'inertie longitudinale\r
+FlightDataType.TYPE_ROTATIONAL_INERTIA = Moment d'inertie rotatif\r
+FlightDataType.TYPE_CP_LOCATION = Emplacement du CP\r
+FlightDataType.TYPE_CG_LOCATION = Emplacement du CG\r
+FlightDataType.TYPE_STABILITY = Calibres marge de stabilité\r
+FlightDataType.TYPE_MACH_NUMBER = Mach number\r
+FlightDataType.TYPE_REYNOLDS_NUMBER = Nombre de Reynolds\r
+FlightDataType.TYPE_THRUST_FORCE = Poussée\r
+FlightDataType.TYPE_DRAG_FORCE = Force de traînée\r
+FlightDataType.TYPE_DRAG_COEFF = Coefficient de traînée\r
+FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coefficient de trainée axiale\r
+FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coefficient de traînée de friction\r
+FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Coefficient de traînée de pression\r
+FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient\r
+FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient\r
+FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient\r
+FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient\r
+FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient\r
+FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient\r
+FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient\r
+FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient\r
+FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient\r
+FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient\r
+FlightDataType.TYPE_REFERENCE_LENGTH = Longueur de référence\r
+FlightDataType.TYPE_REFERENCE_AREA = Surface de référence\r
+FlightDataType.TYPE_ORIENTATION_THETA = Orientation verticale (zénith)\r
+FlightDataType.TYPE_ORIENTATION_PHI = Orientation latérale (azimut)\r
+FlightDataType.TYPE_WIND_VELOCITY = Vitesse de vent\r
+FlightDataType.TYPE_AIR_TEMPERATURE = Température de l'air\r
+FlightDataType.TYPE_AIR_PRESSURE = Pression atmosphérique\r
+FlightDataType.TYPE_SPEED_OF_SOUND = Vitesse du son\r
+FlightDataType.TYPE_TIME_STEP = Pas de simulation du temps\r
+FlightDataType.TYPE_COMPUTATION_TIME = Temps de calcul\r
+\r
+! PlotConfiguration\r
+PlotConfiguration.Verticalmotion = Mouvement vertical par rapport au temps\r
+PlotConfiguration.Totalmotion = Mouvement total par rapport au temps\r
+PlotConfiguration.Flightside = Flight side profile\r
+PlotConfiguration.Stability = Stabilité par rapport temps\r
+PlotConfiguration.Dragcoef = Coefficients de traînée par rapport au Mach number\r
+PlotConfiguration.Rollcharacteristics = Caractéristiques de roulis\r
+PlotConfiguration.Angleofattack = Angle d'attaque et orientation par rapport au temps\r
+PlotConfiguration.Simulationtime = Pas du temps et temps de calcul\r
+\r
+! Warning\r
+Warning.LargeAOA.str1 = Grand angle d'attaque rencontré.\r
+Warning.LargeAOA.str2 = Grand angle d'attaque rencontré (\r
+Warning.DISCONTINUITY = Discontinuité dans le diametre du corps de la fusée.\r
+Warning.THICK_FIN = Les ailerons fin ne seront peut etre pas modélisés correctement.\r
+Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate.\r
+Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation\r
+Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Le dispositif de récupération s'est ouvert alors que la combustion du moteur n'était pas finie.\r
+Warning.FILE_INVALID_PARAMETER = Parametre invalide rencontré, ignorer.\r
index 7981d37a6f419cee6176d6e4d2b0630a76599c91..e44541c0a6fdf9fdede3fdb62f6c240a42322f6b 100644 (file)
@@ -1,10 +1,13 @@
 package net.sf.openrocket.aerodynamics;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public abstract class Warning {
        
-       
+       private static final Translator trans = Application.getTranslator();
+
        /**
         * Return a Warning with the specific text.
         */
@@ -69,8 +72,10 @@ public abstract class Warning {
                @Override
                public String toString() {
                        if (Double.isNaN(aoa))
-                               return "Large angle of attack encountered.";
-                       return ("Large angle of attack encountered (" +
+                               //// Large angle of attack encountered.
+                               return trans.get("Warning.LargeAOA.str1");
+                       //// Large angle of attack encountered (
+                       return (trans.get("Warning.LargeAOA.str2") +
                                        UnitGroup.UNITS_ANGLE.getDefaultUnit().toString(aoa) + ").");
                }
 
@@ -129,26 +134,31 @@ public abstract class Warning {
        
        
        /** A <code>Warning</code> that the body diameter is discontinuous. */
+////Discontinuity in rocket body diameter.
        public static final Warning DISCONTINUITY = 
-               new Other("Discontinuity in rocket body diameter.");
+               new Other(trans.get("Warning.DISCONTINUITY"));
        
        /** A <code>Warning</code> that the fins are thick compared to the rocket body. */
+////Thick fins may not be modeled accurately.
        public static final Warning THICK_FIN =
-               new Other("Thick fins may not be modeled accurately.");
+               new Other(trans.get("Warning.THICK_FIN"));
        
        /** A <code>Warning</code> that the fins have jagged edges. */
+////Jagged-edged fin predictions may be inaccurate.
        public static final Warning JAGGED_EDGED_FIN =
-               new Other("Jagged-edged fin predictions may be inaccurate.");
+               new Other(trans.get("Warning.JAGGED_EDGED_FIN"));
        
        /** A <code>Warning</code> that simulation listeners have affected the simulation */
+////Listeners modified the flight simulation
        public static final Warning LISTENERS_AFFECTED =
-               new Other("Listeners modified the flight simulation");
+               new Other(trans.get("Warning.LISTENERS_AFFECTED"));
        
+////Recovery device opened while motor still burning.
        public static final Warning RECOVERY_DEPLOYMENT_WHILE_BURNING =
-               new Other("Recovery device opened while motor still burning.");
-       
+               new Other(trans.get("Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING"));
        
        
+       //// Invalid parameter encountered, ignoring.
        public static final Warning FILE_INVALID_PARAMETER =
-               new Other("Invalid parameter encountered, ignoring.");
+               new Other(trans.get("Warning.FILE_INVALID_PARAMETER"));
 }
index fe6abcbf2f29606dfa762f5e4c580cea44aa7f57..fae1eb47eeb8090748a8f410adf2062d942dce0b 100644 (file)
@@ -1,5 +1,6 @@
 package net.sf.openrocket.database;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.material.MaterialStorage;
@@ -15,6 +16,7 @@ import net.sf.openrocket.util.Prefs;
  */
 public class Databases {
        private static final LogHelper log = Application.getLogger();
+       private static final Translator trans = Application.getTranslator();
        
        /* Static implementations of specific databases: */
 
@@ -36,48 +38,59 @@ public class Databases {
        static {
                
                // Add default materials
-               BULK_MATERIAL.add(new Material.Bulk("Acrylic", 1190, false));
-               BULK_MATERIAL.add(new Material.Bulk("Balsa", 170, false));
-               BULK_MATERIAL.add(new Material.Bulk("Birch", 670, false));
-               BULK_MATERIAL.add(new Material.Bulk("Cardboard", 680, false));
-               BULK_MATERIAL.add(new Material.Bulk("Carbon fiber", 1780, false));
-               BULK_MATERIAL.add(new Material.Bulk("Cork", 240, false));
-               BULK_MATERIAL.add(new Material.Bulk("Depron (XPS)", 40, false));
-               BULK_MATERIAL.add(new Material.Bulk("Fiberglass", 1850, false));
-               BULK_MATERIAL.add(new Material.Bulk("Kraft phenolic", 950, false));
-               BULK_MATERIAL.add(new Material.Bulk("Maple", 755, false));
-               BULK_MATERIAL.add(new Material.Bulk("Paper (office)", 820, false));
-               BULK_MATERIAL.add(new Material.Bulk("Pine", 530, false));
-               BULK_MATERIAL.add(new Material.Bulk("Plywood (birch)", 630, false));
-               BULK_MATERIAL.add(new Material.Bulk("Polycarbonate (Lexan)", 1200, false));
-               BULK_MATERIAL.add(new Material.Bulk("Polystyrene", 1050, false));
-               BULK_MATERIAL.add(new Material.Bulk("PVC", 1390, false));
-               BULK_MATERIAL.add(new Material.Bulk("Spruce", 450, false));
-               BULK_MATERIAL.add(new Material.Bulk("Styrofoam (generic EPS)", 20, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Acrylic"), 1190, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Balsa"), 170, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Birch"), 670, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Cardboard"), 680, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Carbonfiber"), 1780, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Cork"), 240, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.DepronXPS"), 40, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Fiberglass"), 1850, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Kraftphenolic"), 950, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Maple"), 755, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Paperoffice"), 820, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Pine"), 530, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Plywoodbirch"), 630, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.PolycarbonateLexan"), 1200, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Polystyrene"), 1050, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.PVC"), 1390, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Spruce"), 450, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.StyrofoamgenericEPS"), 20, false));
                //              BULK_MATERIAL.add(new Material.Bulk("Styrofoam (Blue foam, XPS)", 32, false));
-               BULK_MATERIAL.add(new Material.Bulk("Styrofoam \"Blue foam\" (XPS)", 32, false));
-               BULK_MATERIAL.add(new Material.Bulk("Quantum tubing", 1050, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.StyrofoamBluefoamXPS"), 32, false));
+               BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Quantumtubing"), 1050, false));
                
-               SURFACE_MATERIAL.add(new Material.Surface("Ripstop nylon", 0.067, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Mylar", 0.021, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Polyethylene (thin)", 0.015, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Polyethylene (heavy)", 0.040, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Silk", 0.060, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Paper (office)", 0.080, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Cellophane", 0.018, false));
-               SURFACE_MATERIAL.add(new Material.Surface("Cr\u00eape paper", 0.025, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Ripstopnylon"), 0.067, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Mylar"), 0.021, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Polyethylenethin"), 0.015, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Polyethyleneheavy"), 0.040, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Silk"), 0.060, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Paperoffice"), 0.080, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Cellophane"), 0.018, false));
+               SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Crepepaper"), 0.025, false));
                
-               LINE_MATERIAL.add(new Material.Line("Thread (heavy-duty)", 0.0003, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (round 2mm, 1/16 in)", 0.0018, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat  6mm, 1/4 in)", 0.0043, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 12mm, 1/2 in)", 0.008, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 19mm, 3/4 in)", 0.0012, false));
-               LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 25mm, 1 in)", 0.0016, false));
-               LINE_MATERIAL.add(new Material.Line("Braided nylon (2 mm, 1/16 in)", 0.001, false));
-               LINE_MATERIAL.add(new Material.Line("Braided nylon (3 mm, 1/8 in)", 0.0035, false));
-               LINE_MATERIAL.add(new Material.Line("Tubular nylon (11 mm, 7/16 in)", 0.013, false));
-               LINE_MATERIAL.add(new Material.Line("Tubular nylon (14 mm, 9/16 in)", 0.016, false));
-               LINE_MATERIAL.add(new Material.Line("Tubular nylon (25 mm, 1 in)", 0.029, false));
+               //// Thread (heavy-duty)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Threadheavy-duty"), 0.0003, false));
+               //// Elastic cord (round 2mm, 1/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordround2mm"), 0.0018, false));
+               //// Elastic cord (flat  6mm, 1/4 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat6mm"), 0.0043, false));
+               //// Elastic cord (flat 12mm, 1/2 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat12mm"), 0.008, false));
+               //// Elastic cord (flat 19mm, 3/4 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat19mm"), 0.0012, false));
+               //// Elastic cord (flat 25mm, 1 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat25mm"), 0.0016, false));
+               //// Braided nylon (2 mm, 1/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Braidednylon2mm"), 0.001, false));
+               //// Braided nylon (3 mm, 1/8 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Braidednylon3mm"), 0.0035, false));
+               //// Tubular nylon (11 mm, 7/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon11mm"), 0.013, false));
+               //// Tubular nylon (14 mm, 9/16 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon14mm"), 0.016, false));
+               //// Tubular nylon (25 mm, 1 in)
+               LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon25mm"), 0.029, false));
                
 
                // Add user-defined materials
index dc9901b09e400dce26030242920ea0dcee996bd3..49b21974c36343c3defa539f1527ee1baa46af53 100644 (file)
@@ -22,8 +22,10 @@ import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.document.StorageOptions;
 import net.sf.openrocket.file.RocketSaver;
 import net.sf.openrocket.file.openrocket.OpenRocketSaver;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.simulation.FlightData;
 import net.sf.openrocket.simulation.FlightDataBranch;
+import net.sf.openrocket.startup.Application;
 
 public class StorageOptionChooser extends JPanel {
        
@@ -43,6 +45,7 @@ public class StorageOptionChooser extends JPanel {
        
        
        private boolean artificialEvent = false;
+       private static final Translator trans = Application.getTranslator();
        
        public StorageOptionChooser(OpenRocketDocument doc, StorageOptions opts) {
                super(new MigLayout());
@@ -67,19 +70,25 @@ public class StorageOptionChooser extends JPanel {
                ButtonGroup buttonGroup = new ButtonGroup();
                String tip;
                
-               this.add(new JLabel("Simulated data to store:"), "spanx, wrap unrel");
+               //// Simulated data to store:
+               this.add(new JLabel(trans.get("StorageOptChooser.lbl.Simdatatostore")), "spanx, wrap unrel");
 
-               allButton = new JRadioButton("All simulated data");
-               allButton.setToolTipText("<html>Store all simulated data.<br>" +
-                               "This can result in very large files!");
+               //// All simulated data
+               allButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Allsimdata"));
+               //// <html>Store all simulated data.<br>
+               //// This can result in very large files!
+               allButton.setToolTipText(trans.get("StorageOptChooser.lbl.longA1") +
+                               trans.get("StorageOptChooser.lbl.longA2"));
                buttonGroup.add(allButton);
                allButton.addActionListener(actionUpdater);
                this.add(allButton, "spanx, wrap rel");
                
-               
-               someButton = new JRadioButton("Every");
-               tip = "<html>Store plottable values approximately this far apart.<br>" +
-                               "Larger values result in smaller files.";
+               //// Every
+               someButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Every"));
+               //// <html>Store plottable values approximately this far apart.<br>"
+               //// Larger values result in smaller files.
+               tip = trans.get("StorageOptChooser.lbl.longB1") +
+               trans.get("StorageOptChooser.lbl.longB2");
                someButton.setToolTipText(tip);
                buttonGroup.add(someButton);
                someButton.addActionListener(actionUpdater);
@@ -98,36 +107,42 @@ public class StorageOptionChooser extends JPanel {
                this.add(timeSpinner, "wmin 55lp");
                timeSpinner.addChangeListener(changeUpdater);
                
-               JLabel label = new JLabel("seconds");
+               //// seconds
+               JLabel label = new JLabel(trans.get("StorageOptChooser.lbl.seconds"));
                label.setToolTipText(tip);
                this.add(label, "wrap rel");
                
-               
-               noneButton = new JRadioButton("Only primary figures");
-               noneButton.setToolTipText("<html>Store only the values shown in the summary table.<br>" +
-                               "This results in the smallest files.");
+               //// Only primary figures
+               noneButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Onlyprimfig"));
+               //// <html>Store only the values shown in the summary table.<br>
+               //// This results in the smallest files.
+               noneButton.setToolTipText(trans.get("StorageOptChooser.lbl.longC1") +
+                               trans.get("StorageOptChooser.lbl.longC2"));
                buttonGroup.add(noneButton);
                noneButton.addActionListener(actionUpdater);
                this.add(noneButton, "spanx, wrap 20lp");
                
                
-               
-               compressButton = new JCheckBox("Compress file");
-               compressButton.setToolTipText("Using compression reduces the file size significantly.");
+               //// Compress file
+               compressButton = new JCheckBox(trans.get("StorageOptChooser.checkbox.Compfile"));
+               //// Using compression reduces the file size significantly.
+               compressButton.setToolTipText(trans.get("StorageOptChooser.lbl.UsingComp"));
                compressButton.addActionListener(actionUpdater);
                this.add(compressButton, "spanx, wrap para");
                
                
                // Estimate is updated in loadOptions(opts)
                estimateLabel = new JLabel("");
-               estimateLabel.setToolTipText("An estimate on how large the resulting file would " +
-                               "be with the present options.");
+               //// An estimate on how large the resulting file would
+               //// be with the present options.
+               estimateLabel.setToolTipText(trans.get("StorageOptChooser.lbl.longD1"));
                this.add(estimateLabel, "spanx");
                
                
                this.setBorder(BorderFactory.createCompoundBorder(
                                BorderFactory.createEmptyBorder(0, 10, 0, 0),
-                               BorderFactory.createTitledBorder("Save options")));
+                               //// Save options
+                               BorderFactory.createTitledBorder(trans.get("StorageOptChooser.ttip.Saveopt"))));
                
                loadOptions(opts);
        }
@@ -202,7 +217,8 @@ public class StorageOptionChooser extends JPanel {
                        formatted = size + " kB";
                }
 
-               estimateLabel.setText("Estimated file size: " + formatted);
+               //// Estimated file size:
+               estimateLabel.setText(trans.get("StorageOptChooser.lbl.Estfilesize") + " " + formatted);
        }
        
        
@@ -256,7 +272,8 @@ public class StorageOptionChooser extends JPanel {
                
                StorageOptionChooser chooser = new StorageOptionChooser(document, options);
                
-               if (JOptionPane.showConfirmDialog(parent, chooser, "Save options", 
+               //// Save options
+               if (JOptionPane.showConfirmDialog(parent, chooser, trans.get("StorageOptChooser.lbl.Saveopt"), 
                                JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) !=
                                        JOptionPane.OK_OPTION) {
                        // User cancelled
index 1defc447e422bfbdd418523f19e4ccb9e19210ea..a914df00e2d49633787612108765426f354db4e9 100644 (file)
@@ -11,10 +11,12 @@ import net.sf.openrocket.database.Database;
 import net.sf.openrocket.database.DatabaseListener;
 import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.gui.dialogs.CustomMaterialDialog;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
 import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Reflection;
 
 public class MaterialModel extends AbstractListModel implements
@@ -31,9 +33,12 @@ public class MaterialModel extends AbstractListModel implements
        
        private final Reflection.Method getMethod;
        private final Reflection.Method setMethod;
+       private static final Translator trans = Application.getTranslator();
        
        
        public MaterialModel(Component parent, RocketComponent component, Material.Type type) {
+               //// Material
+               //this(parent, component, type, trans.get("MaterialModel.title.Material"));
                this(parent, component, type, "Material");
        }       
 
@@ -94,7 +99,8 @@ public class MaterialModel extends AbstractListModel implements
                                        CustomMaterialDialog dialog = new CustomMaterialDialog(
                                                        SwingUtilities.getWindowAncestor(parentComponent), 
                                                        (Material) getSelectedItem(), true,
-                                                       "Define custom material");
+                                                       //// Define custom material
+                                                       trans.get("MaterialModel.title.Defcustmat"));
 
                                        dialog.setVisible(true);
                                        
index 5c01348747136b6b51432686772c313d490a34de..d2b2a9fcd0e476370d959e00911bbca4740299c7 100644 (file)
@@ -14,13 +14,16 @@ import javax.swing.event.ListDataListener;
 
 import net.sf.openrocket.gui.dialogs.EditMotorConfigurationDialog;
 import net.sf.openrocket.gui.main.BasicFrame;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
 import net.sf.openrocket.rocketcomponent.Configuration;
 import net.sf.openrocket.rocketcomponent.Rocket;
+import net.sf.openrocket.startup.Application;
 
 public class MotorConfigurationModel implements ComboBoxModel, ChangeListener {
+       private static final Translator trans = Application.getTranslator();
 
-       private static final String EDIT = "Edit configurations";
+       private static final String EDIT = trans.get("MotorCfgModel.Editcfg");
        
        
        private EventListenerList listenerList = new EventListenerList();
index f332311418208002ffbaec4f2028ebd8f340eae7..62f79d6d3dcc79f4d09c925fe992310c86b6331f 100644 (file)
@@ -25,9 +25,11 @@ import javax.swing.table.TableColumnModel;
 
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.document.Simulation;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.simulation.FlightData;
 import net.sf.openrocket.simulation.FlightDataBranch;
 import net.sf.openrocket.simulation.FlightDataType;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.GUIUtil;
@@ -38,11 +40,13 @@ public class SimulationExportPanel extends JPanel {
 
        private static final String SPACE = "SPACE";
        private static final String TAB = "TAB";
+       private static final Translator trans = Application.getTranslator();
        
        private static final FileFilter CSV_FILE_FILTER = new FileFilter() {
                @Override
                public String getDescription() {
-                       return "Comma Separated Files (*.csv)";
+                       //// Comma Separated Files (*.csv)
+                       return trans.get("SimExpPan.desc");
                }
                @Override
                public boolean accept(File f) {
@@ -147,12 +151,12 @@ public class SimulationExportPanel extends JPanel {
                
                // Add table
                panel = new JPanel(new MigLayout("fill"));
-               panel.setBorder(BorderFactory.createTitledBorder("Variables to export"));
+               panel.setBorder(BorderFactory.createTitledBorder(trans.get("SimExpPan.border.Vartoexport")));
                
                panel.add(new JScrollPane(table), "wmin 300lp, width 300lp, height 1, grow 100, wrap");
                
                // Select all/none buttons
-               button = new JButton("Select all");
+               button = new JButton(trans.get("SimExpPan.but.Selectall"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -161,7 +165,7 @@ public class SimulationExportPanel extends JPanel {
                });
                panel.add(button, "split 2, growx 1, sizegroup selectbutton");
                
-               button = new JButton("Select none");
+               button = new JButton(trans.get("SimExpPan.but.Selectnone"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -181,11 +185,13 @@ public class SimulationExportPanel extends JPanel {
                
                // Field separator panel
                panel = new JPanel(new MigLayout("fill"));
-               panel.setBorder(BorderFactory.createTitledBorder("Field separator"));
+               panel.setBorder(BorderFactory.createTitledBorder(trans.get("SimExpPan.border.Fieldsep")));
                
-               label = new JLabel("Field separator string:");
-               tip = "<html>The string used to separate the fields in the exported file.<br>" +
-                               "Use ',' for a Comma Separated Values (CSV) file.";
+               label = new JLabel(trans.get("SimExpPan.lbl.Fieldsepstr"));
+               //// <html>The string used to separate the fields in the exported file.<br>
+               //// Use ',' for a Comma Separated Values (CSV) file.
+               tip = trans.get("SimExpPan.lbl.longA1") +
+               trans.get("SimExpPan.lbl.longA2");
                label.setToolTipText(tip);
                panel.add(label);
                
@@ -203,31 +209,33 @@ public class SimulationExportPanel extends JPanel {
                
                // Comments separator panel
                panel = new JPanel(new MigLayout("fill"));
-               panel.setBorder(BorderFactory.createTitledBorder("Comments"));
+               //// Comments
+               panel.setBorder(BorderFactory.createTitledBorder(trans.get("SimExpPan.border.Comments")));
                
-               simulationComments = new JCheckBox("Include simulation description");
-               simulationComments.setToolTipText("Include a comment at the beginning of the file " +
-                               "describing the simulation.");
+               //// Include simulation description
+               simulationComments = new JCheckBox(trans.get("SimExpPan.checkbox.Includesimudesc"));
+               //// Include a comment at the beginning of the file describing the simulation.
+               simulationComments.setToolTipText(trans.get("SimExpPan.checkbox.ttip.Includesimudesc"));
                simulationComments.setSelected(Prefs.getBoolean(Prefs.EXPORT_SIMULATION_COMMENT, 
                                true));
                panel.add(simulationComments, "wrap");
                
-               
-               fieldNameComments = new JCheckBox("Include field descriptions");
-               fieldNameComments.setToolTipText("Include a comment line with the descriptions of " +
-                               "the exported variables.");
+               //// Include field descriptions
+               fieldNameComments = new JCheckBox(trans.get("SimExpPan.checkbox.Includefielddesc"));
+               //// Include a comment line with the descriptions of the exported variables.
+               fieldNameComments.setToolTipText(trans.get("SimExpPan.checkbox.ttip.Includefielddesc"));
                fieldNameComments.setSelected(Prefs.getBoolean(Prefs.EXPORT_FIELD_NAME_COMMENT, true));
                panel.add(fieldNameComments, "wrap");
                
                
-               eventComments = new JCheckBox("Include flight events");
-               eventComments.setToolTipText("Include a comment line for every flight event.");
+               eventComments = new JCheckBox(trans.get("SimExpPan.checkbox.Incflightevents"));
+               eventComments.setToolTipText(trans.get("SimExpPan.checkbox.ttip.Incflightevents"));
                eventComments.setSelected(Prefs.getBoolean(Prefs.EXPORT_EVENT_COMMENTS, true));
                panel.add(eventComments, "wrap");
                
                
-               label = new JLabel("Comment character:");
-               tip = "The character(s) that mark a comment line.";
+               label = new JLabel(trans.get("SimExpPan.lbl.Commentchar"));
+               tip = trans.get("SimExpPan.lbl.ttip.Commentchar");
                label.setToolTipText(tip);
                panel.add(label, "split 2");
                
@@ -246,7 +254,7 @@ public class SimulationExportPanel extends JPanel {
                
                
                // Export button
-               button = new JButton("Export to file...");
+               button = new JButton(trans.get("SimExpPan.but.Exporttofile"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -277,9 +285,13 @@ public class SimulationExportPanel extends JPanel {
                }
 
                if (file.exists()) {
-                       int ret = JOptionPane.showConfirmDialog(this, 
-                                       "File \"" + file.getName() + "\" exists.  Overwrite?", 
-                                       "File exists", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
+                       int ret = JOptionPane.showConfirmDialog(this,
+                                       //// File 
+                                       trans.get("SimExpPan.Fileexists.desc1") + file.getName() + 
+                                       //// \" exists.  Overwrite?
+                                       trans.get("SimExpPan.Fileexists.desc2"), 
+                                       //// File exists
+                                       trans.get("SimExpPan.Fileexists.title"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
                        if (ret != JOptionPane.YES_OPTION)
                                return;
                }
@@ -340,9 +352,13 @@ public class SimulationExportPanel extends JPanel {
                }
                
                if (n == 1) {
-                       str = "Exporting 1 variable out of " + total + ".";
+                       //// Exporting 1 variable out of 
+                       str = trans.get("SimExpPan.ExportingVar.desc1") + " " + total + ".";
                } else {
-                       str = "Exporting "+n+" variables out of " + total + ".";
+                       //// Exporting 
+                       //// variables out of
+                       str = trans.get("SimExpPan.ExportingVar.desc2") + " "+n+" " + 
+                       trans.get("SimExpPan.ExportingVar.desc3") + " " + total + ".";
                }
 
                selectedCountLabel.setText(str);
@@ -407,9 +423,11 @@ public class SimulationExportPanel extends JPanel {
                        case SELECTED:
                                return "";
                        case NAME:
-                               return "Variable";
+                               //// Variable
+                               return trans.get("SimExpPan.Col.Variable");
                        case UNIT:
-                               return "Unit";
+                               //// Unit
+                               return trans.get("SimExpPan.Col.Unit");
                        default:
                                throw new IndexOutOfBoundsException("column=" + column);
                        }
index 5b5e78ae8960430158dfc2a08afb522a95298ec7..13a98890dee5feee66c1b6816b32d708242db6ff 100644 (file)
@@ -11,7 +11,9 @@ import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
 import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.Configuration;
+import net.sf.openrocket.startup.Application;
 
 
 public class StageSelector extends JPanel implements ChangeListener {
@@ -62,6 +64,7 @@ public class StageSelector extends JPanel implements ChangeListener {
        
        private class StageAction extends AbstractAction implements ChangeListener {
                private final int stage;
+               private final Translator trans = Application.getTranslator();
 
                public StageAction(final int stage) {
                        this.stage = stage;
@@ -72,7 +75,8 @@ public class StageSelector extends JPanel implements ChangeListener {
                @Override
                public Object getValue(String key) {
                        if (key.equals(NAME)) {
-                               return "Stage "+(stage+1);
+                               //// Stage
+                               return trans.get("StageAction.Stage") + " " + (stage+1);
                        }
                        return super.getValue(key);
                }
index ebc490ac98d02a50d276945a5fff7afbd4be9bf8..f876d6fa40e9aef62c002562bd7670a77c8e6bf6 100644 (file)
@@ -7,9 +7,11 @@ import net.sf.openrocket.gui.adaptors.BooleanModel;
 import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.BodyTube;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 import javax.swing.JCheckBox;
@@ -20,6 +22,7 @@ import javax.swing.JSpinner;
 public class BodyTubeConfig extends RocketComponentConfig {
 
        private MotorConfig motorConfigPane = null;
+       private static final Translator trans = Application.getTranslator();
 
        public BodyTubeConfig(RocketComponent c) {
                super(c);
@@ -27,7 +30,7 @@ public class BodyTubeConfig extends RocketComponentConfig {
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]",""));
                
                ////  Body tube length
-               panel.add(new JLabel("Body tube length:"));
+               panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Bodytubelength")));
                
                DoubleModel m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -40,7 +43,7 @@ public class BodyTubeConfig extends RocketComponentConfig {
                
                
                //// Body tube diameter
-               panel.add(new JLabel("Outer diameter:"));
+               panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Outerdiameter")));
 
                DoubleModel od  = new DoubleModel(component,"OuterRadius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -53,12 +56,13 @@ public class BodyTubeConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px");
 
                JCheckBox check = new JCheckBox(od.getAutomaticAction());
-               check.setText("Automatic");
+               //// Automatic
+               check.setText(trans.get("BodyTubecfg.checkbox.Automatic"));
                panel.add(check,"skip, span 2, wrap");
                
                
                ////  Inner diameter
-               panel.add(new JLabel("Inner diameter:"));
+               panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Innerdiameter")));
 
                // Diameter = 2*Radius
                m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0);
@@ -73,7 +77,7 @@ public class BodyTubeConfig extends RocketComponentConfig {
 
                
                ////  Wall thickness
-               panel.add(new JLabel("Wall thickness:"));
+               panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Wallthickness")));
                
                m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                
@@ -84,9 +88,9 @@ public class BodyTubeConfig extends RocketComponentConfig {
                panel.add(new UnitSelector(m),"growx");
                panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 0px");
                
-               
+               //// Filled
                check = new JCheckBox(new BooleanModel(component,"Filled"));
-               check.setText("Filled");
+               check.setText(trans.get("BodyTubecfg.checkbox.Filled"));
                panel.add(check,"skip, span 2, wrap");
                
                
@@ -94,10 +98,13 @@ public class BodyTubeConfig extends RocketComponentConfig {
                panel.add(materialPanel(new JPanel(new MigLayout()), Material.Type.BULK),
                                "cell 4 0, gapleft paragraph, aligny 0%, spany");
                
-
-               tabbedPane.insertTab("General", null, panel, "General properties", 0);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("BodyTubecfg.tab.General"), null, panel, 
+                               trans.get("BodyTubecfg.tab.Generalproperties"), 0);
                motorConfigPane = new MotorConfig((BodyTube)c);
-               tabbedPane.insertTab("Motor", null, motorConfigPane, "Motor mount configuration", 1);
+               //// Motor and Motor mount configuration
+               tabbedPane.insertTab(trans.get("BodyTubecfg.tab.Motor"), null, motorConfigPane, 
+                               trans.get("BodyTubecfg.tab.Motormountconf"), 1);
                tabbedPane.setSelectedIndex(0);
        }
        
index c8130421e4bfceede7ded58ef0abbb6a31a91f07..a8b9dec488b93e325476c5fe9a446c2abf107e43 100644 (file)
@@ -3,19 +3,26 @@ package net.sf.openrocket.gui.configdialog;
 
 import javax.swing.JPanel;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 
 
 
 public class BulkheadConfig extends RingComponentConfig {
+       private static final Translator trans = Application.getTranslator();
 
        public BulkheadConfig(RocketComponent c) {
                super(c);
                
                JPanel tab;
                
-               tab = generalTab("Radius:", null, null, "Thickness:");
-               tabbedPane.insertTab("General", null, tab, "General properties", 0);
+               //// Radius: and "Thickness:
+               tab = generalTab(trans.get("BulkheadCfg.tab.Radius"), null, null, 
+                               trans.get("BulkheadCfg.tab.Thickness"));
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("BulkheadCfg.tab.General"), null, tab, 
+                               trans.get("BulkheadCfg.tab.Generalproperties"), 0);
                tabbedPane.setSelectedIndex(0);
        }
        
index 7abedfae88a5e1f94837b36e10a346755a060a04..7d336b88f51888af6f60ec14e8e4af65b9a509f9 100644 (file)
@@ -3,19 +3,27 @@ package net.sf.openrocket.gui.configdialog;
 
 import javax.swing.JPanel;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 
 
 
 public class CenteringRingConfig extends RingComponentConfig {
+       private static final Translator trans = Application.getTranslator();
 
        public CenteringRingConfig(RocketComponent c) {
                super(c);
                
                JPanel tab;
                
-               tab = generalTab("Outer diameter:", "Inner diameter:", null, "Thickness:");
-               tabbedPane.insertTab("General", null, tab, "General properties", 0);
+               //// Outer diameter: and Inner diameter: and Thickness:
+               tab = generalTab(trans.get("CenteringRingCfg.tab.Outerdiam"), 
+                               trans.get("CenteringRingCfg.tab.Innerdiam"), null, 
+                               trans.get("CenteringRingCfg.tab.Thickness"));
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("CenteringRingCfg.tab.General"), null, tab, 
+                               trans.get("CenteringRingCfg.tab.Generalproperties"), 0);
                tabbedPane.setSelectedIndex(0);
        }
        
index 4b4db2d8b05f4bb9208dfb052ae13b873c951767..7e526ee577baadcb3b9d0c2837ada83683627e28 100644 (file)
@@ -11,9 +11,11 @@ import java.lang.reflect.InvocationTargetException;
 import javax.swing.JDialog;
 
 import net.sf.openrocket.document.OpenRocketDocument;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
 import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.BugException;
 import net.sf.openrocket.util.GUIUtil;
 import net.sf.openrocket.util.Prefs;
@@ -41,7 +43,8 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis
        private RocketComponentConfig configurator = null;
        
        private final Window parent;
-       
+       private static final Translator trans = Application.getTranslator();
+
        private ComponentConfigDialog(Window parent, OpenRocketDocument document,
                        RocketComponent component) {
                super(parent);
@@ -93,7 +96,8 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis
                this.setContentPane(configurator);
                configurator.updateFields();
                
-               setTitle(component.getComponentName() + " configuration");
+               //// configuration
+               setTitle(component.getComponentName() + " " + trans.get("ComponentCfgDlg.configuration"));
                
                //              Dimension pref = getPreferredSize();
                //              Dimension real = getSize();
@@ -207,7 +211,8 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis
                dialog = new ComponentConfigDialog(parent, document, component);
                dialog.setVisible(true);
                
-               document.addUndoPosition("Modify " + component.getComponentName());
+               ////Modify
+               document.addUndoPosition(trans.get("ComponentCfgDlg.Modify") + " " + component.getComponentName());
        }
        
        
index e0939146c8089c4db4f3cadf54b078a1a4516e95..cfb70b35f95f8cc0869d0ec269a1ee328f2c335c 100644 (file)
@@ -15,12 +15,15 @@ import net.sf.openrocket.gui.adaptors.EnumModel;
 import net.sf.openrocket.gui.adaptors.IntegerModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.FinSet;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class EllipticalFinSetConfig extends FinSetConfig {
+       private static final Translator trans = Application.getTranslator();
 
        public EllipticalFinSetConfig(final RocketComponent component) {
                super(component);
@@ -36,7 +39,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]",""));
                
                ////  Number of fins
-               panel.add(new JLabel("Number of fins:"));
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Nbroffins")));
                
                IntegerModel im = new IntegerModel(component,"FinCount",1,8);
                
@@ -46,7 +49,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
                
                
                ////  Base rotation
-               panel.add(new JLabel("Rotation:"));
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Rotation")));
                
                m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE,-Math.PI,Math.PI);
                
@@ -59,9 +62,9 @@ public class EllipticalFinSetConfig extends FinSetConfig {
                
                
                ////  Fin cant
-               JLabel label = new JLabel("Fin cant:");
-               label.setToolTipText("The angle that the fins are canted with respect to the rocket " +
-                               "body.");
+               JLabel label = new JLabel(trans.get("EllipticalFinSetCfg.Fincant"));
+               //// "The angle that the fins are canted with respect to the rocket
+               label.setToolTipText(trans.get("EllipticalFinSetCfg.ttip.Fincant"));
                panel.add(label);
                
                m = new DoubleModel(component, "CantAngle", UnitGroup.UNITS_ANGLE,
@@ -78,7 +81,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
 
                
                ////  Root chord
-               panel.add(new JLabel("Root chord:"));
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Rootchord")));
                
                m  = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -91,7 +94,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
 
 
                ////  Height
-               panel.add(new JLabel("Height:"));
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Height")));
                
                m = new DoubleModel(component,"Height",UnitGroup.UNITS_LENGTH,0);
                
@@ -104,8 +107,8 @@ public class EllipticalFinSetConfig extends FinSetConfig {
        
                
                ////  Position
-               
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Positionrelativeto")));
 
                combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -117,7 +120,8 @@ public class EllipticalFinSetConfig extends FinSetConfig {
                                }));
                panel.add(combo,"spanx, growx, wrap");
                
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.plus")),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -143,14 +147,15 @@ public class EllipticalFinSetConfig extends FinSetConfig {
 
 
                ////  Cross section
-               panel.add(new JLabel("Fin cross section:"),"span, split");
+               //// Fin cross section:
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.FincrossSection")),"span, split");
                combo = new JComboBox(
                                new EnumModel<FinSet.CrossSection>(component,"CrossSection"));
                panel.add(combo,"growx, wrap unrel");
                
 
-               ////  Thickness
-               panel.add(new JLabel("Thickness:"));
+               ////  Thickness:
+               panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Thickness")));
                
                m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                
@@ -174,8 +179,9 @@ public class EllipticalFinSetConfig extends FinSetConfig {
                
                addFinSetButtons();
 
-
-               tabbedPane.insertTab("General", null, mainPanel, "General properties", 0);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("EllipticalFinSetCfg.General"), null, mainPanel, 
+                               trans.get("EllipticalFinSetCfg.Generalproperties"), 0);
                tabbedPane.setSelectedIndex(0);
        }
 
index c4e859852d339893f3bc25f2f91b0899949bbed7..da124327be44710148e50f888b2eebe1f09295f4 100644 (file)
@@ -18,6 +18,7 @@ import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.StyledLabel.Style;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.rocketcomponent.FinSet;
 import net.sf.openrocket.rocketcomponent.FreeformFinSet;
@@ -28,13 +29,16 @@ import net.sf.openrocket.unit.UnitGroup;
 
 public abstract class FinSetConfig extends RocketComponentConfig {
        private static final LogHelper log = Application.getLogger();
-       
+       private static final Translator trans = Application.getTranslator();
+
        private JButton split = null;
        
        public FinSetConfig(RocketComponent component) {
                super(component);
                
-               tabbedPane.insertTab("Fin tabs", null, finTabPanel(), "Through-the-wall fin tabs", 0);
+               //// Fin tabs and Through-the-wall fin tabs
+               tabbedPane.insertTab(trans.get("FinSetConfig.tab.Fintabs"), null, finTabPanel(), 
+                               trans.get("FinSetConfig.tab.Through-the-wall"), 0);
        }
        
        
@@ -44,8 +48,10 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                
                //// Convert buttons
                if (!(component instanceof FreeformFinSet)) {
-                       convert = new JButton("Convert to freeform");
-                       convert.setToolTipText("Convert this fin set into a freeform fin set");
+                       //// Convert to freeform
+                       convert = new JButton(trans.get("FinSetConfig.but.Converttofreeform"));
+                       //// Convert this fin set into a freeform fin set
+                       convert.setToolTipText(trans.get("FinSetConfig.but.Converttofreeform.ttip"));
                        convert.addActionListener(new ActionListener() {
                                @Override
                                public void actionPerformed(ActionEvent e) {
@@ -55,7 +61,8 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                                        SwingUtilities.invokeLater(new Runnable() {
                                                @Override
                                                public void run() {
-                                                       ComponentConfigDialog.addUndoPosition("Convert fin set");
+                                                       //// Convert fin set
+                                                       ComponentConfigDialog.addUndoPosition(trans.get("FinSetConfig.Convertfinset"));
                                                        RocketComponent freeform =
                                                                        FreeformFinSet.convertFinSet((FinSet) component);
                                                        ComponentConfigDialog.showDialog(freeform);
@@ -67,8 +74,10 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                        });
                }
                
-               split = new JButton("Split fins");
-               split.setToolTipText("Split the fin set into separate fins");
+               //// Split fins
+               split = new JButton(trans.get("FinSetConfig.but.Splitfins"));
+               //// Split the fin set into separate fins
+               split.setToolTipText(trans.get("FinSetConfig.but.Splitfins.ttip"));
                split.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -117,7 +126,8 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                //              JPanel panel = new JPanel(new MigLayout("fillx, align 20% 20%, gap rel unrel",
                //                              "[40lp][80lp::][30lp::][100lp::]",""));
                
-               panel.add(new StyledLabel("Through-the-wall fin tabs:", Style.BOLD),
+               //// Through-the-wall fin tabs:
+               panel.add(new StyledLabel(trans.get("FinSetConfig.lbl.Through-the-wall"), Style.BOLD),
                                "spanx, wrap 30lp");
                
                JLabel label;
@@ -136,8 +146,10 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                register(length_2);
                
                ////  Tab length
-               label = new JLabel("Tab length:");
-               label.setToolTipText("The length of the fin tab.");
+               //// Tab length:
+               label = new JLabel(trans.get("FinSetConfig.lbl.Tablength"));
+               //// The length of the fin tab.
+               label.setToolTipText(trans.get("FinSetConfig.ttip.Tablength"));
                panel.add(label, "gapleft para, gapright 40lp, growx 1");
                
                m = new DoubleModel(component, "TabLength", UnitGroup.UNITS_LENGTH, 0);
@@ -152,8 +164,10 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                
 
                ////  Tab length
-               label = new JLabel("Tab height:");
-               label.setToolTipText("The spanwise height of the fin tab.");
+               //// Tab height:
+               label = new JLabel(trans.get("FinSetConfig.lbl.Tabheight"));
+               //// The spanwise height of the fin tab.
+               label.setToolTipText(trans.get("FinSetConfig.ttip.Tabheight"));
                panel.add(label, "gapleft para");
                
                m = new DoubleModel(component, "TabHeight", UnitGroup.UNITS_LENGTH, 0);
@@ -167,9 +181,10 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                                "w 100lp, growx 5, wrap para");
                
 
-               ////  Tab position
-               label = new JLabel("Tab position:");
-               label.setToolTipText("The position of the fin tab.");
+               ////  Tab position:
+               label = new JLabel(trans.get("FinSetConfig.lbl.Tabposition"));
+               //// The position of the fin tab.
+               label.setToolTipText(trans.get("FinSetConfig.ttip.Tabposition"));
                panel.add(label, "gapleft para");
                
                m = new DoubleModel(component, "TabShift", UnitGroup.UNITS_LENGTH);
@@ -182,8 +197,8 @@ public abstract class FinSetConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(m.getSliderModel(length_2, length2)), "w 100lp, growx 5, wrap");
                
 
-
-               label = new JLabel("relative to");
+               //// relative to
+               label = new JLabel(trans.get("FinSetConfig.lbl.relativeto"));
                panel.add(label, "right, gapright unrel");
                
                EnumModel<FinSet.TabRelativePosition> em =
index 369b09b6b73b0251199bf0e5044b22f4c2d9a0a1..87be5fb40592fd06546250371e255c7596b410f5 100644 (file)
@@ -27,11 +27,13 @@ import net.sf.openrocket.gui.components.UnitSelector;
 import net.sf.openrocket.gui.scalefigure.FinPointFigure;
 import net.sf.openrocket.gui.scalefigure.ScaleScrollPane;
 import net.sf.openrocket.gui.scalefigure.ScaleSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.FinSet;
 import net.sf.openrocket.rocketcomponent.FreeformFinSet;
 import net.sf.openrocket.rocketcomponent.IllegalFinPointException;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.Coordinate;
 
@@ -42,15 +44,19 @@ public class FreeformFinSetConfig extends FinSetConfig {
        private FinPointTableModel tableModel = null;
        
        private FinPointFigure figure = null;
-       
+       private static final Translator trans = Application.getTranslator();
+
        
        public FreeformFinSetConfig(RocketComponent component) {
                super(component);
                this.finset = (FreeformFinSet)component;
 
-
-               tabbedPane.insertTab("General", null, generalPane(), "General properties", 0);
-               tabbedPane.insertTab("Shape", null, shapePane(), "Fin shape", 1);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("FreeformFinSetCfg.tab.General"), null, generalPane(), 
+                               trans.get("FreeformFinSetCfg.tab.ttip.General"), 0);
+               //// Shape and Fin shape
+               tabbedPane.insertTab(trans.get("FreeformFinSetCfg.tab.Shape"), null, shapePane(), 
+                               trans.get("FreeformFinSetCfg.tab.ttip.Finshape"), 1);
                tabbedPane.setSelectedIndex(0);
                
                addFinSetButtons();
@@ -70,8 +76,8 @@ public class FreeformFinSetConfig extends FinSetConfig {
                
                
                
-               ////  Number of fins
-               panel.add(new JLabel("Number of fins:"));
+               ////  Number of fins:
+               panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Numberoffins")));
                
                IntegerModel im = new IntegerModel(component,"FinCount",1,8);
                
@@ -81,7 +87,7 @@ public class FreeformFinSetConfig extends FinSetConfig {
                
                
                ////  Base rotation
-               panel.add(new JLabel("Fin rotation:"));
+               panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Finrotation")));
                
                m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE,-Math.PI,Math.PI);
                
@@ -95,9 +101,9 @@ public class FreeformFinSetConfig extends FinSetConfig {
                
 
                ////  Fin cant
-               JLabel label = new JLabel("Fin cant:");
-               label.setToolTipText("The angle that the fins are canted with respect to the rocket " +
-                               "body.");
+               JLabel label = new JLabel(trans.get("FreeformFinSetCfg.lbl.Fincant"));
+               //// The angle that the fins are canted with respect to the rocket body.
+               label.setToolTipText(trans.get("FreeformFinSetCfg.lbl.ttip.Fincant"));
                panel.add(label);
                
                m = new DoubleModel(component, "CantAngle", UnitGroup.UNITS_ANGLE,
@@ -114,7 +120,8 @@ public class FreeformFinSetConfig extends FinSetConfig {
                
                
                ////  Position
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel("FreeformFinSetCfg.lbl.Posrelativeto"));
 
                combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -125,8 +132,8 @@ public class FreeformFinSetConfig extends FinSetConfig {
                                                RocketComponent.Position.ABSOLUTE
                                }));
                panel.add(combo,"spanx 3, growx, wrap");
-                               
-               panel.add(new JLabel("plus"),"right");
+                               //// plus
+               panel.add(new JLabel("FreeformFinSetCfg.lbl.plus"),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -153,14 +160,15 @@ public class FreeformFinSetConfig extends FinSetConfig {
                
                
                ////  Cross section
-               panel.add(new JLabel("Fin cross section:"),"span, split");
+               //// Fin cross section:
+               panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.FincrossSection")),"span, split");
                combo = new JComboBox(
                                new EnumModel<FinSet.CrossSection>(component,"CrossSection"));
                panel.add(combo,"growx, wrap unrel");
                
 
-               ////  Thickness
-               panel.add(new JLabel("Thickness:"));
+               ////  Thickness:
+               panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Thickness")));
                
                m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                
index 751aa86bac009d1b298b00e30aebe232bed09891..35347fd3b6c4b112c0f4947e68345e71e6b27d0f 100644 (file)
@@ -32,17 +32,20 @@ import net.sf.openrocket.gui.SpinnerEditor;
 import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.ClusterConfiguration;
 import net.sf.openrocket.rocketcomponent.Clusterable;
 import net.sf.openrocket.rocketcomponent.InnerTube;
 import net.sf.openrocket.rocketcomponent.MotorMount;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.BugException;
 import net.sf.openrocket.util.Coordinate;
 
 
 public class InnerTubeConfig extends ThicknessRingComponentConfig {
+       private static final Translator trans = Application.getTranslator();
        
 
        public InnerTubeConfig(RocketComponent c) {
@@ -51,13 +54,19 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig {
                JPanel tab;
                
                tab = new MotorConfig((MotorMount) c);
-               tabbedPane.insertTab("Motor", null, tab, "Motor mount configuration", 1);
+               //// Motor and Motor mount configuration
+               tabbedPane.insertTab(trans.get("InnerTubeCfg.tab.Motor"), null, tab, 
+                               trans.get("InnerTubeCfg.tab.ttip.Motor"), 1);
                
                tab = clusterTab();
-               tabbedPane.insertTab("Cluster", null, tab, "Cluster configuration", 2);
+               //// Cluster and Cluster configuration
+               tabbedPane.insertTab(trans.get("InnerTubeCfg.tab.Cluster"), null, tab, 
+                               trans.get("InnerTubeCfg.tab.ttip.Cluster"), 2);
                
                tab = positionTab();
-               tabbedPane.insertTab("Radial position", null, tab, "Radial position", 3);
+               //// Radial position
+               tabbedPane.insertTab(trans.get("InnerTubeCfg.tab.Radialpos"), null, tab, 
+                               trans.get("InnerTubeCfg.tab.ttip.Radialpos"), 3);
                
                tabbedPane.setSelectedIndex(0);
        }
@@ -69,7 +78,8 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig {
                JPanel subPanel = new JPanel(new MigLayout());
                
                // Cluster type selection
-               subPanel.add(new JLabel("Select cluster configuration:"), "spanx, wrap");
+               //// Select cluster configuration:
+               subPanel.add(new JLabel(trans.get("InnerTubeCfg.lbl.Selectclustercfg")), "spanx, wrap");
                subPanel.add(new ClusterSelectionPanel((InnerTube) component), "spanx, wrap");
                //              JPanel clusterSelection = new ClusterSelectionPanel((InnerTube)component);
                //              clusterSelection.setBackground(Color.blue);
@@ -81,43 +91,53 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig {
                subPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]"));
                
                // Tube separation scale
-               JLabel l = new JLabel("Tube separation:");
-               l.setToolTipText("The separation of the tubes, 1.0 = touching each other");
+               //// Tube separation:
+               JLabel l = new JLabel(trans.get("InnerTubeCfg.lbl.TubeSep"));
+               //// The separation of the tubes, 1.0 = touching each other
+               l.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.TubeSep"));
                subPanel.add(l);
                DoubleModel dm = new DoubleModel(component, "ClusterScale", 1, UnitGroup.UNITS_NONE, 0);
                
                JSpinner spin = new JSpinner(dm.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
-               spin.setToolTipText("The separation of the tubes, 1.0 = touching each other");
+               //// The separation of the tubes, 1.0 = touching each other
+               spin.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.TubeSep"));
                subPanel.add(spin, "growx");
                
                BasicSlider bs = new BasicSlider(dm.getSliderModel(0, 1, 4));
-               bs.setToolTipText("The separation of the tubes, 1.0 = touching each other");
+               //// The separation of the tubes, 1.0 = touching each other
+               bs.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.TubeSep"));
                subPanel.add(bs, "skip,w 100lp, wrap");
                
-               // Rotation
-               l = new JLabel("Rotation:");
-               l.setToolTipText("Rotation angle of the cluster configuration");
+               // Rotation:
+               l = new JLabel(trans.get("InnerTubeCfg.lbl.Rotation"));
+               //// Rotation angle of the cluster configuration
+               l.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.Rotation"));
                subPanel.add(l);
                dm = new DoubleModel(component, "ClusterRotation", 1, UnitGroup.UNITS_ANGLE,
                                -Math.PI, Math.PI);
                
                spin = new JSpinner(dm.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
-               spin.setToolTipText("Rotation angle of the cluster configuration");
+               //// Rotation angle of the cluster configuration
+               spin.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.Rotation"));
                subPanel.add(spin, "growx");
                
                subPanel.add(new UnitSelector(dm), "growx");
                bs = new BasicSlider(dm.getSliderModel(-Math.PI, 0, Math.PI));
-               bs.setToolTipText("Rotation angle of the cluster configuration");
+               //// Rotation angle of the cluster configuration
+               bs.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.Rotation"));
                subPanel.add(bs, "w 100lp, wrap para");
                
 
 
                // Split button
-               JButton split = new JButton("Split cluster");
-               split.setToolTipText("<html>Split the cluster into separate components.<br>" +
-                               "This also duplicates all components attached to this inner tube.");
+               //// Split cluster
+               JButton split = new JButton(trans.get("InnerTubeCfg.but.Splitcluster"));
+               //// <html>Split the cluster into separate components.<br>
+               //// This also duplicates all components attached to this inner tube.
+               split.setToolTipText(trans.get("InnerTubeCfg.lbl.longA1") +
+                               trans.get("InnerTubeCfg.lbl.longA2"));
                split.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -159,8 +179,10 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig {
                
 
                // Reset button
-               JButton reset = new JButton("Reset settings");
-               reset.setToolTipText("Reset the separation and rotation to the default values");
+               ///// Reset settings
+               JButton reset = new JButton(trans.get("InnerTubeCfg.but.Resetsettings"));
+               //// Reset the separation and rotation to the default values
+               reset.setToolTipText(trans.get("InnerTubeCfg.but.ttip.Resetsettings"));
                reset.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
index 893917a6b04f88c582430ac68fe554bb52615a5b..56f1231f9b1e114543394c7eb1c479945e8a9b2d 100644 (file)
@@ -7,8 +7,10 @@ import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.adaptors.EnumModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 import javax.swing.JComboBox;
@@ -19,6 +21,7 @@ import javax.swing.JSpinner;
 public class LaunchLugConfig extends RocketComponentConfig {
 
        private MotorConfig motorConfigPane = null;
+       private static final Translator trans = Application.getTranslator();
 
        public LaunchLugConfig(RocketComponent c) {
                super(c);
@@ -29,7 +32,8 @@ public class LaunchLugConfig extends RocketComponentConfig {
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]",""));
                
                ////  Body tube length
-               panel.add(new JLabel("Length:"));
+               //// Length:
+               panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Length")));
                
                DoubleModel m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -42,7 +46,8 @@ public class LaunchLugConfig extends RocketComponentConfig {
                
                
                //// Body tube diameter
-               panel.add(new JLabel("Outer diameter:"));
+               //// Outer diameter:
+               panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Outerdiam")));
 
                DoubleModel od  = new DoubleModel(component,"OuterRadius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -55,8 +60,8 @@ public class LaunchLugConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap rel");
 
                
-               ////  Inner diameter
-               panel.add(new JLabel("Inner diameter:"));
+               ////  Inner diameter:
+               panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Innerdiam")));
 
                // Diameter = 2*Radius
                m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0);
@@ -71,7 +76,8 @@ public class LaunchLugConfig extends RocketComponentConfig {
 
                
                ////  Wall thickness
-               panel.add(new JLabel("Thickness:"));
+               //// Thickness:
+               panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Thickness")));
                
                m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                
@@ -83,8 +89,8 @@ public class LaunchLugConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 20lp");
                
 
-               ////  Radial direction
-               panel.add(new JLabel("Radial position:"));
+               ////  Radial position:
+               panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Radialpos")));
                
                m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,
                                -Math.PI, Math.PI);
@@ -104,8 +110,8 @@ public class LaunchLugConfig extends RocketComponentConfig {
                
                
                
-
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto")));
 
                JComboBox combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -117,7 +123,8 @@ public class LaunchLugConfig extends RocketComponentConfig {
                                }));
                panel.add(combo,"spanx, growx, wrap");
                
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -138,8 +145,9 @@ public class LaunchLugConfig extends RocketComponentConfig {
                
                primary.add(panel,"grow");
                
-
-               tabbedPane.insertTab("General", null, primary, "General properties", 0);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("LaunchLugCfg.tab.General"), null, primary, 
+                               trans.get("LaunchLugCfg.tab.Generalprop"), 0);
                tabbedPane.setSelectedIndex(0);
        }
        
index 5bff03a074edfa92c3e7be182d06ee5d894c3d0c..659714f46043f001514c4d6aa36b2e92d49ffc1f 100644 (file)
@@ -16,12 +16,15 @@ import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.adaptors.EnumModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.MassComponent;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 
 public class MassComponentConfig extends RocketComponentConfig {
+       private static final Translator trans = Application.getTranslator();
 
        public MassComponentConfig(RocketComponent component) {
                super(component);
@@ -32,7 +35,7 @@ public class MassComponentConfig extends RocketComponentConfig {
                
                
                ////  Mass
-               panel.add(new JLabel("Mass"));
+               panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Mass")));
                
                DoubleModel m = new DoubleModel(component,"ComponentMass",UnitGroup.UNITS_MASS,0);
                
@@ -46,7 +49,8 @@ public class MassComponentConfig extends RocketComponentConfig {
                
                
                ////  Mass length
-               panel.add(new JLabel("Length"));
+               //// Length
+               panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Length")));
                
                m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -59,7 +63,8 @@ public class MassComponentConfig extends RocketComponentConfig {
                
                
                //// Tube diameter
-               panel.add(new JLabel("Diameter:"));
+               //// Diameter:
+               panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Diameter")));
 
                DoubleModel od  = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -73,8 +78,8 @@ public class MassComponentConfig extends RocketComponentConfig {
 
                
                ////  Position
-               
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel(trans.get("MassComponentCfg.lbl.PosRelativeto")));
 
                JComboBox combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -85,8 +90,8 @@ public class MassComponentConfig extends RocketComponentConfig {
                                                RocketComponent.Position.ABSOLUTE
                                }));
                panel.add(combo,"spanx, growx, wrap");
-               
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("MassComponentCfg.lbl.plus")),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -99,10 +104,12 @@ public class MassComponentConfig extends RocketComponentConfig {
                                new DoubleModel(component.getParent(), "Length"))),
                                "w 100lp, wrap");
 
-
-               tabbedPane.insertTab("General", null, panel, "General properties", 0);
-               tabbedPane.insertTab("Radial position", null, positionTab(), 
-                               "Radial position configuration", 1);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("MassComponentCfg.tab.General"), null, panel, 
+                               trans.get("MassComponentCfg.tab.ttip.General"), 0);
+               //// Radial position and Radial position configuration
+               tabbedPane.insertTab(trans.get("MassComponentCfg.tab.Radialpos"), null, positionTab(), 
+                               trans.get("MassComponentCfg.tab.ttip.Radialpos"), 1);
                tabbedPane.setSelectedIndex(0);
        }
        
@@ -111,7 +118,8 @@ public class MassComponentConfig extends RocketComponentConfig {
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]",""));
                
                ////  Radial position
-               panel.add(new JLabel("Radial distance:"));
+               //// Radial distance:
+               panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Radialdistance")));
                
                DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0);
                
@@ -123,8 +131,8 @@ public class MassComponentConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)),"w 100lp, wrap");
                
                
-               //// Radial direction
-               panel.add(new JLabel("Radial direction:"));
+               //// Radial direction:
+               panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Radialdirection")));
                
                m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0);
                
@@ -137,7 +145,7 @@ public class MassComponentConfig extends RocketComponentConfig {
 
                
                //// Reset button
-               JButton button = new JButton("Reset");
+               JButton button = new JButton(trans.get("MassComponentCfg.but.Reset"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 45a134a2bc2df66212bed7ce8bb0fcedc552b9ea..8ac39d44f6c5bd8eecc53b89c5091be4f76c06f0 100644 (file)
@@ -27,6 +27,7 @@ import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.UnitSelector;
 import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.motor.ThrustCurveMotor;
 import net.sf.openrocket.rocketcomponent.Configuration;
@@ -34,6 +35,7 @@ import net.sf.openrocket.rocketcomponent.MotorMount;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.MotorMount.IgnitionEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class MotorConfig extends JPanel {
@@ -43,7 +45,8 @@ public class MotorConfig extends JPanel {
        private final Configuration configuration;
        private JPanel panel;
        private JLabel motorLabel;
-       
+       private static final Translator trans = Application.getTranslator();
+
        public MotorConfig(MotorMount motorMount) {
                super(new MigLayout("fill"));
                
@@ -55,7 +58,8 @@ public class MotorConfig extends JPanel {
                
                model = new BooleanModel(motorMount, "MotorMount");
                JCheckBox check = new JCheckBox(model);
-               check.setText("This component is a motor mount");
+               ////This component is a motor mount
+               check.setText(trans.get("MotorCfg.checkbox.compmotormount"));
                this.add(check, "wrap");
                
 
@@ -64,7 +68,8 @@ public class MotorConfig extends JPanel {
                
 
                // Motor configuration selector
-               panel.add(new JLabel("Motor configuration:"), "shrink");
+               //// Motor configuration:
+               panel.add(new JLabel(trans.get("MotorCfg.lbl.Motorcfg")), "shrink");
                
                JComboBox combo = new JComboBox(new MotorConfigurationModel(configuration));
                panel.add(combo, "growx");
@@ -76,7 +81,8 @@ public class MotorConfig extends JPanel {
                        }
                });
                
-               JButton button = new JButton("New");
+               //// New button
+               JButton button = new JButton(trans.get("MotorCfg.but.New"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -87,8 +93,8 @@ public class MotorConfig extends JPanel {
                panel.add(button, "wrap unrel");
                
 
-               // Current motor
-               panel.add(new JLabel("Current motor:"), "shrink");
+               // Current motor:
+               panel.add(new JLabel(trans.get("MotorCfg.lbl.Currentmotor")), "shrink");
                
                motorLabel = new JLabel();
                motorLabel.setFont(motorLabel.getFont().deriveFont(Font.BOLD));
@@ -98,7 +104,8 @@ public class MotorConfig extends JPanel {
 
 
                //  Overhang
-               panel.add(new JLabel("Motor overhang:"));
+               //// Motor overhang:
+               panel.add(new JLabel(trans.get("MotorCfg.lbl.Motoroverhang")));
                
                DoubleModel dm = new DoubleModel(motorMount, "MotorOverhang", UnitGroup.UNITS_LENGTH);
                
@@ -112,20 +119,23 @@ public class MotorConfig extends JPanel {
 
 
                // Select ignition event
-               panel.add(new JLabel("Ignition at:"), "");
+               //// Ignition at:
+               panel.add(new JLabel(trans.get("MotorCfg.lbl.Ignitionat")), "");
                
                combo = new JComboBox(new EnumModel<IgnitionEvent>(mount, "IgnitionEvent"));
                panel.add(combo, "growx, wrap");
                
                // ... and delay
-               panel.add(new JLabel("plus"), "gap indent, skip 1, span, split");
+               //// plus
+               panel.add(new JLabel(trans.get("MotorCfg.lbl.plus")), "gap indent, skip 1, span, split");
                
                dm = new DoubleModel(mount, "IgnitionDelay", 0);
                spin = new JSpinner(dm.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
                panel.add(spin, "gap rel rel");
                
-               panel.add(new JLabel("seconds"), "wrap unrel");
+               //// seconds
+               panel.add(new JLabel(trans.get("MotorCfg.lbl.seconds")), "wrap unrel");
                
 
 
@@ -135,17 +145,24 @@ public class MotorConfig extends JPanel {
                int stages = c.getChildCount();
                
                if (stages == 1) {
-                       panel.add(new StyledLabel("The current design has only one stage.  " +
-                                       "Stages can be added by clicking \"New stage\".", -1),
+                       //// The current design has only one stage.
+                       //// Stages can be added by clicking \"New stage\".
+                       
+                       panel.add(new StyledLabel(trans.get("MotorCfg.lbl.longA1") +
+                                       trans.get("MotorCfg.lbl.longA2"), -1),
                                        "spanx, right, wrap para");
                } else {
-                       panel.add(new StyledLabel("The current design has " + stages + " stages.", -1),
+                       //// The current design has 
+                       //// stages.
+                       panel.add(new StyledLabel(trans.get("MotorCfg.lbl.longB1") + " " + stages +" " +
+                                       trans.get("MotorCfg.lbl.longB2"), -1),
                                        "skip 1, spanx, wrap para");
                }
                
 
                // Select etc. buttons
-               button = new JButton("Select motor");
+               //// Select motor
+               button = new JButton(trans.get("MotorCfg.but.Selectmotor"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -171,7 +188,8 @@ public class MotorConfig extends JPanel {
                });
                panel.add(button, "span, split, growx");
                
-               button = new JButton("Remove motor");
+               //// Remove motor
+               button = new JButton(trans.get("MotorCfg.but.Removemotor"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -201,7 +219,8 @@ public class MotorConfig extends JPanel {
                String id = configuration.getMotorConfigurationID();
                Motor m = mount.getMotor(id);
                if (m == null) {
-                       motorLabel.setText("None");
+                       //// None
+                       motorLabel.setText(trans.get("MotorCfg.lbl.motorLabel"));
                } else {
                        String str = "";
                        if (m instanceof ThrustCurveMotor)
index 14ccb9e4819eda2afea5fd3457a6c44c7ccc9c4e..a9d4f61ad440a5a20804fb369808c69c1a16e118 100644 (file)
@@ -18,10 +18,12 @@ import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.DescriptionArea;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.NoseCone;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.Transition;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class NoseConeConfig extends RocketComponentConfig {
@@ -33,7 +35,8 @@ public class NoseConeConfig extends RocketComponentConfig {
        private JLabel shapeLabel;
        private JSpinner shapeSpinner;
        private JSlider shapeSlider;
-       
+       private static final Translator trans = Application.getTranslator();
+
        // Prepended to the description from NoseCone.DESCRIPTIONS
        private static final String PREDESC = "<html>";
        
@@ -47,8 +50,8 @@ public class NoseConeConfig extends RocketComponentConfig {
                
 
                ////  Shape selection
-               
-               panel.add(new JLabel("Nose cone shape:"));
+               //// Nose cone shape:
+               panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Noseconeshape")));
 
                Transition.Shape selected = ((NoseCone)component).getType();
                Transition.Shape[] typeList = Transition.Shape.values();
@@ -70,7 +73,8 @@ public class NoseConeConfig extends RocketComponentConfig {
                
 
                ////  Shape parameter
-               shapeLabel = new JLabel("Shape parameter:");
+               ////  Shape parameter:
+               shapeLabel = new JLabel(trans.get("NoseConeCfg.lbl.Shapeparam"));
                panel.add(shapeLabel);
                
                m = new DoubleModel(component,"ShapeParameter");
@@ -88,8 +92,8 @@ public class NoseConeConfig extends RocketComponentConfig {
 
                
                ////  Length
-               
-               panel.add(new JLabel("Nose cone length:"));
+               //// Nose cone length:
+               panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Noseconelength")));
 
                m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                JSpinner spin = new JSpinner(m.getSpinnerModel());
@@ -100,8 +104,8 @@ public class NoseConeConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.7)),"w 100lp, wrap");
                
                ////  Diameter
-               
-               panel.add(new JLabel("Base diameter:"));
+               //// Base diameter:
+               panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Basediam")));
 
                m = new DoubleModel(component,"AftRadius",2.0,UnitGroup.UNITS_LENGTH,0);  // Diameter = 2*Radius
                spin = new JSpinner(m.getSpinnerModel());
@@ -112,12 +116,13 @@ public class NoseConeConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(m.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px");
                
                JCheckBox check = new JCheckBox(m.getAutomaticAction());
-               check.setText("Automatic");
+               //// Automatic
+               check.setText(trans.get("NoseConeCfg.checkbox.Automatic"));
                panel.add(check,"skip, span 2, wrap");
                
 
-               ////  Wall thickness
-               panel.add(new JLabel("Wall thickness:"));
+               ////  Wall thickness:
+               panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Wallthickness")));
                
                m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                
@@ -130,7 +135,8 @@ public class NoseConeConfig extends RocketComponentConfig {
                
 
                check = new JCheckBox(new BooleanModel(component,"Filled"));
-               check.setText("Filled");
+               //// Filled
+               check.setText(trans.get("NoseConeCfg.checkbox.Filled"));
                panel.add(check,"skip, span 2, wrap");
 
                
@@ -154,9 +160,12 @@ public class NoseConeConfig extends RocketComponentConfig {
                panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany");
                
 
-               
-               tabbedPane.insertTab("General", null, panel, "General properties", 0);
-               tabbedPane.insertTab("Shoulder", null, shoulderTab(), "Shoulder properties", 1);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("NoseConeCfg.tab.General"), null, panel, 
+                               trans.get("NoseConeCfg.tab.ttip.General"), 0);
+               //// Shoulder and Shoulder properties
+               tabbedPane.insertTab(trans.get("NoseConeCfg.tab.Shoulder"), null, shoulderTab(), 
+                               trans.get("NoseConeCfg.tab.ttip.Shoulder"), 1);
                tabbedPane.setSelectedIndex(0);
        }
        
index d498d827382641011a6f87ac26e7449f34d82823..4536288ecd9be2635eeab76af62f2bedc4cc5e1d 100644 (file)
@@ -21,14 +21,17 @@ import net.sf.openrocket.gui.components.HtmlLabel;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.UnitSelector;
 import net.sf.openrocket.gui.components.StyledLabel.Style;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.MassObject;
 import net.sf.openrocket.rocketcomponent.Parachute;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.MotorMount.IgnitionEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class ParachuteConfig extends RecoveryDeviceConfig {
+       private static final Translator trans = Application.getTranslator();
 
        public ParachuteConfig(final RocketComponent component) {
                super(component);
@@ -39,10 +42,10 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                
                
                //// Canopy
-               panel.add(new StyledLabel("Canopy:", Style.BOLD), "wrap unrel");
+               panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Canopy"), Style.BOLD), "wrap unrel");
                
-
-               panel.add(new JLabel("Diameter:"));
+               //// Diameter:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Diameter")));
                
                DoubleModel m = new DoubleModel(component,"Diameter",UnitGroup.UNITS_LENGTH,0);
                
@@ -52,12 +55,13 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                panel.add(new UnitSelector(m),"growx");
                panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)),"w 100lp, wrap");
 
-               
-               panel.add(new JLabel("Material:"));
+               //// Material:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material")));
                
                JComboBox combo = new JComboBox(new MaterialModel(panel, component, 
                                Material.Type.SURFACE));
-               combo.setToolTipText("The component material affects the weight of the component.");
+               //// The component material affects the weight of the component.
+               combo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel"));
                panel.add(combo,"spanx 3, growx, wrap paragraph");
 
 //             materialPanel(panel, Material.Type.SURFACE, "Material:", null);
@@ -65,10 +69,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                
                
                // CD
-               JLabel label = new HtmlLabel("<html>Drag coefficient C<sub>D</sub>:");
-               String tip = "<html>The drag coefficient relative to the total area of the parachute.<br>" +
-                               "A larger drag coefficient yields a slowed descent rate.  " +
-                               "A typical value for parachutes is 0.8.";
+               //// <html>Drag coefficient C<sub>D</sub>:
+               JLabel label = new HtmlLabel(trans.get("ParachuteCfg.lbl.longA1"));
+               String tip = trans.get("ParachuteCfg.lbl.longB1") +
+               trans.get("ParachuteCfg.lbl.longB2") + "  " +
+               trans.get("ParachuteCfg.lbl.longB3");
                label.setToolTipText(tip);
                panel.add(label);
                
@@ -79,7 +84,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                spin.setEditor(new SpinnerEditor(spin));
                panel.add(spin,"growx");
                
-               JButton button = new JButton("Reset");
+               //// Reset button
+               JButton button = new JButton(trans.get("ParachuteCfg.but.Reset"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -92,18 +98,18 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                
                
                ////  Shroud lines
-               panel.add(new StyledLabel("Shroud lines:", Style.BOLD), "wrap unrel");
-
+               panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Shroudlines"), Style.BOLD), "wrap unrel");
 
-               panel.add(new JLabel("Number of lines:"));
+               //// Number of lines:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Numberoflines")));
                IntegerModel im = new IntegerModel(component,"LineCount",0);
                
                spin = new JSpinner(im.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
                panel.add(spin,"growx, wrap");
                
-               
-               panel.add(new JLabel("Line length:"));
+               //// Line length:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Linelength")));
 
                m = new DoubleModel(component,"LineLength",UnitGroup.UNITS_LENGTH,0);
                
@@ -113,8 +119,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                panel.add(new UnitSelector(m),"growx");
                panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)),"w 100lp, wrap");
 
-               
-               panel.add(new JLabel("Material:"));
+               //// Material:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material")));
                
                combo = new JComboBox(new MaterialModel(panel, component, Material.Type.LINE, 
                                "LineMaterial"));
@@ -129,8 +135,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                
                
                //// Position
-
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Posrelativeto")));
 
                combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -142,7 +148,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                                }));
                panel.add(combo,"spanx, growx, wrap");
                
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -157,7 +164,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
 
 
                ////  Spatial length
-               panel.add(new JLabel("Packed length:"));
+               //// Packed length:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packedlength")));
                
                m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -170,7 +178,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                
                
                //// Tube diameter
-               panel.add(new JLabel("Packed diameter:"));
+               //// Packed diameter:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packeddiam")));
 
                DoubleModel od  = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -184,24 +193,26 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                
                
                //// Deployment
-
-               panel.add(new JLabel("Deploys at:"),"");
+               //// Deploys at:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat")),"");
                
                combo = new JComboBox(new EnumModel<IgnitionEvent>(component, "DeployEvent"));
                panel.add(combo,"spanx 3, growx, wrap");
                
                // ... and delay
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")),"right");
                
                m = new DoubleModel(component,"DeployDelay",0);
                spin = new JSpinner(m.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
                panel.add(spin,"spanx, split");
                
-               panel.add(new JLabel("seconds"),"wrap paragraph");
+               //// seconds
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.seconds")),"wrap paragraph");
 
-               // Altitude
-               label = new JLabel("Altitude:");
+               // Altitude:
+               label = new JLabel(trans.get("ParachuteCfg.lbl.Altitude"));
                altitudeComponents.add(label);
                panel.add(label);
                
@@ -223,9 +234,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                
                updateFields();
 
-               tabbedPane.insertTab("General", null, primary, "General properties", 0);
-               tabbedPane.insertTab("Radial position", null, positionTab(), 
-                               "Radial position configuration", 1);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("ParachuteCfg.tab.General"), null, primary, trans.get("ParachuteCfg.tab.ttip.General"), 0);
+               //// Radial position and Radial position configuration
+               tabbedPane.insertTab(trans.get("ParachuteCfg.tab.Radialpos"), null, positionTab(), 
+                               trans.get("ParachuteCfg.tab.ttip.Radialpos"), 1);
                tabbedPane.setSelectedIndex(0);
        }
        
@@ -237,7 +250,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]",""));
                
                ////  Radial position
-               panel.add(new JLabel("Radial distance:"));
+               //// Radial distance:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Radialdistance")));
                
                DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0);
                
@@ -249,8 +263,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
                panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)),"w 100lp, wrap");
                
                
-               //// Radial direction
-               panel.add(new JLabel("Radial direction:"));
+               //// Radial direction:
+               panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Radialdirection")));
                
                m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0);
                
@@ -263,7 +277,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
 
                
                //// Reset button
-               JButton button = new JButton("Reset");
+               JButton button = new JButton(trans.get("ParachuteCfg.but.Reset"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 3a11c74b86da09054bd0ccbd9fd3ba51949cb736..a1c49ef6b237d171690f7827457ca51353ffa3aa 100644 (file)
@@ -18,13 +18,16 @@ import net.sf.openrocket.gui.adaptors.EnumModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.DescriptionArea;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.EngineBlock;
 import net.sf.openrocket.rocketcomponent.RingComponent;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class RingComponentConfig extends RocketComponentConfig {
+       private static final Translator trans = Application.getTranslator();
 
        public RingComponentConfig(RocketComponent component) {
                super(component);
@@ -42,6 +45,7 @@ public class RingComponentConfig extends RocketComponentConfig {
                if (outer != null) {
                        panel.add(new JLabel(outer));
                        
+                       //// OuterRadius
                        od  = new DoubleModel(component,"OuterRadius",2,UnitGroup.UNITS_LENGTH,0);
                        // Diameter = 2*Radius
                        
@@ -54,7 +58,8 @@ public class RingComponentConfig extends RocketComponentConfig {
                        
                        if (od.isAutomaticAvailable()) {
                                JCheckBox check = new JCheckBox(od.getAutomaticAction());
-                               check.setText("Automatic");
+                               //// Automatic
+                               check.setText(trans.get("ringcompcfg.Automatic"));
                                panel.add(check,"skip, span 2, wrap");
                        }
                }
@@ -64,6 +69,7 @@ public class RingComponentConfig extends RocketComponentConfig {
                if (inner != null) {
                        panel.add(new JLabel(inner));
                        
+                       //// InnerRadius
                        m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0);
                        
                        spin = new JSpinner(m.getSpinnerModel());
@@ -79,7 +85,8 @@ public class RingComponentConfig extends RocketComponentConfig {
                        
                        if (m.isAutomaticAvailable()) {
                                JCheckBox check = new JCheckBox(m.getAutomaticAction());
-                               check.setText("Automatic");
+                               //// Automatic
+                               check.setText(trans.get("ringcompcfg.Automatic"));
                                panel.add(check,"skip, span 2, wrap");
                        }
                }
@@ -89,6 +96,7 @@ public class RingComponentConfig extends RocketComponentConfig {
                if (thickness != null) {
                        panel.add(new JLabel(thickness));
                        
+                       //// Thickness
                        m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                        
                        spin = new JSpinner(m.getSpinnerModel());
@@ -104,6 +112,7 @@ public class RingComponentConfig extends RocketComponentConfig {
                if (length != null) {
                        panel.add(new JLabel(length));
                        
+                       //// Length
                        m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                        
                        spin = new JSpinner(m.getSpinnerModel());
@@ -117,7 +126,8 @@ public class RingComponentConfig extends RocketComponentConfig {
                
                ////  Position
                
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel(trans.get("ringcompcfg.Positionrelativeto")));
 
                JComboBox combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -129,8 +139,10 @@ public class RingComponentConfig extends RocketComponentConfig {
                                }));
                panel.add(combo,"spanx 3, growx, wrap");
                
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("ringcompcfg.plus")),"right");
 
+               //// PositionValue
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
@@ -148,10 +160,8 @@ public class RingComponentConfig extends RocketComponentConfig {
                
                if (component instanceof EngineBlock) {
                        final DescriptionArea desc = new DescriptionArea(6);
-                       desc.setText("<html>An <b>engine block</b> stops the motor from moving forwards " +
-                                       "in the motor mount tube.<br><br>In order to add a motor, create a " +
-                                       "<b>body tube</b> or <b>inner tube</b> and mark it as a motor mount in " +
-                                       "the <em>Motor</em> tab.");
+                       //// <html>An <b>engine block</b> stops the motor from moving forwards in the motor mount tube.<br><br>In order to add a motor, create a <b>body tube</b> or <b>inner tube</b> and mark it as a motor mount in the <em>Motor</em> tab.
+                       desc.setText(trans.get("ringcompcfg.EngineBlock.desc"));
                        sub.add(desc, "width 1px, growx, wrap");
                }
                panel.add(sub,"cell 4 0, gapleft paragraph, aligny 0%, spany");
@@ -165,44 +175,51 @@ public class RingComponentConfig extends RocketComponentConfig {
                                "[][65lp::][30lp::]",""));
                
                ////  Radial position
-               JLabel l = new JLabel("Radial distance:");
-               l.setToolTipText("Distance from the rocket centerline");
+               JLabel l = new JLabel(trans.get("ringcompcfg.Radialdistance"));
+               //// Distance from the rocket centerline
+               l.setToolTipText(trans.get("ringcompcfg.Distancefrom"));
                panel.add(l);
                
                DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0);
                
                JSpinner spin = new JSpinner(m.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
-               spin.setToolTipText("Distance from the rocket centerline");
+               //// Distance from the rocket centerline
+               spin.setToolTipText(trans.get("ringcompcfg.Distancefrom"));
                panel.add(spin,"growx");
                
                panel.add(new UnitSelector(m),"growx");
                BasicSlider bs = new BasicSlider(m.getSliderModel(0, 0.1, 1.0));
-               bs.setToolTipText("Distance from the rocket centerline");
+               //// Distance from the rocket centerline
+               bs.setToolTipText(trans.get("ringcompcfg.Distancefrom"));
                panel.add(bs,"w 100lp, wrap");
                
                
                //// Radial direction
-               l = new JLabel("Radial direction:");
-               l.setToolTipText("The radial direction from the rocket centerline");
+               l = new JLabel(trans.get("ringcompcfg.Radialdirection"));
+               //// The radial direction from the rocket centerline
+               l.setToolTipText(trans.get("ringcompcfg.radialdirectionfrom"));
                panel.add(l);
                
                m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0);
                
                spin = new JSpinner(m.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
-               spin.setToolTipText("The radial direction from the rocket centerline");
+               //// The radial direction from the rocket centerline
+               spin.setToolTipText(trans.get("ringcompcfg.radialdirectionfrom"));
                panel.add(spin,"growx");
                
                panel.add(new UnitSelector(m),"growx");
                bs = new BasicSlider(m.getSliderModel(-Math.PI, Math.PI));
-               bs.setToolTipText("The radial direction from the rocket centerline");
+               //// The radial direction from the rocket centerline
+               bs.setToolTipText(trans.get("ringcompcfg.radialdirectionfrom"));
                panel.add(bs,"w 100lp, wrap");
 
                
                //// Reset button
-               JButton button = new JButton("Reset");
-               button.setToolTipText("Reset the component to the rocket centerline");
+               JButton button = new JButton(trans.get("ringcompcfg.but.Reset"));
+               //// Reset the component to the rocket centerline
+               button.setToolTipText(trans.get("ringcompcfg.but.Resetcomponant"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -214,8 +231,8 @@ public class RingComponentConfig extends RocketComponentConfig {
                
                
                DescriptionArea note = new DescriptionArea(2);
-               note.setText("Note: An inner tube will not affect the aerodynamics" +
-                               " of the rocket even if it is located outside of the body tube.");
+               //// Note: An inner tube will not affect the aerodynamics of the rocket even if it is located outside of the body tube.
+               note.setText(trans.get("ringcompcfg.note.desc"));
                panel.add(note, "spanx, growx");
                
                
index 44925a354bff4503e865fe3158e4616a7dcf3f0c..3779f5483876eda4cef9309dc882146f908b6cb6 100644 (file)
@@ -34,6 +34,7 @@ import net.sf.openrocket.gui.components.ColorIcon;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.StyledLabel.Style;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.ComponentAssembly;
 import net.sf.openrocket.rocketcomponent.ExternalComponent;
@@ -41,6 +42,7 @@ import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish;
 import net.sf.openrocket.rocketcomponent.NoseCone;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.GUIUtil;
 import net.sf.openrocket.util.Invalidatable;
@@ -49,6 +51,8 @@ import net.sf.openrocket.util.Prefs;
 
 public class RocketComponentConfig extends JPanel {
        
+       private static final Translator trans = Application.getTranslator();
+       
        protected final RocketComponent component;
        protected final JTabbedPane tabbedPane;
        
@@ -69,25 +73,34 @@ public class RocketComponentConfig extends JPanel {
                setLayout(new MigLayout("fill", "[grow, fill]"));
                this.component = component;
                
-               JLabel label = new JLabel("Component name:");
-               label.setToolTipText("The component name.");
+               //// Component name:
+               JLabel label = new JLabel(trans.get("RocketCompCfg.lbl.Componentname"));
+               //// The component name.
+               label.setToolTipText(trans.get("RocketCompCfg.ttip.Thecomponentname"));
                this.add(label, "split, gapright 10");
                
                componentNameField = new JTextField(15);
                textFieldListener = new TextFieldListener();
                componentNameField.addActionListener(textFieldListener);
                componentNameField.addFocusListener(textFieldListener);
-               componentNameField.setToolTipText("The component name.");
+               //// The component name.
+               componentNameField.setToolTipText(trans.get("RocketCompCfg.ttip.Thecomponentname"));
                this.add(componentNameField, "growx, growy 0, wrap");
                
 
                tabbedPane = new JTabbedPane();
                this.add(tabbedPane, "growx, growy 1, wrap");
                
-               tabbedPane.addTab("Override", null, overrideTab(), "Mass and CG override options");
+               //// Override and Mass and CG override options
+               tabbedPane.addTab(trans.get("RocketCompCfg.tab.Override"), null, overrideTab(), 
+                               trans.get("RocketCompCfg.tab.MassandCGoverride"));
                if (component.isMassive())
-                       tabbedPane.addTab("Figure", null, figureTab(), "Figure style options");
-               tabbedPane.addTab("Comment", null, commentTab(), "Specify a comment for the component");
+                       //// Figure and Figure style options
+                       tabbedPane.addTab(trans.get("RocketCompCfg.tab.Figure"), null, figureTab(), 
+                                       trans.get("RocketCompCfg.tab.Figstyleopt"));
+               //// Comment and Specify a comment for the component
+               tabbedPane.addTab(trans.get("RocketCompCfg.tab.Comment"), null, commentTab(), 
+                               trans.get("RocketCompCfg.tab.Specifyacomment"));
                
                addButtons();
                
@@ -102,14 +115,16 @@ public class RocketComponentConfig extends JPanel {
                
                buttonPanel = new JPanel(new MigLayout("fill, ins 0"));
                
-               massLabel = new StyledLabel("Mass: ", -1);
+               //// Mass:
+               massLabel = new StyledLabel(trans.get("RocketCompCfg.lbl.Mass") + " ", -1);
                buttonPanel.add(massLabel, "growx");
                
                for (JButton b : buttons) {
                        buttonPanel.add(b, "right, gap para");
                }
                
-               JButton closeButton = new JButton("Close");
+               //// Close button
+               JButton closeButton = new JButton(trans.get("dlg.but.close"));
                closeButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
@@ -142,19 +157,22 @@ public class RocketComponentConfig extends JPanel {
                
                // Mass label
                if (component.isMassive()) {
-                       String text = "Component mass: ";
+                       //// Component mass:
+                       String text = trans.get("RocketCompCfg.lbl.Componentmass") + " ";
                        text += UnitGroup.UNITS_MASS.getDefaultUnit().toStringUnit(
                                        component.getComponentMass());
                        
                        String overridetext = null;
                        if (component.isMassOverridden()) {
-                               overridetext = "(overridden to " + UnitGroup.UNITS_MASS.getDefaultUnit().
+                               //// (overridden to 
+                               overridetext = trans.get("RocketCompCfg.lbl.overriddento")+" " + UnitGroup.UNITS_MASS.getDefaultUnit().
                                                toStringUnit(component.getOverrideMass()) + ")";
                        }
                        
                        for (RocketComponent c = component.getParent(); c != null; c = c.getParent()) {
                                if (c.isMassOverridden() && c.getOverrideSubcomponents()) {
-                                       overridetext = "(overridden by " + c.getName() + ")";
+                                       ///// (overridden by
+                                       overridetext = trans.get("RocketCompCfg.lbl.overriddenby")+" " + c.getName() + ")";
                                }
                        }
                        
@@ -169,25 +187,30 @@ public class RocketComponentConfig extends JPanel {
        
        
        protected JPanel materialPanel(JPanel panel, Material.Type type) {
-               return materialPanel(panel, type, "Component material:", "Component finish:");
+               ////Component material: and Component finish:
+               return materialPanel(panel, type, trans.get("RocketCompCfg.lbl.Componentmaterial"),
+                               trans.get("RocketCompCfg.lbl.Componentfinish"));
        }
        
        protected JPanel materialPanel(JPanel panel, Material.Type type,
                        String materialString, String finishString) {
                JLabel label = new JLabel(materialString);
-               label.setToolTipText("The component material affects the weight of the component.");
+               //// The component material affects the weight of the component.
+               label.setToolTipText(trans.get("RocketCompCfg.lbl.ttip.componentmaterialaffects"));
                panel.add(label, "spanx 4, wrap rel");
                
                JComboBox combo = new JComboBox(new MaterialModel(panel, component, type));
-               combo.setToolTipText("The component material affects the weight of the component.");
+               //// The component material affects the weight of the component.
+               combo.setToolTipText(trans.get("RocketCompCfg.combo.ttip.componentmaterialaffects"));
                panel.add(combo, "spanx 4, growx, wrap paragraph");
                
 
                if (component instanceof ExternalComponent) {
                        label = new JLabel(finishString);
-                       String tip = "<html>The component finish affects the aerodynamic drag of the "
-                                       + "component.<br>"
-                                       + "The value indicated is the average roughness height of the surface.";
+                       ////<html>The component finish affects the aerodynamic drag of the component.<br>
+                       String tip = trans.get("RocketCompCfg.lbl.longA1")
+                                       //// The value indicated is the average roughness height of the surface.
+                                       + trans.get("RocketCompCfg.lbl.longA2");
                        label.setToolTipText(tip);
                        panel.add(label, "spanx 4, wmin 220lp, wrap rel");
                        
@@ -195,8 +218,10 @@ public class RocketComponentConfig extends JPanel {
                        combo.setToolTipText(tip);
                        panel.add(combo, "spanx 4, growx, split");
                        
-                       JButton button = new JButton("Set for all");
-                       button.setToolTipText("Set this finish for all components of the rocket.");
+                       //// Set for all
+                       JButton button = new JButton(trans.get("RocketCompCfg.but.Setforall"));
+                       //// Set this finish for all components of the rocket.
+                       button.setToolTipText(trans.get("RocketCompCfg.but.ttip.Setforall"));
                        button.addActionListener(new ActionListener() {
                                @Override
                                public void actionPerformed(ActionEvent e) {
@@ -232,8 +257,8 @@ public class RocketComponentConfig extends JPanel {
        private JPanel overrideTab() {
                JPanel panel = new JPanel(new MigLayout("align 50% 20%, fillx, gap rel unrel",
                                "[][65lp::][30lp::][]", ""));
-               
-               panel.add(new StyledLabel("Override the mass or center of gravity of the " +
+               //// Override the mass or center of gravity of the
+               panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.Overridemassorcenter") + " " +
                                component.getComponentName() + ":", Style.BOLD), "spanx, wrap 20lp");
                
                JCheckBox check;
@@ -244,7 +269,8 @@ public class RocketComponentConfig extends JPanel {
                ////  Mass
                bm = new BooleanModel(component, "MassOverridden");
                check = new JCheckBox(bm);
-               check.setText("Override mass:");
+               //// Override mass:
+               check.setText(trans.get("RocketCompCfg.checkbox.Overridemass"));
                panel.add(check, "growx 1, gapright 20lp");
                
                DoubleModel m = new DoubleModel(component, "OverrideMass", UnitGroup.UNITS_MASS, 0);
@@ -266,7 +292,8 @@ public class RocketComponentConfig extends JPanel {
                ////  CG override
                bm = new BooleanModel(component, "CGOverridden");
                check = new JCheckBox(bm);
-               check.setText("Override center of gravity:");
+               //// Override center of gravity:"
+               check.setText(trans.get("RocketCompCfg.checkbox.Overridecenterofgrav"));
                panel.add(check, "growx 1, gapright 20lp");
                
                m = new DoubleModel(component, "OverrideCGX", UnitGroup.UNITS_LENGTH, 0);
@@ -303,12 +330,14 @@ public class RocketComponentConfig extends JPanel {
                // Override subcomponents checkbox
                bm = new BooleanModel(component, "OverrideSubcomponents");
                check = new JCheckBox(bm);
-               check.setText("Override mass and CG of all subcomponents");
+               //// Override mass and CG of all subcomponents
+               check.setText(trans.get("RocketCompCfg.checkbox.OverridemassandCG"));
                panel.add(check, "gap para, spanx, wrap para");
                
-
-               panel.add(new StyledLabel("<html>The overridden mass does not include motors.<br>" +
-                               "The center of gravity is measured from the front end of the " +
+               //// <html>The overridden mass does not include motors.<br>
+               panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.longB1") +
+                               //// The center of gravity is measured from the front end of the
+                               trans.get("RocketCompCfg.lbl.longB2") +" " +
                                component.getComponentName().toLowerCase() + ".", -1),
                                "spanx, wrap, gap para, height 0::30lp");
                
@@ -319,7 +348,8 @@ public class RocketComponentConfig extends JPanel {
        private JPanel commentTab() {
                JPanel panel = new JPanel(new MigLayout("fill"));
                
-               panel.add(new StyledLabel("Comments on the " + component.getComponentName() + ":",
+               //// Comments on the
+               panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.Commentsonthe") +" " + component.getComponentName() + ":",
                                Style.BOLD), "wrap");
                
                // TODO: LOW:  Changes in comment from other sources not reflected in component
@@ -340,10 +370,11 @@ public class RocketComponentConfig extends JPanel {
        private JPanel figureTab() {
                JPanel panel = new JPanel(new MigLayout("align 20% 20%"));
                
-               panel.add(new StyledLabel("Figure style:", Style.BOLD), "wrap para");
+               //// Figure style:
+               panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.Figurestyle"), Style.BOLD), "wrap para");
                
-
-               panel.add(new JLabel("Component color:"), "gapleft para, gapright 10lp");
+               //// Component color:
+               panel.add(new JLabel(trans.get("RocketCompCfg.lbl.Componentcolor")), "gapleft para, gapright 10lp");
                
                colorButton = new JButton(new ColorIcon(getColor()));
                colorButton.addActionListener(new ActionListener() {
@@ -354,7 +385,8 @@ public class RocketComponentConfig extends JPanel {
                                        c = Prefs.getDefaultColor(component.getClass());
                                }
                                
-                               c = JColorChooser.showDialog(tabbedPane, "Choose color", c);
+                               //// Choose color
+                               c = JColorChooser.showDialog(tabbedPane, trans.get("RocketCompCfg.lbl.Choosecolor"), c);
                                if (c != null) {
                                        component.setColor(c);
                                }
@@ -362,7 +394,8 @@ public class RocketComponentConfig extends JPanel {
                });
                panel.add(colorButton, "gapright 10lp");
                
-               colorDefault = new JCheckBox("Use default color");
+               //// Use default color
+               colorDefault = new JCheckBox(trans.get("RocketCompCfg.checkbox.Usedefaultcolor"));
                if (component.getColor() == null)
                        colorDefault.setSelected(true);
                colorDefault.addActionListener(new ActionListener() {
@@ -376,18 +409,19 @@ public class RocketComponentConfig extends JPanel {
                });
                panel.add(colorDefault, "wrap para");
                
-
-               panel.add(new JLabel("Component line style:"), "gapleft para, gapright 10lp");
+               //// Component line style:
+               panel.add(new JLabel(trans.get("RocketCompCfg.lbl.Complinestyle")), "gapleft para, gapright 10lp");
                
                LineStyle[] list = new LineStyle[LineStyle.values().length + 1];
                System.arraycopy(LineStyle.values(), 0, list, 1, LineStyle.values().length);
                
                JComboBox combo = new JComboBox(new EnumModel<LineStyle>(component, "LineStyle",
-                               list, "Default style"));
+                               //// Default style
+                               list, trans.get("LineStyle.Defaultstyle")));
                panel.add(combo, "spanx 2, growx, wrap 50lp");
                
-
-               JButton button = new JButton("Save as default style");
+               //// Save as default style
+               JButton button = new JButton(trans.get("RocketCompCfg.but.Saveasdefstyle"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -432,11 +466,13 @@ public class RocketComponentConfig extends JPanel {
                if (!(component instanceof NoseCone)) {
                        sub = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", ""));
                        
-                       sub.setBorder(BorderFactory.createTitledBorder("Fore shoulder"));
+                       //// Fore shoulder
+                       sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.border.Foreshoulder")));
                        
 
                        ////  Radius
-                       sub.add(new JLabel("Diameter:"));
+                       //// Diameter:
+                       sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Diameter")));
                        
                        m = new DoubleModel(component, "ForeShoulderRadius", 2, UnitGroup.UNITS_LENGTH, 0);
                        m2 = new DoubleModel(component, "ForeRadius", 2, UnitGroup.UNITS_LENGTH);
@@ -449,8 +485,8 @@ public class RocketComponentConfig extends JPanel {
                        sub.add(new BasicSlider(m.getSliderModel(m0, m2)), "w 100lp, wrap");
                        
 
-                       ////  Length
-                       sub.add(new JLabel("Length:"));
+                       ////  Length:
+                       sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Length")));
                        
                        m = new DoubleModel(component, "ForeShoulderLength", UnitGroup.UNITS_LENGTH, 0);
                        
@@ -462,8 +498,8 @@ public class RocketComponentConfig extends JPanel {
                        sub.add(new BasicSlider(m.getSliderModel(0, 0.02, 0.2)), "w 100lp, wrap");
                        
 
-                       ////  Thickness
-                       sub.add(new JLabel("Thickness:"));
+                       ////  Thickness:
+                       sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Thickness")));
                        
                        m = new DoubleModel(component, "ForeShoulderThickness", UnitGroup.UNITS_LENGTH, 0);
                        m2 = new DoubleModel(component, "ForeShoulderRadius", UnitGroup.UNITS_LENGTH);
@@ -479,8 +515,10 @@ public class RocketComponentConfig extends JPanel {
                        ////  Capped
                        bm = new BooleanModel(component, "ForeShoulderCapped");
                        check = new JCheckBox(bm);
-                       check.setText("End capped");
-                       check.setToolTipText("Whether the end of the shoulder is capped.");
+                       //// End capped
+                       check.setText(trans.get("RocketCompCfg.checkbox.Endcapped"));
+                       //// Whether the end of the shoulder is capped.
+                       check.setToolTipText(trans.get("RocketCompCfg.ttip.Endcapped"));
                        sub.add(check, "spanx");
                        
 
@@ -492,13 +530,16 @@ public class RocketComponentConfig extends JPanel {
                sub = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", ""));
                
                if (component instanceof NoseCone)
-                       sub.setBorder(BorderFactory.createTitledBorder("Nose cone shoulder"));
+                       //// Nose cone shoulder
+                       sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.title.Noseconeshoulder")));
                else
-                       sub.setBorder(BorderFactory.createTitledBorder("Aft shoulder"));
+                       //// Aft shoulder
+                       sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.title.Aftshoulder")));
                
 
                ////  Radius
-               sub.add(new JLabel("Diameter:"));
+               //// Diameter:
+               sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Diameter")));
                
                m = new DoubleModel(component, "AftShoulderRadius", 2, UnitGroup.UNITS_LENGTH, 0);
                m2 = new DoubleModel(component, "AftRadius", 2, UnitGroup.UNITS_LENGTH);
@@ -511,8 +552,8 @@ public class RocketComponentConfig extends JPanel {
                sub.add(new BasicSlider(m.getSliderModel(m0, m2)), "w 100lp, wrap");
                
 
-               ////  Length
-               sub.add(new JLabel("Length:"));
+               ////  Length:
+               sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Length")));
                
                m = new DoubleModel(component, "AftShoulderLength", UnitGroup.UNITS_LENGTH, 0);
                
@@ -524,8 +565,8 @@ public class RocketComponentConfig extends JPanel {
                sub.add(new BasicSlider(m.getSliderModel(0, 0.02, 0.2)), "w 100lp, wrap");
                
 
-               ////  Thickness
-               sub.add(new JLabel("Thickness:"));
+               ////  Thickness:
+               sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Thickness")));
                
                m = new DoubleModel(component, "AftShoulderThickness", UnitGroup.UNITS_LENGTH, 0);
                m2 = new DoubleModel(component, "AftShoulderRadius", UnitGroup.UNITS_LENGTH);
@@ -541,8 +582,10 @@ public class RocketComponentConfig extends JPanel {
                ////  Capped
                bm = new BooleanModel(component, "AftShoulderCapped");
                check = new JCheckBox(bm);
-               check.setText("End capped");
-               check.setToolTipText("Whether the end of the shoulder is capped.");
+               //// End capped
+               check.setText(trans.get("RocketCompCfg.checkbox.Endcapped"));
+               //// Whether the end of the shoulder is capped.
+               check.setToolTipText(trans.get("RocketCompCfg.ttip.Endcapped"));
                sub.add(check, "spanx");
                
 
index cf62fd08b8301f5cf8b6e8c0a70183afba3484d6..5617fa09c3368c797a56762d81966104f9f08812 100644 (file)
@@ -11,11 +11,14 @@ import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 
 import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.GUIUtil;
 
 public class RocketConfig extends RocketComponentConfig {
+       private static final Translator trans = Application.getTranslator();
        
        private TextFieldListener textFieldListener;
        
@@ -32,11 +35,12 @@ public class RocketConfig extends RocketComponentConfig {
                this.removeAll();
                setLayout(new MigLayout("fill"));
                
-               this.add(new JLabel("Design name:"), "top, pad 4lp, gapright 10lp");
+               //// Design name:
+               this.add(new JLabel(trans.get("RocketCfg.lbl.Designname")), "top, pad 4lp, gapright 10lp");
                this.add(componentNameField, "growx, wrap para");
                
-
-               this.add(new JLabel("Designer:"), "top, pad 4lp, gapright 10lp");
+               //// Designer:
+               this.add(new JLabel(trans.get("RocketCfg.lbl.Designer")), "top, pad 4lp, gapright 10lp");
                
                textFieldListener = new TextFieldListener();
                designerTextArea = new JTextArea(rocket.getDesigner());
@@ -47,12 +51,12 @@ public class RocketConfig extends RocketComponentConfig {
                designerTextArea.addFocusListener(textFieldListener);
                this.add(new JScrollPane(designerTextArea), "wmin 400lp, height 60lp:60lp:, grow 30, wrap para");
                
-
-               this.add(new JLabel("Comments:"), "top, pad 4lp, gapright 10lp");
+               //// Comments:
+               this.add(new JLabel(trans.get("RocketCfg.lbl.Comments")), "top, pad 4lp, gapright 10lp");
                this.add(new JScrollPane(commentTextArea), "wmin 400lp, height 155lp:155lp:, grow 100, wrap para");
                
-
-               this.add(new JLabel("Revision history:"), "top, pad 4lp, gapright 10lp");
+               //// Revision history:
+               this.add(new JLabel(trans.get("RocketCfg.lbl.Material")), "top, pad 4lp, gapright 10lp");
                revisionTextArea = new JTextArea(rocket.getRevision());
                revisionTextArea.setLineWrap(true);
                revisionTextArea.setWrapStyleWord(true);
index e3b1ba53e15ee15c816f35c165fcc443f0fa3bef..0a21fc4c797a504e257b73e47f64734f69bc010a 100644 (file)
@@ -12,12 +12,14 @@ import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.adaptors.EnumModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class ShockCordConfig extends RocketComponentConfig {
-
+       private static final Translator trans = Application.getTranslator();
 
        public ShockCordConfig(RocketComponent component) {
                super(component);
@@ -32,7 +34,8 @@ public class ShockCordConfig extends RocketComponentConfig {
                //////  Left side
                
                // Cord length
-               label = new JLabel("Shock cord length");
+               //// Shock cord length
+               label = new JLabel(trans.get("ShockCordCfg.lbl.Shockcordlength"));
                panel.add(label);
                
                m = new DoubleModel(component,"CordLength",UnitGroup.UNITS_LENGTH,0);
@@ -46,7 +49,8 @@ public class ShockCordConfig extends RocketComponentConfig {
                
 
                // Material
-               materialPanel(panel, Material.Type.LINE, "Shock cord material:", null);
+               //// Shock cord material:
+               materialPanel(panel, Material.Type.LINE, trans.get("ShockCordCfg.lbl.Shockcordmaterial"), null);
                
 
                
@@ -56,8 +60,8 @@ public class ShockCordConfig extends RocketComponentConfig {
                
                
                ////  Position
-               
-               panel2.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Posrelativeto")));
 
                JComboBox combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -69,7 +73,8 @@ public class ShockCordConfig extends RocketComponentConfig {
                                }));
                panel2.add(combo,"spanx, growx, wrap");
                
-               panel2.add(new JLabel("plus"),"right");
+               //// plus
+               panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.plus")),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -84,7 +89,8 @@ public class ShockCordConfig extends RocketComponentConfig {
 
 
                ////  Spatial length
-               panel2.add(new JLabel("Packed length:"));
+               //// Packed length:
+               panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Packedlength")));
                
                m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -97,7 +103,8 @@ public class ShockCordConfig extends RocketComponentConfig {
                
                
                //// Tube diameter
-               panel2.add(new JLabel("Packed diameter:"));
+               //// Packed diameter:
+               panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Packeddiam")));
 
                DoubleModel od  = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -111,8 +118,8 @@ public class ShockCordConfig extends RocketComponentConfig {
 
                
                
-               
-               tabbedPane.insertTab("General", null, panel, "General properties", 0);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("ShockCordCfg.tab.General"), null, panel, trans.get("ShockCordCfg.tab.ttip.General"), 0);
 //             tabbedPane.insertTab("Radial position", null, positionTab(), 
 //                             "Radial position configuration", 1);
                tabbedPane.setSelectedIndex(0);
index fbb24806fdcf41200fd3db69a904c7f44b0ae43f..67160b8168ba3eed87d4ff186bca4c4d4adf4e88 100644 (file)
@@ -3,19 +3,28 @@ package net.sf.openrocket.gui.configdialog;
 
 import javax.swing.JPanel;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 
 
 
 public class SleeveConfig extends RingComponentConfig {
-
+       private static final Translator trans = Application.getTranslator();
+       
        public SleeveConfig(RocketComponent c) {
                super(c);
                
                JPanel tab;
-               
-               tab = generalTab("Outer diameter:", "Inner diameter:", "Wall thickness:", "Length:");
-               tabbedPane.insertTab("General", null, tab, "General properties", 0);
+               //// Outer diameter:
+               //// Inner diameter:
+               //// Wall thickness:
+               //// Length:
+               tab = generalTab(trans.get("SleeveCfg.tab.Outerdiam"), trans.get("SleeveCfg.tab.Innerdiam"), 
+                               trans.get("SleeveCfg.tab.Wallthickness"), trans.get("SleeveCfg.tab.Length"));
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("SleeveCfg.tab.General"), null, tab, 
+                               trans.get("SleeveCfg.tab.Generalproperties"), 0);
                tabbedPane.setSelectedIndex(0);
        }
        
index 5f94bbb9db1e8a1cc6a4a40ac1ba7d49533033f1..42648637f4ac71123c1466334622a58300c75018 100644 (file)
@@ -20,14 +20,17 @@ import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.HtmlLabel;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.MassComponent;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.MotorMount.IgnitionEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class StreamerConfig extends RecoveryDeviceConfig {
-
+       private static final Translator trans = Application.getTranslator();
+       
        public StreamerConfig(final RocketComponent component) {
                super(component);
 
@@ -36,8 +39,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]",""));
                
                
-               
-               panel.add(new JLabel("Strip length:"));
+               //// Strip length:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striplength")));
                
                DoubleModel m = new DoubleModel(component,"StripLength",UnitGroup.UNITS_LENGTH,0);
                
@@ -47,8 +50,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                panel.add(new UnitSelector(m),"growx");
                panel.add(new BasicSlider(m.getSliderModel(0, 0.6, 1.5)),"w 100lp, wrap");
 
-               
-               panel.add(new JLabel("Strip width:"));
+               //// Strip width:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Stripwidth")));
                
                m = new DoubleModel(component,"StripWidth",UnitGroup.UNITS_LENGTH,0);
                
@@ -60,8 +63,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
 
                
                
-
-               panel.add(new JLabel("Strip area:"));
+               //// Strip area:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striparea")));
                
                m = new DoubleModel(component,"Area",UnitGroup.UNITS_AREA,0);
                
@@ -71,8 +74,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                panel.add(new UnitSelector(m),"growx");
                panel.add(new BasicSlider(m.getSliderModel(0, 0.04, 0.25)),"w 100lp, wrap");
 
-               
-               panel.add(new JLabel("Aspect ratio:"));
+               //// Aspect ratio:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Aspectratio")));
                
                m = new DoubleModel(component,"AspectRatio",UnitGroup.UNITS_NONE,0);
                
@@ -83,20 +86,24 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                panel.add(new BasicSlider(m.getSliderModel(2, 15)),"skip, w 100lp, wrap 20lp");
 
                
-               
-               panel.add(new JLabel("Material:"));
+               //// Material:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Material")));
                
                JComboBox combo = new JComboBox(new MaterialModel(panel, component, 
                                Material.Type.SURFACE));
-               combo.setToolTipText("The component material affects the weight of the component.");
+               //// The component material affects the weight of the component.
+               combo.setToolTipText(trans.get("StreamerCfg.combo.ttip.MaterialModel"));
                panel.add(combo,"spanx 3, growx, wrap 20lp");
 
                
                
                // CD
-               JLabel label = new HtmlLabel("<html>Drag coefficient C<sub>D</sub>:");
-               String tip = "<html>The drag coefficient relative to the total area of the streamer.<br>" +
-                               "A larger drag coefficient yields a slowed descent rate.";
+               //// <html>Drag coefficient C<sub>D</sub>:
+               JLabel label = new HtmlLabel(trans.get("StreamerCfg.lbl.longA1"));
+               //// <html>The drag coefficient relative to the total area of the streamer.<br>
+               String tip = trans.get("StreamerCfg.lbl.longB1") +
+                               //// "A larger drag coefficient yields a slowed descent rate.
+               trans.get("StreamerCfg.lbl.longB2");
                label.setToolTipText(tip);
                panel.add(label);
                
@@ -108,10 +115,12 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                panel.add(spin,"growx");
                
                JCheckBox check = new JCheckBox(m.getAutomaticAction());
-               check.setText("Automatic");
+               //// Automatic
+               check.setText(trans.get("StreamerCfg.lbl.Automatic"));
                panel.add(check,"skip, span, wrap");
                
-               panel.add(new StyledLabel("The drag coefficient is relative to the area of the streamer.",
+               //// The drag coefficient is relative to the area of the streamer.
+               panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"),
                                -2), "span, wrap");
                
                
@@ -123,8 +132,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                
                
                //// Position
-
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Posrelativeto")));
 
                combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -136,7 +145,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                                }));
                panel.add(combo,"spanx, growx, wrap");
                
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.plus")),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -150,8 +160,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                                "w 100lp, wrap");
 
 
-               ////  Spatial length
-               panel.add(new JLabel("Packed length:"));
+               ////  Spatial length:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Packedlength")));
                
                m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -164,7 +174,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                
                
                //// Tube diameter
-               panel.add(new JLabel("Packed diameter:"));
+               //// Packed diameter:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Packeddiam")));
 
                DoubleModel od  = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -178,24 +189,26 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                
                
                //// Deployment
-
-               panel.add(new JLabel("Deploys at:"),"");
+               //// Deploys at:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Deploysat")),"");
                
                combo = new JComboBox(new EnumModel<IgnitionEvent>(component, "DeployEvent"));
                panel.add(combo,"spanx 3, growx, wrap");
                
                // ... and delay
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.plus")),"right");
                
                m = new DoubleModel(component,"DeployDelay",0);
                spin = new JSpinner(m.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
                panel.add(spin,"spanx, split");
                
-               panel.add(new JLabel("seconds"),"wrap paragraph");
+               //// seconds
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.seconds")),"wrap paragraph");
 
-               // Altitude
-               label = new JLabel("Altitude:");
+               // Altitude:
+               label = new JLabel(trans.get("StreamerCfg.lbl.Altitude"));
                altitudeComponents.add(label);
                panel.add(label);
                
@@ -216,10 +229,13 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                primary.add(panel, "grow");
                
                updateFields();
-
-               tabbedPane.insertTab("General", null, primary, "General properties", 0);
-               tabbedPane.insertTab("Radial position", null, positionTab(), 
-                               "Radial position configuration", 1);
+               
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("StreamerCfg.tab.General"), null, primary, 
+                               trans.get("StreamerCfg.tab.ttip.General"), 0);
+               //// Radial position and Radial position configuration
+               tabbedPane.insertTab(trans.get("StreamerCfg.tab.Radialpos"), null, positionTab(), 
+                               trans.get("StreamerCfg.tab.ttip.Radialpos"), 1);
                tabbedPane.setSelectedIndex(0);
        }
        
@@ -231,7 +247,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]",""));
                
                ////  Radial position
-               panel.add(new JLabel("Radial distance:"));
+               //// Radial distance:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Radialdistance")));
                
                DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0);
                
@@ -244,7 +261,8 @@ public class StreamerConfig extends RecoveryDeviceConfig {
                
                
                //// Radial direction
-               panel.add(new JLabel("Radial direction:"));
+               //// Radial direction:
+               panel.add(new JLabel(trans.get("StreamerCfg.lbl.Radialdirection")));
                
                m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0);
                
@@ -257,7 +275,7 @@ public class StreamerConfig extends RecoveryDeviceConfig {
 
                
                //// Reset button
-               JButton button = new JButton("Reset");
+               JButton button = new JButton(trans.get("StreamerCfg.but.Reset"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 2230979b6df0064129c09ebc253b9de01aac3ef1..2b1bb6f32158076ecf8f46612c89f5a2d2c71ad1 100644 (file)
@@ -3,19 +3,30 @@ package net.sf.openrocket.gui.configdialog;
 
 import javax.swing.JPanel;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 
 
 
 public class ThicknessRingComponentConfig extends RingComponentConfig {
-
+       private static final Translator trans = Application.getTranslator();
+       
        public ThicknessRingComponentConfig(RocketComponent c) {
                super(c);
                
                JPanel tab;
                
-               tab = generalTab("Outer diameter:", "Inner diameter:", "Wall thickness:", "Length:");
-               tabbedPane.insertTab("General", null, tab, "General properties", 0);
+               //// Outer diameter:
+               //// Inner diameter:
+               //// Wall thickness:
+               //// Length:
+               tab = generalTab(trans.get("ThicknessRingCompCfg.tab.Outerdiam"), 
+                               trans.get("ThicknessRingCompCfg.tab.Innerdiam"),
+                               trans.get("ThicknessRingCompCfg.tab.Wallthickness"), trans.get("ThicknessRingCompCfg.tab.Length"));
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("ThicknessRingCompCfg.tab.General"), null, tab, 
+                               trans.get("ThicknessRingCompCfg.tab.Generalprop"), 0);
                tabbedPane.setSelectedIndex(0);
        }
        
index 8f4660b1b23ef03757921f3478379decca55ab86..513c49eb849bf01a032f78e2a01036f6347fddb7 100644 (file)
@@ -17,13 +17,16 @@ import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.DescriptionArea;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.Transition;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class TransitionConfig extends RocketComponentConfig {
 
+       private static final Translator trans = Application.getTranslator();
        private JComboBox typeBox;
        //private JLabel description;
        
@@ -49,8 +52,8 @@ public class TransitionConfig extends RocketComponentConfig {
 
 
                ////  Shape selection
-               
-               panel.add(new JLabel("Transition shape:"));
+               //// Transition shape:
+               panel.add(new JLabel(trans.get("TransitionCfg.lbl.Transitionshape")));
 
                Transition.Shape selected = ((Transition)component).getType();
                Transition.Shape[] typeList = Transition.Shape.values();
@@ -68,14 +71,15 @@ public class TransitionConfig extends RocketComponentConfig {
                });
                panel.add(typeBox,"span, split 2");
 
-
+               //// Clipped
                checkbox = new JCheckBox(new BooleanModel(component,"Clipped"));
-               checkbox.setText("Clipped");
+               //// Clipped
+               checkbox.setText(trans.get("TransitionCfg.checkbox.Clipped"));
                panel.add(checkbox,"wrap");
                
                
-               ////  Shape parameter
-               shapeLabel = new JLabel("Shape parameter:");
+               ////  Shape parameter:
+               shapeLabel = new JLabel(trans.get("TransitionCfg.lbl.Shapeparam"));
                panel.add(shapeLabel);
                
                m = new DoubleModel(component,"ShapeParameter");
@@ -93,7 +97,8 @@ public class TransitionConfig extends RocketComponentConfig {
                
                
                ////  Length
-               panel.add(new JLabel("Transition length:"));
+               //// Transition length:
+               panel.add(new JLabel(trans.get("TransitionCfg.lbl.Transitionlength")));
                
                m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
                
@@ -106,7 +111,8 @@ public class TransitionConfig extends RocketComponentConfig {
                
                
                //// Transition diameter 1
-               panel.add(new JLabel("Fore diameter:"));
+               //// Fore diameter:
+               panel.add(new JLabel(trans.get("TransitionCfg.lbl.Forediam")));
 
                DoubleModel od  = new DoubleModel(component,"ForeRadius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -119,12 +125,14 @@ public class TransitionConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px");
 
                checkbox = new JCheckBox(od.getAutomaticAction());
-               checkbox.setText("Automatic");
+               //// Automatic
+               checkbox.setText(trans.get("TransitionCfg.checkbox.Automatic"));
                panel.add(checkbox,"skip, span 2, wrap");
                
                
                //// Transition diameter 2
-               panel.add(new JLabel("Aft diameter:"));
+               //// Aft diameter:
+               panel.add(new JLabel(trans.get("TransitionCfg.lbl.Aftdiam")));
 
                od  = new DoubleModel(component,"AftRadius",2,UnitGroup.UNITS_LENGTH,0);
                // Diameter = 2*Radius
@@ -137,12 +145,13 @@ public class TransitionConfig extends RocketComponentConfig {
                panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px");
 
                checkbox = new JCheckBox(od.getAutomaticAction());
-               checkbox.setText("Automatic");
+               //// Automatic
+               checkbox.setText(trans.get("TransitionCfg.checkbox.Automatic"));
                panel.add(checkbox,"skip, span 2, wrap");
                
                
-               ////  Wall thickness
-               panel.add(new JLabel("Wall thickness:"));
+               ////  Wall thickness:
+               panel.add(new JLabel(trans.get("TransitionCfg.lbl.Wallthickness")));
                
                m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                
@@ -153,9 +162,10 @@ public class TransitionConfig extends RocketComponentConfig {
                panel.add(new UnitSelector(m),"growx");
                panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 0px");
                
-               
+               //// Filled
                checkbox = new JCheckBox(new BooleanModel(component,"Filled"));
-               checkbox.setText("Filled");
+               //// Filled
+               checkbox.setText(trans.get("TransitionCfg.checkbox.Filled"));
                panel.add(checkbox,"skip, span 2, wrap");
 
                
@@ -176,9 +186,12 @@ public class TransitionConfig extends RocketComponentConfig {
                materialPanel(panel2, Material.Type.BULK);
                panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany");
                
-
-               tabbedPane.insertTab("General", null, panel, "General properties", 0);
-               tabbedPane.insertTab("Shoulder", null, shoulderTab(), "Shoulder properties", 1);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("TransitionCfg.tab.General"), null, panel, 
+                               trans.get("TransitionCfg.tab.Generalproperties"), 0);
+               //// Shoulder and Shoulder properties
+               tabbedPane.insertTab(trans.get("TransitionCfg.tab.Shoulder"), null, shoulderTab(), 
+                               trans.get("TransitionCfg.tab.Shoulderproperties"), 1);
                tabbedPane.setSelectedIndex(0);
        }
        
index 92081be63b3a5c6668e16049772d9d5d34eb6c8e..d4482de14b67569cca82a40f6abef6ed02bb0530 100644 (file)
@@ -15,15 +15,18 @@ import net.sf.openrocket.gui.adaptors.EnumModel;
 import net.sf.openrocket.gui.adaptors.IntegerModel;
 import net.sf.openrocket.gui.components.BasicSlider;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.FinSet;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.TrapezoidFinSet;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 
 public class TrapezoidFinSetConfig extends FinSetConfig {
-
+       private static final Translator trans = Application.getTranslator();
+       
        public TrapezoidFinSetConfig(final RocketComponent component) {
                super(component);
                
@@ -36,22 +39,26 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                
                JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]",""));
                
-               ////  Number of fins
-               JLabel label = new JLabel("Number of fins:");
-               label.setToolTipText("The number of fins in the fin set.");
+               ////  Number of fins:
+               JLabel label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Nbroffins"));
+               //// The number of fins in the fin set.
+               label.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Nbroffins"));
                panel.add(label);
                
                IntegerModel im = new IntegerModel(component,"FinCount",1,8);
                
                spin = new JSpinner(im.getSpinnerModel());
                spin.setEditor(new SpinnerEditor(spin));
-               spin.setToolTipText("The number of fins in the fin set.");
+               //// The number of fins in the fin set.
+               spin.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Nbroffins"));
                panel.add(spin,"growx, wrap");
                
                
                ////  Base rotation
-               label = new JLabel("Fin rotation:");
-               label.setToolTipText("The angle of the first fin in the fin set.");
+               //// Fin rotation:
+               label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Finrotation"));
+               //// The angle of the first fin in the fin set.
+               label.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Finrotation"));
                panel.add(label);
                
                m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE,-Math.PI,Math.PI);
@@ -64,10 +71,10 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                panel.add(new BasicSlider(m.getSliderModel(-Math.PI,Math.PI)),"w 100lp, wrap");
                
                
-               ////  Fin cant
-               label = new JLabel("Fin cant:");
-               label.setToolTipText("The angle that the fins are canted with respect to the rocket " +
-                               "body.");
+               ////  Fin cant:
+               label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Fincant"));
+               //// The angle that the fins are canted with respect to the rocket 
+               label.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Fincant"));
                panel.add(label);
                
                m = new DoubleModel(component, "CantAngle", UnitGroup.UNITS_ANGLE,
@@ -82,8 +89,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                                "w 100lp, wrap");
                
                
-               ////  Root chord
-               panel.add(new JLabel("Root chord:"));
+               ////  Root chord:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Rootchord")));
                
                m  = new DoubleModel(component,"RootChord",UnitGroup.UNITS_LENGTH,0);
                
@@ -96,8 +103,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
 
 
                
-               ////  Tip chord
-               panel.add(new JLabel("Tip chord:"));
+               ////  Tip chord:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Tipchord")));
                
                m = new DoubleModel(component,"TipChord",UnitGroup.UNITS_LENGTH,0);
                
@@ -109,8 +116,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                panel.add(new BasicSlider(m.getSliderModel(0,0.05,0.2)),"w 100lp, wrap");
 
                
-               ////  Height
-               panel.add(new JLabel("Height:"));
+               ////  Height:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Height")));
                
                m = new DoubleModel(component,"Height",UnitGroup.UNITS_LENGTH,0);
                
@@ -123,8 +130,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
        
                
                
-               ////  Sweep
-               panel.add(new JLabel("Sweep length:"));
+               ////  Sweep length:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Sweeplength")));
                
                m = new DoubleModel(component,"Sweep",UnitGroup.UNITS_LENGTH);
                
@@ -140,8 +147,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                panel.add(new BasicSlider(m.getSliderModel(tc,rc)),"w 100lp, wrap");
 
                
-               ////  Sweep angle
-               panel.add(new JLabel("Sweep angle:"));
+               ////  Sweep angle:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Sweepangle")));
                
                m = new DoubleModel(component, "SweepAngle",UnitGroup.UNITS_ANGLE,
                                -TrapezoidFinSet.MAX_SWEEP_ANGLE,TrapezoidFinSet.MAX_SWEEP_ANGLE);
@@ -168,15 +175,15 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
 
                
                
-               ////  Cross section
-               panel.add(new JLabel("Fin cross section:"));
+               ////  Fin cross section:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.FincrossSection")));
                combo = new JComboBox(
                                new EnumModel<FinSet.CrossSection>(component,"CrossSection"));
                panel.add(combo,"span, growx, wrap");
                
 
-               ////  Thickness
-               panel.add(new JLabel("Thickness:"));
+               ////  Thickness:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Thickness")));
                
                m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
                
@@ -189,8 +196,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                
                
                ////  Position
-               
-               panel.add(new JLabel("Position relative to:"));
+               //// Position relative to:
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Posrelativeto")));
 
                combo = new JComboBox(
                                new EnumModel<RocketComponent.Position>(component, "RelativePosition",
@@ -201,8 +208,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                                                RocketComponent.Position.ABSOLUTE
                                }));
                panel.add(combo,"spanx, growx, wrap");
-               
-               panel.add(new JLabel("plus"),"right");
+               //// plus
+               panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.plus")),"right");
 
                m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
                spin = new JSpinner(m.getSpinnerModel());
@@ -225,8 +232,9 @@ public class TrapezoidFinSetConfig extends FinSetConfig {
                
                mainPanel.add(panel,"aligny 20%");
                
-
-               tabbedPane.insertTab("General", null, mainPanel, "General properties", 0);
+               //// General and General properties
+               tabbedPane.insertTab(trans.get("TrapezoidFinSetCfg.tab.General"), null, mainPanel, 
+                               trans.get("TrapezoidFinSetCfg.tab.Generalproperties"), 0);
                tabbedPane.setSelectedIndex(0);
                
                addFinSetButtons();
index 6b8ec1ececf856c71442238a89e63d6f39c53b9b..5eb2fde972b4565e04ae4778abc491dc16100a72 100644 (file)
@@ -12,7 +12,10 @@ import javax.swing.JPanel;
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.gui.components.DescriptionArea;
 import net.sf.openrocket.gui.components.StyledLabel;
+import net.sf.openrocket.gui.components.StyledLabel.Style;
 import net.sf.openrocket.gui.components.URLLabel;
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Chars;
 import net.sf.openrocket.util.GUIUtil;
 import net.sf.openrocket.util.Icons;
@@ -21,11 +24,13 @@ import net.sf.openrocket.util.Prefs;
 public class AboutDialog extends JDialog {
        
        public static final String OPENROCKET_URL = "http://openrocket.sourceforge.net/";
+       private static final Translator trans = Application.getTranslator();
        
        private static final String CREDITS = "<html><center>" +
                        "<font size=\"+1\"><b>OpenRocket has been developed by:</b></font><br><br>" +
                        "Sampo Niskanen (main developer)<br>" +
-                       "Doug Pedrick (RockSim file format, printing)<br><br>" +
+                       "Doug Pedrick (RockSim file format, printing)<br>" +
+                       "Boris du Reau (internationalization, translation lead)<br><br>" +
                        "<b>OpenRocket utilizes the following libraries:</b><br><br>" +
                        "MiG Layout (http://www.miglayout.com/)<br>" +
                        "JFreeChart (http://www.jfree.org/jfreechart/)<br>" +
@@ -38,30 +43,53 @@ public class AboutDialog extends JDialog {
                final String version = Prefs.getVersion();
                
                JPanel panel = new JPanel(new MigLayout("fill"));
+               JPanel sub;
                
-               panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")),
-                               "spany 4, top");
+
+               // OpenRocket logo
+               panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), "top");
+               
+
+               // OpenRocket version info + copyright
+               sub = new JPanel(new MigLayout("fill"));
                
-               panel.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para");
-               panel.add(new StyledLabel("Version " + version, 3), "ax 50%, growy, wrap rel");
+               sub.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para");
+               sub.add(new StyledLabel(trans.get("lbl.version").trim() + " " + version, 3), "ax 50%, growy, wrap rel");
+               sub.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2011 Sampo Niskanen"), "ax 50%, growy, wrap para");
                
-               //              String source = Prefs.getBuildSource();
-               //              if (!Prefs.DEFAULT_BUILD_SOURCE.equalsIgnoreCase(source)) {
-               //                      panel.add(new StyledLabel("Distributed by " + source, -1), 
-               //                                      "ax 50%, growy, wrap para");
-               //              } else {
-               //                      panel.add(new StyledLabel(" ", -1), "ax 50%, growy, wrap para");
-               //              }
+               sub.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para");
+               panel.add(sub, "grow");
                
-               panel.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2011 Sampo Niskanen"),
-                               "ax 50%, growy, wrap para");
+
+               // Translation information (if present)
+               String translation = trans.get("lbl.translation").trim();
+               String translator = trans.get("lbl.translator").trim();
+               String translatorWebsite = trans.get("lbl.translatorWebsite").trim();
+               String translatorIcon = trans.get("lbl.translatorIcon").trim();
                
-               panel.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para");
+               if (translator.length() > 0 || translatorWebsite.length() > 0 || translatorIcon.length() > 0) {
+                       sub = new JPanel(new MigLayout("fill"));
+                       
+                       sub.add(new StyledLabel(translation, Style.BOLD), "ax 50%, growy, wrap para");
+                       
+                       if (translatorIcon.length() > 0) {
+                               sub.add(new JLabel(Icons.loadImageIcon("pix/translators/" + translatorIcon, translator)),
+                                               "ax 50%, growy, wrap para");
+                       }
+                       if (translator.length() > 0) {
+                               sub.add(new JLabel(translator), "ax 50%, growy, wrap rel");
+                       }
+                       if (translatorWebsite.length() > 0) {
+                               sub.add(new URLLabel(translatorWebsite), "ax 50%, growy, wrap para");
+                       }
+                       
+                       panel.add(sub);
+               }
                
 
                DescriptionArea info = new DescriptionArea(5);
                info.setText(CREDITS);
-               panel.add(info, "width 10px, height 100lp, grow, spanx, wrap para");
+               panel.add(info, "newline, width 10px, height 100lp, grow, spanx, wrap para");
                
                //              JTextArea area = new JTextArea(CREATORS);
                //              area.setEditable(false);
@@ -70,7 +98,8 @@ public class AboutDialog extends JDialog {
                //              panel.add(new JScrollPane(area), "width 10px, height 100lp, grow, spanx, wrap para");
                
 
-               JButton close = new JButton("Close");
+               //Close button
+               JButton close = new JButton(trans.get("button.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -88,5 +117,4 @@ public class AboutDialog extends JDialog {
                GUIUtil.setDisposableDialogOptions(this, close);
        }
        
-
 }
index cb51317fc2db595e3bde4f5aba9fc65d687dbe98..9966dbe50ada1695b4d6f331f5e32d7d6794efcf 100644 (file)
@@ -30,6 +30,7 @@ import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.communication.BugReporter;
 import net.sf.openrocket.gui.components.SelectableLabel;
 import net.sf.openrocket.gui.components.StyledLabel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogLevelBufferLogger;
 import net.sf.openrocket.logging.LogLine;
 import net.sf.openrocket.startup.Application;
@@ -41,10 +42,12 @@ import net.sf.openrocket.util.Prefs;
 public class BugReportDialog extends JDialog {
        
        private static final String REPORT_EMAIL = "openrocket-bugs@lists.sourceforge.net";
-       
+       private static final Translator trans = Application.getTranslator();
+
        
        public BugReportDialog(Window parent, String labelText, String message) {
-               super(parent, "Bug report", Dialog.ModalityType.APPLICATION_MODAL);
+               //// Bug report
+               super(parent, trans.get("bugreport.dlg.title"), Dialog.ModalityType.APPLICATION_MODAL);
                
                JPanel panel = new JPanel(new MigLayout("fill"));
                
@@ -55,14 +58,16 @@ public class BugReportDialog extends JDialog {
                label.setMaximumSize(d);
                panel.add(label, "gapleft para, wrap para");
                
-               label = new JLabel("<html>If connected to the Internet, you can simply click " +
-                               "<em>Send bug report</em>.");
+               //// <html>If connected to the Internet, you can simply click 
+               //// <em>Send bug report</em>.
+               label = new JLabel(trans.get("bugreport.dlg.connectedInternet"));
                d = label.getPreferredSize();
                d.width = 100000;
                label.setMaximumSize(d);
                panel.add(label, "gapleft para, wrap");
                
-               panel.add(new JLabel("Otherwise, send the text below to the address: "),
+               //// Otherwise, send the text below to the address:
+               panel.add(new JLabel(trans.get("bugreport.dlg.otherwise") +" "),
                                "gapleft para, split 2, gapright rel");
                panel.add(new SelectableLabel(REPORT_EMAIL), "growx, wrap para");
                
@@ -72,14 +77,12 @@ public class BugReportDialog extends JDialog {
                panel.add(new JScrollPane(textArea), "grow, wrap");
                
 
-               panel.add(new StyledLabel("The information above may be included in a public " +
-                               "bug report.  Make sure it does not contain any sensitive information you " +
-                               "do not want to be made public.", -1), "wrap para");
+               panel.add(new StyledLabel(trans.get("bugreport.lbl.Theinformation"), -1), "wrap para");
                
 
 
-               ////  Close button
-               JButton close = new JButton("Close");
+               ////Close button
+               JButton close = new JButton(trans.get("dlg.but.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -104,9 +107,10 @@ public class BugReportDialog extends JDialog {
                //              }
                
 
-               ////  Send button
-               JButton send = new JButton("Send bug report");
-               send.setToolTipText("Automatically send the bug report to the OpenRocket developers.");
+               ////  Send bug report button
+               JButton send = new JButton(trans.get("bugreport.dlg.but.Sendbugreport"));
+               ////  Automatically send the bug report to the OpenRocket developers.
+               send.setToolTipText(trans.get("bugreport.dlg.but.Sendbugreport.Ttip"));
                send.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -116,18 +120,26 @@ public class BugReportDialog extends JDialog {
                                        BugReporter.sendBugReport(text);
                                        
                                        // Success if we came here
-                                       JOptionPane.showMessageDialog(BugReportDialog.this,
+                                       //bugreport.dlg.successmsg
+                                       /*JOptionPane.showMessageDialog(BugReportDialog.this,
                                                        new Object[] { "Bug report successfully sent.",
                                                                        "Thank you for helping make OpenRocket better!" },
-                                                       "Bug report sent", JOptionPane.INFORMATION_MESSAGE);
+                                                       "Bug report sent", JOptionPane.INFORMATION_MESSAGE);*/
+                                       JOptionPane.showMessageDialog(BugReportDialog.this,
+                                                       new Object[] { trans.get("bugreport.dlg.successmsg1"),
+                                                       trans.get("bugreport.dlg.successmsg2") },
+                                                       trans.get("bugreport.dlg.successmsg3"), JOptionPane.INFORMATION_MESSAGE);
                                        
                                } catch (Exception ex) {
                                        // Sending the message failed.
                                        JOptionPane.showMessageDialog(BugReportDialog.this,
-                                                       new Object[] { "OpenRocket was unable to send the bug report:",
+                                                       //// OpenRocket was unable to send the bug report:
+                                                       new Object[] { trans.get("bugreport.dlg.failedmsg1"),
                                                                        ex.getClass().getSimpleName() + ": " + ex.getMessage(), " ",
-                                                                       "Please send the report manually to " + REPORT_EMAIL },
-                                                       "Error sending report", JOptionPane.ERROR_MESSAGE);
+                                                                       //// Please send the report manually to 
+                                                                       trans.get("bugreport.dlg.failedmsg2") +" " + REPORT_EMAIL },
+                                                                       //// Error sending report
+                                                                       trans.get("bugreport.dlg.failedmsg3"), JOptionPane.ERROR_MESSAGE);
                                }
                        }
                });
@@ -187,10 +199,8 @@ public class BugReportDialog extends JDialog {
                
                BugReportDialog reportDialog =
                                new BugReportDialog(parent,
-                                               "<html><b>You can report a bug in OpenRocket by filling in and submitting " +
-                                                               "the form below.</b><br>" +
-                                                               "You can also report bugs and include attachments on the project " +
-                                                               "web site.", sb.toString());
+                                               //// <html><b>You can report a bug in OpenRocket by filling in and submitting the form below.</b><br>You can also report bugs and include attachments on the project web site.
+                                               trans.get("bugreport.reportDialog.txt"), sb.toString());
                reportDialog.setVisible(true);
        }
        
@@ -248,8 +258,8 @@ public class BugReportDialog extends JDialog {
                sb.append('\n');
                
                BugReportDialog reportDialog =
-                               new BugReportDialog(parent, "<html><b>Please include a short description about " +
-                                               "what you were doing when the exception occurred.</b>", sb.toString());
+                       //// <html><b>Please include a short description about what you were doing when the exception occurred.</b>
+                               new BugReportDialog(parent, trans.get("bugreport.reportDialog.txt2"), sb.toString());
                reportDialog.setVisible(true);
        }
        
index 6fcee21df3870f00c5c763e499f5101b61703a3e..7318d5c74f38921fde84f897d26a9ed492253c8c 100644 (file)
@@ -50,6 +50,7 @@ import net.sf.openrocket.gui.components.StageSelector;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.UnitSelector;
 import net.sf.openrocket.gui.scalefigure.RocketPanel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.masscalc.BasicMassCalculator;
 import net.sf.openrocket.masscalc.MassCalculator;
 import net.sf.openrocket.masscalc.MassCalculator.MassCalcType;
@@ -57,6 +58,7 @@ import net.sf.openrocket.rocketcomponent.Configuration;
 import net.sf.openrocket.rocketcomponent.FinSet;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.Coordinate;
@@ -67,7 +69,8 @@ import net.sf.openrocket.util.Prefs;
 public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
        
        private static ComponentAnalysisDialog singletonDialog = null;
-       
+       private static final Translator trans = Application.getTranslator();
+
 
        private final FlightConditions conditions;
        private final Configuration configuration;
@@ -92,7 +95,9 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
        
        
        public ComponentAnalysisDialog(final RocketPanel rocketPanel) {
-               super(SwingUtilities.getWindowAncestor(rocketPanel), "Component analysis");
+               ////Component analysis
+               super(SwingUtilities.getWindowAncestor(rocketPanel), 
+                               trans.get("componentanalysisdlg.componentanalysis"));
                
                JTable table;
                
@@ -114,12 +119,13 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                rocketPanel.setCPRoll(0);
                roll = new DoubleModel(rocketPanel, "CPRoll", UnitGroup.UNITS_ROLL);
                
-
-               panel.add(new JLabel("Wind direction:"), "width 100lp!");
+               //// Wind direction:
+               panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.winddir")), "width 100lp!");
                panel.add(new UnitSelector(theta, true), "width 50lp!");
                BasicSlider slider = new BasicSlider(theta.getSliderModel(0, 2 * Math.PI));
                panel.add(slider, "growx, split 2");
-               worstToggle = new JToggleButton("Worst");
+               //// Worst button
+               worstToggle = new JToggleButton(trans.get("componentanalysisdlg.ToggleBut.worst"));
                worstToggle.setSelected(true);
                worstToggle.addActionListener(new ActionListener() {
                        @Override
@@ -139,30 +145,34 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
 
                warningList = new JList();
                JScrollPane scrollPane = new JScrollPane(warningList);
-               scrollPane.setBorder(BorderFactory.createTitledBorder("Warnings:"));
+               ////Warnings:
+               scrollPane.setBorder(BorderFactory.createTitledBorder(trans.get("componentanalysisdlg.TitledBorder.warnings")));
                panel.add(scrollPane, "gap paragraph, spany 4, width 300lp!, growy 1, height :100lp:, wrap");
                
-
-               panel.add(new JLabel("Angle of attack:"), "width 100lp!");
+               ////Angle of attack:
+               panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.angleofattack")), "width 100lp!");
                panel.add(new UnitSelector(aoa, true), "width 50lp!");
                panel.add(new BasicSlider(aoa.getSliderModel(0, Math.PI)), "growx, wrap");
                
-               panel.add(new JLabel("Mach number:"), "width 100lp!");
+               //// Mach number:
+               panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.machnumber")), "width 100lp!");
                panel.add(new UnitSelector(mach, true), "width 50lp!");
                panel.add(new BasicSlider(mach.getSliderModel(0, 3)), "growx, wrap");
                
-               panel.add(new JLabel("Roll rate:"), "width 100lp!");
+               //// Roll rate:
+               panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.rollrate")), "width 100lp!");
                panel.add(new UnitSelector(roll, true), "width 50lp!");
                panel.add(new BasicSlider(roll.getSliderModel(-20 * 2 * Math.PI, 20 * 2 * Math.PI)),
                                "growx, wrap paragraph");
                
 
                // Stage and motor selection:
-               
-               panel.add(new JLabel("Active stages:"), "spanx, split, gapafter rel");
+               //// Active stages:
+               panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.activestages")), "spanx, split, gapafter rel");
                panel.add(new StageSelector(configuration), "gapafter paragraph");
                
-               JLabel label = new JLabel("Motor configuration:");
+               //// Motor configuration:
+               JLabel label = new JLabel(trans.get("componentanalysisdlg.lbl.motorconf"));
                label.setHorizontalAlignment(JLabel.RIGHT);
                panel.add(label, "growx, right");
                panel.add(new JComboBox(new MotorConfigurationModel(configuration)), "wrap");
@@ -178,7 +188,8 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                // Create the CP data table
                cpTableModel = new ColumnTableModel(
 
-               new Column("Component") {
+               //// Component
+               new Column(trans.get("componentanalysisdlg.TabStability.Col.Component")) {
                        @Override
                        public Object getValueAt(int row) {
                                RocketComponent c = cpData.get(row).getComponent();
@@ -244,13 +255,16 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                JScrollPane scrollpane = new JScrollPane(table);
                scrollpane.setPreferredSize(new Dimension(600, 200));
                
-               tabbedPane.addTab("Stability", null, scrollpane, "Stability information");
+               //// Stability and Stability information
+               tabbedPane.addTab(trans.get("componentanalysisdlg.TabStability"), 
+                               null, scrollpane, trans.get("componentanalysisdlg.TabStability.ttip"));
                
 
 
                // Create the drag data table
                dragTableModel = new ColumnTableModel(
-                               new Column("Component") {
+                               //// Component
+                               new Column(trans.get("componentanalysisdlg.dragTableModel.Col.Component")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                RocketComponent c = dragData.get(row).getComponent();
@@ -265,25 +279,29 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                                                return 200;
                                        }
                                },
-                               new Column("<html>Pressure C<sub>D</sub>") {
+                               //// <html>Pressure C<sub>D</sub>
+                               new Column(trans.get("componentanalysisdlg.dragTableModel.Col.Pressure")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return dragData.get(row).getPressureCD();
                                        }
                                },
-                               new Column("<html>Base C<sub>D</sub>") {
+                               //// <html>Base C<sub>D</sub>
+                               new Column(trans.get("componentanalysisdlg.dragTableModel.Col.Base")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return dragData.get(row).getBaseCD();
                                        }
                                },
-                               new Column("<html>Friction C<sub>D</sub>") {
+                               //// <html>Friction C<sub>D</sub>
+                               new Column(trans.get("componentanalysisdlg.dragTableModel.Col.friction")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return dragData.get(row).getFrictionCD();
                                        }
                                },
-                               new Column("<html>Total C<sub>D</sub>") {
+                               //// <html>Total C<sub>D</sub>
+                               new Column(trans.get("componentanalysisdlg.dragTableModel.Col.total")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return dragData.get(row).getCD();
@@ -310,14 +328,17 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                scrollpane = new JScrollPane(table);
                scrollpane.setPreferredSize(new Dimension(600, 200));
                
-               tabbedPane.addTab("Drag characteristics", null, scrollpane, "Drag characteristics");
+               //// Drag characteristics and Drag characteristics tooltip
+               tabbedPane.addTab(trans.get("componentanalysisdlg.dragTabchar"), null, scrollpane,
+                               trans.get("componentanalysisdlg.dragTabchar.ttip"));
                
 
 
 
                // Create the roll data table
                rollTableModel = new ColumnTableModel(
-                               new Column("Component") {
+                               //// Component
+                               new Column(trans.get("componentanalysisdlg.rollTableModel.Col.component")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                RocketComponent c = rollData.get(row).getComponent();
@@ -327,19 +348,22 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                                                return c.toString();
                                        }
                                },
-                               new Column("Roll forcing coefficient") {
+                               //// Roll forcing coefficient
+                               new Column(trans.get("componentanalysisdlg.rollTableModel.Col.rollforc")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return rollData.get(row).getCrollForce();
                                        }
                                },
-                               new Column("Roll damping coefficient") {
+                               //// Roll damping coefficient
+                               new Column(trans.get("componentanalysisdlg.rollTableModel.Col.rolldamp")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return rollData.get(row).getCrollDamp();
                                        }
                                },
-                               new Column("<html>Total C<sub>l</sub>") {
+                               //// <html>Total C<sub>l</sub>
+                               new Column(trans.get("componentanalysisdlg.rollTableModel.Col.total")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return rollData.get(row).getCroll();
@@ -362,7 +386,9 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                scrollpane = new JScrollPane(table);
                scrollpane.setPreferredSize(new Dimension(600, 200));
                
-               tabbedPane.addTab("Roll dynamics", null, scrollpane, "Roll dynamics");
+               //// Roll dynamics and Roll dynamics tooltip
+               tabbedPane.addTab(trans.get("componentanalysisdlg.rollTableModel"), null, scrollpane, 
+                               trans.get("componentanalysisdlg.rollTableModel.ttip"));
                
 
 
@@ -397,15 +423,16 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                        }
                });
                
-
-               panel.add(new StyledLabel("Reference length: ", -1),
+               //// Reference length:
+               panel.add(new StyledLabel(trans.get("componentanalysisdlg.lbl.reflenght"), -1),
                                "span, split, gapleft para, gapright rel");
                DoubleModel dm = new DoubleModel(conditions, "RefLength", UnitGroup.UNITS_LENGTH);
                UnitSelector sel = new UnitSelector(dm, true);
                sel.resizeFont(-1);
                panel.add(sel, "gapright para");
                
-               panel.add(new StyledLabel("Reference area: ", -1), "gapright rel");
+               //// Reference area: 
+               panel.add(new StyledLabel(trans.get("componentanalysisdlg.lbl.refarea"), -1), "gapright rel");
                dm = new DoubleModel(conditions, "RefArea", UnitGroup.UNITS_AREA);
                sel = new UnitSelector(dm, true);
                sel.resizeFont(-1);
@@ -431,7 +458,9 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener {
                //              });
                //              panel.add(button,"tag ok");
                
-               button = new JButton("Close");
+               //button = new JButton("Close");
+               //Close button
+               button = new JButton(trans.get("dlg.but.close"));
                button.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                ComponentAnalysisDialog.this.dispose();
index ef22d84509724d5ccfdf42b104da02a40dfda1d2..aad2f47e92dcd1d6a69573c9db317ee4bf21a030 100644 (file)
@@ -18,7 +18,9 @@ import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.gui.adaptors.DoubleModel;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.GUIUtil;
 
 public class CustomMaterialDialog extends JDialog {
@@ -32,7 +34,8 @@ public class CustomMaterialDialog extends JDialog {
        private JSpinner densitySpinner;
        private UnitSelector densityUnit;
        private JCheckBox addBox;
-       
+       private static final Translator trans = Application.getTranslator();
+
        public CustomMaterialDialog(Window parent, Material material, boolean saveOption,
                        String title) {
                this(parent, material, saveOption, title, null);
@@ -41,7 +44,8 @@ public class CustomMaterialDialog extends JDialog {
                
        public CustomMaterialDialog(Window parent, Material material, boolean saveOption,
                        String title, String note) {
-               super(parent, "Custom material", Dialog.ModalityType.APPLICATION_MODAL);
+               //// Custom material
+               super(parent, trans.get("custmatdlg.title.Custommaterial"), Dialog.ModalityType.APPLICATION_MODAL);
                
                this.originalMaterial = material;
                
@@ -58,8 +62,8 @@ public class CustomMaterialDialog extends JDialog {
                }
                
 
-               // Material name
-               panel.add(new JLabel("Material name:"));
+               //// Material name
+               panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialname")));
                nameField = new JTextField(15);
                if (material != null) {
                        nameField.setText(material.getName());
@@ -68,7 +72,7 @@ public class CustomMaterialDialog extends JDialog {
                
                
                // Material type (if not known)
-               panel.add(new JLabel("Material type:"));
+               panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialtype")));
                if (material == null) {
                        typeBox = new JComboBox(Material.Type.values());
                        typeBox.setSelectedItem(Material.Type.BULK);
@@ -85,8 +89,8 @@ public class CustomMaterialDialog extends JDialog {
                }
                
                
-               // Material density
-               panel.add(new JLabel("Material density:"));
+               // Material density:
+               panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialdensity")));
                densitySpinner = new JSpinner();
                panel.add(densitySpinner, "w 70lp");
                densityUnit = new UnitSelector((DoubleModel)null);
@@ -97,11 +101,14 @@ public class CustomMaterialDialog extends JDialog {
                
                // Save option
                if (saveOption) {
-                       addBox = new JCheckBox("Add material to database");
+                       //// Add material to database
+                       addBox = new JCheckBox(trans.get("custmatdlg.checkbox.Addmaterial"));
                        panel.add(addBox,"span, wrap");
                }
                        
-               JButton okButton = new JButton("OK");
+               //// OK button
+               JButton okButton = new JButton(trans.get("dlg.but.ok"));
+               
                okButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -111,7 +118,8 @@ public class CustomMaterialDialog extends JDialog {
                });
                panel.add(okButton,"span, split, tag ok");
                
-               JButton closeButton = new JButton("Cancel");
+               ////  Cancel
+               JButton closeButton = new JButton(trans.get("dlg.but.cancel"));
                closeButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index e3e9d575a7caa2cc979e8eb34974ecf70192af96..1ef299e7e12dada9a396b4c4bb888ac0e42546f9 100644 (file)
@@ -42,6 +42,7 @@ import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.gui.adaptors.Column;
 import net.sf.openrocket.gui.adaptors.ColumnTableModel;
 import net.sf.openrocket.gui.components.SelectableLabel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.DelegatorLogger;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.logging.LogLevel;
@@ -58,7 +59,8 @@ public class DebugLogDialog extends JDialog {
        
        private static final int POLL_TIME = 250;
        private static final String STACK_TRACE_MARK = "\uFF01";
-       
+       private static final Translator trans = Application.getTranslator();
+
        private static final EnumMap<LogLevel, Color> backgroundColors = new EnumMap<LogLevel, Color>(LogLevel.class);
        static {
                for (LogLevel l : LogLevel.values()) {
@@ -101,7 +103,8 @@ public class DebugLogDialog extends JDialog {
        private final JTextArea stackTraceLabel;
        
        public DebugLogDialog(Window parent) {
-               super(parent, "OpenRocket debug log");
+               //// OpenRocket debug log
+               super(parent, trans.get("debuglogdlg.OpenRocketdebuglog"));
                
                // Start listening to log lines
                LogHelper applicationLog = Application.getLogger();
@@ -138,7 +141,8 @@ public class DebugLogDialog extends JDialog {
                JPanel panel = new JPanel(new MigLayout("fill"));
                split.add(panel);
                
-               panel.add(new JLabel("Display log lines:"), "gapright para, split");
+               //// Display log lines:
+               panel.add(new JLabel(trans.get("debuglogdlg.Displayloglines")), "gapright para, split");
                for (LogLevel l : LogLevel.values()) {
                        JCheckBox box = new JCheckBox(l.toString());
                        // By default display DEBUG and above
@@ -153,11 +157,13 @@ public class DebugLogDialog extends JDialog {
                        filterButtons.put(l, box);
                }
                
-               followBox = new JCheckBox("Follow");
+               //// Follow
+               followBox = new JCheckBox(trans.get("debuglogdlg.Follow"));
                followBox.setSelected(true);
                panel.add(followBox, "skip, gapright para, right");
                
-               JButton clear = new JButton("Clear");
+               //// Clear button
+               JButton clear = new JButton(trans.get("debuglogdlg.but.clear"));
                clear.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -185,7 +191,8 @@ public class DebugLogDialog extends JDialog {
                                return 60;
                        }
                },
-                               new Column("Time") {
+                               //// Time
+                               new Column(trans.get("debuglogdlg.col.Time")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return String.format("%.3f", buffer.get(row).getTimestamp() / 1000.0);
@@ -196,7 +203,8 @@ public class DebugLogDialog extends JDialog {
                                                return 60;
                                        }
                                },
-                               new Column("Level") {
+                               //// Level
+                               new Column(trans.get("debuglogdlg.col.Level")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return buffer.get(row).getLevel();
@@ -222,7 +230,8 @@ public class DebugLogDialog extends JDialog {
                                                return 16;
                                        }
                                },
-                               new Column("Location") {
+                               //// Location
+                               new Column(trans.get("debuglogdlg.col.Location")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                TraceException e = buffer.get(row).getTrace();
@@ -238,7 +247,8 @@ public class DebugLogDialog extends JDialog {
                                                return 200;
                                        }
                                },
-                               new Column("Message") {
+                               //// Message
+                               new Column(trans.get("debuglogdlg.col.Message")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return buffer.get(row).getMessage();
@@ -291,26 +301,32 @@ public class DebugLogDialog extends JDialog {
                panel = new JPanel(new MigLayout("fill"));
                split.add(panel);
                
-               panel.add(new JLabel("Log line number:"), "split, gapright rel");
+               //// Log line number:
+               panel.add(new JLabel(trans.get("debuglogdlg.lbl.Loglinenbr")), "split, gapright rel");
                numberLabel = new SelectableLabel();
                panel.add(numberLabel, "width 70lp, gapright para");
                
-               panel.add(new JLabel("Time:"), "split, gapright rel");
+               //// Time:
+               panel.add(new JLabel(trans.get("debuglogdlg.lbl.Time")), "split, gapright rel");
                timeLabel = new SelectableLabel();
                panel.add(timeLabel, "width 70lp, gapright para");
                
-               panel.add(new JLabel("Level:"), "split, gapright rel");
+               //// Level:
+               panel.add(new JLabel(trans.get("debuglogdlg.lbl.Level")), "split, gapright rel");
                levelLabel = new SelectableLabel();
                panel.add(levelLabel, "width 70lp, gapright para");
                
+               //// Location:
                panel.add(new JLabel("Location:"), "split, gapright rel");
                locationLabel = new SelectableLabel();
                panel.add(locationLabel, "growx, wrap unrel");
                
+               //// Log message:
                panel.add(new JLabel("Log message:"), "split, gapright rel");
                messageLabel = new SelectableLabel();
                panel.add(messageLabel, "growx, wrap para");
                
+               //// Stack trace:
                panel.add(new JLabel("Stack trace:"), "wrap rel");
                stackTraceLabel = new JTextArea(8, 80);
                stackTraceLabel.setEditable(false);
@@ -318,7 +334,8 @@ public class DebugLogDialog extends JDialog {
                panel.add(new JScrollPane(stackTraceLabel), "grow");
                
 
-               JButton close = new JButton("Close");
+               //Close button
+               JButton close = new JButton(trans.get("dlg.but.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 87e36e67852418682510f1367e992e63994f9881..88e3b9e640649e1768e15b61368fcb3634f3f3b4 100644 (file)
@@ -6,9 +6,12 @@ import javax.swing.JOptionPane;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.GUIUtil;
 
 public class DetailDialog {
+       private static final Translator trans = Application.getTranslator();
        
        public static void showDetailedMessageDialog(Component parentComponent, Object message,
                        String details, String title, int messageType) {
index 782afb761abdb78305ee8afa22ee778d7745600b..b1ef4a9c60e528c7e67324be7829fef0efff2ce6 100644 (file)
@@ -28,10 +28,12 @@ import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.document.OpenRocketDocument;
 import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog;
 import net.sf.openrocket.gui.main.BasicFrame;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.rocketcomponent.MotorMount;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Chars;
 import net.sf.openrocket.util.GUIUtil;
 
@@ -55,9 +57,11 @@ public class EditMotorConfigurationDialog extends JDialog {
        
        // Positive when user is modifying configuration name
        private int configurationNameModification = 0;
-       
+       private static final Translator trans = Application.getTranslator();
+
        public EditMotorConfigurationDialog(final Rocket rocket, Window parent) {
-               super(parent, "Edit motor configurations");
+               //// Edit motor configurations
+               super(parent, trans.get("edtmotorconfdlg.title.Editmotorconf"));
                
                if (parent != null)
                        this.setModalityType(ModalityType.DOCUMENT_MODAL);
@@ -82,11 +86,12 @@ public class EditMotorConfigurationDialog extends JDialog {
                
 
                ////  Motor mount selection
-               
-               JLabel label = new JLabel("<html><b>Motor mounts:</b>");
+               //// <html><b>Motor mounts:</b>
+               JLabel label = new JLabel(trans.get("edtmotorconfdlg.lbl.Motormounts"));
                panel.add(label, "gapbottom para");
                
-               label = new JLabel("<html>Select which components function as motor mounts:");
+               //// <html>Select which components function as motor mounts:
+               label = new JLabel(trans.get("edtmotorconfdlg.selectcomp"));
                panel.add(label, "ay 100%, w 1px, growx");
                
 
@@ -113,13 +118,14 @@ public class EditMotorConfigurationDialog extends JDialog {
 
 
                //// Motor selection
-               
-               label = new JLabel("<html><b>Motor configurations:</b>");
+               //// <html><b>Motor configurations:</b>
+               label = new JLabel(trans.get("edtmotorconfdlg.lbl.Motorconfig"));
                panel.add(label, "spanx, gapbottom para");
                
-
-               label = new JLabel("Configuration name:");
-               String tip = "Leave name empty for default.";
+               //// Configuration name:
+               label = new JLabel(trans.get("edtmotorconfdlg.lbl.Configname"));
+               //// Leave name empty for default.
+               String tip = trans.get("edtmotorconfdlg.lbl.Leavenamedefault");
                label.setToolTipText(tip);
                panel.add(label, "");
                
@@ -158,7 +164,8 @@ public class EditMotorConfigurationDialog extends JDialog {
                });
                panel.add(configurationNameField, "cell 2 1, gapright para");
                
-               newConfButton = new JButton("New configuration");
+               //// New configuration
+               newConfButton = new JButton(trans.get("edtmotorconfdlg.but.Newconfiguration"));
                newConfButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -170,7 +177,8 @@ public class EditMotorConfigurationDialog extends JDialog {
                });
                panel.add(newConfButton, "cell 3 1");
                
-               removeConfButton = new JButton("Remove configuration");
+               //// Remove configuration
+               removeConfButton = new JButton(trans.get("edtmotorconfdlg.but.Removeconfiguration"));
                removeConfButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -215,8 +223,8 @@ public class EditMotorConfigurationDialog extends JDialog {
                scroll = new JScrollPane(configurationTable);
                panel.add(scroll, "cell 1 2, spanx, w 500lp, h 150lp, grow");
                
-
-               selectMotorButton = new JButton("Select motor");
+               //// Select motor
+               selectMotorButton = new JButton(trans.get("edtmotorconfdlg.but.Selectmotor"));
                selectMotorButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -225,8 +233,8 @@ public class EditMotorConfigurationDialog extends JDialog {
                });
                panel.add(selectMotorButton, "spanx, flowx, split 2, ax 50%");
                
-
-               removeMotorButton = new JButton("Remove motor");
+               //// Remove motor button
+               removeMotorButton = new JButton(trans.get("edtmotorconfdlg.but.removemotor"));
                removeMotorButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -238,8 +246,7 @@ public class EditMotorConfigurationDialog extends JDialog {
 
 
                //// Close button
-               
-               JButton close = new JButton("Close");
+               JButton close = new JButton(trans.get("dlg.but.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -260,7 +267,8 @@ public class EditMotorConfigurationDialog extends JDialog {
                // Undo description
                final OpenRocketDocument document = BasicFrame.findDocument(rocket);
                if (document != null) {
-                       document.startUndo("Edit motor configurations");
+                       //// Edit motor configurations
+                       document.startUndo(trans.get("edtmotorconfdlg.title.Editmotorconf"));
                        this.addWindowListener(new WindowAdapter() {
                                @Override
                                public void windowClosed(WindowEvent e) {
@@ -465,6 +473,7 @@ public class EditMotorConfigurationDialog extends JDialog {
                        MotorMount mount = findMount(column);
                        Motor motor = mount.getMotor(id);
                        if (motor == null)
+                               //// None
                                return "None";
                        
                        String str = motor.getDesignation(mount.getMotorDelay(id));
@@ -479,7 +488,8 @@ public class EditMotorConfigurationDialog extends JDialog {
                @Override
                public String getColumnName(int column) {
                        if (column == 0) {
-                               return "Configuration name";
+                               //// Configuration name
+                               return trans.get("edtmotorconfdlg.lbl.Configname");
                        }
                        
                        MotorMount mount = findMount(column);
index 706f9aa4bf9a06dcc36a6c085e79fb2dba89b5a1..069791ab51a4347cfee9b41389b65c3a31f1bf9a 100644 (file)
@@ -27,6 +27,8 @@ import javax.swing.JScrollPane;
 import javax.swing.ListSelectionModel;
 
 import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.BugException;
 import net.sf.openrocket.util.GUIUtil;
 import net.sf.openrocket.util.JarUtil;
@@ -35,6 +37,8 @@ public class ExampleDesignDialog extends JDialog {
        
        private static final String DIRECTORY = "datafiles/examples/";
        private static final String PATTERN = ".*\\.[oO][rR][kK]$";
+       private static final Translator trans = Application.getTranslator();
+
        private static final FilenameFilter FILTER = new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
@@ -47,11 +51,13 @@ public class ExampleDesignDialog extends JDialog {
        private final JList designSelection;
        
        private ExampleDesignDialog(ExampleDesign[] designs, Window parent) {
-               super(parent, "Open example design", Dialog.ModalityType.APPLICATION_MODAL);
+               //// Open example design
+               super(parent, trans.get("exdesigndlg.lbl.Openexampledesign"), Dialog.ModalityType.APPLICATION_MODAL);
                
                JPanel panel = new JPanel(new MigLayout("fill"));
                
-               panel.add(new JLabel("Select example designs to open:"), "wrap");
+               //// Select example designs to open:
+               panel.add(new JLabel(trans.get("exdesigndlg.lbl.Selectexample")), "wrap");
                
                designSelection = new JList(designs);
                designSelection.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -66,7 +72,8 @@ public class ExampleDesignDialog extends JDialog {
                });
                panel.add(new JScrollPane(designSelection), "grow, wmin 300lp, wrap para");
                
-               JButton openButton = new JButton("Open");
+               //// Open button
+               JButton openButton = new JButton(trans.get("exdesigndlg.but.open"));
                openButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -76,7 +83,8 @@ public class ExampleDesignDialog extends JDialog {
                });
                panel.add(openButton, "split 2, sizegroup buttons, growx");
                
-               JButton cancelButton = new JButton("Cancel");
+               //// Cancel button
+               JButton cancelButton = new JButton(trans.get("dlg.but.cancel"));
                cancelButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -110,8 +118,10 @@ public class ExampleDesignDialog extends JDialog {
                        designs = getDirFileNames();
                }
                if (designs == null || designs.length == 0) {
-                       JOptionPane.showMessageDialog(parent, "Example designs could not be found.",
-                                       "Examples not found", JOptionPane.ERROR_MESSAGE);
+                       //// Example designs could not be found.
+                       JOptionPane.showMessageDialog(parent, trans.get("exdesigndlg.lbl.Exampledesignsnotfound"),
+                                       //// Examples not found
+                                       trans.get("exdesigndlg.lbl.Examplesnotfound"), JOptionPane.ERROR_MESSAGE);
                        return null;
                }
                
index 19ad7fe213c326135e16bf30c7d64b92d7519f65..920e0b47fbe38e14000d21ddd069f507e9469241 100644 (file)
@@ -16,11 +16,14 @@ import javax.swing.JTextArea;
 
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.gui.components.StyledLabel;
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.GUIUtil;
 
 public class LicenseDialog extends JDialog {
        private static final String LICENSE_FILENAME = "LICENSE.TXT";
-       
+       private static final Translator trans = Application.getTranslator();
+
        private static final String DEFAULT_LICENSE_TEXT =
                "\n" +
                "Error:  Unable to load " + LICENSE_FILENAME + "!\n" +
@@ -60,7 +63,8 @@ public class LicenseDialog extends JDialog {
                text.setEditable(false);
                panel.add(new JScrollPane(text),"grow, wrap para");
                
-               JButton close = new JButton("Close");
+               //Close button
+               JButton close = new JButton(trans.get("dlg.but.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index c53a63b3d5bc06cb8e24d8714d5644f50b280325..0edfddae8b46109b0e32b3b4b25635a131b9f8d0 100644 (file)
@@ -12,19 +12,23 @@ import javax.swing.Timer;
 
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.database.ThrustCurveMotorSetDatabase;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.GUIUtil;
 
 public class MotorDatabaseLoadingDialog extends JDialog {
        private static final LogHelper log = Application.getLogger();
-       
+       private static final Translator trans = Application.getTranslator();
+
        
        private MotorDatabaseLoadingDialog(Window parent) {
-               super(parent, "Loading motors", ModalityType.APPLICATION_MODAL);
+               //// Loading motors
+               super(parent, trans.get("MotorDbLoadDlg.title"), ModalityType.APPLICATION_MODAL);
                
                JPanel panel = new JPanel(new MigLayout("fill"));
-               panel.add(new JLabel("Loading motors..."), "wrap para");
+               //// Loading motors...
+               panel.add(new JLabel(trans.get("MotorDbLoadDlg.Loadingmotors")), "wrap para");
                
                JProgressBar progress = new JProgressBar();
                progress.setIndeterminate(true);
index 1d5556ba0c3b734f8af17f651bcde3cefa685071..c820c071e59e7358628c0a2f635b0d3d557eae8d 100644 (file)
@@ -36,6 +36,7 @@ import net.sf.openrocket.gui.print.PrintableContext;
 import net.sf.openrocket.gui.print.TemplateProperties;
 import net.sf.openrocket.gui.print.components.CheckTreeManager;
 import net.sf.openrocket.gui.print.components.RocketPrintTree;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.startup.Application;
@@ -48,17 +49,14 @@ import net.sf.openrocket.util.Prefs;
 public class PrintDialog extends JDialog implements TreeSelectionListener {
        
        private static final LogHelper log = Application.getLogger();
+       private static final Translator trans = Application.getTranslator();
        
-       private static final String SETTINGS_BUTTON_TEXT = "Settings";
-       private static final String PREVIEW_BUTTON_TEXT = "Preview & Print";
-       private static final String SAVE_AS_PDF_BUTTON_TEXT = "Save as PDF";
-       private static final String SHOW_BY_STAGE = "Show By Stage";
+       private final Desktop desktop;
        
        private final RocketPrintTree stagedTree;
        private final RocketPrintTree noStagedTree;
        private OpenRocketDocument document;
        private RocketPrintTree currentTree;
-       private Desktop desktop = null;
        
        private JButton previewButton;
        private JButton saveAsPDF;
@@ -70,7 +68,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
         * @param orDocument the OR rocket container
         */
        public PrintDialog(Window parent, OpenRocketDocument orDocument) {
-               super(parent, "Print or export", ModalityType.APPLICATION_MODAL);
+               super(parent, trans.get("title"), ModalityType.APPLICATION_MODAL);
                
 
                JPanel panel = new JPanel(new MigLayout("fill, gap rel unrel"));
@@ -81,6 +79,8 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                // supported by this particular VM on this particular host
                if (Desktop.isDesktopSupported()) {
                        desktop = Desktop.getDesktop();
+               } else {
+                       desktop = null;
                }
                
                document = orDocument;
@@ -94,7 +94,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                final int stages = rocket.getStageCount();
                
 
-               JLabel label = new JLabel("Select elements to include:");
+               JLabel label = new JLabel(trans.get("lbl.selectElements"));
                panel.add(label, "wrap unrel");
                
                // Create the tree
@@ -114,7 +114,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                
 
                // Checkboxes and buttons
-               final JCheckBox sortByStage = new JCheckBox(SHOW_BY_STAGE);
+               final JCheckBox sortByStage = new JCheckBox(trans.get("checkbox.showByStage"));
                sortByStage.setEnabled(stages > 1);
                sortByStage.setSelected(stages > 1);
                sortByStage.addActionListener(new ActionListener() {
@@ -140,7 +140,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                panel.add(new JPanel(), "growx");
                
 
-               JButton settingsButton = new JButton(SETTINGS_BUTTON_TEXT);
+               JButton settingsButton = new JButton(trans.get("printdlg.but.settings"));
                settingsButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -154,7 +154,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                panel.add(settingsButton, "wrap para");
                
 
-               previewButton = new JButton(PREVIEW_BUTTON_TEXT);
+               previewButton = new JButton(trans.get("but.previewAndPrint"));
                previewButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -165,7 +165,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                panel.add(previewButton, "split, right, gap para");
                
 
-               saveAsPDF = new JButton(SAVE_AS_PDF_BUTTON_TEXT);
+               saveAsPDF = new JButton(trans.get("printdlg.but.saveaspdf"));
                saveAsPDF.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -177,7 +177,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                panel.add(saveAsPDF, "right, gap para");
                
 
-               cancel = new JButton("Cancel");
+               cancel = new JButton(trans.get("button.cancel"));
                cancel.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -295,14 +295,19 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                                File f = generateReport(settings);
                                desktop.open(f);
                        } catch (IOException e) {
-                               log.error("Could not create temporary file for previewing.", e);
-                               JOptionPane.showMessageDialog(this, "Could not create a temporary file for previewing.",
-                                                                                               "Error creating file", JOptionPane.ERROR_MESSAGE);
+                               log.error("Could not open preview.", e);
+                               JOptionPane.showMessageDialog(this, new String[] {
+                                               trans.get("error.preview.desc1"),
+                                               trans.get("error.preview.desc2") },
+                                               trans.get("error.preview.title"),
+                                               JOptionPane.ERROR_MESSAGE);
                        }
                } else {
-                       JOptionPane.showMessageDialog(this,
-                                                                                       "Your environment does not support automatically opening the default PDF viewer.",
-                                                                                       "Error creating file", JOptionPane.INFORMATION_MESSAGE);
+                       JOptionPane.showMessageDialog(this, new String[] {
+                                       trans.get("error.preview.desc1"),
+                                       trans.get("error.preview.desc2") },
+                                       trans.get("error.preview.title"),
+                                       JOptionPane.INFORMATION_MESSAGE);
                }
        }
        
@@ -329,7 +334,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
                        //The description of this filter
                        @Override
                        public String getDescription() {
-                               return "PDF files";
+                               return trans.get("filetypes.pdf");
                        }
                };
                chooser.setFileFilter(filter);
index 939514b050a7ffe0d3cd9eef46cd6cc32adaea40..13fb93b0c83f0908d07ce783bbe8ea9376c0925b 100644 (file)
@@ -15,6 +15,7 @@ import javax.swing.JProgressBar;
 import javax.swing.SwingWorker;
 
 import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.MathUtil;
@@ -30,7 +31,8 @@ import net.sf.openrocket.util.MathUtil;
  */
 public class SwingWorkerDialog extends JDialog implements PropertyChangeListener {
        private static final LogHelper log = Application.getLogger();
-       
+       private static final Translator trans = Application.getTranslator();
+
        /** Number of milliseconds to wait at a time between checking worker status */
        private static final int DELAY = 100;
        
@@ -65,7 +67,8 @@ public class SwingWorkerDialog extends JDialog implements PropertyChangeListener
                progressBar = new JProgressBar();
                panel.add(progressBar, "growx, wrap para");
                
-               JButton cancel = new JButton("Cancel");
+               //// Cancel button
+               JButton cancel = new JButton(trans.get("dlg.but.cancel"));
                cancel.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 02bcfec19bb9b72cd6ea466525b76edac30b1a22..08f72089297fa56ca21f5b01deeb8f727ac717ea 100644 (file)
@@ -15,6 +15,8 @@ import javax.swing.JPanel;
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.communication.UpdateInfo;
 import net.sf.openrocket.gui.components.URLLabel;
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Chars;
 import net.sf.openrocket.util.ComparablePair;
 import net.sf.openrocket.util.GUIUtil;
@@ -23,8 +25,10 @@ import net.sf.openrocket.util.Icons;
 public class UpdateInfoDialog extends JDialog {
        
        private final JCheckBox remind;
+       private static final Translator trans = Application.getTranslator();
 
        public UpdateInfoDialog(UpdateInfo info) {
+               //// OpenRocket update available
                super((Window)null, "OpenRocket update available", ModalityType.APPLICATION_MODAL);
                
                JPanel panel = new JPanel(new MigLayout("fill"));
@@ -33,12 +37,13 @@ public class UpdateInfoDialog extends JDialog {
                panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), 
                                "spany 100, top");
                
-               
+               //// <html><b>OpenRocket version
                panel.add(new JLabel("<html><b>OpenRocket version " + info.getLatestVersion() +
                                " is available!"), "wrap para");
                
                List<ComparablePair<Integer, String>> updates = info.getUpdates();
                if (updates.size() > 0) {
+                       //// Updates include:
                        panel.add(new JLabel("Updates include:"), "wrap rel");
                        
                        Collections.sort(updates);
@@ -55,16 +60,20 @@ public class UpdateInfoDialog extends JDialog {
                        }
                }
 
+               //// Download the new version from:
                panel.add(new JLabel("Download the new version from:"), 
                                "gaptop para, alignx 50%, wrap unrel");
                panel.add(new URLLabel(AboutDialog.OPENROCKET_URL), "alignx 50%, wrap para");
                
+               //// Remind me later
                remind = new JCheckBox("Remind me later");
+               //// Show this update also the next time you start OpenRocket
                remind.setToolTipText("Show this update also the next time you start OpenRocket");
                remind.setSelected(true);
                panel.add(remind);
                
-               JButton button = new JButton("Close");
+               //Close button
+               JButton button = new JButton(trans.get("dlg.but.close"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 2258251f441904044b36ea938a77c892f1993f86..8c6849e981f4d5a28a16e9d30af506083e401bb2 100644 (file)
@@ -14,8 +14,10 @@ import javax.swing.JPanel;
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.gui.dialogs.MotorDatabaseLoadingDialog;
 import net.sf.openrocket.gui.dialogs.motor.thrustcurve.ThrustCurveMotorSelectionPanel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.motor.ThrustCurveMotor;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.GUIUtil;
 
 public class MotorChooserDialog extends JDialog implements CloseableDialog {
@@ -23,7 +25,8 @@ public class MotorChooserDialog extends JDialog implements CloseableDialog {
        private final ThrustCurveMotorSelectionPanel selectionPanel;
        
        private boolean okClicked = false;
-       
+       private static final Translator trans = Application.getTranslator();
+
        
        public MotorChooserDialog(Motor current, double delay, double diameter, Window owner) {
                super(owner, "Select a rocket motor", Dialog.ModalityType.APPLICATION_MODAL);
@@ -40,8 +43,7 @@ public class MotorChooserDialog extends JDialog implements CloseableDialog {
                
 
                // OK / Cancel buttons
-               
-               JButton okButton = new JButton("OK");
+               JButton okButton = new JButton(trans.get("dlg.but.ok"));
                okButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -50,7 +52,8 @@ public class MotorChooserDialog extends JDialog implements CloseableDialog {
                });
                panel.add(okButton, "tag ok, spanx, split");
                
-               JButton cancelButton = new JButton("Cancel");
+               //// Cancel button
+               JButton cancelButton = new JButton(trans.get("dlg.but.cancel"));
                cancelButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 145a9956ece6a084afd4f76206d6cdf11cfbb737..d4cefca2b51275587b1ad8a9add6220b1648f842 100644 (file)
@@ -4,17 +4,22 @@ import java.text.Collator;
 import java.util.Comparator;
 
 import net.sf.openrocket.database.ThrustCurveMotorSet;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.DesignationComparator;
 import net.sf.openrocket.motor.ThrustCurveMotor;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.unit.Value;
 import net.sf.openrocket.unit.ValueComparator;
 
+
 /**
  * Enum defining the table columns.
  */
+
 enum ThrustCurveMotorColumns {
-       MANUFACTURER("Manufacturer", 100) {
+       //// Manufacturer
+       MANUFACTURER("TCurveMotorCol.MANUFACTURER", 100) {
                @Override
                public String getValue(ThrustCurveMotorSet m) {
                        return m.getManufacturer().getDisplayName();
@@ -25,7 +30,8 @@ enum ThrustCurveMotorColumns {
                        return Collator.getInstance();
                }
        },
-       DESIGNATION("Designation") {
+       //// Designation
+       DESIGNATION("TCurveMotorCol.DESIGNATION") {
                @Override
                public String getValue(ThrustCurveMotorSet m) {
                        return m.getDesignation();
@@ -36,7 +42,8 @@ enum ThrustCurveMotorColumns {
                        return new DesignationComparator();
                }
        },
-       TYPE("Type") {
+       //// Type
+       TYPE("TCurveMotorCol.TYPE") {
                @Override
                public String getValue(ThrustCurveMotorSet m) {
                        return m.getType().getName();
@@ -47,7 +54,8 @@ enum ThrustCurveMotorColumns {
                        return Collator.getInstance();
                }
        },
-       DIAMETER("Diameter") {
+       //// Diameter
+       DIAMETER("TCurveMotorCol.DIAMETER") {
                @Override
                public Object getValue(ThrustCurveMotorSet m) {
                        return new Value(m.getDiameter(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
@@ -58,7 +66,8 @@ enum ThrustCurveMotorColumns {
                        return ValueComparator.INSTANCE;
                }
        },
-       LENGTH("Length") {
+       //// Length
+       LENGTH("TCurveMotorCol.LENGTH") {
                @Override
                public Object getValue(ThrustCurveMotorSet m) {
                        return new Value(m.getLength(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
@@ -73,6 +82,7 @@ enum ThrustCurveMotorColumns {
 
        private final String title;
        private final int width;
+       private static final Translator trans = Application.getTranslator();
        
        ThrustCurveMotorColumns(String title) {
                this(title, 50);
@@ -89,7 +99,7 @@ enum ThrustCurveMotorColumns {
        public abstract Comparator<?> getComparator();
        
        public String getTitle() {
-               return title;
+               return trans.get(title);
        }
        
        public int getWidth() {
index 314219a3396bb751bdf1708702eaae0931bacde4..22238caa8f82c90b1c16a6e055a9c17426d4c96a 100644 (file)
@@ -13,7 +13,9 @@ import javax.swing.JDialog;
 import javax.swing.JPanel;
 
 import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.ThrustCurveMotor;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.GUIUtil;
 
@@ -27,6 +29,7 @@ import org.jfree.data.xy.XYSeries;
 import org.jfree.data.xy.XYSeriesCollection;
 
 public class ThrustCurveMotorPlotDialog extends JDialog {
+       private static final Translator trans = Application.getTranslator();
        
        public ThrustCurveMotorPlotDialog(List<ThrustCurveMotor> motors, int selected, Window parent) {
                super(parent, "Motor thrust curves", ModalityType.APPLICATION_MODAL);
@@ -101,7 +104,7 @@ public class ThrustCurveMotorPlotDialog extends JDialog {
                
 
                // Close button
-               JButton close = new JButton("Close");
+               JButton close = new JButton(trans.get("dlg.but.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index d3d5e57f4547a6b635c9594af4b4996ec551d1de..ca0fb811de48ab835f136e69a281f62d545f44af 100644 (file)
@@ -47,6 +47,7 @@ import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.components.StyledLabel.Style;
 import net.sf.openrocket.gui.dialogs.motor.CloseableDialog;
 import net.sf.openrocket.gui.dialogs.motor.MotorSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.motor.MotorDigest;
@@ -72,16 +73,20 @@ import org.jfree.data.xy.XYSeriesCollection;
 
 public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelector {
        private static final LogHelper log = Application.getLogger();
-       
+       private static final Translator trans = Application.getTranslator();
+
        private static final double MOTOR_SIMILARITY_THRESHOLD = 0.95;
        
        private static final int SHOW_ALL = 0;
        private static final int SHOW_SMALLER = 1;
        private static final int SHOW_EXACT = 2;
        private static final String[] SHOW_DESCRIPTIONS = {
-                       "Show all motors",
-                       "Show motors with diameter less than that of the motor mount",
-                       "Show motors with diameter equal to that of the motor mount"
+               //// Show all motors
+               trans.get("TCMotorSelPan.SHOW_DESCRIPTIONS.desc1"),
+                       //// Show motors with diameter less than that of the motor mount
+               trans.get("TCMotorSelPan.SHOW_DESCRIPTIONS.desc2"),
+                       //// Show motors with diameter equal to that of the motor mount
+               trans.get("TCMotorSelPan.SHOW_DESCRIPTIONS.desc3")
        };
        private static final int SHOW_MAX = 2;
        
@@ -191,7 +196,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
 
 
                // Selection label
-               label = new StyledLabel("Select rocket motor:", Style.BOLD);
+               //// Select rocket motor:
+               label = new StyledLabel(trans.get("TCMotorSelPan.lbl.Selrocketmotor"), Style.BOLD);
                panel.add(label, "spanx, wrap para");
                
                // Diameter selection
@@ -225,8 +231,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                });
                panel.add(filterComboBox, "spanx, growx, wrap rel");
                
-
-               hideSimilarBox = new JCheckBox("Hide very similar thrust curves");
+               //// Hide very similar thrust curves
+               hideSimilarBox = new JCheckBox(trans.get("TCMotorSelPan.checkbox.hideSimilar"));
                GUIUtil.changeFontSize(hideSimilarBox, -1);
                hideSimilarBox.setSelected(Prefs.getBoolean(Prefs.MOTOR_HIDE_SIMILAR, true));
                hideSimilarBox.addActionListener(new ActionListener() {
@@ -291,14 +297,16 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
 
 
                // Motor mount diameter label
-               label = new StyledLabel("Motor mount diameter: " +
+               //// Motor mount diameter: 
+               label = new StyledLabel(trans.get("TCMotorSelPan.lbl.Motormountdia")+ " " +
                                UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(diameter));
                panel.add(label, "gapright 30lp, spanx, split");
                
 
 
                // Search field
-               label = new StyledLabel("Search:");
+               //// Search:
+               label = new StyledLabel(trans.get("TCMotorSelPan.lbl.Search"));
                panel.add(label, "");
                
                searchField = new JTextField();
@@ -345,7 +353,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
 
 
                // Thrust curve selection
-               curveSelectionLabel = new JLabel("Select thrust curve:");
+               //// Select thrust curve:
+               curveSelectionLabel = new JLabel(trans.get("TCMotorSelPan.lbl.Selectthrustcurve"));
                panel.add(curveSelectionLabel);
                
                curveSelectionModel = new DefaultComboBoxModel();
@@ -366,8 +375,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
 
 
 
-               // Ejection charge delay
-               panel.add(new JLabel("Ejection charge delay:"));
+               // Ejection charge delay:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Ejectionchargedelay")));
                
                delayBox = new JComboBox();
                delayBox.setEditable(true);
@@ -376,7 +385,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                        public void actionPerformed(ActionEvent e) {
                                JComboBox cb = (JComboBox) e.getSource();
                                String sel = (String) cb.getSelectedItem();
-                               if (sel.equalsIgnoreCase("None")) {
+                               //// None
+                               if (sel.equalsIgnoreCase(trans.get("TCMotorSelPan.equalsIgnoreCase.None"))) {
                                        selectedDelay = Motor.PLUGGED;
                                } else {
                                        try {
@@ -388,7 +398,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                        }
                });
                panel.add(delayBox, "growx, wrap rel");
-               panel.add(new StyledLabel("(Number of seconds or \"None\")", -3), "skip, wrap para");
+               //// (Number of seconds or \"None\")
+               panel.add(new StyledLabel(trans.get("TCMotorSelPan.lbl.NumberofsecondsorNone"), -3), "skip, wrap para");
                setDelays(false);
                
 
@@ -397,36 +408,44 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
 
 
                // Thrust curve info
-               panel.add(new JLabel("Total impulse:"));
+               //// Total impulse:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Totalimpulse")));
                totalImpulseLabel = new JLabel();
                panel.add(totalImpulseLabel, "wrap");
                
-               panel.add(new JLabel("Avg. thrust:"));
+               //// Avg. thrust:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Avgthrust")));
                avgThrustLabel = new JLabel();
                panel.add(avgThrustLabel, "wrap");
                
-               panel.add(new JLabel("Max. thrust:"));
+               //// Max. thrust:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Maxthrust")));
                maxThrustLabel = new JLabel();
                panel.add(maxThrustLabel, "wrap");
                
-               panel.add(new JLabel("Burn time:"));
+               //// Burn time:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Burntime")));
                burnTimeLabel = new JLabel();
                panel.add(burnTimeLabel, "wrap");
                
-               panel.add(new JLabel("Launch mass:"));
+               //// Launch mass:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Launchmass")));
                launchMassLabel = new JLabel();
                panel.add(launchMassLabel, "wrap");
                
-               panel.add(new JLabel("Empty mass:"));
+               //// Empty mass:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Emptymass")));
                emptyMassLabel = new JLabel();
                panel.add(emptyMassLabel, "wrap");
                
-               panel.add(new JLabel("Data points:"));
+               //// Data points:
+               panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Datapoints")));
                dataPointsLabel = new JLabel();
                panel.add(dataPointsLabel, "wrap para");
                
                if (System.getProperty("openrocket.debug.motordigest") != null) {
-                       panel.add(new JLabel("Digest:"));
+                       //// Digest:
+                       panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Digest")));
                        digestLabel = new JLabel();
                        panel.add(digestLabel, "w :300:, wrap para");
                } else {
@@ -466,7 +485,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                changeLabelFont(plot.getRangeAxis(), -2);
                changeLabelFont(plot.getDomainAxis(), -2);
                
-               chart.setTitle(new TextTitle("Thrust curve:", this.getFont()));
+               //// Thrust curve:
+               chart.setTitle(new TextTitle(trans.get("TCMotorSelPan.title.Thrustcurve"), this.getFont()));
                chart.setBackgroundPaint(this.getBackground());
                plot.setBackgroundPaint(Color.WHITE);
                plot.setDomainGridlinePaint(Color.LIGHT_GRAY);
@@ -680,7 +700,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                for (int i = 0; i < motors.size(); i++) {
                        ThrustCurveMotor m = motors.get(i);
                        
-                       XYSeries series = new XYSeries("Thrust");
+                       //// Thrust
+                       XYSeries series = new XYSeries(trans.get("TCMotorSelPan.title.Thrust"));
                        double[] time = m.getTimePoints();
                        double[] thrust = m.getThrustPoints();
                        
@@ -728,6 +749,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
        private void setComment(String s) {
                s = s.trim();
                if (s.length() == 0) {
+                       //// No description available.
                        comment.setText("No description available.");
                        comment.setFont(noCommentFont);
                        comment.setForeground(NO_COMMENT_COLOR);
@@ -815,7 +837,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
        private void setDelays(boolean reset) {
                if (selectedMotor == null) {
                        
-                       delayBox.setModel(new DefaultComboBoxModel(new String[] { "None" }));
+                       //// None
+                       delayBox.setModel(new DefaultComboBoxModel(new String[] { trans.get("TCMotorSelPan.delayBox.None") }));
                        delayBox.setSelectedIndex(0);
                        
                } else {
@@ -825,7 +848,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                        double currentDelay = selectedDelay; // Store current setting locally
                        
                        for (int i = 0; i < delays.size(); i++) {
-                               delayStrings[i] = ThrustCurveMotor.getDelayString(delays.get(i), "None");
+                               //// None
+                               delayStrings[i] = ThrustCurveMotor.getDelayString(delays.get(i), trans.get("TCMotorSelPan.delayBox.None"));
                        }
                        delayBox.setModel(new DefaultComboBoxModel(delayStrings));
                        
@@ -841,7 +865,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                                }
                                if (!Double.isNaN(closest)) {
                                        selectedDelay = closest;
-                                       delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(closest, "None"));
+                               //// None
+                                       delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(closest, trans.get("TCMotorSelPan.delayBox.None")));
                                } else {
                                        delayBox.setSelectedItem("None");
                                }
@@ -849,7 +874,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
                        } else {
                                
                                selectedDelay = currentDelay;
-                               delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, "None"));
+                       //// None
+                               delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, trans.get("TCMotorSelPan.delayBox.None")));
                                
                        }
                        
index ed55079f0659a6628c50e2865ea5bfe82206648a..7c5894c70ca8c01663de22d06a04ef9ca73d3411 100644 (file)
@@ -12,10 +12,12 @@ import java.util.ServiceLoader;
 import javax.swing.JDialog;
 
 import net.sf.openrocket.document.OpenRocketDocument;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.optimization.rocketoptimization.OptimizableParameter;
 import net.sf.openrocket.optimization.rocketoptimization.OptimizableParameterService;
 import net.sf.openrocket.optimization.rocketoptimization.SimulationModifier;
 import net.sf.openrocket.optimization.rocketoptimization.SimulationModifierService;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.BugException;
 
 public class GeneralOptimizationDialog extends JDialog {
@@ -23,7 +25,8 @@ public class GeneralOptimizationDialog extends JDialog {
        private final List<OptimizableParameter> optimizationParameters = new ArrayList<OptimizableParameter>();
        private final Map<Object, List<SimulationModifier>> simulationModifiers =
                        new HashMap<Object, List<SimulationModifier>>();
-       
+       private static final Translator trans = Application.getTranslator();
+
 
        private final OpenRocketDocument document;
        
index e6d66f469f717ffa5ccfe6aa3005dc4c5fe28ee1..183a02eb982c49f5ebb1b10915ff03eef0e24f77 100644 (file)
@@ -25,7 +25,9 @@ import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.gui.adaptors.Column;
 import net.sf.openrocket.gui.adaptors.ColumnTableModel;
 import net.sf.openrocket.gui.dialogs.CustomMaterialDialog;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.unit.Value;
 
@@ -37,7 +39,8 @@ public class MaterialEditPanel extends JPanel {
        private final JButton editButton;
        private final JButton deleteButton;
        private final JButton revertButton;
-       
+       private static final Translator trans = Application.getTranslator();
+
        
        public MaterialEditPanel() {
                super(new MigLayout("fill"));
@@ -45,14 +48,15 @@ public class MaterialEditPanel extends JPanel {
                
                // TODO: LOW: Create sorter that keeps material types always in order
                final ColumnTableModel model = new ColumnTableModel(
-                               new Column("Material") {
+                               //// Material
+                               new Column(trans.get("matedtpan.col.Material")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return getMaterial(row).getName();
                                        }
                                },
-                               
-                               new Column("Type") {
+                               //// Type
+                               new Column(trans.get("matedtpan.col.Type")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                return getMaterial(row).getType().toString();
@@ -62,8 +66,8 @@ public class MaterialEditPanel extends JPanel {
                                                return 15;
                                        }
                                },
-                               
-                               new Column("Density") {
+                               //// Density
+                               new Column(trans.get("matedtpan.col.Density")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                Material m = getMaterial(row);
@@ -106,15 +110,17 @@ public class MaterialEditPanel extends JPanel {
                this.add(new JScrollPane(table), "w 200px, h 100px, grow 100");
                
                
-               
-               addButton = new JButton("New");
-               addButton.setToolTipText("Add a new material");
+               //// New button
+               addButton = new JButton(trans.get("matedtpan.but.new"));
+               //// Add a new material
+               addButton.setToolTipText(trans.get("matedtpan.col.but.ttip.New"));
                addButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                CustomMaterialDialog dialog = new CustomMaterialDialog(
                                                        SwingUtilities.getWindowAncestor(MaterialEditPanel.this),
-                                                       null, false, "Add a custom material");
+                                                       //// Add a custom material
+                                                       null, false, trans.get("matedtpan.title.Addcustmaterial"));
                                dialog.setVisible(true);
                                if (dialog.getOkClicked()) {
                                        Material mat = dialog.getMaterial();
@@ -126,9 +132,10 @@ public class MaterialEditPanel extends JPanel {
                });
                this.add(addButton, "gap rel rel para para, w 70lp, split 5, flowy, growx 1, top");
                
-               
-               editButton = new JButton("Edit");
-               editButton.setToolTipText("Edit an existing material");
+               //// Edit button
+               editButton = new JButton(trans.get("matedtpan.but.edit"));
+               //// Edit an existing material
+               editButton.setToolTipText(trans.get("matedtpan.but.ttip.edit"));
                editButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -142,12 +149,15 @@ public class MaterialEditPanel extends JPanel {
                                if (m.isUserDefined()) {
                                        dialog = new CustomMaterialDialog(
                                                        SwingUtilities.getWindowAncestor(MaterialEditPanel.this),
-                                                       m, false, "Edit material");
+                                                       //// Edit material
+                                                       m, false, trans.get("matedtpan.title.Editmaterial"));
                                } else {
                                        dialog = new CustomMaterialDialog(
                                                        SwingUtilities.getWindowAncestor(MaterialEditPanel.this),
-                                                       m, false, "Add a custom material", 
-                                                       "The built-in materials cannot be modified.");
+                                                       //// Add a custom material
+                                                       m, false, trans.get("matedtpan.title.Addcustmaterial"), 
+                                                       //// The built-in materials cannot be modified.
+                                                       trans.get("matedtpan.title2.Editmaterial"));
                                }
                                
                                dialog.setVisible(true);
@@ -165,9 +175,10 @@ public class MaterialEditPanel extends JPanel {
                });
                this.add(editButton, "gap rel rel para para, growx 1, top");
                
-               
-               deleteButton = new JButton("Delete");
-               deleteButton.setToolTipText("Delete a user-defined material");
+               //// Delete button
+               deleteButton = new JButton(trans.get("matedtpan.but.delete"));
+               //// Delete a user-defined material
+               deleteButton.setToolTipText(trans.get("matedtpan.but.ttip.delete"));
                deleteButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -188,13 +199,18 @@ public class MaterialEditPanel extends JPanel {
                
                this.add(new JPanel(), "grow 1");
                
-               revertButton = new JButton("Revert all");
-               revertButton.setToolTipText("Delete all user-defined materials");
+               //// Revert all button
+               revertButton = new JButton(trans.get("matedtpan.but.revertall"));
+               //// Delete all user-defined materials
+               revertButton.setToolTipText(trans.get("matedtpan.but.ttip.revertall"));
                revertButton.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                int sel = JOptionPane.showConfirmDialog(MaterialEditPanel.this, 
-                                               "Delete all user-defined materials?", "Revert all?", 
+                                               //// Delete all user-defined materials?
+                                               trans.get("matedtpan.title.Deletealluser-defined"), 
+                                               //// Revert all?
+                                               trans.get("matedtpan.title.Revertall"), 
                                                JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
                                if (sel == JOptionPane.YES_OPTION) {
                                        Iterator<Material> iterator;
@@ -239,9 +255,9 @@ public class MaterialEditPanel extends JPanel {
                        }
                });
                
-               
-               this.add(new JLabel("<html><i>Editing materials will not affect existing " +
-                               "rocket designs.</i>"), "span");
+               //// <html><i>Editing materials will not affect existing
+               //// rocket designs.</i>
+               this.add(new JLabel(trans.get("matedtpan.lbl.edtmaterials")), "span");
                
                
        }
index f086120897c8545ee87097304001a7c201ad7112..65a09aa8296d757b745e03ffbd8c55c912c0e756 100644 (file)
@@ -34,6 +34,7 @@ import net.sf.openrocket.gui.components.DescriptionArea;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.dialogs.UpdateInfoDialog;
 import net.sf.openrocket.gui.main.SimpleFileFilter;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
@@ -47,22 +48,29 @@ public class PreferencesDialog extends JDialog {
        private final List<DefaultUnitSelector> unitSelectors = new ArrayList<DefaultUnitSelector>();
        
        private File defaultDirectory = null;
-       
+       private static final Translator trans = Application.getTranslator();
+
        private PreferencesDialog() {
-               super((Window) null, "Preferences", Dialog.ModalityType.APPLICATION_MODAL);
+               //// Preferences
+               super((Window) null, trans.get("pref.dlg.title.Preferences"), Dialog.ModalityType.APPLICATION_MODAL);
                
                JPanel panel = new JPanel(new MigLayout("fill, gap unrel", "[grow]", "[grow][]"));
                
                JTabbedPane tabbedPane = new JTabbedPane();
                panel.add(tabbedPane, "grow, wrap");
                
-
-               tabbedPane.addTab("Units", null, unitsPane(), "Default units");
-               tabbedPane.addTab("Materials", null, new MaterialEditPanel(), "Custom materials");
-               tabbedPane.addTab("Options", null, optionsPane(), "Miscellaneous options");
-               
-
-               JButton close = new JButton("Close");
+               //// Units and Default units
+               tabbedPane.addTab(trans.get("pref.dlg.tab.Units"), null, unitsPane(), 
+                               trans.get("pref.dlg.tab.Defaultunits"));
+               //// Materials and Custom materials
+               tabbedPane.addTab(trans.get("pref.dlg.tab.Materials"), null, new MaterialEditPanel(),
+                               trans.get("pref.dlg.tab.Custommaterials"));
+               //// Options and Miscellaneous options
+               tabbedPane.addTab(trans.get("pref.dlg.tab.Options"), null, optionsPane(), 
+                               trans.get("pref.dlg.tab.Miscellaneousoptions"));
+               
+               //// Close button
+               JButton close = new JButton(trans.get("dlg.but.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
@@ -90,17 +98,26 @@ public class PreferencesDialog extends JDialog {
        private JPanel optionsPane() {
                JPanel panel = new JPanel(new MigLayout("fillx, ins 30lp n n n"));
                
-
-               panel.add(new JLabel("Position to insert new body components:"), "gapright para");
+               //// Position to insert new body components:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Positiontoinsert")), "gapright para");
                panel.add(new JComboBox(new PrefChoiseSelector(Prefs.BODY_COMPONENT_INSERT_POSITION_KEY,
-                               "Always ask", "Insert in middle", "Add to end")), "wrap para, growx, sg combos");
-               
-               panel.add(new JLabel("Confirm deletion of simulations:"));
+                               //// Always ask
+                               //// Insert in middle
+                               //// Add to end
+                               trans.get("pref.dlg.PrefChoiseSelector1"), 
+                               trans.get("pref.dlg.PrefChoiseSelector2"), 
+                               trans.get("pref.dlg.PrefChoiseSelector3"))), "wrap para, growx, sg combos");
+               
+               //// Confirm deletion of simulations:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Confirmdeletion")));
                panel.add(new JComboBox(new PrefBooleanSelector(Prefs.CONFIRM_DELETE_SIMULATION,
-                               "Delete", "Confirm", true)), "wrap 40lp, growx, sg combos");
+                               //// Delete
+                               //// Confirm
+                               trans.get("pref.dlg.PrefBooleanSelector1"), 
+                               trans.get("pref.dlg.PrefBooleanSelector2"), true)), "wrap 40lp, growx, sg combos");
                
-
-               panel.add(new JLabel("User-defined thrust curves:"), "spanx, wrap");
+               //// User-defined thrust curves:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.User-definedthrust")), "spanx, wrap");
                final JTextField field = new JTextField();
                List<File> files = Prefs.getUserThrustCurveFiles();
                String str = "";
@@ -141,19 +158,26 @@ public class PreferencesDialog extends JDialog {
                });
                panel.add(field, "w 100px, gapright unrel, spanx, growx, split");
                
-               JButton button = new JButton("Add");
+               //// Add button
+               JButton button = new JButton(trans.get("pref.dlg.but.add"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                JFileChooser chooser = new JFileChooser();
-                               SimpleFileFilter filter = new SimpleFileFilter("All thrust curve files (*.eng; *.rse; *.zip; directories)",
+                               SimpleFileFilter filter = 
+                                       new SimpleFileFilter(
+                                                       //// All thrust curve files (*.eng; *.rse; *.zip; directories)
+                                                       trans.get("pref.dlg.Allthrustcurvefiles"),
                                                true, "eng", "rse", "zip");
                                chooser.addChoosableFileFilter(filter);
-                               chooser.addChoosableFileFilter(new SimpleFileFilter("RASP motor files (*.eng)",
+                               //// RASP motor files (*.eng)
+                               chooser.addChoosableFileFilter(new SimpleFileFilter(trans.get("pref.dlg.RASPfiles"),
                                                true, "eng"));
-                               chooser.addChoosableFileFilter(new SimpleFileFilter("RockSim engine files (*.rse)",
+                               //// RockSim engine files (*.rse)
+                               chooser.addChoosableFileFilter(new SimpleFileFilter(trans.get("pref.dlg.RockSimfiles"),
                                                true, "rse"));
-                               chooser.addChoosableFileFilter(new SimpleFileFilter("ZIP archives (*.zip)",
+                               //// ZIP archives (*.zip)
+                               chooser.addChoosableFileFilter(new SimpleFileFilter(trans.get("pref.dlg.ZIParchives"),
                                                true, "zip"));
                                chooser.setFileFilter(filter);
                                chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
@@ -161,7 +185,8 @@ public class PreferencesDialog extends JDialog {
                                        chooser.setCurrentDirectory(defaultDirectory);
                                }
                                
-                               int returnVal = chooser.showDialog(PreferencesDialog.this, "Add");
+                               //// Add
+                               int returnVal = chooser.showDialog(PreferencesDialog.this, trans.get("pref.dlg.Add"));
                                if (returnVal == JFileChooser.APPROVE_OPTION) {
                                        log.user("Adding user thrust curve: " + chooser.getSelectedFile());
                                        defaultDirectory = chooser.getCurrentDirectory();
@@ -176,7 +201,8 @@ public class PreferencesDialog extends JDialog {
                });
                panel.add(button, "gapright unrel");
                
-               button = new JButton("Reset");
+               //// Reset button
+               button = new JButton(trans.get("pref.dlg.but.reset"));
                
                button.addActionListener(new ActionListener() {
                        @Override
@@ -188,16 +214,16 @@ public class PreferencesDialog extends JDialog {
                });
                panel.add(button, "wrap");
                
-               DescriptionArea desc = new DescriptionArea("Add directories, RASP motor files (*.eng), " +
-                               "RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external " +
-                               "thrust curves.  Changes will take effect the next time you start OpenRocket.", 3, -3, false);
+               //// Add directories, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external thrust curves.  Changes will take effect the next time you start OpenRocket.
+               DescriptionArea desc = new DescriptionArea(trans.get("pref.dlg.DescriptionArea.Adddirectories"), 3, -3, false);
                desc.setBackground(getBackground());
                panel.add(desc, "spanx, growx, wrap 40lp");
                
 
 
-
-               final JCheckBox softwareUpdateBox = new JCheckBox("Check for software updates at startup");
+               //// Check for software updates at startup
+               final JCheckBox softwareUpdateBox = 
+                       new JCheckBox(trans.get("pref.dlg.checkbox.Checkupdates"));
                softwareUpdateBox.setSelected(Prefs.getCheckUpdates());
                softwareUpdateBox.addActionListener(new ActionListener() {
                        @Override
@@ -207,8 +233,10 @@ public class PreferencesDialog extends JDialog {
                });
                panel.add(softwareUpdateBox);
                
-               button = new JButton("Check now");
-               button.setToolTipText("Check for software updates now");
+               //// Check now button
+               button = new JButton(trans.get("pref.dlg.but.checknow"));
+               //// Check for software updates now
+               button.setToolTipText(trans.get("pref.dlg.ttip.Checkupdatesnow"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -225,106 +253,117 @@ public class PreferencesDialog extends JDialog {
                JPanel panel = new JPanel(new MigLayout("", "[][]40lp[][]"));
                JComboBox combo;
                
-               panel.add(new JLabel("Select your preferred units:"), "span, wrap paragraph");
+               //// Select your preferred units:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Selectprefunits")), "span, wrap paragraph");
                
 
-               panel.add(new JLabel("Rocket dimensions:"));
+               //// Rocket dimensions:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Rocketdimensions")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_LENGTH));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Line density:"));
+               //// Line density:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Linedensity")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DENSITY_LINE));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Motor dimensions:"));
+               //// Motor dimensions:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Motordimensions")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_MOTOR_DIMENSIONS));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Surface density:"));
+               //// Surface density:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Surfacedensity")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DENSITY_SURFACE));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Distance:"));
+               //// Distance:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Distance")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DISTANCE));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Bulk density::"));
+               //// Bulk density::
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Bulkdensity")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DENSITY_BULK));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Velocity:"));
+               //// Velocity:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Velocity")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_VELOCITY));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Surface roughness:"));
+               //// Surface roughness:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Surfaceroughness")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ROUGHNESS));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Acceleration:"));
+               //// Acceleration:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Acceleration")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ACCELERATION));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Area:"));
+               //// Area:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Area")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_AREA));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Mass:"));
+               //// Mass:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Mass")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_MASS));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Angle:"));
+               //// Angle:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Angle")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ANGLE));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Force:"));
+               //// Force:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Force")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_FORCE));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Roll rate:"));
+               //// Roll rate:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Rollrate")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ROLL));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Total impulse:"));
+               //// Total impulse:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Totalimpulse")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_IMPULSE));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Temperature:"));
+               //// Temperature:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Temperature")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_TEMPERATURE));
                panel.add(combo, "sizegroup boxes, wrap");
                
 
-
-               panel.add(new JLabel("Moment of inertia:"));
+               //// Moment of inertia:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Momentofinertia")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_INERTIA));
                panel.add(combo, "sizegroup boxes");
                
-               panel.add(new JLabel("Pressure:"));
+               //// Pressure:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Pressure")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_PRESSURE));
                panel.add(combo, "sizegroup boxes, wrap");
                
-
-               panel.add(new JLabel("Stability:"));
+               //// Stability:
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Stability")));
                combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_STABILITY));
                panel.add(combo, "sizegroup boxes, wrap para");
                
 
 
-
-               JButton button = new JButton("Default metric");
+               //// Default metric button
+               JButton button = new JButton(trans.get("pref.dlg.but.defaultmetric"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -335,7 +374,8 @@ public class PreferencesDialog extends JDialog {
                });
                panel.add(button, "spanx, split 2, grow");
                
-               button = new JButton("Default imperial");
+               //// Default imperial button
+               button = new JButton(trans.get("pref.dlg.but.defaultimperial"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -346,8 +386,9 @@ public class PreferencesDialog extends JDialog {
                });
                panel.add(button, "grow, wrap para");
                
-
-               panel.add(new StyledLabel("The effects will take place the next time you open a window.", -2),
+               //// The effects will take place the next time you open a window.
+               panel.add(new StyledLabel(
+                               trans.get("pref.dlg.lbl.effect1"), -2),
                                "spanx, wrap");
                
 
@@ -520,13 +561,15 @@ public class PreferencesDialog extends JDialog {
                final JDialog dialog = new JDialog(this, ModalityType.APPLICATION_MODAL);
                JPanel panel = new JPanel(new MigLayout());
                
-               panel.add(new JLabel("Checking for updates..."), "wrap");
+               //// Checking for updates...
+               panel.add(new JLabel(trans.get("pref.dlg.lbl.Checkingupdates")), "wrap");
                
                JProgressBar bar = new JProgressBar();
                bar.setIndeterminate(true);
                panel.add(bar, "growx, wrap para");
                
-               JButton cancel = new JButton("Cancel");
+               //// Cancel button
+               JButton cancel = new JButton(trans.get("dlg.but.cancel"));
                cancel.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -564,14 +607,18 @@ public class PreferencesDialog extends JDialog {
                UpdateInfo info = retriever.getUpdateInfo();
                if (info == null) {
                        JOptionPane.showMessageDialog(this,
-                                       "An error occurred while communicating with the server.",
-                                       "Unable to retrieve update information", JOptionPane.WARNING_MESSAGE, null);
+                                       //// An error occurred while communicating with the server.
+                                       trans.get("pref.dlg.lbl.msg1"),
+                                       //// Unable to retrieve update information
+                                       trans.get("pref.dlg.lbl.msg2"), JOptionPane.WARNING_MESSAGE, null);
                } else if (info.getLatestVersion() == null ||
                                info.getLatestVersion().equals("") ||
                                Prefs.getVersion().equalsIgnoreCase(info.getLatestVersion())) {
                        JOptionPane.showMessageDialog(this,
-                                       "You are running the latest version of OpenRocket.",
-                                       "No updates available", JOptionPane.INFORMATION_MESSAGE, null);
+                                       //// You are running the latest version of OpenRocket.
+                                       trans.get("pref.dlg.lbl.msg3"),
+                                       //// No updates available
+                                       trans.get("pref.dlg.lbl.msg4"), JOptionPane.INFORMATION_MESSAGE, null);
                } else {
                        UpdateInfoDialog infoDialog = new UpdateInfoDialog(info);
                        infoDialog.setVisible(true);
index 0e9ef165a3a1d17309b9cbe724c156a63e239aab..2237fa39afb9776bbe3652e5a25869fff043eec3 100644 (file)
@@ -2,8 +2,10 @@ package net.sf.openrocket.gui.figureelements;
 
 import net.sf.openrocket.aerodynamics.Warning;
 import net.sf.openrocket.aerodynamics.WarningSet;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.Configuration;
 import net.sf.openrocket.simulation.FlightData;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.MathUtil;
@@ -28,6 +30,7 @@ import static net.sf.openrocket.util.Chars.THETA;
  */
 public class RocketInfo implements FigureElement {
        
+       private static final Translator trans = Application.getTranslator();
        // Margin around the figure edges, pixels
        private static final int MARGIN = 8;
 
@@ -140,15 +143,19 @@ public class RocketInfo implements FigureElement {
        private void drawMainInfo() {
                GlyphVector name = createText(configuration.getRocket().getName());
                GlyphVector lengthLine = createText(
-                               "Length " + UnitGroup.UNITS_LENGTH.getDefaultUnit().toStringUnit(length) +
-                               ", max. diameter " + 
+                               //// Length
+                               trans.get("RocketInfo.lengthLine.Length") +" " + UnitGroup.UNITS_LENGTH.getDefaultUnit().toStringUnit(length) +
+                               //// , max. diameter
+                               trans.get("RocketInfo.lengthLine.maxdiameter") +" " + 
                                UnitGroup.UNITS_LENGTH.getDefaultUnit().toStringUnit(diameter));
                
                String massText;
                if (configuration.hasMotors())
-                       massText = "Mass with motors ";
+                       //// Mass with motors 
+                       massText = trans.get("RocketInfo.massText1") +" ";
                else
-                       massText = "Mass with no motors ";
+                       //// Mass with no motors 
+                       massText = trans.get("RocketInfo.massText2") +" ";
                
                massText += UnitGroup.UNITS_MASS.getDefaultUnit().toStringUnit(mass);
                
@@ -166,8 +173,8 @@ public class RocketInfo implements FigureElement {
        
        private void drawStabilityInfo() {
                String at;
-               
-               at = "at M="+UnitGroup.UNITS_COEFFICIENT.getDefaultUnit().toStringUnit(mach);
+               //// at M=
+               at = trans.get("RocketInfo.at")+UnitGroup.UNITS_COEFFICIENT.getDefaultUnit().toStringUnit(mach);
                if (!Double.isNaN(aoa)) {
                        at += " "+ALPHA+"=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(aoa);
                }
@@ -181,10 +188,12 @@ public class RocketInfo implements FigureElement {
                 getCp());
                GlyphVector stabValue = createText(
                 getStability());
-                               
-               GlyphVector cgText = createText("CG:  ");
-               GlyphVector cpText = createText("CP:  ");
-               GlyphVector stabText = createText("Stability:  ");
+               //// CG:                
+               GlyphVector cgText = createText(trans.get("RocketInfo.cgText") +"  ");
+               //// CP:
+               GlyphVector cpText = createText(trans.get("RocketInfo.cpText") +"  ");
+               //// Stability:
+               GlyphVector stabText = createText(trans.get("RocketInfo.stabText") + "  ");
                GlyphVector atText = createSmallText(at);
 
                Rectangle2D cgRect = cgValue.getVisualBounds();
@@ -312,7 +321,8 @@ public class RocketInfo implements FigureElement {
                GlyphVector[] texts = new GlyphVector[warnings.size()+1];
                double max = 0;
                
-               texts[0] = createText("Warning:");
+               //// Warning:
+               texts[0] = createText(trans.get("RocketInfo.Warning"));
                int i=1;
                for (Warning w: warnings) {
                        texts[i] = createText(w.toString());
@@ -341,7 +351,8 @@ public class RocketInfo implements FigureElement {
                double height = drawFlightData();
                
                if (calculatingData) {
-                       GlyphVector calculating = createText("Calculating...");
+                       //// Calculating...
+                       GlyphVector calculating = createText(trans.get("RocketInfo.Calculating"));
                        g2.setColor(Color.BLACK);
                        g2.drawGlyphVector(calculating, x1, (float)(y2-height));
                }
@@ -354,30 +365,37 @@ public class RocketInfo implements FigureElement {
                
                double width=0;
                
-               GlyphVector apogee = createText("Apogee: ");
-               GlyphVector maxVelocity = createText("Max. velocity: ");
-               GlyphVector maxAcceleration = createText("Max. acceleration: ");
+               //// Apogee: 
+               GlyphVector apogee = createText(trans.get("RocketInfo.Apogee")+" ");
+               //// Max. velocity:
+               GlyphVector maxVelocity = createText(trans.get("RocketInfo.Maxvelocity") +" ");
+               //// Max. acceleration: 
+               GlyphVector maxAcceleration = createText(trans.get("RocketInfo.Maxacceleration") + " ");
 
                GlyphVector apogeeValue, velocityValue, accelerationValue;
                if (!Double.isNaN(flightData.getMaxAltitude())) {
                        apogeeValue = createText(
                                        UnitGroup.UNITS_DISTANCE.toStringUnit(flightData.getMaxAltitude()));
                } else {
-                       apogeeValue = createText("N/A");
+                       //// N/A
+                       apogeeValue = createText(trans.get("RocketInfo.apogeeValue"));
                }
                if (!Double.isNaN(flightData.getMaxVelocity())) {
                        velocityValue = createText(
                                        UnitGroup.UNITS_VELOCITY.toStringUnit(flightData.getMaxVelocity()) +
-                                       "  (Mach " + 
+                                       //// (Mach
+                                       "  " +trans.get("RocketInfo.Mach") +" " + 
                                        UnitGroup.UNITS_COEFFICIENT.toString(flightData.getMaxMachNumber()) + ")");
                } else {
-                       velocityValue = createText("N/A");
+                       //// N/A
+                       velocityValue = createText(trans.get("RocketInfo.velocityValue"));
                }
                if (!Double.isNaN(flightData.getMaxAcceleration())) {
                        accelerationValue = createText(
                                        UnitGroup.UNITS_ACCELERATION.toStringUnit(flightData.getMaxAcceleration()));
                } else {
-                       accelerationValue = createText("N/A");
+                       //// N/A
+                       accelerationValue = createText(trans.get("RocketInfo.accelerationValue"));
                }
                
                Rectangle2D rect;
index 2605dc7d6bd120bbc1796f432dcc7cc8315dde81..55df50394d49fbd9b3b5cbb00d384b031852ae69 100644 (file)
@@ -80,6 +80,7 @@ import net.sf.openrocket.gui.dialogs.WarningDialog;
 import net.sf.openrocket.gui.dialogs.preferences.PreferencesDialog;
 import net.sf.openrocket.gui.main.componenttree.ComponentTree;
 import net.sf.openrocket.gui.scalefigure.RocketPanel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
 import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
@@ -108,17 +109,21 @@ public class BasicFrame extends JFrame {
        
        private static final RocketSaver ROCKET_SAVER = new OpenRocketSaver();
        
-
+       private static final Translator trans = Application.getTranslator();
+       
        // FileFilters for different types of rocket design files
        private static final FileFilter ALL_DESIGNS_FILTER =
-                       new SimpleFileFilter("All rocket designs (*.ork; *.rkt)",
+                       //// All rocket designs (*.ork; *.rkt)
+                       new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter1"),
                                        ".ork", ".ork.gz", ".rkt", ".rkt.gz");
        
        private static final FileFilter OPENROCKET_DESIGN_FILTER =
-                       new SimpleFileFilter("OpenRocket designs (*.ork)", ".ork", ".ork.gz");
+                       //// OpenRocket designs (*.ork)
+                       new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter2"), ".ork", ".ork.gz");
        
        private static final FileFilter ROCKSIM_DESIGN_FILTER =
-                       new SimpleFileFilter("RockSim designs (*.rkt)", ".rkt", ".rkt.gz");
+                       //// RockSim designs (*.rkt)
+                       new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter3"), ".rkt", ".rkt.gz");
        
 
 
@@ -212,8 +217,10 @@ public class BasicFrame extends JFrame {
 
                // The top tabbed pane
                tabbedPane = new JTabbedPane();
-               tabbedPane.addTab("Rocket design", null, designTab());
-               tabbedPane.addTab("Flight simulations", null, simulationPanel);
+               //// Rocket design
+               tabbedPane.addTab(trans.get("BasicFrame.tab.Rocketdesign"), null, designTab());
+               //// Flight simulations
+               tabbedPane.addTab(trans.get("BasicFrame.tab.Flightsim"), null, simulationPanel);
                
                vertical.setTopComponent(tabbedPane);
                
@@ -374,7 +381,7 @@ public class BasicFrame extends JFrame {
                scroll.setBorder(null);
                scroll.setViewportBorder(null);
                
-               TitledBorder border = new TitledBorder("Add new component");
+               TitledBorder border = new TitledBorder(trans.get("BasicFrame.title.Addnewcomp"));
                border.setTitleFont(border.getTitleFont().deriveFont(Font.BOLD));
                scroll.setBorder(border);
                
@@ -396,14 +403,17 @@ public class BasicFrame extends JFrame {
                JMenuItem item;
                
                ////  File
-               menu = new JMenu("File");
+               menu = new JMenu(trans.get("main.menu.file"));
                menu.setMnemonic(KeyEvent.VK_F);
+               //// File-handling related tasks
                menu.getAccessibleContext().setAccessibleDescription("File-handling related tasks");
                menubar.add(menu);
                
-               item = new JMenuItem("New", KeyEvent.VK_N);
+               //// New 
+               item = new JMenuItem(trans.get("main.menu.file.new"), KeyEvent.VK_N);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
                item.setMnemonic(KeyEvent.VK_N);
+               //// Create a new rocket design
                item.getAccessibleContext().setAccessibleDescription("Create a new rocket design");
                item.setIcon(Icons.FILE_NEW);
                item.addActionListener(new ActionListener() {
@@ -419,9 +429,11 @@ public class BasicFrame extends JFrame {
                });
                menu.add(item);
                
-               item = new JMenuItem("Open...", KeyEvent.VK_O);
+               //// Open...
+               item = new JMenuItem(trans.get("main.menu.file.open"), KeyEvent.VK_O);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
-               item.getAccessibleContext().setAccessibleDescription("Open a rocket design");
+               //// Open a rocket design
+               item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Openrocketdesign"));
                item.setIcon(Icons.FILE_OPEN);
                item.addActionListener(new ActionListener() {
                        @Override
@@ -432,8 +444,10 @@ public class BasicFrame extends JFrame {
                });
                menu.add(item);
                
-               item = new JMenuItem("Open example...");
-               item.getAccessibleContext().setAccessibleDescription("Open an example rocket design");
+               //// Open example...
+               item = new JMenuItem(trans.get("main.menu.file.openExample"));
+               //// Open an example rocket design
+               item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Openexamplerocketdesign"));
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
                                ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
                item.setIcon(Icons.FILE_OPEN_EXAMPLE);
@@ -454,9 +468,11 @@ public class BasicFrame extends JFrame {
                
                menu.addSeparator();
                
-               item = new JMenuItem("Save", KeyEvent.VK_S);
+               //// Save
+               item = new JMenuItem(trans.get("main.menu.file.save"), KeyEvent.VK_S);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
-               item.getAccessibleContext().setAccessibleDescription("Save the current rocket design");
+               //// Save the current rocket design
+               item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.SavecurRocketdesign"));
                item.setIcon(Icons.FILE_SAVE);
                item.addActionListener(new ActionListener() {
                        @Override
@@ -467,11 +483,12 @@ public class BasicFrame extends JFrame {
                });
                menu.add(item);
                
-               item = new JMenuItem("Save as...", KeyEvent.VK_A);
+               //// Save as...
+               item = new JMenuItem(trans.get("main.menu.file.saveAs"), KeyEvent.VK_A);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
                                ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
-               item.getAccessibleContext().setAccessibleDescription("Save the current rocket design " +
-                               "to a new file");
+               //// Save the current rocket design to a new file
+               item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.SavecurRocketdesnewfile"));
                item.setIcon(Icons.FILE_SAVE_AS);
                item.addActionListener(new ActionListener() {
                        @Override
@@ -482,10 +499,11 @@ public class BasicFrame extends JFrame {
                });
                menu.add(item);
                
-
-               item = new JMenuItem("Print / Export PDF...", KeyEvent.VK_P);
+               //// Print...
+               item = new JMenuItem(trans.get("main.menu.file.print"), KeyEvent.VK_P);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
-               item.getAccessibleContext().setAccessibleDescription("Print parts list and fin template");
+               //// Print parts list and fin template
+               item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Printpart"));
                item.setIcon(Icons.FILE_PRINT);
                item.addActionListener(new ActionListener() {
                        @Override
@@ -499,9 +517,11 @@ public class BasicFrame extends JFrame {
 
                menu.addSeparator();
                
-               item = new JMenuItem("Close", KeyEvent.VK_C);
+               //// Close
+               item = new JMenuItem(trans.get("main.menu.file.close"), KeyEvent.VK_C);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK));
-               item.getAccessibleContext().setAccessibleDescription("Close the current rocket design");
+               //// Close the current rocket design
+               item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Closedesign"));
                item.setIcon(Icons.FILE_CLOSE);
                item.addActionListener(new ActionListener() {
                        @Override
@@ -514,9 +534,11 @@ public class BasicFrame extends JFrame {
                
                menu.addSeparator();
                
-               item = new JMenuItem("Quit", KeyEvent.VK_Q);
+               //// Quit
+               item = new JMenuItem(trans.get("main.menu.file.quit"), KeyEvent.VK_Q);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));
-               item.getAccessibleContext().setAccessibleDescription("Quit the program");
+               //// Quit the program
+               item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Quitprogram"));
                item.setIcon(Icons.FILE_QUIT);
                item.addActionListener(new ActionListener() {
                        @Override
@@ -530,9 +552,10 @@ public class BasicFrame extends JFrame {
 
 
                ////  Edit
-               menu = new JMenu("Edit");
+               menu = new JMenu(trans.get("main.menu.edit"));
                menu.setMnemonic(KeyEvent.VK_E);
-               menu.getAccessibleContext().setAccessibleDescription("Rocket editing");
+               //// Rocket editing
+               menu.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.menu.Rocketedt"));
                menubar.add(menu);
                
 
@@ -540,6 +563,7 @@ public class BasicFrame extends JFrame {
                item = new JMenuItem(action);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
                item.setMnemonic(KeyEvent.VK_U);
+               //// Undo the previous operation
                item.getAccessibleContext().setAccessibleDescription("Undo the previous operation");
                
                menu.add(item);
@@ -548,6 +572,7 @@ public class BasicFrame extends JFrame {
                item = new JMenuItem(action);
                item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK));
                item.setMnemonic(KeyEvent.VK_R);
+               //// Redo the previously undone operation
                item.getAccessibleContext().setAccessibleDescription("Redo the previously undone " +
                                "operation");
                menu.add(item);
@@ -569,8 +594,10 @@ public class BasicFrame extends JFrame {
                
                menu.addSeparator();
                
-               item = new JMenuItem("Preferences");
+               //// Preferences
+               item = new JMenuItem(trans.get("main.menu.edit.preferences"));
                item.setIcon(Icons.PREFERENCES);
+               //// Setup the application preferences
                item.getAccessibleContext().setAccessibleDescription("Setup the application " +
                                "preferences");
                item.addActionListener(new ActionListener() {
@@ -586,12 +613,15 @@ public class BasicFrame extends JFrame {
 
 
                ////  Analyze
-               menu = new JMenu("Analyze");
+               menu = new JMenu(trans.get("main.menu.analyze"));
                menu.setMnemonic(KeyEvent.VK_A);
+               //// Analyzing the rocket
                menu.getAccessibleContext().setAccessibleDescription("Analyzing the rocket");
                menubar.add(menu);
                
-               item = new JMenuItem("Component analysis", KeyEvent.VK_C);
+               //// Component analysis
+               item = new JMenuItem(trans.get("main.menu.analyze.componentAnalysis"), KeyEvent.VK_C);
+               //// Analyze the rocket components separately
                item.getAccessibleContext().setAccessibleDescription("Analyze the rocket components " +
                                "separately");
                item.addActionListener(new ActionListener() {
@@ -614,14 +644,16 @@ public class BasicFrame extends JFrame {
 
                ////  Help
                
-               menu = new JMenu("Help");
+               menu = new JMenu(trans.get("main.menu.help"));
                menu.setMnemonic(KeyEvent.VK_H);
+               //// Information about OpenRocket
                menu.getAccessibleContext().setAccessibleDescription("Information about OpenRocket");
                menubar.add(menu);
                
 
-
-               item = new JMenuItem("License", KeyEvent.VK_L);
+               //// License
+               item = new JMenuItem(trans.get("main.menu.help.license"), KeyEvent.VK_L);
+               //// OpenRocket license information
                item.getAccessibleContext().setAccessibleDescription("OpenRocket license information");
                item.addActionListener(new ActionListener() {
                        @Override
@@ -634,7 +666,9 @@ public class BasicFrame extends JFrame {
                
                menu.addSeparator();
                
-               item = new JMenuItem("Bug report", KeyEvent.VK_B);
+               //// Bug report
+               item = new JMenuItem(trans.get("main.menu.help.bugReport"), KeyEvent.VK_B);
+               //// Information about reporting bugs in OpenRocket
                item.getAccessibleContext().setAccessibleDescription("Information about reporting " +
                                "bugs in OpenRocket");
                item.addActionListener(new ActionListener() {
@@ -646,7 +680,9 @@ public class BasicFrame extends JFrame {
                });
                menu.add(item);
                
-               item = new JMenuItem("Debug log");
+               //// Debug log
+               item = new JMenuItem(trans.get("main.menu.help.debugLog"));
+               //// View the OpenRocket debug log
                item.getAccessibleContext().setAccessibleDescription("View the OpenRocket debug log");
                item.addActionListener(new ActionListener() {
                        @Override
@@ -659,7 +695,9 @@ public class BasicFrame extends JFrame {
                
                menu.addSeparator();
                
-               item = new JMenuItem("About", KeyEvent.VK_A);
+               //// About
+               item = new JMenuItem(trans.get("main.menu.help.about"), KeyEvent.VK_A);
+               //// About OpenRocket
                item.getAccessibleContext().setAccessibleDescription("About OpenRocket");
                item.addActionListener(new ActionListener() {
                        @Override
@@ -681,8 +719,10 @@ public class BasicFrame extends JFrame {
                
                ////  Debug menu
                menu = new JMenu("Debug");
+               //// OpenRocket debugging tasks
                menu.getAccessibleContext().setAccessibleDescription("OpenRocket debugging tasks");
                
+               //// What is this menu?
                item = new JMenuItem("What is this menu?");
                item.addActionListener(new ActionListener() {
                        @Override
@@ -702,6 +742,7 @@ public class BasicFrame extends JFrame {
                
                menu.addSeparator();
                
+               //// Create test rocket
                item = new JMenuItem("Create test rocket");
                item.addActionListener(new ActionListener() {
                        @Override
@@ -808,7 +849,7 @@ public class BasicFrame extends JFrame {
                });
                menu.add(item);
                
-
+               //// Exhaust memory
                item = new JMenuItem("Exhaust memory");
                item.addActionListener(new ActionListener() {
                        @Override
@@ -841,6 +882,7 @@ public class BasicFrame extends JFrame {
 
                menu.addSeparator();
                
+               //// Exception here
                item = new JMenuItem("Exception here");
                item.addActionListener(new ActionListener() {
                        @Override
@@ -1104,10 +1146,13 @@ public class BasicFrame extends JFrame {
                        log.info("Warnings while reading file: " + warnings);
                        WarningDialog.showWarnings(parent,
                                        new Object[] {
-                                                       "The following problems were encountered while opening " + filename + ".",
-                                                       "Some design features may not have been loaded correctly."
+                                                       //// The following problems were encountered while opening
+                                                       trans.get("BasicFrame.WarningDialog.txt1") + " " + filename + ".",
+                                                       //// Some design features may not have been loaded correctly.
+                                                       trans.get("BasicFrame.WarningDialog.txt2")
                                        },
-                                       "Warnings while opening file", warnings);
+                                       //// Warnings while opening file
+                                       trans.get("BasicFrame.WarningDialog.title"), warnings);
                }
                
 
@@ -1261,9 +1306,10 @@ public class BasicFrame extends JFrame {
                        log.info("Confirming whether to save the design");
                        ComponentConfigDialog.hideDialog();
                        int result = JOptionPane.showConfirmDialog(this,
-                                       "Design '" + rocket.getName() + "' has not been saved.  " +
-                                                       "Do you want to save it?",
-                                       "Design not saved", JOptionPane.YES_NO_CANCEL_OPTION,
+                                       trans.get("BasicFrame.dlg.lbl1") + rocket.getName() +
+                                                       trans.get("BasicFrame.dlg.lbl2") + "  " +
+                                                       trans.get("BasicFrame.dlg.lbl3"),
+                                       trans.get("BasicFrame.dlg.title"), JOptionPane.YES_NO_CANCEL_OPTION,
                                        JOptionPane.QUESTION_MESSAGE);
                        if (result == JOptionPane.YES_OPTION) {
                                // Save
@@ -1321,7 +1367,8 @@ public class BasicFrame extends JFrame {
                
                Rocket rocket = new Rocket();
                Stage stage = new Stage();
-               stage.setName("Sustainer");
+               //// Sustainer
+               stage.setName(trans.get("BasicFrame.StageName.Sustainer"));
                rocket.addChild(stage);
                OpenRocketDocument doc = new OpenRocketDocument(rocket);
                doc.setSaved(true);
index e5429e3aec1b4a694783b7425e7feb5985f58b5b..a5bdb789b9b9096102bb0159ec0ab6a2e8037889 100644 (file)
@@ -30,6 +30,7 @@ import net.sf.openrocket.document.OpenRocketDocument;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.configdialog.ComponentConfigDialog;
 import net.sf.openrocket.gui.main.componenttree.ComponentTreeModel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.rocketcomponent.BodyComponent;
 import net.sf.openrocket.rocketcomponent.BodyTube;
@@ -66,6 +67,7 @@ import net.sf.openrocket.util.Reflection;
 
 public class ComponentAddButtons extends JPanel implements Scrollable {
        private static final LogHelper log = Application.getLogger();
+       private static final Translator trans = Application.getTranslator();
        
        private static final int ROWS = 3;
        private static final int MAXCOLS = 6;
@@ -103,39 +105,57 @@ public class ComponentAddButtons extends JPanel implements Scrollable {
                
                ////////////////////////////////////////////
                
-
-               addButtonRow("Body components and fin sets", row,
-                               new BodyComponentButton(NoseCone.class, "Nose cone"),
-                               new BodyComponentButton(BodyTube.class, "Body tube"),
-                               new BodyComponentButton(Transition.class, "Transition"),
-                               new FinButton(TrapezoidFinSet.class, "Trapezoidal"), // TODO: MEDIUM: freer fin placing
-                               new FinButton(EllipticalFinSet.class, "Elliptical"),
-                               new FinButton(FreeformFinSet.class, "Freeform"),
-                               new FinButton(LaunchLug.class, "Launch lug"));
+               //// Body components and fin sets
+               addButtonRow(trans.get("compaddbuttons.Bodycompandfinsets"), row,
+                               //// Nose cone
+                               new BodyComponentButton(NoseCone.class, trans.get("compaddbuttons.Nosecone")),
+                               //// Body tube
+                               new BodyComponentButton(BodyTube.class, trans.get("compaddbuttons.Bodytube")),
+                               //// Transition
+                               new BodyComponentButton(Transition.class, trans.get("compaddbuttons.Transition")),
+                               //// Trapezoidal
+                               new FinButton(TrapezoidFinSet.class, trans.get("compaddbuttons.Trapezoidal")), // TODO: MEDIUM: freer fin placing
+                               //// Elliptical
+                               new FinButton(EllipticalFinSet.class, trans.get("compaddbuttons.Elliptical")),
+                               //// Freeform
+                               new FinButton(FreeformFinSet.class, trans.get("compaddbuttons.Freeform")),
+                               //// Launch lug
+                               new FinButton(LaunchLug.class, trans.get("compaddbuttons.Launchlug")));
                
                row++;
                
 
                /////////////////////////////////////////////
                
-               addButtonRow("Inner component", row,
-                               new ComponentButton(InnerTube.class, "Inner tube"),
-                               new ComponentButton(TubeCoupler.class, "Coupler"),
-                               new ComponentButton(CenteringRing.class, "Centering\nring"),
-                               new ComponentButton(Bulkhead.class, "Bulkhead"),
-                               new ComponentButton(EngineBlock.class, "Engine\nblock"));
+               //// Inner component
+               addButtonRow(trans.get("compaddbuttons.Innercomponent"), row,
+                               //// Inner tube
+                               new ComponentButton(InnerTube.class, trans.get("compaddbuttons.Innertube")),
+                               //// Coupler
+                               new ComponentButton(TubeCoupler.class, trans.get("compaddbuttons.Coupler")),
+                               //// Centering\nring
+                               new ComponentButton(CenteringRing.class, trans.get("compaddbuttons.Centeringring")),
+                               //// Bulkhead
+                               new ComponentButton(Bulkhead.class, trans.get("compaddbuttons.Bulkhead")),
+                               //// Engine\nblock
+                               new ComponentButton(EngineBlock.class, trans.get("compaddbuttons.Engineblock")));
                
                row++;
                
                ////////////////////////////////////////////
                
-               addButtonRow("Mass objects", row,
-                               new ComponentButton(Parachute.class, "Parachute"),
-                               new ComponentButton(Streamer.class, "Streamer"),
-                               new ComponentButton(ShockCord.class, "Shock cord"),
+               //// Mass objects
+               addButtonRow(trans.get("compaddbuttons.Massobjects"), row,
+                               //// Parachute
+                               new ComponentButton(Parachute.class, trans.get("compaddbuttons.Parachute")),
+                               //// Streamer
+                               new ComponentButton(Streamer.class, trans.get("compaddbuttons.Streamer")),
+                               //// Shock cord
+                               new ComponentButton(ShockCord.class, trans.get("compaddbuttons.Shockcord")),
                                //                              new ComponentButton("Motor clip"),
                                //                              new ComponentButton("Payload"),
-                               new ComponentButton(MassComponent.class, "Mass\ncomponent"));
+                               //// Mass\ncomponent
+                               new ComponentButton(MassComponent.class, trans.get("compaddbuttons.Masscomponent")));
                
 
                // Get maximum button size
@@ -511,20 +531,27 @@ public class ComponentAddButtons extends JPanel implements Scrollable {
                }
                
                private int askPosition() {
-                       Object[] options = { "Insert here", "Add to the end", "Cancel" };
+                       //// Insert here 
+                       //// Add to the end
+                       //// Cancel
+                       Object[] options = { trans.get("compaddbuttons.askPosition.Inserthere"), 
+                                       trans.get("compaddbuttons.askPosition.Addtotheend"), 
+                                       trans.get("compaddbuttons.askPosition.Cancel") };
                        
                        JPanel panel = new JPanel(new MigLayout());
-                       JCheckBox check = new JCheckBox("Do not ask me again");
+                       //// Do not ask me again
+                       JCheckBox check = new JCheckBox(trans.get("compaddbuttons.Donotaskmeagain"));
                        panel.add(check, "wrap");
-                       panel.add(new StyledLabel("You can change the default operation in the " +
-                                       "preferences.", -2));
+                       //// You can change the default operation in the preferences.
+                       panel.add(new StyledLabel(trans.get("compaddbuttons.lbl.Youcanchange"), -2));
                        
                        int sel = JOptionPane.showOptionDialog(null, // parent component 
+                                       //// Insert the component after the current component or as the last component?
                                        new Object[] {
-                                                       "Insert the component after the current component or as the last " +
-                                                                       "component?",
+                                       trans.get("compaddbuttons.lbl.insertcomp"),
                                                        panel },
-                                       "Select component position", // title
+                                                       //// Select component position
+                                                       trans.get("compaddbuttons.Selectcomppos"), // title
                                        JOptionPane.DEFAULT_OPTION, // default selections
                                        JOptionPane.QUESTION_MESSAGE, // dialog type
                                        null, // icon
index d1e47a30f1db929223d5df3afd89b7b9823d2b44..822577189707228812bff1f3d47e3b36e94b3548 100644 (file)
@@ -9,6 +9,7 @@ import javax.imageio.ImageIO;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.BodyTube;
 import net.sf.openrocket.rocketcomponent.Bulkhead;
 import net.sf.openrocket.rocketcomponent.CenteringRing;
@@ -25,10 +26,12 @@ import net.sf.openrocket.rocketcomponent.Streamer;
 import net.sf.openrocket.rocketcomponent.Transition;
 import net.sf.openrocket.rocketcomponent.TrapezoidFinSet;
 import net.sf.openrocket.rocketcomponent.TubeCoupler;
+import net.sf.openrocket.startup.Application;
 
 
 public class ComponentIcons {
-       
+       private static final Translator trans = Application.getTranslator();
+
        private static final String ICON_DIRECTORY = "pix/componenticons/";
        private static final String SMALL_SUFFIX = "-small.png";
        private static final String LARGE_SUFFIX = "-large.png";
@@ -41,22 +44,38 @@ public class ComponentIcons {
                new HashMap<Class<?>,ImageIcon>();
 
        static {
-               load("nosecone", "Nose cone", NoseCone.class);
-               load("bodytube", "Body tube", BodyTube.class);
-               load("transition", "Transition", Transition.class);
-               load("trapezoidfin", "Trapezoidal fin set", TrapezoidFinSet.class);
-               load("ellipticalfin", "Elliptical fin set", EllipticalFinSet.class);
-               load("freeformfin", "Freeform fin set", FreeformFinSet.class);
-               load("launchlug", "Launch lug", LaunchLug.class);
-               load("innertube", "Inner tube", InnerTube.class);
-               load("tubecoupler", "Tube coupler", TubeCoupler.class);
-               load("centeringring", "Centering ring", CenteringRing.class);
-               load("bulkhead", "Bulk head", Bulkhead.class);
-               load("engineblock", "Engine block", EngineBlock.class);
-               load("parachute", "Parachute", Parachute.class);
-               load("streamer", "Streamer", Streamer.class);
-               load("shockcord", "Shock cord", ShockCord.class);
-               load("mass", "Mass component", MassComponent.class);
+               //// Nose cone
+               load("nosecone", trans.get("ComponentIcons.Nosecone"), NoseCone.class);
+               //// Body tube
+               load("bodytube", trans.get("ComponentIcons.Bodytube"), BodyTube.class);
+               //// Transition
+               load("transition", trans.get("ComponentIcons.Transition"), Transition.class);
+               //// Trapezoidal fin set
+               load("trapezoidfin", trans.get("ComponentIcons.Trapezoidalfinset"), TrapezoidFinSet.class);
+               //// Elliptical fin set
+               load("ellipticalfin", trans.get("ComponentIcons.Ellipticalfinset"), EllipticalFinSet.class);
+               //// Freeform fin set
+               load("freeformfin", trans.get("ComponentIcons.Freeformfinset"), FreeformFinSet.class);
+               //// Launch lug
+               load("launchlug", trans.get("ComponentIcons.Launchlug"), LaunchLug.class);
+               //// Inner tube
+               load("innertube", trans.get("ComponentIcons.Innertube"), InnerTube.class);
+               //// Tube coupler
+               load("tubecoupler", trans.get("ComponentIcons.Tubecoupler"), TubeCoupler.class);
+               //// Centering ring
+               load("centeringring", trans.get("ComponentIcons.Centeringring"), CenteringRing.class);
+               //// Bulk head
+               load("bulkhead", trans.get("ComponentIcons.Bulkhead"), Bulkhead.class);
+               //// Engine block
+               load("engineblock", trans.get("ComponentIcons.Engineblock"), EngineBlock.class);
+               //// Parachute
+               load("parachute", trans.get("ComponentIcons.Parachute"), Parachute.class);
+               //// Streamer
+               load("streamer", trans.get("ComponentIcons.Streamer"), Streamer.class);
+               //// Shock cord
+               load("shockcord", trans.get("ComponentIcons.Shockcord"), ShockCord.class);
+               //// Mass component
+               load("mass", trans.get("ComponentIcons.Masscomponent"), MassComponent.class);
        }
        
        private static void load(String filename, String name, Class<?> componentClass) {
@@ -133,7 +152,8 @@ public class ComponentIcons {
                                
                        }
                        
-                       icons[1] = new ImageIcon(bi2,desc + " (disabled)");
+                       //// (disabled)
+                       icons[1] = new ImageIcon(bi2,desc + " " +trans.get("ComponentIcons.disabled"));
                
                return icons;
            } else {
index 76f3c633b4fc3163f5e27f467ae72e521e4d8cf0..625afdab34efc0232c65bfc4ba027ec15da028a2 100644 (file)
@@ -17,11 +17,13 @@ import net.sf.openrocket.document.OpenRocketDocument;
 import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.gui.components.StyledLabel;
 import net.sf.openrocket.gui.configdialog.ComponentConfigDialog;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
 import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.Stage;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Icons;
 import net.sf.openrocket.util.Pair;
 import net.sf.openrocket.util.Prefs;
@@ -59,7 +61,8 @@ public class RocketActions {
        private final RocketAction newStageAction;
        private final RocketAction moveUpAction;
        private final RocketAction moveDownAction;
-       
+       private static final Translator trans = Application.getTranslator();
+
 
        public RocketActions(OpenRocketDocument document, DocumentSelectionModel selectionModel,
                        BasicFrame parentFrame) {
@@ -207,19 +210,23 @@ public class RocketActions {
                boolean verify = Prefs.NODE.getBoolean(Prefs.CONFIRM_DELETE_SIMULATION, true);
                if (verify) {
                        JPanel panel = new JPanel(new MigLayout());
-                       JCheckBox dontAsk = new JCheckBox("Do not ask me again");
+                       //// Do not ask me again
+                       JCheckBox dontAsk = new JCheckBox(trans.get("RocketActions.checkbox.Donotaskmeagain"));
                        panel.add(dontAsk,"wrap");
-                       panel.add(new StyledLabel("You can change the default operation in the " +
-                                       "preferences.",-2));
+                       //// You can change the default operation in the preferences. 
+                       panel.add(new StyledLabel(trans.get("RocketActions.lbl.Youcanchangedefop"),-2));
 
                        int ret = JOptionPane.showConfirmDialog(
                                        parentFrame,
                                        new Object[] {
-                                       "Delete the selected simulations?",
-                                       "<html><i>This operation cannot be undone.</i>",
+                                       //// Delete the selected simulations?           
+                                       trans.get("RocketActions.showConfirmDialog.lbl1"),
+                                       //// <html><i>This operation cannot be undone.</i>
+                                       trans.get("RocketActions.showConfirmDialog.lbl2"),
                                        "",
                                        panel },
-                                       "Delete simulations",
+                                       //// Delete simulations
+                                       trans.get("RocketActions.showConfirmDialog.title"),
                                        JOptionPane.OK_CANCEL_OPTION,
                                        JOptionPane.WARNING_MESSAGE);
                        if (ret != JOptionPane.OK_OPTION)
@@ -278,8 +285,10 @@ public class RocketActions {
         */
        private class DeleteComponentAction extends RocketAction {
                public DeleteComponentAction() {
-                       this.putValue(NAME, "Delete");
-                       this.putValue(SHORT_DESCRIPTION, "Delete the selected component.");
+                       //// Delete
+                       this.putValue(NAME, trans.get("RocketActions.DelCompAct.Delete"));
+                       //// Delete the selected component.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.DelCompAct.ttip.Delete"));
                        this.putValue(MNEMONIC_KEY, KeyEvent.VK_D);
 //                     this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
                        this.putValue(SMALL_ICON, Icons.EDIT_DELETE);
@@ -311,8 +320,10 @@ public class RocketActions {
         */
        private class DeleteSimulationAction extends RocketAction {
                public DeleteSimulationAction() {
-                       this.putValue(NAME, "Delete");
-                       this.putValue(SHORT_DESCRIPTION, "Delete the selected simulation.");
+                       //// Delete
+                       this.putValue(NAME, trans.get("RocketActions.DelSimuAct.Delete"));
+                       //// Delete the selected simulation.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.DelSimuAct.ttip.Delete"));
                        this.putValue(MNEMONIC_KEY, KeyEvent.VK_D);
 //                     this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
                        this.putValue(SMALL_ICON, Icons.EDIT_DELETE);
@@ -344,8 +355,10 @@ public class RocketActions {
         */
        private class DeleteAction extends RocketAction {
                public DeleteAction() {
-                       this.putValue(NAME, "Delete");
-                       this.putValue(SHORT_DESCRIPTION, "Delete the selected component or simulation.");
+                       //// Delete
+                       this.putValue(NAME, trans.get("RocketActions.DelAct.Delete"));
+                       //// Delete the selected component or simulation.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.DelAct.ttip.Delete"));
                        this.putValue(MNEMONIC_KEY, KeyEvent.VK_D);
                        this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
                        this.putValue(SMALL_ICON, Icons.EDIT_DELETE);
@@ -377,11 +390,12 @@ public class RocketActions {
         */
        private class CutAction extends RocketAction {
                public CutAction() {
-                       this.putValue(NAME, "Cut");
+                       //// Cut
+                       this.putValue(NAME, trans.get("RocketActions.CutAction.Cut"));
                        this.putValue(MNEMONIC_KEY, KeyEvent.VK_T);
                        this.putValue(ACCELERATOR_KEY, CUT_KEY_STROKE);
-                       this.putValue(SHORT_DESCRIPTION, "Cut this component or simulation to "
-                                       + "the clipboard and remove from this design");
+                       //// Cut this component or simulation to the clipboard and remove from this design
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.CutAction.ttip.Cut"));
                        this.putValue(SMALL_ICON, Icons.EDIT_CUT);
                        clipboardChanged();
                }
@@ -427,11 +441,12 @@ public class RocketActions {
         */
        private class CopyAction extends RocketAction {
                public CopyAction() {
-                       this.putValue(NAME, "Copy");
+                       //// Copy
+                       this.putValue(NAME, trans.get("RocketActions.CopyAct.Copy"));
                        this.putValue(MNEMONIC_KEY, KeyEvent.VK_C);
                        this.putValue(ACCELERATOR_KEY, COPY_KEY_STROKE);
-                       this.putValue(SHORT_DESCRIPTION, "Copy this component (and subcomponents) to "
-                                       + "the clipboard.");
+                       //// Copy this component (and subcomponents) to the clipboard.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.CopyAct.Copy"));
                        this.putValue(SMALL_ICON, Icons.EDIT_COPY);
                        clipboardChanged();
                }
@@ -472,11 +487,12 @@ public class RocketActions {
         */
        private class PasteAction extends RocketAction {
                public PasteAction() {
-                       this.putValue(NAME, "Paste");
+                       //// Paste
+                       this.putValue(NAME, trans.get("RocketActions.PasteAct.Paste"));
                        this.putValue(MNEMONIC_KEY, KeyEvent.VK_P);
                        this.putValue(ACCELERATOR_KEY, PASTE_KEY_STROKE);
-                       this.putValue(SHORT_DESCRIPTION, "Paste the component or simulation on "
-                                       + "the clipboard to the design.");
+                       //// Paste the component or simulation on the clipboard to the design.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.PasteAct.ttip.Paste"));
                        this.putValue(SMALL_ICON, Icons.EDIT_PASTE);
                        clipboardChanged();
                }
@@ -534,8 +550,10 @@ public class RocketActions {
         */
        private class EditAction extends RocketAction {
                public EditAction() {
-                       this.putValue(NAME, "Edit");
-                       this.putValue(SHORT_DESCRIPTION, "Edit the selected component.");
+                       //// Edit
+                       this.putValue(NAME, trans.get("RocketActions.EditAct.Edit"));
+                       //// Edit the selected component.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.EditAct.ttip.Edit"));
                        clipboardChanged();
                }
 
@@ -565,8 +583,10 @@ public class RocketActions {
         */
        private class NewStageAction extends RocketAction {
                public NewStageAction() {
-                       this.putValue(NAME, "New stage");
-                       this.putValue(SHORT_DESCRIPTION, "Add a new stage to the rocket design.");
+                       //// New stage
+                       this.putValue(NAME, trans.get("RocketActions.NewStageAct.Newstage"));
+                       //// Add a new stage to the rocket design.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.NewStageAct.Newstage"));
                        clipboardChanged();
                }
 
@@ -576,7 +596,9 @@ public class RocketActions {
                        ComponentConfigDialog.hideDialog();
 
                        RocketComponent stage = new Stage();
-                       stage.setName("Booster stage");
+                       //// Booster stage
+                       stage.setName(trans.get("RocketActions.ActBoosterstage"));
+                       //// Add stage
                        document.addUndoPosition("Add stage");
                        rocket.addChild(stage);
                        rocket.getDefaultConfiguration().setAllStages();
@@ -599,8 +621,10 @@ public class RocketActions {
         */
        private class MoveUpAction extends RocketAction {
                public MoveUpAction() {
-                       this.putValue(NAME, "Move up");
-                       this.putValue(SHORT_DESCRIPTION, "Move this component upwards.");
+                       //// Move up
+                       this.putValue(NAME, trans.get("RocketActions.MoveUpAct.Moveup"));
+                       //// Move this component upwards.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.MoveUpAct.ttip.Moveup"));
                        clipboardChanged();
                }
 
@@ -640,8 +664,10 @@ public class RocketActions {
         */
        private class MoveDownAction extends RocketAction {
                public MoveDownAction() {
-                       this.putValue(NAME, "Move down");
-                       this.putValue(SHORT_DESCRIPTION, "Move this component downwards.");
+                       //// Move down
+                       this.putValue(NAME, trans.get("RocketActions.MoveDownAct.Movedown"));
+                       //// Move this component downwards.
+                       this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.MoveDownAct.ttip.Movedown"));
                        clipboardChanged();
                }
 
index 16e4d06f2c46fc937adb7dae8d79fb2f014eb658..501f79b00e7f47faad4ffdd81eda7dffcaf89c0d 100644 (file)
@@ -42,6 +42,7 @@ import net.sf.openrocket.gui.components.UnitSelector;
 import net.sf.openrocket.gui.plot.Axis;
 import net.sf.openrocket.gui.plot.PlotConfiguration;
 import net.sf.openrocket.gui.plot.SimulationPlotPanel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.models.atmosphere.ExtendedISAModel;
 import net.sf.openrocket.rocketcomponent.Configuration;
 import net.sf.openrocket.simulation.FlightData;
@@ -51,6 +52,7 @@ import net.sf.openrocket.simulation.GUISimulationConditions;
 import net.sf.openrocket.simulation.FlightDataType;
 import net.sf.openrocket.simulation.listeners.SimulationListener;
 import net.sf.openrocket.simulation.listeners.example.CSVSaveListener;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.Chars;
@@ -81,14 +83,16 @@ public class SimulationEditDialog extends JDialog {
        private final Simulation simulation;
        private final GUISimulationConditions conditions;
        private final Configuration configuration;
-       
+       private static final Translator trans = Application.getTranslator();
+
        
        public SimulationEditDialog(Window parent, Simulation s) {
                this(parent, s, 0);
        }       
        
        public SimulationEditDialog(Window parent, Simulation s, int tab) {
-               super(parent, "Edit simulation", JDialog.ModalityType.DOCUMENT_MODAL);
+               //// Edit simulation
+               super(parent, trans.get("simedtdlg.title.Editsim"), JDialog.ModalityType.DOCUMENT_MODAL);
                
                this.parentWindow = parent;
                this.simulation = s;
@@ -97,7 +101,8 @@ public class SimulationEditDialog extends JDialog {
                
                JPanel mainPanel = new JPanel(new MigLayout("fill","[grow, fill]"));
                
-               mainPanel.add(new JLabel("Simulation name: "), "span, split 2, shrink");
+               //// Simulation name:
+               mainPanel.add(new JLabel(trans.get("simedtdlg.lbl.Simname") + " "), "span, split 2, shrink");
                final JTextField field = new JTextField(simulation.getName());
                field.getDocument().addDocumentListener(new DocumentListener() {
                        @Override
@@ -125,11 +130,14 @@ public class SimulationEditDialog extends JDialog {
                
                JTabbedPane tabbedPane = new JTabbedPane();
                
-               
-               tabbedPane.addTab("Launch conditions", flightConditionsTab());
-               tabbedPane.addTab("Simulation options", simulationOptionsTab());
-               tabbedPane.addTab("Plot data", plotTab());
-               tabbedPane.addTab("Export data", exportTab());
+               //// Launch conditions
+               tabbedPane.addTab(trans.get("simedtdlg.tab.Launchcond"), flightConditionsTab());
+               //// Simulation options
+               tabbedPane.addTab(trans.get("simedtdlg.tab.Simopt"), simulationOptionsTab());
+               //// Plot data
+               tabbedPane.addTab(trans.get("simedtdlg.tab.Plotdata"), plotTab());
+               //// Export data
+               tabbedPane.addTab(trans.get("simedtdlg.tab.Exportdata"), exportTab());
                
                // Select the initial tab
                if (tab == EDIT) {
@@ -151,7 +159,8 @@ public class SimulationEditDialog extends JDialog {
                mainPanel.add(new JPanel(), "spanx, split, growx");
 
                JButton button;
-               button = new JButton("Run simulation");
+               //// Run simulation button
+               button = new JButton(trans.get("simedtdlg.but.runsimulation"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -161,8 +170,8 @@ public class SimulationEditDialog extends JDialog {
                });
                mainPanel.add(button, "gapright para");
                
-               
-               JButton close = new JButton("Close");
+               //// Close button 
+               JButton close = new JButton(trans.get("dlg.but.close"));
                close.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -194,12 +203,15 @@ public class SimulationEditDialog extends JDialog {
                JSpinner spin;
                
                //// Motor selector
-               JLabel label = new JLabel("Motor configuration:");
-               label.setToolTipText("Select the motor configuration to use.");
+               //// Motor configuration:
+               JLabel label = new JLabel(trans.get("simedtdlg.lbl.Motorcfg"));
+               //// Select the motor configuration to use.
+               label.setToolTipText(trans.get("simedtdlg.lbl.ttip.Motorcfg"));
                panel.add(label, "shrinkx, spanx, split 2");
                
                JComboBox combo = new JComboBox(new MotorConfigurationModel(configuration));
-               combo.setToolTipText("Select the motor configuration to use.");
+               //// Select the motor configuration to use.
+               combo.setToolTipText(trans.get("simedtdlg.combo.ttip.motorconf"));
                combo.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -212,13 +224,16 @@ public class SimulationEditDialog extends JDialog {
                //// Wind settings:  Average wind speed, turbulence intensity, std. deviation
                sub = new JPanel(new MigLayout("fill, gap rel unrel",
                                "[grow][65lp!][30lp!][75lp!]",""));
-               sub.setBorder(BorderFactory.createTitledBorder("Wind"));
+               //// Wind
+               sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.lbl.Wind")));
                panel.add(sub, "growx, split 2, aligny 0, flowy, gapright para");
 
 
                // Wind average
-               label = new JLabel("Average windspeed:");
-               tip = "The average windspeed relative to the ground.";
+               //// Average windspeed:
+               label = new JLabel(trans.get("simedtdlg.lbl.Averwindspeed"));
+               //// The average windspeed relative to the ground.
+               tip = trans.get("simedtdlg.lbl.ttip.Averwindspeed");
                label.setToolTipText(tip);
                sub.add(label);
                
@@ -239,10 +254,11 @@ public class SimulationEditDialog extends JDialog {
 
 
                // Wind std. deviation
-               label = new JLabel("Standard deviation:");
-               tip = "<html>The standard deviation of the windspeed.<br>" +
-                               "The windspeed is within twice the standard deviation from the average for " +
-                               "95% of the time.";
+               //// Standard deviation:
+               label = new JLabel(trans.get("simedtdlg.lbl.Stddeviation"));
+               //// <html>The standard deviation of the windspeed.<br>
+               //// The windspeed is within twice the standard deviation from the average for 95% of the time.
+               tip = trans.get("simedtdlg.lbl.ttip.Stddeviation");
                label.setToolTipText(tip);
                sub.add(label);
                
@@ -264,12 +280,15 @@ public class SimulationEditDialog extends JDialog {
                                
 
                // Wind turbulence intensity
-               label = new JLabel("Turbulence intensity:");
-               tip = "<html>The turbulence intensity is the standard deviation " +
-                       "divided by the average windspeed.<br>" +
-                       "Typical values range from "+
+               //// Turbulence intensity:
+               label = new JLabel(trans.get("simedtdlg.lbl.Turbulenceintensity"));
+               //// <html>The turbulence intensity is the standard deviation divided by the average windspeed.<br>
+               //// Typical values range from 
+               //// to
+               tip = trans.get("simedtdlg.lbl.ttip.Turbulenceintensity1") +
+                       trans.get("simedtdlg.lbl.ttip.Turbulenceintensity2") + " "+
                        UnitGroup.UNITS_RELATIVE.getDefaultUnit().toStringUnit(0.05) +
-                       " to " +
+                       " " + trans.get("simedtdlg.lbl.ttip.Turbulenceintensity3") +" " +
                        UnitGroup.UNITS_RELATIVE.getDefaultUnit().toStringUnit(0.20) + ".";
                label.setToolTipText(tip);
                sub.add(label);
@@ -304,24 +323,30 @@ public class SimulationEditDialog extends JDialog {
                //// Temperature and pressure
                sub = new JPanel(new MigLayout("fill, gap rel unrel",
                                "[grow][65lp!][30lp!][75lp!]",""));
-               sub.setBorder(BorderFactory.createTitledBorder("Atmospheric conditions"));
+               //// Atmospheric conditions
+               sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Atmoscond")));
                panel.add(sub, "growx, aligny 0, gapright para");
 
                
                BooleanModel isa = new BooleanModel(conditions, "ISAAtmosphere");
                JCheckBox check = new JCheckBox(isa);
-               check.setText("Use International Standard Atmosphere");
-               check.setToolTipText("<html>Select to use the International Standard Atmosphere model."+
-                               "<br>This model has a temperature of " + 
+               //// Use International Standard Atmosphere
+               check.setText(trans.get("simedtdlg.checkbox.InterStdAtmosphere"));
+               //// <html>Select to use the International Standard Atmosphere model.
+               //// <br>This model has a temperature of
+               //// and a pressure of
+               //// at sea level.
+               check.setToolTipText(trans.get("simedtdlg.checkbox.ttip.InterStdAtmosphere1") +" " + 
                                UnitGroup.UNITS_TEMPERATURE.toStringUnit(ExtendedISAModel.STANDARD_TEMPERATURE)+
-                               " and a pressure of " +
+                               " " + trans.get("simedtdlg.checkbox.ttip.InterStdAtmosphere2") + " " +
                                UnitGroup.UNITS_PRESSURE.toStringUnit(ExtendedISAModel.STANDARD_PRESSURE) +
-                               " at sea level.");
+                               " " + trans.get("simedtdlg.checkbox.ttip.InterStdAtmosphere3"));
                sub.add(check, "spanx, wrap unrel");
                
-               // Temperature
-               label = new JLabel("Temperature:");
-               tip = "The temperature at the launch site.";
+               // Temperature:
+               label = new JLabel(trans.get("simedtdlg.lbl.Temperature"));
+               //// The temperature at the launch site.
+               tip = trans.get("simedtdlg.lbl.ttip.Temperature");
                label.setToolTipText(tip);
                isa.addEnableComponent(label, false);
                sub.add(label);
@@ -345,9 +370,10 @@ public class SimulationEditDialog extends JDialog {
                
 
                
-               // Pressure
-               label = new JLabel("Pressure:");
-               tip = "The atmospheric pressure at the launch site.";
+               // Pressure:
+               label = new JLabel(trans.get("simedtdlg.lbl.Pressure"));
+               //// The atmospheric pressure at the launch site.
+               tip = trans.get("simedtdlg.lbl.ttip.Pressure");
                label.setToolTipText(tip);
                isa.addEnableComponent(label, false);
                sub.add(label);
@@ -376,15 +402,16 @@ public class SimulationEditDialog extends JDialog {
                //// Launch site conditions
                sub = new JPanel(new MigLayout("fill, gap rel unrel",
                                "[grow][65lp!][30lp!][75lp!]",""));
-               sub.setBorder(BorderFactory.createTitledBorder("Launch site"));
+               //// Launch site
+               sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.lbl.Launchsite")));
                panel.add(sub, "growx, split 2, aligny 0, flowy");
 
                
-               // Latitude
-               label = new JLabel("Latitude:");
-               tip = "<html>The launch site latitude affects the gravitational pull of Earth.<br>" +
-                       "Positive values are on the Northern hemisphere, negative values on the " +
-                       "Southern hemisphere.";
+               // Latitude:
+               label = new JLabel(trans.get("simedtdlg.lbl.Latitude"));
+               //// <html>The launch site latitude affects the gravitational pull of Earth.<br>
+               //// Positive values are on the Northern hemisphere, negative values on the Southern hemisphere.
+               tip = trans.get("simedtdlg.lbl.ttip.Latitude");
                label.setToolTipText(tip);
                sub.add(label);
                
@@ -404,10 +431,11 @@ public class SimulationEditDialog extends JDialog {
                
 
                
-               // Altitude
-               label = new JLabel("Altitude:");
-               tip = "<html>The launch altitude above mean sea level.<br>" +
-                               "This affects the position of the rocket in the atmospheric model.";
+               // Altitude:
+               label = new JLabel(trans.get("simedtdlg.lbl.Altitude"));
+               //// <html>The launch altitude above mean sea level.<br> 
+               //// This affects the position of the rocket in the atmospheric model.
+               tip = trans.get("simedtdlg.lbl.ttip.Altitude");
                label.setToolTipText(tip);
                sub.add(label);
                
@@ -432,13 +460,15 @@ public class SimulationEditDialog extends JDialog {
                //// Launch rod
                sub = new JPanel(new MigLayout("fill, gap rel unrel",
                                "[grow][65lp!][30lp!][75lp!]",""));
-               sub.setBorder(BorderFactory.createTitledBorder("Launch rod"));
+               //// Launch rod
+               sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Launchrod")));
                panel.add(sub, "growx, aligny 0, wrap");
 
                
-               // Length
-               label = new JLabel("Length:");
-               tip = "The length of the launch rod.";
+               // Length:
+               label = new JLabel(trans.get("simedtdlg.lbl.Length"));
+               //// The length of the launch rod.
+               tip = trans.get("simedtdlg.lbl.ttip.Length");
                label.setToolTipText(tip);
                sub.add(label);
                
@@ -458,9 +488,10 @@ public class SimulationEditDialog extends JDialog {
                
 
                
-               // Angle
-               label = new JLabel("Angle:");
-               tip = "The angle of the launch rod from vertical.";
+               // Angle:
+               label = new JLabel(trans.get("simedtdlg.lbl.Angle"));
+               //// The angle of the launch rod from vertical.
+               tip = trans.get("simedtdlg.lbl.ttip.Angle");
                label.setToolTipText(tip);
                sub.add(label);
                
@@ -482,13 +513,16 @@ public class SimulationEditDialog extends JDialog {
                
 
                
-               // Direction
-               label = new JLabel("Direction:");
-               tip = "<html>Direction of the launch rod relative to the wind.<br>" +
+               // Direction:
+               label = new JLabel(trans.get("simedtdlg.lbl.Direction"));
+               //// <html>Direction of the launch rod relative to the wind.<br>
+               ////  = towards the wind, 
+               ////  = downwind.
+               tip = trans.get("simedtdlg.lbl.ttip.Direction1") +
                                UnitGroup.UNITS_ANGLE.toStringUnit(0) +
-                               " = towards the wind, "+
+                               " " + trans.get("simedtdlg.lbl.ttip.Direction2") + " "+
                                UnitGroup.UNITS_ANGLE.toStringUnit(Math.PI) +
-                               " = downwind.";
+                               " " + trans.get("simedtdlg.lbl.ttip.Direction3");
                label.setToolTipText(tip);
                sub.add(label);
                
@@ -513,18 +547,25 @@ public class SimulationEditDialog extends JDialog {
        
        private String getIntensityDescription(double i) {
                if (i < 0.001)
-                       return "None";
+                       //// None
+                       return trans.get("simedtdlg.IntensityDesc.None");
                if (i < 0.05)
-                       return "Very low";
+                       //// Very low
+                       return trans.get("simedtdlg.IntensityDesc.Verylow");
                if (i < 0.10)
-                       return "Low";
+                       //// Low
+                       return trans.get("simedtdlg.IntensityDesc.Low");
                if (i < 0.15)
-                       return "Medium";
+                       //// Medium
+                       return trans.get("simedtdlg.IntensityDesc.Medium");
                if (i < 0.20)
-                       return "High";
+                       //// High
+                       return trans.get("simedtdlg.IntensityDesc.High");
                if (i < 0.25)
-                       return "Very high";
-               return "Extreme";
+                       //// Very high
+                       return trans.get("simedtdlg.IntensityDesc.Veryhigh");
+               //// Extreme
+               return trans.get("simedtdlg.IntensityDesc.Extreme");
        }
 
        
@@ -543,32 +584,35 @@ public class SimulationEditDialog extends JDialog {
                //// Simulation options
                sub = new JPanel(new MigLayout("fill, gap rel unrel",
                                "[grow][65lp!][30lp!][75lp!]",""));
-               sub.setBorder(BorderFactory.createTitledBorder("Simulator options"));
+               //// Simulator options
+               sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Simopt")));
                panel.add(sub, "w 330lp!, growy, aligny 0");
 
                
                //  Calculation method
-               tip = "<html>" +
-                               "The Extended Barrowman method calculates aerodynamic forces according <br>" +
-                               "to the Barrowman equations extended to accommodate more components.";
+               //// <html>The Extended Barrowman method calculates aerodynamic forces according <br>
+               //// to the Barrowman equations extended to accommodate more components.
+               tip = trans.get("simedtdlg.lbl.ttip.Calcmethod");
 
-               label = new JLabel("Calculation method:");
+               //// Calculation method:
+               label = new JLabel(trans.get("simedtdlg.lbl.Calcmethod"));
                label.setToolTipText(tip);
                sub.add(label, "gaptop unrel, gapright para, spanx, split 2, w 150lp!");
                
-               label = new JLabel("Extended Barrowman");
+               //// Extended Barrowman
+               label = new JLabel(trans.get("simedtdlg.lbl.ExtBarrowman"));
                label.setToolTipText(tip);
                sub.add(label, "growx, wrap para");
                
                
                //  Simulation method
-               tip = "<html>" +
-                               "The six degree-of-freedom simulator allows the rocket total freedom during " +
-                               "flight.<br>" +
-                               "Integration is performed using a 4<sup>th</sup> order Runge-Kutta 4 " +
-                               "numerical integration.";
+               //// <html>The six degree-of-freedom simulator allows the rocket total freedom during flight.<br>
+               //// Integration is performed using a 4<sup>th</sup> order Runge-Kutta 4 numerical integration.
+               tip = trans.get("simedtdlg.lbl.ttip.Simmethod1") +
+               trans.get("simedtdlg.lbl.ttip.Simmethod2");
 
-               label = new JLabel("Simulation method:");
+               //// Simulation method:
+               label = new JLabel(trans.get("simedtdlg.lbl.Simmethod"));
                label.setToolTipText(tip);
                sub.add(label, "gaptop unrel, gapright para, spanx, split 2, w 150lp!");
                
@@ -578,11 +622,13 @@ public class SimulationEditDialog extends JDialog {
                
                
                // Wind average
-               label = new JLabel("Time step:");
-               tip = "<html>The time between simulation steps.<br>" +
-               "A smaller time step results in a more accurate but slower simulation.<br>" +
-                               "The 4<sup>th</sup> order simulation method is quite accurate with a time " +
-                               "step of " +
+               //// Time step:
+               label = new JLabel(trans.get("simedtdlg.lbl.Timestep"));
+               //// <html>The time between simulation steps.<br>
+               //// A smaller time step results in a more accurate but slower simulation.<br>
+               //// The 4<sup>th</sup> order simulation method is quite accurate with a time step of 
+               tip = trans.get("simedtdlg.lbl.ttip.Timestep1") +
+               trans.get("simedtdlg.lbl.ttip.Timestep2") + " " +
                                UnitGroup.UNITS_TIME_STEP.toStringUnit(RK4SimulationStepper.RECOMMENDED_TIME_STEP) +
                                ".";
                label.setToolTipText(tip);
@@ -631,8 +677,10 @@ public class SimulationEditDialog extends JDialog {
                sub.add(slider,"w 75lp, wrap para");
                */
 
-               JButton button = new JButton("Reset to default");
-               button.setToolTipText("Reset the time step to its default value (" +
+               //// Reset to default button
+               JButton button = new JButton(trans.get("simedtdlg.but.resettodefault"));
+               //// Reset the time step to its default value (
+               button.setToolTipText(trans.get("simedtdlg.but.ttip.resettodefault") +
                                UnitGroup.UNITS_SHORT_TIME.toStringUnit(RK4SimulationStepper.RECOMMENDED_TIME_STEP) +
                                ").");
                button.addActionListener(new ActionListener() {
@@ -654,20 +702,20 @@ public class SimulationEditDialog extends JDialog {
                
                //// Simulation listeners
                sub = new JPanel(new MigLayout("fill, gap 0 0"));
-               sub.setBorder(BorderFactory.createTitledBorder("Simulator listeners"));
+               //// Simulator listeners
+               sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Simlist")));
                panel.add(sub, "growx, growy");
                
                
                DescriptionArea desc = new DescriptionArea(5);
-               desc.setText("<html>" +
-                               "<i>Simulation listeners</i> is an advanced feature that allows "+
-                               "user-written code to listen to and interact with the simulation.  " +
-                               "For details on writing simulation listeners, see the OpenRocket " +
-                               "technical documentation.");
+               //// <html><i>Simulation listeners</i> is an advanced feature that allows user-written code to listen to and interact with the simulation.  
+               //// For details on writing simulation listeners, see the OpenRocket technical documentation.
+               desc.setText(trans.get("simedtdlg.txt.longA1") +
+                               trans.get("simedtdlg.txt.longA2"));
                sub.add(desc, "aligny 0, growx, wrap para");
                
-               
-               label = new JLabel("Current listeners:");
+               //// Current listeners:
+               label = new JLabel(trans.get("simedtdlg.lbl.Curlist"));
                sub.add(label, "spanx, wrap rel");
 
                final ListenerListModel listenerModel = new ListenerListModel();
@@ -677,17 +725,19 @@ public class SimulationEditDialog extends JDialog {
 //             scroll.setPreferredSize(new Dimension(1,1));
                sub.add(scroll, "height 1px, grow, wrap rel");
                
-               
-               button = new JButton("Add");
+               //// Add button
+               button = new JButton(trans.get("simedtdlg.but.add"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                String previous = Prefs.NODE.get("previousListenerName", "");
                                String input = (String)JOptionPane.showInputDialog(SimulationEditDialog.this,
                                                new Object[] {
+                                               //// Type the full Java class name of the simulation listener, for example:
                                                "Type the full Java class name of the simulation listener, for example:",
                                                "<html><tt>" + CSVSaveListener.class.getName() + "</tt>" },
-                                               "Add simulation listener",
+                                               //// Add simulation listener
+                                               trans.get("simedtdlg.lbl.Addsimlist"),
                                                JOptionPane.QUESTION_MESSAGE,
                                                null, null,
                                                previous
@@ -702,7 +752,8 @@ public class SimulationEditDialog extends JDialog {
                });
                sub.add(button, "split 2, sizegroup buttons, alignx 50%, gapright para");
                
-               button = new JButton("Remove");
+               //// Remove button
+               button = new JButton(trans.get("simedtdlg.but.remove"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -783,9 +834,11 @@ public class SimulationEditDialog extends JDialog {
                JPanel panel = new JPanel(new MigLayout("fill"));
                
                // No data available
-               panel.add(new JLabel("No flight data available."),
+               //// No flight data available.
+               panel.add(new JLabel(trans.get("simedtdlg.lbl.Noflightdata")),
                "alignx 50%, aligny 100%, wrap para");
-               panel.add(new JLabel("Please run the simulation first."),
+               //// Please run the simulation first.
+               panel.add(new JLabel(trans.get("simedtdlg.lbl.runsimfirst")),
                "alignx 50%, aligny 0%, wrap");
                return panel;
        }
@@ -842,7 +895,8 @@ public class SimulationEditDialog extends JDialog {
                
                // Create the chart using the factory to get all default settings
         JFreeChart chart = ChartFactory.createXYLineChart(
-            "Simulated flight",
+            //// Simulated flight
+               trans.get("simedtdlg.chart.Simflight"),
             null, 
             null, 
             null,
@@ -881,7 +935,8 @@ public class SimulationEditDialog extends JDialog {
                
                
                // Create the dialog
-               final JDialog dialog = new JDialog(this, "Simulation results");
+               //// Simulation results
+               final JDialog dialog = new JDialog(this, trans.get("simedtdlg.dlg.Simres"));
                dialog.setModalityType(ModalityType.DOCUMENT_MODAL);
                
                JPanel panel = new JPanel(new MigLayout("fill"));
@@ -901,7 +956,8 @@ public class SimulationEditDialog extends JDialog {
                
                panel.add(chartPanel, "grow, wrap 20lp");
 
-               JButton button = new JButton("Close");
+               //// Close button
+               JButton button = new JButton(trans.get("dlg.but.close"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -965,9 +1021,11 @@ public class SimulationEditDialog extends JDialog {
 
                        if (ex == null) {
                                setIcon(Icons.SIMULATION_LISTENER_OK);
+                               //// Listener instantiated successfully.
                                setToolTipText("Listener instantiated successfully.");
                        } else {
                                setIcon(Icons.SIMULATION_LISTENER_ERROR);
+                               //// <html>Unable to instantiate listener due to exception:<br>
                                setToolTipText("<html>Unable to instantiate listener due to exception:<br>" +
                                                ex.toString());
                        }
index 1760ed54d81be4435d6be3cdb4194293681eed42..6a4bef03c65c0c5fbc38fc7f8331445578a2d83c 100644 (file)
@@ -34,6 +34,7 @@ import net.sf.openrocket.document.events.SimulationChangeEvent;
 import net.sf.openrocket.gui.adaptors.Column;
 import net.sf.openrocket.gui.adaptors.ColumnTableModel;
 import net.sf.openrocket.gui.components.StyledLabel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
 import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
@@ -45,6 +46,8 @@ import net.sf.openrocket.util.Prefs;
 
 public class SimulationPanel extends JPanel {
        private static final LogHelper log = Application.getLogger();
+       private static final Translator trans = Application.getTranslator();
+
        
        private static final Color WARNING_COLOR = Color.RED;
        private static final String WARNING_TEXT = "\uFF01"; // Fullwidth exclamation mark
@@ -72,8 +75,10 @@ public class SimulationPanel extends JPanel {
 
                ////////  The simulation action buttons
                
-               button = new JButton("New simulation");
-               button.setToolTipText("Add a new simulation");
+               //// New simulation button
+               button = new JButton(trans.get("simpanel.but.newsimulation"));
+               //// Add a new simulation
+               button.setToolTipText(trans.get("simpanel.but.ttip.newsimulation"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -91,8 +96,10 @@ public class SimulationPanel extends JPanel {
                });
                this.add(button, "skip 1, gapright para");
                
-               button = new JButton("Edit simulation");
-               button.setToolTipText("Edit the selected simulation");
+               //// Edit simulation button
+               button = new JButton(trans.get("simpanel.but.editsimulation"));
+               //// Edit the selected simulation
+               button.setToolTipText(trans.get("simpanel.but.ttip.editsim"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -109,8 +116,10 @@ public class SimulationPanel extends JPanel {
                });
                this.add(button, "gapright para");
                
-               button = new JButton("Run simulations");
-               button.setToolTipText("Re-run the selected simulations");
+               //// Run simulations
+               button = new JButton(trans.get("simpanel.but.runsimulations"));
+               //// Re-run the selected simulations
+               button.setToolTipText(trans.get("simpanel.but.ttip.runsimu"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -133,8 +142,10 @@ public class SimulationPanel extends JPanel {
                });
                this.add(button, "gapright para");
                
-               button = new JButton("Delete simulations");
-               button.setToolTipText("Delete the selected simulations");
+               //// Delete simulations button
+               button = new JButton(trans.get("simpanel.but.deletesimulations"));
+               //// Delete the selected simulations
+               button.setToolTipText(trans.get("simpanel.but.ttip.deletesim"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -147,18 +158,22 @@ public class SimulationPanel extends JPanel {
                                if (verify) {
                                        
                                        JPanel panel = new JPanel(new MigLayout());
-                                       JCheckBox dontAsk = new JCheckBox("Do not ask me again");
+                                       //// Do not ask me again
+                                       JCheckBox dontAsk = new JCheckBox(trans.get("simpanel.checkbox.donotask"));
                                        panel.add(dontAsk, "wrap");
-                                       panel.add(new StyledLabel("You can change the default operation in the " +
-                                                               "preferences.", -2));
+                                       //// You can change the default operation in the preferences.
+                                       panel.add(new StyledLabel(trans.get("simpanel.lbl.defpref"), -2));
                                        
                                        int ret = JOptionPane.showConfirmDialog(SimulationPanel.this,
                                                                new Object[] {
-                                                                               "Delete the selected simulations?",
-                                                                               "<html><i>This operation cannot be undone.</i>",
+                                                                               //// Delete the selected simulations?
+                                                                               trans.get("simpanel.dlg.lbl.DeleteSim1"),
+                                                                               //// <html><i>This operation cannot be undone.</i>
+                                                                               trans.get("simpanel.dlg.lbl.DeleteSim2"),
                                                                                "",
                                                                                panel },
-                                                               "Delete simulations",
+                                                               //// Delete simulations
+                                                                               trans.get("simpanel.dlg.lbl.DeleteSim3"),
                                                                JOptionPane.OK_CANCEL_OPTION,
                                                                JOptionPane.WARNING_MESSAGE);
                                        if (ret != JOptionPane.OK_OPTION)
@@ -182,8 +197,8 @@ public class SimulationPanel extends JPanel {
                });
                this.add(button, "gapright para");
                
-
-               button = new JButton("Plot / export");
+               //// Plot / export button
+               button = new JButton(trans.get("simpanel.but.plotexport"));
                //              button = new JButton("Plot flight");
                button.addActionListener(new ActionListener() {
                        @Override
@@ -264,7 +279,8 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Simulation name
-                               new Column("Name") {
+                               //// Name
+                               new Column(trans.get("simpanel.col.Name")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -279,7 +295,8 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Simulation motors
-                               new Column("Motors") {
+                               //// Motors
+                               new Column(trans.get("simpanel.col.Motors")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -295,7 +312,7 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Apogee
-                               new Column("Apogee") {
+                               new Column(trans.get("simpanel.col.Apogee")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -311,7 +328,7 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Maximum velocity
-                               new Column("Max. velocity") {
+                               new Column(trans.get("simpanel.col.Maxvelocity")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -327,7 +344,7 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Maximum acceleration
-                               new Column("Max. acceleration") {
+                               new Column(trans.get("simpanel.col.Maxacceleration")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -343,7 +360,7 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Time to apogee
-                               new Column("Time to apogee") {
+                               new Column(trans.get("simpanel.col.Timetoapogee")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -359,7 +376,7 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Flight time
-                               new Column("Flight time") {
+                               new Column(trans.get("simpanel.col.Flighttime")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -375,7 +392,7 @@ public class SimulationPanel extends JPanel {
                                },
 
                                //// Ground hit velocity
-                               new Column("Ground hit velocity") {
+                               new Column(trans.get("simpanel.col.Groundhitvelocity")) {
                                        @Override
                                        public Object getValueAt(int row) {
                                                if (row < 0 || row >= document.getSimulationCount())
@@ -522,10 +539,12 @@ 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>";
                                break;
                        
                        case LOADED:
+                               //// <i>Data loaded from a file</i><br>
                                tip += "<i>Data loaded from a file</i><br>";
                                break;
                        
index 9b94ec615c58ae282b792121109b816e3a0cb651..96693eb69730501ff264ac41a71c13d29c9b0fc8 100644 (file)
@@ -25,6 +25,7 @@ import javax.swing.JProgressBar;
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.gui.dialogs.DetailDialog;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.rocketcomponent.Configuration;
 import net.sf.openrocket.rocketcomponent.MotorMount;
@@ -46,6 +47,8 @@ import net.sf.openrocket.util.Prefs;
 
 public class SimulationRunDialog extends JDialog {
        private static final LogHelper log = Application.getLogger();
+       private static final Translator trans = Application.getTranslator();
+
        
        /** Update the dialog status every this many ms */
        private static final long UPDATE_MS = 200;
@@ -83,7 +86,8 @@ public class SimulationRunDialog extends JDialog {
        private final boolean[] simulationDone;
        
        public SimulationRunDialog(Window window, Simulation... simulations) {
-               super(window, "Running simulations...", Dialog.ModalityType.DOCUMENT_MODAL);
+               //// Running simulations...
+               super(window, trans.get("SimuRunDlg.title.RunSim"), Dialog.ModalityType.DOCUMENT_MODAL);
                
                if (simulations.length == 0) {
                        throw new IllegalArgumentException("Called with no simulations to run");
@@ -109,18 +113,21 @@ public class SimulationRunDialog extends JDialog {
                // Build the dialog
                JPanel panel = new JPanel(new MigLayout("fill", "[][grow]"));
                
-               simLabel = new JLabel("Running ...");
+               //// Running ...
+               simLabel = new JLabel(trans.get("SimuRunDlg.lbl.Running"));
                panel.add(simLabel, "spanx, wrap para");
-               
-               panel.add(new JLabel("Simulation time: "), "gapright para");
+               //// Simulation time: 
+               panel.add(new JLabel(trans.get("SimuRunDlg.lbl.Simutime") + " "), "gapright para");
                timeLabel = new JLabel("");
                panel.add(timeLabel, "growx, wrap rel");
                
-               panel.add(new JLabel("Altitude: "));
+               //// Altitude:
+               panel.add(new JLabel(trans.get("SimuRunDlg.lbl.Altitude") + " "));
                altLabel = new JLabel("");
                panel.add(altLabel, "growx, wrap rel");
                
-               panel.add(new JLabel("Velocity: "));
+               //// Velocity:
+               panel.add(new JLabel(trans.get("SimuRunDlg.lbl.Velocity") +" "));
                velLabel = new JLabel("");
                panel.add(velLabel, "growx, wrap para");
                
@@ -129,7 +136,7 @@ public class SimulationRunDialog extends JDialog {
                
 
                // Add cancel button
-               JButton cancel = new JButton("Cancel");
+               JButton cancel = new JButton(trans.get("dlg.but.cancel"));
                cancel.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -380,7 +387,8 @@ public class SimulationRunDialog extends JDialog {
                                
                                DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this,
                                                new Object[] {
-                                                               "Unable to simulate:",
+                                                               //// Unable to simulate:
+                                                               trans.get("SimuRunDlg.msg.Unabletosim"),
                                                                t.getMessage()
                                                },
                                                null, simulation.getName(), JOptionPane.ERROR_MESSAGE);
@@ -389,7 +397,8 @@ public class SimulationRunDialog extends JDialog {
                                
                                DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this,
                                                new Object[] {
-                                                               "A error occurred during the simulation:",
+                                                               //// A error occurred during the simulation:
+                                                               trans.get("SimuRunDlg.msg.errorOccurred"),
                                                                t.getMessage()
                                                },
                                                stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE);
@@ -400,10 +409,11 @@ public class SimulationRunDialog extends JDialog {
                                t.printStackTrace();
                                DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this,
                                                new Object[] {
-                                                               "An exception occurred during the simulation:",
+                                                               //// An exception occurred during the simulation:
+                                               trans.get("SimuRunDlg.msg.AnException1"),
                                                                t.getMessage(),
                                                                simulation.getSimulationListeners().isEmpty() ?
-                                                                               "Please report this as a bug along with the details below." : ""
+                                                                               trans.get("SimuRunDlg.msg.AnException2") : ""
                                                },
                                                stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE);
                                
@@ -412,8 +422,10 @@ public class SimulationRunDialog extends JDialog {
                                t.printStackTrace();
                                DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this,
                                                new Object[] {
-                                                               "A computation error occurred during the simulation.",
-                                                               "Please report this as a bug along with the details below."
+                                               //// A computation error occurred during the simulation.
+                                               trans.get("SimuRunDlg.msg.AssertionError1"),
+                                               //// Please report this as a bug along with the details below.
+                                               trans.get("SimuRunDlg.msg.AssertionError2")
                                                },
                                                stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE);
                                
@@ -422,9 +434,10 @@ public class SimulationRunDialog extends JDialog {
                                // Probably an Error
                                DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this,
                                                new Object[] {
-                                                               "An unknown error was encountered during the simulation.",
-                                                               "The program may be unstable, you should save all your designs " +
-                                                                               "and restart OpenRocket now!"
+                                                               //// An unknown error was encountered during the simulation.
+                                               trans.get("SimuRunDlg.msg.unknownerror1"),
+                                                               //// The program may be unstable, you should save all your designs and restart OpenRocket now!
+                                               trans.get("SimuRunDlg.msg.unknownerror2")
                                                },
                                                stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE);
                                
index 1cf5e97474ae5bad6fb2b452a17718c1aace5c86..931227364cb36b66f776411ac8479bcd72e66c45 100644 (file)
@@ -4,9 +4,11 @@ import java.util.EnumSet;
 import java.util.List;
 import java.util.Set;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.simulation.FlightDataBranch;
 import net.sf.openrocket.simulation.FlightDataType;
 import net.sf.openrocket.simulation.FlightEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
 import net.sf.openrocket.util.ArrayList;
 import net.sf.openrocket.util.BugException;
@@ -16,12 +18,15 @@ import net.sf.openrocket.util.Pair;
 
 public class PlotConfiguration implements Cloneable {
        
+       private static final Translator trans = Application.getTranslator();
+
        public static final PlotConfiguration[] DEFAULT_CONFIGURATIONS;
        static {
                ArrayList<PlotConfiguration> configs = new ArrayList<PlotConfiguration>();
                PlotConfiguration config;
                
-               config = new PlotConfiguration("Vertical motion vs. time");
+               //// Vertical motion vs. time
+               config = new PlotConfiguration(trans.get("PlotConfiguration.Verticalmotion"));
                config.addPlotDataType(FlightDataType.TYPE_ALTITUDE, 0);
                config.addPlotDataType(FlightDataType.TYPE_VELOCITY_Z);
                config.addPlotDataType(FlightDataType.TYPE_ACCELERATION_Z);
@@ -33,7 +38,8 @@ public class PlotConfiguration implements Cloneable {
                config.setEvent(FlightEvent.Type.GROUND_HIT, true);
                configs.add(config);
                
-               config = new PlotConfiguration("Total motion vs. time");
+               //// Total motion vs. time
+               config = new PlotConfiguration(trans.get("PlotConfiguration.Totalmotion"));
                config.addPlotDataType(FlightDataType.TYPE_ALTITUDE, 0);
                config.addPlotDataType(FlightDataType.TYPE_VELOCITY_TOTAL);
                config.addPlotDataType(FlightDataType.TYPE_ACCELERATION_TOTAL);
@@ -45,7 +51,8 @@ public class PlotConfiguration implements Cloneable {
                config.setEvent(FlightEvent.Type.GROUND_HIT, true);
                configs.add(config);
                
-               config = new PlotConfiguration("Flight side profile", FlightDataType.TYPE_POSITION_X);
+               //// Flight side profile
+               config = new PlotConfiguration(trans.get("PlotConfiguration.Flightside"), FlightDataType.TYPE_POSITION_X);
                config.addPlotDataType(FlightDataType.TYPE_ALTITUDE);
                config.setEvent(FlightEvent.Type.IGNITION, true);
                config.setEvent(FlightEvent.Type.BURNOUT, true);
@@ -55,6 +62,7 @@ public class PlotConfiguration implements Cloneable {
                config.setEvent(FlightEvent.Type.GROUND_HIT, true);
                configs.add(config);
                
+               //// Stability vs. time
                config = new PlotConfiguration("Stability vs. time");
                config.addPlotDataType(FlightDataType.TYPE_STABILITY, 0);
                config.addPlotDataType(FlightDataType.TYPE_CP_LOCATION, 1);
@@ -67,6 +75,7 @@ public class PlotConfiguration implements Cloneable {
                config.setEvent(FlightEvent.Type.GROUND_HIT, true);
                configs.add(config);
                
+               //// Drag coefficients vs. Mach number
                config = new PlotConfiguration("Drag coefficients vs. Mach number",
                                FlightDataType.TYPE_MACH_NUMBER);
                config.addPlotDataType(FlightDataType.TYPE_DRAG_COEFF, 0);
@@ -75,6 +84,7 @@ public class PlotConfiguration implements Cloneable {
                config.addPlotDataType(FlightDataType.TYPE_PRESSURE_DRAG_COEFF, 0);
                configs.add(config);
                
+               //// Roll characteristics
                config = new PlotConfiguration("Roll characteristics");
                config.addPlotDataType(FlightDataType.TYPE_ROLL_RATE, 0);
                config.addPlotDataType(FlightDataType.TYPE_ROLL_MOMENT_COEFF, 1);
@@ -89,6 +99,7 @@ public class PlotConfiguration implements Cloneable {
                config.setEvent(FlightEvent.Type.GROUND_HIT, true);
                configs.add(config);
                
+               //// Angle of attack and orientation vs. time
                config = new PlotConfiguration("Angle of attack and orientation vs. time");
                config.addPlotDataType(FlightDataType.TYPE_AOA, 0);
                config.addPlotDataType(FlightDataType.TYPE_ORIENTATION_PHI);
@@ -101,6 +112,7 @@ public class PlotConfiguration implements Cloneable {
                config.setEvent(FlightEvent.Type.GROUND_HIT, true);
                configs.add(config);
                
+               //// Simulation time step and computation time
                config = new PlotConfiguration("Simulation time step and computation time");
                config.addPlotDataType(FlightDataType.TYPE_TIME_STEP);
                config.addPlotDataType(FlightDataType.TYPE_COMPUTATION_TIME);
index b36ff30bf8dd6dd7b416d81fd008b186c85e60a1..714a05303bb53d3150d069eac606727a461933da 100644 (file)
@@ -33,9 +33,11 @@ import javax.swing.JPanel;
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.gui.components.StyledLabel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.simulation.FlightDataBranch;
 import net.sf.openrocket.simulation.FlightDataType;
 import net.sf.openrocket.simulation.FlightEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.BugException;
@@ -66,7 +68,8 @@ import org.jfree.ui.TextAnchor;
 public class PlotDialog extends JDialog {
        
        private static final float PLOT_STROKE_WIDTH = 1.5f;
-       
+       private static final Translator trans = Application.getTranslator();
+
        private static final Color DEFAULT_EVENT_COLOR = new Color(0, 0, 0);
        private static final Map<FlightEvent.Type, Color> EVENT_COLORS =
                        new HashMap<FlightEvent.Type, Color>();
@@ -126,7 +129,8 @@ public class PlotDialog extends JDialog {
                        new ArrayList<ModifiedXYItemRenderer>();
        
        private PlotDialog(Window parent, Simulation simulation, PlotConfiguration config) {
-               super(parent, "Flight data plot");
+               //// Flight data plot
+               super(parent, trans.get("PlotDialog.title.Flightdataplot"));
                this.setModalityType(ModalityType.DOCUMENT_MODAL);
                
                final boolean initialShowPoints = Prefs.getBoolean(Prefs.PLOT_SHOW_POINTS, false);
@@ -195,7 +199,8 @@ public class PlotDialog extends JDialog {
 
                // Create the chart using the factory to get all default settings
                JFreeChart chart = ChartFactory.createXYLineChart(
-                               "Simulated flight",
+                               //// Simulated flight
+                               trans.get("PlotDialog.Chart.Simulatedflight"),
                                null,
                                null,
                                null,
@@ -405,7 +410,8 @@ public class PlotDialog extends JDialog {
                
                panel.add(chartPanel, "grow, wrap 20lp");
                
-               final JCheckBox check = new JCheckBox("Show data points");
+               //// Show data points
+               final JCheckBox check = new JCheckBox(trans.get("PlotDialog.CheckBox.Showdatapoints"));
                check.setSelected(initialShowPoints);
                check.addActionListener(new ActionListener() {
                        @Override
@@ -420,13 +426,14 @@ public class PlotDialog extends JDialog {
                panel.add(check, "split, left");
                
 
-               JLabel label = new StyledLabel("Click+drag down+right to zoom in, up+left to zoom out", -2);
+               JLabel label = new StyledLabel(trans.get("PlotDialog.lbl.Chart"), -2);
                panel.add(label, "gapleft para");
                
 
                panel.add(new JPanel(), "growx");
                
-               JButton button = new JButton("Close");
+               //// Close button
+               JButton button = new JButton(trans.get("dlg.but.close"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
index 4e18be374d5166dc5b04f7fbb839b61a0d76d486..eb646dc5150d3e43ef092bfb7c27681748a20d40 100644 (file)
@@ -24,25 +24,32 @@ import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.gui.components.DescriptionArea;
 import net.sf.openrocket.gui.components.UnitSelector;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.simulation.FlightDataBranch;
 import net.sf.openrocket.simulation.FlightDataType;
 import net.sf.openrocket.simulation.FlightEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.Unit;
 import net.sf.openrocket.util.GUIUtil;
 import net.sf.openrocket.util.Icons;
 
 public class SimulationPlotPanel extends JPanel {
-       
+       private static final Translator trans = Application.getTranslator();
+
        // TODO: LOW: Should these be somewhere else?
        public static final int AUTO = -1;
        public static final int LEFT = 0;
        public static final int RIGHT = 1;
        
-       public static final String AUTO_NAME = "Auto";
-       public static final String LEFT_NAME = "Left";
-       public static final String RIGHT_NAME = "Right";
+       //// Auto
+       public static final String AUTO_NAME = trans.get("simplotpanel.AUTO_NAME");
+       //// Left
+       public static final String LEFT_NAME = trans.get("simplotpanel.LEFT_NAME");
+       //// Right
+       public static final String RIGHT_NAME = trans.get("simplotpanel.RIGHT_NAME");
        
-       private static final String CUSTOM = "Custom";
+       //// Custom
+       private static final String CUSTOM = trans.get("simplotpanel.CUSTOM");
        
        /** The "Custom" configuration - not to be used for anything other than the title. */
        private static final PlotConfiguration CUSTOM_CONFIGURATION;
@@ -120,15 +127,16 @@ public class SimulationPlotPanel extends JPanel {
                                modifying--;
                        }
                });
-               this.add(new JLabel("Preset plot configurations: "), "spanx, split");
+               //// Preset plot configurations:
+               this.add(new JLabel(trans.get("simplotpanel.lbl.Presetplotconf")), "spanx, split");
                this.add(configurationSelector, "growx, wrap 20lp");
                
 
 
                //// X axis
                
-
-               this.add(new JLabel("X axis type:"), "spanx, split");
+               //// X axis type:
+               this.add(new JLabel(trans.get("simplotpanel.lbl.Xaxistype")), "spanx, split");
                domainTypeSelector = new JComboBox(types);
                domainTypeSelector.setSelectedItem(configuration.getDomainAxisType());
                domainTypeSelector.addItemListener(new ItemListener() {
@@ -145,8 +153,8 @@ public class SimulationPlotPanel extends JPanel {
                });
                this.add(domainTypeSelector, "gapright para");
                
-
-               this.add(new JLabel("Unit:"));
+               //// Unit:
+               this.add(new JLabel(trans.get("simplotpanel.lbl.Unit")));
                domainUnitSelector = new UnitSelector(configuration.getDomainAxisType().getUnitGroup());
                domainUnitSelector.setSelectedUnit(configuration.getDomainAxisUnit());
                domainUnitSelector.addItemListener(new ItemListener() {
@@ -159,19 +167,18 @@ public class SimulationPlotPanel extends JPanel {
                });
                this.add(domainUnitSelector, "width 40lp, gapright para");
                
-
-               DescriptionArea desc = new DescriptionArea("The data will be plotted in time order " +
-                               "even if the X axis type is not time.", 2, -2f);
+               //// The data will be plotted in time order even if the X axis type is not time.
+               DescriptionArea desc = new DescriptionArea(trans.get("simplotpanel.Desc"), 2, -2f);
                desc.setViewportBorder(BorderFactory.createEmptyBorder());
                this.add(desc, "width 1px, growx 1, wrap unrel");
                
 
 
                //// Y axis selector panel
-               
-               this.add(new JLabel("Y axis types:"));
-               
-               this.add(new JLabel("Flight events:"), "wrap rel");
+               //// Y axis types:
+               this.add(new JLabel(trans.get("simplotpanel.lbl.Yaxistypes")));
+               //// Flight events:
+               this.add(new JLabel(trans.get("simplotpanel.lbl.Flightevents")), "wrap rel");
                
                typeSelectorPanel = new JPanel(new MigLayout("gapy rel"));
                JScrollPane scroll = new JScrollPane(typeSelectorPanel);
@@ -197,7 +204,7 @@ public class SimulationPlotPanel extends JPanel {
                
 
                ////  All + None buttons
-               JButton button = new JButton("All");
+               JButton button = new JButton(trans.get("simplotpanel.but.All"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -208,7 +215,8 @@ public class SimulationPlotPanel extends JPanel {
                });
                this.add(button, "split 2, gapleft para, gapright para, growx, sizegroup buttons");
                
-               button = new JButton("None");
+               //// None
+               button = new JButton(trans.get("simplotpanel.but.None"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -221,14 +229,17 @@ public class SimulationPlotPanel extends JPanel {
                
 
 
-
-               button = new JButton("New Y axis plot type");
+               //// New Y axis plot type
+               button = new JButton(trans.get("simplotpanel.but.NewYaxisplottype"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                if (configuration.getTypeCount() >= 15) {
                                        JOptionPane.showMessageDialog(SimulationPlotPanel.this,
-                                                       "A maximum of 15 plots is allowed.", "Cannot add plot",
+                                                       //// A maximum of 15 plots is allowed.
+                                                       //// Cannot add plot
+                                                       trans.get("simplotpanel.OptionPane.lbl1"), 
+                                                       trans.get("simplotpanel.OptionPane.lbl2"),
                                                        JOptionPane.ERROR_MESSAGE);
                                        return;
                                }
@@ -270,7 +281,8 @@ public class SimulationPlotPanel extends JPanel {
 
                this.add(new JPanel(), "growx");
                
-               button = new JButton("Plot flight");
+               //// Plot flight
+               button = new JButton(trans.get("simplotpanel.but.Plotflight"));
                button.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
@@ -353,7 +365,8 @@ public class SimulationPlotPanel extends JPanel {
                        });
                        this.add(typeSelector, "gapright para");
                        
-                       this.add(new JLabel("Unit:"));
+                       //// Unit:
+                       this.add(new JLabel(trans.get("simplotpanel.lbl.Unit")));
                        unitSelector = new UnitSelector(type.getUnitGroup());
                        if (unit != null)
                                unitSelector.setSelectedUnit(unit);
@@ -368,7 +381,8 @@ public class SimulationPlotPanel extends JPanel {
                        });
                        this.add(unitSelector, "width 40lp, gapright para");
                        
-                       this.add(new JLabel("Axis:"));
+                       //// Axis:
+                       this.add(new JLabel(trans.get("simplotpanel.lbl.Axis")));
                        axisSelector = new JComboBox(POSITIONS);
                        if (position == LEFT)
                                axisSelector.setSelectedIndex(1);
@@ -389,7 +403,8 @@ public class SimulationPlotPanel extends JPanel {
                        
 
                        JButton button = new JButton(Icons.DELETE);
-                       button.setToolTipText("Remove this plot");
+                       //// Remove this plot
+                       button.setToolTipText(trans.get("simplotpanel.but.ttip.Removethisplot"));
                        button.setBorderPainted(false);
                        button.addActionListener(new ActionListener() {
                                @Override
index 774ad152cf873375ada55063c834f1eee99bd2ef..c367d7e29d3a184c0c56a6daea9b44401048a0a8 100644 (file)
@@ -20,6 +20,7 @@ import net.sf.openrocket.gui.figureelements.Caret;
 import net.sf.openrocket.gui.figureelements.RocketInfo;
 import net.sf.openrocket.gui.main.SimulationWorker;
 import net.sf.openrocket.gui.main.componenttree.ComponentTreeModel;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.masscalc.BasicMassCalculator;
 import net.sf.openrocket.masscalc.MassCalculator;
 import net.sf.openrocket.masscalc.MassCalculator.MassCalcType;
@@ -31,6 +32,7 @@ import net.sf.openrocket.simulation.FlightData;
 import net.sf.openrocket.simulation.listeners.SimulationListener;
 import net.sf.openrocket.simulation.listeners.system.ApogeeEndListener;
 import net.sf.openrocket.simulation.listeners.system.InterruptListener;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.ChangeSource;
 import net.sf.openrocket.util.Chars;
@@ -73,6 +75,7 @@ import java.util.concurrent.ThreadFactory;
  */
 public class RocketPanel extends JPanel implements TreeSelectionListener, ChangeSource {
        
+       private static final Translator trans = Application.getTranslator();
        private final RocketFigure figure;
        private final ScaleScrollPane scrollPane;
        
@@ -179,14 +182,18 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
                
                // Side/back buttons
                FigureTypeAction action = new FigureTypeAction(RocketFigure.TYPE_SIDE);
-               action.putValue(Action.NAME, "Side view");
-               action.putValue(Action.SHORT_DESCRIPTION, "Side view");
+               //// Side view
+               action.putValue(Action.NAME, trans.get("RocketPanel.FigTypeAct.Sideview"));
+               //// Side view
+               action.putValue(Action.SHORT_DESCRIPTION, trans.get("RocketPanel.FigTypeAct.ttip.Sideview"));
                JToggleButton toggle = new JToggleButton(action);
                add(toggle, "spanx, split");
                
                action = new FigureTypeAction(RocketFigure.TYPE_BACK);
-               action.putValue(Action.NAME, "Back view");
-               action.putValue(Action.SHORT_DESCRIPTION, "Rear view");
+               //// Back view
+               action.putValue(Action.NAME, trans.get("RocketPanel.FigTypeAct.Backview"));
+               //// Back view
+               action.putValue(Action.SHORT_DESCRIPTION, trans.get("RocketPanel.FigTypeAct.ttip.Backview"));
                toggle = new JToggleButton(action);
                add(toggle, "gap rel");
                
@@ -204,8 +211,8 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
 
 
                // Motor configuration selector
-               
-               JLabel label = new JLabel("Motor configuration:");
+               //// Motor configuration:
+               JLabel label = new JLabel(trans.get("RocketPanel.lbl.Motorcfg"));
                label.setHorizontalAlignment(JLabel.RIGHT);
                add(label, "growx, right");
                add(new JComboBox(new MotorConfigurationModel(configuration)), "wrap");
@@ -234,12 +241,9 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
                add(new BasicSlider(theta.getSliderModel(0, 2 * Math.PI), JSlider.VERTICAL, true),
                                "ax 50%, wrap, width " + (d.width + 6) + "px:null:null, growy");
                
-
-               infoMessage = new JLabel("<html>" +
-                               "Click to select &nbsp;&nbsp; " +
-                               "Shift+click to select other &nbsp;&nbsp; " +
-                               "Double-click to edit &nbsp;&nbsp; " +
-                               "Click+drag to move");
+               
+               //// <html>Click to select &nbsp;&nbsp; Shift+click to select other &nbsp;&nbsp; Double-click to edit &nbsp;&nbsp; Click+drag to move
+               infoMessage = new JLabel(trans.get("RocketPanel.lbl.infoMessage"));
                infoMessage.setFont(new Font("Sans Serif", Font.PLAIN, 9));
                add(infoMessage, "skip, span, gapleft 25, wrap");
                
index 19e6c84a7655c742ff9dae14016b3fbd5aa19783..5a2bf5920876a3c3b913f98727d3afd111856a13 100644 (file)
@@ -2,14 +2,32 @@ package net.sf.openrocket.l10n;
 
 /**
  * A translator implementation that returns the logical key in brackets instead
- * of an actual translation.
+ * of an actual translation.  The class optionally verifies that the translation
+ * is actually obtainable from some other translator.
  * 
  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
  */
 public class DebugTranslator implements Translator {
        
+       private final Translator translator;
+       
+       
+       /**
+        * Sole constructor.
+        * 
+        * @param translator    the translator to verify the translation exists, or <code>null</code> not to verify.
+        */
+       public DebugTranslator(Translator translator) {
+               this.translator = translator;
+       }
+       
+       
+
        @Override
        public String get(String key) {
+               if (translator != null) {
+                       translator.get(key);
+               }
                return "[" + key + "]";
        }
        
index adf0aa190134682296f72818f1dbf2aac297b30d..0b53eb0266c27ecf4ed87625582a7fadaa91ce22 100644 (file)
@@ -1,13 +1,15 @@
 package net.sf.openrocket.rocketcomponent;
 
-import net.sf.openrocket.motor.Motor;
-import net.sf.openrocket.util.Coordinate;
-import net.sf.openrocket.util.MathUtil;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.motor.Motor;
+import net.sf.openrocket.startup.Application;
+import net.sf.openrocket.util.Coordinate;
+import net.sf.openrocket.util.MathUtil;
+
 
 /**
  * Rocket body tube component.  Has only two parameters, a radius and length.
@@ -16,20 +18,21 @@ import java.util.HashMap;
  */
 
 public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial {
-
+       private static final Translator trans = Application.getTranslator();
+       
        private double radius = 0;
        private boolean autoRadius = false; // Radius chosen automatically based on parent component
-
+       
        // When changing the inner radius, thickness is modified
-
+       
        private boolean motorMount = false;
        private HashMap<String, Double> ejectionDelays = new HashMap<String, Double>();
        private HashMap<String, Motor> motors = new HashMap<String, Motor>();
        private IgnitionEvent ignitionEvent = IgnitionEvent.AUTOMATIC;
        private double ignitionDelay = 0;
        private double overhang = 0;
-
-
+       
+       
 
        public BodyTube() {
                super();
@@ -37,35 +40,35 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                this.radius = DEFAULT_RADIUS;
                this.autoRadius = true;
        }
-
+       
        public BodyTube(double length, double radius) {
                super();
                this.radius = Math.max(radius, 0);
                this.length = Math.max(length, 0);
        }
-
-
+       
+       
        public BodyTube(double length, double radius, boolean filled) {
                this(length, radius);
                this.filled = filled;
        }
-
+       
        public BodyTube(double length, double radius, double thickness) {
                this(length, radius);
                this.filled = false;
                this.thickness = thickness;
        }
-
-
+       
+       
        /************  Get/set component parameter methods ************/
-
+       
        /**
         * Return the outer radius of the body tube.
-     *
-     * @return  the outside radius of the tube
+        *
+        * @return  the outside radius of the tube
         */
-    @Override
-       public double getOuterRadius () {
+       @Override
+       public double getOuterRadius() {
                if (autoRadius) {
                        // Return auto radius from front or rear
                        double r = -1;
@@ -85,29 +88,29 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                }
                return radius;
        }
-
-
+       
+       
        /**
         * Set the outer radius of the body tube.  If the radius is less than the wall thickness,
         * the wall thickness is decreased accordingly of the value of the radius.
         * This method sets the automatic radius off.
-     *
-     * @param radius  the outside radius in standard units
+        *
+        * @param radius  the outside radius in standard units
         */
-    @Override
-       public void setOuterRadius (double radius) {
+       @Override
+       public void setOuterRadius(double radius) {
                if ((this.radius == radius) && (autoRadius == false))
                        return;
-
+               
                this.autoRadius = false;
                this.radius = Math.max(radius, 0);
-
+               
                if (this.thickness > this.radius)
                        this.thickness = this.radius;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
        /**
         * Returns whether the radius is selected automatically or not.
         * Returns false also in case automatic radius selection is not possible.
@@ -115,34 +118,40 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
        public boolean isRadiusAutomatic() {
                return autoRadius;
        }
-
+       
        /**
         * Sets whether the radius is selected automatically or not.
         */
        public void setRadiusAutomatic(boolean auto) {
                if (autoRadius == auto)
                        return;
-
+               
                autoRadius = auto;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
        @Override
-       public double getAftRadius() {  return getOuterRadius(); }
+       public double getAftRadius() {
+               return getOuterRadius();
+       }
+       
        @Override
-       public double getForeRadius() { return getOuterRadius(); }
+       public double getForeRadius() {
+               return getOuterRadius();
+       }
+       
        @Override
        public boolean isAftRadiusAutomatic() {
                return isRadiusAutomatic();
        }
-
+       
        @Override
        public boolean isForeRadiusAutomatic() {
                return isRadiusAutomatic();
        }
-
-
+       
+       
 
        @Override
        protected double getFrontAutoRadius() {
@@ -157,7 +166,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                }
                return getOuterRadius();
        }
-
+       
        @Override
        protected double getRearAutoRadius() {
                if (isRadiusAutomatic()) {
@@ -171,27 +180,24 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                }
                return getOuterRadius();
        }
+       
+       
 
 
 
-
-
-
-
-
-    @Override
+       @Override
        public double getInnerRadius() {
                if (filled)
                        return 0;
-               return Math.max(getOuterRadius()-thickness, 0);
+               return Math.max(getOuterRadius() - thickness, 0);
        }
-
-    @Override
+       
+       @Override
        public void setInnerRadius(double r) {
-               setThickness(getOuterRadius()-r);
+               setThickness(getOuterRadius() - r);
        }
-
-
+       
+       
 
 
        /**
@@ -199,12 +205,13 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
         */
        @Override
        public String getComponentName() {
-               return "Body tube";
+               //// Body tube
+               return trans.get("BodyTube.BodyTube");
        }
-
-
+       
+       
        /************ Component calculations ***********/
-
+       
        // From SymmetricComponent
        /**
         * Returns the outer radius at the position x.  This returns the same value as getOuterRadius().
@@ -213,7 +220,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
        public double getRadius(double x) {
                return getOuterRadius();
        }
-
+       
        /**
         * Returns the inner radius at the position x.  If the tube is filled, returns always zero.
         */
@@ -222,10 +229,10 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                if (filled)
                        return 0.0;
                else
-                       return Math.max(getOuterRadius()-thickness,0);
+                       return Math.max(getOuterRadius() - thickness, 0);
        }
-
-
+       
+       
        /**
         * Returns the body tube's center of gravity.
         */
@@ -233,7 +240,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
        public Coordinate getComponentCG() {
                return new Coordinate(length / 2, 0, 0, getComponentMass());
        }
-
+       
        /**
         * Returns the body tube's volume.
         */
@@ -245,22 +252,21 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                else
                        return getFilledVolume(r, length) - getFilledVolume(getInnerRadius(0), length);
        }
-
-
+       
+       
        @Override
        public double getLongitudinalUnitInertia() {
                // 1/12 * (3 * (r1^2 + r2^2) + h^2)
-               return (3 * (MathUtil.pow2(getInnerRadius())) + MathUtil.pow2(getOuterRadius()) +
-                               MathUtil.pow2(getLength())) / 12;
+               return (3 * (MathUtil.pow2(getInnerRadius())) + MathUtil.pow2(getOuterRadius()) + MathUtil.pow2(getLength())) / 12;
        }
-
+       
        @Override
        public double getRotationalUnitInertia() {
                // 1/2 * (r1^2 + r2^2)
-               return (MathUtil.pow2(getInnerRadius()) + MathUtil.pow2(getOuterRadius()))/2;
+               return (MathUtil.pow2(getInnerRadius()) + MathUtil.pow2(getOuterRadius())) / 2;
        }
-
-
+       
+       
 
 
        /**
@@ -269,8 +275,8 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
        private static double getFilledVolume(double r, double l) {
                return Math.PI * r * r * l;
        }
-
-
+       
+       
        /**
         * Adds bounding coordinates to the given set.  The body tube will fit within the
         * convex hull of the points.
@@ -285,8 +291,8 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                addBound(bounds, length, r);
                return bounds;
        }
-
-
+       
+       
 
        /**
         * Check whether the given type can be added to this component.  BodyTubes allow any
@@ -304,14 +310,14 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                        return true;
                return false;
        }
-
+       
        ////////////////  Motor mount  /////////////////
-
+       
        @Override
        public boolean isMotorMount() {
                return motorMount;
        }
-
+       
        @Override
        public void setMotorMount(boolean mount) {
                if (motorMount == mount)
@@ -319,22 +325,22 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                motorMount = mount;
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
-
+       
        @Override
        public Motor getMotor(String id) {
                if (id == null)
                        return null;
-
+               
                // Check whether the id is valid for the current rocket
                RocketComponent root = this.getRoot();
                if (!(root instanceof Rocket))
                        return null;
                if (!((Rocket) root).isMotorConfigurationID(id))
                        return null;
-
+               
                return motors.get(id);
        }
-
+       
        @Override
        public void setMotor(String id, Motor motor) {
                if (id == null) {
@@ -349,7 +355,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                motors.put(id, motor);
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
-
+       
        @Override
        public double getMotorDelay(String id) {
                Double delay = ejectionDelays.get(id);
@@ -357,28 +363,28 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                        return Motor.PLUGGED;
                return delay;
        }
-
+       
        @Override
        public void setMotorDelay(String id, double delay) {
                ejectionDelays.put(id, delay);
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
-
+       
        @Override
        public int getMotorCount() {
                return 1;
        }
-
+       
        @Override
        public double getMotorMountDiameter() {
                return getInnerRadius() * 2;
        }
-
+       
        @Override
        public IgnitionEvent getIgnitionEvent() {
                return ignitionEvent;
        }
-
+       
        @Override
        public void setIgnitionEvent(IgnitionEvent event) {
                if (ignitionEvent == event)
@@ -386,13 +392,13 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                ignitionEvent = event;
                fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
        }
-
-
+       
+       
        @Override
        public double getIgnitionDelay() {
                return ignitionDelay;
        }
-
+       
        @Override
        public void setIgnitionDelay(double delay) {
                if (MathUtil.equals(delay, ignitionDelay))
@@ -400,13 +406,13 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                ignitionDelay = delay;
                fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
        }
-
-
+       
+       
        @Override
        public double getMotorOverhang() {
                return overhang;
        }
-
+       
        @Override
        public void setMotorOverhang(double overhang) {
                if (MathUtil.equals(this.overhang, overhang))
@@ -414,19 +420,19 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
                this.overhang = overhang;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
        @Override
        public Coordinate getMotorPosition(String id) {
                Motor motor = motors.get(id);
                if (motor == null) {
                        throw new IllegalArgumentException("No motor with id " + id + " defined.");
                }
-
+               
                return new Coordinate(this.getLength() - motor.getLength() + this.getMotorOverhang());
        }
-
-
+       
+       
 
 
        /*
index 4c0e6c0e0cecdecb767705db72a0a3f681af08fd..88e2130fc9dd4820a19b28a133184b5bf3a481f6 100644 (file)
@@ -1,8 +1,12 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
+
 
 public class Bulkhead extends RadiusRingComponent {
-       
+       private static final Translator trans = Application.getTranslator();
+
        public Bulkhead() {
                setOuterRadiusAutomatic(true);
                setLength(0.002);
@@ -25,7 +29,8 @@ public class Bulkhead extends RadiusRingComponent {
        
        @Override
        public String getComponentName() {
-               return "Bulkhead";
+               //// Bulkhead
+               return trans.get("Bulkhead.Bulkhead");
        }
        
        @Override
index a7fdbcecb310a6adf5d72399e5399845f09ee466..ed543c12fe352eab0890e31d04817621afd87b05 100644 (file)
@@ -1,6 +1,8 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 import net.sf.openrocket.util.Prefs;
 
@@ -17,11 +19,16 @@ import java.util.List;
 public abstract class ExternalComponent extends RocketComponent {
 
        public enum Finish {
-               ROUGH("Rough", 500e-6),
-               UNFINISHED("Unfinished", 150e-6),
-               NORMAL("Regular paint", 60e-6),
-               SMOOTH("Smooth paint", 20e-6),
-               POLISHED("Polished", 2e-6);
+               //// Rough
+               ROUGH("ExternalComponent.Rough", 500e-6),
+               //// Unfinished
+               UNFINISHED("ExternalComponent.Unfinished", 150e-6),
+               //// Regular paint
+               NORMAL("ExternalComponent.Regularpaint", 60e-6),
+               //// Smooth paint
+               SMOOTH("ExternalComponent.Smoothpaint", 20e-6),
+               //// Polished
+               POLISHED("ExternalComponent.Polished", 2e-6);
 
                private final String name;
                private final double roughnessSize;
@@ -37,7 +44,8 @@ public abstract class ExternalComponent extends RocketComponent {
 
                @Override
                public String toString() {
-                       return name + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")";
+                       final Translator trans = Application.getTranslator();
+                       return trans.get(name) + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")";
                }
        }
 
index 8d6a77f490b7e027d3b14434fec5bf91bd1cf6fc..d218ba68b1c5962b6bb8ec8c5cc508a871e0522b 100644 (file)
@@ -5,13 +5,16 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Coordinate;
 import net.sf.openrocket.util.MathUtil;
 import net.sf.openrocket.util.Transformation;
 
 
 public abstract class FinSet extends ExternalComponent {
-       
+       private static final Translator trans = Application.getTranslator();
+
        /**
         * Maximum allowed cant of fins.
         */
@@ -19,9 +22,12 @@ public abstract class FinSet extends ExternalComponent {
        
        
        public enum CrossSection {
-               SQUARE("Square", 1.00),
-               ROUNDED("Rounded", 0.99),
-               AIRFOIL("Airfoil", 0.85);
+               //// Square
+               SQUARE(trans.get("FinSet.CrossSection.SQUARE"), 1.00),
+               //// Rounded
+               ROUNDED(trans.get("FinSet.CrossSection.ROUNDED"), 0.99),
+               //// Airfoil
+               AIRFOIL(trans.get("FinSet.CrossSection.AIRFOIL"), 0.85);
                
                private final String name;
                private final double volume;
@@ -42,9 +48,12 @@ public abstract class FinSet extends ExternalComponent {
        }
        
        public enum TabRelativePosition {
-               FRONT("Root chord leading edge"),
-               CENTER("Root chord midpoint"),
-               END("Root chord trailing edge");
+               //// Root chord leading edge
+               FRONT(trans.get("FinSet.TabRelativePosition.FRONT")),
+               //// Root chord midpoint
+               CENTER(trans.get("FinSet.TabRelativePosition.CENTER")),
+               //// Root chord trailing edge
+               END(trans.get("FinSet.TabRelativePosition.END"));
                
                private final String name;
                
index 792483d2618aa4cbd03c61e53b5cc2e7d0457728..ffa44be37b0bc04e1130afdaec234e064f007aa0 100644 (file)
@@ -1,35 +1,37 @@
 package net.sf.openrocket.rocketcomponent;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.ArrayList;
 import net.sf.openrocket.util.BugException;
 import net.sf.openrocket.util.Coordinate;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
 
 public class FreeformFinSet extends FinSet {
        private static final LogHelper log = Application.getLogger();
-
+       private static final Translator trans = Application.getTranslator();
+       
        private ArrayList<Coordinate> points = new ArrayList<Coordinate>();
-
+       
        public FreeformFinSet() {
                points.add(Coordinate.NUL);
                points.add(new Coordinate(0.025, 0.05));
                points.add(new Coordinate(0.075, 0.05));
                points.add(new Coordinate(0.05, 0));
-
+               
                this.length = 0.05;
        }
-
-
+       
+       
        public FreeformFinSet(Coordinate[] finpoints) throws IllegalFinPointException {
                setPoints(finpoints);
        }
-
+       
        /*
        public FreeformFinSet(FinSet finset) {
                Coordinate[] finpoints = finset.getFinPoints();
@@ -59,12 +61,12 @@ public class FreeformFinSet extends FinSet {
                final RocketComponent root = finset.getRoot();
                FreeformFinSet freeform;
                List<RocketComponent> toInvalidate = Collections.emptyList();
-
+               
                try {
                        if (root instanceof Rocket) {
                                ((Rocket) root).freeze();
                        }
-
+                       
                        // Get fin set position and remove fin set
                        final RocketComponent parent = finset.getParent();
                        final int position;
@@ -74,7 +76,7 @@ public class FreeformFinSet extends FinSet {
                        } else {
                                position = -1;
                        }
-
+                       
 
                        // Create the freeform fin set
                        Coordinate[] finpoints = finset.getFinPoints();
@@ -85,24 +87,24 @@ public class FreeformFinSet extends FinSet {
                                                "freeform fin, fin=" + finset + " points=" + Arrays.toString(finpoints),
                                                e);
                        }
-
+                       
                        // Copy component attributes
                        toInvalidate = freeform.copyFrom(finset);
-
+                       
                        // Set name
                        final String componentTypeName = finset.getComponentName();
                        final String name = freeform.getName();
-
+                       
                        if (name.startsWith(componentTypeName)) {
                                freeform.setName(freeform.getComponentName() +
                                                name.substring(componentTypeName.length()));
                        }
-
+                       
                        // Add freeform fin set to parent
                        if (parent != null) {
                                parent.addChild(freeform, position);
                        }
-
+                       
                } finally {
                        if (root instanceof Rocket) {
                                ((Rocket) root).thaw();
@@ -114,8 +116,8 @@ public class FreeformFinSet extends FinSet {
                }
                return freeform;
        }
-
-
+       
+       
 
        /**
         * Add a fin point between indices <code>index-1</code> and <code>index</code>.
@@ -125,18 +127,18 @@ public class FreeformFinSet extends FinSet {
         */
        public void addPoint(int index) {
                double x0, y0, x1, y1;
-
+               
                x0 = points.get(index - 1).x;
                y0 = points.get(index - 1).y;
                x1 = points.get(index).x;
                y1 = points.get(index).y;
-
+               
                points.add(index, new Coordinate((x0 + x1) / 2, (y0 + y1) / 2));
                // adding a point within the segment affects neither mass nor aerodynamics
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
        /**
         * Remove the fin point with the given index.  The first and last fin points
         * cannot be removed, and will cause an <code>IllegalFinPointException</code>
@@ -149,20 +151,20 @@ public class FreeformFinSet extends FinSet {
                if (index == 0 || index == points.size() - 1) {
                        throw new IllegalFinPointException("cannot remove first or last point");
                }
-
+               
                ArrayList<Coordinate> copy = this.points.clone();
                copy.remove(index);
                validate(copy);
                this.points = copy;
-
+               
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
        public int getPointCount() {
                return points.size();
        }
-
+       
        public void setPoints(Coordinate[] points) throws IllegalFinPointException {
                ArrayList<Coordinate> list = new ArrayList<Coordinate>(points.length);
                for (Coordinate p : points) {
@@ -170,12 +172,12 @@ public class FreeformFinSet extends FinSet {
                }
                validate(list);
                this.points = list;
-
+               
                this.length = points[points.length - 1].x;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
        /**
         * Set the point at position <code>i</code> to coordinates (x,y).
         * <p>
@@ -196,11 +198,11 @@ public class FreeformFinSet extends FinSet {
        public void setPoint(int index, double x, double y) throws IllegalFinPointException {
                if (y < 0)
                        y = 0;
-
+               
                double x0, y0, x1, y1;
-
+               
                if (index == 0) {
-
+                       
                        // Restrict point
                        x = Math.min(x, points.get(points.size() - 1).x);
                        y = 0;
@@ -208,9 +210,9 @@ public class FreeformFinSet extends FinSet {
                        y0 = Double.NaN;
                        x1 = points.get(1).x;
                        y1 = points.get(1).y;
-
+                       
                } else if (index == points.size() - 1) {
-
+                       
                        // Restrict point
                        x = Math.max(x, 0);
                        y = 0;
@@ -218,16 +220,16 @@ public class FreeformFinSet extends FinSet {
                        y0 = points.get(index - 1).y;
                        x1 = Double.NaN;
                        y1 = Double.NaN;
-
+                       
                } else {
-
+                       
                        x0 = points.get(index - 1).x;
                        y0 = points.get(index - 1).y;
                        x1 = points.get(index + 1).x;
                        y1 = points.get(index + 1).y;
-
+                       
                }
-
+               
 
 
                // Check for intersecting
@@ -237,7 +239,7 @@ public class FreeformFinSet extends FinSet {
                for (int i = 1; i < points.size(); i++) {
                        px1 = points.get(i).x;
                        py1 = points.get(i).y;
-
+                       
                        if (i != index - 1 && i != index && i != index + 1) {
                                if (intersects(x0, y0, x, y, px0, py0, px1, py1)) {
                                        throw new IllegalFinPointException("segments intersect");
@@ -248,49 +250,49 @@ public class FreeformFinSet extends FinSet {
                                        throw new IllegalFinPointException("segments intersect");
                                }
                        }
-
+                       
                        px0 = px1;
                        py0 = py1;
                }
-
+               
                if (index == 0) {
-
+                       
                        System.out.println("Set point zero to x:" + x);
                        for (int i = 1; i < points.size(); i++) {
                                Coordinate c = points.get(i);
                                points.set(i, c.setX(c.x - x));
                        }
-
+                       
                } else {
-
+                       
                        points.set(index, new Coordinate(x, y));
-
+                       
                }
                if (index == 0 || index == points.size() - 1) {
                        this.length = points.get(points.size() - 1).x;
                }
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
 
        private boolean intersects(double ax0, double ay0, double ax1, double ay1,
                        double bx0, double by0, double bx1, double by1) {
-
+               
                double d = ((by1 - by0) * (ax1 - ax0) - (bx1 - bx0) * (ay1 - ay0));
-
+               
                double ua = ((bx1 - bx0) * (ay0 - by0) - (by1 - by0) * (ax0 - bx0)) / d;
                double ub = ((ax1 - ax0) * (ay0 - by0) - (ay1 - ay0) * (ax0 - bx0)) / d;
-
+               
                return (ua >= 0) && (ua <= 1) && (ub >= 0) && (ub <= 1);
        }
-
-
+       
+       
        @Override
        public Coordinate[] getFinPoints() {
                return points.toArray(new Coordinate[0]);
        }
-
+       
        @Override
        public double getSpan() {
                double max = 0;
@@ -300,37 +302,38 @@ public class FreeformFinSet extends FinSet {
                }
                return max;
        }
-
+       
        @Override
        public String getComponentName() {
-               return "Freeform fin set";
+               //// Freeform fin set
+               return trans.get("FreeformFinSet.FreeformFinSet");
        }
-
-
+       
+       
        @Override
        protected RocketComponent copyWithOriginalID() {
                RocketComponent c = super.copyWithOriginalID();
                ((FreeformFinSet) c).points = this.points.clone();
                return c;
        }
-
-       private void validate(ArrayList<Coordinate> points) throws IllegalFinPointException {
-               final int n = points.size();
-               if (points.get(0).x != 0 || points.get(0).y != 0 ||
-                               points.get(n - 1).x < 0 || points.get(n - 1).y != 0) {
+       
+       private void validate(ArrayList<Coordinate> pts) throws IllegalFinPointException {
+               final int n = pts.size();
+               if (pts.get(0).x != 0 || pts.get(0).y != 0 ||
+                               pts.get(n - 1).x < 0 || pts.get(n - 1).y != 0) {
                        throw new IllegalFinPointException("Start or end point illegal.");
                }
                for (int i = 0; i < n - 1; i++) {
                        for (int j = i + 2; j < n - 1; j++) {
-                               if (intersects(points.get(i).x, points.get(i).y, points.get(i + 1).x, points.get(i + 1).y,
-                                                               points.get(j).x, points.get(j).y, points.get(j + 1).x, points.get(j + 1).y)) {
+                               if (intersects(pts.get(i).x, pts.get(i).y, pts.get(i + 1).x, pts.get(i + 1).y,
+                                                               pts.get(j).x, pts.get(j).y, pts.get(j + 1).x, pts.get(j + 1).y)) {
                                        throw new IllegalFinPointException("segments intersect");
                                }
                        }
-                       if (points.get(i).z != 0) {
+                       if (pts.get(i).z != 0) {
                                throw new IllegalFinPointException("z-coordinate not zero");
                        }
                }
        }
-
+       
 }
index a4d5af4defb039245bd6f16e7bc265f1a613b544..0b8c92d242fbca6150d342fdbdc29400408263cb 100644 (file)
@@ -1,14 +1,16 @@
 package net.sf.openrocket.rocketcomponent;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.Motor;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.BugException;
 import net.sf.openrocket.util.Coordinate;
 import net.sf.openrocket.util.MathUtil;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
 
 /**
  * This class defines an inner tube that can be used as a motor mount.  The component
@@ -18,11 +20,12 @@ import java.util.List;
  */
 public class InnerTube extends ThicknessRingComponent
                implements Clusterable, RadialParent, MotorMount {
-
+       private static final Translator trans = Application.getTranslator();
+       
        private ClusterConfiguration cluster = ClusterConfiguration.SINGLE;
        private double clusterScale = 1.0;
        private double clusterRotation = 0.0;
-
+       
 
        private boolean motorMount = false;
        private HashMap<String, Double> ejectionDelays = new HashMap<String, Double>();
@@ -30,8 +33,8 @@ public class InnerTube extends ThicknessRingComponent
        private IgnitionEvent ignitionEvent = IgnitionEvent.AUTOMATIC;
        private double ignitionDelay = 0;
        private double overhang = 0;
-
-
+       
+       
        /**
         * Main constructor.
         */
@@ -41,30 +44,31 @@ public class InnerTube extends ThicknessRingComponent
                this.setInnerRadius(0.018 / 2);
                this.setLength(0.070);
        }
-
-
+       
+       
        @Override
        public double getInnerRadius(double x) {
                return getInnerRadius();
        }
-
-
+       
+       
        @Override
        public double getOuterRadius(double x) {
                return getOuterRadius();
        }
-
-
+       
+       
        @Override
        public String getComponentName() {
-               return "Inner Tube";
+               //// Inner Tube
+               return trans.get("InnerTube.InnerTube");
        }
-
+       
        @Override
        public boolean allowsChildren() {
                return true;
        }
-
+       
        /**
         * Allow all InternalComponents to be added to this component.
         */
@@ -72,28 +76,30 @@ public class InnerTube extends ThicknessRingComponent
        public boolean isCompatible(Class<? extends RocketComponent> type) {
                return InternalComponent.class.isAssignableFrom(type);
        }
-
-
+       
+       
 
        /////////////  Cluster methods  //////////////
-
+       
        /**
         * Get the current cluster configuration.
         * @return  The current cluster configuration.
         */
+       @Override
        public ClusterConfiguration getClusterConfiguration() {
                return cluster;
        }
-
+       
        /**
         * Set the current cluster configuration.
         * @param cluster  The cluster configuration.
         */
+       @Override
        public void setClusterConfiguration(ClusterConfiguration cluster) {
                this.cluster = cluster;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        /**
         * Return the number of tubes in the cluster.
         * @return Number of tubes in the current cluster.
@@ -102,7 +108,7 @@ public class InnerTube extends ThicknessRingComponent
        public int getClusterCount() {
                return cluster.getClusterCount();
        }
-
+       
        /**
         * Get the cluster scaling.  A value of 1.0 indicates that the tubes are packed
         * touching each other, larger values separate the tubes and smaller values
@@ -111,7 +117,7 @@ public class InnerTube extends ThicknessRingComponent
        public double getClusterScale() {
                return clusterScale;
        }
-
+       
        /**
         * Set the cluster scaling.
         * @see #getClusterScale()
@@ -123,8 +129,8 @@ public class InnerTube extends ThicknessRingComponent
                clusterScale = scale;
                fireComponentChangeEvent(new ComponentChangeEvent(this, ComponentChangeEvent.MASS_CHANGE));
        }
-
-
+       
+       
 
        /**
         * @return the clusterRotation
@@ -132,8 +138,8 @@ public class InnerTube extends ThicknessRingComponent
        public double getClusterRotation() {
                return clusterRotation;
        }
-
-
+       
+       
        /**
         * @param rotation the clusterRotation to set
         */
@@ -144,8 +150,8 @@ public class InnerTube extends ThicknessRingComponent
                this.clusterRotation = rotation;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
-
+       
+       
        /**
         * Return the distance between the closest two cluster inner tube center points.
         * This is equivalent to the cluster scale multiplied by the tube diameter.
@@ -154,8 +160,8 @@ public class InnerTube extends ThicknessRingComponent
        public double getClusterSeparation() {
                return 2 * getOuterRadius() * clusterScale;
        }
-
-
+       
+       
        public List<Coordinate> getClusterPoints() {
                List<Coordinate> list = new ArrayList<Coordinate>(getClusterCount());
                List<Double> points = cluster.getPoints(clusterRotation - getRadialDirection());
@@ -165,16 +171,16 @@ public class InnerTube extends ThicknessRingComponent
                }
                return list;
        }
-
-
+       
+       
        @Override
        public Coordinate[] shiftCoordinates(Coordinate[] array) {
                array = super.shiftCoordinates(array);
-
+               
                int count = getClusterCount();
                if (count == 1)
                        return array;
-
+               
                List<Coordinate> points = getClusterPoints();
                if (points.size() != count) {
                        throw new BugException("Inconsistent cluster configuration, cluster count=" + count +
@@ -186,20 +192,20 @@ public class InnerTube extends ThicknessRingComponent
                                newArray[i * count + j] = array[i].add(points.get(j));
                        }
                }
-
+               
                return newArray;
        }
-
-
+       
+       
 
 
        ////////////////  Motor mount  /////////////////
-
+       
        @Override
        public boolean isMotorMount() {
                return motorMount;
        }
-
+       
        @Override
        public void setMotorMount(boolean mount) {
                if (motorMount == mount)
@@ -207,22 +213,22 @@ public class InnerTube extends ThicknessRingComponent
                motorMount = mount;
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
-
+       
        @Override
        public Motor getMotor(String id) {
                if (id == null)
                        return null;
-
+               
                // Check whether the id is valid for the current rocket
                RocketComponent root = this.getRoot();
                if (!(root instanceof Rocket))
                        return null;
                if (!((Rocket) root).isMotorConfigurationID(id))
                        return null;
-
+               
                return motors.get(id);
        }
-
+       
        @Override
        public void setMotor(String id, Motor motor) {
                if (id == null) {
@@ -237,7 +243,7 @@ public class InnerTube extends ThicknessRingComponent
                motors.put(id, motor);
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
-
+       
        @Override
        public double getMotorDelay(String id) {
                Double delay = ejectionDelays.get(id);
@@ -245,29 +251,29 @@ public class InnerTube extends ThicknessRingComponent
                        return Motor.PLUGGED;
                return delay;
        }
-
+       
        @Override
        public void setMotorDelay(String id, double delay) {
                ejectionDelays.put(id, delay);
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
-
+       
        @Deprecated
        @Override
        public int getMotorCount() {
                return getClusterCount();
        }
-
+       
        @Override
        public double getMotorMountDiameter() {
                return getInnerRadius() * 2;
        }
-
+       
        @Override
        public IgnitionEvent getIgnitionEvent() {
                return ignitionEvent;
        }
-
+       
        @Override
        public void setIgnitionEvent(IgnitionEvent event) {
                if (ignitionEvent == event)
@@ -275,13 +281,13 @@ public class InnerTube extends ThicknessRingComponent
                ignitionEvent = event;
                fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
        }
-
-
+       
+       
        @Override
        public double getIgnitionDelay() {
                return ignitionDelay;
        }
-
+       
        @Override
        public void setIgnitionDelay(double delay) {
                if (MathUtil.equals(delay, ignitionDelay))
@@ -289,13 +295,13 @@ public class InnerTube extends ThicknessRingComponent
                ignitionDelay = delay;
                fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
        }
-
-
+       
+       
        @Override
        public double getMotorOverhang() {
                return overhang;
        }
-
+       
        @Override
        public void setMotorOverhang(double overhang) {
                if (MathUtil.equals(this.overhang, overhang))
@@ -303,15 +309,15 @@ public class InnerTube extends ThicknessRingComponent
                this.overhang = overhang;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
        @Override
        public Coordinate getMotorPosition(String id) {
                Motor motor = motors.get(id);
                if (motor == null) {
                        throw new IllegalArgumentException("No motor with id " + id + " defined.");
                }
-
+               
                return new Coordinate(this.getLength() - motor.getLength() + this.getMotorOverhang());
        }
        
@@ -329,5 +335,5 @@ public class InnerTube extends ThicknessRingComponent
                ((InnerTube) c).ejectionDelays = (HashMap<String, Double>) ejectionDelays.clone();
                return c;
        }
-
+       
 }
\ No newline at end of file
index 70f92a7f451df489fecc163ba5c905cd7c4ebb36..8a6b2751da247f3136f99fcf76714b716500884e 100644 (file)
@@ -1,5 +1,7 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Coordinate;
 import net.sf.openrocket.util.MathUtil;
 
@@ -10,6 +12,8 @@ import java.util.Collection;
 
 public class LaunchLug extends ExternalComponent implements Coaxial {
 
+       private static final Translator trans = Application.getTranslator();
+
        private double radius;
        private double thickness;
 
@@ -169,7 +173,8 @@ public class LaunchLug extends ExternalComponent implements Coaxial {
 
        @Override
        public String getComponentName() {
-               return "Launch lug";
+               //// Launch lug
+               return trans.get("LaunchLug.Launchlug");
        }
 
        @Override
index 0a84e3fe9b91774d901522da985cd3f60fb41f48..47911aa069fcba04ec1ef69d8305eade4dc8c55b 100644 (file)
@@ -1,8 +1,12 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.MathUtil;
 
 public class MassComponent extends MassObject {
+       private static final Translator trans = Application.getTranslator();
+
        private double mass = 0;
        
        
@@ -32,7 +36,8 @@ public class MassComponent extends MassObject {
        
        @Override
        public String getComponentName() {
-               return "Mass component";
+               //// Mass component
+               return trans.get("MassComponent.MassComponent");
        }
        
        @Override
index d7ea658f40ae0e13efdf68961b1129499e8e5c8f..15ea70f85322935a2e1eb31f051e3686ebe6c37b 100644 (file)
@@ -1,14 +1,18 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.simulation.FlightEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.ChangeSource;
 import net.sf.openrocket.util.Coordinate;
 
 public interface MotorMount extends ChangeSource {
-       
+       static final Translator trans = Application.getTranslator();
+
        public static enum IgnitionEvent {
-               AUTOMATIC("Automatic (launch or ejection charge)") {
+               //// Automatic (launch or ejection charge)
+               AUTOMATIC(trans.get("MotorMount.IgnitionEvent.AUTOMATIC")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                int count = source.getRocket().getStageCount();
@@ -21,13 +25,15 @@ public interface MotorMount extends ChangeSource {
                                }
                        }
                },
-               LAUNCH("Launch") {
+               //// Launch
+               LAUNCH(trans.get("MotorMount.IgnitionEvent.LAUNCH")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                return (e.getType() == FlightEvent.Type.LAUNCH);
                        }
                },
-               EJECTION_CHARGE("First ejection charge of previous stage") {
+               //// First ejection charge of previous stage
+               EJECTION_CHARGE(trans.get("MotorMount.IgnitionEvent.EJECTION_CHARGE")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                if (e.getType() != FlightEvent.Type.EJECTION_CHARGE)
@@ -38,7 +44,8 @@ public interface MotorMount extends ChangeSource {
                                return (mount+1 == charge);
                        }
                },
-               BURNOUT("First burnout of previous stage") {
+               //// First burnout of previous stage
+               BURNOUT(trans.get("MotorMount.IgnitionEvent.BURNOUT")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                if (e.getType() != FlightEvent.Type.BURNOUT)
@@ -49,7 +56,8 @@ public interface MotorMount extends ChangeSource {
                                return (mount+1 == charge);
                        }
                },
-               NEVER("Never") {
+               //// Never
+               NEVER(trans.get("MotorMount.IgnitionEvent.NEVER")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                return false;
index 229fcbf5a93be462794f11d92f923d0313b35931..a4de3a9c8aeabcded7bc652c14c99b24539d0120 100644 (file)
@@ -1,5 +1,8 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
+
 /**
  * Rocket nose cones of various types.  Implemented as a transition with the
  * fore radius == 0.
@@ -8,111 +11,113 @@ package net.sf.openrocket.rocketcomponent;
  */
 
 public class NoseCone extends Transition {
-
-
+       private static final Translator trans = Application.getTranslator();
+       
+       
        /********* Constructors **********/
        public NoseCone() {
-               this(Transition.Shape.OGIVE, 6*DEFAULT_RADIUS, DEFAULT_RADIUS);
+               this(Transition.Shape.OGIVE, 6 * DEFAULT_RADIUS, DEFAULT_RADIUS);
        }
-
+       
        public NoseCone(Transition.Shape type, double length, double radius) {
                super();
                super.setType(type);
                super.setForeRadiusAutomatic(false);
                super.setForeRadius(0);
                super.setForeShoulderLength(0);
-               super.setForeShoulderRadius(0.9*radius);
+               super.setForeShoulderRadius(0.9 * radius);
                super.setForeShoulderThickness(0);
                super.setForeShoulderCapped(filled);
                super.setThickness(0.002);
                super.setLength(length);
                super.setClipped(false);
-
+               
        }
-
-
+       
+       
        /********** Get/set methods for component parameters **********/
-
+       
        @Override
        public double getForeRadius() {
                return 0;
        }
-
+       
        @Override
        public void setForeRadius(double r) {
                // No-op
        }
-
+       
        @Override
        public boolean isForeRadiusAutomatic() {
                return false;
        }
-
+       
        @Override
        public void setForeRadiusAutomatic(boolean b) {
                // No-op
        }
-
+       
        @Override
        public double getForeShoulderLength() {
                return 0;
        }
-
+       
        @Override
        public double getForeShoulderRadius() {
                return 0;
        }
-
+       
        @Override
        public double getForeShoulderThickness() {
                return 0;
        }
-
+       
        @Override
        public boolean isForeShoulderCapped() {
                return false;
        }
-
+       
        @Override
        public void setForeShoulderCapped(boolean capped) {
                // No-op
        }
-
+       
        @Override
        public void setForeShoulderLength(double foreShoulderLength) {
                // No-op
        }
-
+       
        @Override
        public void setForeShoulderRadius(double foreShoulderRadius) {
                // No-op
        }
-
+       
        @Override
        public void setForeShoulderThickness(double foreShoulderThickness) {
                // No-op
        }
-
+       
        @Override
        public boolean isClipped() {
                return false;
        }
-
+       
        @Override
        public void setClipped(boolean b) {
                // No-op
        }
-
-
+       
+       
 
        /********** RocketComponent methods **********/
-
+       
        /**
         * Return component name.
         */
        @Override
        public String getComponentName() {
-               return "Nose cone";
+               //// Nose cone
+               return trans.get("NoseCone.NoseCone");
        }
-
+       
 }
index 080ab6356317bc6cd97ee6a68179afc7e85e2731..0ce768f9168b02e9e18b79d8c028965206824d1f 100644 (file)
@@ -1,11 +1,14 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.MathUtil;
 import net.sf.openrocket.util.Prefs;
 
 public class Parachute extends RecoveryDevice {
-       
+       private static final Translator trans = Application.getTranslator();
+
        public static final double DEFAULT_CD = 0.8;
        
        private double diameter;
@@ -103,7 +106,8 @@ public class Parachute extends RecoveryDevice {
        
        @Override
        public String getComponentName() {
-               return "Parachute";
+               //// Parachute
+               return trans.get("Parachute.Parachute");
        }
        
        @Override
index e85965111c48fb38bd8d722c0c6df90d068cf5b0..0c7fe7c40481752f0eeb37e21f95eae3b74184da 100644 (file)
@@ -1,7 +1,9 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.simulation.FlightEvent;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.MathUtil;
 import net.sf.openrocket.util.Pair;
 import net.sf.openrocket.util.Prefs;
@@ -20,15 +22,18 @@ import net.sf.openrocket.util.Prefs;
  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
  */
 public abstract class RecoveryDevice extends MassObject {
+       private static final Translator trans = Application.getTranslator();
 
        public static enum DeployEvent {
-               LAUNCH("Launch (plus NN seconds)") {
+               //// Launch (plus NN seconds)
+               LAUNCH(trans.get("RecoveryDevice.DeployEvent.LAUNCH")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                return e.getType() == FlightEvent.Type.LAUNCH;
                        }
                },
-               EJECTION("First ejection charge of this stage") {
+               //// First ejection charge of this stage
+               EJECTION(trans.get("RecoveryDevice.DeployEvent.EJECTION")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                if (e.getType() != FlightEvent.Type.EJECTION_CHARGE)
@@ -37,13 +42,15 @@ public abstract class RecoveryDevice extends MassObject {
                                return charge.getStageNumber() == source.getStageNumber();
                        }
                },
-               APOGEE("Apogee") {
+               //// Apogee
+               APOGEE(trans.get("RecoveryDevice.DeployEvent.APOGEE")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                return e.getType() == FlightEvent.Type.APOGEE;
                        }
                },
-               ALTITUDE("Specific altitude during descent") {
+               //// Specific altitude during descent
+               ALTITUDE(trans.get("RecoveryDevice.DeployEvent.ALTITUDE")) {
                        @SuppressWarnings("unchecked")
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
@@ -56,7 +63,8 @@ public abstract class RecoveryDevice extends MassObject {
                                return (altitude.getU() >= alt) && (altitude.getV() <= alt);
                        }
                },
-               NEVER("Never") {
+               //// Never
+               NEVER(trans.get("RecoveryDevice.DeployEvent.NEVER")) {
                        @Override
                        public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
                                return false;
index 64c1f687c02e549644a981118aa7a5f193bfa45e..4115c87b6f43551e728d1877ff12544eedd604b1 100644 (file)
@@ -1,15 +1,26 @@
 package net.sf.openrocket.rocketcomponent;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.UUID;
+
+import javax.swing.event.ChangeListener;
+import javax.swing.event.EventListenerList;
+
 import net.sf.openrocket.gui.main.ExceptionHandler;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.ArrayList;
-import net.sf.openrocket.util.*;
-
-import javax.swing.event.ChangeListener;
-import javax.swing.event.EventListenerList;
-import java.util.*;
+import net.sf.openrocket.util.Chars;
+import net.sf.openrocket.util.Coordinate;
+import net.sf.openrocket.util.MathUtil;
+import net.sf.openrocket.util.UniqueID;
 
 
 /**
@@ -24,40 +35,41 @@ import java.util.*;
 
 public class Rocket extends RocketComponent {
        private static final LogHelper log = Application.getLogger();
-
+       private static final Translator trans = Application.getTranslator();
+       
        public static final double DEFAULT_REFERENCE_LENGTH = 0.01;
-
+       
 
        /**
         * List of component change listeners.
         */
        private EventListenerList listenerList = new EventListenerList();
-
+       
        /**
         * When freezeList != null, events are not dispatched but stored in the list.
         * When the structure is thawed, a single combined event will be fired.
         */
        private List<ComponentChangeEvent> freezeList = null;
-
+       
 
        private int modID;
        private int massModID;
        private int aeroModID;
        private int treeModID;
        private int functionalModID;
-
+       
 
        private ReferenceType refType = ReferenceType.MAXIMUM; // Set in constructor
        private double customReferenceLength = DEFAULT_REFERENCE_LENGTH;
-
+       
 
        // The default configuration used in dialogs
        private final Configuration defaultConfiguration;
-
+       
 
        private String designer = "";
        private String revision = "";
-
+       
 
        // Motor configuration list
        private ArrayList<String> motorConfigurationIDs = new ArrayList<String>();
@@ -65,15 +77,15 @@ public class Rocket extends RocketComponent {
        {
                motorConfigurationIDs.add(null);
        }
-
+       
 
        // Does the rocket have a perfect finish (a notable amount of laminar flow)
        private boolean perfectFinish = false;
-
-
+       
+       
 
        /////////////  Constructor  /////////////
-
+       
        public Rocket() {
                super(RocketComponent.Position.AFTER);
                modID = UniqueID.next();
@@ -83,35 +95,35 @@ public class Rocket extends RocketComponent {
                functionalModID = modID;
                defaultConfiguration = new Configuration(this);
        }
-
-
+       
+       
 
        public String getDesigner() {
                checkState();
                return designer;
        }
-
+       
        public void setDesigner(String s) {
                if (s == null)
                        s = "";
                designer = s;
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
        public String getRevision() {
                checkState();
                return revision;
        }
-
+       
        public void setRevision(String s) {
                if (s == null)
                        s = "";
                revision = s;
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
 
 
        /**
@@ -123,8 +135,8 @@ public class Rocket extends RocketComponent {
                checkState();
                return this.getChildCount();
        }
-
-
+       
+       
        /**
         * Return the non-negative modification ID of this rocket.  The ID is changed
         * every time any change occurs in the rocket.  This can be used to check
@@ -146,7 +158,7 @@ public class Rocket extends RocketComponent {
        public int getModID() {
                return modID;
        }
-
+       
        /**
         * Return the non-negative mass modification ID of this rocket.  See
         * {@link #getModID()} for details.
@@ -156,7 +168,7 @@ public class Rocket extends RocketComponent {
        public int getMassModID() {
                return massModID;
        }
-
+       
        /**
         * Return the non-negative aerodynamic modification ID of this rocket.  See
         * {@link #getModID()} for details.
@@ -166,7 +178,7 @@ public class Rocket extends RocketComponent {
        public int getAerodynamicModID() {
                return aeroModID;
        }
-
+       
        /**
         * Return the non-negative tree modification ID of this rocket.  See
         * {@link #getModID()} for details.
@@ -176,7 +188,7 @@ public class Rocket extends RocketComponent {
        public int getTreeModID() {
                return treeModID;
        }
-
+       
        /**
         * Return the non-negative functional modificationID of this rocket.
         * This changes every time a functional change occurs.
@@ -186,40 +198,40 @@ public class Rocket extends RocketComponent {
        public int getFunctionalModID() {
                return functionalModID;
        }
-
-
+       
+       
 
 
        public ReferenceType getReferenceType() {
                checkState();
                return refType;
        }
-
+       
        public void setReferenceType(ReferenceType type) {
                if (refType == type)
                        return;
                refType = type;
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
        public double getCustomReferenceLength() {
                checkState();
                return customReferenceLength;
        }
-
+       
        public void setCustomReferenceLength(double length) {
                if (MathUtil.equals(customReferenceLength, length))
                        return;
-
+               
                this.customReferenceLength = Math.max(length, 0.001);
-
+               
                if (refType == ReferenceType.CUSTOM) {
                        fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
                }
        }
-
-
+       
+       
 
 
 
@@ -235,8 +247,8 @@ public class Rocket extends RocketComponent {
                this.perfectFinish = perfectFinish;
                fireComponentChangeEvent(ComponentChangeEvent.AERODYNAMIC_CHANGE);
        }
-
-
+       
+       
 
        /**
         * Get whether the rocket has a perfect finish.
@@ -246,8 +258,8 @@ public class Rocket extends RocketComponent {
        public boolean isPerfectFinish() {
                return perfectFinish;
        }
-
-
+       
+       
 
 
 
@@ -263,10 +275,10 @@ public class Rocket extends RocketComponent {
                copy.motorConfigurationNames =
                                (HashMap<String, String>) this.motorConfigurationNames.clone();
                copy.resetListeners();
-
+               
                return copy;
        }
-
+       
        /**
         * Load the rocket structure from the source.  The method loads the fields of this
         * Rocket object and copies the references to siblings from the <code>source</code>.
@@ -279,10 +291,10 @@ public class Rocket extends RocketComponent {
         */
        @SuppressWarnings("unchecked")
        public void loadFrom(Rocket r) {
-
+               
                // Store list of components to invalidate after event has been fired
                List<RocketComponent> toInvalidate = this.copyFrom(r);
-
+               
                int type = ComponentChangeEvent.UNDO_CHANGE | ComponentChangeEvent.NONFUNCTIONAL_CHANGE;
                if (this.massModID != r.massModID)
                        type |= ComponentChangeEvent.MASS_CHANGE;
@@ -290,7 +302,7 @@ public class Rocket extends RocketComponent {
                        type |= ComponentChangeEvent.AERODYNAMIC_CHANGE;
                // Loading a rocket is always a tree change since the component objects change
                type |= ComponentChangeEvent.TREE_CHANGE;
-
+               
                this.modID = r.modID;
                this.massModID = r.massModID;
                this.aeroModID = r.aeroModID;
@@ -298,31 +310,31 @@ public class Rocket extends RocketComponent {
                this.functionalModID = r.functionalModID;
                this.refType = r.refType;
                this.customReferenceLength = r.customReferenceLength;
-
+               
                this.motorConfigurationIDs = r.motorConfigurationIDs.clone();
                this.motorConfigurationNames =
                                (HashMap<String, String>) r.motorConfigurationNames.clone();
                this.perfectFinish = r.perfectFinish;
-
+               
                String id = defaultConfiguration.getMotorConfigurationID();
                if (!this.motorConfigurationIDs.contains(id))
                        defaultConfiguration.setMotorConfigurationID(null);
-
+               
                this.checkComponentStructure();
-
+               
                fireComponentChangeEvent(type);
-
+               
                // Invalidate obsolete components after event
                for (RocketComponent c : toInvalidate) {
                        c.invalidate();
                }
        }
-
-
+       
+       
 
 
        ///////  Implement the ComponentChangeListener lists
-
+       
        /**
         * Creates a new EventListenerList for this component.  This is necessary when cloning
         * the structure.
@@ -331,15 +343,15 @@ public class Rocket extends RocketComponent {
                //              System.out.println("RESETTING LISTENER LIST of Rocket "+this);
                listenerList = new EventListenerList();
        }
-
-
+       
+       
        public void printListeners() {
                System.out.println("" + this + " has " + listenerList.getListenerCount() + " listeners:");
                Object[] list = listenerList.getListenerList();
                for (int i = 1; i < list.length; i += 2)
                        System.out.println("  " + ((i + 1) / 2) + ": " + list[i]);
        }
-
+       
        @Override
        public void addComponentChangeListener(ComponentChangeListener l) {
                checkState();
@@ -347,15 +359,15 @@ public class Rocket extends RocketComponent {
                log.verbose("Added ComponentChangeListener " + l + ", current number of listeners is " +
                                listenerList.getListenerCount());
        }
-
+       
        @Override
        public void removeComponentChangeListener(ComponentChangeListener l) {
                listenerList.remove(ComponentChangeListener.class, l);
                log.verbose("Removed ComponentChangeListener " + l + ", current number of listeners is " +
                                listenerList.getListenerCount());
        }
-
-
+       
+       
        @Override
        public void addChangeListener(ChangeListener l) {
                checkState();
@@ -363,21 +375,21 @@ public class Rocket extends RocketComponent {
                log.verbose("Added ChangeListener " + l + ", current number of listeners is " +
                                listenerList.getListenerCount());
        }
-
+       
        @Override
        public void removeChangeListener(ChangeListener l) {
                listenerList.remove(ChangeListener.class, l);
                log.verbose("Removed ChangeListener " + l + ", current number of listeners is " +
                                listenerList.getListenerCount());
        }
-
-
+       
+       
        @Override
        protected void fireComponentChangeEvent(ComponentChangeEvent e) {
                mutex.lock("fireComponentChangeEvent");
                try {
                        checkState();
-
+                       
                        // Update modification ID's only for normal (not undo/redo) events
                        if (!e.isUndoChange()) {
                                modID = UniqueID.next();
@@ -390,22 +402,22 @@ public class Rocket extends RocketComponent {
                                if (e.getType() != ComponentChangeEvent.NONFUNCTIONAL_CHANGE)
                                        functionalModID = modID;
                        }
-
+                       
                        // Check whether frozen
                        if (freezeList != null) {
                                log.debug("Rocket is in frozen state, adding event " + e + " info freeze list");
                                freezeList.add(e);
                                return;
                        }
-
+                       
                        log.debug("Firing rocket change event " + e);
-
+                       
                        // Notify all components first
                        Iterator<RocketComponent> iterator = this.iterator(true);
                        while (iterator.hasNext()) {
                                iterator.next().componentChanged(e);
                        }
-
+                       
                        // Notify all listeners
                        Object[] listeners = listenerList.getListenerList();
                        for (int i = listeners.length - 2; i >= 0; i -= 2) {
@@ -419,8 +431,8 @@ public class Rocket extends RocketComponent {
                        mutex.unlock("fireComponentChangeEvent");
                }
        }
-
-
+       
+       
        /**
         * Freezes the rocket structure from firing any events.  This may be performed to
         * combine several actions on the structure into a single large action.
@@ -449,7 +461,7 @@ public class Rocket extends RocketComponent {
                                        "freezeList=" + freezeList);
                }
        }
-
+       
        /**
         * Thaws a frozen rocket structure and fires a combination of the events fired during
         * the freeze.  The event type is a combination of those fired and the source is the
@@ -468,9 +480,9 @@ public class Rocket extends RocketComponent {
                        freezeList = null;
                        return;
                }
-
+               
                log.debug("Thawing rocket, freezeList=" + freezeList);
-
+               
                int type = 0;
                Object c = null;
                for (ComponentChangeEvent e : freezeList) {
@@ -478,15 +490,15 @@ public class Rocket extends RocketComponent {
                        c = e.getSource();
                }
                freezeList = null;
-
+               
                fireComponentChangeEvent(new ComponentChangeEvent((RocketComponent) c, type));
        }
-
-
+       
+       
 
 
        ////////  Motor configurations  ////////
-
+       
 
        /**
         * Return the default configuration.  This should be used in the user interface
@@ -499,8 +511,8 @@ public class Rocket extends RocketComponent {
                checkState();
                return defaultConfiguration;
        }
-
-
+       
+       
        /**
         * Return an array of the motor configuration IDs.  This array is guaranteed
         * to contain the <code>null</code> ID as the first element.
@@ -511,7 +523,7 @@ public class Rocket extends RocketComponent {
                checkState();
                return motorConfigurationIDs.toArray(new String[0]);
        }
-
+       
        /**
         * Add a new motor configuration ID to the motor configurations.  The new ID
         * is returned.
@@ -525,7 +537,7 @@ public class Rocket extends RocketComponent {
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
                return id;
        }
-
+       
        /**
         * Add a specified motor configuration ID to the motor configurations.
         *
@@ -540,7 +552,7 @@ public class Rocket extends RocketComponent {
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
                return true;
        }
-
+       
        /**
         * Remove a motor configuration ID from the configuration IDs.  The <code>null</code>
         * ID cannot be removed, and an attempt to remove it will be silently ignored.
@@ -554,8 +566,8 @@ public class Rocket extends RocketComponent {
                motorConfigurationIDs.remove(id);
                fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
        }
-
-
+       
+       
        /**
         * Check whether <code>id</code> is a valid motor configuration ID.
         *
@@ -566,8 +578,8 @@ public class Rocket extends RocketComponent {
                checkState();
                return motorConfigurationIDs.contains(id);
        }
-
-
+       
+       
 
        /**
         * Check whether the given motor configuration ID has motors defined for it.
@@ -579,11 +591,11 @@ public class Rocket extends RocketComponent {
                checkState();
                if (id == null)
                        return false;
-
+               
                Iterator<RocketComponent> iterator = this.iterator();
                while (iterator.hasNext()) {
                        RocketComponent c = iterator.next();
-
+                       
                        if (c instanceof MotorMount) {
                                MotorMount mount = (MotorMount) c;
                                if (!mount.isMotorMount())
@@ -595,8 +607,8 @@ public class Rocket extends RocketComponent {
                }
                return false;
        }
-
-
+       
+       
        /**
         * Return the user-set name of the motor configuration.  If no name has been set,
         * returns an empty string (not null).
@@ -613,8 +625,8 @@ public class Rocket extends RocketComponent {
                        return "";
                return s;
        }
-
-
+       
+       
        /**
         * Set the name of the motor configuration.  A name can be unset by passing
         * <code>null</code> or an empty string.
@@ -627,8 +639,8 @@ public class Rocket extends RocketComponent {
                motorConfigurationNames.put(id, name);
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
        /**
         * Return either the motor configuration name (if set) or its description.
         *
@@ -638,14 +650,14 @@ public class Rocket extends RocketComponent {
        public String getMotorConfigurationNameOrDescription(String id) {
                checkState();
                String name;
-
+               
                name = getMotorConfigurationName(id);
                if (name != null && !name.equals(""))
                        return name;
-
+               
                return getMotorConfigurationDescription(id);
        }
-
+       
        /**
         * Return a description for the motor configuration, generated from the motor
         * designations of the components.
@@ -658,59 +670,60 @@ public class Rocket extends RocketComponent {
                checkState();
                String name;
                int motorCount = 0;
-
+               
                // Generate the description
-
+               
                // First iterate over each stage and store the designations of each motor
                List<List<String>> list = new ArrayList<List<String>>();
                List<String> currentList = null;
-
+               
                Iterator<RocketComponent> iterator = this.iterator();
                while (iterator.hasNext()) {
                        RocketComponent c = iterator.next();
-
+                       
                        if (c instanceof Stage) {
-
+                               
                                currentList = new ArrayList<String>();
                                list.add(currentList);
-
+                               
                        } else if (c instanceof MotorMount) {
-
+                               
                                MotorMount mount = (MotorMount) c;
                                Motor motor = mount.getMotor(id);
-
+                               
                                if (mount.isMotorMount() && motor != null) {
                                        String designation = motor.getDesignation(mount.getMotorDelay(id));
-
+                                       
                                        for (int i = 0; i < mount.getMotorCount(); i++) {
                                                currentList.add(designation);
                                                motorCount++;
                                        }
                                }
-
+                               
                        }
                }
-
+               
                if (motorCount == 0) {
-                       return "[No motors]";
+                       //// [No motors]
+                       return trans.get("Rocket.motorCount.Nomotor");
                }
-
+               
                // Change multiple occurrences of a motor to n x motor
                List<String> stages = new ArrayList<String>();
-
+               
                for (List<String> stage : list) {
                        String stageName = "";
                        String previous = null;
                        int count = 0;
-
+                       
                        Collections.sort(stage);
                        for (String current : stage) {
                                if (current.equals(previous)) {
-
+                                       
                                        count++;
-
+                                       
                                } else {
-
+                                       
                                        if (previous != null) {
                                                String s = "";
                                                if (count > 1) {
@@ -718,16 +731,16 @@ public class Rocket extends RocketComponent {
                                                } else {
                                                        s = previous;
                                                }
-
+                                               
                                                if (stageName.equals(""))
                                                        stageName = s;
                                                else
                                                        stageName = stageName + "," + s;
                                        }
-
+                                       
                                        previous = current;
                                        count = 1;
-
+                                       
                                }
                        }
                        if (previous != null) {
@@ -737,16 +750,16 @@ public class Rocket extends RocketComponent {
                                } else {
                                        s = previous;
                                }
-
+                               
                                if (stageName.equals(""))
                                        stageName = s;
                                else
                                        stageName = stageName + "," + s;
                        }
-
+                       
                        stages.add(stageName);
                }
-
+               
                name = "[";
                for (int i = 0; i < stages.size(); i++) {
                        String s = stages.get(i);
@@ -760,57 +773,58 @@ public class Rocket extends RocketComponent {
                name += "]";
                return name;
        }
-
-
+       
+       
 
        ////////  Obligatory component information
-
+       
 
        @Override
        public String getComponentName() {
-               return "Rocket";
+               //// Rocket
+               return trans.get("Rocket.compname.Rocket");
        }
-
+       
        @Override
        public Coordinate getComponentCG() {
                return new Coordinate(0, 0, 0, 0);
        }
-
+       
        @Override
        public double getComponentMass() {
                return 0;
        }
-
+       
        @Override
        public double getLongitudinalUnitInertia() {
                return 0;
        }
-
+       
        @Override
        public double getRotationalUnitInertia() {
                return 0;
        }
-
+       
        @Override
        public Collection<Coordinate> getComponentBounds() {
                return Collections.emptyList();
        }
-
+       
        @Override
        public boolean isAerodynamic() {
                return false;
        }
-
+       
        @Override
        public boolean isMassive() {
                return false;
        }
-
+       
        @Override
        public boolean allowsChildren() {
                return true;
        }
-
+       
        /**
         * Allows only <code>Stage</code> components to be added to the type Rocket.
         */
@@ -818,5 +832,5 @@ public class Rocket extends RocketComponent {
        public boolean isCompatible(Class<? extends RocketComponent> type) {
                return (Stage.class.isAssignableFrom(type));
        }
-
+       
 }
index e109f6b389abdb4f0a57248e72a847d4938df140..158c1b7d48c6910b8434f5bdd84167a99cab442e 100644 (file)
@@ -1,66 +1,85 @@
 package net.sf.openrocket.rocketcomponent;
 
+import java.awt.Color;
+import java.util.ArrayDeque;
+import java.util.Collection;
+import java.util.Deque;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import javax.swing.event.ChangeListener;
+
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.ArrayList;
-import net.sf.openrocket.util.*;
-
-import javax.swing.event.ChangeListener;
-import java.awt.*;
-import java.util.*;
-import java.util.List;
+import net.sf.openrocket.util.BugException;
+import net.sf.openrocket.util.ChangeSource;
+import net.sf.openrocket.util.Coordinate;
+import net.sf.openrocket.util.Invalidator;
+import net.sf.openrocket.util.LineStyle;
+import net.sf.openrocket.util.MathUtil;
+import net.sf.openrocket.util.SafetyMutex;
+import net.sf.openrocket.util.UniqueID;
 
 
 public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable<RocketComponent> {
        private static final LogHelper log = Application.getLogger();
-
+       private static final Translator trans = Application.getTranslator();
+       
        /*
         * Text is suitable to the form
         *    Position relative to:  <title>
         */
        public enum Position {
                /** Position relative to the top of the parent component. */
-               TOP("Top of the parent component"),
+               //// Top of the parent component
+               TOP(trans.get("RocketComponent.Position.TOP")),
                /** Position relative to the middle of the parent component. */
-               MIDDLE("Middle of the parent component"),
+               //// Middle of the parent component
+               MIDDLE(trans.get("RocketComponent.Position.MIDDLE")),
                /** Position relative to the bottom of the parent component. */
-               BOTTOM("Bottom of the parent component"),
+               //// Bottom of the parent component
+               BOTTOM(trans.get("RocketComponent.Position.BOTTOM")),
                /** Position after the parent component (for body components). */
-               AFTER("After the parent component"),
+               //// After the parent component
+               AFTER(trans.get("RocketComponent.Position.AFTER")),
                /** Specify an absolute X-coordinate position. */
-               ABSOLUTE("Tip of the nose cone");
-
+               //// Tip of the nose cone
+               ABSOLUTE(trans.get("RocketComponent.Position.ABSOLUTE"));
+               
                private String title;
-
+               
                Position(String title) {
                        this.title = title;
                }
-
+               
                @Override
                public String toString() {
                        return title;
                }
        }
-
+       
        /**
         * A safety mutex that can be used to prevent concurrent access to this component.
         */
        protected SafetyMutex mutex = SafetyMutex.newInstance();
-
+       
        ////////  Parent/child trees
        /**
         * Parent component of the current component, or null if none exists.
         */
        private RocketComponent parent = null;
-
+       
        /**
         * List of child components of this component.
         */
        private ArrayList<RocketComponent> children = new ArrayList<RocketComponent>();
-
+       
 
        ////////  Parameters common to all components:
-
+       
        /**
         * Characteristic length of the component.  This is used in calculating the coordinate
         * transformations and positions of other components in reference to this component.
@@ -68,50 +87,50 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         * By default it is zero, i.e. no translation.
         */
        protected double length = 0;
-
+       
        /**
         * Positioning of this component relative to the parent component.
         */
        protected Position relativePosition;
-
+       
        /**
         * Offset of the position of this component relative to the normal position given by
         * relativePosition.  By default zero, i.e. no position change.
         */
        protected double position = 0;
-
+       
 
        // Color of the component, null means to use the default color
        private Color color = null;
        private LineStyle lineStyle = null;
-
+       
 
        // Override mass/CG
        private double overrideMass = 0;
        private boolean massOverriden = false;
        private double overrideCGX = 0;
        private boolean cgOverriden = false;
-
+       
        private boolean overrideSubcomponents = false;
-
+       
 
        // User-given name of the component
        private String name = null;
-
+       
        // User-specified comment
        private String comment = "";
-
+       
        // Unique ID of the component
        private String id = null;
-
+       
        /**
         * Used to invalidate the component after calling {@link #copyFrom(RocketComponent)}.
         */
        private Invalidator invalidator = new Invalidator(this);
-
-
+       
+       
        ////  NOTE !!!  All fields must be copied in the method copyFrom()!  ////
-
+       
 
 
        /**
@@ -124,25 +143,25 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                this.relativePosition = relativePosition;
                newID();
        }
-
+       
        ////////////  Methods that must be implemented  ////////////
-
+       
 
        /**
         * Static component name.  The name may not vary of the parameters, it must be static.
         */
        public abstract String getComponentName(); // Static component type name
-
+       
        /**
         * Return the component mass (regardless of mass overriding).
         */
        public abstract double getComponentMass(); // Mass of non-overridden component
-
+       
        /**
         * Return the component CG and mass (regardless of CG or mass overriding).
         */
        public abstract Coordinate getComponentCG(); // CG of non-overridden component
-
+       
 
        /**
         * Return the longitudinal (around the y- or z-axis) unitary moment of inertia.
@@ -153,8 +172,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         * @return   the longitudinal unitary moment of inertia of this component.
         */
        public abstract double getLongitudinalUnitInertia();
-
-
+       
+       
        /**
         * Return the rotational (around the x-axis) unitary moment of inertia.
         * The unitary moment of inertia is the moment of inertia with the assumption that
@@ -164,8 +183,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         * @return   the rotational unitary moment of inertia of this component.
         */
        public abstract double getRotationalUnitInertia();
-
-
+       
+       
        /**
         * Test whether this component allows any children components.  This method must
         * return true if and only if {@link #isCompatible(Class)} returns true for any
@@ -174,7 +193,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         * @return      <code>true</code> if children can be attached to this component, <code>false</code> otherwise.
         */
        public abstract boolean allowsChildren();
-
+       
        /**
         * Test whether the given component type can be added to this component.  This type safety
         * is enforced by the <code>addChild()</code> methods.  The return value of this method
@@ -185,8 +204,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         * @return      Whether such a component can be added.
         */
        public abstract boolean isCompatible(Class<? extends RocketComponent> type);
-
-
+       
+       
        /* Non-abstract helper method */
        /**
         * Test whether the given component can be added to this component.  This is equivalent
@@ -200,8 +219,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return isCompatible(c.getClass());
        }
-
-
+       
+       
 
        /**
         * Return a collection of bounding coordinates.  The coordinates must be such that
@@ -210,23 +229,23 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         * @return      a collection of coordinates that bound the component.
         */
        public abstract Collection<Coordinate> getComponentBounds();
-
+       
        /**
         * Return true if the component may have an aerodynamic effect on the rocket.
         */
        public abstract boolean isAerodynamic();
-
+       
        /**
         * Return true if the component may have an effect on the rocket's mass.
         */
        public abstract boolean isMassive();
-
-
+       
+       
 
 
 
        ////////////  Methods that may be overridden  ////////////
-
+       
 
        /**
         * Shift the coordinates in the array corresponding to radial movement.  A component
@@ -244,8 +263,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                return c;
        }
-
-
+       
+       
        /**
         * Called when any component in the tree fires a ComponentChangeEvent.  This is by
         * default a no-op, but subclasses may override this method to e.g. invalidate
@@ -258,8 +277,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                // No-op
                checkState();
        }
-
-
+       
+       
 
 
        /**
@@ -276,8 +295,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                else
                        return name;
        }
-
-
+       
+       
        /**
         * Create a string describing the basic component structure from this component downwards.
         * @return      a string containing the rocket structure
@@ -292,7 +311,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        mutex.unlock("toDebugString");
                }
        }
-
+       
        private void toDebugString(StringBuilder sb) {
                sb.append(this.getClass().getSimpleName()).append('@').append(System.identityHashCode(this));
                sb.append("[\"").append(this.getName()).append('"');
@@ -302,8 +321,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                }
                sb.append(']');
        }
-
-
+       
+       
        /**
         * Make a deep copy of the rocket component tree structure from this component
         * downwards for copying purposes.  Each component in the copy will be assigned
@@ -313,15 +332,15 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         */
        public final RocketComponent copy() {
                RocketComponent clone = copyWithOriginalID();
-
+               
                Iterator<RocketComponent> iterator = clone.iterator(true);
                while (iterator.hasNext()) {
                        iterator.next().newID();
                }
                return clone;
        }
-
-
+       
+       
 
        /**
         * Make a deep copy of the rocket component tree structure from this component
@@ -349,14 +368,14 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        } catch (CloneNotSupportedException e) {
                                throw new BugException("CloneNotSupportedException encountered, report a bug!", e);
                        }
-
+                       
                        // Reset the mutex
                        clone.mutex = SafetyMutex.newInstance();
-
+                       
                        // Reset all parent/child information
                        clone.parent = null;
                        clone.children = new ArrayList<RocketComponent>();
-
+                       
                        // Add copied children to the structure without firing events.
                        for (RocketComponent child : this.children) {
                                RocketComponent childCopy = child.copyWithOriginalID();
@@ -364,23 +383,23 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                                clone.children.add(childCopy);
                                childCopy.parent = clone;
                        }
-
+                       
                        this.checkComponentStructure();
                        clone.checkComponentStructure();
-
+                       
                        return clone;
                } finally {
                        mutex.unlock("copyWithOriginalID");
                }
        }
-
-
+       
+       
        //////////////  Methods that may not be overridden  ////////////
-
+       
 
 
        ////////// Common parameter setting/getting //////////
-
+       
        /**
         * Return the color of the object to use in 2D figures, or <code>null</code>
         * to use the default color.
@@ -389,7 +408,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return color;
        }
-
+       
        /**
         * Set the color of the object to use in 2D figures.
         */
@@ -397,18 +416,18 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                if ((color == null && c == null) ||
                                (color != null && color.equals(c)))
                        return;
-
+               
                checkState();
                this.color = c;
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
        public final LineStyle getLineStyle() {
                mutex.verify();
                return lineStyle;
        }
-
+       
        public final void setLineStyle(LineStyle style) {
                if (this.lineStyle == style)
                        return;
@@ -416,8 +435,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                this.lineStyle = style;
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
 
 
        /**
@@ -430,7 +449,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return overrideMass;
        }
-
+       
        /**
         * Set the current override mass.  The mass is not set to use by this
         * method.
@@ -445,7 +464,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                if (massOverriden)
                        fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        /**
         * Return whether mass override is active for this component.  This does NOT
         * take into account whether a parent component is overriding the mass.
@@ -456,7 +475,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return massOverriden;
        }
-
+       
        /**
         * Set whether the mass is currently overridden.
         *
@@ -470,8 +489,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                massOverriden = o;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
-
+       
+       
 
 
 
@@ -484,7 +503,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return getComponentCG().setX(overrideCGX);
        }
-
+       
        /**
         * Return the x-coordinate of the current override CG.
         *
@@ -494,7 +513,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return overrideCGX;
        }
-
+       
        /**
         * Set the current override CG to (x,0,0).
         *
@@ -510,7 +529,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                else
                        fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
+       
        /**
         * Return whether the CG is currently overridden.
         *
@@ -520,7 +539,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return cgOverriden;
        }
-
+       
        /**
         * Set whether the CG is currently overridden.
         *
@@ -534,8 +553,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                cgOverriden = o;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
-
+       
+       
 
        /**
         * Return whether the mass and/or CG override overrides all subcomponent values
@@ -551,8 +570,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return overrideSubcomponents;
        }
-
-
+       
+       
        /**
         * Set whether the mass and/or CG override overrides all subcomponent values
         * as well.  See {@link #getOverrideSubcomponents()} for details.
@@ -567,7 +586,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                overrideSubcomponents = override;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        /**
         * Return whether the option to override all subcomponents is enabled or not.
         * The default implementation returns <code>false</code> if neither mass nor
@@ -582,8 +601,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return isCGOverridden() || isMassOverridden();
        }
-
-
+       
+       
 
 
        /**
@@ -593,7 +612,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return name;
        }
-
+       
        /**
         * Set the user-defined name of the component.  If name==null, sets the name to
         * the default name, currently the component name.
@@ -609,8 +628,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        this.name = name;
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
        /**
         * Return the comment of the component.  The component may contain multiple lines
         * using \n as a newline separator.
@@ -621,7 +640,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return comment;
        }
-
+       
        /**
         * Set the comment of the component.
         *
@@ -637,8 +656,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        this.comment = comment;
                fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
        }
-
-
+       
+       
 
        /**
         * Returns the unique ID of the component.
@@ -648,7 +667,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
        public final String getID() {
                return id;
        }
-
+       
        /**
         * Generate a new ID for this component.
         */
@@ -656,8 +675,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                this.id = UniqueID.uuid();
        }
-
-
+       
+       
 
 
        /**
@@ -672,7 +691,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return length;
        }
-
+       
        /**
         * Get the positioning of the component relative to its parent component.
         * This is one of the enums of {@link Position}.  A setter method is not provided,
@@ -682,8 +701,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return relativePosition;
        }
-
-
+       
+       
        /**
         * Set the positioning of the component relative to its parent component.
         * The actual position of the component is maintained to the best ability.
@@ -699,38 +718,38 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                if (this.relativePosition == position)
                        return;
                checkState();
-
+               
                // Update position so as not to move the component
                if (this.parent != null) {
                        double thisPos = this.toRelative(Coordinate.NUL, this.parent)[0].x;
-
+                       
                        switch (position) {
                        case ABSOLUTE:
                                this.position = this.toAbsolute(Coordinate.NUL)[0].x;
                                break;
-
+                       
                        case TOP:
                                this.position = thisPos;
                                break;
-
+                       
                        case MIDDLE:
                                this.position = thisPos - (this.parent.length - this.length) / 2;
                                break;
-
+                       
                        case BOTTOM:
                                this.position = thisPos - (this.parent.length - this.length);
                                break;
-
+                       
                        default:
                                throw new BugException("Unknown position type: " + position);
                        }
                }
-
+               
                this.relativePosition = position;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
 
 
        /**
@@ -743,8 +762,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                mutex.verify();
                return position;
        }
-
-
+       
+       
        /**
         * Set the position value of the component.  The exact meaning of the value
         * depends on the current relative positioning.
@@ -762,11 +781,11 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                this.position = value;
        }
-
-
+       
+       
 
        ///////////  Coordinate changes  ///////////
-
+       
        /**
         * Returns coordinate c in absolute coordinates.  Equivalent to toComponent(c,null).
         */
@@ -774,8 +793,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                return toRelative(c, null);
        }
-
-
+       
+       
        /**
         * Return coordinate <code>c</code> described in the coordinate system of
         * <code>dest</code>.  If <code>dest</code> is <code>null</code> returns
@@ -800,33 +819,33 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        RocketComponent search = dest;
                        Coordinate[] array = new Coordinate[1];
                        array[0] = c;
-
+                       
                        RocketComponent component = this;
                        while ((component != search) && (component.parent != null)) {
-
+                               
                                array = component.shiftCoordinates(array);
-
+                               
                                switch (component.relativePosition) {
                                case TOP:
                                        for (int i = 0; i < array.length; i++) {
                                                array[i] = array[i].add(component.position, 0, 0);
                                        }
                                        break;
-
+                               
                                case MIDDLE:
                                        for (int i = 0; i < array.length; i++) {
                                                array[i] = array[i].add(component.position +
                                                                (component.parent.length - component.length) / 2, 0, 0);
                                        }
                                        break;
-
+                               
                                case BOTTOM:
                                        for (int i = 0; i < array.length; i++) {
                                                array[i] = array[i].add(component.position +
                                                                (component.parent.length - component.length), 0, 0);
                                        }
                                        break;
-
+                               
                                case AFTER:
                                        // Add length of all previous brother-components with POSITION_RELATIVE_AFTER
                                        int index = component.parent.children.indexOf(component);
@@ -842,28 +861,28 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                                                array[i] = array[i].add(component.position + component.parent.length, 0, 0);
                                        }
                                        break;
-
+                               
                                case ABSOLUTE:
                                        search = null; // Requires back-search if dest!=null
                                        if (Double.isNaN(absoluteX)) {
                                                absoluteX = component.position;
                                        }
                                        break;
-
+                               
                                default:
                                        throw new BugException("Unknown relative positioning type of component" +
                                                        component + ": " + component.relativePosition);
                                }
-
+                               
                                component = component.parent; // parent != null
                        }
-
+                       
                        if (!Double.isNaN(absoluteX)) {
                                for (int i = 0; i < array.length; i++) {
                                        array[i] = array[i].setX(absoluteX + c.x);
                                }
                        }
-
+                       
                        // Check whether destination has been found or whether to backtrack
                        // TODO: LOW: Backtracking into clustered components uses only one component
                        if ((dest != null) && (component != dest)) {
@@ -872,14 +891,14 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                                        array[i] = array[i].sub(origin[0]);
                                }
                        }
-
+                       
                        return array;
                } finally {
                        mutex.unlock("toRelative");
                }
        }
-
-
+       
+       
        /**
         * Recursively sum the lengths of all subcomponents that have position
         * Position.AFTER.
@@ -901,11 +920,11 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        mutex.unlock("getTotalLength");
                }
        }
-
-
+       
+       
 
        /////////// Total mass and CG calculation ////////////
-
+       
        /**
         * Return the (possibly overridden) mass of component.
         *
@@ -917,7 +936,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        return overrideMass;
                return getComponentMass();
        }
-
+       
        /**
         * Return the (possibly overridden) center of gravity and mass.
         *
@@ -930,14 +949,14 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                if (cgOverriden)
                        return getOverrideCG().setWeight(getMass());
-
+               
                if (massOverriden)
                        return getComponentCG().setWeight(getMass());
-
+               
                return getComponentCG();
        }
-
-
+       
+       
        /**
         * Return the longitudinal (around the y- or z-axis) moment of inertia of this component.
         * The moment of inertia is scaled in reference to the (possibly overridden) mass
@@ -949,7 +968,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                return getLongitudinalUnitInertia() * getMass();
        }
-
+       
        /**
         * Return the rotational (around the y- or z-axis) moment of inertia of this component.
         * The moment of inertia is scaled in reference to the (possibly overridden) mass
@@ -961,11 +980,11 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                return getRotationalUnitInertia() * getMass();
        }
-
-
+       
+       
 
        ///////////  Children handling  ///////////
-
+       
 
        /**
         * Adds a child to the rocket component tree.  The component is added to the end
@@ -981,8 +1000,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                addChild(component, children.size());
        }
-
-
+       
+       
        /**
         * Adds a child to the rocket component tree.  The component is added to
         * the given position of the component's child list.
@@ -1005,17 +1024,17 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        throw new IllegalStateException("Component " + component.getComponentName() +
                                        " not currently compatible with component " + getComponentName());
                }
-
+               
                children.add(index, component);
                component.parent = this;
-
+               
                this.checkComponentStructure();
                component.checkComponentStructure();
-
+               
                fireAddRemoveEvent(component);
        }
-
-
+       
+       
        /**
         * Removes a child from the rocket component tree.
         *
@@ -1026,13 +1045,13 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                RocketComponent component = children.remove(n);
                component.parent = null;
-
+               
                this.checkComponentStructure();
                component.checkComponentStructure();
-
+               
                fireAddRemoveEvent(component);
        }
-
+       
        /**
         * Removes a child from the rocket component tree.  Does nothing if the component
         * is not present as a child.
@@ -1042,22 +1061,22 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
         */
        public final boolean removeChild(RocketComponent component) {
                checkState();
-
+               
                component.checkComponentStructure();
-
+               
                if (children.remove(component)) {
                        component.parent = null;
-
+                       
                        this.checkComponentStructure();
                        component.checkComponentStructure();
-
+                       
                        fireAddRemoveEvent(component);
                        return true;
                }
                return false;
        }
-
-
+       
+       
 
 
        /**
@@ -1071,15 +1090,15 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                if (children.remove(component)) {
                        children.add(index, component);
-
+                       
                        this.checkComponentStructure();
                        component.checkComponentStructure();
-
+                       
                        fireAddRemoveEvent(component);
                }
        }
-
-
+       
+       
        /**
         * Fires an AERODYNAMIC_CHANGE, MASS_CHANGE or OTHER_CHANGE event depending on the
         * type of component removed.
@@ -1094,30 +1113,30 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        if (c.isMassive())
                                type |= ComponentChangeEvent.MASS_CHANGE;
                }
-
+               
                fireComponentChangeEvent(type);
        }
-
-
+       
+       
        public final int getChildCount() {
                checkState();
                this.checkComponentStructure();
                return children.size();
        }
-
+       
        public final RocketComponent getChild(int n) {
                checkState();
                this.checkComponentStructure();
                return children.get(n);
        }
-
+       
        public final List<RocketComponent> getChildren() {
                checkState();
                this.checkComponentStructure();
                return children.clone();
        }
-
-
+       
+       
        /**
         * Returns the position of the child in this components child list, or -1 if the
         * component is not a child of this component.
@@ -1130,7 +1149,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                this.checkComponentStructure();
                return children.indexOf(child);
        }
-
+       
        /**
         * Get the parent component of this component.  Returns <code>null</code> if the component
         * has no parent.
@@ -1141,7 +1160,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                return parent;
        }
-
+       
        /**
         * Get the root component of the component tree.
         *
@@ -1154,7 +1173,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        gp = gp.parent;
                return gp;
        }
-
+       
        /**
         * Returns the root Rocket component of this component tree.  Throws an
         * IllegalStateException if the root component is not a Rocket.
@@ -1170,8 +1189,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                throw new IllegalStateException("getRocket() called with root component "
                                + r.getComponentName());
        }
-
-
+       
+       
        /**
         * Return the Stage component that this component belongs to.  Throws an
         * IllegalStateException if a Stage is not in the parentage of this component.
@@ -1189,7 +1208,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                }
                throw new IllegalStateException("getStage() called without Stage as a parent.");
        }
-
+       
        /**
         * Return the stage number of the stage this component belongs to.  The stages
         * are numbered from zero upwards.
@@ -1201,7 +1220,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                if (parent == null) {
                        throw new IllegalArgumentException("getStageNumber() called for root component");
                }
-
+               
                RocketComponent stage = this;
                while (!(stage instanceof Stage)) {
                        stage = stage.parent;
@@ -1212,8 +1231,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                }
                return stage.parent.getChildPosition(stage);
        }
-
-
+       
+       
        /**
         * Find a component with the given ID.  The component tree is searched from this component
         * down (including this component) for the ID and the corresponding component is returned,
@@ -1232,8 +1251,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                }
                return null;
        }
-
-
+       
+       
        // TODO: Move these methods elsewhere (used only in SymmetricComponent)
        public final RocketComponent getPreviousComponent() {
                checkState();
@@ -1264,34 +1283,34 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        c = c.getChild(c.getChildCount() - 1);
                return c;
        }
-
+       
        // TODO: Move these methods elsewhere (used only in SymmetricComponent)
        public final RocketComponent getNextComponent() {
                checkState();
                if (getChildCount() > 0)
                        return getChild(0);
-
+               
                RocketComponent current = this;
                RocketComponent nextParent = this.parent;
-
+               
                while (nextParent != null) {
                        int pos = nextParent.getChildPosition(current);
                        if (pos < nextParent.getChildCount() - 1)
                                return nextParent.getChild(pos + 1);
-
+                       
                        current = nextParent;
                        nextParent = current.parent;
                }
                return null;
        }
-
-
+       
+       
        ///////////  Event handling  //////////
        //
        // Listener lists are provided by the root Rocket component,
        // a single listener list for the whole rocket.
        //
-
+       
        /**
         * Adds a ComponentChangeListener to the rocket tree.  The listener is added to the root
         * component, which must be of type Rocket (which overrides this method).  Events of all
@@ -1303,7 +1322,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                getRocket().addComponentChangeListener(l);
        }
-
+       
        /**
         * Removes a ComponentChangeListener from the rocket tree.  The listener is removed from
         * the root component, which must be of type Rocket (which overrides this method).
@@ -1317,8 +1336,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        getRoot().removeComponentChangeListener(l);
                }
        }
-
-
+       
+       
        /**
         * Adds a <code>ChangeListener</code> to the rocket tree.  This is identical to
         * <code>addComponentChangeListener()</code> except that it uses a
@@ -1333,7 +1352,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                getRocket().addChangeListener(l);
        }
-
+       
        /**
         * Removes a ChangeListener from the rocket tree.  This is identical to
         * removeComponentChangeListener() except it uses a ChangeListener.
@@ -1348,8 +1367,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        getRoot().removeChangeListener(l);
                }
        }
-
-
+       
+       
        /**
         * Fires a ComponentChangeEvent on the rocket structure.  The call is passed to the
         * root component, which must be of type Rocket (which overrides this method).
@@ -1370,8 +1389,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                }
                getRoot().fireComponentChangeEvent(e);
        }
-
-
+       
+       
        /**
         * Fires a ComponentChangeEvent of the given type.  The source of the event is set to
         * this component.
@@ -1382,8 +1401,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
        protected void fireComponentChangeEvent(int type) {
                fireComponentChangeEvent(new ComponentChangeEvent(this, type));
        }
-
-
+       
+       
        /**
         * Checks whether this component has been invalidated and should no longer be used.
         * This is a safety check that in-place replaced components are no longer used.
@@ -1396,8 +1415,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                invalidator.check(true);
                mutex.verify();
        }
-
-
+       
+       
        /**
         * Check that the local component structure is correct.  This can be called after changing
         * the component structure in order to verify the integrity.
@@ -1420,7 +1439,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                        }
                }
        }
-
+       
        // Check whether the list contains exactly the searched-for component (with == operator)
        private boolean containsExact(List<RocketComponent> haystack, RocketComponent needle) {
                for (RocketComponent c : haystack) {
@@ -1430,10 +1449,10 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                }
                return false;
        }
-
-
+       
+       
        ///////////  Iterators  //////////
-
+       
        /**
         * Returns an iterator that iterates over all children and sub-children.
         * <p>
@@ -1455,8 +1474,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
        public final Iterator<RocketComponent> deepIterator(boolean returnSelf) {
                return iterator(returnSelf);
        }
-
-
+       
+       
        /**
         * Returns an iterator that iterates over all children and sub-children, including itself.
         * <p>
@@ -1471,8 +1490,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
        public final Iterator<RocketComponent> deepIterator() {
                return iterator();
        }
-
-
+       
+       
 
        /**
         * Returns an iterator that iterates over all children and sub-children.
@@ -1492,8 +1511,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                checkState();
                return new RocketComponentIterator(this, returnSelf);
        }
-
-
+       
+       
        /**
         * Returns an iterator that iterates over this components, its children and sub-children.
         * <p>
@@ -1505,8 +1524,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
        public final Iterator<RocketComponent> iterator() {
                return iterator(true);
        }
-
-
+       
+       
 
 
 
@@ -1525,18 +1544,18 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                RocketComponent other = (RocketComponent) obj;
                return this.id.equals(other.id);
        }
-
-
+       
+       
 
        @Override
        public int hashCode() {
                return id.hashCode();
        }
-
-
+       
+       
 
        ////////////  Helper methods for subclasses
-
+       
 
 
 
@@ -1551,36 +1570,36 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                bounds.add(new Coordinate(x, r, r));
                bounds.add(new Coordinate(x, -r, r));
        }
-
-
+       
+       
        protected static final Coordinate ringCG(double outerRadius, double innerRadius,
                        double x1, double x2, double density) {
                return new Coordinate((x1 + x2) / 2, 0, 0,
                                ringMass(outerRadius, innerRadius, x2 - x1, density));
        }
-
+       
        protected static final double ringMass(double outerRadius, double innerRadius,
                        double length, double density) {
                return Math.PI * (MathUtil.pow2(outerRadius) - MathUtil.pow2(innerRadius)) *
                                        length * density;
        }
-
+       
        protected static final double ringLongitudinalUnitInertia(double outerRadius,
                        double innerRadius, double length) {
                // 1/12 * (3 * (r1^2 + r2^2) + h^2)
                return (3 * (MathUtil.pow2(innerRadius) + MathUtil.pow2(outerRadius)) + MathUtil.pow2(length)) / 12;
        }
-
+       
        protected static final double ringRotationalUnitInertia(double outerRadius,
                        double innerRadius) {
                // 1/2 * (r1^2 + r2^2)
                return (MathUtil.pow2(innerRadius) + MathUtil.pow2(outerRadius)) / 2;
        }
-
-
+       
+       
 
        ////////////  OTHER
-
+       
 
        /**
         * Loads the RocketComponent fields from the given component.  This method is meant
@@ -1602,34 +1621,34 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
        protected List<RocketComponent> copyFrom(RocketComponent src) {
                checkState();
                List<RocketComponent> toInvalidate = new ArrayList<RocketComponent>();
-
+               
                if (this.parent != null) {
                        throw new UnsupportedOperationException("copyFrom called for non-root component, parent=" +
                                        this.parent.toDebugString() + ", this=" + this.toDebugString());
                }
-
+               
                // Add current structure to be invalidated
                Iterator<RocketComponent> iterator = this.iterator(false);
                while (iterator.hasNext()) {
                        toInvalidate.add(iterator.next());
                }
-
+               
                // Remove previous components
                for (RocketComponent child : this.children) {
                        child.parent = null;
                }
                this.children.clear();
-
+               
                // Copy new children to this component
                for (RocketComponent c : src.children) {
                        RocketComponent copy = c.copyWithOriginalID();
                        this.children.add(copy);
                        copy.parent = this;
                }
-
+               
                this.checkComponentStructure();
                src.checkComponentStructure();
-
+               
                // Set all parameters
                this.length = src.length;
                this.relativePosition = src.relativePosition;
@@ -1644,22 +1663,22 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                this.name = src.name;
                this.comment = src.comment;
                this.id = src.id;
-
+               
                // Add source components to invalidation tree
                for (RocketComponent c : src) {
                        toInvalidate.add(c);
                }
-
+               
                return toInvalidate;
        }
-
+       
        protected void invalidate() {
                invalidator.invalidate();
        }
-
-
+       
+       
        //////////  Iterator implementation  ///////////
-
+       
        /**
         * Private inner class to implement the Iterator.
         *
@@ -1668,16 +1687,16 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
        private static class RocketComponentIterator implements Iterator<RocketComponent> {
                // Stack holds iterators which still have some components left.
                private final Deque<Iterator<RocketComponent>> iteratorStack = new ArrayDeque<Iterator<RocketComponent>>();
-
+               
                private final Rocket root;
                private final int treeModID;
-
+               
                private final RocketComponent original;
                private boolean returnSelf = false;
-
+               
                // Construct iterator with component's child's iterator, if it has elements
                public RocketComponentIterator(RocketComponent c, boolean returnSelf) {
-
+                       
                        RocketComponent gp = c.getRoot();
                        if (gp instanceof Rocket) {
                                root = (Rocket) gp;
@@ -1686,15 +1705,15 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                                root = null;
                                treeModID = -1;
                        }
-
+                       
                        Iterator<RocketComponent> i = c.children.iterator();
                        if (i.hasNext())
                                iteratorStack.push(i);
-
+                       
                        this.original = c;
                        this.returnSelf = returnSelf;
                }
-
+               
                @Override
                public boolean hasNext() {
                        checkID();
@@ -1702,38 +1721,38 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                                return true;
                        return !iteratorStack.isEmpty(); // Elements remain if stack is not empty
                }
-
+               
                @Override
                public RocketComponent next() {
                        Iterator<RocketComponent> i;
-
+                       
                        checkID();
-
+                       
                        // Return original component first
                        if (returnSelf) {
                                returnSelf = false;
                                return original;
                        }
-
+                       
                        // Peek first iterator from stack, throw exception if empty
                        i = iteratorStack.peek();
                        if (i == null) {
                                throw new NoSuchElementException("No further elements in RocketComponent iterator");
                        }
-
+                       
                        // Retrieve next component of the iterator, remove iterator from stack if empty
                        RocketComponent c = i.next();
                        if (!i.hasNext())
                                iteratorStack.pop();
-
+                       
                        // Add iterator of component children to stack if it has children
                        i = c.children.iterator();
                        if (i.hasNext())
                                iteratorStack.push(i);
-
+                       
                        return c;
                }
-
+               
                private void checkID() {
                        if (root != null) {
                                if (root.getTreeModID() != treeModID) {
@@ -1741,12 +1760,12 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
                                }
                        }
                }
-
+               
                @Override
                public void remove() {
                        throw new UnsupportedOperationException("remove() not supported by " +
                                        "RocketComponent iterator");
                }
        }
-
+       
 }
index 6a23a75b871e0026668bece076159d9b56edf9ee..719473d8b2fee2e21b0a77f192b062f850d5ec69 100644 (file)
@@ -1,12 +1,15 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.BugException;
 import net.sf.openrocket.util.MathUtil;
 import net.sf.openrocket.util.Prefs;
 
 public class ShockCord extends MassObject {
-       
+       private static final Translator trans = Application.getTranslator();
+
        private Material material;
        private double cordLength;
        
@@ -52,7 +55,8 @@ public class ShockCord extends MassObject {
        
        @Override
        public String getComponentName() {
-               return "Shock cord";
+               //// Shock cord
+               return trans.get("ShockCord.ShockCord");
        }
        
        @Override
index 5acbe85439791e0b8687e7c73ce32b69ca57b452..f5079bfe649d8935eadad95137e4c8ea5a045885 100644 (file)
@@ -1,10 +1,16 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
+
 public class Stage extends ComponentAssembly {
 
+       private static final Translator trans = Application.getTranslator();
+
     @Override
     public String getComponentName () {
-        return "Stage";
+       //// Stage
+        return trans.get("Stage.Stage");
     }
 
 
index 0daa5f7f185bc481cc6da67179cfbfe2b1f997bc..1c2adb36cbdb1ccb8e9a7aa38d8ce123dd3bf294 100644 (file)
@@ -1,29 +1,28 @@
 package net.sf.openrocket.rocketcomponent;
 
-import net.sf.openrocket.util.Coordinate;
-import net.sf.openrocket.util.MathUtil;
+import static java.lang.Math.*;
+import static net.sf.openrocket.util.MathUtil.*;
 
 import java.util.Collection;
 
-import static java.lang.Math.sin;
-import static java.lang.Math.sqrt;
-import static net.sf.openrocket.util.Chars.FRAC12;
-import static net.sf.openrocket.util.Chars.FRAC34;
-import static net.sf.openrocket.util.MathUtil.pow2;
-import static net.sf.openrocket.util.MathUtil.pow3;
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
+import net.sf.openrocket.util.Coordinate;
+import net.sf.openrocket.util.MathUtil;
 
 
 public class Transition extends SymmetricComponent {
+       private static final Translator trans = Application.getTranslator();
        private static final double CLIP_PRECISION = 0.0001;
-
+       
 
        private Shape type;
        private double shapeParameter;
        private boolean clipped; // Not to be read - use isClipped(), which may be overriden
-
+       
        private double radius1, radius2;
        private boolean autoRadius1, autoRadius2; // Whether the start radius is automatic
-
+                       
 
        private double foreShoulderRadius;
        private double foreShoulderThickness;
@@ -33,30 +32,30 @@ public class Transition extends SymmetricComponent {
        private double aftShoulderThickness;
        private double aftShoulderLength;
        private boolean aftShoulderCapped;
-
+       
 
        // Used to cache the clip length
        private double clipLength = -1;
-
+       
        public Transition() {
                super();
-
+               
                this.radius1 = DEFAULT_RADIUS;
                this.radius2 = DEFAULT_RADIUS;
                this.length = DEFAULT_RADIUS * 3;
                this.autoRadius1 = true;
                this.autoRadius2 = true;
-
+               
                this.type = Shape.CONICAL;
                this.shapeParameter = 0;
                this.clipped = true;
        }
-
-
+       
+       
 
 
        ////////  Fore radius  ////////
-
+       
 
        @Override
        public double getForeRadius() {
@@ -73,35 +72,35 @@ public class Transition extends SymmetricComponent {
                }
                return radius1;
        }
-
+       
        public void setForeRadius(double radius) {
                if ((this.radius1 == radius) && (autoRadius1 == false))
                        return;
-
+               
                this.autoRadius1 = false;
                this.radius1 = Math.max(radius, 0);
-
+               
                if (this.thickness > this.radius1 && this.thickness > this.radius2)
                        this.thickness = Math.max(this.radius1, this.radius2);
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
+       
        @Override
        public boolean isForeRadiusAutomatic() {
                return autoRadius1;
        }
-
+       
        public void setForeRadiusAutomatic(boolean auto) {
                if (autoRadius1 == auto)
                        return;
-
+               
                autoRadius1 = auto;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
        ////////  Aft radius  /////////
-
+       
        @Override
        public double getAftRadius() {
                if (isAftRadiusAutomatic()) {
@@ -117,62 +116,62 @@ public class Transition extends SymmetricComponent {
                }
                return radius2;
        }
-
-
+       
+       
 
        public void setAftRadius(double radius) {
                if ((this.radius2 == radius) && (autoRadius2 == false))
                        return;
-
+               
                this.autoRadius2 = false;
                this.radius2 = Math.max(radius, 0);
-
+               
                if (this.thickness > this.radius1 && this.thickness > this.radius2)
                        this.thickness = Math.max(this.radius1, this.radius2);
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
+       
        @Override
        public boolean isAftRadiusAutomatic() {
                return autoRadius2;
        }
-
+       
        public void setAftRadiusAutomatic(boolean auto) {
                if (autoRadius2 == auto)
                        return;
-
+               
                autoRadius2 = auto;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
-
+       
+       
 
        //// Radius automatics
-
+       
        @Override
        protected double getFrontAutoRadius() {
                if (isAftRadiusAutomatic())
                        return -1;
                return getAftRadius();
        }
-
-
+       
+       
        @Override
        protected double getRearAutoRadius() {
                if (isForeRadiusAutomatic())
                        return -1;
                return getForeRadius();
        }
-
-
+       
+       
 
 
        ////////  Type & shape  /////////
-
+       
        public Shape getType() {
                return type;
        }
-
+       
        public void setType(Shape type) {
                if (type == null) {
                        throw new IllegalArgumentException("setType called with null argument");
@@ -184,142 +183,142 @@ public class Transition extends SymmetricComponent {
                this.shapeParameter = type.defaultParameter();
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
+       
        public double getShapeParameter() {
                return shapeParameter;
        }
-
+       
        public void setShapeParameter(double n) {
                if (shapeParameter == n)
                        return;
                this.shapeParameter = MathUtil.clamp(n, type.minParameter(), type.maxParameter());
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
+       
        public boolean isClipped() {
                if (!type.isClippable())
                        return false;
                return clipped;
        }
-
+       
        public void setClipped(boolean c) {
                if (clipped == c)
                        return;
                clipped = c;
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
-
+       
        public boolean isClippedEnabled() {
                return type.isClippable();
        }
-
+       
        public double getShapeParameterMin() {
                return type.minParameter();
        }
-
+       
        public double getShapeParameterMax() {
                return type.maxParameter();
        }
-
-
+       
+       
        ////////  Shoulders  ////////
-
+       
        public double getForeShoulderRadius() {
                return foreShoulderRadius;
        }
-
+       
        public void setForeShoulderRadius(double foreShoulderRadius) {
                if (MathUtil.equals(this.foreShoulderRadius, foreShoulderRadius))
                        return;
                this.foreShoulderRadius = foreShoulderRadius;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        public double getForeShoulderThickness() {
                return foreShoulderThickness;
        }
-
+       
        public void setForeShoulderThickness(double foreShoulderThickness) {
                if (MathUtil.equals(this.foreShoulderThickness, foreShoulderThickness))
                        return;
                this.foreShoulderThickness = foreShoulderThickness;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        public double getForeShoulderLength() {
                return foreShoulderLength;
        }
-
+       
        public void setForeShoulderLength(double foreShoulderLength) {
                if (MathUtil.equals(this.foreShoulderLength, foreShoulderLength))
                        return;
                this.foreShoulderLength = foreShoulderLength;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        public boolean isForeShoulderCapped() {
                return foreShoulderCapped;
        }
-
+       
        public void setForeShoulderCapped(boolean capped) {
                if (this.foreShoulderCapped == capped)
                        return;
                this.foreShoulderCapped = capped;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
-
+       
+       
 
 
        public double getAftShoulderRadius() {
                return aftShoulderRadius;
        }
-
+       
        public void setAftShoulderRadius(double aftShoulderRadius) {
                if (MathUtil.equals(this.aftShoulderRadius, aftShoulderRadius))
                        return;
                this.aftShoulderRadius = aftShoulderRadius;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        public double getAftShoulderThickness() {
                return aftShoulderThickness;
        }
-
+       
        public void setAftShoulderThickness(double aftShoulderThickness) {
                if (MathUtil.equals(this.aftShoulderThickness, aftShoulderThickness))
                        return;
                this.aftShoulderThickness = aftShoulderThickness;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        public double getAftShoulderLength() {
                return aftShoulderLength;
        }
-
+       
        public void setAftShoulderLength(double aftShoulderLength) {
                if (MathUtil.equals(this.aftShoulderLength, aftShoulderLength))
                        return;
                this.aftShoulderLength = aftShoulderLength;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
+       
        public boolean isAftShoulderCapped() {
                return aftShoulderCapped;
        }
-
+       
        public void setAftShoulderCapped(boolean capped) {
                if (this.aftShoulderCapped == capped)
                        return;
                this.aftShoulderCapped = capped;
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
-
-
+       
+       
 
 
        ///////////   Shape implementations   ////////////
-
+       
 
 
        /**
@@ -329,20 +328,20 @@ public class Transition extends SymmetricComponent {
        public double getRadius(double x) {
                if (x < 0 || x > length)
                        return 0;
-
+               
                double r1 = getForeRadius();
                double r2 = getAftRadius();
-
+               
                if (r1 == r2)
                        return r1;
-
+               
                if (r1 > r2) {
                        x = length - x;
                        double tmp = r1;
                        r1 = r2;
                        r2 = tmp;
                }
-
+               
                if (isClipped()) {
                        // Check clip calculation
                        if (clipLength < 0)
@@ -353,7 +352,7 @@ public class Transition extends SymmetricComponent {
                        return r1 + type.getRadius(x, r2 - r1, length, shapeParameter);
                }
        }
-
+       
        /**
         * Numerically solve clipLength from the equation
         *     r1 == type.getRadius(clipLength,r2,clipLength+length)
@@ -361,27 +360,27 @@ public class Transition extends SymmetricComponent {
         */
        private void calculateClip(double r1, double r2) {
                double min = 0, max = length;
-
+               
                if (r1 >= r2) {
                        double tmp = r1;
                        r1 = r2;
                        r2 = tmp;
                }
-
+               
                if (r1 == 0) {
                        clipLength = 0;
                        return;
                }
-
+               
                if (length <= 0) {
                        clipLength = 0;
                        return;
                }
-
+               
                // Required:
                //    getR(min,min+length,r2) - r1 < 0
                //    getR(max,max+length,r2) - r1 > 0
-
+               
                int n = 0;
                while (type.getRadius(max, r2, max + length, shapeParameter) - r1 < 0) {
                        min = max;
@@ -390,7 +389,7 @@ public class Transition extends SymmetricComponent {
                        if (n > 10)
                                break;
                }
-
+               
                while (true) {
                        clipLength = (min + max) / 2;
                        if ((max - min) < CLIP_PRECISION)
@@ -403,14 +402,14 @@ public class Transition extends SymmetricComponent {
                        }
                }
        }
-
-
+       
+       
        @Override
        public double getInnerRadius(double x) {
                return Math.max(getRadius(x) - thickness, 0);
        }
-
-
+       
+       
 
        @Override
        public Collection<Coordinate> getComponentBounds() {
@@ -421,7 +420,7 @@ public class Transition extends SymmetricComponent {
                        addBound(bounds, getLength() + aftShoulderLength, aftShoulderRadius);
                return bounds;
        }
-
+       
        @Override
        public double getComponentMass() {
                double mass = super.getComponentMass();
@@ -434,7 +433,7 @@ public class Transition extends SymmetricComponent {
                        final double ir = Math.max(getForeShoulderRadius() - getForeShoulderThickness(), 0);
                        mass += ringMass(ir, 0, getForeShoulderThickness(), getMaterial().getDensity());
                }
-
+               
                if (getAftShoulderLength() > 0.001) {
                        final double or = getAftShoulderRadius();
                        final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0);
@@ -444,10 +443,10 @@ public class Transition extends SymmetricComponent {
                        final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0);
                        mass += ringMass(ir, 0, getAftShoulderThickness(), getMaterial().getDensity());
                }
-
+               
                return mass;
        }
-
+       
        @Override
        public Coordinate getComponentCG() {
                Coordinate cg = super.getComponentCG();
@@ -462,7 +461,7 @@ public class Transition extends SymmetricComponent {
                                        getForeShoulderThickness() - getForeShoulderLength(),
                                        getMaterial().getDensity()));
                }
-
+               
                if (getAftShoulderLength() > 0.001) {
                        final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0);
                        cg = cg.average(ringCG(getAftShoulderRadius(), ir, getLength(),
@@ -476,8 +475,8 @@ public class Transition extends SymmetricComponent {
                }
                return cg;
        }
-
-
+       
+       
        /*
         * The moments of inertia are not explicitly corrected for the shoulders.
         * However, since the mass is corrected, the inertia is automatically corrected
@@ -491,30 +490,31 @@ public class Transition extends SymmetricComponent {
         */
        @Override
        public String getComponentName() {
-               return "Transition";
+               //// Transition
+               return trans.get("Transition.Transition");
        }
-
+       
        @Override
        protected void componentChanged(ComponentChangeEvent e) {
                super.componentChanged(e);
                clipLength = -1;
        }
-
+       
        /**
         * Check whether the given type can be added to this component.  Transitions allow any
         * InternalComponents to be added.
         *
-        * @param type  The RocketComponent class type to add.
+        * @param ctype  The RocketComponent class type to add.
         * @return      Whether such a component can be added.
         */
        @Override
-       public boolean isCompatible(Class<? extends RocketComponent> type) {
-               if (InternalComponent.class.isAssignableFrom(type))
+       public boolean isCompatible(Class<? extends RocketComponent> ctype) {
+               if (InternalComponent.class.isAssignableFrom(ctype))
                        return true;
                return false;
        }
-
-
+       
+       
 
        /**
         * An enumeration listing the possible shapes of transitions.
@@ -522,13 +522,16 @@ public class Transition extends SymmetricComponent {
         * @author Sampo Niskanen <sampo.niskanen@iki.fi>
         */
        public static enum Shape {
-
+               
                /**
                 * Conical shape.
                 */
-               CONICAL("Conical",
-                               "A conical nose cone has a profile of a triangle.",
-                               "A conical transition has straight sides.") {
+               //// Conical
+               CONICAL(trans.get("Shape.Conical"),
+                               //// A conical nose cone has a profile of a triangle.
+                               trans.get("Shape.Conical.desc1"),
+                               //// A conical transition has straight sides.
+                               trans.get("Shape.Conical.desc2")) {
                        @Override
                        public double getRadius(double x, double radius, double length, double param) {
                                assert x >= 0;
@@ -537,31 +540,28 @@ public class Transition extends SymmetricComponent {
                                return radius * x / length;
                        }
                },
-
+               
                /**
                 * Ogive shape.  The shape parameter is the portion of an extended tangent ogive
                 * that will be used.  That is, for param==1 a tangent ogive will be produced, and
                 * for smaller values the shape straightens out into a cone at param==0.
                 */
-               OGIVE("Ogive",
-                               "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>.",
-                               "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>.") {
+               //// Ogive
+               OGIVE(trans.get("Shape.Ogive"),
+                               //// 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>.
+                               trans.get("Shape.Ogive.desc1"),
+                               //// 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>.
+                               trans.get("Shape.Ogive.desc2")) {
                        @Override
                        public boolean usesParameter() {
                                return true; // Range 0...1 is default
                        }
-
+                       
                        @Override
                        public double defaultParameter() {
                                return 1.0; // Tangent ogive by default
                        }
-
+                       
                        @Override
                        public double getRadius(double x, double radius, double length, double param) {
                                assert x >= 0;
@@ -569,17 +569,17 @@ public class Transition extends SymmetricComponent {
                                assert radius >= 0;
                                assert param >= 0;
                                assert param <= 1;
-
+                               
                                // Impossible to calculate ogive for length < radius, scale instead
                                // TODO: LOW: secant ogive could be calculated lower
                                if (length < radius) {
                                        x = x * radius / length;
                                        length = radius;
                                }
-
+                               
                                if (param < 0.001)
                                        return CONICAL.getRadius(x, radius, length, param);
-
+                               
                                // Radius of circle is:
                                double R = sqrt((pow2(length) + pow2(radius)) *
                                                (pow2((2 - param) * length) + pow2(param * radius)) / (4 * pow2(param * radius)));
@@ -589,17 +589,16 @@ public class Transition extends SymmetricComponent {
                                return sqrt(R * R - (L - x) * (L - x)) - y0;
                        }
                },
-
+               
                /**
                 * Ellipsoidal shape.
                 */
-               ELLIPSOID("Ellipsoid",
-                               "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>.",
-                               "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.", true) {
+               //// Ellipsoid
+               ELLIPSOID(trans.get("Shape.Ellipsoid"),
+                               //// 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>.
+                               trans.get("Shape.Ellipsoid.desc1"),
+                               //// 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.         
+                               trans.get("Shape.Ellipsoid.desc2"), true) {
                        @Override
                        public double getRadius(double x, double radius, double length, double param) {
                                assert x >= 0;
@@ -609,30 +608,21 @@ public class Transition extends SymmetricComponent {
                                return sqrt(2 * radius * x - x * x); // radius/length * sphere
                        }
                },
-
-               POWER("Power series",
-                               "A power series nose cone has a profile of " +
-                                               "<i>Radius</i>&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>" + FRAC12 + "-power</b> or <b>parabolic</b> nose cone, for <i>k</i>=0.75 a " +
-                                               "<b>" + FRAC34 + "-power</b>, and for <i>k</i>=1 a <b>conical</b> nose cone.",
-                               "A power series transition has a profile of " +
-                                               "<i>Radius</i>&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>" + FRAC12 + "-power</b> or <b>parabolic</b>, for <i>k</i>=0.75 a " +
-                                               "<b>" + FRAC34 + "-power</b>, and for <i>k</i>=1 <b>conical</b>.", true) {
+               
+               //// Power series
+               POWER(trans.get("Shape.Powerseries"),
+                               trans.get("Shape.Powerseries.desc1"),
+                               trans.get("Shape.Powerseries.desc2"), true) {
                        @Override
                        public boolean usesParameter() { // Range 0...1
                                return true;
                        }
-
+                       
                        @Override
                        public double defaultParameter() {
                                return 0.5;
                        }
-
+                       
                        @Override
                        public double getRadius(double x, double radius, double length, double param) {
                                assert x >= 0;
@@ -648,34 +638,29 @@ public class Transition extends SymmetricComponent {
                                }
                                return radius * Math.pow(x / length, param);
                        }
-
+                       
                },
-
-               PARABOLIC("Parabolic series",
-                               "A parabolic series nose cone has a profile of a parabola.  The shape " +
-                                               "parameter defines the segment of the parabola to utilize.  The shape " +
-                                               "parameter 1.0 produces a <b>full parabola</b> which is tangent to the body " +
-                                               "tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a " +
-                                               "<b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.",
-                               "A parabolic series transition has a profile of a parabola.  The shape " +
-                                               "parameter defines the segment of the parabola to utilize.  The shape " +
-                                               "parameter 1.0 produces a <b>full parabola</b> which is tangent to the body " +
-                                               "tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a " +
-                                               "<b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.") {
-
+               
+               //// Parabolic series
+               PARABOLIC(trans.get("Shape.Parabolicseries"),
+                               ////A parabolic series nose cone has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.
+                               trans.get("Shape.Parabolicseries.desc1"),
+                               ////A parabolic series transition has a profile of a parabola.  The shape parameter defines the segment of the parabola to utilize.  The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.
+                               trans.get("Shape.Parabolicseries.desc2")) {
+                       
                        // In principle a parabolic transition is clippable, but the difference is
                        // negligible.
-
+                       
                        @Override
                        public boolean usesParameter() { // Range 0...1
                                return true;
                        }
-
+                       
                        @Override
                        public double defaultParameter() {
                                return 1.0;
                        }
-
+                       
                        @Override
                        public double getRadius(double x, double radius, double length, double param) {
                                assert x >= 0;
@@ -683,33 +668,28 @@ public class Transition extends SymmetricComponent {
                                assert radius >= 0;
                                assert param >= 0;
                                assert param <= 1;
-
+                               
                                return radius * ((2 * x / length - param * pow2(x / length)) / (2 - param));
                        }
                },
-
-
-
-               HAACK("Haack series",
-                               "The Haack series nose cones are designed to minimize drag.  The shape parameter " +
-                                               "0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes " +
-                                               "drag for fixed length and diameter, while a value of 0.333 produces an " +
-                                               "<b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.",
-                               "The Haack series <i>nose cones</i> are designed to minimize drag.  " +
-                                               "These transition shapes are their equivalents, but do not necessarily produce " +
-                                               "optimal drag for transitions.  " +
-                                               "The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, " +
-                                               "while a value of 0.333 produces an <b>LV-Haack</b> shape.", true) {
+               
+               //// Haack series
+               HAACK(trans.get("Shape.Haackseries"),
+                               //// The Haack series nose cones are designed to minimize drag.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an <b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.
+                               trans.get("Shape.Haackseries.desc1"),
+                               //// The Haack series <i>nose cones</i> are designed to minimize drag.  These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions.  The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, while a value of 0.333 produces an <b>LV-Haack</b> shape.            
+                               trans.get("Shape.Haackseries.desc2"), true) {
+                       
                        @Override
                        public boolean usesParameter() {
                                return true;
                        }
-
+                       
                        @Override
                        public double maxParameter() {
                                return 1.0 / 3.0; // Range 0...1/3
                        }
-
+                       
                        @Override
                        public double getRadius(double x, double radius, double length, double param) {
                                assert x >= 0;
@@ -717,7 +697,7 @@ public class Transition extends SymmetricComponent {
                                assert radius >= 0;
                                assert param >= 0;
                                assert param <= 2;
-
+                               
                                double theta = Math.acos(1 - 2 * x / length);
                                if (param == 0) {
                                        return radius * sqrt((theta - sin(2 * theta) / 2) / Math.PI);
@@ -725,7 +705,7 @@ public class Transition extends SymmetricComponent {
                                return radius * sqrt((theta - sin(2 * theta) / 2 + param * pow3(sin(theta))) / Math.PI);
                        }
                },
-
+               
                //              POLYNOMIAL("Smooth polynomial",
                //                              "A polynomial is fitted such that the nose cone profile is horizontal "+
                //                              "at the aft end of the transition.  The angle at the tip is defined by "+
@@ -757,18 +737,18 @@ public class Transition extends SymmetricComponent {
                //                      }
                //              }
                ;
-
+               
                // Privete fields of the shapes
                private final String name;
                private final String transitionDesc;
                private final String noseconeDesc;
                private final boolean canClip;
-
+               
                // Non-clippable constructor
                Shape(String name, String noseconeDesc, String transitionDesc) {
                        this(name, noseconeDesc, transitionDesc, false);
                }
-
+               
                // Clippable constructor
                Shape(String name, String noseconeDesc, String transitionDesc, boolean canClip) {
                        this.name = name;
@@ -776,29 +756,29 @@ public class Transition extends SymmetricComponent {
                        this.noseconeDesc = noseconeDesc;
                        this.transitionDesc = transitionDesc;
                }
-
-
+               
+               
                /**
                 * Return the name of the transition shape name.
                 */
                public String getName() {
                        return name;
                }
-
+               
                /**
                 * Get a description of the Transition shape.
                 */
                public String getTransitionDescription() {
                        return transitionDesc;
                }
-
+               
                /**
                 * Get a description of the NoseCone shape.
                 */
                public String getNoseConeDescription() {
                        return noseconeDesc;
                }
-
+               
                /**
                 * Check whether the shape differs in clipped mode.  The clipping should be
                 * enabled by default if possible.
@@ -806,35 +786,35 @@ public class Transition extends SymmetricComponent {
                public boolean isClippable() {
                        return canClip;
                }
-
+               
                /**
                 * Return whether the shape uses the shape parameter.  (Default false.)
                 */
                public boolean usesParameter() {
                        return false;
                }
-
+               
                /**
                 * Return the minimum value of the shape parameter.  (Default 0.)
                 */
                public double minParameter() {
                        return 0.0;
                }
-
+               
                /**
                 * Return the maximum value of the shape parameter.  (Default 1.)
                 */
                public double maxParameter() {
                        return 1.0;
                }
-
+               
                /**
                 * Return the default value of the shape parameter.  (Default 0.)
                 */
                public double defaultParameter() {
                        return 0.0;
                }
-
+               
                /**
                 * Calculate the basic radius of a transition with the given radius, length and
                 * shape parameter at the point x from the tip of the component.  It is assumed
@@ -848,8 +828,8 @@ public class Transition extends SymmetricComponent {
                 * @return       The basic radius at the given position.
                 */
                public abstract double getRadius(double x, double radius, double length, double param);
-
-
+               
+               
                /**
                 * Returns the name of the shape (same as getName()).
                 */
index 9c3076a3301474d5c7509b00a00e641997356ff3..288726b1fd38c344405f0d09fe4a274074d260b2 100644 (file)
@@ -1,5 +1,7 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Coordinate;
 
 /**
@@ -10,6 +12,8 @@ import net.sf.openrocket.util.Coordinate;
  */
 
 public class TrapezoidFinSet extends FinSet {
+       private static final Translator trans = Application.getTranslator();
+
        public static final double MAX_SWEEP_ANGLE=(89*Math.PI/180.0);
 
        /*
@@ -163,7 +167,8 @@ public class TrapezoidFinSet extends FinSet {
 
        @Override
        public String getComponentName() {
-               return "Trapezoidal fin set";
+               //// Trapezoidal fin set
+               return trans.get("TrapezoidFinSet.TrapezoidFinSet");
        }
 
 }
index 540535e188682760b43e3871f0ac563100178711..5e22ec0c1cfb3e13e7fecc745e479f54dcb61c04 100644 (file)
@@ -1,8 +1,12 @@
 package net.sf.openrocket.rocketcomponent;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
+
 
 public class TubeCoupler extends ThicknessRingComponent implements RadialParent {
-       
+       private static final Translator trans = Application.getTranslator();
+
        public TubeCoupler() {
                setOuterRadiusAutomatic(true);
                setThickness(0.002);
@@ -19,7 +23,8 @@ public class TubeCoupler extends ThicknessRingComponent implements RadialParent
        
        @Override
        public String getComponentName() {
-               return "Tube coupler";
+               //// Tube coupler
+               return trans.get("TubeCoupler.TubeCoupler");
        }
        
        @Override
index a089d4c1ddae1cb4bf483ad8f95ed6718da158fc..eea84dde568097948457201cb71bf6dfdd4d83da 100644 (file)
@@ -3,6 +3,8 @@ package net.sf.openrocket.simulation;
 import java.util.HashMap;
 import java.util.Map;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.unit.UnitGroup;
 
 /**
@@ -19,7 +21,8 @@ import net.sf.openrocket.unit.UnitGroup;
  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
  */
 public class FlightDataType implements Comparable<FlightDataType> {
-       
+       private static final Translator trans = Application.getTranslator();
+
        /** Priority of custom-created variables */
        private static final int DEFAULT_PRIORITY = 999;
        
@@ -29,98 +32,145 @@ public class FlightDataType implements Comparable<FlightDataType> {
 
 
        //// Time
-       public static final FlightDataType TYPE_TIME = newType("Time", UnitGroup.UNITS_FLIGHT_TIME, 1);
+       public static final FlightDataType TYPE_TIME = newType(trans.get("FlightDataType.TYPE_TIME"), UnitGroup.UNITS_FLIGHT_TIME, 1);
        
 
        //// Vertical position and motion
-       public static final FlightDataType TYPE_ALTITUDE = newType("Altitude", UnitGroup.UNITS_DISTANCE, 10);
-       public static final FlightDataType TYPE_VELOCITY_Z = newType("Vertical velocity", UnitGroup.UNITS_VELOCITY, 11);
-       public static final FlightDataType TYPE_ACCELERATION_Z = newType("Vertical acceleration", UnitGroup.UNITS_ACCELERATION, 12);
+       //// Altitude
+       public static final FlightDataType TYPE_ALTITUDE = newType(trans.get("FlightDataType.TYPE_ALTITUDE"), UnitGroup.UNITS_DISTANCE, 10);
+       //// Vertical velocity
+       public static final FlightDataType TYPE_VELOCITY_Z = newType(trans.get("FlightDataType.TYPE_VELOCITY_Z"), UnitGroup.UNITS_VELOCITY, 11);
+       //// Vertical acceleration
+       public static final FlightDataType TYPE_ACCELERATION_Z = newType(trans.get("FlightDataType.TYPE_ACCELERATION_Z"), UnitGroup.UNITS_ACCELERATION, 12);
        
 
        //// Total motion
-       public static final FlightDataType TYPE_VELOCITY_TOTAL = newType("Total velocity", UnitGroup.UNITS_VELOCITY, 20);
-       public static final FlightDataType TYPE_ACCELERATION_TOTAL = newType("Total acceleration", UnitGroup.UNITS_ACCELERATION, 21);
+       //// Total velocity
+       public static final FlightDataType TYPE_VELOCITY_TOTAL = newType(trans.get("FlightDataType.TYPE_VELOCITY_TOTAL"), UnitGroup.UNITS_VELOCITY, 20);
+       //// Total acceleration
+       public static final FlightDataType TYPE_ACCELERATION_TOTAL = newType(trans.get("FlightDataType.TYPE_ACCELERATION_TOTAL"), UnitGroup.UNITS_ACCELERATION, 21);
        
 
        //// Lateral position and motion
-       
-       public static final FlightDataType TYPE_POSITION_X = newType("Position upwind", UnitGroup.UNITS_DISTANCE, 30);
-       public static final FlightDataType TYPE_POSITION_Y = newType("Position parallel to wind", UnitGroup.UNITS_DISTANCE, 31);
-       public static final FlightDataType TYPE_POSITION_XY = newType("Lateral distance", UnitGroup.UNITS_DISTANCE, 32);
-       public static final FlightDataType TYPE_POSITION_DIRECTION = newType("Lateral direction", UnitGroup.UNITS_ANGLE, 33);
-       
-       public static final FlightDataType TYPE_VELOCITY_XY = newType("Lateral velocity", UnitGroup.UNITS_VELOCITY, 34);
-       public static final FlightDataType TYPE_ACCELERATION_XY = newType("Lateral acceleration", UnitGroup.UNITS_ACCELERATION, 35);
+       //// Position upwind
+       public static final FlightDataType TYPE_POSITION_X = newType(trans.get("FlightDataType.TYPE_POSITION_X"), UnitGroup.UNITS_DISTANCE, 30);
+       //// Position parallel to wind
+       public static final FlightDataType TYPE_POSITION_Y = newType(trans.get("FlightDataType.TYPE_POSITION_Y"), UnitGroup.UNITS_DISTANCE, 31);
+       //// Lateral distance
+       public static final FlightDataType TYPE_POSITION_XY = newType(trans.get("FlightDataType.TYPE_POSITION_XY"), UnitGroup.UNITS_DISTANCE, 32);
+       //// Lateral direction
+       public static final FlightDataType TYPE_POSITION_DIRECTION = newType(trans.get("FlightDataType.TYPE_POSITION_DIRECTION"), UnitGroup.UNITS_ANGLE, 33);
+       //// Lateral velocity
+       public static final FlightDataType TYPE_VELOCITY_XY = newType(trans.get("FlightDataType.TYPE_VELOCITY_XY"), UnitGroup.UNITS_VELOCITY, 34);
+       //// Lateral acceleration
+       public static final FlightDataType TYPE_ACCELERATION_XY = newType(trans.get("FlightDataType.TYPE_ACCELERATION_XY"), UnitGroup.UNITS_ACCELERATION, 35);
        
 
        //// Angular motion
-       public static final FlightDataType TYPE_AOA = newType("Angle of attack", UnitGroup.UNITS_ANGLE, 40);
-       public static final FlightDataType TYPE_ROLL_RATE = newType("Roll rate", UnitGroup.UNITS_ROLL, 41);
-       public static final FlightDataType TYPE_PITCH_RATE = newType("Pitch rate", UnitGroup.UNITS_ROLL, 42);
-       public static final FlightDataType TYPE_YAW_RATE = newType("Yaw rate", UnitGroup.UNITS_ROLL, 43);
+       //// Angle of attack
+       public static final FlightDataType TYPE_AOA = newType(trans.get("FlightDataType.TYPE_AOA"), UnitGroup.UNITS_ANGLE, 40);
+       //// Roll rate
+       public static final FlightDataType TYPE_ROLL_RATE = newType(trans.get("FlightDataType.TYPE_ROLL_RATE"), UnitGroup.UNITS_ROLL, 41);
+       //// Pitch rate
+       public static final FlightDataType TYPE_PITCH_RATE = newType(trans.get("FlightDataType.TYPE_PITCH_RATE"), UnitGroup.UNITS_ROLL, 42);
+       //// Yaw rate
+       public static final FlightDataType TYPE_YAW_RATE = newType(trans.get("FlightDataType.TYPE_YAW_RATE"), UnitGroup.UNITS_ROLL, 43);
        
 
        //// Stability information
-       public static final FlightDataType TYPE_MASS = newType("Mass", UnitGroup.UNITS_MASS, 50);
-       public static final FlightDataType TYPE_LONGITUDINAL_INERTIA = newType("Longitudinal moment of inertia", UnitGroup.UNITS_INERTIA, 51);
-       public static final FlightDataType TYPE_ROTATIONAL_INERTIA = newType("Rotational moment of inertia", UnitGroup.UNITS_INERTIA, 52);
-       public static final FlightDataType TYPE_CP_LOCATION = newType("CP location", UnitGroup.UNITS_LENGTH, 53);
-       public static final FlightDataType TYPE_CG_LOCATION = newType("CG location", UnitGroup.UNITS_LENGTH, 54);
-       public static final FlightDataType TYPE_STABILITY = newType("Stability margin calibers", UnitGroup.UNITS_COEFFICIENT, 55);
+       //// Mass
+       public static final FlightDataType TYPE_MASS = newType(trans.get("FlightDataType.TYPE_MASS"), UnitGroup.UNITS_MASS, 50);
+       //// Longitudinal moment of inertia
+       public static final FlightDataType TYPE_LONGITUDINAL_INERTIA = newType(trans.get("FlightDataType.TYPE_LONGITUDINAL_INERTIA"), UnitGroup.UNITS_INERTIA, 51);
+       //// Rotational moment of inertia
+       public static final FlightDataType TYPE_ROTATIONAL_INERTIA = newType(trans.get("FlightDataType.TYPE_ROTATIONAL_INERTIA"), UnitGroup.UNITS_INERTIA, 52);
+       //// CP location
+       public static final FlightDataType TYPE_CP_LOCATION = newType(trans.get("FlightDataType.TYPE_CP_LOCATION"), UnitGroup.UNITS_LENGTH, 53);
+       //// CG location
+       public static final FlightDataType TYPE_CG_LOCATION = newType(trans.get("FlightDataType.TYPE_CG_LOCATION"), UnitGroup.UNITS_LENGTH, 54);
+       //// Stability margin calibers
+       public static final FlightDataType TYPE_STABILITY = newType(trans.get("FlightDataType.TYPE_STABILITY"), UnitGroup.UNITS_COEFFICIENT, 55);
        
 
        //// Characteristic numbers
-       public static final FlightDataType TYPE_MACH_NUMBER = newType("Mach number", UnitGroup.UNITS_COEFFICIENT, 60);
-       public static final FlightDataType TYPE_REYNOLDS_NUMBER = newType("Reynolds number", UnitGroup.UNITS_COEFFICIENT, 61);
+       //// Mach number
+       public static final FlightDataType TYPE_MACH_NUMBER = newType(trans.get("FlightDataType.TYPE_MACH_NUMBER"), UnitGroup.UNITS_COEFFICIENT, 60);
+       //// Reynolds number
+       public static final FlightDataType TYPE_REYNOLDS_NUMBER = newType(trans.get("FlightDataType.TYPE_REYNOLDS_NUMBER"), UnitGroup.UNITS_COEFFICIENT, 61);
        
 
        //// Thrust and drag
-       public static final FlightDataType TYPE_THRUST_FORCE = newType("Thrust", UnitGroup.UNITS_FORCE, 70);
-       public static final FlightDataType TYPE_DRAG_FORCE = newType("Drag force", UnitGroup.UNITS_FORCE, 71);
-       public static final FlightDataType TYPE_DRAG_COEFF = newType("Drag coefficient", UnitGroup.UNITS_COEFFICIENT, 72);
-       public static final FlightDataType TYPE_AXIAL_DRAG_COEFF = newType("Axial drag coefficient", UnitGroup.UNITS_COEFFICIENT, 73);
+       //// Thrust
+       public static final FlightDataType TYPE_THRUST_FORCE = newType(trans.get("FlightDataType.TYPE_THRUST_FORCE"), UnitGroup.UNITS_FORCE, 70);
+       //// Drag force
+       public static final FlightDataType TYPE_DRAG_FORCE = newType(trans.get("FlightDataType.TYPE_DRAG_FORCE"), UnitGroup.UNITS_FORCE, 71);
+       //// Drag coefficient
+       public static final FlightDataType TYPE_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 72);
+       //// Axial drag coefficient
+       public static final FlightDataType TYPE_AXIAL_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_AXIAL_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 73);
        
 
        ////  Component drag coefficients
-       public static final FlightDataType TYPE_FRICTION_DRAG_COEFF = newType("Friction drag coefficient", UnitGroup.UNITS_COEFFICIENT, 80);
-       public static final FlightDataType TYPE_PRESSURE_DRAG_COEFF = newType("Pressure drag coefficient", UnitGroup.UNITS_COEFFICIENT, 81);
-       public static final FlightDataType TYPE_BASE_DRAG_COEFF = newType("Base drag coefficient", UnitGroup.UNITS_COEFFICIENT, 82);
+       //// Friction drag coefficient
+       public static final FlightDataType TYPE_FRICTION_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_FRICTION_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 80);
+       //// Pressure drag coefficient
+       public static final FlightDataType TYPE_PRESSURE_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_PRESSURE_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 81);
+       //// Base drag coefficient
+       public static final FlightDataType TYPE_BASE_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_BASE_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 82);
        
 
        ////  Other coefficients
-       public static final FlightDataType TYPE_NORMAL_FORCE_COEFF = newType("Normal force coefficient", UnitGroup.UNITS_COEFFICIENT, 90);
-       public static final FlightDataType TYPE_PITCH_MOMENT_COEFF = newType("Pitch moment coefficient", UnitGroup.UNITS_COEFFICIENT, 91);
-       public static final FlightDataType TYPE_YAW_MOMENT_COEFF = newType("Yaw moment coefficient", UnitGroup.UNITS_COEFFICIENT, 92);
-       public static final FlightDataType TYPE_SIDE_FORCE_COEFF = newType("Side force coefficient", UnitGroup.UNITS_COEFFICIENT, 93);
-       public static final FlightDataType TYPE_ROLL_MOMENT_COEFF = newType("Roll moment coefficient", UnitGroup.UNITS_COEFFICIENT, 94);
-       public static final FlightDataType TYPE_ROLL_FORCING_COEFF = newType("Roll forcing coefficient", UnitGroup.UNITS_COEFFICIENT, 95);
-       public static final FlightDataType TYPE_ROLL_DAMPING_COEFF = newType("Roll damping coefficient", UnitGroup.UNITS_COEFFICIENT, 96);
-       
-       public static final FlightDataType TYPE_PITCH_DAMPING_MOMENT_COEFF = newType("Pitch damping coefficient", UnitGroup.UNITS_COEFFICIENT, 97);
-       public static final FlightDataType TYPE_YAW_DAMPING_MOMENT_COEFF = newType("Yaw damping coefficient", UnitGroup.UNITS_COEFFICIENT, 98);
+       //// Normal force coefficient
+       public static final FlightDataType TYPE_NORMAL_FORCE_COEFF = newType(trans.get("FlightDataType.TYPE_NORMAL_FORCE_COEFF"), UnitGroup.UNITS_COEFFICIENT, 90);
+       //// Pitch moment coefficient
+       public static final FlightDataType TYPE_PITCH_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_PITCH_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 91);
+       //// Yaw moment coefficient
+       public static final FlightDataType TYPE_YAW_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_YAW_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 92);
+       //// Side force coefficient
+       public static final FlightDataType TYPE_SIDE_FORCE_COEFF = newType(trans.get("FlightDataType.TYPE_SIDE_FORCE_COEFF"), UnitGroup.UNITS_COEFFICIENT, 93);
+       //// Roll moment coefficient
+       public static final FlightDataType TYPE_ROLL_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_ROLL_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 94);
+       //// Roll forcing coefficient
+       public static final FlightDataType TYPE_ROLL_FORCING_COEFF = newType(trans.get("FlightDataType.TYPE_ROLL_FORCING_COEFF"), UnitGroup.UNITS_COEFFICIENT, 95);
+       //// Roll damping coefficient
+       public static final FlightDataType TYPE_ROLL_DAMPING_COEFF = newType(trans.get("FlightDataType.TYPE_ROLL_DAMPING_COEFF"), UnitGroup.UNITS_COEFFICIENT, 96);
+       
+       //// Pitch damping coefficient
+       public static final FlightDataType TYPE_PITCH_DAMPING_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 97);
+       //// Yaw damping coefficient
+       public static final FlightDataType TYPE_YAW_DAMPING_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 98);
        
 
        ////  Reference length + area
-       public static final FlightDataType TYPE_REFERENCE_LENGTH = newType("Reference length", UnitGroup.UNITS_LENGTH, 100);
-       public static final FlightDataType TYPE_REFERENCE_AREA = newType("Reference area", UnitGroup.UNITS_AREA, 101);
+       //// Reference length
+       public static final FlightDataType TYPE_REFERENCE_LENGTH = newType(trans.get("FlightDataType.TYPE_REFERENCE_LENGTH"), UnitGroup.UNITS_LENGTH, 100);
+       //// Reference area
+       public static final FlightDataType TYPE_REFERENCE_AREA = newType(trans.get("FlightDataType.TYPE_REFERENCE_AREA"), UnitGroup.UNITS_AREA, 101);
        
 
        ////  Orientation
-       public static final FlightDataType TYPE_ORIENTATION_THETA = newType("Vertical orientation (zenith)", UnitGroup.UNITS_ANGLE, 106);
-       public static final FlightDataType TYPE_ORIENTATION_PHI = newType("Lateral orientation (azimuth)", UnitGroup.UNITS_ANGLE, 107);
+       //// Vertical orientation (zenith)
+       public static final FlightDataType TYPE_ORIENTATION_THETA = newType(trans.get("FlightDataType.TYPE_ORIENTATION_THETA"), UnitGroup.UNITS_ANGLE, 106);
+       //// Lateral orientation (azimuth)
+       public static final FlightDataType TYPE_ORIENTATION_PHI = newType(trans.get("FlightDataType.TYPE_ORIENTATION_PHI"), UnitGroup.UNITS_ANGLE, 107);
        
 
        ////  Atmospheric conditions
-       public static final FlightDataType TYPE_WIND_VELOCITY = newType("Wind velocity", UnitGroup.UNITS_VELOCITY, 110);
-       public static final FlightDataType TYPE_AIR_TEMPERATURE = newType("Air temperature", UnitGroup.UNITS_TEMPERATURE, 111);
-       public static final FlightDataType TYPE_AIR_PRESSURE = newType("Air pressure", UnitGroup.UNITS_PRESSURE, 112);
-       public static final FlightDataType TYPE_SPEED_OF_SOUND = newType("Speed of sound", UnitGroup.UNITS_VELOCITY, 113);
+       //// Wind velocity
+       public static final FlightDataType TYPE_WIND_VELOCITY = newType(trans.get("FlightDataType.TYPE_WIND_VELOCITY"), UnitGroup.UNITS_VELOCITY, 110);
+       //// Air temperature
+       public static final FlightDataType TYPE_AIR_TEMPERATURE = newType(trans.get("FlightDataType.TYPE_AIR_TEMPERATURE"), UnitGroup.UNITS_TEMPERATURE, 111);
+       //// Air pressure
+       public static final FlightDataType TYPE_AIR_PRESSURE = newType(trans.get("FlightDataType.TYPE_AIR_PRESSURE"), UnitGroup.UNITS_PRESSURE, 112);
+       //// Speed of sound
+       public static final FlightDataType TYPE_SPEED_OF_SOUND = newType(trans.get("FlightDataType.TYPE_SPEED_OF_SOUND"), UnitGroup.UNITS_VELOCITY, 113);
        
 
        ////  Simulation information
-       public static final FlightDataType TYPE_TIME_STEP = newType("Simulation time step", UnitGroup.UNITS_TIME_STEP, 200);
-       public static final FlightDataType TYPE_COMPUTATION_TIME = newType("Computation time", UnitGroup.UNITS_SHORT_TIME, 201);
+       //// Simulation time step
+       public static final FlightDataType TYPE_TIME_STEP = newType(trans.get("FlightDataType.TYPE_TIME_STEP"), UnitGroup.UNITS_TIME_STEP, 200);
+       //// Computation time
+       public static final FlightDataType TYPE_COMPUTATION_TIME = newType(trans.get("FlightDataType.TYPE_COMPUTATION_TIME"), UnitGroup.UNITS_SHORT_TIME, 201);
        
        
 
index 843f6c88f51e3f216b3a34053e8aac8c32d2993d..ead84eecf0263929264a25235694fa93f4c69f79 100644 (file)
@@ -1,6 +1,8 @@
 package net.sf.openrocket.simulation;
 
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
 
 
 /**
@@ -9,7 +11,8 @@ import net.sf.openrocket.rocketcomponent.RocketComponent;
  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
  */
 public class FlightEvent implements Comparable<FlightEvent> {
-       
+       private static final Translator trans = Application.getTranslator();
+
        /**
         * The type of the flight event.
         * 
@@ -19,57 +22,69 @@ public class FlightEvent implements Comparable<FlightEvent> {
                /** 
                 * Rocket launch.
                 */
-               LAUNCH("Launch"),
+               //// Launch
+               LAUNCH(trans.get("FlightEvent.Type.LAUNCH")),
                /** 
                 * Ignition of a motor.  Source is the motor mount the motor of which has ignited,
                 * and the data is the MotorId of the motor instance.
                 */
-               IGNITION("Motor ignition"),
+               //// Motor ignition
+               IGNITION(trans.get("FlightEvent.Type.IGNITION")),
                /**
                 * When the motor has lifted off the ground.
                 */
-               LIFTOFF("Lift-off"),
+               //// Lift-off
+               LIFTOFF(trans.get("FlightEvent.Type.LIFTOFF")),
                /**
                 * Launch rod has been cleared.
                 */
-               LAUNCHROD("Launch rod clearance"),
+               //// Launch rod clearance
+               LAUNCHROD(trans.get("FlightEvent.Type.LAUNCHROD")),
                /** 
                 * Burnout of a motor.  Source is the motor mount the motor of which has burnt out,
                 * and the data is the MotorId of the motor instance.
                 */
-               BURNOUT("Motor burnout"),
+               //// Motor burnout
+               BURNOUT(trans.get("FlightEvent.Type.BURNOUT")),
                /** 
                 * Ejection charge of a motor fired.  Source is the motor mount the motor of
                 * which has exploded its ejection charge, and data is the MotorId of the motor instance.
                 */
-               EJECTION_CHARGE("Ejection charge"),
+               //// Ejection charge
+               EJECTION_CHARGE(trans.get("FlightEvent.Type.EJECTION_CHARGE")),
                /** 
                 * Separation of a stage.  Source is the stage which has separated all lower stages. 
                 */
-               STAGE_SEPARATION("Stage separation"),
+               //// Stage separation
+               STAGE_SEPARATION(trans.get("FlightEvent.Type.STAGE_SEPARATION")),
                /** 
                 * Apogee has been reached.
                 */
-               APOGEE("Apogee"),
+               //// Apogee
+               APOGEE(trans.get("FlightEvent.Type.APOGEE")),
                /** 
                 * Opening of a recovery device.  Source is the RecoveryComponent which has opened. 
                 */
-               RECOVERY_DEVICE_DEPLOYMENT("Recovery device deployment"),
+               //// Recovery device deployment
+               RECOVERY_DEVICE_DEPLOYMENT(trans.get("FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT")),
                /** 
                 * Ground has been hit after flight.
                 */
-               GROUND_HIT("Ground hit"),
+               //// Ground hit
+               GROUND_HIT(trans.get("FlightEvent.Type.GROUND_HIT")),
 
                /**
                 * End of simulation.  Placing this to the queue will end the simulation.
                 */
-               SIMULATION_END("Simulation end"),
+               //// Simulation end
+               SIMULATION_END(trans.get("FlightEvent.Type.SIMULATION_END")),
 
                /**
                 * A change in altitude has occurred.  Data is a <code>Pair<Double,Double></code>
                 * which contains the old and new altitudes.
                 */
-               ALTITUDE("Altitude change");
+               //// Altitude change
+               ALTITUDE(trans.get("FlightEvent.Type.ALTITUDE"));
                
                private final String name;
                
index 78d2941a7c3fa777c40ba57b983373a68d4a4e2a..bb8b20f771c452493804f23888207acc372cf4b6 100644 (file)
@@ -20,7 +20,7 @@ public final class Application {
        private static LogHelper logger;
        private static LogLevelBufferLogger logBuffer;
        
-       private static Translator baseTranslator = new DebugTranslator();
+       private static Translator baseTranslator = new DebugTranslator(null);
        
        private static ThrustCurveMotorSetDatabase motorSetDatabase;
        
index f1c4aa4d4e124196425fc216a9acd2c53d9e6255..f4141f9b057746b22d928ce85da1bb0376cbd05b 100644 (file)
@@ -139,10 +139,9 @@ public class Startup {
                }
                
                Translator t;
+               t = new ResourceBundleTranslator("l10n.messages");
                if (Locale.getDefault().getLanguage().equals("xx")) {
-                       t = new DebugTranslator();
-               } else {
-                       t = new ResourceBundleTranslator("l10n.messages");
+                       t = new DebugTranslator(t);
                }
                
                log.info("Set up translation for locale " + Locale.getDefault() +
index efc946ba0d46057947fd8779b396f3abeed46b30..edd562b3129354a8ed159e693df64c61aa1f39d0 100644 (file)
@@ -2,22 +2,33 @@ package net.sf.openrocket.util;
 
 import java.util.Arrays;
 
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
+
 /**
  * An enumeration of line styles.  The line styles are defined by an array of
  * floats suitable for <code>BasicStroke</code>.
  * 
  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
  */
+
 public enum LineStyle {
-       SOLID("Solid",new float[] { 10f, 0f }),
-       DASHED("Dashed",new float[] { 6f, 4f }),
-       DOTTED("Dotted",new float[] { 2f, 3f }),
-       DASHDOT("Dash-dotted",new float[] { 8f, 3f, 2f, 3f})
+       
+       //// Solid
+       SOLID("LineStyle.Solid",new float[] { 10f, 0f }),
+       //// Dashed
+       DASHED("LineStyle.Dashed",new float[] { 6f, 4f }),
+       //// Dotted
+       DOTTED("LineStyle.Dotted",new float[] { 2f, 3f }),
+       //// Dash-dotted
+       DASHDOT("LineStyle.Dash-dotted",new float[] { 8f, 3f, 2f, 3f})
        ;
        
        private final String name;
        private final float[] dashes;
+       
        LineStyle(String name, float[] dashes) {
+       
                this.name = name;
                this.dashes = dashes;
        }
@@ -26,6 +37,7 @@ public enum LineStyle {
        }
        @Override
        public String toString() {
-               return name;
+               final Translator trans = Application.getTranslator();
+               return trans.get(name);
        }
 }
\ No newline at end of file
index 9cd9e7abf8bb06d72fee8f4cd44fa72b3425882a..047db50c7ae3c1a65599be088552aacb9a87168b 100644 (file)
@@ -23,6 +23,7 @@ import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.gui.main.ExceptionHandler;
 import net.sf.openrocket.gui.print.PrintSettings;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.rocketcomponent.BodyComponent;
@@ -199,13 +200,18 @@ public class Prefs {
         * Within a holder class so they will load only when needed.
         */
        private static class DefaultMaterialHolder {
+               private static final Translator trans = Application.getTranslator();
+               
+               //// Elastic cord (round 2mm, 1/16 in)
                private static final Material DEFAULT_LINE_MATERIAL =
-                               Databases.findMaterial(Material.Type.LINE, "Elastic cord (round 2mm, 1/16 in)",
+                               Databases.findMaterial(Material.Type.LINE, trans.get("Databases.materials.Elasticcordround2mm"),
                                                0.0018, false);
+               //// Ripstop nylon
                private static final Material DEFAULT_SURFACE_MATERIAL =
-                               Databases.findMaterial(Material.Type.SURFACE, "Ripstop nylon", 0.067, false);
+                               Databases.findMaterial(Material.Type.SURFACE, trans.get("Databases.materials.Ripstopnylon"), 0.067, false);
+               //// Cardboard
                private static final Material DEFAULT_BULK_MATERIAL =
-                               Databases.findMaterial(Material.Type.BULK, "Cardboard", 680, false);
+                               Databases.findMaterial(Material.Type.BULK, trans.get("Databases.materials.Cardboard"), 680, false);
        }
        
        //////////////////////
index 1f3eb90cf2a0efc3da8ed9a05fb4e1201a5e0931..9681469534e8bddc5c8d537c571b1a58b39300e4 100644 (file)
@@ -20,8 +20,10 @@ import javax.swing.SwingUtilities;
 
 import net.miginfocom.swing.MigLayout;
 import net.sf.openrocket.file.motor.GeneralMotorLoader;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.motor.ThrustCurveMotor;
+import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.GUIUtil;
 
 import org.jfree.chart.ChartFactory;
@@ -35,15 +37,18 @@ import org.jfree.data.xy.XYSeriesCollection;
 public class MotorPlot extends JDialog {
        
        private int selected = -1;
+       private static final Translator trans = Application.getTranslator();
        
        public MotorPlot(List<String> filenames, List<ThrustCurveMotor> motors) {
-               super((JFrame) null, "Motor plot", true);
+               //// Motor plot
+               super((JFrame) null, trans.get("MotorPlot.title.Motorplot"), true);
                
                JTabbedPane tabs = new JTabbedPane();
                for (int i = 0; i < filenames.size(); i++) {
                        JPanel pane = createPlotPanel((ThrustCurveMotor) motors.get(i));
                        
-                       JButton button = new JButton("Select");
+                       //// Select button
+                       JButton button = new JButton(trans.get("MotorPlot.but.Select"));
                        final int number = i;
                        button.addActionListener(new ActionListener() {
                                @Override
@@ -80,9 +85,12 @@ public class MotorPlot extends JDialog {
                
                // Create the chart using the factory to get all default settings
                JFreeChart chart = ChartFactory.createXYLineChart(
-                               "Motor thrust curve",
-                               "Time / s",
-                               "Thrust / N",
+                               //// Motor thrust curve
+                               trans.get("MotorPlot.Chart.Motorthrustcurve"),
+                               //// Time / s
+                               trans.get("MotorPlot.Chart.Time"),
+                               //// Thrust / N
+                               trans.get("MotorPlot.Chart.Thrust"),
                                new XYSeriesCollection(series),
                                PlotOrientation.VERTICAL,
                                true,
@@ -109,11 +117,16 @@ public class MotorPlot extends JDialog {
 
                JTextArea area = new JTextArea(5, 40);
                StringBuilder sb = new StringBuilder();
-               sb.append("Designation:  ").append(motor.getDesignation()).append("        ");
-               sb.append("Manufacturer: ").append(motor.getManufacturer()).append("        ");
-               sb.append("Type: ").append(motor.getMotorType()).append('\n');
-               sb.append("Delays: ").append(Arrays.toString(motor.getStandardDelays())).append('\n');
-               sb.append("Comment:\n").append(motor.getDescription());
+               //// Designation:  
+               sb.append("MotorPlot.txt.Designation" + "  ").append(motor.getDesignation()).append("        ");
+               //// Manufacturer:
+               sb.append("MotorPlot.txt.Manufacturer" + " ").append(motor.getManufacturer()).append("        ");
+               //// Type:
+               sb.append("MotorPlot.txt.Type" + " ").append(motor.getMotorType()).append('\n');
+               //// Delays:
+               sb.append("MotorPlot.txt.Delays" +" ").append(Arrays.toString(motor.getStandardDelays())).append('\n');
+               //// Comment:\n
+               sb.append("MotorPlot.txt.Comment" + " ").append(motor.getDescription());
                area.setText(sb.toString());
                panel.add(area, "grow, wrap");