--- /dev/null
+#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
--- /dev/null
+#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\=\=
#
# 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 Shift+click to select other Double-click to edit 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
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
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×<i>Length</i> and <i>Diameter</i>.
+Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2×<i>Length</i> and <i>Diameter</i>. If the transition is not clipped, then the profile is extended at the center by the corresponding radius.
+Shape.Powerseries = Power series
+Shape.Powerseries.desc1 = A power series nose cone has a profile of <i>Radius</i> × (<i>x</i> / <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> × (<i>x</i> / <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.
--- /dev/null
+! 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 Shift+Klick andere auswählen Doppelklick zum Bearbeiten 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×<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×<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> × (<i>x</i> / <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> × (<i>x</i> / <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
--- /dev/null
+#
+# 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 Mayúsculas+click para seleccionar otro Doble-click to mostrar 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> &veces; (<i>x</i> / <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> &veces; (<i>x</i> / <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.
--- /dev/null
+\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 Shift+cliquer pour sélectionner plusieurs Double-cliquer pour modifier 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×<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×<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> × (<i>x</i> / <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> × (<i>x</i> / <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
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.
*/
@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) + ").");
}
/** 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"));
}
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;
*/
public class Databases {
private static final LogHelper log = Application.getLogger();
+ private static final Translator trans = Application.getTranslator();
/* Static implementations of specific 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
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 {
private boolean artificialEvent = false;
+ private static final Translator trans = Application.getTranslator();
public StorageOptionChooser(OpenRocketDocument doc, StorageOptions opts) {
super(new MigLayout());
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);
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);
}
formatted = size + " kB";
}
- estimateLabel.setText("Estimated file size: " + formatted);
+ //// Estimated file size:
+ estimateLabel.setText(trans.get("StorageOptChooser.lbl.Estfilesize") + " " + formatted);
}
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
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
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");
}
CustomMaterialDialog dialog = new CustomMaterialDialog(
SwingUtilities.getWindowAncestor(parentComponent),
(Material) getSelectedItem(), true,
- "Define custom material");
+ //// Define custom material
+ trans.get("MaterialModel.title.Defcustmat"));
dialog.setVisible(true);
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();
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;
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) {
// 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) {
});
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) {
// 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);
// 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");
// 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) {
}
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;
}
}
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);
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);
}
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 {
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;
@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);
}
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;
public class BodyTubeConfig extends RocketComponentConfig {
private MotorConfig motorConfigPane = null;
+ private static final Translator trans = Application.getTranslator();
public BodyTubeConfig(RocketComponent c) {
super(c);
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);
//// 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
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);
//// 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);
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");
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);
}
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);
}
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);
}
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;
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);
this.setContentPane(configurator);
configurator.updateFields();
- setTitle(component.getComponentName() + " configuration");
+ //// configuration
+ setTitle(component.getComponentName() + " " + trans.get("ComponentCfgDlg.configuration"));
// Dimension pref = getPreferredSize();
// Dimension real = getSize();
dialog = new ComponentConfigDialog(parent, document, component);
dialog.setVisible(true);
- document.addUndoPosition("Modify " + component.getComponentName());
+ ////Modify
+ document.addUndoPosition(trans.get("ComponentCfgDlg.Modify") + " " + component.getComponentName());
}
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);
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);
//// 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);
//// 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,
//// 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);
//// Height
- panel.add(new JLabel("Height:"));
+ panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Height")));
m = new DoubleModel(component,"Height",UnitGroup.UNITS_LENGTH,0);
//// 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",
}));
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());
//// 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);
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);
}
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;
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);
}
//// 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) {
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);
});
}
- 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) {
// 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;
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);
//// 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);
"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);
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 =
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;
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();
- //// 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);
//// 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);
//// 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,
//// 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",
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());
//// 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);
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) {
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);
}
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);
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) {
// 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) {
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;
public class LaunchLugConfig extends RocketComponentConfig {
private MotorConfig motorConfigPane = null;
+ private static final Translator trans = Application.getTranslator();
public LaunchLugConfig(RocketComponent c) {
super(c);
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);
//// 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
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);
//// 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);
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);
-
- 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",
}));
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());
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);
}
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);
//// 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);
//// 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);
//// 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
//// 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",
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());
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);
}
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);
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);
//// 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) {
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;
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 {
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"));
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");
// 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");
}
});
- 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) {
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));
// 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);
// 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");
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) {
});
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) {
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)
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 {
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>";
//// 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();
//// 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");
//// 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());
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());
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);
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");
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);
}
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);
//// 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);
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);
// 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);
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) {
//// 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);
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"));
//// 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",
}));
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());
//// 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);
//// 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
//// 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);
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);
}
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);
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);
//// 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) {
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);
if (outer != null) {
panel.add(new JLabel(outer));
+ //// OuterRadius
od = new DoubleModel(component,"OuterRadius",2,UnitGroup.UNITS_LENGTH,0);
// Diameter = 2*Radius
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");
}
}
if (inner != null) {
panel.add(new JLabel(inner));
+ //// InnerRadius
m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0);
spin = new JSpinner(m.getSpinnerModel());
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");
}
}
if (thickness != null) {
panel.add(new JLabel(thickness));
+ //// Thickness
m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
spin = new JSpinner(m.getSpinnerModel());
if (length != null) {
panel.add(new JLabel(length));
+ //// Length
m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
spin = new JSpinner(m.getSpinnerModel());
//// 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",
}));
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));
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");
"[][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) {
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");
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;
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;
public class RocketComponentConfig extends JPanel {
+ private static final Translator trans = Application.getTranslator();
+
protected final RocketComponent component;
protected final JTabbedPane tabbedPane;
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();
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) {
// 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() + ")";
}
}
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");
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) {
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;
//// 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);
//// 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);
// 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");
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
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() {
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);
}
});
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() {
});
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) {
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);
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);
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);
//// 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");
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);
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);
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);
//// 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");
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;
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());
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);
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);
////// 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);
// Material
- materialPanel(panel, Material.Type.LINE, "Shock cord material:", null);
+ //// Shock cord material:
+ materialPanel(panel, Material.Type.LINE, trans.get("ShockCordCfg.lbl.Shockcordmaterial"), null);
//// 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",
}));
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());
//// 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);
//// 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
-
- 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);
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);
}
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);
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);
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);
-
- 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);
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);
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);
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");
//// 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",
}));
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());
"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);
//// 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
//// 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);
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);
}
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);
//// 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);
//// 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) {
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);
}
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;
//// 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();
});
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");
//// 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);
//// 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
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
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);
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");
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);
}
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);
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);
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,
"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);
- //// 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);
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);
- //// 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);
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);
- //// 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);
//// 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",
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());
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();
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;
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>" +
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);
// 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) {
GUIUtil.setDisposableDialogOptions(this, close);
}
-
}
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;
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"));
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");
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) {
// }
- //// 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) {
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);
}
}
});
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);
}
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);
}
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;
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;
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;
public ComponentAnalysisDialog(final RocketPanel rocketPanel) {
- super(SwingUtilities.getWindowAncestor(rocketPanel), "Component analysis");
+ ////Component analysis
+ super(SwingUtilities.getWindowAncestor(rocketPanel),
+ trans.get("componentanalysisdlg.componentanalysis"));
JTable table;
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
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");
// 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();
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();
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();
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();
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();
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"));
}
});
-
- 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);
// });
// 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();
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 {
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);
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;
}
- // 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());
// 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);
}
- // 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);
// 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) {
});
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) {
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;
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()) {
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();
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
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) {
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);
return 60;
}
},
- new Column("Level") {
+ //// Level
+ new Column(trans.get("debuglogdlg.col.Level")) {
@Override
public Object getValueAt(int row) {
return buffer.get(row).getLevel();
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();
return 200;
}
},
- new Column("Message") {
+ //// Message
+ new Column(trans.get("debuglogdlg.col.Message")) {
@Override
public Object getValueAt(int row) {
return buffer.get(row).getMessage();
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);
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) {
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) {
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;
// 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);
//// 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");
//// 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, "");
});
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) {
});
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) {
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) {
});
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) {
//// 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) {
// 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) {
MotorMount mount = findMount(column);
Motor motor = mount.getMotor(id);
if (motor == null)
+ //// None
return "None";
String str = motor.getDesignation(mount.getMotorDelay(id));
@Override
public String getColumnName(int column) {
if (column == 0) {
- return "Configuration name";
+ //// Configuration name
+ return trans.get("edtmotorconfdlg.lbl.Configname");
}
MotorMount mount = findMount(column);
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;
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) {
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);
});
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) {
});
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) {
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;
}
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" +
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) {
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);
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;
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;
* @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"));
// supported by this particular VM on this particular host
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
+ } else {
+ desktop = null;
}
document = orDocument;
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
// 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() {
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) {
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) {
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) {
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) {
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);
}
}
//The description of this filter
@Override
public String getDescription() {
- return "PDF files";
+ return trans.get("filetypes.pdf");
}
};
chooser.setFileFilter(filter);
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;
*/
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;
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) {
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;
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"));
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);
}
}
+ //// 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) {
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 {
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);
// 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) {
});
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) {
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();
return Collator.getInstance();
}
},
- DESIGNATION("Designation") {
+ //// Designation
+ DESIGNATION("TCurveMotorCol.DESIGNATION") {
@Override
public String getValue(ThrustCurveMotorSet m) {
return m.getDesignation();
return new DesignationComparator();
}
},
- TYPE("Type") {
+ //// Type
+ TYPE("TCurveMotorCol.TYPE") {
@Override
public String getValue(ThrustCurveMotorSet m) {
return m.getType().getName();
return Collator.getInstance();
}
},
- DIAMETER("Diameter") {
+ //// Diameter
+ DIAMETER("TCurveMotorCol.DIAMETER") {
@Override
public Object getValue(ThrustCurveMotorSet m) {
return new Value(m.getDiameter(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
return ValueComparator.INSTANCE;
}
},
- LENGTH("Length") {
+ //// Length
+ LENGTH("TCurveMotorCol.LENGTH") {
@Override
public Object getValue(ThrustCurveMotorSet m) {
return new Value(m.getLength(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
private final String title;
private final int width;
+ private static final Translator trans = Application.getTranslator();
ThrustCurveMotorColumns(String title) {
this(title, 50);
public abstract Comparator<?> getComparator();
public String getTitle() {
- return title;
+ return trans.get(title);
}
public int getWidth() {
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;
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);
// 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) {
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;
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;
// 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
});
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() {
// 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();
// 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();
- // 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);
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 {
}
});
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);
// 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 {
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);
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();
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);
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 {
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));
}
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");
}
} else {
selectedDelay = currentDelay;
- delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, "None"));
+ //// None
+ delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, trans.get("TCMotorSelPan.delayBox.None")));
}
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 {
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;
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;
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"));
// 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();
return 15;
}
},
-
- new Column("Density") {
+ //// Density
+ new Column(trans.get("matedtpan.col.Density")) {
@Override
public Object getValueAt(int row) {
Material m = getMaterial(row);
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();
});
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) {
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);
});
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) {
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;
}
});
-
- 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");
}
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;
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) {
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 = "";
});
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);
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();
});
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
});
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
});
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) {
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) {
});
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) {
});
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");
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) {
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);
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;
*/
public class RocketInfo implements FigureElement {
+ private static final Translator trans = Application.getTranslator();
// Margin around the figure edges, pixels
private static final int MARGIN = 8;
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);
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);
}
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();
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());
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));
}
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;
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;
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");
// 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);
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);
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() {
});
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
});
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);
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
});
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
});
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
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
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
//// 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);
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);
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);
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() {
//// 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() {
//// 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
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() {
});
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
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
//// 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
menu.addSeparator();
+ //// Create test rocket
item = new JMenuItem("Create test rocket");
item.addActionListener(new ActionListener() {
@Override
});
menu.add(item);
-
+ //// Exhaust memory
item = new JMenuItem("Exhaust memory");
item.addActionListener(new ActionListener() {
@Override
menu.addSeparator();
+ //// Exception here
item = new JMenuItem("Exception here");
item.addActionListener(new ActionListener() {
@Override
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);
}
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
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);
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;
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;
////////////////////////////////////////////
-
- 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
}
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
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;
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";
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) {
}
- icons[1] = new ImageIcon(bi2,desc + " (disabled)");
+ //// (disabled)
+ icons[1] = new ImageIcon(bi2,desc + " " +trans.get("ComponentIcons.disabled"));
return icons;
} else {
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;
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) {
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)
*/
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);
*/
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);
*/
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);
*/
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();
}
*/
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();
}
*/
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();
}
*/
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();
}
*/
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();
}
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();
*/
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();
}
*/
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();
}
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;
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;
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;
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
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) {
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) {
});
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) {
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) {
//// 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);
// 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);
// 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);
//// 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);
- // 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);
//// 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);
- // 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);
//// 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);
- // 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);
- // 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);
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");
}
//// 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!");
// 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);
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() {
//// 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();
// 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
});
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) {
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;
}
// 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,
// 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"));
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) {
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());
}
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;
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
//////// 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) {
});
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) {
});
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) {
});
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) {
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)
});
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
},
//// 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())
},
//// 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())
},
//// Apogee
- new Column("Apogee") {
+ new Column(trans.get("simpanel.col.Apogee")) {
@Override
public Object getValueAt(int row) {
if (row < 0 || row >= document.getSimulationCount())
},
//// 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())
},
//// 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())
},
//// 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())
},
//// 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())
},
//// 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())
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;
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;
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;
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");
// 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");
// 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) {
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);
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);
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);
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);
// 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);
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;
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);
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);
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);
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);
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);
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);
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);
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);
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;
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>();
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);
// 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,
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
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) {
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;
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() {
});
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() {
});
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);
//// 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) {
});
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) {
-
- 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;
}
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) {
});
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);
});
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);
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
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;
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;
*/
public class RocketPanel extends JPanel implements TreeSelectionListener, ChangeSource {
+ private static final Translator trans = Application.getTranslator();
private final RocketFigure figure;
private final ScaleScrollPane scrollPane;
// 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");
// 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");
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 " +
- "Shift+click to select other " +
- "Double-click to edit " +
- "Click+drag to move");
+
+ //// <html>Click to select Shift+click to select other Double-click to edit 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");
/**
* 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 + "]";
}
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.
*/
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();
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;
}
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.
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() {
}
return getOuterRadius();
}
-
+
@Override
protected double getRearAutoRadius() {
if (isRadiusAutomatic()) {
}
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);
}
-
-
+
+
/**
*/
@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().
public double getRadius(double x) {
return getOuterRadius();
}
-
+
/**
* Returns the inner radius at the position x. If the tube is filled, returns always zero.
*/
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.
*/
public Coordinate getComponentCG() {
return new Coordinate(length / 2, 0, 0, getComponentMass());
}
-
+
/**
* Returns the body tube's volume.
*/
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;
}
-
-
+
+
/**
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.
addBound(bounds, length, r);
return bounds;
}
-
-
+
+
/**
* Check whether the given type can be added to this component. BodyTubes allow any
return true;
return false;
}
-
+
//////////////// Motor mount /////////////////
-
+
@Override
public boolean isMotorMount() {
return motorMount;
}
-
+
@Override
public void setMotorMount(boolean mount) {
if (motorMount == mount)
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) {
motors.put(id, motor);
fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
}
-
+
@Override
public double getMotorDelay(String id) {
Double delay = ejectionDelays.get(id);
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)
ignitionEvent = event;
fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
}
-
-
+
+
@Override
public double getIgnitionDelay() {
return ignitionDelay;
}
-
+
@Override
public void setIgnitionDelay(double delay) {
if (MathUtil.equals(delay, ignitionDelay))
ignitionDelay = delay;
fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
}
-
-
+
+
@Override
public double getMotorOverhang() {
return overhang;
}
-
+
@Override
public void setMotorOverhang(double overhang) {
if (MathUtil.equals(this.overhang, overhang))
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());
}
-
-
+
+
/*
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);
@Override
public String getComponentName() {
- return "Bulkhead";
+ //// Bulkhead
+ return trans.get("Bulkhead.Bulkhead");
}
@Override
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;
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;
@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) + ")";
}
}
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.
*/
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;
}
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;
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();
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;
} else {
position = -1;
}
-
+
// Create the freeform fin set
Coordinate[] finpoints = finset.getFinPoints();
"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();
}
return freeform;
}
-
-
+
+
/**
* Add a fin point between indices <code>index-1</code> and <code>index</code>.
*/
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>
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) {
}
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>
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;
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;
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
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");
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;
}
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");
}
}
}
-
+
}
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
*/
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>();
private IgnitionEvent ignitionEvent = IgnitionEvent.AUTOMATIC;
private double ignitionDelay = 0;
private double overhang = 0;
-
-
+
+
/**
* Main constructor.
*/
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.
*/
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.
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
public double getClusterScale() {
return clusterScale;
}
-
+
/**
* Set the cluster scaling.
* @see #getClusterScale()
clusterScale = scale;
fireComponentChangeEvent(new ComponentChangeEvent(this, ComponentChangeEvent.MASS_CHANGE));
}
-
-
+
+
/**
* @return the clusterRotation
public double getClusterRotation() {
return clusterRotation;
}
-
-
+
+
/**
* @param rotation the clusterRotation to set
*/
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.
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());
}
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 +
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)
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) {
motors.put(id, motor);
fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
}
-
+
@Override
public double getMotorDelay(String id) {
Double delay = ejectionDelays.get(id);
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)
ignitionEvent = event;
fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
}
-
-
+
+
@Override
public double getIgnitionDelay() {
return ignitionDelay;
}
-
+
@Override
public void setIgnitionDelay(double delay) {
if (MathUtil.equals(delay, ignitionDelay))
ignitionDelay = delay;
fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE);
}
-
-
+
+
@Override
public double getMotorOverhang() {
return overhang;
}
-
+
@Override
public void setMotorOverhang(double overhang) {
if (MathUtil.equals(this.overhang, overhang))
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());
}
((InnerTube) c).ejectionDelays = (HashMap<String, Double>) ejectionDelays.clone();
return c;
}
-
+
}
\ No newline at end of file
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;
public class LaunchLug extends ExternalComponent implements Coaxial {
+ private static final Translator trans = Application.getTranslator();
+
private double radius;
private double thickness;
@Override
public String getComponentName() {
- return "Launch lug";
+ //// Launch lug
+ return trans.get("LaunchLug.Launchlug");
}
@Override
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;
@Override
public String getComponentName() {
- return "Mass component";
+ //// Mass component
+ return trans.get("MassComponent.MassComponent");
}
@Override
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();
}
}
},
- 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)
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)
return (mount+1 == charge);
}
},
- NEVER("Never") {
+ //// Never
+ NEVER(trans.get("MotorMount.IgnitionEvent.NEVER")) {
@Override
public boolean isActivationEvent(FlightEvent e, RocketComponent source) {
return false;
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.
*/
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");
}
-
+
}
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;
@Override
public String getComponentName() {
- return "Parachute";
+ //// Parachute
+ return trans.get("Parachute.Parachute");
}
@Override
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;
* @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)
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) {
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;
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;
/**
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>();
{
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();
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);
}
-
-
+
+
/**
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
public int getModID() {
return modID;
}
-
+
/**
* Return the non-negative mass modification ID of this rocket. See
* {@link #getModID()} for details.
public int getMassModID() {
return massModID;
}
-
+
/**
* Return the non-negative aerodynamic modification ID of this rocket. See
* {@link #getModID()} for details.
public int getAerodynamicModID() {
return aeroModID;
}
-
+
/**
* Return the non-negative tree modification ID of this rocket. See
* {@link #getModID()} for details.
public int getTreeModID() {
return treeModID;
}
-
+
/**
* Return the non-negative functional modificationID of this rocket.
* This changes every time a functional change occurs.
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);
}
}
-
-
+
+
this.perfectFinish = perfectFinish;
fireComponentChangeEvent(ComponentChangeEvent.AERODYNAMIC_CHANGE);
}
-
-
+
+
/**
* Get whether the rocket has a perfect finish.
public boolean isPerfectFinish() {
return perfectFinish;
}
-
-
+
+
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>.
*/
@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;
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;
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.
// 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();
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();
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();
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) {
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.
"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
freezeList = null;
return;
}
-
+
log.debug("Thawing rocket, freezeList=" + freezeList);
-
+
int type = 0;
Object c = null;
for (ComponentChangeEvent e : freezeList) {
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
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.
checkState();
return motorConfigurationIDs.toArray(new String[0]);
}
-
+
/**
* Add a new motor configuration ID to the motor configurations. The new ID
* is returned.
fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
return id;
}
-
+
/**
* Add a specified motor configuration ID to the motor configurations.
*
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.
motorConfigurationIDs.remove(id);
fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE);
}
-
-
+
+
/**
* Check whether <code>id</code> is a valid motor configuration ID.
*
checkState();
return motorConfigurationIDs.contains(id);
}
-
-
+
+
/**
* Check whether the given motor configuration ID has motors defined for it.
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())
}
return false;
}
-
-
+
+
/**
* Return the user-set name of the motor configuration. If no name has been set,
* returns an empty string (not null).
return "";
return s;
}
-
-
+
+
/**
* Set the name of the motor configuration. A name can be unset by passing
* <code>null</code> or an empty string.
motorConfigurationNames.put(id, name);
fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
}
-
-
+
+
/**
* Return either the motor configuration name (if set) or its description.
*
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.
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) {
} else {
s = previous;
}
-
+
if (stageName.equals(""))
stageName = s;
else
stageName = stageName + "," + s;
}
-
+
previous = current;
count = 1;
-
+
}
}
if (previous != null) {
} 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);
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.
*/
public boolean isCompatible(Class<? extends RocketComponent> type) {
return (Stage.class.isAssignableFrom(type));
}
-
+
}
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.
* 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()! ////
-
+
/**
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.
* @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
* @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
* @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
* @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
mutex.verify();
return isCompatible(c.getClass());
}
-
-
+
+
/**
* Return a collection of bounding coordinates. The coordinates must be such that
* @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
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
// No-op
checkState();
}
-
-
+
+
/**
else
return name;
}
-
-
+
+
/**
* Create a string describing the basic component structure from this component downwards.
* @return a string containing the rocket structure
mutex.unlock("toDebugString");
}
}
-
+
private void toDebugString(StringBuilder sb) {
sb.append(this.getClass().getSimpleName()).append('@').append(System.identityHashCode(this));
sb.append("[\"").append(this.getName()).append('"');
}
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
*/
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
} 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();
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.
mutex.verify();
return color;
}
-
+
/**
* Set the color of the object to use in 2D figures.
*/
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;
this.lineStyle = style;
fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
}
-
-
+
+
/**
mutex.verify();
return overrideMass;
}
-
+
/**
* Set the current override mass. The mass is not set to use by this
* method.
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.
mutex.verify();
return massOverriden;
}
-
+
/**
* Set whether the mass is currently overridden.
*
massOverriden = o;
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
-
-
+
+
mutex.verify();
return getComponentCG().setX(overrideCGX);
}
-
+
/**
* Return the x-coordinate of the current override CG.
*
mutex.verify();
return overrideCGX;
}
-
+
/**
* Set the current override CG to (x,0,0).
*
else
fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
}
-
+
/**
* Return whether the CG is currently overridden.
*
mutex.verify();
return cgOverriden;
}
-
+
/**
* Set whether the CG is currently overridden.
*
cgOverriden = o;
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
-
-
+
+
/**
* Return whether the mass and/or CG override overrides all subcomponent values
mutex.verify();
return overrideSubcomponents;
}
-
-
+
+
/**
* Set whether the mass and/or CG override overrides all subcomponent values
* as well. See {@link #getOverrideSubcomponents()} for details.
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
mutex.verify();
return isCGOverridden() || isMassOverridden();
}
-
-
+
+
/**
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.
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.
mutex.verify();
return comment;
}
-
+
/**
* Set the comment of the component.
*
this.comment = comment;
fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE);
}
-
-
+
+
/**
* Returns the unique ID of the component.
public final String getID() {
return id;
}
-
+
/**
* Generate a new ID for this component.
*/
mutex.verify();
this.id = UniqueID.uuid();
}
-
-
+
+
/**
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,
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.
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);
}
-
-
+
+
/**
mutex.verify();
return position;
}
-
-
+
+
/**
* Set the position value of the component. The exact meaning of the value
* depends on the current relative positioning.
checkState();
this.position = value;
}
-
-
+
+
/////////// Coordinate changes ///////////
-
+
/**
* Returns coordinate c in absolute coordinates. Equivalent to toComponent(c,null).
*/
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
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);
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)) {
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.
mutex.unlock("getTotalLength");
}
}
-
-
+
+
/////////// Total mass and CG calculation ////////////
-
+
/**
* Return the (possibly overridden) mass of component.
*
return overrideMass;
return getComponentMass();
}
-
+
/**
* Return the (possibly overridden) center of gravity and mass.
*
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
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
checkState();
return getRotationalUnitInertia() * getMass();
}
-
-
+
+
/////////// Children handling ///////////
-
+
/**
* Adds a child to the rocket component tree. The component is added to the end
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.
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.
*
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.
*/
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;
}
-
-
+
+
/**
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.
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.
this.checkComponentStructure();
return children.indexOf(child);
}
-
+
/**
* Get the parent component of this component. Returns <code>null</code> if the component
* has no parent.
checkState();
return parent;
}
-
+
/**
* Get the root component of the component tree.
*
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.
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.
}
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.
if (parent == null) {
throw new IllegalArgumentException("getStageNumber() called for root component");
}
-
+
RocketComponent stage = this;
while (!(stage instanceof Stage)) {
stage = stage.parent;
}
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,
}
return null;
}
-
-
+
+
// TODO: Move these methods elsewhere (used only in SymmetricComponent)
public final RocketComponent getPreviousComponent() {
checkState();
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
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).
getRoot().removeComponentChangeListener(l);
}
}
-
-
+
+
/**
* Adds a <code>ChangeListener</code> to the rocket tree. This is identical to
* <code>addComponentChangeListener()</code> except that it uses a
checkState();
getRocket().addChangeListener(l);
}
-
+
/**
* Removes a ChangeListener from the rocket tree. This is identical to
* removeComponentChangeListener() except it uses a ChangeListener.
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).
}
getRoot().fireComponentChangeEvent(e);
}
-
-
+
+
/**
* Fires a ComponentChangeEvent of the given type. The source of the event is set to
* this component.
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.
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.
}
}
}
-
+
// Check whether the list contains exactly the searched-for component (with == operator)
private boolean containsExact(List<RocketComponent> haystack, RocketComponent needle) {
for (RocketComponent c : haystack) {
}
return false;
}
-
-
+
+
/////////// Iterators //////////
-
+
/**
* Returns an iterator that iterates over all children and sub-children.
* <p>
public final Iterator<RocketComponent> deepIterator(boolean returnSelf) {
return iterator(returnSelf);
}
-
-
+
+
/**
* Returns an iterator that iterates over all children and sub-children, including itself.
* <p>
public final Iterator<RocketComponent> deepIterator() {
return iterator();
}
-
-
+
+
/**
* Returns an iterator that iterates over all children and sub-children.
checkState();
return new RocketComponentIterator(this, returnSelf);
}
-
-
+
+
/**
* Returns an iterator that iterates over this components, its children and sub-children.
* <p>
public final Iterator<RocketComponent> iterator() {
return iterator(true);
}
-
-
+
+
RocketComponent other = (RocketComponent) obj;
return this.id.equals(other.id);
}
-
-
+
+
@Override
public int hashCode() {
return id.hashCode();
}
-
-
+
+
//////////// Helper methods for subclasses
-
+
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
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;
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.
*
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;
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();
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) {
}
}
}
-
+
@Override
public void remove() {
throw new UnsupportedOperationException("remove() not supported by " +
"RocketComponent iterator");
}
}
-
+
}
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;
@Override
public String getComponentName() {
- return "Shock cord";
+ //// Shock cord
+ return trans.get("ShockCord.ShockCord");
}
@Override
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");
}
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;
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() {
}
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()) {
}
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");
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 ////////////
-
+
/**
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)
return r1 + type.getRadius(x, r2 - r1, length, shapeParameter);
}
}
-
+
/**
* Numerically solve clipLength from the equation
* r1 == type.getRadius(clipLength,r2,clipLength+length)
*/
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;
if (n > 10)
break;
}
-
+
while (true) {
clipLength = (min + max) / 2;
if ((max - min) < CLIP_PRECISION)
}
}
}
-
-
+
+
@Override
public double getInnerRadius(double x) {
return Math.max(getRadius(x) - thickness, 0);
}
-
-
+
+
@Override
public Collection<Coordinate> getComponentBounds() {
addBound(bounds, getLength() + aftShoulderLength, aftShoulderRadius);
return bounds;
}
-
+
@Override
public double getComponentMass() {
double mass = super.getComponentMass();
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);
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();
getForeShoulderThickness() - getForeShoulderLength(),
getMaterial().getDensity()));
}
-
+
if (getAftShoulderLength() > 0.001) {
final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0);
cg = cg.average(ringCG(getAftShoulderRadius(), ir, getLength(),
}
return cg;
}
-
-
+
+
/*
* The moments of inertia are not explicitly corrected for the shoulders.
* However, since the mass is corrected, the inertia is automatically corrected
*/
@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.
* @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;
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;
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)));
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×<i>Length</i> and <i>Diameter</i>.",
- "An ellipsoidal transition has a profile of a half-ellipse " +
- "with major axes of lengths 2×<i>Length</i> and <i>Diameter</i>. If the " +
- "transition is not clipped, then the profile is extended at the center by the " +
- "corresponding radius.", true) {
+ //// Ellipsoid
+ ELLIPSOID(trans.get("Shape.Ellipsoid"),
+ //// An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2×<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×<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;
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> × (<i>x</i> / <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> × (<i>x</i> / <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;
}
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;
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;
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);
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 "+
// }
// }
;
-
+
// 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;
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.
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
* @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()).
*/
package net.sf.openrocket.rocketcomponent;
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.startup.Application;
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);
/*
@Override
public String getComponentName() {
- return "Trapezoidal fin set";
+ //// Trapezoidal fin set
+ return trans.get("TrapezoidFinSet.TrapezoidFinSet");
}
}
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);
@Override
public String getComponentName() {
- return "Tube coupler";
+ //// Tube coupler
+ return trans.get("TubeCoupler.TubeCoupler");
}
@Override
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;
/**
* @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;
//// 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);
package net.sf.openrocket.simulation;
+import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.rocketcomponent.RocketComponent;
+import net.sf.openrocket.startup.Application;
/**
* @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.
*
/**
* 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;
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;
}
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() +
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;
}
}
@Override
public String toString() {
- return name;
+ final Translator trans = Application.getTranslator();
+ return trans.get(name);
}
}
\ No newline at end of file
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;
* 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);
}
//////////////////////
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;
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
// 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,
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");